diff --git a/code/modules/client/preference_setup/traits/trait_defines.dm b/code/modules/client/preference_setup/traits/trait_defines.dm index 86b8ede6f7..68941e49c8 100644 --- a/code/modules/client/preference_setup/traits/trait_defines.dm +++ b/code/modules/client/preference_setup/traits/trait_defines.dm @@ -183,6 +183,12 @@ desc = "Small spaces and tight quarters makes you feel distressed. Unfortunately both are rather common when living in space." modifier_type = /datum/modifier/trait/phobia/claustrophobe + +/datum/trait/modifier/mental/blennophobe + name = "Blennophobia" + desc = "Slimes are quite dangerous, but just the aspect of something being slimey is uncomfortable." + modifier_type = /datum/modifier/trait/phobia/blennophobe + /* // Uncomment this when/if these get finished. /datum/trait/modifier/mental/synthphobe @@ -239,4 +245,4 @@ name = "Promethean-phobic" desc = "Boilerplate racism for jellos goes here." mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe) -*/ \ No newline at end of file +*/ diff --git a/code/modules/mob/_modifiers/traits_phobias.dm b/code/modules/mob/_modifiers/traits_phobias.dm index 290875c5d6..eee514535c 100644 --- a/code/modules/mob/_modifiers/traits_phobias.dm +++ b/code/modules/mob/_modifiers/traits_phobias.dm @@ -297,7 +297,7 @@ var/open_tiles_needed = 15 // Tends to be just right, as maint triggers this but hallways don't. - on_created_text = "You are terrified of tight spaces. Why did you come to space??" + on_created_text = "You are terrified of tight spaces. Why did you come to space?" on_expired_text = "Small rooms aren't so bad now." zero_fear_up = list( @@ -357,6 +357,90 @@ return fear_amount +/datum/modifier/trait/phobia/blennophobe + name = "blennophobia" + desc = "Slimes are quite dangerous, but just the aspect of something being slimey is uncomfortable." + fear_decay_rate = 1 + + on_created_text = "You are disgusted and horrified by slime." + on_expired_text = "You feel more... okay with slime." + + zero_fear_up = list( + "That's some slime!", + "There's slime right there!" + ) + zero_fear_down = list( + "The slime is out of sight and out of mind.", + "Clean. No more slime." + ) + + half_fear_up = list( + "The slimes might strike at any point!", + "The slime is still there!" + ) + half_fear_down = list( + "The slime is gone... right?", + "You can't see any slime right now, but you're still anxious." + ) + + full_fear_up = list( + "The slime is everywhere!", + "You're gonna get absorbed if you don't get out!" + ) + full_fear_down = list( + "There must be more of that slime somewhere...", + "No more of this slime, please...." + ) + +/datum/modifier/trait/phobia/blennophobe/should_fear() + if(holder.blinded) + return 0 // Can't fear what cannot be seen. + + var/fear_amount = 0 + for(var/atom/thing in view(5, holder)) // See haemophobia for why this is 5. + if(istype(thing, /obj/structure/blob)) // blobs are uncomfortable things + fear_amount += 3 + + if(istype(thing, /obj/effect/alien/resin)) // Resin's a bit slimy according to its own description. + fear_amount += 1 + + if(istype(thing, /obj/item/weed_extract)) + fear_amount += 1 + + if(istype(thing, /obj/effect/decal/cleanable/mucus)) // Blennophobia apparently includes mucus, so! + fear_amount += 2 + + if(istype(thing, /obj/item/slime_extract)) // Gooey. + fear_amount += 1 + + if(istype(thing, /obj/item/slime_cube)) // Also gooey, alongside harbinger of bad news. + fear_amount += 2 + + if(istype(thing, /obj/item/organ/internal/brain/slime)) + fear_amount += 2 + + if(istype(thing, /obj/item/clothing/head/collectable/slime)) // Some hats are spooky so people can be assholes with them. + fear_amount += 1 + + if(istype(thing, /mob/living/simple_animal/slime)) // An actual predatory specimen! + var/mob/living/simple_animal/slime/S = thing + if(S.stat == DEAD) // Dead slimes are somewhat less spook. + fear_amount += 4 + if(S.is_adult == TRUE) //big boy + fear_amount += 8 + else + fear_amount += 6 + + if(istype(thing, /mob/living/carbon/human)) + var/mob/living/carbon/human/S = thing + if(istype(S.species, /datum/species/skrell)) //Skrell ARE slimey. + fear_amount += 1 + if(istype(S.species, /datum/species/shapeshifter/promethean)) + fear_amount += 4 + else + return + return fear_amount + // Note for the below 'phobias' are of the xeno-phobic variety, and are less centered on pure fear as above, and more on a mix of distrust, fear, and disdainfulness. // As such, they are mechanically different than the fear-based phobias, in that instead of a buildup of fearful messages, it does intermittent messages specific to what holder sees. @@ -367,7 +451,7 @@ closely, waiting to strike." on_created_text = "You remain vigilant against the Alien." - on_expired_text = "Aliens aren't so bad afterall." + on_expired_text = "Aliens aren't so bad after all." var/last_message = null // world.time we last did a message. var/message_cooldown = 1 MINUTE @@ -442,7 +526,7 @@ desc = "Humans are bound to get us all killed with their reckless use of technology..." on_created_text = "You unfortunately are likely to have to deal with humans today." - on_expired_text = "Humans aren't so bad afterall." + on_expired_text = "Humans aren't so bad after all." /datum/modifier/trait/phobia/xenophobia/human/get_xenos() var/list/humans = list() @@ -471,7 +555,7 @@ desc = "The Skrell pretend that they are Humanity's enlightened allies, but you can see past that." on_created_text = "Hopefully no Skrell show up today." - on_expired_text = "Skrell aren't so bad afterall." + on_expired_text = "Skrell aren't so bad after all." /datum/modifier/trait/phobia/xenophobia/skrell/get_xenos() var/list/skrell = list() @@ -490,3 +574,4 @@ "WetSkrell was a mistake." ) return pick(generic_responses) +