Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port of Narcolepsy quirk #268

Merged
merged 1 commit into from
Dec 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions modular_doppler/modular_quirks/narcolepsy/narcolepsy.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/datum/quirk/narcolepsy
name = "Narcolepsy"
desc = "You may fall asleep at any moment and feel tired often."
icon = FA_ICON_CLOUD_MOON_RAIN
value = -8
hardcore_value = 8
medical_record_text = "Patient may involuntarily fall asleep during normal activities."
mail_goodies = list(
/obj/item/reagent_containers/cup/glass/coffee,
/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind,
/obj/item/storage/pill_bottle/prescription_stimulant,
)

/datum/quirk/narcolepsy/post_add()
. = ..()
var/mob/living/carbon/human/user = quirk_holder
user.gain_trauma(/datum/brain_trauma/severe/narcolepsy/permanent, TRAUMA_RESILIENCE_ABSOLUTE)

var/obj/item/storage/pill_bottle/prescription_stimulant/stimmies = new()
if(quirk_holder.equip_to_slot_if_possible(stimmies, ITEM_SLOT_BACKPACK, qdel_on_fail = TRUE, initial = TRUE, indirect_action = TRUE))
to_chat(quirk_holder, span_info("You have been given a bottle of mild stimulants to assist in staying awake this shift..."))

/datum/quirk/narcolepsy/remove()
. = ..()
var/mob/living/carbon/human/user = quirk_holder
user?.cure_trauma_type(/datum/brain_trauma/severe/narcolepsy/permanent, TRAUMA_RESILIENCE_ABSOLUTE)

/datum/brain_trauma/severe/narcolepsy/permanent
scan_desc = "narcolepsy"

//similar to parent but slower
/datum/brain_trauma/severe/narcolepsy/permanent/on_life(seconds_per_tick, times_fired)
if(owner.IsSleeping())
return
if(owner.reagents.has_reagent(/datum/reagent/medicine/modafinil))
return //stimulant which already blocks sleeping
if(owner.reagents.has_reagent(/datum/reagent/medicine/synaptizine))
return //mild stimulant easily made in chemistry

var/sleep_chance = 0.333 //3
var/drowsy = !!owner.has_status_effect(/datum/status_effect/drowsiness)
var/caffeinated = HAS_TRAIT(owner, TRAIT_STIMULATED)
if(drowsy)
sleep_chance = 1
if(caffeinated) //make it real hard to fall asleep on caffeine
sleep_chance = sleep_chance / 2

if(!drowsy && SPT_PROB(sleep_chance, seconds_per_tick))
to_chat(owner, span_warning("You feel tired..."))
owner.adjust_drowsiness(rand(30 SECONDS, 60 SECONDS))

else if(drowsy && SPT_PROB(sleep_chance, seconds_per_tick))
to_chat(owner, span_warning("You fall asleep."))
owner.Sleeping(rand(20 SECONDS, 30 SECONDS))

/obj/item/storage/pill_bottle/prescription_stimulant
name = "bottle of prescribed stimulant pills"
desc = "A bottle of mild and medicinally approved stimulants to help prevent drowsiness."

/obj/item/storage/pill_bottle/prescription_stimulant/PopulateContents()
for(var/i in 1 to 5)
new /obj/item/reagent_containers/pill/prescription_stimulant(src)

/obj/item/reagent_containers/pill/prescription_stimulant
name = "prescription stimulant pill"
desc = "Used to treat symptoms of drowsiness and sudden loss of consciousness. A warning label reads: <b>Take in moderation</b>."
list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/synaptizine = 5, /datum/reagent/medicine/modafinil = 3)
icon_state = "pill15"
1 change: 1 addition & 0 deletions tgstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -7051,6 +7051,7 @@
#include "modular_doppler\modular_quirks\hardened_soles\hardened_soles.dm"
#include "modular_doppler\modular_quirks\left_handed\left_handed.dm"
#include "modular_doppler\modular_quirks\linguist\linguist.dm"
#include "modular_doppler\modular_quirks\narcolepsy\narcolepsy.dm"
#include "modular_doppler\modular_quirks\night_vision\night_vision.dm"
#include "modular_doppler\modular_quirks\overwrites\equipping.dm"
#include "modular_doppler\modular_quirks\overwrites\musician.dm"
Expand Down
Loading