diff --git a/modular_citadel/code/game/objects/items/boombox.dm b/modular_citadel/code/game/objects/items/boombox.dm new file mode 100644 index 0000000000..10d12f1973 --- /dev/null +++ b/modular_citadel/code/game/objects/items/boombox.dm @@ -0,0 +1,61 @@ +/obj/item/boombox + name = "boombox" + desc = "A dusty, gray, bulky, battery-powered, auto-looping stereo cassette player. An ancient relic from prehistoric times on that one planet with humans and stuff. Yeah, that one." + icon = 'modular_citadel/icons/obj/boombox.dmi' + icon_state = "raiqbawks_off"//PLACEHOLDER UNTIL SOMEONE SPRITES PLAIN NON-FANCY BOOMBOXES + w_class = WEIGHT_CLASS_NORMAL + force = 3 + var/baseiconstate = "raiqbawks" + var/boomingandboxing = FALSE + var/list/availabletrackids + +/obj/item/boombox/attack_self(mob/user) + . = ..() + if(boomingandboxing) + SSjukeboxes.removejukebox(SSjukeboxes.findjukeboxindex(src)) + boomingandboxing = FALSE + to_chat(user, "You flip a switch on [src], and the music immediately stops.") + update_icon() + return + if(!availabletrackids || !availabletrackids.len) + to_chat(user, "[src] flashes as you prod it senselessly. It doesn't have any songs stored on it.") + return + if(!boomingandboxing) + var/list/tracklist = list() + for(var/datum/track/S in SSjukeboxes.songs) + if(istype(S) && S.song_associated_id in availabletrackids) + tracklist[S.song_name] = S + var/selected = input(user, "Play song", "Track:") as null|anything in tracklist + if(QDELETED(src) || !selected || !istype(tracklist[selected], /datum/track)) + return + var/jukeboxslottotake = SSjukeboxes.addjukebox(src, tracklist[selected]) + if(jukeboxslottotake) + boomingandboxing = TRUE + update_icon() + +/obj/item/boombox/Destroy(mob/user) + SSjukeboxes.removejukebox(SSjukeboxes.findjukeboxindex(src)) + . = ..() + +/obj/item/boombox/update_icon() + icon_state = "[baseiconstate]_[boomingandboxing ? "on" : "off"]" + return + +/obj/item/boombox/raiq + name = "Miami Boomer" + desc = "A shiny, fashionable boombox filled to the brim with neon lights, synthesizers, gang violence, and broken R keys. A worn-out sticker on the back states \"Includes three kickin' beats!\"" + icon_state = "raiqbawks_off" + baseiconstate = "raiqbawks" + availabletrackids = list("hotline.ogg","chiptune.ogg","genesis.ogg") + +/obj/item/boombox/raiq/update_icon() + . = ..() + if(boomingandboxing) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + set_light(0) + +/obj/item/boombox/raiq/process() + set_light(5,0.95,pick("#d87aff","#7a7aff","#89ecff","#b88eff","#ff59ad")) + return diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index ea75fe449f..9d28dd8749 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -314,6 +314,13 @@ datum/gear/darksabresheath path = /obj/item/clothing/shoes/lucky ckeywhitelist = list("donaldtrumpthecommunist") +/datum/gear/raiqbawks + name = "Miami Boombox" + category = SLOT_HANDS + cost = 2 + path = /obj/item/boombox/raiq + ckeywhitelist = list("chefferz") + /datum/gear/m41 name = "Toy M41" category = SLOT_IN_BACKPACK diff --git a/modular_citadel/icons/obj/boombox.dmi b/modular_citadel/icons/obj/boombox.dmi new file mode 100644 index 0000000000..c68b8ced40 Binary files /dev/null and b/modular_citadel/icons/obj/boombox.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 69c9fbb3de..1a393c172e 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2720,6 +2720,7 @@ #include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" #include "modular_citadel\code\game\objects\items\balls.dm" +#include "modular_citadel\code\game\objects\items\boombox.dm" #include "modular_citadel\code\game\objects\items\handcuffs.dm" #include "modular_citadel\code\game\objects\items\holy_weapons.dm" #include "modular_citadel\code\game\objects\items\honk.dm"