diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm new file mode 100644 index 00000000000..677d1f112d8 --- /dev/null +++ b/code/game/objects/items/devices/megaphone.dm @@ -0,0 +1,63 @@ +/obj/item/device/megaphone + name = "megaphone" + desc = "A device used to project your voice. Loudly." + icon_state = "megaphone" + item_state = "radio" + w_class = 2 + flags = FPRINT + siemens_coefficient = 1 + + var/spamcheck = 0 + var/emagged = 0 + var/insults = 0 + 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 as mob) + 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 + if(user.can_speak()) + user << "You find yourself unable to speak at all." + return + 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 ((src.loc == user && user.stat == 0)) + if(emagged) + if(insults) + user.audible_message("[user] broadcasts, \"[pick(insultmsg)]\"", null, 1) // 2 stands for hearable message + insults-- + else + user << "*BZZZZzzzzzt*" + else + user.audible_message("[user] broadcasts, \"[message]\"", null, 1) // 2 stands for hearable message + + playsound(loc, 'sound/items/megaphone.ogg', 100, 0, 1) + spamcheck = world.time + 50 + return + +/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 + +/obj/item/device/megaphone/sec + name = "security megaphone" + icon_state = "megaphone-sec" + +/obj/item/device/megaphone/command + name = "command megaphone" + icon_state = "megaphone-command" + +/obj/item/device/megaphone/cargo + name = "supply megaphone" + icon_state = "megaphone-cargo" \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index e4c16bf5bba..c84a04233ca 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -34,9 +34,10 @@ new /obj/item/clothing/under/rank/cargo(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/device/radio/headset/headset_cargo(src) - new /obj/item/clothing/gloves/fingerless(src) // new /obj/item/weapon/cartridge/quartermaster(src) new /obj/item/clothing/suit/fire/firefighter(src) + new /obj/item/clothing/gloves/fingerless(src) + new /obj/item/device/megaphone/cargo(src) new /obj/item/weapon/tank/internals/emergency_oxygen(src) new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/glasses/meson(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 4ec805ea742..5a95ac1914b 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -48,6 +48,7 @@ new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/weapon/storage/box/ids(src) new /obj/item/weapon/storage/box/ids(src) + new /obj/item/device/megaphone/command(src) new /obj/item/clothing/suit/armor/vest(src) new /obj/item/weapon/gun/energy/gun(src) new /obj/item/device/flash/handheld(src) @@ -80,6 +81,7 @@ new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch(src) new /obj/item/weapon/storage/lockbox/loyalty(src) new /obj/item/weapon/storage/box/flashbangs(src) + new /obj/item/device/megaphone/sec(src) new /obj/item/tapeproj/security(src) new /obj/item/clothing/mask/gas/sechailer/swat(src) new /obj/item/weapon/shield/riot/tele(src) diff --git a/html/changelogs/Paprka-megaphoney.yml b/html/changelogs/Paprka-megaphoney.yml new file mode 100644 index 00000000000..d1f9383a089 --- /dev/null +++ b/html/changelogs/Paprka-megaphoney.yml @@ -0,0 +1,6 @@ +author: Paprka + +delete-after: True + +changes: + - rscadd: "Added megaphones for the HoS, HoP, and QM." \ No newline at end of file diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index b359a653969..2ea63e08ba0 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/sound/items/megaphone.ogg b/sound/items/megaphone.ogg new file mode 100644 index 00000000000..31d7a8d1ad9 Binary files /dev/null and b/sound/items/megaphone.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 0a6d982434e..5b6c3dedcc0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -553,6 +553,7 @@ #include "code\game\objects\items\devices\flashlight.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"