mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 04:51:32 +01:00
Remove sharp/edge in procs and consolidate them into damage flags. (#8672)
This commit is contained in:
@@ -60,7 +60,7 @@
|
||||
else
|
||||
return body
|
||||
|
||||
/mob/living/heavy_vehicle/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/used_weapon = null, var/sharp = 0, var/edge = 0, var/damage_flags)
|
||||
/mob/living/heavy_vehicle/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/used_weapon = null, var/damage_flags)
|
||||
if(!damage)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
streak = copytext(streak,2)
|
||||
return
|
||||
|
||||
/datum/martial_art/proc/basic_hit(var/mob/living/carbon/human/A,var/mob/living/carbon/human/D) //copy pasta of the regular unarmed attack, but can be replaced by something else
|
||||
/datum/martial_art/proc/basic_hit(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) //copy pasta of the regular unarmed attack, but can be replaced by something else
|
||||
var/rand_damage = rand(1, 5)
|
||||
var/block = 0
|
||||
var/accurate = 0
|
||||
@@ -98,8 +98,7 @@
|
||||
|
||||
var/real_damage = rand_damage
|
||||
var/hit_dam_type = attack.damage_type
|
||||
var/is_sharp = 0
|
||||
var/is_edge = 0
|
||||
var/damage_flags = attack.damage_flags()
|
||||
|
||||
real_damage += attack.get_unarmed_damage(A)
|
||||
real_damage *= D.damage_multiplier
|
||||
@@ -120,26 +119,20 @@
|
||||
hit_dam_type = PAIN
|
||||
|
||||
if(G.sharp)
|
||||
is_sharp = 1
|
||||
damage_flags |= DAM_SHARP
|
||||
|
||||
if(G.edge)
|
||||
is_edge = 1
|
||||
damage_flags |= DAM_EDGE
|
||||
|
||||
if(istype(A.gloves,/obj/item/clothing/gloves/force))
|
||||
var/obj/item/clothing/gloves/force/X = A.gloves
|
||||
real_damage *= X.amplification
|
||||
|
||||
if(attack.sharp)
|
||||
is_sharp = 1
|
||||
|
||||
if(attack.edge)
|
||||
is_edge = 1
|
||||
|
||||
var/armour = D.run_armor_check(hit_zone, "melee")
|
||||
|
||||
attack.apply_effects(A, D, armour, rand_damage, hit_zone)
|
||||
|
||||
D.apply_damage(real_damage, hit_dam_type, hit_zone, armour, sharp=is_sharp, edge=is_edge)
|
||||
D.apply_damage(real_damage, hit_dam_type, hit_zone, armour, damage_flags = damage_flags)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
var/obj/item/organ/internal/eyes/eyes = D.get_eyes()
|
||||
eyes.take_damage(rand(3,4), 1)
|
||||
var/armor = D.getarmor_organ(affecting,"melee")
|
||||
D.apply_damage(10,BRUTE, BP_HEAD, armor, sharp=1, edge=1)
|
||||
D.apply_damage(10,BRUTE, BP_HEAD, armor, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
playsound(get_turf(A), 'sound/weapons/slice.ogg', 50, 1, -1)
|
||||
var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting))
|
||||
var/armor_block = D.run_armor_check(affecting, "melee")
|
||||
D.apply_damage(20, BRUTE, affecting, armor_block, sharp = TRUE, edge = TRUE)
|
||||
D.apply_damage(20, BRUTE, affecting, armor_block, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
if(prob(20))
|
||||
D.apply_effect(4, WEAKEN)
|
||||
return 1
|
||||
@@ -71,7 +71,7 @@
|
||||
var/obj/item/organ/external/organ = D.get_organ(A.zone_sel.selecting)
|
||||
var/armor = D.getarmor_organ(organ,"melee")
|
||||
A.visible_message("<span class='danger'>[A] stabs [D]'s [organ.name] with their claws!</span>")
|
||||
D.apply_damage(organ.brute_dam, BRUTE, organ, armor, sharp= TRUE, edge= TRUE)
|
||||
D.apply_damage(organ.brute_dam, BRUTE, organ, armor, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
return 1
|
||||
|
||||
/datum/martial_art/baghrar/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
var/atk_verb = pick("slices", "pinches", "chops", "bites", "claws")
|
||||
D.visible_message("<span class='danger'>[A] [atk_verb] [D]!</span>", \
|
||||
"<span class='danger'>[A] [atk_verb] you!</span>")
|
||||
D.apply_damage(rand(5,15), BRUTE, sharp = TRUE)
|
||||
D.apply_damage(rand(5,15), BRUTE, damage_flags = DAM_SHARP)
|
||||
playsound(get_turf(D), 'sound/weapons/slash.ogg', 25, 1, -1)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -443,12 +443,12 @@
|
||||
connected.system_error("Unexpected user interface error.")
|
||||
return
|
||||
else
|
||||
H.apply_damage(25, BRUTE, sharp = TRUE, edge = TRUE)
|
||||
H.apply_damage(25, BRUTE, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
connected.system_error("Unexpected user interface error.")
|
||||
return
|
||||
else
|
||||
var/mob/living/M = user
|
||||
M.apply_damage(25, BRUTE, sharp = TRUE, edge = TRUE)
|
||||
M.apply_damage(25, BRUTE, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
|
||||
if(default_deconstruction_screwdriver(user, W))
|
||||
return
|
||||
|
||||
@@ -98,13 +98,12 @@
|
||||
effective_force *= 2
|
||||
|
||||
//Apply weapon damage
|
||||
var/weapon_sharp = is_sharp(I)
|
||||
var/weapon_edge = has_edge(I)
|
||||
var/damage_flags = I.damage_flags()
|
||||
if(prob(blocked)) //armour provides a chance to turn sharp/edge weapon attacks into blunt ones
|
||||
weapon_sharp = 0
|
||||
weapon_edge = 0
|
||||
damage_flags &= ~DAM_SHARP
|
||||
damage_flags &= ~DAM_EDGE
|
||||
|
||||
apply_damage(effective_force, I.damtype, hit_zone, blocked, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I)
|
||||
apply_damage(effective_force, I.damtype, hit_zone, blocked, used_weapon=I, damage_flags = damage_flags)
|
||||
|
||||
//Melee weapon embedded object code.
|
||||
if (I && I.damtype == BRUTE && !I.anchored && !is_robot_module(I))
|
||||
@@ -114,11 +113,13 @@
|
||||
|
||||
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/embed_chance = weapon_sharp? damage/I.w_class : damage/(I.w_class*3)
|
||||
var/embed_threshold = weapon_sharp? 5*I.w_class : 15*I.w_class
|
||||
var/sharp = damage_flags & DAM_SHARP
|
||||
var/edge = damage_flags & DAM_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
|
||||
|
||||
//Sharp objects will always embed if they do enough damage.
|
||||
if((weapon_sharp && damage > (10*I.w_class)) || (damage > embed_threshold && prob(embed_chance)))
|
||||
if((sharp && damage > (10*I.w_class)) || (damage > embed_threshold && prob(embed_chance)))
|
||||
src.embed(I, hit_zone)
|
||||
|
||||
return 1
|
||||
@@ -134,9 +135,9 @@
|
||||
|
||||
// Knifing
|
||||
/mob/living/carbon/proc/attack_throat(obj/item/W, obj/item/grab/G, mob/user)
|
||||
|
||||
if(!W.edge || !W.force || W.damtype != BRUTE)
|
||||
return 0 //unsuitable weapon
|
||||
var/damage_flags = W.damage_flags()
|
||||
if(!(damage_flags & (DAM_SHARP|DAM_EDGE)) || W.damtype != BRUTE)
|
||||
return FALSE //unsuitable weapon
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] begins to slit [src]'s throat with \the [W]!</span>")
|
||||
|
||||
@@ -156,7 +157,7 @@
|
||||
var/total_damage = 0
|
||||
for(var/i in 1 to 3)
|
||||
var/damage = min(W.force*1.5, 20)*damage_mod
|
||||
apply_damage(damage, W.damtype, BP_HEAD, 0, sharp=W.sharp, edge=W.edge)
|
||||
apply_damage(damage, W.damtype, BP_HEAD, 0, used_weapon = W, damage_flags = damage_flags)
|
||||
total_damage += damage
|
||||
|
||||
var/oxyloss = total_damage
|
||||
|
||||
@@ -308,8 +308,7 @@
|
||||
|
||||
var/real_damage = rand_damage
|
||||
var/hit_dam_type = attack.damage_type
|
||||
var/is_sharp = 0
|
||||
var/is_edge = 0
|
||||
var/damage_flags = attack.damage_flags()
|
||||
|
||||
real_damage += attack.get_unarmed_damage(H)
|
||||
real_damage *= damage_multiplier
|
||||
@@ -329,28 +328,16 @@
|
||||
if(H.pulling_punches)
|
||||
hit_dam_type = PAIN
|
||||
|
||||
if(G.sharp)
|
||||
is_sharp = 1
|
||||
|
||||
if(G.edge)
|
||||
is_edge = 1
|
||||
|
||||
if(istype(H.gloves,/obj/item/clothing/gloves/force))
|
||||
var/obj/item/clothing/gloves/force/X = H.gloves
|
||||
real_damage *= X.amplification
|
||||
|
||||
if(attack.sharp)
|
||||
is_sharp = 1
|
||||
|
||||
if(attack.edge)
|
||||
is_edge = 1
|
||||
|
||||
var/armour = run_armor_check(hit_zone, "melee")
|
||||
// Apply additional unarmed effects.
|
||||
attack.apply_effects(H, src, armour, rand_damage, hit_zone)
|
||||
|
||||
// Finally, apply damage to target
|
||||
apply_damage(real_damage, hit_dam_type, hit_zone, armour, sharp=is_sharp, edge=is_edge)
|
||||
apply_damage(real_damage, hit_dam_type, hit_zone, armour, damage_flags = damage_flags)
|
||||
|
||||
|
||||
if(M.resting && src.help_up_offer)
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
amount += O.burn_dam
|
||||
return amount
|
||||
|
||||
|
||||
/mob/living/carbon/human/adjustBruteLoss(var/amount)
|
||||
if(amount > 0)
|
||||
take_overall_damage(amount, 0)
|
||||
@@ -90,32 +89,6 @@
|
||||
heal_overall_damage(0, -amount)
|
||||
BITSET(hud_updateflag, HEALTH_HUD)
|
||||
|
||||
/mob/living/carbon/human/proc/adjustBruteLossByPart(var/amount, var/organ_name, var/obj/damage_source = null)
|
||||
if (organ_name in organs_by_name)
|
||||
var/obj/item/organ/external/O = get_organ(organ_name)
|
||||
|
||||
if(amount > 0)
|
||||
amount *= brute_mod
|
||||
O.take_damage(amount, 0, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source)
|
||||
else
|
||||
//if you don't want to heal robot organs, they you will have to check that yourself before using this proc.
|
||||
O.heal_damage(-amount, 0, internal=0, robo_repair=(O.status & ORGAN_ROBOT))
|
||||
|
||||
BITSET(hud_updateflag, HEALTH_HUD)
|
||||
|
||||
/mob/living/carbon/human/proc/adjustFireLossByPart(var/amount, var/organ_name, var/obj/damage_source = null)
|
||||
if (organ_name in organs_by_name)
|
||||
var/obj/item/organ/external/O = get_organ(organ_name)
|
||||
|
||||
if(amount > 0)
|
||||
amount *= burn_mod
|
||||
O.take_damage(0, amount, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source)
|
||||
else
|
||||
//if you don't want to heal robot organs, they you will have to check that yourself before using this proc.
|
||||
O.heal_damage(0, -amount, internal=0, robo_repair=(O.status & ORGAN_ROBOT))
|
||||
|
||||
BITSET(hud_updateflag, HEALTH_HUD)
|
||||
|
||||
/mob/living/carbon/human/Stun(amount)
|
||||
if(HULK in mutations)
|
||||
return
|
||||
@@ -307,15 +280,16 @@ In most cases it makes more sense to use apply_damage() instead! And make sure t
|
||||
//Damages ONE external organ, organ gets randomly selected from damagable ones.
|
||||
//It automatically updates damage overlays if necesary
|
||||
//It automatically updates health status
|
||||
/mob/living/carbon/human/take_organ_damage(var/brute, var/burn, var/sharp = 0, var/edge = 0)
|
||||
/mob/living/carbon/human/take_organ_damage(var/brute, var/burn, var/damage_flags)
|
||||
var/list/obj/item/organ/external/parts = get_damageable_organs()
|
||||
if(!parts.len) return
|
||||
if(!parts.len)
|
||||
return
|
||||
var/obj/item/organ/external/picked = pick(parts)
|
||||
if(picked.take_damage(brute,burn,sharp,edge))
|
||||
if(picked.take_damage(brute, burn, damage_flags))
|
||||
UpdateDamageIcon()
|
||||
BITSET(hud_updateflag, HEALTH_HUD)
|
||||
updatehealth()
|
||||
speech_problem_flag = 1
|
||||
speech_problem_flag = TRUE
|
||||
|
||||
|
||||
//Heal MANY external organs, in random order
|
||||
@@ -341,8 +315,9 @@ In most cases it makes more sense to use apply_damage() instead! And make sure t
|
||||
if(update) UpdateDamageIcon()
|
||||
|
||||
// damage MANY external organs, in random order
|
||||
/mob/living/carbon/human/take_overall_damage(var/brute, var/burn, var/sharp = 0, var/edge = 0, var/used_weapon = null)
|
||||
if(status_flags & GODMODE) return //godmode
|
||||
/mob/living/carbon/human/take_overall_damage(var/brute, var/burn, var/damage_flags, var/used_weapon = null)
|
||||
if(status_flags & GODMODE)
|
||||
return //godmode
|
||||
var/list/obj/item/organ/external/parts = get_damageable_organs()
|
||||
var/update = 0
|
||||
while(parts.len && (brute>0 || burn>0) )
|
||||
@@ -351,14 +326,15 @@ In most cases it makes more sense to use apply_damage() instead! And make sure t
|
||||
var/brute_was = picked.brute_dam
|
||||
var/burn_was = picked.burn_dam
|
||||
|
||||
update |= picked.take_damage(brute,burn,sharp,edge,used_weapon)
|
||||
update |= picked.take_damage(brute, burn, damage_flags, used_weapon)
|
||||
brute -= (picked.brute_dam - brute_was)
|
||||
burn -= (picked.burn_dam - burn_was)
|
||||
|
||||
parts -= picked
|
||||
updatehealth()
|
||||
BITSET(hud_updateflag, HEALTH_HUD)
|
||||
if(update) UpdateDamageIcon()
|
||||
if(update)
|
||||
UpdateDamageIcon()
|
||||
|
||||
|
||||
////////////////////////////////////////////
|
||||
@@ -396,8 +372,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 = null, var/blocked = 0, var/sharp = 0, var/edge = 0, var/obj/used_weapon = null, var/damage_flags)
|
||||
|
||||
/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/obj/used_weapon = null, var/damage_flags)
|
||||
//visible_message("Hit debug. [damage] | [damagetype] | [def_zone] | [blocked] | [sharp] | [used_weapon]")
|
||||
if (invisibility == INVISIBILITY_LEVEL_TWO && back && (istype(back, /obj/item/rig)))
|
||||
if(damage > 0)
|
||||
@@ -440,14 +415,14 @@ This function restores all organs.
|
||||
damageoverlaytemp = 20
|
||||
if(damage > 0)
|
||||
damage *= species.brute_mod
|
||||
if(organ.take_damage(damage, 0, sharp, edge, used_weapon, damage_flags = damage_flags))
|
||||
if(organ.take_damage(damage, 0, damage_flags, used_weapon))
|
||||
UpdateDamageIcon()
|
||||
|
||||
if(BURN)
|
||||
damageoverlaytemp = 20
|
||||
if(damage > 0)
|
||||
damage *= species.burn_mod
|
||||
if(organ.take_damage(0, damage, sharp, edge, used_weapon, damage_flags = damage_flags))
|
||||
if(organ.take_damage(0, damage, damage_flags, used_weapon))
|
||||
UpdateDamageIcon()
|
||||
|
||||
// Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life().
|
||||
|
||||
@@ -390,7 +390,8 @@ emp_act
|
||||
var/armor = run_armor_check(affecting, "melee", O.armor_penetration, "Your armor has protected your [hit_area].", "Your armor has softened the hit to your [hit_area].") //I guess "melee" is the best fit here
|
||||
|
||||
if(armor < 100)
|
||||
apply_damage(throw_damage, dtype, zone, armor, is_sharp(O), has_edge(O), O)
|
||||
var/damage_flags = O.damage_flags()
|
||||
apply_damage(throw_damage, dtype, zone, armor, O, damage_flags = damage_flags)
|
||||
|
||||
if(ismob(O.thrower))
|
||||
var/mob/M = O.thrower
|
||||
|
||||
@@ -369,14 +369,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, sharp = TRUE, edge = TRUE)
|
||||
H.apply_damage(25, BRUTE, hit_zone, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
visible_message(SPAN_WARNING("<b>\The [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, sharp = TRUE, edge = TRUE)
|
||||
M.apply_damage(25, BRUTE, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
visible_message(SPAN_WARNING("<b>\The [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)
|
||||
|
||||
@@ -115,6 +115,13 @@ var/global/list/sparring_attack_cache = list()
|
||||
user.visible_message("<span class='danger'>[user] presses \his [eye_attack_text] into [target]'s [eyes.name]!</span>")
|
||||
to_chat(target, "<span class='danger'>You experience[(!target.can_feel_pain())? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(!target.can_feel_pain())? "." : "!"]</span>")
|
||||
|
||||
/datum/unarmed_attack/proc/damage_flags()
|
||||
. = 0
|
||||
if(sharp)
|
||||
. |= DAM_SHARP
|
||||
if(edge)
|
||||
. |= DAM_EDGE
|
||||
|
||||
/datum/unarmed_attack/bite
|
||||
attack_verb = list("bit")
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
standard 0 if fail
|
||||
*/
|
||||
|
||||
/mob/living/proc/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/used_weapon = null, var/sharp = 0, var/edge = 0, var/damage_flags)
|
||||
/mob/living/proc/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/used_weapon = null, var/damage_flags)
|
||||
if(!damage || (blocked >= 100))
|
||||
return 0
|
||||
switch(damagetype)
|
||||
|
||||
@@ -89,15 +89,13 @@
|
||||
|
||||
//Armor
|
||||
var/absorb = run_armor_check(def_zone, P.check_armour, P.armor_penetration)
|
||||
var/proj_sharp = is_sharp(P)
|
||||
var/proj_edge = has_edge(P)
|
||||
var/damaged
|
||||
if ((proj_sharp || proj_edge) && prob(absorb))
|
||||
proj_sharp = 0
|
||||
proj_edge = 0
|
||||
if ((P.damage_flags & DAM_SHARP || P.damage_flags & DAM_SHARP) && prob(absorb))
|
||||
P.damage_flags &= ~DAM_SHARP
|
||||
P.damage_flags &= ~DAM_EDGE
|
||||
|
||||
if(!P.nodamage)
|
||||
damaged = apply_damage(P.damage, P.damage_type, def_zone, absorb, 0, P, sharp=proj_sharp, edge=proj_edge, damage_flags = P.damage_flags, used_weapon = "\a [P.name]")
|
||||
damaged = apply_damage(P.damage, P.damage_type, def_zone, absorb, 0, P, damage_flags = P.damage_flags, used_weapon = "\a [P.name]")
|
||||
bullet_impact_visuals(P, def_zone, damaged)
|
||||
P.on_hit(src, absorb, def_zone)
|
||||
return absorb
|
||||
@@ -161,13 +159,12 @@
|
||||
effective_force *= 2
|
||||
|
||||
//Apply weapon damage
|
||||
var/weapon_sharp = is_sharp(I)
|
||||
var/weapon_edge = has_edge(I)
|
||||
var/damage_flags = I.damage_flags()
|
||||
if(prob(blocked)) //armour provides a chance to turn sharp/edge weapon attacks into blunt ones
|
||||
weapon_sharp = 0
|
||||
weapon_edge = 0
|
||||
damage_flags &= ~DAM_SHARP
|
||||
damage_flags &= ~DAM_EDGE
|
||||
|
||||
apply_damage(effective_force, I.damtype, hit_zone, blocked, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I)
|
||||
apply_damage(effective_force, I.damtype, hit_zone, blocked, used_weapon=I, damage_flags = damage_flags)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -190,7 +187,8 @@
|
||||
src.visible_message("<span class='warning'>[src] has been hit by [O].</span>")
|
||||
var/armor = run_armor_check(null, "melee")
|
||||
|
||||
apply_damage(throw_damage, dtype, null, armor, is_sharp(O), has_edge(O), O)
|
||||
var/damage_flags = O.damage_flags()
|
||||
apply_damage(throw_damage, dtype, null, armor, O, damage_flags = damage_flags)
|
||||
|
||||
O.throwing = 0 //it hit, so stop moving
|
||||
|
||||
|
||||
@@ -44,13 +44,15 @@
|
||||
/datum/robot_component/proc/get_damage(var/type)
|
||||
return Clamp(brute_damage + electronics_damage,0,max_damage)
|
||||
|
||||
/datum/robot_component/proc/take_damage(brute, electronics, sharp, edge)
|
||||
if(installed != 1) return
|
||||
/datum/robot_component/proc/take_damage(brute, electronics, damage_flags)
|
||||
if(installed != 1)
|
||||
return
|
||||
|
||||
brute_damage += brute
|
||||
electronics_damage += electronics
|
||||
|
||||
if(brute_damage + electronics_damage >= max_damage) destroy()
|
||||
if(brute_damage + electronics_damage >= max_damage)
|
||||
destroy()
|
||||
|
||||
/datum/robot_component/proc/heal_damage(brute, electronics)
|
||||
if(installed != 1)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
var/fireloss = 0
|
||||
var/bruteloss = 0
|
||||
|
||||
/mob/living/silicon/robot/drone/take_overall_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/used_weapon = null)
|
||||
/mob/living/silicon/robot/drone/take_overall_damage(var/brute = 0, var/burn = 0, var/damage_flags, var/used_weapon = null)
|
||||
bruteloss += brute
|
||||
fireloss += burn
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
if(fireloss < 0)
|
||||
fireloss = 0
|
||||
|
||||
/mob/living/silicon/robot/drone/take_organ_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/emp = 0)
|
||||
take_overall_damage(brute,burn)
|
||||
/mob/living/silicon/robot/drone/take_organ_damage(var/brute = 0, var/burn, var/damage_flags, var/emp = 0)
|
||||
take_overall_damage(brute, burn)
|
||||
|
||||
/mob/living/silicon/robot/drone/heal_organ_damage(var/brute, var/burn)
|
||||
heal_overall_damage(brute,burn)
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
var/datum/robot_component/picked = pick(parts)
|
||||
picked.heal_damage(brute, burn)
|
||||
|
||||
/mob/living/silicon/robot/take_organ_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/edge = 0, var/emp = 0)
|
||||
/mob/living/silicon/robot/take_organ_damage(var/brute = 0, var/burn = 0, var/damage_flags, var/emp = 0)
|
||||
var/list/components = get_damageable_components()
|
||||
if(!length(components))
|
||||
return
|
||||
@@ -94,11 +94,11 @@
|
||||
if(!emp)
|
||||
var/datum/robot_component/armor/A = get_armour()
|
||||
if(A)
|
||||
A.take_damage(brute, burn, sharp, edge)
|
||||
A.take_damage(brute, burn, damage_flags)
|
||||
return
|
||||
|
||||
var/datum/robot_component/C = pick(components)
|
||||
C.take_damage(brute, burn, sharp, edge)
|
||||
C.take_damage(brute, burn, damage_flags)
|
||||
|
||||
/mob/living/silicon/robot/heal_overall_damage(var/brute, var/burn)
|
||||
var/list/datum/robot_component/parts = get_damaged_components(brute,burn)
|
||||
@@ -116,7 +116,7 @@
|
||||
|
||||
parts -= picked
|
||||
|
||||
/mob/living/silicon/robot/take_overall_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/used_weapon = null)
|
||||
/mob/living/silicon/robot/take_overall_damage(var/brute = 0, var/burn = 0, var/damage_flags, var/used_weapon = null)
|
||||
if(status_flags & GODMODE)
|
||||
return
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
|
||||
var/datum/robot_component/armor/A = get_armour()
|
||||
if(A)
|
||||
A.take_damage(brute, burn, sharp)
|
||||
A.take_damage(brute, burn, damage_flags)
|
||||
return
|
||||
|
||||
while(length(parts) && (brute > 0 || burn > 0))
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
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, sharp=1) // Stinging. The more mutated I am, the harder I sting.
|
||||
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(max(strength*0.2,(round(feral/10,1)*(max((round(strength/20,1)),1)))+toxic), TOX) // Bee venom based on how angry I am and how many there are of me!
|
||||
to_chat(M, "<span class='warning'>You have been stung!</span>")
|
||||
M.flash_pain()
|
||||
|
||||
@@ -481,7 +481,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, H.run_armor_check(affecting, "melee"), sharp=1)
|
||||
H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"), damage_flags = DAM_SHARP)
|
||||
visible_emote(pick("pecks [H]'s [affecting].", "cuts [H]'s [affecting] with its talons."))
|
||||
|
||||
else
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
var/datum/weakref/original_body
|
||||
var/datum/weakref/possessed_body
|
||||
|
||||
/mob/living/simple_animal/shade/bluespace/apply_damage(var/damage_flags, var/def_zone, var/edge, var/sharp, var/used_weapon)
|
||||
/mob/living/simple_animal/shade/bluespace/apply_damage(var/damage_flags, var/def_zone, var/used_weapon)
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/shade/bluespace/adjustBruteLoss()
|
||||
|
||||
@@ -293,7 +293,7 @@
|
||||
W.time_inflicted = world.time
|
||||
|
||||
//Note: external organs have their own version of this proc
|
||||
/obj/item/organ/proc/take_damage(amount, var/silent=0)
|
||||
/obj/item/organ/proc/take_damage(var/amount, var/silent = 0)
|
||||
if(src.status & ORGAN_ROBOT)
|
||||
src.damage = between(0, src.damage + (amount * 0.8), max_damage)
|
||||
else
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
//Continued damage to vital organs can kill you, and robot organs don't count towards total damage so no need to cap them.
|
||||
return (BP_IS_ROBOTIC(src) || brute_dam + burn_dam + additional_damage < max_damage * 4)
|
||||
|
||||
/obj/item/organ/external/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list(), damage_flags, var/silent)
|
||||
/obj/item/organ/external/take_damage(brute, burn, damage_flags, used_weapon = null, list/forbidden_limbs = list(), var/silent)
|
||||
if((brute <= 0) && (burn <= 0))
|
||||
return 0
|
||||
|
||||
@@ -253,6 +253,7 @@
|
||||
burn *= burn_mod
|
||||
|
||||
var/laser = (damage_flags & DAM_LASER)
|
||||
var/sharp = (damage_flags & DAM_SHARP)
|
||||
var/blunt = !!(brute && !sharp && !edge)
|
||||
|
||||
if(status & ORGAN_BROKEN && prob(40) && brute)
|
||||
@@ -300,7 +301,7 @@
|
||||
|
||||
// High brute damage or sharp objects may damage internal organs
|
||||
if(length(internal_organs))
|
||||
if(damage_internal_organs(brute, burn, sharp, damage_flags))
|
||||
if(damage_internal_organs(brute, burn, damage_flags))
|
||||
var/brute_div = 2 //We want melee weapons to not be affected by this.
|
||||
if(damage_flags & DAM_BULLET)
|
||||
brute_div = 1.25
|
||||
@@ -315,13 +316,14 @@
|
||||
|
||||
return update_icon()
|
||||
|
||||
/obj/item/organ/external/proc/damage_internal_organs(brute, burn, sharp, damage_flags)
|
||||
/obj/item/organ/external/proc/damage_internal_organs(brute, burn, damage_flags)
|
||||
if(!length(internal_organs))
|
||||
return FALSE
|
||||
|
||||
var/damage_amt = brute
|
||||
var/cur_damage = brute_dam
|
||||
var/laser = (damage_flags & DAM_LASER)
|
||||
var/sharp = (damage_flags & DAM_SHARP)
|
||||
|
||||
if(laser)
|
||||
damage_amt += burn
|
||||
|
||||
@@ -184,8 +184,8 @@
|
||||
owner.update_hair()
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list(), damage_flags, var/silent)
|
||||
..(brute, burn, sharp, edge, used_weapon, forbidden_limbs, damage_flags, silent)
|
||||
/obj/item/organ/external/head/take_damage(brute, burn, damage_flags, used_weapon = null, list/forbidden_limbs = list(), var/silent)
|
||||
..(brute, burn, damage_flags, used_weapon, forbidden_limbs, damage_flags, silent)
|
||||
if (!disfigured)
|
||||
if (brute_dam > 40)
|
||||
if (prob(50))
|
||||
|
||||
@@ -523,7 +523,7 @@
|
||||
user.apply_effect(110,PAIN,0)
|
||||
else
|
||||
log_and_message_admins("[key_name(user)] commited suicide using \a [src]")
|
||||
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, BP_HEAD, used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1)
|
||||
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, BP_HEAD, used_weapon = "Point blank shot in the mouth with \a [in_chamber]", damage_flags = DAM_SHARP)
|
||||
user.death()
|
||||
qdel(in_chamber)
|
||||
mouthshoot = FALSE
|
||||
|
||||
@@ -317,7 +317,7 @@ obj/item/gun/energy/staff/focus/attack_self(mob/living/user as mob)
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.visible_message("<span class='danger'>\The [src] escapes from [H]'s hand, hitting their face and shattering into pieces!</span>")
|
||||
H.apply_damage(35, BRUTE, BP_HEAD, 0, sharp=0, edge=0)
|
||||
H.apply_damage(35, BRUTE, BP_HEAD, 0)
|
||||
H.adjustBrainLoss(50, 55)
|
||||
H.sdisabilities += CLUMSY
|
||||
H.drop_item()
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
if(W.edge)
|
||||
to_chat(H, "<span class='warning'>You stab \the [src] with \the [W]!</span>")
|
||||
H.apply_damage(2, BRUTE, target_zone, edge = TRUE)
|
||||
H.apply_damage(2, BRUTE, target_zone, damage_flags = DAM_EDGE)
|
||||
playsound(get_turf(H), 'sound/weapons/bladeslice.ogg', 50, 1, -1)
|
||||
if(H.can_feel_pain())
|
||||
var/obj/item/organ/external/organ = H.get_organ(target_zone)
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
var/obj/item/organ/external/affecting = H.get_organ(zone)
|
||||
to_chat(user, "<span class='danger'>The sword refuses you as its true wielder, slashing your [affecting.name] instead!</span>")
|
||||
|
||||
user.apply_damage(active_force, BRUTE, zone, 0, sharp=1, edge=1)
|
||||
user.apply_damage(active_force, BRUTE, zone, 0, damage_flags = DAM_SHARP|DAM_EDGE)
|
||||
|
||||
user.drop_from_inventory(src)
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!</span>")
|
||||
target.apply_damage(5, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(5, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/mend_skull
|
||||
allowed_tools = list(
|
||||
@@ -110,7 +110,7 @@
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, damaging [target]'s face with \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, damaging [target]'s face with \the [tool]!</span>")
|
||||
var/obj/item/organ/external/head/h = affected
|
||||
target.apply_damage(10, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(10, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
h.disfigured = 1
|
||||
|
||||
/datum/surgery_step/finish_bone
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, cracking [target]'s [affected.encased] with \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, cracking [target]'s [affected.encased] with \the [tool]!</span>" )
|
||||
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
affected.fracture()
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
var/self_msg = "<span class='warning'>Your hand slips, cracking [target]'s [affected.encased]!</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
affected.fracture()
|
||||
|
||||
/datum/surgery_step/open_encased/close
|
||||
@@ -161,7 +161,7 @@
|
||||
var/self_msg = "<span class='warning'>Your hand slips, bending [target]'s [affected.encased] the wrong way!</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
affected.fracture()
|
||||
|
||||
if(affected.internal_organs && affected.internal_organs.len)
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
/datum/surgery_step/generic/cut_face/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, slicing [target]'s throat wth \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, slicing [target]'s throat wth \the [tool]!</span>" )
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
target.apply_damage(20, OXY)
|
||||
target.losebreath += 10
|
||||
|
||||
@@ -79,4 +79,4 @@
|
||||
/datum/surgery_step/robotics/face/synthskin/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, slicing [target]'s throat wth \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, slicing [target]'s throat wth \the [tool]!</span>" )
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
@@ -41,7 +41,7 @@
|
||||
/datum/surgery_step/generic/prepare_face/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, slicing [target]'s throat wth \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, slicing [target]'s throat wth \the [tool]!</span>" )
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
target.apply_damage(20, OXY)
|
||||
target.losebreath += 10
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
/datum/surgery_step/generic/alter_face/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, slicing [target]'s throat wth \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, slicing [target]'s throat wth \the [tool]!</span>" )
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
target.apply_damage(20, OXY)
|
||||
target.losebreath += 10
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
/datum/surgery_step/robotics/face/synthskinopen/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, slicing [target]'s throat wth \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, slicing [target]'s throat wth \the [tool]!</span>" )
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/robotics/face/prepare_face
|
||||
allowed_tools = list(
|
||||
@@ -187,7 +187,7 @@
|
||||
/datum/surgery_step/robotics/face/prepare_face/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, slicing [target]'s throat wth \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, slicing [target]'s throat wth \the [tool]!</span>" )
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/robotics/face/alter_synthface
|
||||
allowed_tools = list(
|
||||
@@ -229,7 +229,7 @@
|
||||
/datum/surgery_step/robotics/face/alter_synthface/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, slicing [target]'s throat wth \the [tool]!</span>" , \
|
||||
"<span class='warning'>Your hand slips, slicing [target]'s throat wth \the [tool]!</span>" )
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(40, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/robotics/face/seal_face
|
||||
allowed_tools = list(
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!</span>")
|
||||
target.apply_damage(7.5, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(7.5, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
target.apply_damage(12.5, BURN, target_zone, 0, tool)
|
||||
|
||||
/datum/surgery_step/generic/incision_manager
|
||||
@@ -102,7 +102,7 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!</span>")
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
target.apply_damage(15, BURN, target_zone, 0, tool)
|
||||
|
||||
/datum/surgery_step/generic/cut_open
|
||||
@@ -147,7 +147,7 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, slicing open [target]'s [affected.name] in the wrong place with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, slicing open [target]'s [affected.name] in the wrong place with \the [tool]!</span>")
|
||||
target.apply_damage(10, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(10, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/generic/cut_open_vaurca
|
||||
allowed_tools = list(
|
||||
@@ -188,7 +188,7 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, cracking [target]'s [affected.name] carapace in the wrong place with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, cracking [target]'s [affected.name] carapace in the wrong place with \the [tool]!</span>")
|
||||
target.apply_damage(15, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(15, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/generic/clamp_bleeders
|
||||
allowed_tools = list(
|
||||
@@ -279,7 +279,7 @@
|
||||
msg = "<span class='warning'>[user]'s hand slips, damaging several organs in [target]'s lower abdomen with \the [tool]</span>"
|
||||
self_msg = "<span class='warning'>Your hand slips, damaging several organs in [target]'s lower abdomen with \the [tool]!</span>"
|
||||
user.visible_message(msg, self_msg)
|
||||
target.apply_damage(12, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(12, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/generic/cauterize
|
||||
allowed_tools = list(
|
||||
@@ -384,5 +384,5 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, sawing through the bone in [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, sawwing through the bone in [target]'s [affected.name] with \the [tool]!</span>")
|
||||
target.apply_damage(30, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(30, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
affected.fracture()
|
||||
@@ -37,7 +37,7 @@
|
||||
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, scraping around inside [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, scraping around inside [target]'s [affected.name] with \the [tool]!</span>")
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/cavity/make_space
|
||||
allowed_tools = list(
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
var/obj/item/organ/external/E = tool
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, damaging [target]'s [E.amputation_point]!</span>", \
|
||||
"<span class='warning'>Your hand slips, damaging [target]'s [E.amputation_point]!</span>")
|
||||
target.apply_damage(10, BRUTE, null, sharp=1)
|
||||
target.apply_damage(10, BRUTE, null, damage_flags = DAM_EDGE)
|
||||
|
||||
/datum/surgery_step/limb/connect
|
||||
allowed_tools = list(
|
||||
@@ -84,7 +84,7 @@
|
||||
var/obj/item/organ/external/E = tool
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, damaging [target]'s [E.amputation_point]!</span>", \
|
||||
"<span class='warning'>Your hand slips, damaging [target]'s [E.amputation_point]!</span>")
|
||||
target.apply_damage(10, BRUTE, null, sharp=1)
|
||||
target.apply_damage(10, BRUTE, null, damage_flags = DAM_SHARP)
|
||||
|
||||
/datum/surgery_step/limb/mechanize
|
||||
allowed_tools = list(/obj/item/robot_parts = 100)
|
||||
@@ -131,4 +131,4 @@
|
||||
/datum/surgery_step/limb/mechanize/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, damaging [target]'s flesh!</span>", \
|
||||
"<span class='warning'>Your hand slips, damaging [target]'s flesh!</span>")
|
||||
target.apply_damage(10, BRUTE, null, sharp=1)
|
||||
target.apply_damage(10, BRUTE, null, damage_flags = DAM_SHARP)
|
||||
@@ -162,7 +162,7 @@
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!</span>")
|
||||
affected.sever_artery()
|
||||
target.apply_damage(rand(30, 50), BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(rand(30, 50), BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/internal/remove_organ
|
||||
allowed_tools = list(
|
||||
@@ -222,7 +222,7 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, damaging [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, damaging [target]'s [affected.name] with \the [tool]!</span>")
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/internal/replace_organ
|
||||
allowed_tools = list(
|
||||
@@ -377,7 +377,7 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!</span>")
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
/datum/surgery_step/internal/lobotomize
|
||||
allowed_tools = list(
|
||||
@@ -421,4 +421,4 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!</span>")
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(20, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
@@ -260,7 +260,7 @@
|
||||
"<span class='warning'>Your hand slips, gumming up the mechanisms inside of [target]'s [affected.name] with \the [tool]!</span>")
|
||||
|
||||
target.adjustToxLoss(5)
|
||||
target.apply_damage(5, BRUTE, target_zone, 0, tool, tool.sharp, tool.edge)
|
||||
target.apply_damage(5, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags())
|
||||
|
||||
for(var/obj/item/organ/I in affected.internal_organs)
|
||||
if(I)
|
||||
|
||||
Reference in New Issue
Block a user