mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-13 03:02:38 +00:00
61 lines
2.3 KiB
Plaintext
61 lines
2.3 KiB
Plaintext
/datum/quirk/erratic
|
|
name = "Erratic"
|
|
desc = "You mood swings like a pendulum, causing your personality to change on a whim every so often."
|
|
icon = FA_ICON_MASKS_THEATER
|
|
value = -3
|
|
gain_text = span_danger("You feel erratic.") // say that again?
|
|
lose_text = span_notice("You feel more stable.")
|
|
medical_record_text = "Patient has a bipolar personality disorder."
|
|
quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_MOODLET_BASED|QUIRK_PROCESSES
|
|
hardcore_value = 3
|
|
mail_goodies = list(/obj/item/storage/pill_bottle/psicodine)
|
|
/// Cooldown between personality randomizations
|
|
COOLDOWN_DECLARE(randomize_cooldown)
|
|
/// Personalities before the quirk was applied
|
|
VAR_PRIVATE/list/base_personalities
|
|
/// Every other randomization, revert to base personality
|
|
var/random_index = 0
|
|
|
|
/datum/quirk/erratic/add(client/client_source)
|
|
base_personalities = LAZYCOPY(quirk_holder.personalities)
|
|
COOLDOWN_START(src, randomize_cooldown, rand(5, 10) MINUTES)
|
|
|
|
/datum/quirk/erratic/remove()
|
|
replace_personalities(base_personalities)
|
|
if(!QDELING(quirk_holder))
|
|
announce_personality_change()
|
|
|
|
/datum/quirk/erratic/process(seconds_per_tick)
|
|
if(!COOLDOWN_FINISHED(src, randomize_cooldown))
|
|
return
|
|
if(HAS_TRAIT(quirk_holder, TRAIT_FEARLESS) || quirk_holder.stat >= UNCONSCIOUS)
|
|
return
|
|
|
|
COOLDOWN_START(src, randomize_cooldown, rand(6, 12) MINUTES)
|
|
randomize_personalities()
|
|
|
|
/datum/quirk/erratic/proc/randomize_personalities()
|
|
random_index += 1
|
|
if(random_index % 2 == 0)
|
|
random_index = 0
|
|
replace_personalities(base_personalities)
|
|
to_chat(quirk_holder, span_notice("You feel... normal."))
|
|
announce_personality_change()
|
|
return
|
|
|
|
var/max = CONFIG_GET(number/max_personalities)
|
|
var/list/new_personality = prob(1) ? list() : SSpersonalities.select_random_personalities(max - 2, max + 1)
|
|
replace_personalities(new_personality)
|
|
to_chat(quirk_holder, span_notice("You feel... different."))
|
|
announce_personality_change()
|
|
|
|
/datum/quirk/erratic/proc/replace_personalities(list/new_personalities)
|
|
quirk_holder.clear_personalities()
|
|
quirk_holder.add_personalities(new_personalities)
|
|
|
|
/datum/quirk/erratic/proc/announce_personality_change()
|
|
var/list/new_personality = list()
|
|
for(var/datum/personality/personality_type as anything in quirk_holder.personalities)
|
|
new_personality += initial(personality_type.name)
|
|
to_chat(quirk_holder, span_green("Your personality is now: [english_list(new_personality)]."))
|