From 441a88c488f3a36ad9b2a33a51ea4bb895f617d4 Mon Sep 17 00:00:00 2001 From: phil235 Date: Tue, 13 Sep 2016 18:27:55 +0200 Subject: [PATCH] Megaphone no longer have special say code to handle their effect. The megaphone is no longer used by clicking it and entering a message, you simply keep it in your active hand and talk normally. Remove the insults feature of the emagged megaphone. The span of the emagged megaphone is now big and red. --- code/__DEFINES/say.dm | 1 + code/game/objects/items.dm | 5 +++ code/game/objects/items/devices/megaphone.dm | 44 +++----------------- code/modules/mob/living/carbon/say.dm | 4 ++ code/modules/mob/living/say.dm | 3 +- 5 files changed, 18 insertions(+), 39 deletions(-) diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 226bfee6310..070837bee97 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -24,6 +24,7 @@ #define SPAN_PAPYRUS "papyrus" #define SPAN_REALLYBIG "reallybig" #define SPAN_COMMAND "command_headset" +#define SPAN_CLOWN "clown" //bitflag #defines for return value of the radio() proc. #define ITALICS 1 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 8877f17bc51..507de736111 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -585,3 +585,8 @@ obj/item/proc/item_action_slot_check(slot, mob/user) . = "[user] lights [A] with [src]." else . = "" + + +//when an item modify our speech spans when in our active hand. Override this to modify speech spans. +/obj/item/proc/get_held_item_speechspans(mob/living/carbon/user) + return \ No newline at end of file diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 34861d8e5c3..afa79892484 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -6,54 +6,22 @@ w_class = 2 flags = FPRINT siemens_coefficient = 1 - var/spamcheck = 0 var/emagged = 0 - var/insults = 0 - var/voicespan = "command_headset" // sic - var/list/insultmsg = list("FUCK EVERYONE!", "DEATH TO LIZARDS!", "ALL SECURITY TO SHOOT ME ON SIGHT!", "I HAVE A BOMB!", "CAPTAIN IS A COMDOM!", "FOR THE SYNDICATE!", "VIVA!", "HONK!") - -/obj/item/device/megaphone/attack_self(mob/living/carbon/human/user) - if(user.client) - if(user.client.prefs.muted & MUTE_IC) - src << "You cannot speak in IC (muted)." - return - - if(!ishuman(user)) - user << "You don't know how to use this!" - return + var/list/voicespan = list(SPAN_COMMAND) +/obj/item/device/megaphone/get_held_item_speechspans(mob/living/carbon/user) if(spamcheck > world.time) user << "\The [src] needs to recharge!" - return - - var/message = copytext(sanitize(input(user, "Shout a message?", "Megaphone", null) as text),1,MAX_MESSAGE_LEN) - if(!message) - return - - message = capitalize(message) - if(!user.can_speak(message)) - user << "You find yourself unable to speak at all!" - return - - if ((src.loc == user && user.stat == 0)) - if(emagged) - if(insults) - user.say(pick(insultmsg),"machine", list(voicespan)) - insults-- - else - user << "*BZZZZzzzzzt*" - else - user.say(message,"machine", list(voicespan)) - + else playsound(loc, 'sound/items/megaphone.ogg', 100, 0, 1) spamcheck = world.time + 50 - return + return voicespan /obj/item/device/megaphone/emag_act(mob/user) user << "You overload \the [src]'s voice synthesizer." emagged = 1 - insults = rand(1, 3) //to prevent dickflooding + voicespan = list(SPAN_REALLYBIG, "userdanger") /obj/item/device/megaphone/sec name = "security megaphone" @@ -71,4 +39,4 @@ name = "clown's megaphone" desc = "Something that should not exist." icon_state = "megaphone-clown" - voicespan = "clown" \ No newline at end of file + voicespan = list(SPAN_CLOWN) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 0b6c2cae108..8b1e3b65298 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -24,3 +24,7 @@ var/obj/item/organ/tongue/T = getorganslot("tongue") if(T) . |= T.get_spans() + + var/obj/item/I = get_active_held_item() + if(I) + . |= I.get_held_item_speechspans(src) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 06e5ad4ff7f..59ab34a98eb 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -92,11 +92,12 @@ var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN) if(message_mode != MODE_WHISPER) //whisper() calls treat_message(); double process results in "hisspering" message = treat_message(message) - spans += get_spans() if(!message) return + spans += get_spans() + //Log of what we've said, plain message, no spans or junk say_log += message