From fafe46e19721fdc2b86af26f341df5dbac6e38fc Mon Sep 17 00:00:00 2001 From: cib Date: Thu, 18 Oct 2012 13:32:45 +0200 Subject: [PATCH] Added internal wound surgery. --- code/WorkInProgress/surgery.dm | 41 ++++++++++++++++++++++++++++++++++ code/defines/obj/weapon.dm | 9 ++++++++ maps/tgstation.2.0.9.1.dmm | 2 +- 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index ee99b6a0217..31c97c78210 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -274,6 +274,47 @@ proc/build_surgery_steps_list() "\red Your hand slips, nicking internal organs in [target]'s abdomen with \the [tool]!") affected.createwound(BRUISE, 20) + +////////////////////////////////////////////////////////////////// +// INTERNAL WOUND PATCHING // +////////////////////////////////////////////////////////////////// + + +/datum/surgery_step/fix_vein + required_tool = /obj/item/weapon/FixOVein + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + + var/internal_bleeding = 0 + for(var/datum/wound/W in affected.wounds) if(W.internal) + internal_bleeding = 1 + break + + return affected.open == 2 && internal_bleeding + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + if (affected.stage == 0) + user.visible_message("[user] starts patching the damaged vein in [target]'s [affected.display_name] with \the [tool]." , \ + "You start patching the damaged vein 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 patched the damaged vein in [target]'s [affected.display_name] with \the [tool].", \ + "\blue You have patched the damaged vein in [target]'s [affected.display_name] with \the [tool].") + + for(var/datum/wound/W in affected.wounds) if(W.internal) + affected.wounds -= W + affected.update_damages() + + 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]!") + affected.take_damage(5, 0) + + ////////////////////////////////////////////////////////////////// // BONE SURGERY // ////////////////////////////////////////////////////////////////// diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index c97680fa145..10f6facf010 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -1729,6 +1729,15 @@ force = 0 throwforce = 1.0 +/obj/item/weapon/FixOVein + name = "FixOVein" + icon = 'surgery.dmi' + icon_state = "fixovein" + force = 0 + throwforce = 1.0 + origin_tech = "materials=1;biotech=3" + var/usage_amount = 10 + /obj/item/weapon/bonesetter name = "bone setter" icon = 'surgery.dmi' diff --git a/maps/tgstation.2.0.9.1.dmm b/maps/tgstation.2.0.9.1.dmm index c12bb7cbf9d..82f6a622880 100644 --- a/maps/tgstation.2.0.9.1.dmm +++ b/maps/tgstation.2.0.9.1.dmm @@ -4829,7 +4829,7 @@ "bOS" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bOT" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery) "bOU" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Obshutter"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/surgery) -"bOV" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/item/weapon/bonegel,/obj/item/weapon/bonegel,/obj/item/weapon/bonegel,/turf/simulated/floor,/area/medical/surgery) +"bOV" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/item/weapon/bonegel,/obj/item/weapon/FixOVein{pixel_x = -8},/turf/simulated/floor,/area/medical/surgery) "bOW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bOX" = (/obj/machinery/optable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bOY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)