From 4b89d37b6d5a5ca0a537fbc2a4d1d8e8c517ffe7 Mon Sep 17 00:00:00 2001 From: Chompstation Bot Date: Fri, 18 Jun 2021 21:07:55 +0000 Subject: [PATCH 1/4] Porting Over De-Husking Surgery --- code/datums/supplypacks/medical.dm | 3 +- .../objects/items/weapons/storage/firstaid.dm | 6 +- .../objects/items/weapons/surgery_tools.dm | 11 ++ code/modules/surgery/other.dm | 154 ++++++++++++++++++ icons/obj/surgery_vr.dmi | Bin 6069 -> 6564 bytes maps/tether/tether-03-surface3.dmm | 37 +++++ 6 files changed, 208 insertions(+), 3 deletions(-) diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm index 69f198bbd4..28ed9f07bf 100644 --- a/code/datums/supplypacks/medical.dm +++ b/code/datums/supplypacks/medical.dm @@ -66,7 +66,8 @@ /obj/item/weapon/surgical/bonegel, /obj/item/weapon/surgical/retractor, /obj/item/weapon/surgical/bonesetter, - /obj/item/weapon/surgical/circular_saw + /obj/item/weapon/surgical/circular_saw, + /obj/item/weapon/surgical/bioregen ) cost = 25 containertype = /obj/structure/closet/crate/secure/veymed diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 9b87ee51d3..71d348e4b6 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -137,7 +137,8 @@ /obj/item/stack/medical/advanced/bruise_pack, /obj/item/stack/nanopaste, /obj/item/device/healthanalyzer/advanced, - /obj/item/weapon/autopsy_scanner + /obj/item/weapon/autopsy_scanner, + /obj/item/weapon/surgical/bioregen ) starts_with = list( @@ -152,7 +153,8 @@ /obj/item/weapon/surgical/FixOVein, /obj/item/stack/medical/advanced/bruise_pack, /obj/item/device/healthanalyzer/advanced, - /obj/item/weapon/autopsy_scanner + /obj/item/weapon/autopsy_scanner, + /obj/item/weapon/surgical/bioregen ) /obj/item/weapon/storage/firstaid/clotting diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 15bb7cd0e5..22cac7c7f1 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -6,6 +6,7 @@ * Surgical Drill * Scalpel * Circular Saw + * Bio-Regenerator */ /obj/item/weapon/surgical @@ -22,6 +23,16 @@ return 0 ..() +/* + * Bio-Regenerator + */ +/obj/item/weapon/surgical/bioregen + name="bioregenerator" + desc="A special tool used in surgeries which can pull toxins from and restore oxygen to organic tissue as well as recreate missing biological structures to allow otherwise irreperable flesh to be mended." + icon='icons/obj/surgery_vr.dmi' + icon_state="bioregen" + drop_sound = 'sound/items/drop/scrap.ogg' + /* * Retractor */ diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index fe7d004dc4..9cde26f240 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -232,3 +232,157 @@ /datum/surgery_step/hardsuit/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user]'s [tool] can't quite seem to get through the metal...", \ "\The [tool] can't quite seem to get through the metal. It's weakening, though - try again.") + +/////////////////////////////////////////// +// De-Husking Surgery // +///////////////////////////////////////// + +/datum/surgery_status/ + var/dehusk = 0 + +/datum/surgery_step/dehusk/ + priority = 1 + can_infect = 0 + blood_level = 1 + +/datum/surgery_step/dehusk/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if (!hasorgans(target)) + return 0 + var/obj/item/organ/external/affected = target.get_organ(target_zone) + if (!affected || (affected.robotic >= ORGAN_ROBOT)) + return 0 + if(coverage_check(user,target,affected,tool)) + return 0 + return target_zone == BP_TORSO && (HUSK in target.mutations) + +/datum/surgery_step/dehusk/structinitial + allowed_tools = list( + /obj/item/weapon/surgical/bioregen = 100 + ) + min_duration = 90 + max_duration = 120 + +/datum/surgery_step/dehusk/structinitial/can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() && target.op_stage.dehusk == 0 + +/datum/surgery_step/dehusk/structinitial/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] begins to create a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool].", \ + "You begin to create a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool].") + ..() + +/datum/surgery_step/dehusk/structinitial/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] creates a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool].", \ + "You create a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool].") + target.op_stage.dehusk = 1 + ..() + +/datum/surgery_step/dehusk/structinitial/fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user]'s hand slips, and the mesh falls, with \the [tool] scraping [target]'s body.", \ + "Your hand slips, and the mesh falls, with \the [tool] scraping [target]'s body.") + affected.createwound(CUT, 15) + affected.createwound(BRUISE, 10) + ..() + +/datum/surgery_step/dehusk/relocateflesh + allowed_tools = list( + /obj/item/weapon/surgical/hemostat = 100, \ + /obj/item/stack/cable_coil = 75, \ + /obj/item/device/assembly/mousetrap = 20 + ) + min_duration = 90 + max_duration = 120 + +/datum/surgery_step/dehusk/relocateflesh/can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() && target.op_stage.dehusk == 1 + +/datum/surgery_step/dehusk/relocateflesh/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] begins to relocate some of [target]'s flesh with \the [tool], using it to fill in gaps.", \ + "You begin to relocate some of [target]'s flesh with \the [tool], using it to fill in gaps.") + ..() + +/datum/surgery_step/dehusk/relocateflesh/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] relocates some of [target]'s flesh with \the [tool], using it to fill in gaps.", \ + "You relocate some of [target]'s flesh with \the [tool], using it to fill in gaps.") + target.op_stage.dehusk = 2 + ..() + +/datum/surgery_step/dehusk/relocateflesh/fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] accidentally rips a massive chunk out of [target]'s flesh with \the [tool], causing massive damage.", \ + "You accidentally rip a massive chunk out of [target]'s flesh with \the [tool], causing massive damage.") + affected.createwound(CUT, 25) + affected.createwound(BRUISE, 10) + ..() + +/datum/surgery_step/dehusk/structfinish + allowed_tools = list( + /obj/item/weapon/surgical/bioregen = 100, \ + /obj/item/weapon/surgical/FixOVein = 30 + ) + min_duration = 90 + max_duration = 120 + +/datum/surgery_step/dehusk/structfinish/can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() && target.op_stage.dehusk == 2 + +/datum/surgery_step/dehusk/structfinish/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if(istype(tool,/obj/item/weapon/surgical/bioregen)) + user.visible_message("[user] begins to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool].", \ + "You begin to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool].") + else if(istype(tool,/obj/item/weapon/surgical/FixOVein)) + user.visible_message("[user] attempts to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool].", \ + "You attempt to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool].") + ..() + +/datum/surgery_step/dehusk/structfinish/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] finishes recreating the missing biological structures and filling in gaps in [target]'s flesh with \the [tool].", \ + "You finish recreating the missing biological structures and filling in gaps in [target]'s flesh with \the [tool].") + target.op_stage.dehusk = 0 + target.mutations.Remove(HUSK) + target.status_flags &= ~DISFIGURED + target.update_icons_body() + ..() + +/datum/surgery_step/dehusk/structfinish/fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + if(istype(tool,/obj/item/weapon/surgical/bioregen)) + user.visible_message("[user]'s hand slips, causing \the [tool] to scrape [target]'s body.", \ + "Your hand slips, causing \the [tool] to scrape [target]'s body.") + else if(istype(tool,/obj/item/weapon/surgical/FixOVein)) + user.visible_message("[user] fails to finish the structure over the gaps in [target]'s flesh, doing more damage than good.", \ + "You fail to finish the structure over the gaps in [target]'s flesh, doing more damage than good.") + affected.createwound(CUT, 15) + affected.createwound(BRUISE, 10) + ..() + +/datum/surgery_step/internal/detoxify + blood_level = 1 + allowed_tools = list(/obj/item/weapon/surgical/bioregen=100) + min_duration = 90 + max_duration = 120 + +/datum/surgery_step/internal/detoxify/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + return ..() && target_zone == BP_TORSO && (target.toxloss > 25 || target.oxyloss > 25) + +/datum/surgery_step/internal/detoxify/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] begins to pull toxins from, and restore oxygen to [target]'s musculature and organs with \the [tool].", \ + "You begin to pull toxins from, and restore oxygen to [target]'s musculature and organs with \the [tool].") + ..() + +/datum/surgery_step/internal/detoxify/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + user.visible_message("[user] finishes pulling toxins from, and restoring oxygen to [target]'s musculature and organs with \the [tool].", \ + "You finish pulling toxins from, and restoring oxygen to [target]'s musculature and organs with \the [tool].") + if(target.toxloss>25) + target.adjustToxLoss(-20) + if(target.oxyloss>25) + target.adjustOxyLoss(-20) + ..() + +/datum/surgery_step/internal/detoxify/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user]'s hand slips, failing to finish the surgery, and damaging [target] with \the [tool].", \ + "Your hand slips, failing to finish the surgery, and damaging [target] with \the [tool].") + affected.createwound(CUT, 15) + affected.createwound(BRUISE, 10) + ..() \ No newline at end of file diff --git a/icons/obj/surgery_vr.dmi b/icons/obj/surgery_vr.dmi index 7984e374c8d1bf45dec18a4a1e7643c0a332f740..4fc6ae4c79fd3dcfc315e20a39e6262b1849dfcc 100644 GIT binary patch literal 6564 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 N9;!T6E>ki`{s$+wiq`-D literal 6069 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 Vb@+kc46Y6jD9NeGmdPLk{s)3}ew+XR diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index 4be0fbcc5e..0ff7b1d11b 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -25023,6 +25023,43 @@ /obj/structure/window/reinforced{ dir = 1 }, +<<<<<<< HEAD +||||||| parent of 30b7ea7639... Merge pull request #10652 from Enzo-Leon/medical +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc{ + name = "south bump"; + pixel_y = -28; + req_access = list(67) + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/borderfloorwhite/corner2, +/obj/effect/floor_decal/corner/paleblue/bordercorner2, +======= +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc{ + name = "south bump"; + nightshift_setting = 0; + pixel_y = -28; + req_access = list(67) + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/borderfloorwhite/corner2, +/obj/effect/floor_decal/corner/paleblue/bordercorner2, +>>>>>>> 30b7ea7639... Merge pull request #10652 from Enzo-Leon/medical /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/uppersouthstairwell) "aPs" = ( From 2108ac7c655448a7e161dc2a58d6506bedca74e9 Mon Sep 17 00:00:00 2001 From: Nadyr <41974248+Darlantanis@users.noreply.github.com> Date: Sat, 19 Jun 2021 21:43:57 -0400 Subject: [PATCH 2/4] powder that makes you say yes --- code/game/objects/items/weapons/surgery_tools_ch.dm | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 code/game/objects/items/weapons/surgery_tools_ch.dm diff --git a/code/game/objects/items/weapons/surgery_tools_ch.dm b/code/game/objects/items/weapons/surgery_tools_ch.dm deleted file mode 100644 index 4d7fae7fa7..0000000000 --- a/code/game/objects/items/weapons/surgery_tools_ch.dm +++ /dev/null @@ -1,6 +0,0 @@ -/obj/item/weapon/surgical/bioregen - name="bioregenerator" - desc="A special tool used in surgeries which can pull toxins from and restore oxygen to organic tissue as well as recreate missing biological structures to allow otherwise irreperable flesh to be mended." - icon='icons/obj/surgery_ch.dmi' - icon_state="bioregen" - drop_sound = 'sound/items/drop/scrap.ogg' \ No newline at end of file From 587cf3cff9eca231779344b2175d71ada2c3228b Mon Sep 17 00:00:00 2001 From: Nadyr <41974248+Darlantanis@users.noreply.github.com> Date: Sat, 19 Jun 2021 21:44:25 -0400 Subject: [PATCH 3/4] powder that makes you say yes --- code/modules/surgery/additions_ch.dm | 149 --------------------------- 1 file changed, 149 deletions(-) delete mode 100644 code/modules/surgery/additions_ch.dm diff --git a/code/modules/surgery/additions_ch.dm b/code/modules/surgery/additions_ch.dm deleted file mode 100644 index b2c603a341..0000000000 --- a/code/modules/surgery/additions_ch.dm +++ /dev/null @@ -1,149 +0,0 @@ -/datum/surgery_status/ - var/dehusk = 0 - -/datum/surgery_step/dehusk/ - priority = 1 - can_infect = 0 - blood_level = 1 - -/datum/surgery_step/dehusk/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - if (!hasorgans(target)) - return 0 - var/obj/item/organ/external/affected = target.get_organ(target_zone) - if (!affected || (affected.robotic >= ORGAN_ROBOT)) - return 0 - if(coverage_check(user,target,affected,tool)) - return 0 - return target_zone == BP_TORSO && (HUSK in target.mutations) - -/datum/surgery_step/dehusk/structinitial - allowed_tools = list( - /obj/item/weapon/surgical/bioregen = 100 - ) - min_duration = 90 - max_duration = 120 - -/datum/surgery_step/dehusk/structinitial/can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && target.op_stage.dehusk == 0 - -/datum/surgery_step/dehusk/structinitial/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] begins to create a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool].", \ - "You begin to create a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool].") - ..() - -/datum/surgery_step/dehusk/structinitial/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] creates a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool].", \ - "You create a fleshy but rigid looking mesh over gaps in [target]'s flesh with \the [tool].") - target.op_stage.dehusk = 1 - ..() - -/datum/surgery_step/dehusk/structinitial/fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user]'s hand slips, and the mesh falls, with \the [tool] scraping [target]'s body.", \ - "Your hand slips, and the mesh falls, with \the [tool] scraping [target]'s body.") - affected.createwound(CUT, 15) - affected.createwound(BRUISE, 10) - ..() - -/datum/surgery_step/dehusk/relocateflesh - allowed_tools = list( - /obj/item/weapon/surgical/hemostat = 100, \ - /obj/item/stack/cable_coil = 75, \ - /obj/item/device/assembly/mousetrap = 20 - ) - min_duration = 90 - max_duration = 120 - -/datum/surgery_step/dehusk/relocateflesh/can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && target.op_stage.dehusk == 1 - -/datum/surgery_step/dehusk/relocateflesh/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] begins to relocate some of [target]'s flesh with \the [tool], using it to fill in gaps.", \ - "You begin to relocate some of [target]'s flesh with \the [tool], using it to fill in gaps.") - ..() - -/datum/surgery_step/dehusk/relocateflesh/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] relocates some of [target]'s flesh with \the [tool], using it to fill in gaps.", \ - "You relocate some of [target]'s flesh with \the [tool], using it to fill in gaps.") - target.op_stage.dehusk = 2 - ..() - -/datum/surgery_step/dehusk/relocateflesh/fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user] accidentally rips a massive chunk out of [target]'s flesh with \the [tool], causing massive damage.", \ - "You accidentally rip a massive chunk out of [target]'s flesh with \the [tool], causing massive damage.") - affected.createwound(CUT, 25) - affected.createwound(BRUISE, 10) - ..() - -/datum/surgery_step/dehusk/structfinish - allowed_tools = list( - /obj/item/weapon/surgical/bioregen = 100, \ - /obj/item/weapon/surgical/FixOVein = 30 - ) - min_duration = 90 - max_duration = 120 - -/datum/surgery_step/dehusk/structfinish/can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && target.op_stage.dehusk == 2 - -/datum/surgery_step/dehusk/structfinish/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - if(istype(tool,/obj/item/weapon/surgical/bioregen)) - user.visible_message("[user] begins to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool].", \ - "You begin to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool].") - else if(istype(tool,/obj/item/weapon/surgical/FixOVein)) - user.visible_message("[user] attempts to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool].", \ - "You attempt to recreate blood vessels and fill in the gaps in [target]'s flesh with \the [tool].") - ..() - -/datum/surgery_step/dehusk/structfinish/end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] finishes recreating the missing biological structures and filling in gaps in [target]'s flesh with \the [tool].", \ - "You finish recreating the missing biological structures and filling in gaps in [target]'s flesh with \the [tool].") - target.op_stage.dehusk = 0 - target.mutations.Remove(HUSK) - target.status_flags &= ~DISFIGURED - target.update_icons_body() - ..() - -/datum/surgery_step/dehusk/structfinish/fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - if(istype(tool,/obj/item/weapon/surgical/bioregen)) - user.visible_message("[user]'s hand slips, causing \the [tool] to scrape [target]'s body.", \ - "Your hand slips, causing \the [tool] to scrape [target]'s body.") - else if(istype(tool,/obj/item/weapon/surgical/FixOVein)) - user.visible_message("[user] fails to finish the structure over the gaps in [target]'s flesh, doing more damage than good.", \ - "You fail to finish the structure over the gaps in [target]'s flesh, doing more damage than good.") - affected.createwound(CUT, 15) - affected.createwound(BRUISE, 10) - ..() - -/datum/surgery_step/internal/detoxify - blood_level = 1 - allowed_tools = list(/obj/item/weapon/surgical/bioregen=100) - min_duration = 90 - max_duration = 120 - -/datum/surgery_step/internal/detoxify/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && target_zone == BP_TORSO && (target.toxloss > 25 || target.oxyloss > 25) - -/datum/surgery_step/internal/detoxify/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] begins to pull toxins from, and restore oxygen to [target]'s musculature and organs with \the [tool].", \ - "You begin to pull toxins from, and restore oxygen to [target]'s musculature and organs with \the [tool].") - ..() - -/datum/surgery_step/internal/detoxify/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] finishes pulling toxins from, and restoring oxygen to [target]'s musculature and organs with \the [tool].", \ - "You finish pulling toxins from, and restoring oxygen to [target]'s musculature and organs with \the [tool].") - if(target.toxloss>25) - target.adjustToxLoss(-20) - if(target.oxyloss>25) - target.adjustOxyLoss(-20) - ..() - -/datum/surgery_step/internal/detoxify/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/obj/item/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user]'s hand slips, failing to finish the surgery, and damaging [target] with \the [tool].", \ - "Your hand slips, failing to finish the surgery, and damaging [target] with \the [tool].") - affected.createwound(CUT, 15) - affected.createwound(BRUISE, 10) - ..() \ No newline at end of file From 29ef8f7fbe88893f7aa23a697e8d039db57425e0 Mon Sep 17 00:00:00 2001 From: Nadyr <41974248+Darlantanis@users.noreply.github.com> Date: Sat, 19 Jun 2021 21:45:08 -0400 Subject: [PATCH 4/4] powder that makes you say yes --- vorestation.dme | 2 -- 1 file changed, 2 deletions(-) diff --git a/vorestation.dme b/vorestation.dme index 69a98f066d..6c5e4346e3 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1344,7 +1344,6 @@ #include "code\game\objects\items\weapons\shields_vr.dm" #include "code\game\objects\items\weapons\stunbaton.dm" #include "code\game\objects\items\weapons\surgery_tools.dm" -#include "code\game\objects\items\weapons\surgery_tools_ch.dm" #include "code\game\objects\items\weapons\swords_axes_etc.dm" #include "code\game\objects\items\weapons\syndie.dm" #include "code\game\objects\items\weapons\tape.dm" @@ -4032,7 +4031,6 @@ #include "code\modules\spells\targeted\projectile\magic_missile.dm" #include "code\modules\spells\targeted\projectile\projectile.dm" #include "code\modules\surgery\_defines.dm" -#include "code\modules\surgery\additions_ch.dm" #include "code\modules\surgery\bones.dm" #include "code\modules\surgery\encased.dm" #include "code\modules\surgery\external_repair.dm"