From 04374371aab17e43624078a658896b18ac5cd4e4 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 15 Nov 2013 02:23:29 -0500 Subject: [PATCH] Megaphones and voice assemblies --- baystation12.dme | 2 + code/game/objects/items/devices/megaphone.dm | 55 ++++++++++++++++++++ maps/tgstation-redux-WIP.dmm | 4 +- 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 code/game/objects/items/devices/megaphone.dm diff --git a/baystation12.dme b/baystation12.dme index 94e28f30395..3f651677205 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -492,6 +492,7 @@ #include "code\game\objects\items\devices\handtv.dm" #include "code\game\objects\items\devices\laserpointer.dm" #include "code\game\objects\items\devices\lightreplacer.dm" +#include "code\game\objects\items\devices\megaphone.dm" #include "code\game\objects\items\devices\multitool.dm" #include "code\game\objects\items\devices\paicard.dm" #include "code\game\objects\items\devices\pipe_painter.dm" @@ -740,6 +741,7 @@ #include "code\modules\assembly\shock_kit.dm" #include "code\modules\assembly\signaler.dm" #include "code\modules\assembly\timer.dm" +#include "code\modules\assembly\voice.dm" #include "code\modules\awaymissions\bluespaceartillery.dm" #include "code\modules\awaymissions\corpse.dm" #include "code\modules\awaymissions\exile.dm" diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm new file mode 100644 index 00000000000..ec8075e85bc --- /dev/null +++ b/code/game/objects/items/devices/megaphone.dm @@ -0,0 +1,55 @@ +/obj/item/device/megaphone + name = "megaphone" + desc = "A device used to project your voice. Loudly." + icon_state = "megaphone" + item_state = "radio" + w_class = 1.0 + flags = FPRINT | TABLEPASS | 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!") + +/obj/item/device/megaphone/attack_self(mob/living/user as mob) + if (user.client) + if(user.client.prefs.muted & MUTE_IC) + src << "\red You cannot speak in IC (muted)." + return + if(!ishuman(user)) + user << "\red You don't know how to use this!" + return + if(user.silent) + return + if(spamcheck) + user << "\red \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 ((src.loc == user && usr.stat == 0)) + if(emagged) + if(insults) + for(var/mob/O in (viewers(user))) + O.show_message("[user] broadcasts, \"[pick(insultmsg)]\"",2) // 2 stands for hearable message + insults-- + else + user << "\red *BZZZZzzzzzt*" + else + for(var/mob/O in (viewers(user))) + O.show_message("[user] broadcasts, \"[message]\"",2) // 2 stands for hearable message + + spamcheck = 1 + spawn(20) + spamcheck = 0 + return + +/obj/item/device/megaphone/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/card/emag) && !emagged) + user << "\red You overload \the [src]'s voice synthesizer." + emagged = 1 + insults = rand(1, 3)//to prevent dickflooding + return + return \ No newline at end of file diff --git a/maps/tgstation-redux-WIP.dmm b/maps/tgstation-redux-WIP.dmm index 8f8d5d57726..6eb362a2514 100644 --- a/maps/tgstation-redux-WIP.dmm +++ b/maps/tgstation-redux-WIP.dmm @@ -431,7 +431,7 @@ "aio" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "aip" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/main) "aiq" = (/obj/structure/closet/secure_closet/security,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/main) -"air" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/item/device/assembly/timer,/turf/simulated/floor{tag = "icon-redfull (NORTHWEST)"; icon_state = "redfull"; dir = 9},/area/security/main) +"air" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/item/device/assembly/timer,/obj/item/device/megaphone,/turf/simulated/floor{tag = "icon-redfull (NORTHWEST)"; icon_state = "redfull"; dir = 9},/area/security/main) "ais" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "ait" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{tag = "icon-redfull (NORTHWEST)"; icon_state = "redfull"; dir = 9},/area/security/main) "aiu" = (/turf/simulated/floor,/area/security/main) @@ -4998,7 +4998,7 @@ "bSf" = (/obj/machinery/door/airlock/research{name = "Xenobiology Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bSg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bSh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bSi" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) +"bSi" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table,/obj/item/device/assembly/voice,/obj/item/device/assembly/voice,/obj/item/device/assembly/voice,/obj/item/device/assembly/voice,/obj/item/device/assembly/voice,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "bSj" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table,/obj/item/device/assembly/signaler{pixel_x = 8; pixel_y = 8},/obj/item/device/assembly/signaler{pixel_x = 5; pixel_y = -5},/obj/item/device/assembly/signaler{pixel_x = 3; pixel_y = 4},/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler{pixel_x = 4; pixel_y = -2},/obj/item/device/assembly/signaler{pixel_x = 4; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "bSk" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "bSl" = (/obj/machinery/atmospherics/trinary/mixer{dir = 8; req_access = null; target_pressure = 1.5e+007},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)