diff --git a/code/__defines/dcs/signals.dm b/code/__defines/dcs/signals.dm index ec05e0a8bc2..cac0200aa6e 100644 --- a/code/__defines/dcs/signals.dm +++ b/code/__defines/dcs/signals.dm @@ -31,6 +31,8 @@ // /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 diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 8f1f158fdee..0a2ec40b64d 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -450,3 +450,15 @@ #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" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 15fecfd12f4..a33c395b228 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -350,8 +350,7 @@ /obj/item/proc/pickup(mob/user) pixel_x = 0 pixel_y = 0 - if(flags & HELDMAPTEXT) - addtimer(CALLBACK(src, .proc/check_maptext), 1) // invoke async does not work here + addtimer(CALLBACK(src, .proc/handle_pickup_drop, user), 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. @@ -524,8 +523,7 @@ var/list/global/slot_flags_enumeration = list( // override for give shenanigans /obj/item/proc/on_give(var/mob/giver, var/mob/receiver) - if(flags & HELDMAPTEXT) - check_maptext() + handle_pickup_drop(giver, FALSE) //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(). @@ -905,15 +903,13 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. else maptext = "" -/obj/item/throw_at() +/obj/item/throw_at(atom/target, range, speed, thrower, do_throw_animation) ..() - if(flags & HELDMAPTEXT) - check_maptext() + handle_pickup_drop(thrower, FALSE) /obj/item/dropped(var/mob/user) ..() - if(flags & HELDMAPTEXT) - check_maptext() + handle_pickup_drop(user, FALSE) // used to check whether the item is capable of popping things like balloons, inflatable barriers, or cutting police tape. /obj/item/proc/can_puncture() @@ -956,9 +952,13 @@ 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() diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 392c3047403..b9966e59083 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -10,59 +10,42 @@ w_class = ITEMSIZE_SMALL flags = CONDUCT - 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 + var/active = FALSE + var/speech_sound = 'sound/items/megaphone.ogg' -/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/handle_pickup_drop(var/mob/M, var/picked_up = TRUE) + ..() + handle_signals(M, !picked_up) - 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("[user] broadcasts, \"[pick(insultmsg)]\"", "[user] speaks into \the [src].", 7) - insults-- +/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) else - to_chat(user, SPAN_WARNING("*BZZZZzzzzzt*")) - else - user.audible_message("[user] broadcasts, \"[message]\"", "[user] 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 + H.earpain(2, TRUE, 2) /obj/item/device/megaphone/red name = "red megaphone" diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 0a3e95b1f52..b72a543ccab 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -1434,8 +1434,12 @@ All custom items with worn sprites must follow the contained sprite system: http item_state = "akinyi_mic" w_class = ITEMSIZE_SMALL contained_sprite = TRUE - activation_sound = null - needs_user_location = FALSE + 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 ..() /obj/item/fluff/akinyi_stand //Telescopic Mic Stand - Akinyi Idowu - kyres1 name = "telescopic mic stand" diff --git a/code/modules/heavy_vehicle/interface/screen_objects.dm b/code/modules/heavy_vehicle/interface/screen_objects.dm index 21bfecf3869..1eef5786bd4 100644 --- a/code/modules/heavy_vehicle/interface/screen_objects.dm +++ b/code/modules/heavy_vehicle/interface/screen_objects.dm @@ -338,8 +338,9 @@ /obj/screen/mecha/toggle/megaspeakers/toggled() toggled = !toggled owner.loudening = toggled + owner.handle_loudening_signals() var/main_color = owner.loudening ? "#d1d1d1" : "#525252" maptext = "VOLUME" notify_user(usr, SPAN_NOTICE("You [owner.loudening ? "activate" : "deactivate"] \the [owner]'s integrated megaspeakers.")) -#undef BAR_CAP \ No newline at end of file +#undef BAR_CAP diff --git a/code/modules/heavy_vehicle/mech_interaction.dm b/code/modules/heavy_vehicle/mech_interaction.dm index a98875765e7..d0491bf65b6 100644 --- a/code/modules/heavy_vehicle/mech_interaction.dm +++ b/code/modules/heavy_vehicle/mech_interaction.dm @@ -236,6 +236,7 @@ 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) @@ -274,6 +275,7 @@ 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)) @@ -664,13 +666,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() @@ -706,4 +708,32 @@ assign_following(H) say("Following [ID.registered_name].") break - return \ No newline at end of file + 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) diff --git a/code/modules/mob/floating_messages.dm b/code/modules/mob/floating_messages.dm index f17b2a5c42a..48e3a3e843a 100644 --- a/code/modules/mob/floating_messages.dm +++ b/code/modules/mob/floating_messages.dm @@ -10,16 +10,15 @@ 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, small, list/show_to, duration, override_color) +/atom/movable/proc/animate_chat(message, datum/language/language, fontsize, 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) == "!!") + if(copytext(message, length(message) - 1) == "!!" && fontsize < 8) fontsize = 8 + + if(fontsize >= 8) limit = 30 style += "font-weight: bold;" diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 17d52383b2c..adc67974d5b 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -151,14 +151,7 @@ proc/get_radio_key_from_channel(var/channel) return "asks" return verb -/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) +/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) if(stat) if(stat == DEAD) return say_dead(message) @@ -295,10 +288,24 @@ 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() - 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()) + 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) if(heard_say && M.client) hear_clients += M.client @@ -306,7 +313,11 @@ 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) - do_animate_chat(message, speaking, italics, 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) var/bypass_listen_obj = (speaking && (speaking.flags & PASSLISTENOBJ)) if(!bypass_listen_obj) @@ -317,15 +328,10 @@ 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/small, var/list/show_to, var/duration) - INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration) +/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) /proc/animate_speechbubble(image/I, list/show_to, duration) var/matrix/M = matrix() diff --git a/code/modules/mob/living/simple_animal/constructs/constructs/cult_construct.dm b/code/modules/mob/living/simple_animal/constructs/constructs/cult_construct.dm index 1502cef27f1..617d9fef133 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs/cult_construct.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs/cult_construct.dm @@ -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/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) \ No newline at end of file +/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) diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 0b36c275454..d2d8c207df3 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -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/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/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/proc/control_integrated_radio() set name = "Radio Settings" diff --git a/code/modules/mob/living/simple_animal/hostile/changeling.dm b/code/modules/mob/living/simple_animal/hostile/changeling.dm index 69b21eabef8..c0c9b94bd16 100644 --- a/code/modules/mob/living/simple_animal/hostile/changeling.dm +++ b/code/modules/mob/living/simple_animal/hostile/changeling.dm @@ -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/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/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/Life() ..() @@ -236,4 +236,4 @@ mind.transfer_to(occupant) visible_message("\The [src] explodes into a shower of gore!") gibs(src.loc) - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 99237d206f6..614598fec9c 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -68,8 +68,8 @@ ..() check_horde() -/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/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/can_fall() return FALSE @@ -78,4 +78,4 @@ return TRUE /mob/living/simple_animal/hostile/faithless/CanAvoidGravity() - return TRUE \ No newline at end of file + return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm index 7e01dcb8fa4..d7667f91ca4 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm @@ -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/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/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/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 \ No newline at end of file + stance = HOSTILE_STANCE_IDLE diff --git a/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm b/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm index 34f536a7f07..d6be70f587b 100644 --- a/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm @@ -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/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/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/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" \ No newline at end of file + faction = "malf_drone" diff --git a/code/modules/mob/living/simple_animal/hostile/morph.dm b/code/modules/mob/living/simple_animal/hostile/morph.dm index 5393a90051c..13d6818db38 100644 --- a/code/modules/mob/living/simple_animal/hostile/morph.dm +++ b/code/modules/mob/living/simple_animal/hostile/morph.dm @@ -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/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) \ No newline at end of file +/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) diff --git a/code/modules/mob/living/simple_animal/hostile/pra.dm b/code/modules/mob/living/simple_animal/hostile/pra.dm index e27319bf1bf..ec0e309fe56 100644 --- a/code/modules/mob/living/simple_animal/hostile/pra.dm +++ b/code/modules/mob/living/simple_animal/hostile/pra.dm @@ -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/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/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/get_bullet_impact_effect_type(var/def_zone) return BULLET_IMPACT_METAL diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index f9714bf1943..7dca50e6ddb 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -122,8 +122,8 @@ ..() stat("Held Item", held_item) -/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) +/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) /* * Inventory diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index 22914d103e1..9392d3e4078 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -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/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/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/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri if(istype(O, /obj/item/device/soulstone)) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index d96c39a9555..acd018e222e 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -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/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/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/get_speech_ending(verb, var/ending) return verb diff --git a/html/changelogs/geeves-megaphone_say.yml b/html/changelogs/geeves-megaphone_say.yml new file mode 100644 index 00000000000..6e1c9ccc827 --- /dev/null +++ b/html/changelogs/geeves-megaphone_say.yml @@ -0,0 +1,9 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Megaphones now work by turning them on and having them in either of your hands when speaking normally. They increase the size of your speech and sets the speaking verb to broadcasts." + - rscdel: "Megaphones can no longer be emagged." + - rscadd: "Exosuit megaspeakers now change your speech verb to broadcasts and gives any Tajara listening intently ear pain." + - rscadd: "Speaking using an exosuit megaspeaker or a megaphone will now increase the overhead chat message size." \ No newline at end of file