Files
Bubberstation/code/modules/surgery/amputation.dm
lizardqueenlexi 588779256e Surgery computers tell which tool to use. (#70973)
## About The Pull Request


![image](https://user-images.githubusercontent.com/105025397/199194075-d1a3b42a-5c2e-4a02-84d1-84b4be2b601b.png)

All surgery step names, displayed in the surgical computer, will now
show which tool to use for that step in parentheses. In cases where
multiple tools have a 100% success chance, all are listed; if no tool
has a 100% chance then the "correct" one is shown.

Surgery computers will never display "alternate" tools for surgeries
(those with a lower success chance), but this shouldn't be a problem.
Surgical computers are _usually_ in places with surgical tools at hand,
and NanoTrasen wouldn't want to encourage doing brain surgery with a
screwdriver. Y'know, probably.
## Why It's Good For The Game

Firstly, this change is particularly helpful to new players. If you have
little experience with surgery, it's not always clear which tool you're
meant to use for which step. This is especially true for some of the
odder surgeries - if you didn't already know, it's not clear at all that
"brainwash" means "use a hemostat". While there are certainly guides on
the wiki, it's nice to have as much information provided in-game as
possible.

Secondly, this change brings consistency. A _small_ number of surgical
steps (healing broken bones, namely) already do this! I see no reason
why this shouldn't be extended to the remaining surgical steps,
especially because it's not particularly obtrusive to the surgery
computer interface.
## Changelog
🆑
qol: Made surgical computers tell you what tool to use for the current
surgical step.
/🆑

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-04 01:00:12 -07:00

46 lines
1.9 KiB
Plaintext

/datum/surgery/amputation
name = "Amputation"
steps = list(
/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/saw,
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/sever_limb)
target_mobtypes = list(/mob/living/carbon/human)
possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD)
requires_bodypart_type = 0
/datum/surgery_step/sever_limb
name = "sever limb (circular saw)"
implements = list(
/obj/item/shears = 300,
TOOL_SCALPEL = 100,
TOOL_SAW = 100,
/obj/item/melee/arm_blade = 80,
/obj/item/fireaxe = 50,
/obj/item/hatchet = 40,
/obj/item/knife/butcher = 25)
time = 64
preop_sound = 'sound/surgery/scalpel1.ogg'
success_sound = 'sound/surgery/organ2.ogg'
/datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, span_notice("You begin to sever [target]'s [parse_zone(target_zone)]..."),
span_notice("[user] begins to sever [target]'s [parse_zone(target_zone)]!"),
span_notice("[user] begins to sever [target]'s [parse_zone(target_zone)]!"))
display_pain(target, "You feel a gruesome pain in your [parse_zone(target_zone)]'s joint!")
/datum/surgery_step/sever_limb/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, span_notice("You sever [target]'s [parse_zone(target_zone)]."),
span_notice("[user] severs [target]'s [parse_zone(target_zone)]!"),
span_notice("[user] severs [target]'s [parse_zone(target_zone)]!"))
display_pain(target, "You can no longer feel your severed [parse_zone(target_zone)]!")
if(surgery.operated_bodypart)
var/obj/item/bodypart/target_limb = surgery.operated_bodypart
target_limb.drop_limb()
return ..()