From db0dd61a961114d100aa4374fe6edd1065eb46f9 Mon Sep 17 00:00:00 2001 From: Gamer025 <33846895+Gamer025@users.noreply.github.com> Date: Tue, 2 Feb 2021 21:30:13 +0100 Subject: [PATCH] Fixes emote runtime / changes how emotes work for ghosts (#56519) * Fixes / refactors emotes Crack emote no longer runtimes Ghosts can use help emote Exhale / inhale emote only work for living Move beep emote living subtype Help emote no longer tells you that you can't use it * Remove var in arguments Lint * Replace loop with join --- code/datums/components/manual_breathing.dm | 8 ++--- .../modules/mob/dead/observer/observer_say.dm | 2 +- code/modules/mob/emote.dm | 22 ++++++++++++ code/modules/mob/living/carbon/emote.dm | 2 +- code/modules/mob/living/emote.dm | 34 ++----------------- 5 files changed, 31 insertions(+), 37 deletions(-) diff --git a/code/datums/components/manual_breathing.dm b/code/datums/components/manual_breathing.dm index e71303dad02..9b812b3bdd3 100644 --- a/code/datums/components/manual_breathing.dm +++ b/code/datums/components/manual_breathing.dm @@ -8,7 +8,7 @@ var/check_every = 12 SECONDS var/grace_period = 6 SECONDS var/damage_rate = 1 // organ damage taken per tick - var/datum/emote/next_breath_type = /datum/emote/inhale + var/datum/emote/next_breath_type = /datum/emote/living/inhale /datum/component/manual_breathing/Initialize() if(!iscarbon(parent)) @@ -90,10 +90,10 @@ SIGNAL_HANDLER if(emote.type == next_breath_type) - if(next_breath_type == /datum/emote/inhale) - next_breath_type = /datum/emote/exhale + if(next_breath_type == /datum/emote/living/inhale) + next_breath_type = /datum/emote/living/exhale else - next_breath_type = /datum/emote/inhale + next_breath_type = /datum/emote/living/inhale warn_grace = FALSE warn_dying = FALSE diff --git a/code/modules/mob/dead/observer/observer_say.dm b/code/modules/mob/dead/observer/observer_say.dm index 2ddeb8b5c09..fb6244958be 100644 --- a/code/modules/mob/dead/observer/observer_say.dm +++ b/code/modules/mob/dead/observer/observer_say.dm @@ -1,5 +1,5 @@ /mob/dead/observer/check_emote(message, forced) - if(message == "*spin" || message == "*flip") + if(message[1] == "*") emote(copytext(message, length(message[1]) + 1), intentional = !forced) return TRUE diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 86a6689bf8a..bf460298d2d 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -32,6 +32,28 @@ to_chat(src, "Unusable emote '[act]'. Say *help for a list.") return FALSE +/datum/emote/help + key = "help" + mob_type_ignore_stat_typecache = list(/mob/dead/observer, /mob/living/silicon/ai) + +/datum/emote/help/run_emote(mob/user, params, type_override, intentional) + . = ..() + var/list/keys = list() + var/list/message = list("Available emotes, you can use them with say \"*emote\": ") + + for(var/key in GLOB.emote_list) + for(var/datum/emote/P in GLOB.emote_list[key]) + if(P.key in keys) + continue + if(P.can_run_emote(user, status_check = FALSE , intentional = TRUE)) + keys += P.key + + keys = sortList(keys) + message += keys.Join(", ") + message += "." + message = message.Join("") + to_chat(user, message) + /datum/emote/flip key = "flip" key_third_person = "flips" diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 4e215899411..b2ee2e57e37 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -42,7 +42,7 @@ cooldown = 6 SECONDS /datum/emote/living/carbon/crack/can_run_emote(mob/living/carbon/user, status_check = TRUE , intentional) - if(user.usable_hands < 2) + if(!iscarbon(user) || user.usable_hands < 2) return FALSE return ..() /datum/emote/living/carbon/moan diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index f4081811559..4a620418bd0 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -455,35 +455,7 @@ /datum/emote/living/custom/replace_pronoun(mob/user, message) return message -/datum/emote/living/help - key = "help" - -/datum/emote/living/help/run_emote(mob/user, params, type_override, intentional) - var/list/keys = list() - var/list/message = list("Available emotes, you can use them with say \"*emote\": ") - - for(var/key in GLOB.emote_list) - for(var/datum/emote/P in GLOB.emote_list[key]) - if(P.key in keys) - continue - if(P.can_run_emote(user, status_check = FALSE , intentional = TRUE)) - keys += P.key - - keys = sortList(keys) - - for(var/emote in keys) - if(LAZYLEN(message) > 1) - message += ", [emote]" - else - message += "[emote]" - - message += "." - - message = jointext(message, "") - - to_chat(user, message) - -/datum/emote/beep +/datum/emote/living/beep key = "beep" key_third_person = "beeps" message = "beeps." @@ -492,13 +464,13 @@ mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon) emote_type = EMOTE_AUDIBLE -/datum/emote/inhale +/datum/emote/living/inhale key = "inhale" key_third_person = "inhales" message = "breathes in." emote_type = EMOTE_AUDIBLE -/datum/emote/exhale +/datum/emote/living/exhale key = "exhale" key_third_person = "exhales" message = "breathes out."