mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-22 23:15:13 +00:00
* Mirror logging for brainwashing and hypnosis in the player panel and attack logs. (#56515) Hypnosis and brainwashing now have entries in the Player Panel logging under attack and entries in the attack logs. Mirrors some logging that would otherwise just be in the game logs. From an admin-perspective, issues where you'd want to check brainwashing/hypnosis tend to go hand-in-hand with issues relating to attack logs as opposed to game logs. * Mirror logging for brainwashing and hypnosis in the player panel and attack logs. Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
69 lines
3.9 KiB
Plaintext
69 lines
3.9 KiB
Plaintext
/obj/item/disk/surgery/brainwashing
|
|
name = "Brainwashing Surgery Disk"
|
|
desc = "The disk provides instructions on how to impress an order on a brain, making it the primary objective of the patient."
|
|
surgeries = list(/datum/surgery/advanced/brainwashing)
|
|
|
|
/datum/surgery/advanced/brainwashing
|
|
name = "Brainwashing"
|
|
desc = "A surgical procedure which directly implants a directive into the patient's brain, making it their absolute priority. It can be cleared using a mindshield implant."
|
|
steps = list(
|
|
/datum/surgery_step/incise,
|
|
/datum/surgery_step/retract_skin,
|
|
/datum/surgery_step/saw,
|
|
/datum/surgery_step/clamp_bleeders,
|
|
/datum/surgery_step/brainwash,
|
|
/datum/surgery_step/close)
|
|
|
|
target_mobtypes = list(/mob/living/carbon/human)
|
|
possible_locs = list(BODY_ZONE_HEAD)
|
|
|
|
/datum/surgery/advanced/brainwashing/can_start(mob/user, mob/living/carbon/target)
|
|
if(!..())
|
|
return FALSE
|
|
var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN)
|
|
if(!B)
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/datum/surgery_step/brainwash
|
|
name = "brainwash"
|
|
implements = list(TOOL_HEMOSTAT = 85, TOOL_WIRECUTTER = 50, /obj/item/stack/package_wrap = 35, /obj/item/stack/cable_coil = 15)
|
|
time = 200
|
|
var/objective
|
|
|
|
/datum/surgery_step/brainwash/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
|
objective = stripped_input(user, "Choose the objective to imprint on your victim's brain.", "Brainwashing", null, MAX_MESSAGE_LEN)
|
|
if(!objective)
|
|
return -1
|
|
display_results(user, target, "<span class='notice'>You begin to brainwash [target]...</span>",
|
|
"<span class='notice'>[user] begins to fix [target]'s brain.</span>",
|
|
"<span class='notice'>[user] begins to perform surgery on [target]'s brain.</span>")
|
|
|
|
/datum/surgery_step/brainwash/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
|
if(!target.mind)
|
|
to_chat(user, "<span class='warning'>[target] doesn't respond to the brainwashing, as if [target.p_they()] lacked a mind...</span>")
|
|
return FALSE
|
|
if(HAS_TRAIT(target, TRAIT_MINDSHIELD))
|
|
to_chat(user, "<span class='warning'>You hear a faint buzzing from a device inside [target]'s brain, and the brainwashing is erased.</span>")
|
|
return FALSE
|
|
display_results(user, target, "<span class='notice'>You succeed in brainwashing [target].</span>",
|
|
"<span class='notice'>[user] successfully fixes [target]'s brain!</span>",
|
|
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
|
to_chat(target, "<span class='userdanger'>A new compulsion fills your mind... you feel forced to obey it!</span>")
|
|
brainwash(target, objective)
|
|
message_admins("[ADMIN_LOOKUPFLW(user)] surgically brainwashed [ADMIN_LOOKUPFLW(target)] with the objective '[objective]'.")
|
|
target.log_message("has been brainwashed with the objective '[objective]' by [key_name(user)] using brainwashing surgery.", LOG_ATTACK)
|
|
user.log_message("has brainwashed [key_name(target)] with the objective '[objective]' using brainwashing surgery.", LOG_ATTACK, log_globally = FALSE)
|
|
log_game("[key_name(user)] surgically brainwashed [key_name(target)] with the objective '[objective]'.")
|
|
return ..()
|
|
|
|
/datum/surgery_step/brainwash/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
|
if(target.getorganslot(ORGAN_SLOT_BRAIN))
|
|
display_results(user, target, "<span class='warning'>You screw up, bruising the brain tissue!</span>",
|
|
"<span class='warning'>[user] screws up, causing brain damage!</span>",
|
|
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
|
|
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 40)
|
|
else
|
|
user.visible_message("<span class='warning'>[user] suddenly notices that the brain [user.p_they()] [user.p_were()] working on is not there anymore.</span>", "<span class='warning'>You suddenly notice that the brain you were working on is not there anymore.</span>")
|
|
return FALSE
|