diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm
index 4b0afce14b47..3cbc091cc62a 100644
--- a/code/datums/traits/negative.dm
+++ b/code/datums/traits/negative.dm
@@ -430,11 +430,6 @@
/datum/quirk/insanity/proc/madness()
quirk_holder.hallucination += rand(10, 25)
-/datum/quirk/insanity/post_add() //I don't /think/ we'll need this but for newbies who think "roleplay as insane" = "license to kill" it's probably a good thing to have
- if(!quirk_holder.mind || quirk_holder.mind.special_role)
- return
- to_chat(quirk_holder, "Please note that your dissociation syndrome does NOT give you the right to attack people or otherwise cause any interference to \
- the round. You are not an antagonist, and the rules will treat you the same as other crewmembers.")
/datum/quirk/social_anxiety
name = "Social Anxiety"
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 258e9a56217f..ced086e1dfc6 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -525,11 +525,11 @@ GLOBAL_LIST_INIT(hallucination_list, list(
/datum/hallucination/delusion
var/list/image/delusions = list()
-/datum/hallucination/delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = 300,skip_nearby = TRUE, custom_icon = null, custom_icon_file = null, custom_name = null)
+/datum/hallucination/delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = rand(30,300),skip_nearby = TRUE, custom_icon = null, custom_icon_file = null, custom_name = null)
set waitfor = FALSE
. = ..()
var/image/A = null
- var/kind = force_kind ? force_kind : pick("nothing","monkey","corgi","carp","skeleton","demon","zombie")
+ var/kind = force_kind ? force_kind : pick("doe","mi-go","carp","hermit","frontiersman","ramzi")
feedback_details += "Type: [kind]"
var/list/nearby
if(skip_nearby)
@@ -540,27 +540,24 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(skip_nearby && (H in nearby))
continue
switch(kind)
- if("nothing")
- A = image('icons/effects/effects.dmi',H,"nothing")
- A.name = "..."
- if("monkey")//Monkey
- A = image('icons/mob/monkey.dmi',H,"monkey1")
- A.name = "Monkey ([rand(1,999)])"
+ if("doe")//Doe
+ A = image('icons/mob/animal.dmi',H,"deer-doe")
+ A.name = "Doe"
if("carp")//Carp
A = image('icons/mob/carp.dmi',H,"carp")
A.name = "Space Carp"
- if("corgi")//Corgi
- A = image('icons/mob/pets.dmi',H,"corgi")
- A.name = "Corgi"
- if("skeleton")//Skeletons
- A = image('icons/mob/human.dmi',H,"skeleton")
- A.name = "Skeleton"
- if("zombie")//Zombies
- A = image('icons/mob/human.dmi',H,"zombie")
- A.name = "Zombie"
- if("demon")//Demon
- A = image('icons/mob/mob.dmi',H,"daemon")
- A.name = "Demon"
+ if("mi-go")//Mi-go
+ A = image('icons/mob/animal.dmi',H,"mi-go")
+ A.name = "Mi-go"
+ if("hermit")//Hermit
+ A = image('icons/mob/simple_human.dmi',H,"survivor_gunslinger")
+ A.name = "Hermit Soldier"
+ if("frontiersman")//Frontiersman
+ A = image('icons/mob/simple_human.dmi',H,"frontiersmanrangedminigun")
+ A.name = "Frontiersman"
+ if("ramzi")//Ramzi
+ A = image('icons/mob/simple_human.dmi',H,"ramzi_base")
+ A.name = "Ramzi Commando"
if("custom")
A = image(custom_icon_file, H, custom_icon)
A.name = custom_name
@@ -568,8 +565,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(target.client)
delusions |= A
target.client.images |= A
- if(duration)
- QDEL_IN(src, duration)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), duration)
/datum/hallucination/delusion/Destroy()
for(var/image/I in delusions)
@@ -580,25 +576,28 @@ GLOBAL_LIST_INIT(hallucination_list, list(
/datum/hallucination/self_delusion
var/image/delusion
-/datum/hallucination/self_delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = 300, custom_icon = null, custom_icon_file = null, wabbajack = TRUE) //set wabbajack to false if you want to use another fake source
+/datum/hallucination/self_delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = rand(30,300), custom_icon = null, custom_icon_file = null, wabbajack = TRUE) //set wabbajack to false if you want to use another fake source
set waitfor = FALSE
..()
var/image/A = null
- var/kind = force_kind ? force_kind : pick("monkey","corgi","carp","skeleton","demon","zombie","robot")
+ var/kind = force_kind ? force_kind : pick("doe","mi-go","carp","hermit","frontiersman","ramzi","pai","robot")
feedback_details += "Type: [kind]"
switch(kind)
- if("monkey")//Monkey
- A = image('icons/mob/monkey.dmi',target,"monkey1")
+ if("doe")//Doe
+ A = image('icons/mob/animal.dmi',target,"deer-doe")
if("carp")//Carp
A = image('icons/mob/animal.dmi',target,"carp")
- if("corgi")//Corgi
- A = image('icons/mob/pets.dmi',target,"corgi")
- if("skeleton")//Skeletons
- A = image('icons/mob/human.dmi',target,"skeleton")
- if("zombie")//Zombies
- A = image('icons/mob/human.dmi',target,"zombie")
- if("demon")//Demon
- A = image('icons/mob/mob.dmi',target,"daemon")
+ if("mi-go")//Mi-go
+ A = image('icons/mob/animal.dmi',target,"mi-go")
+ if("hermit")//Hermit
+ A = image('icons/mob/simple_human.dmi',target,"survivor_base")
+ if("frontiersman")//Frontiersman
+ A = image('icons/mob/simple_human.dmi',target,"frontiersmanranged")
+ if("ramzi")//Ramzi
+ A = image('icons/mob/simple_human.dmi',target,"ramzi_base")
+ if("pai")//pAI
+ A = image('icons/mob/pai.dmi',target,"repairbot")
+ target.playsound_local(target,'sound/effects/pai_boot.ogg', 75, 1)
if("robot")//Cyborg
A = image('icons/mob/robots.dmi',target,"robot")
target.playsound_local(target,'sound/voice/liveagain.ogg', 75, 1)
@@ -610,7 +609,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
to_chat(target, "...you look down and notice... you aren't the same as you used to be...")
delusion = A
target.client.images |= A
- QDEL_IN(src, duration)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), duration)
/datum/hallucination/self_delusion/Destroy()
if(target.client)
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index 91927581095c..ab0be2930324 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -259,7 +259,8 @@
taste_description = "sourness"
/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M)
- M.hallucination += 5
+ if(!M.has_quirk(/datum/quirk/insanity))
+ M.hallucination += 5
return ..()
/datum/reagent/toxin/plantbgone
diff --git a/icons/mob/simple_human.dmi b/icons/mob/simple_human.dmi
index 8cbc0f841bcb..83729d2a2ba4 100644
Binary files a/icons/mob/simple_human.dmi and b/icons/mob/simple_human.dmi differ