diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index c68cb34f5e..e6069de460 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -78,17 +78,17 @@ proc/build_surgery_steps_list() max_duration = 110 can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && affected.open == 0 + return ..() && affected.open == 0 && target_zone != "eyes" && target_zone != "mouth" begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user] starts cutting open [target]'s [affected.display_name] with \the [tool]", \ - "You start cutting open [target]'s [affected.display_name] with \the [tool]") + user.visible_message("[user] starts the incision on [target]'s [affected.display_name] with \the [tool].", \ + "You start the incision on [target]'s [affected.display_name] with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\blue [user] cuts open [target]'s [affected.display_name] with \the [tool]", \ - "\blue You cut open [target]'s [affected.display_name] with \the [tool]") + user.visible_message("\blue [user] has made an incision on [target]'s [affected.display_name] with \the [tool].", \ + "\blue You have made an incision on [target]'s [affected.display_name] with \the [tool].",) affected.open = 1 affected.createwound(CUT, 1) if (target_zone == "head") @@ -96,7 +96,7 @@ proc/build_surgery_steps_list() fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\red [user]'s hand slips, slicing open [target]'s [affected.display_name] in a wrong spot with \the [tool]!", \ + 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) @@ -111,20 +111,21 @@ proc/build_surgery_steps_list() begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user] starts clamping bleeders in [target]'s [affected.display_name] with \the [tool]", \ - "You start clamping bleeders in [target]'s [affected.display_name] with \the [tool]") + user.visible_message("[user] starts clamping bleeders in [target]'s [affected.display_name] with \the [tool].", \ + "You start clamping bleeders in [target]'s [affected.display_name] with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\blue [user] clamps bleeders in [target]'s [affected.display_name] with \the [tool]", \ - "\blue You clamp bleeders in [target]'s [affected.display_name] with \the [tool]") + user.visible_message("\blue [user] clamps bleeders in [target]'s [affected.display_name] with \the [tool].", \ + "\blue You clamp bleeders in [target]'s [affected.display_name] with \the [tool].") affected.bandage() + affected.status &= ~ORGAN_BLEEDING fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\red [user]'s hand slips, tearing blood vessels in the wound in [target]'s [affected.display_name] with \the [tool]!", \ - "\red Your hand slips, tearing blood vessels in the wound in [target]'s [affected.display_name] with \the [tool]!") - target.apply_damage(5, BRUTE, affected) + 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) /datum/surgery_step/generic/retract_skin required_tool = /obj/item/weapon/retractor @@ -137,20 +138,41 @@ proc/build_surgery_steps_list() begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user] starts retracting flap of skin in the wound in [target]'s [affected.display_name] with \the [tool]", \ - "You starts retracting a flap of skin in the wound in [target]'s [affected.display_name] with \the [tool]") + var/msg = "[user] starts to pry open the incision on [target]'s [affected.display_name] with \the [tool]." + var/self_msg = "You start to pry open the incision on [target]'s [affected.display_name] with \the [tool]." + if (target_zone == "chest") + msg = "[user] starts to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]." + self_msg = "You start to separate the ribcage and rearrange the organs in [target]'s torso with \the [tool]." + if (target_zone == "groin") + msg = "[user] starts to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]." + self_msg = "You start to pry open the incision and rearrange the organs in [target]'s lower abdomen with \the [tool]." + user.visible_message(msg, self_msg) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\blue [user] retracts flap of skin in the wound in [target]'s [affected.display_name] with \the [tool]", \ - "\blue You retract a flap of skin in the wound in [target]'s [affected.display_name] with \the [tool]") + var/msg = "\blue [user] keeps the incision open on [target]'s [affected.display_name] with \the [tool]." + var/self_msg = "\blue You keep the incision open on [target]'s [affected.display_name] with \the [tool]." + if (target_zone == "chest") + msg = "\blue [user] keeps the ribcage open on [target]'s torso with \the [tool]." + self_msg = "\blue You keep the ribcage open on [target]'s torso with \the [tool]." + if (target_zone == "groin") + msg = "\blue [user] keeps the incision open on [target]'s lower abdomen with \the [tool]." + self_msg = "\blue You keep the incision open on [target]'s lower abdomen with \the [tool]." + user.visible_message(msg, self_msg) affected.open = 2 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\red [user]'s hand slips, tearing skin flap in the wound in [target]'s [affected.display_name] with \the [tool]!", \ - "\red Your hand slips, tearing the skin flap in the wound in [target]'s [affected.display_name] with \the [tool]!") - target.apply_damage(4, BRUTE, affected) + var/msg = "\red [user]'s hand slips, tearing the edges of incision on [target]'s [affected.display_name] with \the [tool]!" + var/self_msg = "\red Your hand slips, tearing the edges of incision on [target]'s [affected.display_name] with \the [tool]!" + if (target_zone == "chest") + msg = "\red [user]'s hand slips, damaging several organs [target]'s torso with \the [tool]!" + self_msg = "\red Your hand slips, damaging several organs [target]'s torso with \the [tool]!" + if (target_zone == "groin") + msg = "\red [user]'s hand slips, damaging several organs [target]'s lower abdomen with \the [tool]" + self_msg = "\red Your hand slips, damaging several organs [target]'s lower abdomen with \the [tool]!" + user.visible_message(msg, self_msg) + target.apply_damage(12, BRUTE, affected) /datum/surgery_step/generic/cauterize required_tool = /obj/item/weapon/cautery @@ -163,20 +185,20 @@ proc/build_surgery_steps_list() begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user] is beginning to cauterize the incision in [target]'s [affected.display_name] with \the [tool]", \ - "You are beginning to cauterize the incision in [target]'s [affected.display_name] with \the [tool]") + user.visible_message("[user] is beginning to cauterize the incision on [target]'s [affected.display_name] with \the [tool]." , \ + "You are beginning to cauterize the incision on [user]'s [affected.display_name] with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\blue [user] cauterizes the incision in [target]'s [affected.display_name] with \the [tool]", \ - "\blue You cauterize the incision in [target]'s [affected.display_name] with \the [tool]") + user.visible_message("\blue [user] cauterizes the incision on [target]'s [affected.display_name] with \the [tool].", \ + "\blue You cauterize the incision on [target]'s [affected.display_name] with \the [tool].") affected.open = 0 - affected.status &= ~ORGAN_BLEEDING\ + affected.status &= ~ORGAN_BLEEDING if (affected.name == "head") target.op_stage.eyes = 0 target.op_stage.face = 0 if (target_zone == "eyes" && target.op_stage.eyes > 0) - if (target.op_stage.eyes == 2) + if (target.op_stage.eyes == 3) target.sdisabilities &= ~BLIND target.eye_stat = 0 if (target_zone == "mouth" && target.op_stage.face > 0) @@ -216,12 +238,12 @@ proc/build_surgery_steps_list() return ..() && target.op_stage.appendix == 0 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts cutting out [target]'s appendix with \the [tool]", \ - "You start cutting out [user]'s appendix with \the [tool]") + user.visible_message("[user] starts to separating [target]'s appendix from the abdominal wall with \the [tool].", \ + "You start to separating [target]'s appendix from the abdominal wall with \the [tool]." ) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] cuts out [target]'s appendix with \the [tool]", \ - "\blue You cut out [user]'s appendix with \the [tool]") + 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 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -240,12 +262,12 @@ proc/build_surgery_steps_list() return ..() && target.op_stage.appendix == 1 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts removing [target]'s appendix with \the [tool]", \ - "You start removing [user]'s appendix with \the [tool]") + user.visible_message("[user] starts removing [target]'s appendix with \the [tool].", \ + "You start removing [target]'s appendix with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] removes [target]'s appendix with \the [tool]", \ - "\blue You remove [user]'s appendix with \the [tool]") + user.visible_message("\blue [user] has removed [target]'s appendix with \the [tool].", \ + "\blue You have removed [target]'s appendix with \the [tool].") var/datum/disease/appendicitis/app = null for(var/datum/disease/appendicitis/appendicitis in target.viruses) app = appendicitis @@ -259,8 +281,8 @@ proc/build_surgery_steps_list() fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\red [user]'s hand slips, hitting internal organs in [target]'s abdomen with \the [tool]!", \ - "\red Your hand slips, hitting internal organs in [target]'s abdomen with \the [tool]!") + user.visible_message("\red [user]'s hand slips, nicking internal organs in [target]'s abdomen with \the [tool]!", \ + "\red Your hand slips, nicking internal organs in [target]'s abdomen with \the [tool]!") affected.createwound(BRUISE, 20) ////////////////////////////////////////////////////////////////// @@ -275,29 +297,24 @@ proc/build_surgery_steps_list() can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - return affected.open == 2 && affected.stage < 3 + return affected.open == 2 && affected.stage == 0 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user] starts applying [tool] to [target]'s bone in [affected.display_name]", \ - "You start applying [tool] to [target]'s bone in [affected.display_name] with \the [tool]") + if (affected.stage == 0) + user.visible_message("[user] starts applying medication to the damaged bones in [target]'s [affected.display_name] with \the [tool]." , \ + "You start applying medication to the damaged bones in [target]'s [affected.display_name] with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("\blue [user] applies some [tool] to [target]'s bone in [affected.display_name]", \ - "\blue You apply some [tool] to [target]'s bone in [affected.display_name] with \the [tool]") - if (affected.stage == 0) - affected.stage = 1 - if (affected.stage == 2) - affected.status &= ~ORGAN_BROKEN - affected.status &= ~ORGAN_SPLINTED - affected.stage = 0 - affected.perma_injury = 0 + "\blue You apply some [tool] to [target]'s bone in [affected.display_name] with \the [tool].") + affected.stage = 1 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\red [user]'s hand slips, applying [tool] to the wrong spot in [target]'s [affected.display_name]!", \ - "\red Your hand slips, applying [tool] to the wrong spot in [target]'s [affected.display_name]!") + user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!" , \ + "\red Your hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!") /datum/surgery_step/set_bone required_tool = /obj/item/weapon/bonesetter @@ -307,24 +324,82 @@ proc/build_surgery_steps_list() can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - return affected.open == 2 && affected.stage == 1 + return affected.name != "head" && affected.open == 2 && affected.stage == 1 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] is beginning to set [target]'s [target_zone] bone in place with \the [tool]", \ - "You are beginning to set [target]'s [target_zone] bone in place with \the [tool]") + var/datum/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] is beginning to set the bone in [target]'s [affected.display_name] in place with \the [tool]." , \ + "You are beginning to set the bone in [target]'s [target_zone] in place with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\blue [user] set [target]'s [affected.display_name] bone in place with \the [tool]", \ - "\blue You set [target]'s [affected.display_name] bone in place with \the [tool]") + user.visible_message("\blue [user] sets the bone in [target]'s [affected.display_name] in place with \the [tool].", \ + "\blue You set the bone in [target]'s [affected.display_name] n place with \the [tool].") affected.stage = 2 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\red [user]'s hand slips, setting [target]'s [affected.display_name] in the wrong place with \the [tool]!", \ - "\red Your hand slips, setting [target]'s [affected.display_name] in the wrong place with \the [tool]!") + user.visible_message("\red [user]'s hand slips, damaging the bone in [target]'s [affected.display_name] with \the [tool]!" , \ + "\red Your hand slips, damaging the bone in [target]'s [affected.display_name] with \the [tool]!") affected.createwound(BRUISE, 5) +/datum/surgery_step/mend_skull + required_tool = /obj/item/weapon/bonesetter + + min_duration = 60 + max_duration = 70 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.name == "head" && affected.open == 2 && affected.stage == 1 + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] is beginning piece together [target]'s skull with \the [tool]." , \ + "You are beginning piece together [user]'s skull with \the [tool].") + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\blue [user] sets [target]'s [affected.display_name] skull with \the [tool]." , \ + "\blue You set [target]'s [affected.display_name] skull with \the [tool].") + affected.stage = 2 + + fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\red [user]'s hand slips, damaging [target]'s [affected.display_name] face with \the [tool]!" , \ + "\red Your hand slips, damaging [target]'s [affected.display_name] face with \the [tool]!") + var/datum/organ/external/head/h = affected + h.createwound(BRUISE, 10) + h.disfigured = 1 + +/datum/surgery_step/finish_bone + required_tool = /obj/item/weapon/bonegel + + min_duration = 50 + max_duration = 60 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open == 2 && affected.stage == 2 + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] starts to finish mending the damaged bones in [target]'s [affected.display_name] with \the [tool].", \ + "You start to finish mending the damaged bones in [target]'s [affected.display_name] with \the [tool].") + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\blue [user] has mended the damaged bones in [target]'s [affected.display_name] with \the [tool]." , \ + "\blue You have mended the damaged bones in [target]'s [affected.display_name] with \the [tool]." ) + affected.status &= ~ORGAN_BROKEN + affected.status &= ~ORGAN_SPLINTED + affected.stage = 0 + affected.perma_injury = 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) + user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!" , \ + "\red Your hand slips, smearing [tool] in the incision in [target]'s [affected.display_name]!") + ////////////////////////////////////////////////////////////////// // EYE SURGERY // ////////////////////////////////////////////////////////////////// @@ -336,7 +411,31 @@ proc/build_surgery_steps_list() var/datum/organ/external/affected = target.get_organ(target_zone) if (!affected) return 0 - return target_zone == "eyes" && affected.open == 2 && !(affected.status & ORGAN_BLEEDING) + return target_zone == "eyes" + +/datum/surgery_step/eye/cut_open + required_tool = /obj/item/weapon/scalpel + + min_duration = 90 + max_duration = 110 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] starts to separate the corneas on [target]'s eyes with \the [tool].", \ + "You start to separate the corneas on [target]'s eyes with \the [tool].") + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("\blue [user] has separated the corneas on [target]'s eyes with \the [tool]." , \ + "\blue You have separated the corneas on [target]'s eyes with \the [tool].",) + target.op_stage.eyes = 1 + + fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\red [user]'s hand slips, slicing [target]'s eyes wth \the [tool]!" , \ + "\red Your hand slips, slicing [target]'s eyes wth \the [tool]!" ) + affected.createwound(CUT, 10) /datum/surgery_step/eye/lift_eyes required_tool = /obj/item/weapon/retractor @@ -345,23 +444,22 @@ proc/build_surgery_steps_list() max_duration = 40 can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && target.op_stage.eyes < 1 + return ..() && target.op_stage.eyes == 1 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts lifting [target]'s eyes from sockets with \the [tool]", \ - "You start lifting [target]'s eyes from sockets with \the [tool]") + user.visible_message("[user] starts lifting corneas from [target]'s eyes with \the [tool].", \ + "You start lifting corneas from [target]'s eyes with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] lifts [target]'s eyes from sockets with \the [tool]", \ - "\blue You lift [target]'s eyes from sockets with \the [tool]") - target.op_stage.eyes = 1 + user.visible_message("\blue [user] has lifted the corneas from [target]'s eyes from with \the [tool]." , \ + "\blue You has lifted the corneas from [target]'s eyes from with \the [tool]." ) + target.op_stage.eyes = 2 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("\red [user]'s hand slips, damaging [target]'s eyes with \the [tool]!", \ "\red Your hand slips, damaging [target]'s eyes with \the [tool]!") target.apply_damage(10, BRUTE, affected) - //TODO eye damage /datum/surgery_step/eye/mend_eyes required_tool = /obj/item/weapon/hemostat @@ -370,23 +468,51 @@ proc/build_surgery_steps_list() max_duration = 100 can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && target.op_stage.eyes == 1 + return ..() && target.op_stage.eyes == 2 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts mending nerves in [target]'s eyes with \the [tool]", \ - "You start mending nerves in [target]'s eyes with \the [tool]") + user.visible_message("[user] starts mending the nerves and lenses in [target]'s eyes with \the [tool].", \ + "You start mending the nerves and lenses in [target]'s eyes with the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] mend [target]'s eyes and nerves with \the [tool]", \ - "\blue You mend [target]'s eyes and nerves with \the [tool]") - target.op_stage.eyes = 2 + user.visible_message("\blue [user] mends the nerves and lenses in [target]'s with \the [tool]." , \ + "\blue You mend the nerves and lenses in [target]'s with \the [tool].") + target.op_stage.eyes = 3 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\red [user]'s hand slips, clamping on [target]'s eye nerves with \the [tool]!", \ - "\red Your hand slips, clamping on [target]'s eye nerves with \the [tool]!") + user.visible_message("\red [user]'s hand slips, stabbing \the [tool] into [target]'s eye!", \ + "\red Your hand slips, stabbing \the [tool] into [target]'s eye!") target.apply_damage(10, BRUTE, affected) +/datum/surgery_step/eye/cauterize + required_tool = /obj/item/weapon/cautery + + min_duration = 70 + max_duration = 100 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] is beginning to cauterize the incision around [target]'s eyes with \the [tool]." , \ + "You are beginning to cauterize the incision around [user]'s eyes with \the [tool].") + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("\blue [user] cauterizes the incision around [target]'s eyes with \the [tool].", \ + "\blue You cauterize the incision around [target]'s eyes with \the [tool].") + if (target.op_stage.eyes == 3) + target.sdisabilities &= ~BLIND + target.eye_stat = 0 + target.op_stage.eyes = 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) + user.visible_message("\red [user]'s hand slips, searing [target]'s eyes with \the [tool]!", \ + "\red Your hand slips, searing [target]'s eyes with \the [tool]!") + target.apply_damage(5, BURN, affected) + target.eye_stat += 5 + ////////////////////////////////////////////////////////////////// // FACE SURGERY // ////////////////////////////////////////////////////////////////// @@ -400,6 +526,31 @@ proc/build_surgery_steps_list() return 0 return target_zone == "mouth" && affected.open == 2 && !(affected.status & ORGAN_BLEEDING) +/datum/surgery_step/generic/cut_face + required_tool = /obj/item/weapon/scalpel + + min_duration = 90 + max_duration = 110 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() && target_zone == "mouth" && target.op_stage.face == 0 + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] starts to cut open [target]'s face and neck with \the [tool].", \ + "You start to cut open [target]'s face and neck with \the [tool].") + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("\blue [user] has cut open [target]'s face and neck with \the [tool]." , \ + "\blue You have cut open [target]'s face and neck with \the [tool].",) + target.op_stage.face = 1 + + fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\red [user]'s hand slips, slicing [target]'s throat wth \the [tool]!" , \ + "\red Your hand slips, slicing [target]'s throat wth \the [tool]!" ) + affected.createwound(CUT, 60) + target.losebreath += 10 + /datum/surgery_step/face/mend_vocal required_tool = /obj/item/weapon/hemostat @@ -407,16 +558,16 @@ proc/build_surgery_steps_list() max_duration = 90 can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && target.op_stage.face < 1 + return ..() && target.op_stage.face == 1 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts mending [target]'s vocal cords with \the [tool]", \ - "You start mending [target]'s vocal cords with \the [tool]") + user.visible_message("[user] starts mending [target]'s vocal cords with \the [tool].", \ + "You start mending [target]'s vocal cords with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] mends [target]'s vocal cords with \the [tool]", \ - "\blue You mend [target]'s vocal cords with \the [tool]") - target.op_stage.face = 1 + user.visible_message("\blue [user] mends [target]'s vocal cords with \the [tool].", \ + "\blue You mend [target]'s vocal cords with \the [tool].") + target.op_stage.face = 2 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\red [user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!", \ @@ -430,16 +581,16 @@ proc/build_surgery_steps_list() max_duration = 100 can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && target.op_stage.face == 1 + return ..() && target.op_stage.face == 2 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts pulling skin on [target]'s face back in place with \the [tool]", \ - "You start pulling skin on [target]'s face back in place with \the [tool]") + user.visible_message("[user] starts pulling skin on [target]'s face back in place with \the [tool].", \ + "You start pulling skin on [target]'s face back in place with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] pulls skin on [target]'s face back in place with \the [tool]", \ - "\blue You pull skin on [target]'s face back in place with \the [tool]") - target.op_stage.face = 2 + user.visible_message("\blue [user] pulls skin on [target]'s face back in place with \the [tool].", \ + "\blue You pull skin on [target]'s face back in place with \the [tool].") + target.op_stage.face = 3 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -447,6 +598,36 @@ proc/build_surgery_steps_list() "\red Your hand slips, tearing skin on [target]'s face with \the [tool]!") target.apply_damage(10, BRUTE, affected) +/datum/surgery_step/face/cauterize + required_tool = /obj/item/weapon/cautery + + min_duration = 70 + max_duration = 100 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() && target.op_stage.face > 0 + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] is beginning to cauterize the incision on [target]'s face and neck with \the [tool]." , \ + "You are beginning to cauterize the incision on [user]'s face and neck with \the [tool].") + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\blue [user] cauterizes the incision on [target]'s face and neck with \the [tool].", \ + "\blue You cauterize the incision on [target]'s face and neck with \the [tool].") + affected.open = 0 + affected.status &= ~ORGAN_BLEEDING + if (target.op_stage.face == 3) + var/datum/organ/external/head/h = affected + h.disfigured = 0 + target.op_stage.face = 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) + user.visible_message("\red [user]'s hand slips, leaving a small burn on [target]'s face with \the [tool]!", \ + "\red Your hand slips, leaving a small burn on [target]'s face with \the [tool]!") + target.apply_damage(4, BURN, affected) + ////////////////////////////////////////////////////////////////// // BRAIN SURGERY // ////////////////////////////////////////////////////////////////// @@ -465,17 +646,17 @@ proc/build_surgery_steps_list() return ..() && target_zone == "head" && target.brain_op_stage == 1 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts sawing open [target]'s skull with \the [tool]", \ - "You start start sawing open [target]'s skull with \the [tool]") + user.visible_message("[user] begins to cut through [target]'s skull with \the [tool].", \ + "You begin to cut through [target]'s skull with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] saws [target]'s skull open with \the [tool]", \ - "\blue You saw on [target]'s skull open with \the [tool]") + user.visible_message("\blue [user] has cut through [target]'s skull open with \the [tool].", \ + "\blue You have cut through [target]'s skull open with \the [tool].") target.brain_op_stage = 2 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\red [user]'s hand slips, cutting [target]'s scalp with \the [tool]!", \ - "\red Your hand slips, cutting [target]'s scalp with \the [tool]!") + user.visible_message("\red [user]'s hand slips, cracking [target]'s skull with \the [tool]!" , \ + "\red Your hand slips, cracking [target]'s skull with \the [tool]!" ) target.apply_damage(10, BRUTE, "head") /datum/surgery_step/brain/cut_brain @@ -488,12 +669,12 @@ proc/build_surgery_steps_list() return ..() && target.brain_op_stage == 2 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts separating connections to [target]'s brain with \the [tool]", \ - "You start separating connections to [target]'s brain with \the [tool]") + user.visible_message("[user] starts separating connections to [target]'s brain with \the [tool].", \ + "You start separating connections to [target]'s brain with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] separates connections to [target]'s brain with \the [tool]", \ - "\blue You separate connections to [target]'s brain with \the [tool]") + user.visible_message("\blue [user] separates connections to [target]'s brain with \the [tool].", \ + "\blue You separate connections to [target]'s brain with \the [tool].") target.brain_op_stage = 3 fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -511,12 +692,12 @@ proc/build_surgery_steps_list() return ..() && target.brain_op_stage == 3 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts separating [target]'s brain from spine with \the [tool]", \ - "You start separating [target]'s brain from spine with \the [tool]") + user.visible_message("[user] starts separating [target]'s brain from \his spine with \the [tool].", \ + "You start separating [target]'s brain from spine with \the [tool].") end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] separates [target]'s brain from spine with \the [tool]", \ - "\blue You separate [target]'s brain from spine with \the [tool]") + user.visible_message("\blue [user] separates [target]'s brain from \his spine with \the [tool].", \ + "\blue You separate [target]'s brain from spine with \the [tool].") user.attack_log += "\[[time_stamp()]\] Debrained [target.name] ([target.ckey]) with [tool.name] (INTENT: [uppertext(user.a_intent)])" target.attack_log += "\[[time_stamp()]\] Debrained by [user.name] ([user.ckey]) with [tool.name] (INTENT: [uppertext(user.a_intent)])" @@ -555,11 +736,11 @@ proc/build_surgery_steps_list() return ..() && target.brain_op_stage == 0 begin_step(mob/user, mob/living/carbon/metroid/target, target_zone, obj/item/tool) - user.visible_message("[user] starts cutting [target]'s flesh with \the [tool]", \ - "You start cutting [target]'s flesh with \the [tool]") + user.visible_message("[user] starts cutting [target]'s flesh with \the [tool].", \ + "You start cutting [target]'s flesh with \the [tool].") end_step(mob/user, mob/living/carbon/metroid/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] cuts [target]'s flesh with \the [tool]", \ + user.visible_message("\blue [user] cuts [target]'s flesh with \the [tool].", \ "\blue You cut [target]'s flesh with \the [tool], exposing the cores") target.brain_op_stage = 1 @@ -577,8 +758,8 @@ proc/build_surgery_steps_list() return ..() && target.brain_op_stage == 1 begin_step(mob/user, mob/living/carbon/metroid/target, target_zone, obj/item/tool) - user.visible_message("[user] starts cutting [target]'s silky innards apart with \the [tool]", \ - "You start cutting [target]'s silky innards apart with \the [tool]") + user.visible_message("[user] starts cutting [target]'s silky innards apart with \the [tool].", \ + "You start cutting [target]'s silky innards apart with \the [tool].") end_step(mob/user, mob/living/carbon/metroid/target, target_zone, obj/item/tool) user.visible_message("\blue [user] cuts [target]'s innards apart with \the [tool], exposing the cores", \ @@ -599,12 +780,12 @@ proc/build_surgery_steps_list() return ..() && target.brain_op_stage == 2 && target.cores > 0 begin_step(mob/user, mob/living/carbon/metroid/target, target_zone, obj/item/tool) - user.visible_message("[user] starts cutting out one of [target]'s cores with \the [tool]", \ - "You start cutting out one of [target]'s cores with \the [tool]") + user.visible_message("[user] starts cutting out one of [target]'s cores with \the [tool].", \ + "You start cutting out one of [target]'s cores with \the [tool].") end_step(mob/user, mob/living/carbon/metroid/target, target_zone, obj/item/tool) target.cores-- - user.visible_message("\blue [user] cuts out one of [target]'s cores with \the [tool]",, \ + user.visible_message("\blue [user] cuts out one of [target]'s cores with \the [tool].",, \ "\blue You cut out one of [target]'s cores with \the [tool]. [target.cores] cores left.") new/obj/item/metroid_core(target.loc) if(target.cores <= 0)