Files
Bubberstation/code/datums/brain_damage/hypnosis.dm
SkyratBot 84d003b4ab [MIRROR] more span macro changes in brain traumas and disease files [MDB IGNORE] (#19226)
* more span macro changes in brain traumas and disease files (#73273)

## About The Pull Request

i was fucking around with brain traumas on a downstream and noticed they
had similar issues to quirks so i decided to continue work from #73116

![Code_Klx14O288V](https://user-images.githubusercontent.com/116288367/217046732-765ffe27-73c9-416a-833e-e0d9e2aa7a86.png)
(search in VSC for span class = 'notice')
its going to be a bit of a thing to get all of these but this is a
decent chunk i think

there was only one annoying/tough file.
imaginary_friend.dm had class = 'game say' and class = 'emote' both of
which after some testing did not seem like they did anything. ill try to
keep that in mind in other files if i continue to do this but i either
omitted them because they didnt have any formatting or, in the case of
emote, turned it into name, which i think is what you'd want those
messages to look like.

there were also a few small spelling errors that i fixed

## Why It's Good For The Game

more consistent and stops people from copying brain trauma formatting
wrong

## Changelog

they should all work the same

---------

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

* more span macro changes in brain traumas and disease files

---------

Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-02-08 02:16:41 +00:00

77 lines
3.4 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
/// Associated antag datum, used for displaying objectives and antag hud
var/datum/antagonist/hypnotized/antagonist
var/hypnotic_phrase = ""
var/regex/target_phrase
/datum/brain_trauma/hypnosis/New(phrase)
if(!phrase)
qdel(src)
return
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]'.")
owner.log_message("was hypnotized with the phrase '[hypnotic_phrase]'.", LOG_GAME)
to_chat(owner, span_reallybig(span_hypnophrase("[hypnotic_phrase]")))
to_chat(owner, span_notice("[pick(list(
"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.",
"You feel a part of your mind repeating this over and over. You need to follow these words.",
"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.",
))]"))
to_chat(owner, span_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."))
var/atom/movable/screen/alert/hypnosis/hypno_alert = owner.throw_alert(ALERT_HYPNOSIS, /atom/movable/screen/alert/hypnosis)
owner.mind.add_antag_datum(/datum/antagonist/hypnotized)
antagonist = owner.mind.has_antag_datum(/datum/antagonist/hypnotized)
antagonist.trauma = src
// Add the phrase to objectives
var/datum/objective/fixation = new ()
fixation.explanation_text = hypnotic_phrase
fixation.completed = TRUE
antagonist.objectives = list(fixation)
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]'.")
owner.log_message("is no longer hypnotized with the phrase '[hypnotic_phrase]'.", LOG_GAME)
to_chat(owner, span_userdanger("You suddenly snap out of your hypnosis. The phrase '[hypnotic_phrase]' no longer feels important to you."))
owner.clear_alert(ALERT_HYPNOSIS)
..()
owner.mind.remove_antag_datum(/datum/antagonist/hypnotized)
/datum/brain_trauma/hypnosis/on_life(delta_time, times_fired)
..()
if(DT_PROB(1, delta_time))
if(prob(50))
to_chat(owner, span_hypnophrase("<i>...[lowertext(hypnotic_phrase)]...</i>"))
else
owner.cause_hallucination( \
/datum/hallucination/chat, \
"hypnosis", \
force_radio = TRUE, \
specific_message = span_hypnophrase("[hypnotic_phrase]"), \
)
/datum/brain_trauma/hypnosis/handle_hearing(datum/source, list/hearing_args)
if(!owner.can_hear() || owner == hearing_args[HEARING_SPEAKER])
return
hearing_args[HEARING_RAW_MESSAGE] = target_phrase.Replace(hearing_args[HEARING_RAW_MESSAGE], span_hypnophrase("$1"))