mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-30 11:32:20 +00:00
About The Pull Request Part of #44440 Surgery now gives detailed description to the surgeon and anyone within one tile of distance, and more vague or ambiguous descriptions to the patient and anyone further away. This can lead to a surgeon being able to perform a brainwashing in place of a brain surgery with nobody being the wiser, or implanting a different organ than the one agreed on, and so on. Changelog cl add: Surgery steps are now shown in detail only to the surgeon and anyone standing adjacent to them; the patient and people watching from further away get a more vague/ambiguous description. /cl
49 lines
2.2 KiB
Plaintext
49 lines
2.2 KiB
Plaintext
/datum/surgery/embedded_removal
|
|
name = "Removal of embedded objects"
|
|
steps = list(/datum/surgery_step/incise, /datum/surgery_step/remove_object)
|
|
possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD)
|
|
|
|
|
|
/datum/surgery_step/remove_object
|
|
name = "remove embedded objects"
|
|
time = 32
|
|
accept_hand = 1
|
|
var/obj/item/bodypart/L = null
|
|
|
|
|
|
/datum/surgery_step/remove_object/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
|
L = surgery.operated_bodypart
|
|
if(L)
|
|
user.visible_message("[user] looks for objects embedded in [target]'s [parse_zone(user.zone_selected)].", "<span class='notice'>You look for objects embedded in [target]'s [parse_zone(user.zone_selected)]...</span>")
|
|
display_results(user, target, "<span class='notice'>You look for objects embedded in [target]'s [parse_zone(user.zone_selected)]...</span>",
|
|
"[user] looks for objects embedded in [target]'s [parse_zone(user.zone_selected)].",
|
|
"[user] looks for something in [target]'s [parse_zone(user.zone_selected)].")
|
|
else
|
|
user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_selected)].", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
|
|
|
|
|
|
/datum/surgery_step/remove_object/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
|
if(L)
|
|
if(ishuman(target))
|
|
var/mob/living/carbon/human/H = target
|
|
var/objects = 0
|
|
for(var/obj/item/I in L.embedded_objects)
|
|
objects++
|
|
I.forceMove(get_turf(H))
|
|
L.embedded_objects -= I
|
|
if(!H.has_embedded_objects())
|
|
H.clear_alert("embeddedobject")
|
|
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "embedded")
|
|
|
|
if(objects > 0)
|
|
display_results(user, target, "<span class='notice'>You successfully remove [objects] objects from [H]'s [L.name].</span>",
|
|
"[user] successfully removes [objects] objects from [H]'s [L]!",
|
|
"[user] successfully removes [objects] objects from [H]'s [L]!")
|
|
else
|
|
to_chat(user, "<span class='warning'>You find no objects embedded in [H]'s [L]!</span>")
|
|
|
|
else
|
|
to_chat(user, "<span class='warning'>You can't find [target]'s [parse_zone(user.zone_selected)], let alone any objects embedded in it!</span>")
|
|
|
|
return 1
|