mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
Phobia DLC - Blood and Claustrophobia (#63741)
* Add Phobia of Blood Trauma * Add Claustrophia quirk
This commit is contained in:
@@ -7,6 +7,7 @@ GLOBAL_LIST_INIT(phobia_types, sort_list(list(
|
||||
"anime",
|
||||
"authority",
|
||||
"birds",
|
||||
"blood",
|
||||
"clowns",
|
||||
"doctors",
|
||||
"falling",
|
||||
@@ -46,6 +47,7 @@ GLOBAL_LIST_INIT(phobia_regexes, list(
|
||||
"spiders" = construct_phobia_regex("spiders"),
|
||||
"strangers" = construct_phobia_regex("strangers"),
|
||||
"the supernatural" = construct_phobia_regex("the supernatural"),
|
||||
"blood" = construct_phobia_regex("blood"),
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(phobia_mobs, list(
|
||||
@@ -211,17 +213,11 @@ GLOBAL_LIST_INIT(phobia_objs, list(
|
||||
/obj/structure/statue/plasma/xeno
|
||||
)),
|
||||
|
||||
"birds" = typecacheof(list(/obj/item/clothing/mask/gas/plaguedoctor, /obj/item/food/cracker,
|
||||
/obj/item/clothing/suit/chickensuit, /obj/item/clothing/head/chicken,
|
||||
/obj/item/clothing/suit/toggle/owlwings, /obj/item/clothing/under/costume/owl, /obj/item/clothing/mask/gas/owl_mask,
|
||||
/obj/item/clothing/under/costume/griffin, /obj/item/clothing/shoes/griffin, /obj/item/clothing/head/griffin,
|
||||
/obj/item/clothing/head/helmet/space/freedom, /obj/item/clothing/suit/space/freedom,
|
||||
)),
|
||||
|
||||
"anime" = typecacheof(list(/obj/item/clothing/under/costume/schoolgirl, /obj/item/katana, /obj/item/food/sashimi, /obj/item/food/chawanmushi,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star, /obj/item/clothing/head/kitty/genuine, /obj/item/clothing/suit/space/space_ninja,
|
||||
/obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, /obj/item/vibro_weapon,
|
||||
/obj/item/nullrod/scythe/vibro, /obj/item/energy_katana, /obj/item/toy/katana, /obj/item/nullrod/claymore/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)),
|
||||
/obj/item/nullrod/scythe/vibro, /obj/item/energy_katana, /obj/item/toy/katana, /obj/item/nullrod/claymore/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe
|
||||
)),
|
||||
|
||||
"birds" = typecacheof(list(/obj/item/clothing/mask/gas/plaguedoctor, /obj/item/food/cracker,
|
||||
/obj/item/clothing/suit/chickensuit, /obj/item/clothing/head/chicken,
|
||||
@@ -243,6 +239,8 @@ GLOBAL_LIST_INIT(phobia_objs, list(
|
||||
/obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, /obj/item/vibro_weapon,
|
||||
/obj/item/nullrod/scythe/vibro, /obj/item/energy_katana, /obj/item/toy/katana, /obj/item/nullrod/claymore/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe
|
||||
)),
|
||||
|
||||
"blood" = typecacheof(list(/obj/machinery/iv_drip, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/blood, /obj/effect/decal/cleanable/blood)),
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(phobia_turfs, list(
|
||||
|
||||
@@ -48,13 +48,13 @@
|
||||
var/list/seen_atoms = view(7, owner)
|
||||
if(LAZYLEN(trigger_objs))
|
||||
for(var/obj/O in seen_atoms)
|
||||
if(is_type_in_typecache(O, trigger_objs))
|
||||
if(is_type_in_typecache(O, trigger_objs) || (phobia_type == "blood" && HAS_BLOOD_DNA(O)))
|
||||
freak_out(O)
|
||||
return
|
||||
for(var/mob/living/carbon/human/HU in seen_atoms) //check equipment for trigger items
|
||||
for(var/X in HU.get_all_slots() | HU.held_items)
|
||||
var/obj/I = X
|
||||
if(!QDELETED(I) && is_type_in_typecache(I, trigger_objs))
|
||||
if(!QDELETED(I) && (is_type_in_typecache(I, trigger_objs) || (phobia_type == "blood" && HAS_BLOOD_DNA(I))))
|
||||
freak_out(I)
|
||||
return
|
||||
|
||||
@@ -213,3 +213,7 @@
|
||||
/datum/brain_trauma/mild/phobia/guns
|
||||
phobia_type = "guns"
|
||||
random_gain = FALSE
|
||||
|
||||
/datum/brain_trauma/mild/phobia/blood
|
||||
phobia_type = "blood"
|
||||
random_gain = FALSE
|
||||
|
||||
@@ -127,6 +127,11 @@
|
||||
/datum/mood_event/nyctophobia
|
||||
description = "<span class='warning'>It sure is dark around here...</span>\n"
|
||||
mood_change = -3
|
||||
|
||||
/datum/mood_event/claustrophobia
|
||||
description = "<span class='warning'>Why do I feel trapped?! Let me out!!!</span>\n"
|
||||
mood_change = -7
|
||||
timeout = 1 MINUTES
|
||||
|
||||
/datum/mood_event/bright_light
|
||||
description = "<span class='boldwarning'>I hate it in the light...I need to find a darker place...</span>\n"
|
||||
|
||||
@@ -327,7 +327,7 @@
|
||||
/datum/quirk/nyctophobia/proc/on_holder_moved(mob/living/source, atom/old_loc, dir, forced)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if(quirk_holder.stat == DEAD)
|
||||
if(quirk_holder.stat != CONSCIOUS || quirk_holder.IsSleeping() || quirk_holder.IsUnconscious())
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/human_holder = quirk_holder
|
||||
@@ -481,7 +481,7 @@
|
||||
processing_quirk = TRUE
|
||||
|
||||
/datum/quirk/insanity/process(delta_time)
|
||||
if(quirk_holder.stat == DEAD)
|
||||
if(quirk_holder.stat != CONSCIOUS || quirk_holder.IsSleeping() || quirk_holder.IsUnconscious())
|
||||
return
|
||||
|
||||
if(DT_PROB(2, delta_time))
|
||||
@@ -850,3 +850,28 @@
|
||||
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "bad_touch", /datum/mood_event/very_bad_touch)
|
||||
else
|
||||
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "bad_touch", /datum/mood_event/bad_touch)
|
||||
|
||||
/datum/quirk/claustrophobia
|
||||
name = "Claustrophobia"
|
||||
desc = "You are terrified of small spaces. If you are placed inside any container, locker, or machinery, a panic attack sets in and you struggle to breath."
|
||||
icon = "box-open"
|
||||
value = -4
|
||||
medical_record_text = "Patient demonstrates a fear of tight spaces."
|
||||
hardcore_value = 5
|
||||
processing_quirk = TRUE
|
||||
|
||||
/datum/quirk/claustrophobia/remove()
|
||||
SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "claustrophobia")
|
||||
|
||||
/datum/quirk/claustrophobia/process(delta_time)
|
||||
if(quirk_holder.stat != CONSCIOUS || quirk_holder.IsSleeping() || quirk_holder.IsUnconscious())
|
||||
return
|
||||
|
||||
if(isturf(quirk_holder.loc))
|
||||
SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "claustrophobia", /datum/mood_event/claustrophobia)
|
||||
return
|
||||
|
||||
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "claustrophobia")
|
||||
quirk_holder.losebreath += 0.25 // miss a breath one in four times
|
||||
if(DT_PROB(25, delta_time))
|
||||
to_chat(quirk_holder, span_warning("You feel trapped! Must escape... can't breath..."))
|
||||
|
||||
@@ -391,5 +391,23 @@
|
||||
"shell",
|
||||
"dart",
|
||||
"armory"
|
||||
],
|
||||
"blood": [
|
||||
"blood",
|
||||
"bloody",
|
||||
"bloodloss",
|
||||
"bleeding",
|
||||
"bleed",
|
||||
"bled",
|
||||
"hemorrhaged",
|
||||
"hemorrhage",
|
||||
"hemorrhaging",
|
||||
"transfusion",
|
||||
"dialysis",
|
||||
"iv",
|
||||
"gore",
|
||||
"gib",
|
||||
"gibs",
|
||||
"gibbed"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user