From 808bbee90f6257e89f0aa74d7b65153bb7bc6c58 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 4 Sep 2015 12:08:12 +0930 Subject: [PATCH] Added species vars for oxy/tox/rad/flash resistance. --- code/game/machinery/flasher.dm | 9 ++++-- code/game/objects/items/devices/flash.dm | 12 ++++++-- .../mob/living/carbon/human/human_damage.dm | 28 +++++++------------ code/modules/mob/living/carbon/human/life.dm | 3 +- .../living/carbon/human/species/species.dm | 8 ++++-- 5 files changed, 33 insertions(+), 27 deletions(-) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 5393de59ccd..924a6f7374f 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -75,17 +75,20 @@ if (istype(O, /mob/living/carbon/alien))//So aliens don't get flashed (they have no external eyes)/N continue - O.Weaken(strength) + var/flash_time = strength if (istype(O, /mob/living/carbon/human)) var/mob/living/carbon/human/H = O + flash_time *= H.species.flash_mod var/obj/item/organ/eyes/E = H.internal_organs_by_name["eyes"] - if (E && (E.damage > E.min_bruised_damage && prob(E.damage + 50))) + if(!E) + return + if(E.is_bruised() && prob(E.damage + 50)) flick("e_flash", O:flash) E.damage += rand(1, 5) else if(!O.blinded) flick("flash", O:flash) - + O.Weaken(flash_time) /obj/machinery/flasher/emp_act(severity) if(stat & (BROKEN|NOPOWER)) diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 18826ff806a..a9f45999ab0 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -66,11 +66,12 @@ if(iscarbon(M)) var/safety = M:eyecheck() if(safety <= 0) - M.Weaken(10) - flick("e_flash", M.flash) + var/flash_strength = 10 if(ishuman(M) && ishuman(user) && M.stat!=DEAD) - if(user.mind && user.mind in revs.current_antagonists) + var/mob/living/carbon/human/H = M + flash_strength *= H.species.flash_mod + if(user.mind && user.mind in revs.head_revolutionaries) var/revsafe = 0 for(var/obj/item/weapon/implant/loyalty/L in M) if(L && L.implanted) @@ -86,6 +87,11 @@ user << "Something seems to be blocking the flash!" else user << "This mind seems resistant to the flash!" + + if(flash_strength > 0) + M.Weaken(flash_strength) + flick("e_flash", M.flash) + else flashfail = 1 diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 575fa0c5316..4155f0981e2 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -85,9 +85,7 @@ /mob/living/carbon/human/adjustBruteLoss(var/amount) - if(species && species.brute_mod) - amount = amount*species.brute_mod - + amount = amount*species.brute_mod if(amount > 0) take_overall_damage(amount, 0) else @@ -95,9 +93,7 @@ BITSET(hud_updateflag, HEALTH_HUD) /mob/living/carbon/human/adjustFireLoss(var/amount) - if(species && species.burn_mod) - amount = amount*species.burn_mod - + amount = amount*species.burn_mod if(amount > 0) take_overall_damage(0, amount) else @@ -105,9 +101,7 @@ BITSET(hud_updateflag, HEALTH_HUD) /mob/living/carbon/human/proc/adjustBruteLossByPart(var/amount, var/organ_name, var/obj/damage_source = null) - if(species && species.brute_mod) - amount = amount*species.brute_mod - + amount = amount*species.brute_mod if (organ_name in organs_by_name) var/obj/item/organ/external/O = get_organ(organ_name) @@ -120,9 +114,7 @@ BITSET(hud_updateflag, HEALTH_HUD) /mob/living/carbon/human/proc/adjustFireLossByPart(var/amount, var/organ_name, var/obj/damage_source = null) - if(species && species.burn_mod) - amount = amount*species.burn_mod - + amount = amount*species.burn_mod if (organ_name in organs_by_name) var/obj/item/organ/external/O = get_organ(organ_name) @@ -205,7 +197,8 @@ if(species.flags & NO_BREATHE) oxyloss = 0 else - ..() + amount = amount*species.oxy_mod + ..(amount) /mob/living/carbon/human/setOxyLoss(var/amount) if(species.flags & NO_BREATHE) @@ -222,7 +215,8 @@ if(species.flags & NO_POISON) toxloss = 0 else - ..() + amount = amount*species.toxins_mod + ..(amount) /mob/living/carbon/human/setToxLoss(var/amount) if(species.flags & NO_POISON) @@ -388,14 +382,12 @@ This function restores all organs. switch(damagetype) if(BRUTE) damageoverlaytemp = 20 - if(species && species.brute_mod) - damage = damage*species.brute_mod + damage = damage*species.brute_mod if(organ.take_damage(damage, 0, sharp, edge, used_weapon)) UpdateDamageIcon() if(BURN) damageoverlaytemp = 20 - if(species && species.burn_mod) - damage = damage*species.burn_mod + damage = damage*species.burn_mod if(organ.take_damage(0, damage, sharp, edge, used_weapon)) UpdateDamageIcon() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index bcf1100a08e..f1cae922e6f 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -280,7 +280,7 @@ Weaken(3) if(!lying) emote("collapse") - if(prob(5) && prob(100 * RADIATION_SPEED_COEFFICIENT) && species.name == "Human") //apes go bald + if(prob(5) && prob(100 * RADIATION_SPEED_COEFFICIENT) && species.get_bodytype() == "Human") //apes go bald if((h_style != "Bald" || f_style != "Shaved" )) src << "Your hair falls out." h_style = "Bald" @@ -298,6 +298,7 @@ emote("gasp") if(damage) + damage *= species.radiation_mod adjustToxLoss(damage * RADIATION_SPEED_COEFFICIENT) updatehealth() if(organs.len) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 54e358e96cf..e47d7c10870 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -47,8 +47,12 @@ /datum/unarmed_attack/bite ) var/list/unarmed_attacks = null // For empty hand harm-intent attack - var/brute_mod = 1 // Physical damage multiplier. - var/burn_mod = 1 // Burn damage multiplier. + var/brute_mod = 1 // Physical damage multiplier. + var/burn_mod = 1 // Burn damage multiplier. + var/oxy_mod = 1 // Oxyloss modifier + var/toxins_mod = 1 // Toxloss modifier + var/radiation_mod = 1 // Radiation modifier + var/flash_mod = 1 // Stun from blindness modifier. var/vision_flags = SEE_SELF // Same flags as glasses. // Death vars.