Files
Bubberstation/code/modules/surgery/autopsy.dm
Bloop a9c80a29a3 [MISSED MIRROR] Implements a macro for checking mind traits (#76548) (#22447)
* Implements a macro for checking mind traits (#76548)

![image](https://github.com/tgstation/tgstation/assets/82850673/f85d0556-1806-40bf-92b8-597e46ccb4af)
Seeing this pattern repeated over various sections of code was starting
to piss me off

Lessens chance to cause errors with mind traits, ensures consistent
behavior, makes it easier to change how mind traits work if necessary.

hopefully not player facing

---------

Co-authored-by: san7890 <the@san7890.com>

* modular stuff

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2023-07-18 21:32:47 -04:00

53 lines
1.9 KiB
Plaintext

/datum/surgery/autopsy
name = "Autopsy"
surgery_flags = SURGERY_IGNORE_CLOTHES | SURGERY_REQUIRE_RESTING | SURGERY_REQUIRE_LIMB | SURGERY_MORBID_CURIOSITY
possible_locs = list(BODY_ZONE_CHEST)
steps = list(
/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
/datum/surgery_step/autopsy,
/datum/surgery_step/close,
)
/datum/surgery/autopsy/can_start(mob/user, mob/living/patient)
. = ..()
if(patient.stat != DEAD)
return FALSE
if(HAS_TRAIT(patient, TRAIT_DISSECTED))
return FALSE
return TRUE
/datum/surgery_step/autopsy
name = "Perform Autopsy (autopsy scanner)"
implements = list(/obj/item/autopsy_scanner = 100)
time = 10 SECONDS
success_sound = 'sound/machines/printer.ogg'
/datum/surgery_step/autopsy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
span_notice("You begins performing an autopsy on [target]..."),
span_notice("[user] uses [tool] to perform an autopsy on [target]."),
span_notice("[user] uses [tool] on [target]'s chest."),
)
display_pain(target, "You feel a burning sensation in your chest!")
/datum/surgery_step/autopsy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/autopsy_scanner/tool, datum/surgery/surgery, default_display_results = FALSE)
ADD_TRAIT(target, TRAIT_DISSECTED, REF(src))
tool.scan_cadaver(user, target)
if(HAS_MIND_TRAIT(user, TRAIT_MORBID) && ishuman(user))
var/mob/living/carbon/human/morbid_weirdo = user
morbid_weirdo.add_mood_event("morbid_dissection_success", /datum/mood_event/morbid_dissection_success)
return ..()
/datum/surgery_step/autopsy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
span_warning("You screw up, bruising [target]'s chest!"),
span_warning("[user] screws up, brusing [target]'s chest!"),
span_warning("[user] screws up!"),
)
target.adjustBruteLoss(5)