mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-02-05 22:09:05 +00:00
About The Pull Request Adds the Enhanced Interrogation Chamber as a BEPIS reward. This security-only machine is able to implant a deep-rooted trigger phrase onto a subject; if they hear that phrase after the procedure, they will immediately enter a state of hypnotic trance, which can be used to demand truthful answers for your ongoing investigation. The enslavement of criminal and non-criminal subjects is frowned upon by space law. Do not abuse the Enhanced Interrogation Chamber for personal gain. Bad choice or mishandling of trigger words may lead to loss of control over the subject. Side effects include dizziness, nausea, confusion, vomit, loss of eyesight, violent tendencies, loss of sanity, depression, oppression, loss of free will, spontaneous hypnotic trance, loss of hair, death. Use with care. Why It's Good For The Game Make your own Manchurian Candidate! Allows "rehabilitation" of dangerous criminals by security, which is more interesting than straight-up execution. Could lead to fun situations if a team antag is caught and forced to be a mole. It could also be used by any antag who manages to get to the sec protolathe. However, the "conversion" is still shaky! The main cure is surgery, as the triggered trance is effectively just a brain trauma, healable with surgery. On top of this, even if the subject is unable to hear their trigger phrase, if someone else knows it they can override commands at any time. Even if that doesn't happen, it's possible that another message sneaks in before you can give your command, intercepting the hypnosis. On top of this, the chamber has a 10% chance of giving the hypnotic stupor trauma instead of the triggered trance, making the subject even more of a wildcard. Effectively, this is a very powerful tool in the antag-vs-security conflict, but over-reliance on it will probably bite back in amusing ways. Changelog cl add: Added the Enhanced Interrogation Chamber as a BEPIS researchable tech. add: The EIC can be used to implant trigger phrases in subjects that cause an instant hypnotic trance. /cl
56 lines
2.8 KiB
Plaintext
56 lines
2.8 KiB
Plaintext
/datum/brain_trauma/hypnosis
|
|
name = "Hypnosis"
|
|
desc = "Patient's unconscious is completely enthralled by a word or sentence, focusing their thoughts and actions on it."
|
|
scan_desc = "looping thought pattern"
|
|
gain_text = ""
|
|
lose_text = ""
|
|
resilience = TRAUMA_RESILIENCE_SURGERY
|
|
|
|
var/hypnotic_phrase = ""
|
|
var/regex/target_phrase
|
|
|
|
/datum/brain_trauma/hypnosis/New(phrase)
|
|
if(!phrase)
|
|
qdel(src)
|
|
hypnotic_phrase = phrase
|
|
try
|
|
target_phrase = new("(\\b[REGEX_QUOTE(hypnotic_phrase)]\\b)","ig")
|
|
catch(var/exception/e)
|
|
stack_trace("[e] on [e.file]:[e.line]")
|
|
qdel(src)
|
|
..()
|
|
|
|
/datum/brain_trauma/hypnosis/on_gain()
|
|
message_admins("[ADMIN_LOOKUPFLW(owner)] was hypnotized with the phrase '[hypnotic_phrase]'.")
|
|
log_game("[key_name(owner)] was hypnotized with the phrase '[hypnotic_phrase]'.")
|
|
to_chat(owner, "<span class='reallybig hypnophrase'>[hypnotic_phrase]</span>")
|
|
to_chat(owner, "<span class='notice'>[pick("You feel your thoughts focusing on this phrase... you can't seem to get it out of your head.",\
|
|
"Your head hurts, but this is all you can think of. It must be vitally important.",\
|
|
"You feel a part of your mind repeating this over and over. You need to follow these words.",\
|
|
"Something about this sounds... right, for some reason. You feel like you should follow these words.",\
|
|
"These words keep echoing in your mind. You find yourself completely fascinated by them.")]</span>")
|
|
to_chat(owner, "<span class='boldwarning'>You've been hypnotized by this sentence. You must follow these words. If it isn't a clear order, you can freely interpret how to do so,\
|
|
as long as you act like the words are your highest priority.</span>")
|
|
var/obj/screen/alert/hypnosis/hypno_alert = owner.throw_alert("hypnosis", /obj/screen/alert/hypnosis)
|
|
hypno_alert.desc = "\"[hypnotic_phrase]\"... your mind seems to be fixated on this concept."
|
|
..()
|
|
|
|
/datum/brain_trauma/hypnosis/on_lose()
|
|
message_admins("[ADMIN_LOOKUPFLW(owner)] is no longer hypnotized with the phrase '[hypnotic_phrase]'.")
|
|
log_game("[key_name(owner)] is no longer hypnotized with the phrase '[hypnotic_phrase]'.")
|
|
to_chat(owner, "<span class='userdanger'>You suddenly snap out of your hypnosis. The phrase '[hypnotic_phrase]' no longer feels important to you.</span>")
|
|
owner.clear_alert("hypnosis")
|
|
..()
|
|
|
|
/datum/brain_trauma/hypnosis/on_life()
|
|
..()
|
|
if(prob(2))
|
|
switch(rand(1,2))
|
|
if(1)
|
|
to_chat(owner, "<span class='hypnophrase'><i>...[lowertext(hypnotic_phrase)]...</i></span>")
|
|
if(2)
|
|
new /datum/hallucination/chat(owner, TRUE, FALSE, "<span class='hypnophrase'>[hypnotic_phrase]</span>")
|
|
|
|
/datum/brain_trauma/hypnosis/handle_hearing(datum/source, list/hearing_args)
|
|
hearing_args[HEARING_RAW_MESSAGE] = target_phrase.Replace(hearing_args[HEARING_RAW_MESSAGE], "<span class='hypnophrase'>$1</span>")
|