Revert "Megaphone Say Signals (#12926)" (#13551)

This commit is contained in:
Matt Atlas
2022-04-18 11:03:59 +02:00
committed by GitHub
parent 0ea3625895
commit d1d8a55f3d
20 changed files with 117 additions and 154 deletions
-2
View File
@@ -31,8 +31,6 @@
// /atom/movable signals
// /mob signals
/// called when a mob speaks, to determine the size of their spoken font. currently implemented in megaphones and mechas
#define COMSIG_SAY_MODIFIER "signal_say_modifier"
// /obj signals
/// when a hood is unequipped
-12
View File
@@ -450,15 +450,3 @@
#define ROBOT_EYES "eyetype"
#define BLOOD_REGEN_RATE 0.1
// Say modifiers
#define SAY_MOD_MESSAGE "message"
#define SAY_MOD_VERB "verb"
#define SAY_MOD_SPEAKING "speaking"
#define SAY_MOD_ALT_NAME "alt_name"
#define SAY_MOD_ITALICS "italics"
#define SAY_MOD_SPEECH_SOUND "speech_sound"
#define SAY_MOD_SOUND_VOL "sound_vol"
#define SAY_MOD_FONT_SIZE "font_size"
+10 -10
View File
@@ -350,7 +350,8 @@
/obj/item/proc/pickup(mob/user)
pixel_x = 0
pixel_y = 0
addtimer(CALLBACK(src, .proc/handle_pickup_drop, user), 1) // invoke async does not work here
if(flags & HELDMAPTEXT)
addtimer(CALLBACK(src, .proc/check_maptext), 1) // invoke async does not work here
do_pickup_animation(user)
// called when this item is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called.
@@ -523,7 +524,8 @@ var/list/global/slot_flags_enumeration = list(
// override for give shenanigans
/obj/item/proc/on_give(var/mob/giver, var/mob/receiver)
handle_pickup_drop(giver, FALSE)
if(flags & HELDMAPTEXT)
check_maptext()
//This proc is executed when someone clicks the on-screen UI button. To make the UI button show, set the 'icon_action_button' to the icon_state of the image of the button in screen1_action.dmi
//The default action is attack_self().
@@ -903,13 +905,15 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
else
maptext = ""
/obj/item/throw_at(atom/target, range, speed, thrower, do_throw_animation)
/obj/item/throw_at()
..()
handle_pickup_drop(thrower, FALSE)
if(flags & HELDMAPTEXT)
check_maptext()
/obj/item/dropped(var/mob/user)
..()
handle_pickup_drop(user, FALSE)
if(flags & HELDMAPTEXT)
check_maptext()
// used to check whether the item is capable of popping things like balloons, inflatable barriers, or cutting police tape.
/obj/item/proc/can_puncture()
@@ -952,13 +956,9 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
/obj/item/proc/get_head_examine_text(var/mob/user)
return "on [user.get_pronoun("his")] head"
/obj/item/proc/should_equip() // when you press E with an empty hand, will this item be pulled from suit storage / back slot and put into your hand
return FALSE
/obj/item/proc/can_swap_hands(var/mob/user)
return TRUE
/obj/item/proc/handle_pickup_drop(var/mob/M, var/picked_up = TRUE)
if(flags & HELDMAPTEXT)
check_maptext()
+50 -33
View File
@@ -10,42 +10,59 @@
w_class = ITEMSIZE_SMALL
flags = CONDUCT
var/active = FALSE
var/speech_sound = 'sound/items/megaphone.ogg'
var/spamcheck = 0
var/emagged = 0
var/insults = 0
var/list/insultmsg = list("FUCK EVERYONE!", "I'M A TATER!", "ALL SECURITY TO SHOOT ME ON SIGHT!", "I HAVE A BOMB!", "CAPTAIN IS A COMDOM!", "FOR THE SYNDICATE!")
var/activation_sound = 'sound/items/megaphone.ogg'
var/needs_user_location = TRUE
/obj/item/device/megaphone/handle_pickup_drop(var/mob/M, var/picked_up = TRUE)
..()
handle_signals(M, !picked_up)
/obj/item/device/megaphone/attack_self(mob/living/user as mob)
if(user.client)
if(user.client.prefs.muted & MUTE_IC)
to_chat(src, SPAN_WARNING("You cannot speak in IC (muted)."))
return
if(!ishuman(user))
to_chat(user, SPAN_WARNING("You don't know how to use this!"))
return
if(user.silent)
return
if(spamcheck > world.time)
to_chat(user, SPAN_WARNING("\The [src] needs to recharge!"))
return
/obj/item/device/megaphone/equipped(mob/user, slot, assisted_equip)
. = ..()
if(!(slot in list(slot_r_hand, slot_l_hand)))
handle_signals(user, TRUE)
/obj/item/device/megaphone/attack_self(mob/user)
active = !active
to_chat(user, SPAN_NOTICE("You turn \the [src] [active ? "on" : "off"]."))
handle_signals(user)
/obj/item/device/megaphone/proc/handle_signals(var/mob/M, var/disable = FALSE)
if(active && !disable)
RegisterSignal(M, COMSIG_SAY_MODIFIER, .proc/modify_say)
else
UnregisterSignal(M, COMSIG_SAY_MODIFIER)
/obj/item/device/megaphone/proc/modify_say(var/mob/M, var/list/say_modifiers)
if(say_modifiers[SAY_MOD_FONT_SIZE] < FONT_SIZE_LARGE)
say_modifiers[SAY_MOD_FONT_SIZE] = FONT_SIZE_LARGE
say_modifiers[SAY_MOD_VERB] = "broadcasts"
var/turf/T = get_turf(src)
if(T)
playsound(T, speech_sound, 100, FALSE, 1)
for(var/mob/living/carbon/human/H in range(T, 2) - M)
if(get_dist(T, H) < 1) // within one tile
H.earpain(3, TRUE, 2)
var/message = sanitize(input(user, "Shout a message?", "Megaphone", null) as text)
if(!message)
return
message = capitalize(message)
if ((user.stat == CONSCIOUS))
if(needs_user_location)
if(!src.loc == user)
return
if(emagged)
if(insults)
user.audible_message("<B>[user]</B> broadcasts, <FONT size=3>\"[pick(insultmsg)]\"</FONT>", "<B>[user]</B> speaks into \the [src].", 7)
insults--
else
H.earpain(2, TRUE, 2)
to_chat(user, SPAN_WARNING("*BZZZZzzzzzt*"))
else
user.audible_message("<B>[user]</B> broadcasts, <FONT size=3>\"[message]\"</FONT>", "<B>[user]</B> speaks into \the [src].", 7)
if(activation_sound)
playsound(loc, activation_sound, 100, 0, 1)
for (var/mob/living/carbon/human/C in range(user, 2) - user)
if (C in range(user, 1))
C.earpain(3, TRUE, 2)
else
C.earpain(2, TRUE, 2)
spamcheck = world.time + 50
return
/obj/item/device/megaphone/emag_act(var/remaining_charges, var/mob/user)
if(!emagged)
to_chat(user, SPAN_WARNING("You overload \the [src]'s voice synthesizer."))
emagged = 1
insults = rand(1, 3)//to prevent dickflooding
return 1
/obj/item/device/megaphone/red
name = "red megaphone"
+2 -6
View File
@@ -1434,12 +1434,8 @@ All custom items with worn sprites must follow the contained sprite system: http
item_state = "akinyi_mic"
w_class = ITEMSIZE_SMALL
contained_sprite = TRUE
speech_sound = null
/obj/item/device/megaphone/fluff/akinyi_mic/modify_say(mob/M, list/say_modifiers) // not a foolproof update, but will avoid most of the oddities with the megaphone rewrite
if(loc != M && get_dist(get_turf(src), M) > 1)
return
return ..()
activation_sound = null
needs_user_location = FALSE
/obj/item/fluff/akinyi_stand //Telescopic Mic Stand - Akinyi Idowu - kyres1
name = "telescopic mic stand"
@@ -338,9 +338,8 @@
/obj/screen/mecha/toggle/megaspeakers/toggled()
toggled = !toggled
owner.loudening = toggled
owner.handle_loudening_signals()
var/main_color = owner.loudening ? "#d1d1d1" : "#525252"
maptext = "<span style=\"font-family: 'Small Fonts'; color: [main_color]; -dm-text-outline: 1 #242424; font-size: 5px;\">VOLUME</span>"
notify_user(usr, SPAN_NOTICE("You [owner.loudening ? "activate" : "deactivate"] \the [owner]'s integrated megaspeakers."))
#undef BAR_CAP
#undef BAR_CAP
+3 -33
View File
@@ -236,7 +236,6 @@
user.forceMove(src)
LAZYDISTINCTADD(pilots, user)
sync_access()
handle_loudening_signals(user)
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
if(user.client) user.client.screen |= hud_elements
LAZYDISTINCTADD(user.additional_vision_handlers, src)
@@ -275,7 +274,6 @@
set_intent(I_HURT)
LAZYREMOVE(pilots, user)
UNSETEMPTY(pilots)
handle_loudening_signals(user, TRUE)
/mob/living/heavy_vehicle/relaymove(var/mob/living/user, var/direction)
if(!can_move(user))
@@ -666,13 +664,13 @@
if(toggle_lock())
say("Hatch [hatch_locked ? "locked" : "unlocked"].")
return
// unlink the leader to get a new one
if(findtext(text, "unlink"))
unassign_leader()
say("Leader dropped, awaiting new leader.")
return
// stop following who you were assigned to follow
if(findtext(text, "stop"))
unassign_following()
@@ -708,32 +706,4 @@
assign_following(H)
say("Following [ID.registered_name].")
break
return
/mob/living/heavy_vehicle/proc/handle_loudening_signals(var/specific_mob = null, var/disable = FALSE)
if(loudening && !disable)
if(specific_mob)
RegisterSignal(specific_mob, COMSIG_SAY_MODIFIER, .proc/modify_say)
return
for(var/mob/M as anything in pilots)
RegisterSignal(M, COMSIG_SAY_MODIFIER, .proc/modify_say)
else
if(specific_mob)
UnregisterSignal(specific_mob, COMSIG_SAY_MODIFIER)
return
for(var/mob/M as anything in pilots)
UnregisterSignal(M, COMSIG_SAY_MODIFIER)
// For any future devs, you can add a sound here if you want, it just needs to be deep and rumbly - geeves
/mob/living/heavy_vehicle/proc/modify_say(var/mob/M, var/list/say_modifiers)
if(say_modifiers[SAY_MOD_FONT_SIZE] < FONT_SIZE_LARGE)
say_modifiers[SAY_MOD_FONT_SIZE] = FONT_SIZE_LARGE
say_modifiers[SAY_MOD_VERB] = "broadcasts"
var/turf/T = get_turf(src)
if(T)
for(var/mob/living/carbon/human/H in range(T, 2) - M)
if(get_dist(T, H) < 1) // within one tile
H.earpain(3, TRUE, 2)
else
H.earpain(2, TRUE, 2)
return
+5 -4
View File
@@ -10,15 +10,16 @@ var/list/floating_chat_colors = list()
/atom/movable/proc/set_floating_chat_color(color)
floating_chat_colors[name] = color
/atom/movable/proc/animate_chat(message, datum/language/language, fontsize, list/show_to, duration, override_color)
/atom/movable/proc/animate_chat(message, datum/language/language, small, list/show_to, duration, override_color)
set waitfor = FALSE
var/style //additional style params for the message
var/fontsize = 6
if(small)
fontsize = 5
var/limit = 50
if(copytext(message, length(message) - 1) == "!!" && fontsize < 8)
if(copytext(message, length(message) - 1) == "!!")
fontsize = 8
if(fontsize >= 8)
limit = 30
style += "font-weight: bold;"
+19 -25
View File
@@ -151,7 +151,14 @@ proc/get_radio_key_from_channel(var/channel)
return "asks"
return verb
/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE)
/mob/living/proc/get_font_size_modifier()
if(ismech(loc))
var/mob/living/heavy_vehicle/HV = loc
if(HV.loudening)
return FONT_SIZE_LARGE
return null
/mob/living/say(var/message, var/datum/language/speaking = null, var/verb, var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE)
if(stat)
if(stat == DEAD)
return say_dead(message)
@@ -288,24 +295,10 @@ proc/get_radio_key_from_channel(var/channel)
get_mobs_and_objs_in_view_fast(T, message_range, listening, listening_obj, ghost_hearing)
if(whisper)
log_whisper("[key_name(src)] : ([get_lang_name(speaking)]) [message]",ckey=key_name(src))
else
log_say("[key_name(src)] : ([get_lang_name(speaking)]) [message]",ckey=key_name(src))
var/list/hear_clients = list()
var/list/hear_say_list = list(SAY_MOD_MESSAGE = message, SAY_MOD_VERB = verb, SAY_MOD_SPEAKING = speaking, SAY_MOD_ALT_NAME = alt_name, SAY_MOD_ITALICS = italics, SAY_MOD_SPEECH_SOUND = speech_sound, SAY_MOD_SOUND_VOL = sound_vol, SAY_MOD_FONT_SIZE = FONT_SIZE_NORMAL)
SEND_SIGNAL(src, COMSIG_SAY_MODIFIER, hear_say_list)
message = hear_say_list[SAY_MOD_MESSAGE]
verb = hear_say_list[SAY_MOD_VERB]
speaking = hear_say_list[SAY_MOD_SPEAKING]
alt_name = hear_say_list[SAY_MOD_ALT_NAME]
italics = hear_say_list[SAY_MOD_ITALICS]
speech_sound = hear_say_list[SAY_MOD_SPEECH_SOUND]
sound_vol = hear_say_list[SAY_MOD_SOUND_VOL]
var/font_size = hear_say_list[SAY_MOD_FONT_SIZE]
for(var/mob/M as anything in listening)
var/heard_say = M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol, font_size)
for(var/m in listening)
var/mob/M = m
var/heard_say = M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol, get_font_size_modifier())
if(heard_say && M.client)
hear_clients += M.client
@@ -313,11 +306,7 @@ proc/get_radio_key_from_channel(var/channel)
var/image/speech_bubble = image(get_talk_bubble(),src,"h[speech_bubble_test]")
speech_bubble.appearance_flags = RESET_COLOR|RESET_ALPHA
INVOKE_ASYNC(GLOBAL_PROC, /proc/animate_speechbubble, speech_bubble, hear_clients, 30)
var/animate_fontsize = italics ? 5 : 6
if(font_size > FONT_SIZE_NORMAL)
animate_fontsize += 2
do_animate_chat(message, speaking, animate_fontsize, hear_clients, 30)
do_animate_chat(message, speaking, italics, hear_clients, 30)
var/bypass_listen_obj = (speaking && (speaking.flags & PASSLISTENOBJ))
if(!bypass_listen_obj)
@@ -328,10 +317,15 @@ proc/get_radio_key_from_channel(var/channel)
if(mind)
mind.last_words = message
if(whisper)
log_whisper("[key_name(src)] : ([get_lang_name(speaking)]) [message]",ckey=key_name(src))
else
log_say("[key_name(src)] : ([get_lang_name(speaking)]) [message]",ckey=key_name(src))
return 1
/mob/living/proc/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/proc/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/proc/animate_speechbubble(image/I, list/show_to, duration)
var/matrix/M = matrix()
@@ -174,5 +174,5 @@
if(healths.icon_state != newstate)
healths.icon_state = newstate
/mob/living/simple_animal/construct/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/construct/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
@@ -334,8 +334,8 @@
radio.talk_into(src, message, message_mode, verb, speaking)
used_radios += radio
/mob/living/simple_animal/spiderbot/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/spiderbot/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/mob/living/simple_animal/spiderbot/proc/control_integrated_radio()
set name = "Radio Settings"
@@ -53,8 +53,8 @@
icon_living = "horror_alt"
icon_dead = "horror_alt_dead"
/mob/living/simple_animal/hostile/true_changeling/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/hostile/true_changeling/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/mob/living/simple_animal/hostile/true_changeling/Life()
..()
@@ -236,4 +236,4 @@
mind.transfer_to(occupant)
visible_message("<span class='warning'>\The [src] explodes into a shower of gore!</span>")
gibs(src.loc)
qdel(src)
qdel(src)
@@ -68,8 +68,8 @@
..()
check_horde()
/mob/living/simple_animal/hostile/faithless/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/hostile/faithless/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/mob/living/simple_animal/hostile/faithless/can_fall()
return FALSE
@@ -78,4 +78,4 @@
return TRUE
/mob/living/simple_animal/hostile/faithless/CanAvoidGravity()
return TRUE
return TRUE
@@ -36,8 +36,8 @@
var/mob/living/simple_animal/hostile/hivebotbeacon/linked_parent = null
psi_pingable = FALSE
/mob/living/simple_animal/hostile/hivebot/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/hostile/hivebot/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/mob/living/simple_animal/hostile/hivebot/get_bullet_impact_effect_type(var/def_zone)
return BULLET_IMPACT_METAL
@@ -178,4 +178,4 @@
do_teleport(src, random_turf)
/mob/living/simple_animal/hostile/hivebot/proc/wakeup()
stance = HOSTILE_STANCE_IDLE
stance = HOSTILE_STANCE_IDLE
@@ -64,7 +64,7 @@
. = ..()
set_light(1.2, 3, LIGHT_COLOR_BLUE)
if(prob(5))
projectiletype = /obj/item/projectile/beam/pulse/drone
projectilesound = 'sound/weapons/pulse2.ogg'
@@ -106,8 +106,8 @@
else
to_chat(user, SPAN_WARNING("Most of its lights are off, and its targetting vanes are retracted."))
/mob/living/simple_animal/hostile/icarus_drone/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/hostile/icarus_drone/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/mob/living/simple_animal/hostile/icarus_drone/Allow_Spacemove(var/check_drift = 0)
return TRUE
@@ -363,4 +363,4 @@
emote_see = list("beeps menacingly", "whirrs threateningly", "scans its immediate vicinity")
belongs_to_station = FALSE
malfunctioning = TRUE
faction = "malf_drone"
faction = "malf_drone"
@@ -247,5 +247,5 @@
spell_master.open_state = "morph_open"
spell_master.closed_state = "morph_closed"
/mob/living/simple_animal/hostile/morph/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/hostile/morph/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
@@ -64,8 +64,8 @@
add_language(LANGUAGE_SIIK_MAAS)
set_default_language(all_languages[LANGUAGE_SIIK_MAAS])
/mob/living/simple_animal/hostile/republicon/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/hostile/republicon/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/mob/living/simple_animal/hostile/republicon/get_bullet_impact_effect_type(var/def_zone)
return BULLET_IMPACT_METAL
@@ -122,8 +122,8 @@
..()
stat("Held Item", held_item)
/mob/living/simple_animal/parrot/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/parrot/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/*
* Inventory
@@ -51,8 +51,8 @@
/mob/living/simple_animal/shade/can_name(var/mob/living/M)
return FALSE
/mob/living/simple_animal/shade/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, font_size, show_to, duration)
/mob/living/simple_animal/shade/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/mob/living/simple_animal/shade/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
if(istype(O, /obj/item/device/soulstone))
@@ -779,8 +779,8 @@
var/can_ghosts_hear = client ? GHOSTS_ALL_HEAR : ONLY_GHOSTS_IN_VIEW
..(message, null, verb, ghost_hearing = can_ghosts_hear)
/mob/living/simple_animal/do_animate_chat(var/message, var/datum/language/language, var/font_size, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, pick(speak), language, font_size, show_to, duration)
/mob/living/simple_animal/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, pick(speak), language, small, show_to, duration)
/mob/living/simple_animal/get_speech_ending(verb, var/ending)
return verb