diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index 47e2c5ff06c..3aa13fbbac9 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -81,8 +81,8 @@ proc/build_surgery_steps_list() 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] clapms bleeders in the wound in [target]'s [affected.display_name] with \the [tool]", \ - "\blue You clapm bleeders in [user]'s [affected.display_name] with \the [tool]") + user.visible_message("\blue [user] clamps bleeders in the wound in [target]'s [affected.display_name] with \the [tool]", \ + "\blue You clamp bleeders in [user]'s [affected.display_name] with \the [tool]") affected.bandage() fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -152,21 +152,23 @@ proc/build_surgery_steps_list() can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/groin = target.get_organ("groin") - return target_zone == "groin" && groin.open == 2 && !(/datum/disease/appendicitis/ in target.resistances) + return target_zone == "groin" && groin.open == 2 && groin:appendictomy_stage == 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]") end_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("\blue [user] cuts out [target]'s appendix with \the [tool]", \ "\blue You cut out [user]'s appendix with \the [tool]") + groin:appendictomy_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) + var/datum/organ/external/groin = target.get_organ("groin") user.visible_message("\red [user]'s hand slips, slicing artery inside [target]'s abdomen with \the [tool]!", \ "\red Your hand slips, slicing artery inside [target]'s abdomen with \the [tool]!") - affected.createwound(CUT, 50) + groin.createwound(CUT, 50) /datum/surgery_step/remove_appendix required_tool = /obj/item/weapon/hemostat @@ -176,22 +178,88 @@ proc/build_surgery_steps_list() can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/groin = target.get_organ("groin") - return target_zone == "groin" && groin.open == 2 + return target_zone == "groin" && groin.open == 2 && groin:appendictomy_stage == 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 removing [user]'s appendix with \the [tool]") + "You start removing [user]'s appendix with \the [tool]") end_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("\blue [user] removes [target]'s appendix with \the [tool]", \ "\blue You remove [user]'s appendix with \the [tool]") + var/datum/disease/appendicitis/app = null for(var/datum/disease/appendicitis/appendicitis in target.viruses) - new /obj/item/weapon/reagent_containers/food/snacks/appendix/inflamed(get_turf(target)) + app = appendicitis appendicitis.cure() - target.resistances += appendicitis + if (app) + new /obj/item/weapon/reagent_containers/food/snacks/appendix/inflamed(get_turf(target)) + else + new /obj/item/weapon/reagent_containers/food/snacks/appendix(get_turf(target)) + target.resistances += app + groin:appendictomy_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, hitting internal organs in [target]'s abdomen with \the [tool]!", \ "\red Your hand slips, hitting internal organs in [target]'s abdomen with \the [tool]!") affected.createwound(BRUISE, 20) + +/datum/surgery_step/glue_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 < 3 + + 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]") + + 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 + + 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 [user]'s [affected.display_name]!") + +/datum/surgery_step/set_bone + 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.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 [user]'s [target_zone] bone 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 [user]'s [affected.display_name] bone in 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 wrong place with \the [tool]!", \ + "\red Your hand slips, setting [user]'s [affected.display_name] in wrong place with \the [tool]!") + affected.createwound(BRUISE, 5) + diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index aba465b3a14..c9f864fbc77 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -187,6 +187,7 @@ proc/bandage() status |= ORGAN_BANDAGED + status &= ~ORGAN_BLEEDING for(var/datum/wound/W in wounds) W.bandaged = 1 @@ -466,6 +467,7 @@ max_damage = 115 min_broken_damage = 70 body_part = LOWER_TORSO + var/appendictomy_stage = 0 /datum/organ/external/head name = "head" diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index d369597275c..1d34a8c1657 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -578,3 +578,13 @@ return ..() */ return + +/obj/item/weapon/bonegel + name = "bone gel" + icon = 'surgery.dmi' + icon_state = "bone-gel" + +/obj/item/weapon/bonesetter + name = "bone setter" + icon = 'surgery.dmi' + icon_state = "bone setter" \ No newline at end of file diff --git a/config/admins.txt b/config/admins.txt index 8e13eba12da..2fee6c8b419 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -1,26 +1 @@ -abi79 - Game Master -arcalane - Game Admin -bobbehluvspropane - Game Admin -cacophony - Game Admin -cajoes - Game Admin -cib - Retired Admin -compactninja - Retired Admin -duntadaman - Game Admin -dysthymia - Retired Admin -doughnuts - Game Admin -erthilo - Game Master -hawkv3 - Game Master -headswe - Game Master -iaryni - Game Master -masterofapples - Game Admin -megacaesar - Retired Admin -miniature - Game Master -misterbook - Game Admin -misterfox - Game Admin -mloc - Game Master -skymarshal - Retired Admin -spaceman96 - Retired Admin -strumpetplaya - Retired Admin -tastyfish - Retired Admin -uristqwerty - Game Master -wrongnumber - Game Admin +chinsky - Game Master diff --git a/config/game_options.txt b/config/game_options.txt index b8a6b52d488..211e6d0b78b 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -8,7 +8,7 @@ HEALTH_THRESHOLD_DEAD -100 ## Determines whether bones can be broken through excessive damage to the organ ## 0 means bones can't break, 1 means they can -BONES_CAN_BREAK 0 +BONES_CAN_BREAK 1 ## Determines whether limbs can be amputated through excessive damage to the organ ## 0 means limbs can't be amputated, 1 means they can LIMBS_CAN_BREAK 0 diff --git a/config/moderators.txt b/config/moderators.txt index 1eae19909d2..4e25b55e199 100644 --- a/config/moderators.txt +++ b/config/moderators.txt @@ -3,7 +3,6 @@ asanadas botanistpower bowlsoldier -chinsky cubejackal dakonic densane