diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index 3b1401708d0..24f8ff7a28a 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -116,6 +116,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) user.visible_message("\red [user]'s hand slips, slicing open [target]'s [affected.display_name] in a wrong spot with \the [tool]!", \ "\red Your hand slips, slicing open [target]'s [affected.display_name] in a wrong spot with \the [tool]!") affected.createwound(CUT, 10) + if (ishuman(user)) + user:bloody_hands(target, 0) /datum/surgery_step/generic/clamp_bleeders required_tool = /obj/item/weapon/hemostat @@ -145,6 +147,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) user.visible_message("\red [user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.display_name] with the \[tool]!", \ "\red Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.display_name] with \the [tool]!",) affected.createwound(CUT, 10) + if (ishuman(user)) + user:bloody_hands(target, 0) /datum/surgery_step/generic/retract_skin required_tool = /obj/item/weapon/retractor @@ -181,6 +185,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) user.visible_message(msg, self_msg) affected.open = 2 spread_germs_to_organ(affected, user) + if (prob(40)) user:bloody_hands(target, 0) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -258,12 +263,15 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) user.visible_message("\blue [user] has separated [target]'s appendix with \the [tool]." , \ "\blue You have separated [target]'s appendix with \the [tool].") target.op_stage.appendix = 1 + if (ishuman(user) && prob(40)) user:bloody_hands(target, 0) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/groin = target.get_organ("groin") user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s abdomen with \the [tool]!", \ "\red Your hand slips, slicing an artery inside [target]'s abdomen with \the [tool]!") - groin.createwound(CUT, 50) + groin.createwound(CUT, 50, 1) + if (ishuman(user)) + user:bloody_body(target) /datum/surgery_step/appendectomy/remove_appendix required_tool = /obj/item/weapon/hemostat @@ -292,6 +300,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) else new /obj/item/weapon/reagent_containers/food/snacks/appendix(get_turf(target)) target.op_stage.appendix = 2 + if (ishuman(user) && prob(40)) user:bloody_hands(target, 0) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -335,6 +344,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) for(var/datum/wound/W in affected.wounds) if(W.internal) affected.wounds -= W affected.update_damages() + if (ishuman(user) && prob(40)) user:bloody_hands(target, 0) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -370,6 +380,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) "\blue You apply some [tool] to [target]'s bone in [affected.display_name] with \the [tool].") affected.stage = 1 spread_germs_to_organ(affected, user) + if (ishuman(user) && prob(80)) user:bloody_hands(target, 0) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -464,6 +475,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) affected.stage = 0 affected.perma_injury = 0 spread_germs_to_organ(affected, user) + if (ishuman(user) && prob(80)) user:bloody_hands(target, 0) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -643,6 +655,9 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) user.visible_message("\red [user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!", \ "\red Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!") target.losebreath += 10 + if (ishuman(user)) + user:bloody_body(target) + user:bloody_hands(target, 0) /datum/surgery_step/face/fix_face required_tool = /obj/item/weapon/retractor @@ -750,7 +765,10 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\red [user]'s hand slips, cutting a vein in [target]'s brain with \the [tool]!", \ "\red Your hand slips, cutting a vein in [target]'s brain with \the [tool]!") - target.apply_damage(50, BRUTE, "head") + target.apply_damage(50, BRUTE, "head", 1) + if (ishuman(user)) + user:bloody_body(target) + user:bloody_hands(target, 0) /datum/surgery_step/brain/saw_spine required_tool = /obj/item/weapon/circular_saw @@ -785,7 +803,10 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\red [user]'s hand slips, cutting a vein in [target]'s brain with \the [tool]!", \ "\red Your hand slips, cutting a vein in [target]'s brain with \the [tool]!") - target.apply_damage(30, BRUTE, "head") + target.apply_damage(30, BRUTE, "head", 1) + if (ishuman(user)) + user:bloody_body(target) + user:bloody_hands(target, 0) ////////////////////////////////////////////////////////////////// @@ -1069,6 +1090,9 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) var/datum/organ/external/affected = target.get_organ(target_zone) affected.fracture() + if (ishuman(user)) + user:bloody_hands(target, 0) + fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/msg = "\red [user]'s hand slips, breaking [target]'s ribcage!" var/self_msg = "\red Your hand slips, breaking [target]'s ribcage!" @@ -1151,6 +1175,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) for(var/datum/disease/alien_embryo in target.viruses) alien_embryo.cure() + if (ishuman(user)) user:bloody_hands(target, 0) + /datum/surgery_step/ribcage/fix_lungs required_tool = /obj/item/weapon/scalpel @@ -1170,10 +1196,14 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) user.visible_message("\blue [user] mends the rupture in [target]'s lungs with \the [tool].", \ "\blue You mend the rupture in [target]'s lungs with \the [tool]." ) affected.ruptured_lungs = 0 + if (ishuman(user) && prob(80)) user:bloody_hands(target, 0) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/chest/affected = target.get_organ("chest") user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s chest with \the [tool]!", \ "\red Your hand slips, slicing an artery inside [target]'s chest with \the [tool]!") affected.createwound(CUT, 20) + if (ishuman(user)) + user:bloody_hands(target, 0) + user:bloody_body(target) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f2038d8df30..249b72a4c4c 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -153,21 +153,8 @@ emp_act if(ishuman(user)) var/mob/living/carbon/human/H = user if(get_dist(H, src) > 1) //people with TK won't get smeared with blood - if(H.wear_suit) - H.wear_suit.add_blood(src) - H.update_inv_wear_suit(0) //updates mob overlays to show the new blood (no refresh) - else if(H.w_uniform) - H.w_uniform.add_blood(src) - H.update_inv_w_uniform(0) //updates mob overlays to show the new blood (no refresh) - if (H.gloves) - H.gloves.add_blood(H) - H.gloves:transfer_blood = 2 - H.gloves:bloody_hands_mob = H - else - H.add_blood(H) - H.bloody_hands = 2 - H.bloody_hands_mob = H - H.update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves + H.bloody_body(src) + H.bloody_hands(src) switch(hit_area) if("head")//Harder to score a stun but if you do it lasts a bit longer @@ -194,10 +181,23 @@ emp_act visible_message("\red [src] has been knocked down!") if(bloody) + bloody_body(src) - if(wear_suit) - wear_suit.add_blood(src) - update_inv_wear_suit(0) - if(w_uniform) - w_uniform.add_blood(src) - update_inv_w_uniform(0) +/mob/living/carbon/human/proc/bloody_hands(var/mob/living/source, var/amount = 2) + if (gloves) + gloves.add_blood(source) + gloves:transfer_blood = amount + gloves:bloody_hands_mob = source + else + add_blood(source) + bloody_hands = amount + bloody_hands_mob = source + update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves + +/mob/living/carbon/human/proc/bloody_body(var/mob/living/source) + if(wear_suit) + wear_suit.add_blood(source) + update_inv_wear_suit(0) + if(w_uniform) + w_uniform.add_blood(source) + update_inv_w_uniform(0)