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)
+