diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm
index 14f15a4b8997..235b25b5664f 100644
--- a/code/controllers/subsystem/traumas.dm
+++ b/code/controllers/subsystem/traumas.dm
@@ -11,7 +11,7 @@ SUBSYSTEM_DEF(traumas)
#define PHOBIA_FILE "phobia.json"
/datum/controller/subsystem/traumas/Initialize()
- phobia_types = list("spiders", "space", "security", "clowns", "greytide", "lizards", "skeletons")
+ phobia_types = list("spiders", "space", "security", "clowns", "greytide", "lizards", "skeletons", "snakes")
phobia_words = list("spiders" = strings(PHOBIA_FILE, "spiders"),
"space" = strings(PHOBIA_FILE, "space"),
@@ -20,11 +20,13 @@ SUBSYSTEM_DEF(traumas)
"greytide" = strings(PHOBIA_FILE, "greytide"),
"lizards" = strings(PHOBIA_FILE, "lizards"),
"skeletons" = strings(PHOBIA_FILE, "skeletons"),
+ "snakes" = strings(PHOBIA_FILE, "snakes")
)
phobia_mobs = list("spiders" = typecacheof(list(/mob/living/simple_animal/hostile/poison/giant_spider)),
"security" = typecacheof(list(/mob/living/simple_animal/bot/secbot)),
- "lizards" = typecacheof(list(/mob/living/simple_animal/hostile/lizard))
+ "lizards" = typecacheof(list(/mob/living/simple_animal/hostile/lizard)),
+ "snakes" = typecacheof(list(/mob/living/simple_animal/hostile/retaliate/poison/snake))
)
phobia_objs = list("spiders" = typecacheof(list(/obj/structure/spider)),
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index e57577323334..afad51d3fa7e 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -1035,6 +1035,14 @@
contains = list(/mob/living/simple_animal/hostile/retaliate/goat)
crate_name = "goat crate"
+/datum/supply_pack/organic/critter/snake
+ name = "Snake Crate"
+ cost = 3000
+ contains = list(/mob/living/simple_animal/hostile/retaliate/poison/snake,
+ /mob/living/simple_animal/hostile/retaliate/poison/snake,
+ /mob/living/simple_animal/hostile/retaliate/poison/snake)
+ crate_name = "snake crate"
+
/datum/supply_pack/organic/critter/chick
name = "Chicken Crate"
cost = 2000
diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm
index 5ab8249215b5..67bc2143f8db 100644
--- a/code/modules/jobs/job_types/civilian.dm
+++ b/code/modules/jobs/job_types/civilian.dm
@@ -152,7 +152,7 @@ Curator
return
H.grant_all_languages(omnitongue=TRUE)
-
+ H.gain_trauma(/datum/brain_trauma/mild/phobia, FALSE, "snakes") //why does it have to be snakes...
/*
Lawyer
*/
diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm
new file mode 100644
index 000000000000..caa9f109050f
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/friendly/snake.dm
@@ -0,0 +1,61 @@
+/mob/living/simple_animal/hostile/retaliate/poison
+ var/poison_per_bite = 0
+ var/poison_type = "toxin"
+
+/mob/living/simple_animal/hostile/retaliate/poison/AttackingTarget()
+ . = ..()
+ if(. && isliving(target))
+ var/mob/living/L = target
+ if(L.reagents && !poison_per_bite == 0)
+ L.reagents.add_reagent(poison_type, poison_per_bite)
+ return .
+
+/mob/living/simple_animal/hostile/retaliate/poison/snake
+ name = "snake"
+ desc = "A slithery snake. These legless reptiles are the bane of mice and adventurers alike."
+ icon_state = "snake"
+ icon_living = "snake"
+ icon_dead = "snake_dead"
+ speak_emote = list("hisses")
+ health = 20
+ maxHealth = 20
+ attacktext = "bites"
+ melee_damage_lower = 5
+ melee_damage_upper = 6
+ response_help = "pets"
+ response_disarm = "shoos"
+ response_harm = "steps on"
+ faction = list("hostile")
+ ventcrawler = VENTCRAWLER_ALWAYS
+ density = FALSE
+ pass_flags = PASSTABLE | PASSMOB
+ mob_size = MOB_SIZE_SMALL
+ gold_core_spawnable = FRIENDLY_SPAWN
+ obj_damage = 0
+ environment_smash = ENVIRONMENT_SMASH_NONE
+
+
+/mob/living/simple_animal/hostile/retaliate/poison/snake/ListTargets(atom/the_target)
+ . = oview(vision_range, targets_from) //get list of things in vision range
+ var/list/living_mobs = list()
+ var/list/mice = list()
+ for (var/HM in .)
+ //Yum a tasty mouse
+ if(istype(HM, /mob/living/simple_animal/mouse))
+ mice += HM
+ if(isliving(HM))
+ living_mobs += HM
+
+ // if no tasty mice to chase, lets chase any living mob enemies in our vision range
+ if(length(mice) == 0)
+ //Filter living mobs (in range mobs) by those we consider enemies (retaliate behaviour)
+ return living_mobs & enemies
+ return mice
+
+/mob/living/simple_animal/hostile/retaliate/poison/snake/AttackingTarget()
+ if(istype(target, /mob/living/simple_animal/mouse))
+ visible_message("[name] consumes [target] in a single gulp!", "You consume [target] in a single gulp!")
+ QDEL_NULL(target)
+ adjustBruteLoss(-2)
+ else
+ return ..()
\ No newline at end of file
diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi
index 8504b18a4a5f..89ab95225cf5 100644
Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ
diff --git a/strings/phobia.json b/strings/phobia.json
index 343a475b563d..385e88b6b620 100644
--- a/strings/phobia.json
+++ b/strings/phobia.json
@@ -59,5 +59,18 @@
"calcium",
"the ride never ends",
"doot"
+ ],
+
+ "snakes": [
+ "snake",
+ "snek",
+ "hiss",
+ "snecko",
+ "boop",
+ "slither",
+ "fangs",
+ "anaconda",
+ "viper",
+ "python"
]
}
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 2e42c6ffaa4c..0a2817b0cd95 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1881,6 +1881,7 @@
#include "code\modules\mob\living\simple_animal\friendly\penguin.dm"
#include "code\modules\mob\living\simple_animal\friendly\pet.dm"
#include "code\modules\mob\living\simple_animal\friendly\sloth.dm"
+#include "code\modules\mob\living\simple_animal\friendly\snake.dm"
#include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm"
#include "code\modules\mob\living\simple_animal\friendly\drone\drones_as_items.dm"
#include "code\modules\mob\living\simple_animal\friendly\drone\extra_drone_types.dm"