From bcfe01b03867b0ca01c216a1aafef03af4ba8f71 Mon Sep 17 00:00:00 2001 From: VampyrBytes Date: Tue, 10 May 2016 03:19:00 +0100 Subject: [PATCH] 1st batch of emotes + tweaks --- code/datums/Emote_system/emote.dm | 6 +- code/datums/Emote_system/emote_handler.dm | 9 +- code/datums/Emote_system/emotes.dm | 195 ++++++++++++++++++++++ 3 files changed, 205 insertions(+), 5 deletions(-) diff --git a/code/datums/Emote_system/emote.dm b/code/datums/Emote_system/emote.dm index 75c8314ce7a..f6b8feaebbc 100644 --- a/code/datums/Emote_system/emote.dm +++ b/code/datums/Emote_system/emote.dm @@ -29,7 +29,7 @@ VampyrBytes var/spanClass = "notice" var/baseLevel = 1 - var/baseSet = 0 + var/allowParent = 0 // 1 if you want the parent available as well as this one /datum/emote/New() @@ -107,6 +107,10 @@ VampyrBytes return "you are unconscious" if(restrained && user.restrained()) return "you are restrained" + if(isbrain(user)) + var/mob/living/carbon/brain/brain = user + if(!(brain.container && istype(brain.container, /obj/item/device/mmi))) + return "you need to be in an mmi to do this" // return 1 if this emote can be used by this type of user /datum/emote/proc/available(var/mob/user) diff --git a/code/datums/Emote_system/emote_handler.dm b/code/datums/Emote_system/emote_handler.dm index c036954bbaa..422892b847b 100644 --- a/code/datums/Emote_system/emote_handler.dm +++ b/code/datums/Emote_system/emote_handler.dm @@ -13,7 +13,7 @@ commands = new/list() for(var/e in emotes) var/datum/emote/emote = e - if(emote.baseLevel) + if(emote.baseLevel || emote.allowParent) var/datum/emote/found = searchTree(emote) if(found) for(var/command in found.commands) @@ -33,7 +33,6 @@ return 1 var/datum/emote/emote - //testing("[command]") if(command == "me") emote = customEmote(message, audible) if(!emote) @@ -69,8 +68,10 @@ var/list/subtypes = subtypesof(emote.type) var/datum/emote/found for(var/t in subtypes) - var/datum/emote/em = new t // not keen on this, but it's this or loop through the emotes list and the - found = searchTree(em) // thought of a nested for loop in a recursive proc makes me want to *cry - VB + var/datum/emote/em = new t + if(em.allowParent) + continue + found = searchTree(em, 1) if(found) return (found) if(emote.available(owner)) diff --git a/code/datums/Emote_system/emotes.dm b/code/datums/Emote_system/emotes.dm index 691ad7ab26e..509ff9eca2a 100644 --- a/code/datums/Emote_system/emotes.dm +++ b/code/datums/Emote_system/emotes.dm @@ -5,6 +5,201 @@ are set in New(), this means that the emote will pick up all the commands from t above it. If you don't want this, make the call to ..() then use commands = new /list() *************************************************************************************/ +/datum/emote/airguitar + name = "airguitar" + desc = "Play an air guitar" + text = "is strumming the air and headbanging like a safari chimp." + selfText = "are strumming the air and headbanging like a safari chimp." + restrained = 1 + +/datum/emote/airguitar/New() + ..() + commands += "airguitar" + +/datum/emote/airguitar/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isrobot(user)) + return 1 + +/datum/emote/alarm + name = "alarm" + desc = "Sound an alarm" + text = "sounds an alarm" + selfText = "sound an alarm" + audible = 1 + +/datum/emote/alarm/New() + ..() + commands += "alarm" + +/datum/emote/alarm/available(var/mob/user) + if(isbrain(user)) + return 1 + +/datum/emote/alarm/createBlindMessage(var/mob/user, var/messaage) + return "You hear an alarm" + +/datum/emote/alert + name = "alert" + desc = "Sound an alert" + text = "lets out a distressed noise" + selfText = "let out a distressed noise)" + audible = 1 + +/datum/emote/alert/New() + ..() + commands += "alert" + +/datum/emote/alert/available(var/mob/user) + if(isbrain(user)) + return 1 +/datum/emote/alert/createBlindMessage(var/mob/user, var/message) + return "you hear an alert" + +/datum/emote/beep + name = "beep" + desc = "let out a beep" + text = "beeps" + selfText = "beep" + audible = 1 + +/datum/emote/beep/New() + ..() + commands += "beep" + commands += "beeps" + +/datum/emote/beep/available(var/mob/user) + if(isbrain(user)) + return 1 + +/datum/emote/beep/createBlindMessage(var/mob/user, var/message) + return "You hear a beep" + +/datum/emote/beep/targetted + cooldown = 1 + sound = 'sound/machines/twobeep.ogg' + canTarget = 1 + targetMob = 1 + +/datum/emote/beep/targetted/available(var/mob/user) + if(issilicon(user)) + return 1 + if(isbot(user)) + return 1 + if(user.get_species() == "Machine") + return 1 + +/datum/emote/blink + name = "blink" + desc = "blink" + text = "blinks" + selfText = "blink" + +/datum/emote/blink/New() + ..() + commands += "blink" + commands += "blinks" + +/datum/emote/blink/available(var/mob/user) + if(ishuman(user)) + return 1 + if(isbrain(user)) + return 1 + +/datum/emote/blink/rapid + name = "rapid blink" + desc = "blink rapidly" + allowParent = 1 + +/datum/emote/blink/rapid/New() + ..() + commands = new/list() + commands += "blink_r" + commands += "blinks_r" + +/datum/emote/blink/rapid/available(var/mob/user) + if(ishuman(user)) + return + +/datum/emote/blink/rapid/createMessage(var/mob/user, var/number) + var/message = ..() + message += " rapidly" + return message + +/datum/emote/blush + name = "blush" + desc = "blush" + text = "blushes" + selfText = "blush" + +/datum/emote/blush/New() + ..() + commands += "blush" + commands += "blushes" + +/datum/emote/blush/available(var/mob/user) + if(ishuman(user)) + return 1 + +/datum/emote/boop + name = "boop" + desc = "boop" + text = "boops" + selfText = "boop" + +/datum/emote/boop/New() + ..() + commands += "boop" + commands += "boops" + +/datum/emote/boop/available(var/mob/user) + if(isbrain(user)) + return 1 + +/datum/emote/bounce + name = "bounce" + desc = "bounce" + text = "bounces in place" + selfText = "bounce in place" + +/datum/emote/bounce/New() + ..() + commands += "bounce" + commands += "bounces" + +/datum/emote/bounce/available(var/mob/user) + if(isslime(user)) + return 1 + +/datum/emote/bow + name = "bow" + desc = "bow" + text = "bows" + selfText = "bow" + canTarget = 1 + targetMob = 1 + targetText = "to" + +/datum/emote/bow/New() + ..() + commands += "bow" + commands += "bows" + +/datum/emote/bow/available(var/mob/user) + if(isrobot(user)) + return 1 + if(ishuman(user)) + return 1 + +/datum/emote/bow/prevented(var/mob/user) + . = ..() + if(!. && user.buckled) + return "you are buckled to something" + + + + /datum/emote/scream name = "scream" text = "screams!"