Ports the radiation subsystem and cleans up damage flags. (#15715)

This commit is contained in:
Matt Atlas
2023-02-07 13:22:47 +01:00
committed by GitHub
parent 5527fc0810
commit 31c73ead85
198 changed files with 981 additions and 649 deletions
+1 -1
View File
@@ -488,5 +488,5 @@ var/list/slot_equipment_priority = list( \
//When you drop an extremely heavy 406mm shell onto your foot. Oops!
/mob/living/carbon/proc/throw_fail_consequences(var/obj/item/I)
apply_damage(45, BRUTE, pick(list(BP_L_FOOT, BP_R_FOOT)), I, armor_pen = 30)
apply_damage(45, DAMAGE_BRUTE, pick(list(BP_L_FOOT, BP_R_FOOT)), I, armor_pen = 30)
I.throw_fail_consequences(src)
+1 -1
View File
@@ -142,7 +142,7 @@
if(shock_damage<1)
return 0
src.apply_damage(shock_damage, BURN, def_zone, used_weapon="Electrocution")
src.apply_damage(shock_damage, DAMAGE_BURN, def_zone, used_weapon="Electrocution")
playsound(loc, /singleton/sound_category/spark_sound, 50, 1, -1)
if(shock_damage > 15 || tesla_shock)
src.visible_message(
@@ -102,14 +102,14 @@
apply_damage(effective_force, I.damtype, hit_zone, I, damage_flags, I.armor_penetration)
//Melee weapon embedded object code.
if (I && I.damtype == BRUTE && !I.anchored && !is_robot_module(I) && I.canremove)
if (I && I.damtype == DAMAGE_BRUTE && !I.anchored && !is_robot_module(I) && I.canremove)
var/damage = effective_force //just the effective damage used for sorting out embedding, no further damage is applied here
damage *= 1 - get_blocked_ratio(hit_zone, I.damtype, I.damage_flags(), I.armor_penetration, I.force)
if(I.can_embed) //If this weapon is allowed to embed in people.
//blunt objects should really not be embedding in things unless a huge amount of force is involved
var/sharp = damage_flags & DAM_SHARP
var/edge = damage_flags & DAM_EDGE
var/sharp = damage_flags & DAMAGE_FLAG_SHARP
var/edge = damage_flags & DAMAGE_FLAG_EDGE
var/embed_chance = sharp? damage/I.w_class : damage/(I.w_class*3)
var/embed_threshold = edge? 5*I.w_class : 15*I.w_class
@@ -131,7 +131,7 @@
// Knifing
/mob/living/carbon/proc/attack_throat(obj/item/W, obj/item/grab/G, mob/user)
var/damage_flags = W.damage_flags()
if(!(damage_flags & (DAM_SHARP|DAM_EDGE)) || W.damtype != BRUTE)
if(!(damage_flags & (DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)) || W.damtype != DAMAGE_BRUTE)
return FALSE //unsuitable weapon
user.visible_message("<span class='danger'>\The [user] begins to slit [src]'s throat with \the [W]!</span>")
@@ -148,7 +148,7 @@
if(istype(helmet) && (helmet.body_parts_covered & HEAD) && (helmet.min_pressure_protection == 0))
var/datum/component/armor/armor_component = helmet.GetComponent(/datum/component/armor)
if(armor_component)
damage_mod -= armor_component.get_blocked(BRUTE, damage_flags, W.armor_penetration, W.force*1.5)
damage_mod -= armor_component.get_blocked(DAMAGE_BRUTE, damage_flags, W.armor_penetration, W.force*1.5)
var/total_damage = 0
for(var/i in 1 to 3)
@@ -82,7 +82,7 @@
for (var/i = 0 to num_bites_needed)
if(do_mob(src, victim, bite_delay * 10, extra_checks = CALLBACK(src, PROC_REF(devouring_equals), victim)))
face_atom(victim)
victim.apply_damage(damage_dealt, BRUTE)
victim.apply_damage(damage_dealt, DAMAGE_BRUTE)
var/obj/item/organ/internal/stomach/S = internal_organs_by_name[BP_STOMACH]
if(S)
S.ingested.add_reagent(victim.composition_reagent, (victim.composition_reagent_quantity * 0.5) * PEPB)
@@ -100,7 +100,7 @@
if (severity)
damage_factor = (1 / severity)
var/armorval = get_blocked_ratio(BP_CHEST, BRUTE, DAM_DISPERSED, damage = damage)
var/armorval = get_blocked_ratio(BP_CHEST, DAMAGE_BRUTE, DAMAGE_FLAG_DISPERSED, damage = damage)
if (armorval)
damage_factor *= (1 - (armorval * 0.01))
@@ -263,12 +263,12 @@
Paralyse(10)
// focus most of the blast on one organ
apply_damage(0.7 * b_loss, BRUTE, null, DAM_EXPLODE, used_weapon = "Explosive blast")
apply_damage(0.7 * f_loss, BURN, null, DAM_EXPLODE, used_weapon = "Explosive blast")
apply_damage(0.7 * b_loss, DAMAGE_BRUTE, null, DAMAGE_FLAG_EXPLODE, used_weapon = "Explosive blast")
apply_damage(0.7 * f_loss, DAMAGE_BURN, null, DAMAGE_FLAG_EXPLODE, used_weapon = "Explosive blast")
// distribute the remaining 30% on all limbs equally (including the one already dealt damage)
apply_damage(0.3 * b_loss, BRUTE, null, DAM_EXPLODE | DAM_DISPERSED, used_weapon = "Explosive blast")
apply_damage(0.3 * f_loss, BURN, null, DAM_EXPLODE | DAM_DISPERSED, used_weapon = "Explosive blast")
apply_damage(0.3 * b_loss, DAMAGE_BRUTE, null, DAMAGE_FLAG_EXPLODE | DAMAGE_FLAG_DISPERSED, used_weapon = "Explosive blast")
apply_damage(0.3 * f_loss, DAMAGE_BURN, null, DAMAGE_FLAG_EXPLODE | DAMAGE_FLAG_DISPERSED, used_weapon = "Explosive blast")
UpdateDamageIcon()
@@ -517,7 +517,7 @@
I.emp_act(emp_damage)
emp_damage *= 0.4
apply_damage(shock_damage, BURN, area, used_weapon="Electrocution")
apply_damage(shock_damage, DAMAGE_BURN, area, used_weapon="Electrocution")
shock_damage *= 0.4
playsound(loc, /singleton/sound_category/spark_sound, 50, 1, -1)
@@ -1346,7 +1346,7 @@
SPAN_WARNING("Your movement jostles [O] in your [organ.name] painfully.") \
)
custom_pain(msg, 10, 10, organ)
organ.take_damage(rand(1, 3), 0, DAM_EDGE)
organ.take_damage(rand(1, 3), 0, DAMAGE_FLAG_EDGE)
/mob/living/carbon/human/verb/check_pulse()
set category = "Object"
@@ -2004,7 +2004,7 @@
return
switch(get_bullet_impact_effect_type(def_zone))
if(BULLET_IMPACT_MEAT)
if(P.damage_type == BRUTE)
if(P.damage_type == DAMAGE_BRUTE)
var/hit_dir = get_dir(P.starting, src)
var/obj/effect/decal/cleanable/blood/B = blood_splatter(get_step(src, hit_dir), src, 1, hit_dir)
B.icon_state = pick("dir_splatter_1","dir_splatter_2")
@@ -2026,9 +2026,9 @@
if(species.radiation_mod <= 0)
return
apply_damage((rand(15,30)), IRRADIATE, damage_flags = DAM_DISPERSED)
apply_damage((rand(15,30)), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
if(prob(4))
apply_damage((rand(20,60)), IRRADIATE, damage_flags = DAM_DISPERSED)
apply_damage((rand(20,60)), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
if (prob(75))
randmutb(src) // Applies bad mutation
domutcheck(src,null,MUTCHK_FORCED)
@@ -53,14 +53,14 @@
msg_admin_attack("[key_name_admin(M)] stungloved [src.name] ([src.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[M.x];Y=[M.y];Z=[M.z]'>JMP</a>)",ckey=key_name(M),ckey_target=key_name(src))
apply_effects(5,5,0,0,5,0,0,0,0)
apply_damage(rand(5,25), BURN, M.zone_sel.selecting)
apply_damage(rand(5,25), DAMAGE_BURN, M.zone_sel.selecting)
if(prob(15))
playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1)
M.visible_message("<span class='warning'>The power source on [M]'s stun gloves overloads in a terrific fashion!</span>", "<span class='warning'>Your jury rigged stun gloves malfunction!</span>", "<span class='warning'>You hear a loud sparking.</span>")
if(prob(50))
M.apply_damage(rand(1,5), BURN)
M.apply_damage(rand(1,5), DAMAGE_BURN)
for(M in viewers(3, null))
M.flash_act(ignore_inherent = TRUE)
@@ -88,7 +88,7 @@
visible_message("<span class='danger'>[H] has punched [src]!</span>")
apply_damage(damage, PAIN, affecting)
apply_damage(damage, DAMAGE_PAIN, affecting)
if(damage >= 9)
visible_message("<span class='danger'>[H] has weakened [src]!</span>")
apply_effect(4, WEAKEN)
@@ -276,7 +276,7 @@
real_damage += G.punch_force
hit_dam_type = G.punch_damtype
if(H.pulling_punches)
hit_dam_type = PAIN
hit_dam_type = DAMAGE_PAIN
if(istype(H.gloves,/obj/item/clothing/gloves/force))
var/obj/item/clothing/gloves/force/X = H.gloves
@@ -410,7 +410,7 @@
return
else
var/armor_check = 100 * get_blocked_ratio(affecting, BRUTE, damage = 20)
var/armor_check = 100 * get_blocked_ratio(affecting, DAMAGE_BRUTE, damage = 20)
apply_effect(3, WEAKEN, armor_check)
if(armor_check < 100)
visible_message("<span class='danger'>[M] has pushed [src]!</span>")
@@ -432,7 +432,7 @@
sleep(1)
step_away(src,M,15)
sleep(1)
apply_effect(1, WEAKEN, get_blocked_ratio(M.zone_sel.selecting, BRUTE, damage = 20)*100)
apply_effect(1, WEAKEN, get_blocked_ratio(M.zone_sel.selecting, DAMAGE_BRUTE, damage = 20)*100)
return
//See about breaking grips or pulls
@@ -558,7 +558,7 @@
if(!dam_zone)
dam_zone = pick(organs)
var/obj/item/organ/external/affecting = get_organ(dam_zone)
apply_damage(damage, BRUTE, affecting, armor_pen = armor_penetration, damage_flags = attack_flags)
apply_damage(damage, DAMAGE_BRUTE, affecting, armor_pen = armor_penetration, damage_flags = attack_flags)
updatehealth()
return TRUE
@@ -391,7 +391,7 @@ This function restores all organs.
zone = BP_HEAD
return organs_by_name[zone]
/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone, var/obj/used_weapon, var/damage_flags, var/armor_pen, var/silent = FALSE)
/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = DAMAGE_BRUTE, var/def_zone, var/obj/used_weapon, var/damage_flags, var/armor_pen, var/silent = FALSE)
if (invisibility == INVISIBILITY_LEVEL_TWO && back && (istype(back, /obj/item/rig)))
if(damage > 0)
to_chat(src, "<span class='danger'>You are now visible.</span>")
@@ -403,7 +403,7 @@ This function restores all organs.
organ = def_zone
else
if(!def_zone)
if(damage_flags & DAM_DISPERSED)
if(damage_flags & DAMAGE_FLAG_DISPERSED)
var/old_damage = damage
var/tally
silent = TRUE // Will damage a lot of organs, probably, so avoid spam.
@@ -418,8 +418,8 @@ This function restores all organs.
organ = get_organ(check_zone(def_zone))
//Handle other types of damage
if(!(damagetype in list(BRUTE, BURN, PAIN, CLONE)))
if(!stat && damagetype == PAIN)
if(!(damagetype in list(DAMAGE_BRUTE, DAMAGE_BURN, DAMAGE_PAIN, DAMAGE_CLONE)))
if(!stat && damagetype == DAMAGE_PAIN)
if((damage > 25 && prob(20)) || (damage > 50 && prob(60)))
emote("scream")
return ..()
@@ -441,21 +441,21 @@ This function restores all organs.
make_adrenaline(round(damage/10))
switch(damagetype)
if(BRUTE)
if(DAMAGE_BRUTE)
damageoverlaytemp = 20
if(damage > 0)
damage *= species.brute_mod
organ.take_damage(damage, 0, damage_flags, used_weapon)
UpdateDamageIcon()
if(BURN)
if(DAMAGE_BURN)
damageoverlaytemp = 20
if(damage > 0)
damage *= species.burn_mod
organ.take_damage(0, damage, damage_flags, used_weapon)
UpdateDamageIcon()
if(PAIN)
if(DAMAGE_PAIN)
organ.add_pain(damage)
if(CLONE)
if(DAMAGE_CLONE)
organ.add_genetic_damage(damage)
// Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life().
@@ -43,7 +43,7 @@ emp_act
//Shrapnel
if(!(species.flags & NO_EMBED) && P.can_embed())
var/armor = get_blocked_ratio(def_zone, BRUTE, P.damage_flags(), armor_pen = P.armor_penetration, damage = P.damage)*100
var/armor = get_blocked_ratio(def_zone, DAMAGE_BRUTE, P.damage_flags(), armor_pen = P.armor_penetration, damage = P.damage)*100
if(prob(20 + max(P.damage + P.embed_chance - armor, -10)))
P.do_embed(organ)
@@ -81,7 +81,7 @@ emp_act
..(stun_amount, agony_amount, def_zone, used_weapon, damage_flags)
/mob/living/carbon/human/get_blocked_ratio(def_zone, damage_type, damage_flags, armor_pen, damage)
if(!def_zone && (damage_flags & DAM_DISPERSED))
if(!def_zone && (damage_flags & DAMAGE_FLAG_DISPERSED))
var/tally
for(var/zone in organ_rel_size)
tally += organ_rel_size[zone]
@@ -254,7 +254,7 @@ emp_act
var/obj/item/clothing/gloves/force/G = X.gloves
effective_force *= G.amplification
if((I.damtype == BRUTE || I.damtype == PAIN) && prob(25 + (effective_force * 2)))
if((I.damtype == DAMAGE_BRUTE || I.damtype == DAMAGE_PAIN) && prob(25 + (effective_force * 2)))
if(!stat)
if(headcheck(hit_zone))
//Harder to score a stun but if you do it lasts a bit longer
@@ -387,12 +387,12 @@ emp_act
msg_admin_attack("[src.name] ([src.ckey]) was hit by a [O], thrown by [M.name] ([assailant.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)",ckey=key_name(M),ckey_target=key_name(src))
//thrown weapon embedded object code.
if(dtype == BRUTE && istype(O,/obj/item))
if(dtype == DAMAGE_BRUTE && istype(O,/obj/item))
var/obj/item/I = O
if (!is_robot_module(I))
var/sharp = is_sharp(I)
var/damage = throw_damage
damage *= (1 - get_blocked_ratio(zone, BRUTE, O.damage_flags(), O.armor_penetration, damage))
damage *= (1 - get_blocked_ratio(zone, DAMAGE_BRUTE, O.damage_flags(), O.armor_penetration, damage))
//blunt objects should really not be embedding in things unless a huge amount of force is involved
var/embed_chance = sharp ? damage/I.w_class : damage/(I.w_class*3)
@@ -463,7 +463,7 @@ emp_act
/mob/living/carbon/human/proc/handle_suit_punctures(var/damtype, var/damage, var/def_zone)
// Tox and oxy don't matter to suits.
if(damtype != BURN && damtype != BRUTE) return
if(damtype != DAMAGE_BURN && damtype != DAMAGE_BRUTE) return
// The rig might soak this hit, if we're wearing one.
if(back && istype(back,/obj/item/rig))
@@ -228,13 +228,13 @@ mob/living/carbon/human/proc/change_monitor()
if(istype(G.affecting,/mob/living/carbon/human))
var/mob/living/carbon/human/H = G.affecting
H.apply_damage(50,BRUTE)
H.apply_damage(50,DAMAGE_BRUTE)
if(H.stat == 2)
H.gib()
else
var/mob/living/M = G.affecting
if(!istype(M)) return //wut
M.apply_damage(50,BRUTE)
M.apply_damage(50,DAMAGE_BRUTE)
if(M.stat == 2)
M.gib()
@@ -393,14 +393,14 @@ mob/living/carbon/human/proc/change_monitor()
to_chat(H, SPAN_WARNING("They are missing that limb!"))
return
H.apply_damage(25, BRUTE, hit_zone, damage_flags = DAM_SHARP|DAM_EDGE)
H.apply_damage(25, DAMAGE_BRUTE, hit_zone, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)
visible_message(SPAN_WARNING("<b>[src]</b> rips viciously at \the [G.affecting]'s [affected] with its mandibles!"))
msg_admin_attack("[key_name_admin(src)] mandible'd [key_name_admin(H)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)",ckey=key_name(src),ckey_target=key_name(H))
else
var/mob/living/M = G.affecting
if(!istype(M))
return
M.apply_damage(25, BRUTE, damage_flags = DAM_SHARP|DAM_EDGE)
M.apply_damage(25, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE)
visible_message(SPAN_WARNING("<b>[src]</b> rips viciously at \the [G.affecting]'s flesh with its mandibles!"))
msg_admin_attack("[key_name_admin(src)] mandible'd [key_name_admin(M)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)",ckey=key_name(src),ckey_target=key_name(M))
playsound(get_turf(src), 'sound/weapons/slash.ogg', 50, TRUE)
@@ -421,8 +421,8 @@ mob/living/carbon/human/proc/change_monitor()
playsound(F, 'sound/items/countdown.ogg', 125, 1)
spawn(20)
explosion(F.loc, -1, -1, 2)
M.apply_damage(20,BRUTE)
M.apply_damage(15,BURN)
M.apply_damage(20,DAMAGE_BRUTE)
M.apply_damage(15,DAMAGE_BURN)
qdel(F)
for(var/obj/item/material/shard/shrapnel/flechette/F in range(7, src))
@@ -602,7 +602,7 @@ mob/living/carbon/human/proc/change_monitor()
visible_message("<span class='warning'><b>[src]</b> launches a spine-quill at [target]!</span>")
src.apply_damage(10,BRUTE)
src.apply_damage(10,DAMAGE_BRUTE)
playsound(src.loc, 'sound/weapons/bladeslice.ogg', 50, 1)
var/obj/item/arrow/quill/A = new /obj/item/arrow/quill(usr.loc)
A.throw_at(target, 10, 30, usr)
+2 -2
View File
@@ -663,9 +663,9 @@
for(var/obj/item/I in src)
if(I.contaminated && !(species.flags & PHORON_IMMUNE))
if(I == r_hand)
apply_damage(vsc.plc.CONTAMINATION_LOSS, BURN, BP_R_HAND)
apply_damage(vsc.plc.CONTAMINATION_LOSS, DAMAGE_BURN, BP_R_HAND)
else if(I == l_hand)
apply_damage(vsc.plc.CONTAMINATION_LOSS, BURN, BP_L_HAND)
apply_damage(vsc.plc.CONTAMINATION_LOSS, DAMAGE_BURN, BP_L_HAND)
else
adjustFireLoss(vsc.plc.CONTAMINATION_LOSS)
@@ -177,7 +177,7 @@
continue
if(L == target)
continue
L.apply_damage(rand(5,20), BRUTE, zone, armor)
L.apply_damage(rand(5,20), DAMAGE_BRUTE, zone, armor)
to_chat(L, "<span class='danger'>\The [user] [pick(attack_verb)] you with its [attack_noun]!</span>")
hit_mobs++
if(hit_mobs)
@@ -208,7 +208,7 @@
to_chat(user, SPAN_WARNING("You feel that \the [target] has been already infected!"))
var/infection_chance = 80
infection_chance -= target.get_blocked_ratio(zone, BRUTE, damage_flags = DAM_SHARP|DAM_EDGE, damage = damage)*100
infection_chance -= target.get_blocked_ratio(zone, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE, damage = damage)*100
if(prob(infection_chance))
if(target.reagents)
var/trioxin_amount = REAGENT_VOLUME(target.reagents, /singleton/reagent/toxin/trioxin)
@@ -240,7 +240,7 @@
damage = 10
attack_sound = 'sound/items/welder.ogg'
attack_name = "flaming touch"
damage_type = BURN
damage_type = DAMAGE_BURN
/datum/unarmed_attack/flame/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armor,var/attack_damage,var/zone)
..()
@@ -768,7 +768,7 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL,
/datum/species/golem/uranium/handle_environment_special(var/mob/living/carbon/human/H)
if(prob(25))
for(var/mob/living/L in view(7, H))
L.apply_damage(20, IRRADIATE, damage_flags = DAM_DISPERSED)
L.apply_damage(20, DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
/datum/species/golem/homunculus
name = SPECIES_GOLEM_MEAT
@@ -15,7 +15,7 @@ var/global/list/sparring_attack_cache = list()
var/sharp = 0
var/edge = FALSE
var/damage_type = BRUTE
var/damage_type = DAMAGE_BRUTE
var/sparring_variant_type = /datum/unarmed_attack/pain_strike
var/eye_attack_text
@@ -53,7 +53,7 @@ var/global/list/sparring_attack_cache = list()
return
var/stun_chance = rand(0, 100)
var/armor = target.get_blocked_ratio(zone, BRUTE, damage_flags(), armor_penetration, damage)
var/armor = target.get_blocked_ratio(zone, DAMAGE_BRUTE, damage_flags(), armor_penetration, damage)
var/pain_message = TRUE
if(!target.can_feel_pain())
@@ -96,7 +96,7 @@ var/global/list/sparring_attack_cache = list()
if(!target.lying)
if(pain_message)
target.visible_message("<span class='warning'>[target] gives way slightly.</span>")
target.apply_effect(attack_damage*3, PAIN, armor)
target.apply_effect(attack_damage*3, DAMAGE_PAIN, armor)
else if(attack_damage >= 5 && !(target == user) && (stun_chance + attack_damage * 5 >= 100) && armor < 1) // Chance to get the usual throwdown as well (25% standard chance)
if(!target.lying)
target.visible_message("<span class='danger'>[target] [pick("slumps", "falls", "drops")] down to the ground!</span>")
@@ -127,9 +127,9 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/proc/damage_flags()
. = 0
if(sharp)
. |= DAM_SHARP
. |= DAMAGE_FLAG_SHARP
if(edge)
. |= DAM_EDGE
. |= DAMAGE_FLAG_EDGE
/datum/unarmed_attack/bite
attack_verb = list("bit")
@@ -315,7 +315,7 @@ var/global/list/sparring_attack_cache = list()
if(5) user.visible_message("<span class='danger'>[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [user.get_pronoun("his")] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!</span>") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
/datum/unarmed_attack/pain_strike
damage_type = PAIN
damage_type = DAMAGE_PAIN
attack_noun = list("tap","light strike")
attack_verb = list("tapped", "lightly struck")
desc = "Sparring: A light strike to your opponent. So light, it won't even leave a mark! They WILL feel this, but will suffer no dangerous side effect, unless you punch them into cardiac arrest!"
+16 -16
View File
@@ -8,7 +8,7 @@
standard 0 if fail
*/
/mob/living/proc/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone, var/used_weapon, var/damage_flags = 0, var/armor_pen, var/silent = FALSE)
/mob/living/proc/apply_damage(var/damage = 0, var/damagetype = DAMAGE_BRUTE, var/def_zone, var/used_weapon, var/damage_flags = 0, var/armor_pen, var/silent = FALSE)
if(!damage)
return FALSE
@@ -20,33 +20,33 @@
return FALSE
switch(damagetype)
if(BRUTE)
if(DAMAGE_BRUTE)
adjustBruteLoss(damage)
if(BURN)
if(DAMAGE_BURN)
if(HAS_FLAG(mutations, COLD_RESISTANCE))
damage = 0
adjustFireLoss(damage)
if(TOX)
if(DAMAGE_TOXIN)
adjustToxLoss(damage)
if(OXY)
if(DAMAGE_OXY)
adjustOxyLoss(damage)
if(CLONE)
if(DAMAGE_CLONE)
adjustCloneLoss(damage)
if(PAIN)
if(DAMAGE_PAIN)
adjustHalLoss(damage)
if(IRRADIATE)
if(DAMAGE_RADIATION)
apply_radiation(damage)
updatehealth()
return TRUE
/mob/living/proc/apply_damages(var/brute = 0, var/burn = 0, var/tox = 0, var/oxy = 0, var/clone = 0, var/halloss = 0, var/def_zone, var/damage_flags = 0)
if(brute) apply_damage(brute, BRUTE, def_zone, blocked)
if(burn) apply_damage(burn, BURN, def_zone, blocked)
if(tox) apply_damage(tox, TOX, def_zone, blocked)
if(oxy) apply_damage(oxy, OXY, def_zone, blocked)
if(clone) apply_damage(clone, CLONE, def_zone, blocked)
if(halloss) apply_damage(halloss, PAIN, def_zone, blocked)
if(brute) apply_damage(brute, DAMAGE_BRUTE, def_zone, blocked)
if(burn) apply_damage(burn, DAMAGE_BURN, def_zone, blocked)
if(tox) apply_damage(tox, DAMAGE_TOXIN, def_zone, blocked)
if(oxy) apply_damage(oxy, DAMAGE_OXY, def_zone, blocked)
if(clone) apply_damage(clone, DAMAGE_CLONE, def_zone, blocked)
if(halloss) apply_damage(halloss, DAMAGE_PAIN, def_zone, blocked)
return TRUE
/mob/living/proc/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0)
@@ -58,7 +58,7 @@
Weaken(effect * BLOCKED_MULT(blocked))
if(PARALYZE)
Paralyse(effect * BLOCKED_MULT(blocked))
if(PAIN)
if(DAMAGE_PAIN)
adjustHalLoss(effect * BLOCKED_MULT(blocked)) //Changed this to use the wrapper function, it shouldn't directly alter the value
if(STUTTER)
if(status_flags & CANSTUN) // stun is usually associated with stutter
@@ -81,7 +81,7 @@
if(stutter) apply_effect(stutter, STUTTER, blocked)
if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked)
if(drowsy) apply_effect(drowsy, DROWSY, blocked)
if(agony) apply_effect(agony, PAIN, blocked)
if(agony) apply_effect(agony, DAMAGE_PAIN, blocked)
if(incinerate) apply_effect(incinerate, INCINERATE, blocked)
return 1
+3 -3
View File
@@ -101,7 +101,7 @@
apply_effect(stun_amount, EYE_BLUR)
if(agony_amount)
apply_damage(agony_amount, PAIN, def_zone, used_weapon)
apply_damage(agony_amount, DAMAGE_PAIN, def_zone, used_weapon)
apply_effect(agony_amount / 10, STUTTER)
apply_effect(agony_amount / 10, EYE_BLUR)
@@ -142,7 +142,7 @@
. = standard_weapon_hit_effects(I, user, effective_force, hit_zone)
if(I.damtype == BRUTE && prob(33) && I.force) // Added blood for whacking non-humans too
if(I.damtype == DAMAGE_BRUTE && prob(33) && I.force) // Added blood for whacking non-humans too
var/turf/simulated/location = get_turf(src)
if(istype(location)) location.add_blood_floor(src)
@@ -229,7 +229,7 @@
/mob/living/proc/turf_collision(var/atom/T, var/speed = THROWFORCE_SPEED_DIVISOR, var/sound_to_play = 'sound/effects/bangtaper.ogg')
visible_message("<span class='danger'>[src] slams into \the [T]!</span>")
playsound(T, sound_to_play, 50, 1, 1)//so it plays sounds on the turf instead, makes for awesome carps to hull collision and such
apply_damage(speed*5, BRUTE)
apply_damage(speed*5, DAMAGE_BRUTE)
/mob/living/proc/near_wall(var/direction,var/distance=1)
var/turf/T = get_step(get_turf(src),direction)
@@ -39,7 +39,7 @@
shake_camera(L, 2, 4)
for(var/mob/living/rebecca in T)
if(rebecca.lying || from_above)
rebecca.apply_damage(40 * damage_mod, BRUTE, pick(BP_ALL_LIMBS), used_weapon = "landing", armor_pen = 30) //so true choomfie
rebecca.apply_damage(40 * damage_mod, DAMAGE_BRUTE, pick(BP_ALL_LIMBS), used_weapon = "landing", armor_pen = 30) //so true choomfie
T.visible_message(SPAN_DANGER("<font size=4>[H] lands on [rebecca]!</font>"))
to_chat(H, SPAN_DANGER("<font size=4>You land on [rebecca]!</font>")) //since the mob won't be on the turf yet
user.post_maneuver()
+1 -1
View File
@@ -131,7 +131,7 @@
close_up()
if(I_HURT)
apply_damage(harm_intent_damage, BRUTE, used_weapon = "Attack by [M.name]")
apply_damage(harm_intent_damage, DAMAGE_BRUTE, used_weapon = "Attack by [M.name]")
M.visible_message(SPAN_DANGER("[M] [response_harm] \the [src]"))
M.do_attack_animation(src)
updatehealth()
+4 -4
View File
@@ -146,9 +146,9 @@
/mob/living/silicon/bullet_act(obj/item/projectile/Proj)
if(!Proj.nodamage)
switch(Proj.damage_type)
if(BRUTE)
if(DAMAGE_BRUTE)
adjustBruteLoss(Proj.damage)
if(BURN)
if(DAMAGE_BURN)
adjustFireLoss(Proj.damage)
Proj.on_hit(src, 100)
@@ -290,8 +290,8 @@
if(3.0)
brute = 30
apply_damage(brute, BRUTE, damage_flags = DAM_EXPLODE)
apply_damage(burn, BURN, damage_flags = DAM_EXPLODE)
apply_damage(brute, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_EXPLODE)
apply_damage(burn, DAMAGE_BURN, damage_flags = DAMAGE_FLAG_EXPLODE)
/mob/living/silicon/proc/receive_alarm(var/datum/alarm_handler/alarm_handler, var/datum/alarm/alarm, was_raised)
if(!next_alarm_notice)
@@ -97,11 +97,11 @@
else
prob_mult -= 0.01 *(min(LAZYACCESS(worn_helmet.armor, "bio"), 30))// Is your helmet sealed? I can't get to 30% of your body.
if( prob(sting_prob*prob_mult) && (M.stat == CONSCIOUS || (M.stat == UNCONSCIOUS && prob(25*prob_mult))) ) // Try to sting! If you're not moving, think about stinging.
M.apply_damage(min(strength*0.85,2)+mut, BURN, damage_flags = DAM_SHARP) // Stinging. The more mutated I am, the harder I sting.
M.apply_damage(min(strength*0.85,2)+mut, DAMAGE_BURN, damage_flags = DAMAGE_FLAG_SHARP) // Stinging. The more mutated I am, the harder I sting.
var/venom_strength = max(strength*0.2, (round(feral/10,1) * (max(round(strength/20,1), 1)))) + toxic // Bee venom based on how angry I am and how many there are of me!
M.apply_damage(venom_strength, PAIN) //Bee venom causes pain, not organ failure
M.apply_damage(venom_strength, DAMAGE_PAIN) //Bee venom causes pain, not organ failure
if(prob(max(80, strength * 10))) //If there's enough of a swarm, it can also cause breathing trouble. Yes, even without being allergic.
M.apply_damage(venom_strength, OXY)
M.apply_damage(venom_strength, DAMAGE_OXY)
update_icon()
to_chat(M, "<span class='warning'>You have been stung!</span>")
M.flash_pain(5)
@@ -253,11 +253,11 @@
/mob/living/simple_animal/bee/attempt_grab(var/mob/living/grabber)
if (prob(strength*5))//if the swarm is big you might grab a few bees, you won't make a serious dent
to_chat(grabber, "<span class = 'warning'>You attempt to grab the swarm, but only manage to snatch a scant handful of crushed bees.</span>")
apply_damage(strength*0.5, BRUTE, used_weapon = "Crushing by [grabber.name]")
apply_damage(strength*0.5, DAMAGE_BRUTE, used_weapon = "Crushing by [grabber.name]")
else
to_chat(grabber, "<span class = 'warning'>For some bizarre reason known only to yourself, you attempt to grab ahold of the swarm of bees. You come away with nothing but empty, slightly stung hands.</span>")
if(verify_stingable(grabber))
grabber.apply_damage(strength*0.5, BURN)
grabber.apply_damage(strength*0.5, DAMAGE_BURN)
return 0
@@ -159,7 +159,7 @@
/mob/living/simple_animal/cat/apply_radiation_effects()
. = ..()
if(.)
apply_effect((rand(30,60)),IRRADIATE,blocked=0)
apply_damage((rand(30,60)), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
/mob/living/simple_animal/cat/proc/handle_flee_target()
//see if we should stop fleeing
@@ -159,7 +159,7 @@
update_nutrition_stats()
/mob/living/simple_animal/rat/king/splat()
src.apply_damage(5, BRUTE)
src.apply_damage(5, DAMAGE_BRUTE)
/mob/living/simple_animal/rat/king/verb/kingDecree()
set category = "Abilities"
@@ -27,7 +27,7 @@
melee_damage_lower = 10
melee_damage_upper = 18
armor_penetration = 30 //Standard armor probably doesn't help against a bear, does it?
attack_flags = DAM_EDGE|DAM_SHARP
attack_flags = DAMAGE_FLAG_EDGE|DAMAGE_FLAG_SHARP
resist_mod = 4
break_stuff_probability = 80
mob_size = 17
@@ -10,7 +10,7 @@
melee_damage_lower = 10
melee_damage_upper = 10
armor_penetration = 40
attack_flags = DAM_SHARP|DAM_EDGE
attack_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE
break_stuff_probability = 25
attacktext = "slashed"
projectilesound = 'sound/weapons/bladeslice.ogg'
@@ -1,7 +1,7 @@
/obj/item/projectile/beam/hivebot
name = "electrical discharge"
damage = 20
damage_type = BURN
damage_type = DAMAGE_BURN
agony = 20
armor_penetration = 40
muzzle_type = /obj/effect/projectile/muzzle/stun
@@ -11,12 +11,12 @@
/obj/item/projectile/beam/hivebot/harmless
name = "harmless electrical discharge"
damage = 0
damage_type = PAIN
damage_type = DAMAGE_PAIN
agony = 0
/obj/item/projectile/beam/hivebot/incendiary
name = "archaic energy welder"
damage_type = BURN
damage_type = DAMAGE_BURN
damage = 20
armor_penetration = 15
incinerate = 5
@@ -137,7 +137,7 @@
if(mob_size > 15)
for(var/mob/living/M in orange(1,src))
if(M != src)
M.apply_damage(50, BRUTE)
M.apply_damage(50, DAMAGE_BRUTE)
M.apply_effect(6, STUN, blocked)
M.throw_at(get_random_turf_in_range(get_turf(src), 1), 2)
@@ -54,7 +54,7 @@
/obj/item/projectile/beam/cavern
name = "electrical discharge"
icon_state = "stun"
damage_type = BURN
damage_type = DAMAGE_BURN
check_armor = "energy"
damage = 5
@@ -60,7 +60,7 @@
/mob/living/simple_animal/hostile/retaliate/beast/charbaby/attack_hand(mob/living/carbon/human/H)
. = ..()
reflect_unarmed_damage(H, BURN, "amorphous mass")
reflect_unarmed_damage(H, DAMAGE_BURN, "amorphous mass")
/mob/living/simple_animal/hostile/retaliate/beast/shantak/lava
desc = "A vaguely canine looking beast. It looks as though its fur is made of stone wool."
@@ -73,7 +73,7 @@
"<span class='danger'>\The [src] scrapes and gnashes against your exoskeleton before spitting you out!</span>",
"<b>You hear several metallic scrapes!</b>"
)
R.apply_damage(60,BRUTE)
R.apply_damage(60,DAMAGE_BRUTE)
else
L.visible_message(
"<span class='danger'>\The [src] eviscerates [L] with its teeth, swallowing what little remains whole!</span>",
@@ -184,7 +184,7 @@
if(prob(50))
var/mob/living/L = sarlacc.captive
if(L)
L.apply_damage(rand(3,10),BRUTE)
L.apply_damage(rand(3,10),DAMAGE_BRUTE)
L.visible_message(
"<span class='danger'>\The [src] tears at [L]'s flesh with its gruesome jaws.</span>",
"<span class='danger'>You feel a searing pain as \the [src] tears at your flesh!</span>",
@@ -293,7 +293,7 @@
var/list/possible_targets = list()
for(var/mob/living/L in src.loc)
if(L != src)
L.apply_damage(15,BRUTE)
L.apply_damage(15,DAMAGE_BRUTE)
possible_targets += L
to_chat(L, "<span class='danger'>\The [src] wraps around you tightly with its spiny teeth+!</span>")
if(Adjacent(originator) && possible_targets.len)
@@ -27,7 +27,7 @@
melee_damage_lower = 15
melee_damage_upper = 15
armor_penetration = 15
attack_flags = DAM_EDGE
attack_flags = DAMAGE_FLAG_EDGE
attacktext = "bitten"
attack_sound = 'sound/weapons/bite.ogg'
@@ -114,6 +114,6 @@
S.visible_message("<span class='danger'>\The [S] lands on the [target_turf]!</span>")
for(var/mob/living/M in target_turf)
if(M != src)
M.apply_damage(50, BRUTE)
M.apply_damage(50, DAMAGE_BRUTE)
M.apply_effect(6, STUN, blocked)
return TRUE
@@ -66,7 +66,7 @@
if(O.force)
if(prob(80))
var/damage = O.force
if (O.damtype == PAIN)
if (O.damtype == DAMAGE_PAIN)
damage = 0
health -= damage
visible_message("<span class='danger'>[src] has been attacked with the [O] by [user].</span>")
@@ -58,13 +58,13 @@
visible_message("<b>[src]</b> lifts \the [rival] over its head and slams them down into the ground behind them!")
rival.throw_at(get_step(src, reverse_dir[dir]), 1, 3, src, TRUE)
playsound(loc, 'sound/effects/bang.ogg', 50, 1)
rival.apply_damage(2, BRUTE)
rival.apply_damage(2, DAMAGE_BRUTE)
if(2)
visible_message("<b>[src]</b> leaps into the air and superman punches \the [rival]!")
animate(src, pixel_z = 16, time = 3, easing = SINE_EASING | EASE_IN)
animate(pixel_z = 0, time = 3, easing = SINE_EASING | EASE_OUT)
playsound(loc, 'sound/weapons/cardboardhit.ogg', 50, 1)
rival.apply_damage(2, BRUTE)
rival.apply_damage(2, DAMAGE_BRUTE)
if(rival.health <= 0)
say(pick(victory_speech))
@@ -482,7 +482,7 @@
var/mob/living/carbon/human/H = parrot_interest
var/obj/item/organ/external/affecting = H.get_organ(ran_zone(pick(parrot_dam_zone)))
H.apply_damage(damage, BRUTE, affecting, damage_flags = DAM_SHARP)
H.apply_damage(damage, DAMAGE_BRUTE, affecting, damage_flags = DAMAGE_FLAG_SHARP)
visible_emote(pick("pecks [H]'s [affecting].", "cuts [H]'s [affecting] with its talons."))
else
@@ -278,15 +278,15 @@
//Atmos effect
if(bodytemperature < minbodytemp)
fire_alert = 2
apply_damage(cold_damage_per_tick, BURN, used_weapon = "Cold Temperature")
apply_damage(cold_damage_per_tick, DAMAGE_BURN, used_weapon = "Cold Temperature")
else if(bodytemperature > maxbodytemp)
fire_alert = 1
apply_damage(heat_damage_per_tick, BURN, used_weapon = "High Temperature")
apply_damage(heat_damage_per_tick, DAMAGE_BURN, used_weapon = "High Temperature")
else
fire_alert = 0
if(!atmos_suitable)
apply_damage(unsuitable_atoms_damage, OXY, used_weapon = "Atmosphere")
apply_damage(unsuitable_atoms_damage, DAMAGE_OXY, used_weapon = "Atmosphere")
if(has_udder)
if(stat == CONSCIOUS)
@@ -537,7 +537,7 @@
simple_harm_attack(user)
/mob/living/simple_animal/proc/simple_harm_attack(var/mob/living/user)
apply_damage(harm_intent_damage, BRUTE, used_weapon = "Attack by [user.name]")
apply_damage(harm_intent_damage, DAMAGE_BRUTE, used_weapon = "Attack by [user.name]")
user.visible_message(SPAN_WARNING("<b>\The [user]</b> [response_harm] \the [src]!"), SPAN_WARNING("You [response_harm] \the [src]!"))
user.do_attack_animation(src, FIST_ATTACK_ANIMATION)
poke(TRUE)
@@ -590,7 +590,7 @@
if(O.force > resistance)
var/damage = O.force
if (O.damtype == PAIN)
if (O.damtype == DAMAGE_PAIN)
damage = 0
if(supernatural && istype(O,/obj/item/nullrod))
damage *= 2
@@ -707,7 +707,7 @@
if(3.0)
damage = 30
apply_damage(damage, BRUTE, damage_flags = DAM_EXPLODE)
apply_damage(damage, DAMAGE_BRUTE, damage_flags = DAMAGE_FLAG_EXPLODE)
/mob/living/simple_animal/proc/SA_attackable(target_mob)
if (isliving(target_mob))
@@ -879,7 +879,7 @@
//Todo: add snowflakey shit to it.
/mob/living/simple_animal/electrocute_act(var/shock_damage, var/obj/source, var/base_siemens_coeff = 1.0, var/def_zone = null, var/tesla_shock = 0, var/ground_zero)
apply_damage(shock_damage, BURN)
apply_damage(shock_damage, DAMAGE_BURN)
playsound(loc, /singleton/sound_category/spark_sound, 50, 1, -1)
spark(loc, 5, alldirs)
visible_message(SPAN_WARNING("\The [src] was shocked by \the [source]!"), SPAN_WARNING("You are shocked by \the [source]!"), SPAN_WARNING("You hear an electrical crack!"))
@@ -924,7 +924,7 @@
..()
switch(get_bullet_impact_effect_type(def_zone))
if(BULLET_IMPACT_MEAT)
if(P.damage_type == BRUTE)
if(P.damage_type == DAMAGE_BRUTE)
var/hit_dir = get_dir(P.starting, src)
var/obj/effect/decal/cleanable/blood/B = blood_splatter(get_step(src, hit_dir), src, 1, hit_dir)
B.icon_state = pick("dir_splatter_1","dir_splatter_2")
+1 -1
View File
@@ -1155,7 +1155,7 @@
affected.implants -= implant
if(!surgical_removal)
shock_stage += 20
apply_damage((implant.w_class * 7), BRUTE, affected)
apply_damage((implant.w_class * 7), DAMAGE_BRUTE, affected)
if(!BP_IS_ROBOTIC(affected) && prob(implant.w_class * 5) && affected.sever_artery()) //I'M SO ANEMIC I COULD JUST -DIE-.
custom_pain("Something tears wetly in your [affected.name] as [implant] is pulled free!", 50, affecting = affected)
. = ..()
+9 -9
View File
@@ -55,7 +55,7 @@
return
attacker.visible_message("<span class='danger'>[attacker] [pick("bent", "twisted")] [target]'s [organ.name] into a jointlock!</span>")
var/armor = 100 * affecting.get_blocked_ratio(target, BRUTE, damage = 30)
var/armor = 100 * affecting.get_blocked_ratio(target, DAMAGE_BRUTE, damage = 30)
if(armor < 70)
to_chat(target, "<span class='danger'>You feel extreme pain!</span>")
affecting.adjustHalLoss(Clamp(0, 60 - affecting.getHalLoss(), 30)) //up to 60 halloss
@@ -104,8 +104,8 @@
if(istype(hat))
damage += hat.force * 3
target.apply_damage(damage, BRUTE, BP_HEAD)
attacker.apply_damage(10, BRUTE, BP_HEAD)
target.apply_damage(damage, DAMAGE_BRUTE, BP_HEAD)
attacker.apply_damage(10, DAMAGE_BRUTE, BP_HEAD)
if(armor < 25 && target.headcheck(BP_HEAD) && prob(damage))
target.apply_effect(20, PARALYZE)
@@ -167,20 +167,20 @@
visible_message("<span class='notice'>[assailant] tried to grab [target] but they have no hair!</span>")
if(1)
visible_message("<span class='danger'>[assailant] tugs [target]'s [hairchatname] before releasing their grip!</span>")
target.apply_damage(5, PAIN)
target.apply_damage(5, DAMAGE_PAIN)
if(2)
visible_message("<span class='danger'>[assailant] tugs [target]'s [hairchatname]!</span>")
target.apply_damage(5, PAIN)
target.apply_damage(5, DAMAGE_PAIN)
src.state = GRAB_PASSIVE
if(3)
visible_message("<span class='danger'>[assailant] tugs [target]'s [hairchatname]!</span>")
target.apply_damage(10, PAIN)
target.apply_damage(10, DAMAGE_PAIN)
src.state = GRAB_PASSIVE
if(4)
visible_message("<span class='danger'>[assailant] violently tugs [target]'s [hairchatname], ripping out a clump!</span>")
target.apply_damage(15, PAIN)
target.apply_damage(15, DAMAGE_PAIN)
src.state = GRAB_PASSIVE
if(5)
@@ -189,7 +189,7 @@
src.state = GRAB_PASSIVE
else
visible_message("<span class='danger'>[assailant] violently tugs [target]'s [hairchatname]!</span>")
target.apply_damage(10, PAIN)
target.apply_damage(10, DAMAGE_PAIN)
src.state = GRAB_AGGRESSIVE
if(6)
@@ -199,5 +199,5 @@
playsound(target.loc, 'sound/misc/slip.ogg', 50, 1, -3)
else
visible_message("<span class='danger'>[assailant] violently tugs [target]'s [hairchatname]!</span>")
target.apply_damage(15, PAIN)
target.apply_damage(15, DAMAGE_PAIN)
src.state = GRAB_AGGRESSIVE