diff --git a/code/game/objects/effects/spawners/random/plushie_spawners.dm b/code/game/objects/effects/spawners/random/plushie_spawners.dm index 0eddbbe4819..cbff56a8719 100644 --- a/code/game/objects/effects/spawners/random/plushie_spawners.dm +++ b/code/game/objects/effects/spawners/random/plushie_spawners.dm @@ -53,13 +53,19 @@ /obj/item/toy/plushie/tuxedo_cat ), - list(// species plushie minus nian - /obj/item/toy/plushie/voxplushie, - /obj/item/toy/plushie/ipcplushie, + list(// Species plushies minus Nian. + /obj/item/toy/plushie/dionaplushie, + /obj/item/toy/plushie/draskplushie, /obj/item/toy/plushie/greyplushie, - /obj/item/toy/plushie/nianplushie, + /obj/item/toy/plushie/humanplushie, + /obj/item/toy/plushie/kidanplushie, + /obj/item/toy/plushie/ipcplushie, + /obj/item/toy/plushie/plasmamanplushie, + /obj/item/toy/plushie/skrellplushie, + /obj/item/toy/plushie/voxplushie, /obj/item/toy/plushie/abductor, - /obj/item/toy/plushie/abductor/agent + /obj/item/toy/plushie/abductor/agent, + /obj/item/toy/plushie/borgplushie/random ), list ( diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index f11720d3f8b..0b4d7a1b1b1 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1054,16 +1054,75 @@ /obj/item/toy/plushie/borgplushie name = "borg plushie" - desc = "The synthetic backbone of the station, rendered in plush form. Inbuilt flashlight included!" + desc = "The synthetic backbone of the station, rendered in plush form. Features a built-in flashlight and polychromic fabric." icon_state = "plushie_borg" - var/borg_plushie_overlay + var/borg_plushie_overlay = "plushie_borgassist" + var/plushie_module_selected = FALSE var/on = FALSE /obj/item/toy/plushie/borgplushie/Initialize(mapload) . = ..() - borg_plushie_overlay = (pick("plushie_borgjan", "plushie_borgsec", "plushie_borgmed", "plushie_borgmine", "plushie_borgserv", "plushie_borgassist", "plushie_borgengi")) update_icon() +/obj/item/toy/plushie/borgplushie/examine(mob/user) + . = ..() + if(!plushie_module_selected) + . += "Alt-Click [src] to select a module." + else + . += "You can use a cyborg module reset board to change [src] back into standard mode." + +/obj/item/toy/plushie/borgplushie/AltClick(mob/user) + if(!istype(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user)) + return + + pick_borg_plush_module(user) + +/obj/item/toy/plushie/borgplushie/proc/pick_borg_plush_module(mob/user) + if(plushie_module_selected) + return + + var/static/list/menu_options = list( + "Security" = image('icons/mob/robots.dmi', "security-radial"), + "Engineering" = image('icons/mob/robots.dmi', "engi-radial"), + "Mining" = image('icons/mob/robots.dmi', "mining-radial"), + "Service" = image('icons/mob/robots.dmi', "serv-radial"), + "Medical" = image('icons/mob/robots.dmi', "med-radial"), + "Janitor" = image('icons/mob/robots.dmi', "jan-radial") + ) + var/static/list/plushie_module_overlays = list( + "Security" = "plushie_borgsec", + "Engineering" = "plushie_borgengi", + "Mining" = "plushie_borgmine", + "Service" = "plushie_borgserv", + "Medical" = "plushie_borgmed", + "Janitor" = "plushie_borgjan" + ) + playsound(src, 'sound/effects/pop.ogg', 50, TRUE) + var/user_selection = show_radial_menu(user, src, menu_options, require_near = TRUE, radius = 42) + + if(!user_selection) + return + + borg_plushie_overlay = plushie_module_overlays[user_selection] + to_chat(user, "The fabric on [src] changes color, transforming it into \a [lowertext(user_selection)] plush!") + update_icon() + plushie_module_selected = TRUE + +/obj/item/toy/plushie/borgplushie/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(!istype(used, /obj/item/borg/upgrade/reset)) + return ..() + + if(!plushie_module_selected) + to_chat(user, "[src] is already in standard mode!") + return ITEM_INTERACT_COMPLETE + + borg_plushie_overlay = "plushie_borgassist" + update_icon() + to_chat(user, "The fabric on [src] changes color, reverting it back to standard mode.") + plushie_module_selected = FALSE + qdel(used) + return ITEM_INTERACT_COMPLETE + /obj/item/toy/plushie/borgplushie/activate_self(mob/user) if(..()) return @@ -1102,6 +1161,15 @@ if(!QDELETED(src)) qdel(src) +/obj/item/toy/plushie/borgplushie/random + +/obj/item/toy/plushie/borgplushie/random/Initialize(mapload) + . = ..() + borg_plushie_overlay = pick("plushie_borgjan", "plushie_borgsec", "plushie_borgmed", "plushie_borgmine", "plushie_borgserv", "plushie_borgassist", "plushie_borgengi") + if(borg_plushie_overlay != "plushie_borgassist") + plushie_module_selected = TRUE + update_icon() + /obj/item/toy/plushie/dionaplushie name = "diona plushie" desc = "This plushy is seemingly comprised of other, smaller, nymph plushies. They really went all out on the realism! Keep away from plantkiller."