/obj/item/megaphone name = "megaphone" desc = "A device used to project your voice. Loudly." icon = 'icons/obj/device.dmi' icon_state = "megaphone" item_state = "radio" w_class = WEIGHT_CLASS_SMALL flags = CONDUCT var/spamcheck = 0 var/insults = 0 var/span = "" 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!") /obj/item/megaphone/attack_self(mob/living/user as mob) if(check_mute(user.ckey, MUTE_IC)) to_chat(src, "You cannot speak in IC (muted).") return if(!ishuman(user)) to_chat(user, "You don't know how to use this!") return if(!user.can_speak()) to_chat(user, "You find yourself unable to speak at all.") return if(ishuman(user)) var/mob/living/carbon/human/abductor/H = user if(isabductor(H)) to_chat(user, "Megaphones can't project psionic communication!") return if(ishuman(user)) var/mob/living/carbon/human/H = user if(H && H.mind && H.mind.miming) to_chat(user, "Your vow of silence prevents you from speaking.") return if(HAS_TRAIT(H, TRAIT_COMIC_SANS)) span = "sans" if(spamcheck) to_chat(user, "\The [src] needs to recharge!") return var/message = input(user, "Shout a message:", "Megaphone") as text|null if(!message) return message = sanitize(copytext(message, 1, MAX_MESSAGE_LEN)) if(!message) return message = capitalize(message) var/list/message_pieces = message_to_multilingual(message) user.handle_speech_problems(message_pieces) message = multilingual_to_message(message_pieces) if((loc == user && !user.incapacitated())) if(emagged) if(insults) saymsg(user, pick(insultmsg)) insults-- else to_chat(user, "*BZZZZzzzzzt*") else if(span) message = "[message]" saymsg(user, message) spamcheck = 1 spawn(20) spamcheck = 0 /obj/item/megaphone/proc/saymsg(mob/living/user as mob, message) audible_message("[user.GetVoice()] [user.GetAltName()] broadcasts, \"[message]\"", hearing_distance = 14) log_say(message, user) for(var/obj/O in oview(14, get_turf(src))) O.hear_talk(user, message_to_multilingual("[message]")) for(var/mob/M in get_mobs_in_view(7, src)) if((M.client?.prefs.toggles2 & PREFTOGGLE_2_RUNECHAT) && M.can_hear()) M.create_chat_message(user, message, FALSE, "big") /obj/item/megaphone/emag_act(user as mob) if(!emagged) to_chat(user, "You overload \the [src]'s voice synthesizer.") emagged = 1 insults = rand(1, 3)//to prevent dickflooding