diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index 47311cc994b..65a09d23ea3 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -63,7 +63,7 @@ VampyrBytes message = createMessage(user, params) if(message) - . = outputMessage(user, message) + . = outputMessage(user, message, params) var/played = 0 if(!doMime(user)) @@ -168,9 +168,8 @@ VampyrBytes /datum/emote/proc/mimeMessage(var/mob/user, var/list/params) if(!mimeText) return - if(takesNumber && "num" in params) - if(params["num"] != null) - return paramMimeMessage(user, params) + if(checkForParams(params)) + return paramMimeMessage(user, params) var/message = "[user] [mimeText]" if(message && "target" in params) if(params["target"]) @@ -210,17 +209,17 @@ VampyrBytes message = replacetext(message, text, selfText) return message -/datum/emote/proc/outputMessage(var/mob/user, var/message = "") +/datum/emote/proc/outputMessage(var/mob/user, var/message = "", var/list/params) if(!message) return log_emote("[user.name]/[user.key] : [message]") sendToDead(message) if(audible) - return audible_message(message, user) + return audible_message(message, user, params) else - return visible_message(message, user) + return visible_message(message, user, params) -/datum/emote/proc/visible_message(var/message = "", var/mob/user) +/datum/emote/proc/visible_message(var/message = "", var/mob/user, var/list/params) var/selfMessage = createSelfMessage(user, message) for(var/mob/M in viewers(user)) if(M.see_invisible < user.invisibility) @@ -228,25 +227,25 @@ VampyrBytes var/msg = message if(selfMessage && M==user) msg = selfMessage - if(M.sdisabilities & BLIND || M.blinded || M.paralysis) + else if(M.sdisabilities & BLIND || M.blinded || M.paralysis) if(M.sdisabilities & DEAF || M.ear_deaf) continue - msg = createBlindMessage(message, user) + msg = createBlindMessage(message, user, params) if(msg) outputAudibleMessage(msg, M, user, 1) else - outputVisibleMessage(msg, M, user) + outputVisibleMessage(msg, M, user, params) return 1 -/datum/emote/proc/audible_message(var/message = "", var/mob/user) +/datum/emote/proc/audible_message(var/message = "", var/mob/user, var/list/params) if(doMime(user)) return visible_message(message, user) var/selfMessage = createSelfMessage(user, message) for(var/mob/M in get_mobs_in_view(7, user)) var/msg = message - if(selfMessage && M==src) + if(selfMessage && M==user) msg = selfMessage - if(M.sdisabilities & DEAF || M.ear_deaf) + else if(M.sdisabilities & DEAF || M.ear_deaf) if(M.sdisabilities & BLIND || M.blinded || M.paralysis) continue msg = createDeafMessage(user, message) @@ -256,7 +255,7 @@ VampyrBytes outputAudibleMessage(msg, M, user) return 2 -/datum/emote/proc/outputVisibleMessage(var/message, var/mob/recipient, var/mob/user, var/retest = 0) +/datum/emote/proc/outputVisibleMessage(var/message, var/mob/recipient, var/mob/user, var/list/params, var/retest = 0) if(retest) if(!user) return @@ -270,16 +269,16 @@ VampyrBytes if(!found) return if(recipient.sdisabilities & DEAF || recipient.ear_deaf) - var/msg = createDeafMessage(user, message) - if(msg) - message = msg + if(!(recipient == user)) + var/msg = createDeafMessage(user, message, params) + if(msg) + message = msg if(recipient.stat == UNCONSCIOUS || (recipient.sleeping > 0 && recipient.stat != 2)) to_chat(recipient, "... You can almost hear someone talking ...") else to_chat(recipient, message) -/datum/emote/proc/outputAudibleMessage(var/message = "", var/mob/recipient, var/mob/user, var/retest = 0) - +/datum/emote/proc/outputAudibleMessage(var/message = "", var/mob/recipient, var/mob/user, var/list/params, var/retest = 0) if(retest) if(!user) return @@ -291,9 +290,10 @@ VampyrBytes if(!found) return if(recipient.sdisabilities & BLIND || recipient.blinded || recipient.paralysis) - var/msg = createBlindMessage(user, message) - if(msg) - message = msg + if(!(recipient == user)) + var/msg = createBlindMessage(user, message, params) + if(msg) + message = msg if(recipient.stat == UNCONSCIOUS || (recipient.sleeping > 0 && recipient.stat != 2)) to_chat(recipient, "... You can almost hear someone talking ...") else @@ -301,13 +301,14 @@ VampyrBytes // set up different messages for blind people here. Empty will mean no message for //non-audible emotes and the standard message for audible ones -/datum/emote/proc/createBlindMessage(var/mob/user, var/message) - return +/datum/emote/proc/createBlindMessage(var/mob/user, var/message, var/list/params) + if(audible && selfText) + return "You hear someone [selfText]" // set up different messages for deaf people here. Empty will mean no message for // audible emotes and standard for non-audible ones -/datum/emote/proc/createDeafMessage(var/mob/user, var/message) - return +/datum/emote/proc/createDeafMessage(var/mob/user, var/message, var/list/params) + return mimeMessage(user, params) /datum/emote/proc/sendToDead(message) for(var/mob/M in dead_mob_list) diff --git a/code/datums/Emote_system/emotes.dm b/code/datums/Emote_system/emotes.dm index 8a03a1febc9..12d30be4c26 100644 --- a/code/datums/Emote_system/emotes.dm +++ b/code/datums/Emote_system/emotes.dm @@ -204,9 +204,18 @@ above it. If you don't want this, make the call to ..() then use commands = new selfText = "burp" muzzledNoise = "peculiar" mimeText = "opens their mouth rather obnoxiously" + audible = 1 +/datum/emote/burp/New() + ..() + commands += "burp" + commands += "burps" - +/datum/emote/burp/available(var/mob/user) + if(ishuman(user)) + return 1 + if(istype(user, /mob/living/carbon/alien/larva) || istype(user, /mob/living/carbon/alien/humanoid)) + return 1 /datum/emote/scream name = "scream"