diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index cc820c9a3a8..6b98ec7c1dc 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -31,6 +31,10 @@ species = new /datum/species/vox(src) ..() +/mob/living/carbon/human/diona/New() + species = new /datum/species/diona(src) + ..() + /mob/living/carbon/human/New() if(!species) @@ -1272,8 +1276,10 @@ mob/living/carbon/human/yank_out_object() else species = new_species - if(species) + spawn(0) update_icons() + + if(species) return 1 else return 0 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 69b4578bdf4..608279c19c9 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -408,7 +408,7 @@ // Nitrogen, for Vox. var/Nitrogen_pp = (breath.nitrogen/breath.total_moles())*breath_pressure - if(O2_pp < safe_oxygen_min && src.dna.mutantrace!="vox") // Too little oxygen + if(O2_pp < safe_oxygen_min && species.name != "Vox") // Too little oxygen if(prob(20)) spawn(0) emote("gasp") if(O2_pp > 0) @@ -426,7 +426,7 @@ oxyloss += 5*ratio oxygen_used = breath.oxygen*ratio/6 oxygen_alert = max(oxygen_alert, 1)*/ - else if(Nitrogen_pp < safe_oxygen_min && src.dna.mutantrace=="vox") //Vox breathe nitrogen, not oxygen. + else if(Nitrogen_pp < safe_oxygen_min && species.name == "Vox") //Vox breathe nitrogen, not oxygen. if(prob(20)) spawn(0) emote("gasp") @@ -471,7 +471,7 @@ if(reagents) reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) toxins_alert = max(toxins_alert, 1) - else if(O2_pp > vox_oxygen_max && src.dna.mutantrace=="vox") //Oxygen is toxic to vox. + else if(O2_pp > vox_oxygen_max && species.name == "Vox") //Oxygen is toxic to vox. var/ratio = (breath.oxygen/vox_oxygen_max) * 1000 adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) toxins_alert = max(toxins_alert, 1) @@ -596,22 +596,22 @@ var/pressure = environment.return_pressure() var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. if(status_flags & GODMODE) return 1 //godmode - switch(adjusted_pressure) - if(species.hazard_high_pressure to INFINITY) - adjustBruteLoss( min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) ) - pressure_alert = 2 - if(species.warning_high_pressure to species.hazard_high_pressure) - pressure_alert = 1 - if(species.warning_low_pressure to species.warning_high_pressure) - pressure_alert = 0 - if(species.hazard_low_pressure to species.warning_low_pressure) - pressure_alert = -1 + + if(adjusted_pressure >= species.hazard_high_pressure) + adjustBruteLoss( min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) ) + pressure_alert = 2 + else if(adjusted_pressure >= species.warning_high_pressure) + pressure_alert = 1 + else if(adjusted_pressure >= species.warning_low_pressure) + pressure_alert = 0 + else if(adjusted_pressure >= species.hazard_low_pressure) + pressure_alert = -1 + else + if( !(COLD_RESISTANCE in mutations)) + adjustBruteLoss( LOW_PRESSURE_DAMAGE ) + pressure_alert = -2 else - if( !(COLD_RESISTANCE in mutations)) - adjustBruteLoss( LOW_PRESSURE_DAMAGE ) - pressure_alert = -2 - else - pressure_alert = -1 + pressure_alert = -1 if(environment.toxins > MOLES_PLASMA_VISIBLE) pl_effects() diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index d35f9999b9b..62c8a6273b6 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -38,10 +38,10 @@ var/heat_level_2 = 400 // Heat damage level 2 above this point. var/heat_level_3 = 1000 // Heat damage level 2 above this point. - var/hazard_high_pressure = 550 // Dangerously high pressure. - var/warning_high_pressure = 325 // High pressure warning. - var/hazard_low_pressure = 50 // Dangerously low pressure. - var/warning_low_pressure = 20 // Low pressure warning. + var/hazard_high_pressure = HAZARD_HIGH_PRESSURE // Dangerously high pressure. + var/warning_high_pressure = WARNING_HIGH_PRESSURE // High pressure warning. + var/warning_low_pressure = WARNING_LOW_PRESSURE // Low pressure warning. + var/hazard_low_pressure = HAZARD_LOW_PRESSURE // Dangerously low pressure. var/brute_resist // Physical damage reduction. var/burn_resist // Burn damage reduction.