diff --git a/baystation12.dme b/baystation12.dme
index 7b8c7d1e61..cb8bdbd39b 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -1061,6 +1061,7 @@
#include "code\modules\mining\ores_coins.dm"
#include "code\modules\mining\satchel_ore_boxdm.dm"
#include "code\modules\mob\death.dm"
+#include "code\modules\mob\emote.dm"
#include "code\modules\mob\inventory.dm"
#include "code\modules\mob\login.dm"
#include "code\modules\mob\logout.dm"
diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm
index 3c070bdbd2..9225eb0f8b 100644
--- a/code/modules/mob/emote.dm
+++ b/code/modules/mob/emote.dm
@@ -32,19 +32,13 @@ mob/proc/custom_emote(var/m_type=1,var/message = null)
continue
if(findtext(message," snores.")) //Because we have so many sleeping people.
break
- if(M.stat == 2 && M.client.ghost_sight && !(M in viewers(src,null)))
+ if(M.stat == 2 && (M.client.prefs.toggles & CHAT_GHOSTSIGHT) && !(M in viewers(src,null)))
M.show_message(message)
if (m_type & 1)
for (var/mob/O in viewers(src, null))
- if(istype(O,/mob/living/carbon/human))
- for(var/mob/living/parasite/P in O:parasites)
- P.show_message(message, m_type)
O.show_message(message, m_type)
else if (m_type & 2)
for (var/mob/O in hearers(src.loc, null))
- if(istype(O,/mob/living/carbon/human))
- for(var/mob/living/parasite/P in O:parasites)
- P.show_message(message, m_type)
O.show_message(message, m_type)
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 802841e17a..4029fc4644 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -53,27 +53,17 @@
var/input = copytext(sanitize(input("Choose an emote to display.") as text|null),1,MAX_MESSAGE_LEN)
if (!input)
return
- if(copytext(input,1,5) == "says")
- src << "\red Invalid emote."
- return
- else if(copytext(input,1,9) == "exclaims")
- src << "\red Invalid emote."
- return
- else if(copytext(input,1,5) == "asks")
- src << "\red Invalid emote."
- return
- else
- var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
- if (input2 == "Visible")
- m_type = 1
- else if (input2 == "Hearable")
- if (src.miming)
- return
- m_type = 2
- else
- alert("Unable to use this emote, must be either hearable or visible.")
+ var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
+ if (input2 == "Visible")
+ m_type = 1
+ else if (input2 == "Hearable")
+ if (src.miming)
return
- message = "[src] [input]"
+ m_type = 2
+ else
+ alert("Unable to use this emote, must be either hearable or visible.")
+ return
+ message = "[src] [input]"
if ("me")
if(silent)
@@ -88,17 +78,7 @@
return
if(!(message))
return
- if(copytext(message,1,5) == "says")
- src << "\red Invalid emote."
- return
- else if(copytext(message,1,9) == "exclaims")
- src << "\red Invalid emote."
- return
- else if(copytext(message,1,5) == "asks")
- src << "\red Invalid emote."
- return
- else
- message = "[src] [message]"
+ message = "[src] [message]"
if ("salute")
if (!src.buckled)
diff --git a/code/modules/mob/living/carbon/metroid/emote.dm b/code/modules/mob/living/carbon/metroid/emote.dm
index 2ee388f7d0..0e6688e69e 100644
--- a/code/modules/mob/living/carbon/metroid/emote.dm
+++ b/code/modules/mob/living/carbon/metroid/emote.dm
@@ -1,4 +1,4 @@
-/mob/living/carbon/slime/emote(var/act)
+/mob/living/carbon/slime/emote(var/act, var/type, var/desc)
if (findtext(act, "-", 1, null))
@@ -13,6 +13,10 @@
var/message
switch(act)
+ if ("me")
+ return custom_emote(m_type, desc)
+ if ("custom")
+ return custom_emote(m_type, desc)
if("moan")
message = "The [src.name] moans."
m_type = 2
diff --git a/code/modules/mob/living/carbon/monkey/emote.dm b/code/modules/mob/living/carbon/monkey/emote.dm
index eccb365a6f..8e6c281c78 100644
--- a/code/modules/mob/living/carbon/monkey/emote.dm
+++ b/code/modules/mob/living/carbon/monkey/emote.dm
@@ -1,4 +1,4 @@
-/mob/living/carbon/monkey/emote(var/act)
+/mob/living/carbon/monkey/emote(var/act, var/type, var/desc)
var/param = null
if (findtext(act, "-", 1, null))
@@ -14,6 +14,12 @@
var/message
switch(act)
+ if ("me")
+ return custom_emote(m_type, desc)
+
+ if ("custom")
+ return custom_emote(m_type, desc)
+
if("sign")
if (!src.restrained())
message = text("The monkey signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null))
diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm
index dcf08ba0d8..86d4e5d2f4 100644
--- a/code/modules/mob/living/silicon/robot/emote.dm
+++ b/code/modules/mob/living/silicon/robot/emote.dm
@@ -9,6 +9,12 @@
act = copytext(act,1,length(act))
switch(act)
+ if ("me")
+ return custom_emote(m_type, message)
+
+ if ("custom")
+ return custom_emote(m_type, message)
+
if ("salute")
if (!src.buckled)
var/M = null
@@ -56,20 +62,6 @@
message = "[src] flaps his wings ANGRILY!"
m_type = 2
- if ("custom")
- var/input = copytext(sanitize(input("Choose an emote to display.") as text|null),1,MAX_MESSAGE_LEN)
- if (!input)
- return
- var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
- if (input2 == "Visible")
- m_type = 1
- else if (input2 == "Hearable")
- m_type = 2
- else
- alert("Unable to use this emote, must be either hearable or visible.")
- return
- message = "[src] [input]"
-
if ("me")
if (src.client)
if(client.prefs.muted & MUTE_IC)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index bc25116ae5..f7154694f7 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -226,14 +226,8 @@
/mob/living/simple_animal/emote(var/act, var/type, var/desc)
if(act)
- if(act == "scream") act = "makes a loud and pained whimper" //ugly hack to stop animals screaming when crushed :P
- if(act == "me") //Allow me-emotes.
- act = desc
- if( findtext(act,".",lentext(act)) == 0 && findtext(act,"!",lentext(act)) == 0 && findtext(act,"?",lentext(act)) == 0 )
- act = addtext(act,".") //Makes sure all emotes end with a period.
- for (var/mob/O in viewers(src, null))
- O.show_message("[src] [act]")
-
+ if(act == "scream") act = "whimper" //ugly hack to stop animals screaming when crushed :P
+ ..(act, type, desc)
/mob/living/simple_animal/attack_animal(mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0)
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index 5876a874e9..8a28152a23 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -75,31 +75,32 @@
//tcomms code is still runtiming somewhere here
var/ending = copytext(text, length(text))
if (is_speaking_soghun)
- return "hisses, \"[text]\"";
+ return "hisses, \"[text]\"";
if (is_speaking_skrell)
- return "warbles, \"[text]\"";
+ return "warbles, \"[text]\"";
if (is_speaking_tajaran)
- return "mrowls, \"[text]\"";
+ return "mrowls, \"[text]\"";
//Needs Virus2
// if (src.disease_symptoms & DISEASE_HOARSE)
// return "rasps, \"[text]\"";
if (src.stuttering)
- return "stammers, \"[text]\"";
+ return "stammers, \"[text]\"";
if (src.slurring)
- return "slurrs, \"[text]\"";
+ return "slurrs, \"[text]\"";
if(isliving(src))
var/mob/living/L = src
if (L.getBrainLoss() >= 60)
- return "gibbers, \"[text]\"";
+ return "gibbers, \"[text]\"";
if (ending == "?")
- return "asks, \"[text]\"";
+ return "asks, \"[text]\"";
if (ending == "!")
- return "exclaims, \"[text]\"";
+ return "exclaims, \"[text]\"";
- return "says, \"[text]\"";
+ return "says, \"[text]\"";
-/mob/proc/emote(var/act)
- return
+/mob/proc/emote(var/act, var/type, var/message)
+ if(act == "me")
+ return custom_emote(type, message)
/mob/proc/get_ear()
// returns an atom representing a location on the map from which this
diff --git a/code/stylesheet.dm b/code/stylesheet.dm
index b838c9c77d..2481e247af 100644
--- a/code/stylesheet.dm
+++ b/code/stylesheet.dm
@@ -55,6 +55,7 @@ h1.alert, h2.alert {color: #000000;}
.tajaran {color: #803B56;}
.skrell {color: #00CED1;}
.soghun {color: #228B22;}
+.say_quote {font-family: Georgia, Verdana, sans-serif;}
.interface {color: #330033;}
"}