mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 01:34:01 +00:00
Creep fluff completely rewritten (#42675)
* hang in there! * Apply suggestions from code review - rewrite P1 Co-Authored-By: tralezab <40974010+tralezab@users.noreply.github.com> * most creep > obsessed - rewrite P2 * removes creep_inlove, last edit to greet
This commit is contained in:
@@ -58,7 +58,7 @@
|
||||
#define ANTAG_HUD_CLOCKWORK 22
|
||||
#define ANTAG_HUD_BROTHER 23
|
||||
#define ANTAG_HUD_HIVE 24
|
||||
#define ANTAG_HUD_CREEP 25
|
||||
#define ANTAG_HUD_OBSESSED 25
|
||||
|
||||
// Notification action types
|
||||
#define NOTIFY_JUMP "jump"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
#define ROLE_BRAINWASHED "Brainwashed Victim"
|
||||
#define ROLE_OVERTHROW "Syndicate Mutineer"
|
||||
#define ROLE_HIVE "Hivemind Host"
|
||||
#define ROLE_CREEP "Creep"
|
||||
#define ROLE_OBSESSED "Obsessed"
|
||||
#define ROLE_SENTIENCE "Sentience Potion Spawn"
|
||||
#define ROLE_MIND_TRANSFER "Mind Transfer Potion"
|
||||
#define ROLE_POSIBRAIN "Posibrain"
|
||||
@@ -53,7 +53,7 @@ GLOBAL_LIST_INIT(special_roles, list(
|
||||
ROLE_CULTIST = /datum/game_mode/cult,
|
||||
ROLE_BLOB,
|
||||
ROLE_NINJA,
|
||||
ROLE_CREEP,
|
||||
ROLE_OBSESSED,
|
||||
ROLE_MONKEY = /datum/game_mode/monkey,
|
||||
ROLE_REVENANT,
|
||||
ROLE_ABDUCTOR,
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
#define STATUS_EFFECT_GOOD_MUSIC /datum/status_effect/good_music
|
||||
|
||||
#define STATUS_EFFECT_REGENERATIVE_CORE /datum/status_effect/regenerative_core
|
||||
#define STATUS_EFFECT_CREEP /datum/status_effect/creep //you feel fuckin great around your obsession
|
||||
|
||||
/////////////
|
||||
// DEBUFFS //
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
/datum/brain_trauma/special/creep
|
||||
name = "Erotomania"
|
||||
/datum/brain_trauma/special/obsessed
|
||||
name = "Psychotic Schizophrenia"
|
||||
desc = "Patient has a subtype of delusional disorder, becoming irrationally attached to someone."
|
||||
scan_desc = "erotomaniac delusions"
|
||||
scan_desc = "psychotic schizophrenic delusions"
|
||||
gain_text = "If you see this message, make a github issue report. The trauma initialized wrong."
|
||||
lose_text = "<span class='warning'>You no longer feel so attached.</span>"
|
||||
lose_text = "<span class='warning'>The voices in your head fall silent.</span>"
|
||||
can_gain = TRUE
|
||||
random_gain = FALSE
|
||||
resilience = TRAUMA_RESILIENCE_SURGERY
|
||||
var/mob/living/obsession
|
||||
var/datum/objective/spendtime/attachedcreepobj
|
||||
var/datum/antagonist/creep/antagonist
|
||||
var/datum/objective/spendtime/attachedobsessedobj
|
||||
var/datum/antagonist/obsessed/antagonist
|
||||
var/viewing = FALSE //it's a lot better to store if the owner is watching the obsession than checking it twice between two procs
|
||||
|
||||
var/total_time_creeping = 0 //just for roundend fun
|
||||
var/time_spent_away = 0
|
||||
var/obsession_hug_count = 0
|
||||
|
||||
/datum/brain_trauma/special/creep/on_gain()
|
||||
/datum/brain_trauma/special/obsessed/on_gain()
|
||||
|
||||
//setup, linking, etc//
|
||||
if(!obsession)//admins didn't set one
|
||||
@@ -24,17 +24,16 @@
|
||||
if(!obsession)//we didn't find one
|
||||
lose_text = ""
|
||||
qdel(src)
|
||||
gain_text = "<span class='warning'>You feel a strange attachment to [obsession].</span>"
|
||||
owner.apply_status_effect(STATUS_EFFECT_INLOVE, obsession)
|
||||
owner.mind.add_antag_datum(/datum/antagonist/creep)
|
||||
antagonist = owner.mind.has_antag_datum(/datum/antagonist/creep)
|
||||
gain_text = "<span class='warning'>You hear a sickening, raspy voice in your head. It wants one small task of you...</span>"
|
||||
owner.mind.add_antag_datum(/datum/antagonist/obsessed)
|
||||
antagonist = owner.mind.has_antag_datum(/datum/antagonist/obsessed)
|
||||
antagonist.trauma = src
|
||||
..()
|
||||
//antag stuff//
|
||||
antagonist.forge_objectives(obsession.mind)
|
||||
antagonist.greet()
|
||||
|
||||
/datum/brain_trauma/special/creep/on_life()
|
||||
/datum/brain_trauma/special/obsessed/on_life()
|
||||
if(!obsession || obsession.stat == DEAD)
|
||||
viewing = FALSE//important, makes sure you no longer stutter when happy if you murdered them while viewing
|
||||
return
|
||||
@@ -50,12 +49,12 @@
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "creeping", /datum/mood_event/creeping, obsession.name)
|
||||
total_time_creeping += 20
|
||||
time_spent_away = 0
|
||||
if(attachedcreepobj)//if an objective needs to tick down, we can do that since traumas coexist with the antagonist datum
|
||||
attachedcreepobj.timer -= 20 //mob subsystem ticks every 2 seconds(?), remove 20 deciseconds from the timer. sure, that makes sense.
|
||||
if(attachedobsessedobj)//if an objective needs to tick down, we can do that since traumas coexist with the antagonist datum
|
||||
attachedobsessedobj.timer -= 20 //mob subsystem ticks every 2 seconds(?), remove 20 deciseconds from the timer. sure, that makes sense.
|
||||
else
|
||||
out_of_view()
|
||||
|
||||
/datum/brain_trauma/special/creep/proc/out_of_view()
|
||||
/datum/brain_trauma/special/obsessed/proc/out_of_view()
|
||||
time_spent_away += 20
|
||||
if(time_spent_away > 1800) //3 minutes
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "creeping", /datum/mood_event/notcreepingsevere, obsession.name)
|
||||
@@ -63,10 +62,9 @@
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "creeping", /datum/mood_event/notcreeping, obsession.name)
|
||||
/datum/brain_trauma/special/creep/on_lose()
|
||||
..()
|
||||
owner.remove_status_effect(STATUS_EFFECT_INLOVE)
|
||||
owner.mind.remove_antag_datum(/datum/antagonist/creep)
|
||||
owner.mind.remove_antag_datum(/datum/antagonist/obsessed)
|
||||
|
||||
/datum/brain_trauma/special/creep/on_say(message)
|
||||
/datum/brain_trauma/special/obsessed/on_say(message)
|
||||
if(!viewing)
|
||||
return message
|
||||
var/choked_up
|
||||
@@ -78,11 +76,11 @@
|
||||
return ""
|
||||
return message
|
||||
|
||||
/datum/brain_trauma/special/creep/on_hug(mob/living/hugger, mob/living/hugged)
|
||||
/datum/brain_trauma/special/obsessed/on_hug(mob/living/hugger, mob/living/hugged)
|
||||
if(hugged == obsession)
|
||||
obsession_hug_count++
|
||||
|
||||
/datum/brain_trauma/special/creep/proc/social_interaction()
|
||||
/datum/brain_trauma/special/obsessed/proc/social_interaction()
|
||||
var/fail = FALSE //whether you can finish a sentence while doing it
|
||||
owner.stuttering = max(3, owner.stuttering)
|
||||
owner.blur_eyes(10)
|
||||
@@ -106,7 +104,7 @@
|
||||
return fail
|
||||
|
||||
|
||||
/datum/brain_trauma/special/creep/proc/find_obsession()
|
||||
/datum/brain_trauma/special/obsessed/proc/find_obsession()
|
||||
var/chosen_victim
|
||||
var/list/possible_targets = list()
|
||||
var/list/viable_minds = list()
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
else if(isobserver(user))
|
||||
to_chat(user, "<span class='notice'>It is the [family_name] family heirloom, belonging to [owner].</span>")
|
||||
else
|
||||
var/datum/antagonist/creep/creeper = user.mind.has_antag_datum(/datum/antagonist/creep)
|
||||
var/datum/antagonist/obsessed/creeper = user.mind.has_antag_datum(/datum/antagonist/obsessed)
|
||||
if(creeper && creeper.trauma.obsession == owner)
|
||||
to_chat(user, "<span class='nicegreen'>This must be [owner]'s family heirloom! It smells just like them...</span>")
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ GLOBAL_LIST_INIT(huds, list(
|
||||
ANTAG_HUD_CLOCKWORK = new/datum/atom_hud/antag(),
|
||||
ANTAG_HUD_BROTHER = new/datum/atom_hud/antag/hidden(),
|
||||
ANTAG_HUD_HIVE = new/datum/atom_hud/antag/hidden(),
|
||||
ANTAG_HUD_CREEP = new/datum/atom_hud/antag/hidden()
|
||||
ANTAG_HUD_OBSESSED = new/datum/atom_hud/antag/hidden()
|
||||
))
|
||||
|
||||
/datum/atom_hud
|
||||
|
||||
@@ -148,16 +148,14 @@
|
||||
timeout = 1200
|
||||
|
||||
/datum/mood_event/notcreeping
|
||||
description = "<span class='warning'>I sure wish I was around my obsession...</span>\n"
|
||||
description = "<span class='warning'>The voices are not happy, and they painfully contort my thoughts into getting back on task.</span>\n"
|
||||
mood_change = -6
|
||||
timeout = 30
|
||||
hidden = TRUE
|
||||
|
||||
/datum/mood_event/notcreeping/add_effects(name)
|
||||
description = "<span class='warning'>I sure wish I was around [name]...</span>\n"
|
||||
|
||||
/datum/mood_event/notcreepingsevere//not hidden since it's so severe
|
||||
description = "<span class='boldwarning'>OBSESSIONNNN WHERE ARE YOUUUUUUUUUUUUU?!</span>\n"
|
||||
description = "<span class='boldwarning'>THEY NEEEEEEED OBSESSIONNNN!!</span>\n"
|
||||
mood_change = -30
|
||||
timeout = 30
|
||||
|
||||
@@ -166,7 +164,7 @@
|
||||
for(var/i in 1 to rand(3,5))
|
||||
unstable += copytext(name, -1)
|
||||
var/unhinged = uppertext(unstable.Join(""))//example Tinea Luxor > TINEA LUXORRRR (with randomness in how long that slur is)
|
||||
description = "<span class='boldwarning'>[unhinged] WHERE ARE YOUUUUUUUUUUUUU?!</span>\n"
|
||||
description = "<span class='boldwarning'>THEY NEEEEEEED [unhinged]!!</span>\n"
|
||||
|
||||
/datum/mood_event/idiot_shower
|
||||
description = "<span class='warning'>I showered with my clothes on, I'm a fucking idiot.</span>\n"
|
||||
|
||||
@@ -63,15 +63,10 @@
|
||||
special_screen_replace = FALSE
|
||||
|
||||
/datum/mood_event/creeping
|
||||
description = "<span class='greentext'>I'm so close to my obsession and I never want this to end.</span>\n" //creeps get it when they are around their obsession
|
||||
description = "<span class='greentext'>The voices have released their hooks on my mind! I feel free again!</span>\n" //creeps get it when they are around their obsession
|
||||
mood_change = 18
|
||||
timeout = 30
|
||||
hidden = TRUE
|
||||
special_screen_obj = "creep_inlove"
|
||||
special_screen_replace = FALSE
|
||||
|
||||
/datum/mood_event/creeping/add_effects(name)
|
||||
description = "<span class='greentext'>I'm so close to [name] and I NEVER want this to end.</span>\n"
|
||||
|
||||
/datum/mood_event/revolution
|
||||
description = "<span class='nicegreen'>VIVA LA REVOLUTION!</span>\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
/datum/antagonist/creep
|
||||
name = "Creep"
|
||||
/datum/antagonist/obsessed
|
||||
name = "Obsessed"
|
||||
show_in_antagpanel = TRUE
|
||||
antagpanel_category = "Other"
|
||||
job_rank = ROLE_CREEP
|
||||
job_rank = ROLE_OBSESSED
|
||||
show_name_in_check_antagonists = TRUE
|
||||
roundend_category = "creeps"
|
||||
roundend_category = "obsessed"
|
||||
silent = TRUE //not actually silent, because greet will be called by the trauma anyway.
|
||||
var/datum/brain_trauma/special/creep/trauma
|
||||
var/datum/brain_trauma/special/obsessed/trauma
|
||||
|
||||
/datum/antagonist/creep/admin_add(datum/mind/new_owner,mob/admin)
|
||||
/datum/antagonist/obsessed/admin_add(datum/mind/new_owner,mob/admin)
|
||||
var/mob/living/carbon/C = new_owner.current
|
||||
if(!istype(C))
|
||||
to_chat(admin, "[roundend_category] come from a brain trauma, so they need to at least be a carbon!")
|
||||
@@ -19,32 +19,33 @@
|
||||
message_admins("[key_name_admin(admin)] made [key_name_admin(new_owner)] into [name].")
|
||||
log_admin("[key_name(admin)] made [key_name(new_owner)] into [name].")
|
||||
//PRESTO FUCKIN MAJESTO
|
||||
C.gain_trauma(/datum/brain_trauma/special/creep)//ZAP
|
||||
C.gain_trauma(/datum/brain_trauma/special/obsessed)//ZAP
|
||||
|
||||
/datum/antagonist/creep/greet()
|
||||
/datum/antagonist/obsessed/greet()
|
||||
owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/creepalert.ogg', 100, FALSE, pressure_affected = FALSE)
|
||||
to_chat(owner, "<span class='boldannounce'>You are the Creep!</span>")
|
||||
to_chat(owner, "<B>They would call it an obsession. They would call you crazy, because they don't understand your unrequited love.<br>All you know is that you love [trauma.obsession]. And you. will. show them.</B>")
|
||||
to_chat(owner, "<B>I will surely go insane if I don't spend enough time around [trauma.obsession], but when i'm near them too long it gets too difficult to speak properly, making me look like a CREEP!</B>")
|
||||
to_chat(owner, "<span class='boldannounce'>The gods would like to remind you that this role, as with all other antags, does not allow you to break ANY server rules, especially Rule 8 (These rules being listed from the \"Rules\" button at the top right of your mind's screen). Feel free to murder and pillage just like any other antag, though.</span>")
|
||||
to_chat(owner, "<span class='boldannounce'>You are the Obsessed!</span>")
|
||||
to_chat(owner, "<B>The Voices have reached out to you, and are using you to complete their evil deeds.</B>")
|
||||
to_chat(owner, "<B>You don't know their connection, but The Voices compel you to stalk [trauma.obsession], forcing them into a state of constant paranoia.</B>")
|
||||
to_chat(owner, "<B>The Voices will retaliate if you fail to complete your tasks or spend too long away from your target.</B>")
|
||||
to_chat(owner, "<span class='boldannounce'>This role does NOT enable you to otherwise surpass what's deemed creepy behavior per the rules.</span>")//ironic if you know the history of the antag
|
||||
owner.announce_objectives()
|
||||
|
||||
/datum/antagonist/creep/Destroy()
|
||||
/datum/antagonist/obsessed/Destroy()
|
||||
if(trauma)
|
||||
qdel(trauma)
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/creep/apply_innate_effects(mob/living/mob_override)
|
||||
/datum/antagonist/obsessed/apply_innate_effects(mob/living/mob_override)
|
||||
var/mob/living/M = mob_override || owner.current
|
||||
update_creep_icons_added(M)
|
||||
update_obsession_icons_added(M)
|
||||
|
||||
/datum/antagonist/creep/remove_innate_effects(mob/living/mob_override)
|
||||
/datum/antagonist/obsessed/remove_innate_effects(mob/living/mob_override)
|
||||
var/mob/living/M = mob_override || owner.current
|
||||
update_creep_icons_removed(M)
|
||||
update_obsession_icons_removed(M)
|
||||
|
||||
/datum/antagonist/creep/proc/forge_objectives(var/datum/mind/obsessionmind)
|
||||
/datum/antagonist/obsessed/proc/forge_objectives(var/datum/mind/obsessionmind)
|
||||
var/list/objectives_left = list("spendtime", "polaroid", "hug")
|
||||
var/datum/objective/assassinate/creep/kill = new
|
||||
var/datum/objective/assassinate/obsessed/kill = new
|
||||
kill.owner = owner
|
||||
kill.target = obsessionmind
|
||||
var/datum/quirk/family_heirloom/family_heirloom
|
||||
@@ -94,10 +95,10 @@
|
||||
for(var/datum/objective/O in objectives)
|
||||
O.update_explanation_text()
|
||||
|
||||
/datum/antagonist/creep/roundend_report_header()
|
||||
return "<span class='header'>Someone became a creep!</span><br>"
|
||||
/datum/antagonist/obsessed/roundend_report_header()
|
||||
return "<span class='header'>Someone became obsessed!</span><br>"
|
||||
|
||||
/datum/antagonist/creep/roundend_report()
|
||||
/datum/antagonist/obsessed/roundend_report()
|
||||
var/list/report = list()
|
||||
|
||||
if(!owner)
|
||||
@@ -131,14 +132,14 @@
|
||||
///CREEPY objectives (few chosen per obsession)///
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
/datum/objective/assassinate/creep //just a creepy version of assassinate
|
||||
/datum/objective/assassinate/obsessed //just a creepy version of assassinate
|
||||
|
||||
/datum/objective/assassinate/creep/update_explanation_text()
|
||||
/datum/objective/assassinate/obsessed/update_explanation_text()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Murder [target.name], the [!target_role_type ? target.assigned_role : target.special_role]."
|
||||
else
|
||||
message_admins("WARNING! [ADMIN_LOOKUPFLW(owner)] creep objectives forged without an obsession!")
|
||||
message_admins("WARNING! [ADMIN_LOOKUPFLW(owner)] obsessed objectives forged without an obsession!")
|
||||
explanation_text = "Free Objective"
|
||||
|
||||
/datum/objective/assassinate/jealous //assassinate, but it changes the target to someone else in the previous target's department. cool, right?
|
||||
@@ -175,8 +176,8 @@
|
||||
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
|
||||
if(!H.mind)
|
||||
continue
|
||||
if(!SSjob.GetJob(H.mind.assigned_role) || H == oldmind.current || H.mind.has_antag_datum(/datum/antagonist/creep))
|
||||
continue //the jealousy target has to have a job, and not be the obsession or creep.
|
||||
if(!SSjob.GetJob(H.mind.assigned_role) || H == oldmind.current || H.mind.has_antag_datum(/datum/antagonist/obsessed))
|
||||
continue //the jealousy target has to have a job, and not be the obsession or obsessed.
|
||||
all_coworkers += H.mind
|
||||
//this won't be called often thankfully.
|
||||
if(H.mind.assigned_role in GLOB.security_positions)
|
||||
@@ -201,16 +202,16 @@
|
||||
target = pick(all_coworkers)
|
||||
return oldmind
|
||||
|
||||
/datum/objective/spendtime //spend some time around someone, handled by the creep trauma since that ticks
|
||||
/datum/objective/spendtime //spend some time around someone, handled by the obsessed trauma since that ticks
|
||||
name = "spendtime"
|
||||
var/timer = 1800 //5 minutes
|
||||
|
||||
/datum/objective/spendtime/update_explanation_text()
|
||||
if(timer == initial(timer))//just so admins can mess with it
|
||||
timer += pick(-600, 0)
|
||||
var/datum/antagonist/creep/creeper = owner.has_antag_datum(/datum/antagonist/creep)
|
||||
var/datum/antagonist/obsessed/creeper = owner.has_antag_datum(/datum/antagonist/obsessed)
|
||||
if(target && target.current && creeper)
|
||||
creeper.trauma.attachedcreepobj = src
|
||||
creeper.trauma.attachedobsessedobj = src
|
||||
explanation_text = "Spend [DisplayTimeText(timer)] around [target.name] while they're alive."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
@@ -227,14 +228,14 @@
|
||||
..()
|
||||
if(!hugs_needed)//just so admins can mess with it
|
||||
hugs_needed = rand(4,6)
|
||||
var/datum/antagonist/creep/creeper = owner.has_antag_datum(/datum/antagonist/creep)
|
||||
var/datum/antagonist/obsessed/creeper = owner.has_antag_datum(/datum/antagonist/obsessed)
|
||||
if(target && target.current && creeper)
|
||||
explanation_text = "Hug [target.name] [hugs_needed] times while they're alive."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
|
||||
/datum/objective/hug/check_completion()
|
||||
var/datum/antagonist/creep/creeper = owner.has_antag_datum(/datum/antagonist/creep)
|
||||
var/datum/antagonist/obsessed/creeper = owner.has_antag_datum(/datum/antagonist/obsessed)
|
||||
if(!creeper || !creeper.trauma || !hugs_needed)
|
||||
return TRUE//free objective
|
||||
return creeper.trauma.obsession_hug_count >= hugs_needed
|
||||
@@ -273,12 +274,12 @@
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
|
||||
/datum/antagonist/creep/proc/update_creep_icons_added(var/mob/living/carbon/human/creep)
|
||||
var/datum/atom_hud/antag/creephud = GLOB.huds[ANTAG_HUD_CREEP]
|
||||
creephud.join_hud(creep)
|
||||
set_antag_hud(creep, "creep")
|
||||
/datum/antagonist/obsessed/proc/update_obsession_icons_added(var/mob/living/carbon/human/obsessed)
|
||||
var/datum/atom_hud/antag/creephud = GLOB.huds[ANTAG_HUD_OBSESSED]
|
||||
creephud.join_hud(obsessed)
|
||||
set_antag_hud(obsessed, "obsessed")
|
||||
|
||||
/datum/antagonist/creep/proc/update_creep_icons_removed(var/mob/living/carbon/human/creep)
|
||||
var/datum/atom_hud/antag/creephud = GLOB.huds[ANTAG_HUD_CREEP]
|
||||
creephud.leave_hud(creep)
|
||||
set_antag_hud(creep, null)
|
||||
/datum/antagonist/obsessed/proc/update_obsession_icons_removed(var/mob/living/carbon/human/obsessed)
|
||||
var/datum/atom_hud/antag/creephud = GLOB.huds[ANTAG_HUD_OBSESSED]
|
||||
creephud.leave_hud(obsessed)
|
||||
set_antag_hud(obsessed, null)
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
/datum/round_event_control/creep
|
||||
name = "Creep Awakening"
|
||||
typepath = /datum/round_event/creep
|
||||
/datum/round_event_control/obsessed
|
||||
name = "Obsession Awakening"
|
||||
typepath = /datum/round_event/obsessed
|
||||
max_occurrences = 1
|
||||
min_players = 20
|
||||
|
||||
/datum/round_event/creep
|
||||
/datum/round_event/obsessed
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/creep/start()
|
||||
/datum/round_event/obsessed/start()
|
||||
for(var/mob/living/carbon/human/H in shuffle(GLOB.player_list))
|
||||
if(!H.client)
|
||||
continue
|
||||
if(H.stat == DEAD)
|
||||
continue
|
||||
if(!SSjob.GetJob(H.mind.assigned_role) || H.mind.assigned_role in GLOB.nonhuman_positions) //only station jobs sans nonhuman roles, prevents ashwalkers falling in love with crewmembers they never met
|
||||
if(!SSjob.GetJob(H.mind.assigned_role) || H.mind.assigned_role in GLOB.nonhuman_positions) //only station jobs sans nonhuman roles, prevents ashwalkers trying to stalk with crewmembers they never met
|
||||
continue
|
||||
if(H.mind.has_antag_datum(/datum/antagonist/creep))
|
||||
if(H.mind.has_antag_datum(/datum/antagonist/obsessed))
|
||||
continue
|
||||
if(!H.getorgan(/obj/item/organ/brain))
|
||||
continue
|
||||
H.gain_trauma(/datum/brain_trauma/special/creep)
|
||||
H.gain_trauma(/datum/brain_trauma/special/obsessed)
|
||||
announce_to_ghosts(H)
|
||||
break
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
Reference in New Issue
Block a user