diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm index b58ccef8007..3044c74d784 100644 --- a/_maps/map_files/Delta/delta.dmm +++ b/_maps/map_files/Delta/delta.dmm @@ -1801,7 +1801,7 @@ "ajD" = ( /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/toy/figure/assistant, +/obj/item/toy/figure/crew/assistant, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/arrival/station) "ajF" = ( @@ -6509,7 +6509,7 @@ /area/maintenance/fsmaint) "avr" = ( /obj/structure/table/wood, -/obj/item/toy/figure/wizard, +/obj/item/toy/figure/crew/wizard, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "dark" @@ -8191,7 +8191,7 @@ "ayn" = ( /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/toy/figure/janitor, +/obj/item/toy/figure/crew/janitor, /obj/machinery/status_display{ pixel_y = 32 }, @@ -12391,7 +12391,7 @@ "aGE" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/bartender, +/obj/item/toy/figure/crew/bartender, /obj/machinery/status_display{ pixel_y = 32 }, @@ -16218,7 +16218,7 @@ }, /obj/structure/table, /obj/item/clipboard, -/obj/item/toy/figure/syndie, +/obj/item/toy/figure/crew/syndie, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "redcorner" @@ -17268,7 +17268,7 @@ "aPS" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/clown, +/obj/item/toy/figure/crew/clown, /turf/simulated/floor/plasteel{ icon_state = "redbluefull" }, @@ -19193,7 +19193,7 @@ "aTz" = ( /obj/structure/table, /obj/item/clipboard, -/obj/item/toy/figure/qm, +/obj/item/toy/figure/crew/qm, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -20648,7 +20648,7 @@ "aWb" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/mime, +/obj/item/toy/figure/crew/mime, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -23497,7 +23497,7 @@ "baZ" = ( /obj/structure/table, /obj/item/clipboard, -/obj/item/toy/figure/cargotech, +/obj/item/toy/figure/crew/cargotech, /turf/simulated/floor/plasteel{ icon_state = "brown" }, @@ -25689,7 +25689,7 @@ }, /obj/structure/table, /obj/item/clipboard, -/obj/item/toy/figure/miner, +/obj/item/toy/figure/crew/miner, /obj/machinery/firealarm{ dir = 4; pixel_x = -28 @@ -26683,7 +26683,7 @@ "bhB" = ( /obj/structure/table/glass, /obj/item/clipboard, -/obj/item/toy/figure/botanist, +/obj/item/toy/figure/crew/botanist, /obj/machinery/newscaster{ pixel_y = 32 }, @@ -28744,7 +28744,7 @@ }, /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/toy/figure/chef, +/obj/item/toy/figure/crew/chef, /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/crew_quarters/kitchen) @@ -30078,7 +30078,7 @@ "bnZ" = ( /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/toy/figure/atmos, +/obj/item/toy/figure/crew/atmos, /obj/machinery/atmospherics/pipe/simple/visible/cyan, /obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 4 @@ -33622,7 +33622,7 @@ "buk" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/hos, +/obj/item/toy/figure/crew/hos, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "vault" @@ -41429,7 +41429,7 @@ "bHJ" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/detective, +/obj/item/toy/figure/crew/detective, /obj/structure/extinguisher_cabinet{ pixel_x = -28 }, @@ -42313,7 +42313,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/captain, +/obj/item/toy/figure/crew/captain, /turf/simulated/floor/plasteel{ icon_state = "wood" }, @@ -46151,7 +46151,7 @@ }, /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/toy/figure/ce, +/obj/item/toy/figure/crew/ce, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutralfull" @@ -46746,7 +46746,7 @@ dir = 8 }, /obj/item/clipboard, -/obj/item/toy/figure/warden, +/obj/item/toy/figure/crew/warden, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -50936,7 +50936,7 @@ /obj/structure/table/reinforced, /obj/machinery/light, /obj/item/clipboard, -/obj/item/toy/figure/borg, +/obj/item/toy/figure/crew/borg, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "vault" @@ -52345,7 +52345,7 @@ "caH" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/lawyer, +/obj/item/toy/figure/crew/lawyer, /turf/simulated/floor/plasteel{ icon_state = "wood" }, @@ -53273,7 +53273,7 @@ /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, /obj/item/lighter/zippo/nt_rep, /obj/item/storage/fancy/cigarettes/cigpack_robustgold, -/obj/item/toy/figure/captain, +/obj/item/toy/figure/crew/captain, /turf/simulated/floor/plasteel{ icon_state = "grimy" }, @@ -54021,7 +54021,7 @@ dir = 1 }, /obj/item/clipboard, -/obj/item/toy/figure/hop, +/obj/item/toy/figure/crew/hop, /turf/simulated/floor/plasteel{ icon_state = "wood" }, @@ -54428,7 +54428,7 @@ pixel_x = -32 }, /obj/item/clipboard, -/obj/item/toy/figure/secofficer, +/obj/item/toy/figure/crew/secofficer, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "red" @@ -58316,7 +58316,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/ian, +/obj/item/toy/figure/crew/ian, /obj/item/radio/intercom{ dir = 4; pixel_x = 28 @@ -58829,7 +58829,7 @@ "cmO" = ( /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/toy/figure/engineer, +/obj/item/toy/figure/crew/engineer, /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel{ dir = 6; @@ -61100,7 +61100,7 @@ pixel_x = 24 }, /obj/item/clipboard, -/obj/item/toy/figure/librarian, +/obj/item/toy/figure/crew/librarian, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "grimy" @@ -66661,7 +66661,7 @@ }, /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/dsquad, +/obj/item/toy/figure/crew/dsquad, /turf/simulated/floor/plasteel{ icon_state = "grimy" }, @@ -77297,7 +77297,7 @@ "cVF" = ( /obj/structure/table/glass, /obj/item/clipboard, -/obj/item/toy/figure/chemist, +/obj/item/toy/figure/crew/chemist, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitegreencorner" @@ -78826,7 +78826,7 @@ /obj/structure/table/glass, /obj/machinery/light/small, /obj/item/clipboard, -/obj/item/toy/figure/md, +/obj/item/toy/figure/crew/md, /obj/machinery/camera{ c_tag = "Medbay Front Desk"; dir = 1; @@ -79846,7 +79846,7 @@ "daK" = ( /obj/structure/table, /obj/item/clipboard, -/obj/item/toy/figure/scientist, +/obj/item/toy/figure/crew/scientist, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitepurple" @@ -86974,7 +86974,7 @@ pixel_y = -2 }, /obj/item/clipboard, -/obj/item/toy/figure/rd, +/obj/item/toy/figure/crew/rd, /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/crew_quarters/hor) @@ -89999,7 +89999,7 @@ "duf" = ( /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/toy/figure/roboticist, +/obj/item/toy/figure/crew/roboticist, /obj/machinery/door_control{ id = "robodesk"; name = "Robotics Desk Shutters"; @@ -90123,7 +90123,7 @@ pixel_x = -32 }, /obj/item/clipboard, -/obj/item/toy/figure/cmo, +/obj/item/toy/figure/crew/cmo, /turf/simulated/floor/plasteel, /area/medical/cmo) "dus" = ( @@ -96909,7 +96909,7 @@ }, /obj/structure/table/glass, /obj/item/clipboard, -/obj/item/toy/figure/virologist, +/obj/item/toy/figure/crew/virologist, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitegreencorner" @@ -103477,7 +103477,7 @@ "dUO" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/toy/figure/chaplain, +/obj/item/toy/figure/crew/chaplain, /obj/machinery/firealarm{ dir = 4; pixel_x = -28 @@ -104869,7 +104869,7 @@ "dYb" = ( /obj/structure/table/glass, /obj/item/clipboard, -/obj/item/toy/figure/geneticist, +/obj/item/toy/figure/crew/geneticist, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurplecorner" diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 4b7dfc791e7..3d7df7c1bd2 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -24428,7 +24428,7 @@ pixel_x = 4; pixel_y = 4 }, -/obj/item/toy/figure/cargotech, +/obj/item/toy/figure/crew/cargotech, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "cafeteria" @@ -30265,7 +30265,7 @@ }) "bnL" = ( /obj/structure/table, -/obj/item/toy/figure/clown, +/obj/item/toy/figure/crew/clown, /obj/item/reagent_containers/food/snacks/baguette, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -35946,7 +35946,7 @@ /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, /obj/item/lighter/zippo/nt_rep, /obj/item/storage/fancy/cigarettes/cigpack_robustgold, -/obj/item/toy/figure/captain, +/obj/item/toy/figure/crew/captain, /turf/simulated/floor/carpet, /area/crew_quarters/captain{ name = "\improper Captain's Quarters" @@ -46649,7 +46649,7 @@ /turf/simulated/floor/plasteel, /area/atmos) "bUp" = ( -/obj/item/toy/figure/mime, +/obj/item/toy/figure/crew/mime, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -48134,7 +48134,7 @@ /area/crew_quarters/theatre) "bXq" = ( /obj/machinery/light/small, -/obj/item/toy/prize/honk{ +/obj/item/toy/figure/mech/honk{ pixel_y = 12 }, /obj/structure/table/wood, diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 210d381f45e..5ac556f1c12 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -181,7 +181,7 @@ /obj/item/tank/internals/emergency_oxygen, /obj/item/trash/candy, /obj/effect/turf_decal/sand, -/obj/item/toy/figure/bartender, +/obj/item/toy/figure/crew/bartender, /turf/simulated/floor/beach/sand, /area/ruin/powered/beach) "aK" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm index 6ce2e01e341..e30204f0684 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/spacebar.dmm @@ -80,7 +80,7 @@ }) "at" = ( /obj/structure/table, -/obj/item/toy/figure/bartender, +/obj/item/toy/figure/crew/bartender, /turf/simulated/floor/wood, /area/ruin/powered{ name = "Space Bar" diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 32c981f6190..7b84d793f76 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -9425,7 +9425,7 @@ }, /area/maintenance/fsmaint) "avc" = ( -/obj/item/toy/figure/secofficer, +/obj/item/toy/figure/crew/secofficer, /turf/simulated/floor/plasteel{ icon_state = "floorgrime" }, @@ -10260,7 +10260,7 @@ /area/maintenance/fsmaint) "awE" = ( /obj/structure/table, -/obj/item/toy/griffin, +/obj/item/toy/figure/griffin, /turf/simulated/floor/plating, /area/maintenance/fsmaint) "awF" = ( @@ -11016,12 +11016,12 @@ /area/maintenance/fsmaint) "ayf" = ( /obj/structure/table, -/obj/item/toy/figure/hos, +/obj/item/toy/figure/crew/hos, /turf/simulated/floor/plating, /area/maintenance/fsmaint) "ayg" = ( /obj/structure/table, -/obj/item/toy/owl, +/obj/item/toy/figure/owl, /turf/simulated/floor/plating, /area/maintenance/fsmaint) "ayh" = ( @@ -14672,7 +14672,7 @@ /area/maintenance/auxsolarport) "aFU" = ( /obj/structure/table, -/obj/item/toy/figure/detective, +/obj/item/toy/figure/crew/detective, /obj/machinery/light/small{ dir = 8 }, @@ -45458,7 +45458,7 @@ /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, /obj/item/lighter/zippo/nt_rep, /obj/item/storage/fancy/cigarettes/cigpack_robustgold, -/obj/item/toy/figure/captain, +/obj/item/toy/figure/crew/captain, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/carpet, /area/crew_quarters/captain/bedroom) diff --git a/_maps/map_files/generic/Lavaland.dmm b/_maps/map_files/generic/Lavaland.dmm index 6af4e45cc6e..02e8c553456 100644 --- a/_maps/map_files/generic/Lavaland.dmm +++ b/_maps/map_files/generic/Lavaland.dmm @@ -4713,7 +4713,7 @@ /obj/effect/decal/cleanable/cobweb2, /obj/structure/table, /obj/effect/decal/cleanable/dirt, -/obj/item/toy/figure/assistant, +/obj/item/toy/figure/crew/assistant, /obj/machinery/light/small{ dir = 4 }, diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm index 232552a43b5..595d0cbda74 100644 --- a/_maps/map_files/generic/centcomm.dmm +++ b/_maps/map_files/generic/centcomm.dmm @@ -20,7 +20,7 @@ /turf/simulated/wall/indestructible/riveted, /area/space) "ag" = ( -/obj/item/toy/figure/syndie, +/obj/item/toy/figure/crew/syndie, /turf/simulated/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) "ai" = ( diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index c42fb4f2dfe..8a7763410bf 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -484,7 +484,7 @@ head = /obj/item/clothing/head/xenos glasses = /obj/item/clothing/glasses/thermal l_pocket = /obj/item/tank/internals/emergency_oxygen/double - r_pocket = /obj/item/toy/toy_xeno + r_pocket = /obj/item/toy/figure/xeno backpack_contents = list( /obj/item/storage/box/survival = 1, /obj/item/clothing/head/welding = 1, diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 305d896a791..2e91f668265 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -4,12 +4,12 @@ /obj/item/toy/random name = "Random Toy" -/obj/item/toy/random/New() +/obj/item/toy/random/Initialize(mapload) ..() - var/list/types = list(/obj/item/gun/projectile/shotgun/toy/crossbow, /obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/prize) + var/list/types = list(/obj/item/gun/projectile/shotgun/toy/crossbow, /obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/figure/mech) var/T = pick(types) new T(loc) - qdel(src) + return INITIALIZE_HINT_QDEL // ------------------------------------- // Random cleanables, clearly this makes sense diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 9515c51a054..9cacf2e8d65 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -310,96 +310,6 @@ new /obj/item/toy/snappop/phoenix(get_turf(src)) qdel(src) - -/* - * Mech prizes - */ -/obj/item/toy/prize - icon = 'icons/obj/toy.dmi' - icon_state = "ripleytoy" - var/cooldown = 0 - -//all credit to skasi for toy mech fun ideas -/obj/item/toy/prize/attack_self(mob/user as mob) - if(cooldown < world.time - 8) - to_chat(user, "You play with [src].") - playsound(user, 'sound/mecha/mechstep.ogg', 20, 1) - cooldown = world.time - -/obj/item/toy/prize/attack_hand(mob/user as mob) - if(loc == user) - if(cooldown < world.time - 8) - to_chat(user, "You play with [src].") - playsound(user, 'sound/mecha/mechturn.ogg', 20, 1) - cooldown = world.time - return - ..() - -/obj/random/mech - name = "Random Mech Prize" - desc = "This is a random prize" - icon = 'icons/obj/toy.dmi' - icon_state = "ripleytoy" - -/obj/random/mech/item_to_spawn() - return pick(subtypesof(/obj/item/toy/prize)) //exclude the base type. - -/obj/item/toy/prize/ripley - name = "toy ripley" - desc = "Mini-Mecha action figure! Collect them all! 1/11. This one is a ripley, a mining and engineering mecha." - -/obj/item/toy/prize/fireripley - name = "toy firefighting ripley" - desc = "Mini-Mecha action figure! Collect them all! 2/11. This one is a firefighter ripley, a fireproof mining and engineering mecha." - icon_state = "fireripleytoy" - -/obj/item/toy/prize/deathripley - name = "toy deathsquad ripley" - desc = "Mini-Mecha action figure! Collect them all! 3/11. This one is the black ripley used by the hero of DeathSquad, that TV drama about loose-cannon ERT officers!" - icon_state = "deathripleytoy" - -/obj/item/toy/prize/gygax - name = "toy gygax" - desc = "Mini-Mecha action figure! Collect them all! 4/11. This one is the speedy gygax combat mecha. Zoom zoom, pew pew!" - icon_state = "gygaxtoy" - -/obj/item/toy/prize/durand - name = "toy durand" - desc = "Mini-Mecha action figure! Collect them all! 5/11. This one is the heavy durand combat mecha. Stomp stomp!" - icon_state = "durandprize" - -/obj/item/toy/prize/honk - name = "toy H.O.N.K." - desc = "Mini-Mecha action figure! Collect them all! 6/11. This one is the infamous H.O.N.K mech!" - icon_state = "honkprize" - -/obj/item/toy/prize/marauder - name = "toy marauder" - desc = "Mini-Mecha action figure! Collect them all! 7/11. This one is the powerful marauder combat mecha! Run for cover!" - icon_state = "marauderprize" - -/obj/item/toy/prize/seraph - name = "toy seraph" - desc = "Mini-Mecha action figure! Collect them all! 8/11. This one is the powerful seraph combat mecha! Someone's in trouble!" - icon_state = "seraphprize" - -/obj/item/toy/prize/mauler - name = "toy mauler" - desc = "Mini-Mecha action figure! Collect them all! 9/11. This one is the deadly mauler combat mecha! Look out!" - icon_state = "maulerprize" - -/obj/item/toy/prize/odysseus - name = "toy odysseus" - desc = "Mini-Mecha action figure! Collect them all! 10/11. This one is the spindly, syringe-firing odysseus medical mecha." - icon_state = "odysseusprize" - -/obj/item/toy/prize/phazon - name = "toy phazon" - desc = "Mini-Mecha action figure! Collect them all! 11/11. This one is the mysterious Phazon combat mecha! Nobody's safe!" - icon_state = "phazonprize" - - - /* || A Deck of Cards for playing various games of chance || */ @@ -1242,48 +1152,10 @@ user.loc.visible_message("[bicon(src)] [message]") sleep(10) -/obj/item/toy/owl - name = "owl action figure" - desc = "An action figure modeled after 'The Owl', defender of justice." - icon = 'icons/obj/toy.dmi' - icon_state = "owlprize" - w_class = WEIGHT_CLASS_SMALL - var/cooldown = 0 - -/obj/item/toy/owl/attack_self(mob/user) - if(!cooldown) //for the sanity of everyone - var/message = pick("You won't get away this time, Griffin!", "Stop right there, criminal!", "Hoot! Hoot!", "I am the night!") - to_chat(user, "You pull the string on [src].") - playsound(user, 'sound/creatures/hoot.ogg', 25, 1) - visible_message("[bicon(src)] [message]") - cooldown = 1 - spawn(30) cooldown = 0 - return - ..() - -/obj/item/toy/griffin - name = "griffin action figure" - desc = "An action figure modeled after 'The Griffin', criminal mastermind." - icon = 'icons/obj/toy.dmi' - icon_state = "griffinprize" - w_class = WEIGHT_CLASS_SMALL - var/cooldown = 0 - -/obj/item/toy/griffin/attack_self(mob/user) - if(!cooldown) //for the sanity of everyone - var/message = pick("You can't stop me, Owl!", "My plan is flawless! The vault is mine!", "Caaaawwww!", "You will never catch me!") - to_chat(user, "You pull the string on [src].") - playsound(user, 'sound/creatures/caw.ogg', 25, 1) - visible_message("[bicon(src)] [message]") - cooldown = 1 - spawn(30) cooldown = 0 - return - ..() - // DND Character minis. Use the naming convention (type)character for the icon states. /obj/item/toy/character icon = 'icons/obj/toy.dmi' - w_class = WEIGHT_CLASS_SMALL + w_class = WEIGHT_CLASS_TINY pixel_z = 5 /obj/item/toy/character/alien @@ -1392,35 +1264,6 @@ to_chat(user, "You stop feeding \the [O] into \the [src]'s mini-input.") else ..() -/* - * Xenomorph action figure - */ - -/obj/item/toy/toy_xeno - icon = 'icons/obj/toy.dmi' - icon_state = "toy_xeno" - name = "xenomorph action figure" - desc = "MEGA presents the new Xenos Isolated action figure! Comes complete with realistic sounds! Pull back string to use." - w_class = WEIGHT_CLASS_SMALL - bubble_icon = "alien" - var/cooldown = 0 - -/obj/item/toy/toy_xeno/attack_self(mob/user) - if(cooldown <= world.time) - cooldown = (world.time + 50) //5 second cooldown - user.visible_message("[user] pulls back the string on [src].") - icon_state = "[initial(icon_state)]_used" - sleep(5) - atom_say("Hiss!") - var/list/possible_sounds = list('sound/voice/hiss1.ogg', 'sound/voice/hiss2.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss4.ogg') - playsound(get_turf(src), pick(possible_sounds), 50, 1) - spawn(45) - if(src) - icon_state = "[initial(icon_state)]" - else - to_chat(user, "The string on [src] hasn't rewound all the way!") - return - /obj/item/toy/russian_revolver name = "russian revolver" desc = "for fun and games!" @@ -1562,7 +1405,7 @@ icon_state = "nuketoy" /obj/random/figure/item_to_spawn() - return pick(subtypesof(/obj/item/toy/figure)) + return pick(subtypesof(/obj/item/toy/figure/crew)) /obj/item/toy/figure @@ -1570,235 +1413,374 @@ desc = "A \"Space Life\" brand... wait, what the hell is this thing?" icon = 'icons/obj/toy.dmi' icon_state = "nuketoy" + w_class = WEIGHT_CLASS_TINY var/cooldown = 0 + var/cooldown_time = 3 SECONDS + +/obj/item/toy/figure/attack_self(mob/user) + ..() + if(cooldown < world.time) + cooldown = world.time + cooldown_time + activate(user) + else + on_cooldown(user) + +/obj/item/toy/figure/proc/activate(mob/user) + return + +/obj/item/toy/figure/proc/on_cooldown(mob/user) + return + +/obj/item/toy/figure/crew var/toysay = "What the fuck did you do?" -/obj/item/toy/figure/New() - ..() - desc = "A \"Space Life\" brand [name]" +/obj/item/toy/figure/crew/activate(mob/user) + atom_say(toysay) + playsound(user, 'sound/machines/click.ogg', 20, TRUE) -/obj/item/toy/figure/attack_self(mob/user as mob) - if(cooldown < world.time) - cooldown = (world.time + 30) //3 second cooldown - user.visible_message("[bicon(src)] [src] says \"[toysay]\".") - playsound(user, 'sound/machines/click.ogg', 20, 1) - -/obj/item/toy/figure/cmo - name = "Chief Medical Officer action figure" +/obj/item/toy/figure/crew/cmo + name = "\improper Chief Medical Officer action figure" desc = "The ever-suffering CMO, from Space Life's SS12 figurine collection." icon_state = "cmo" toysay = "Suit sensors!" -/obj/item/toy/figure/assistant - name = "Assistant action figure" +/obj/item/toy/figure/crew/assistant + name = "\improper Assistant action figure" desc = "The faceless, hairless scourge of the station, from Space Life's SS12 figurine collection." icon_state = "assistant" toysay = "Grey tide station wide!" -/obj/item/toy/figure/atmos - name = "Atmospheric Technician action figure" +/obj/item/toy/figure/crew/atmos + name = "\improper Atmospheric Technician action figure" desc = "The faithful atmospheric technician, from Space Life's SS12 figurine collection." icon_state = "atmos" toysay = "Glory to Atmosia!" -/obj/item/toy/figure/bartender - name = "Bartender action figure" +/obj/item/toy/figure/crew/bartender + name = "\improper Bartender action figure" desc = "The suave bartender, from Space Life's SS12 figurine collection." icon_state = "bartender" toysay = "Wheres my monkey?" -/obj/item/toy/figure/borg - name = "Cyborg action figure" +/obj/item/toy/figure/crew/borg + name = "\improper Cyborg action figure" desc = "The iron-willed cyborg, from Space Life's SS12 figurine collection." icon_state = "borg" toysay = "I. LIVE. AGAIN." -/obj/item/toy/figure/botanist - name = "Botanist action figure" +/obj/item/toy/figure/crew/botanist + name = "\improper Botanist action figure" desc = "The drug-addicted botanist, from Space Life's SS12 figurine collection." icon_state = "botanist" toysay = "Dude, I see colors..." -/obj/item/toy/figure/captain - name = "Captain action figure" +/obj/item/toy/figure/crew/captain + name = "\improper Captain action figure" desc = "The inept captain, from Space Life's SS12 figurine collection." icon_state = "captain" toysay = "Crew, the Nuke Disk is safely up my ass." -/obj/item/toy/figure/cargotech - name = "Cargo Technician action figure" +/obj/item/toy/figure/crew/cargotech + name = "\improper Cargo Technician action figure" desc = "The hard-working cargo tech, from Space Life's SS12 figurine collection." icon_state = "cargotech" toysay = "For Cargonia!" -/obj/item/toy/figure/ce - name = "Chief Engineer action figure" +/obj/item/toy/figure/crew/ce + name = "\improper Chief Engineer action figure" desc = "The expert Chief Engineer, from Space Life's SS12 figurine collection." icon_state = "ce" toysay = "Wire the solars!" -/obj/item/toy/figure/chaplain - name = "Chaplain action figure" +/obj/item/toy/figure/crew/chaplain + name = "\improper Chaplain action figure" desc = "The obsessed Chaplain, from Space Life's SS12 figurine collection." icon_state = "chaplain" toysay = "Gods make me a killing machine please!" -/obj/item/toy/figure/chef - name = "Chef action figure" +/obj/item/toy/figure/crew/chef + name = "\improper Chef action figure" desc = "The cannibalistic chef, from Space Life's SS12 figurine collection." icon_state = "chef" toysay = "I swear it's not human meat." -/obj/item/toy/figure/chemist - name = "Chemist action figure" +/obj/item/toy/figure/crew/chemist + name = "\improper Chemist action figure" desc = "The legally dubious Chemist, from Space Life's SS12 figurine collection." icon_state = "chemist" toysay = "Get your pills!" -/obj/item/toy/figure/clown - name = "Clown action figure" +/obj/item/toy/figure/crew/clown + name = "\improper Clown action figure" desc = "The mischevious Clown, from Space Life's SS12 figurine collection." icon_state = "clown" toysay = "Honk!" -/obj/item/toy/figure/ian - name = "Ian action figure" +/obj/item/toy/figure/crew/ian + name = "\improper Ian action figure" desc = "The adorable corgi, from Space Life's SS12 figurine collection." icon_state = "ian" toysay = "Arf!" -/obj/item/toy/figure/detective - name = "Detective action figure" +/obj/item/toy/figure/crew/detective + name = "\improper Detective action figure" desc = "The clever detective, from Space Life's SS12 figurine collection." icon_state = "detective" toysay = "This airlock has grey jumpsuit and insulated glove fibers on it." -/obj/item/toy/figure/dsquad - name = "Death Squad Officer action figure" +/obj/item/toy/figure/crew/dsquad + name = "\improper Death Squad Officer action figure" desc = "It's a member of the DeathSquad, a TV drama where loose-cannon ERT officers face up against the threats of the galaxy! It's from Space Life's special edition SS12 figurine collection." icon_state = "dsquad" toysay = "Eliminate all threats!" -/obj/item/toy/figure/engineer - name = "Engineer action figure" +/obj/item/toy/figure/crew/engineer + name = "\improper Engineer action figure" desc = "The frantic engineer, from Space Life's SS12 figurine collection." icon_state = "engineer" toysay = "Oh god, the singularity is loose!" -/obj/item/toy/figure/geneticist - name = "Geneticist action figure" +/obj/item/toy/figure/crew/geneticist + name = "\improper Geneticist action figure" desc = "The balding geneticist, from Space Life's SS12 figurine collection." icon_state = "geneticist" toysay = "I'm not qualified for this job." -/obj/item/toy/figure/hop - name = "Head of Personnel action figure" +/obj/item/toy/figure/crew/hop + name = "\improper Head of Personnel action figure" desc = "The officious Head of Personnel, from Space Life's SS12 figurine collection." icon_state = "hop" toysay = "Papers, please!" -/obj/item/toy/figure/hos - name = "Head of Security action figure" +/obj/item/toy/figure/crew/hos + name = "\improper Head of Security action figure" desc = "The bloodlust-filled Head of Security, from Space Life's SS12 figurine collection." icon_state = "hos" toysay = "Space law? What?" -/obj/item/toy/figure/qm - name = "Quartermaster action figure" +/obj/item/toy/figure/crew/qm + name = "\improper Quartermaster action figure" desc = "The nationalistic Quartermaster, from Space Life's SS12 figurine collection." icon_state = "qm" toysay = "Hail Cargonia!" -/obj/item/toy/figure/janitor - name = "Janitor action figure" +/obj/item/toy/figure/crew/janitor + name = "\improper Janitor action figure" desc = "The water-using Janitor, from Space Life's SS12 figurine collection." icon_state = "janitor" toysay = "Look at the signs, you idiot." -/obj/item/toy/figure/lawyer - name = "Internal Affairs Agent action figure" +/obj/item/toy/figure/crew/lawyer + name = "\improper Internal Affairs Agent action figure" desc = "The unappreciated Internal Affairs Agent, from Space Life's SS12 figurine collection." icon_state = "lawyer" toysay = "Standard Operating Procedure says they're guilty! Hacking is proof they're an Enemy of the Corporation!" -/obj/item/toy/figure/librarian - name = "Librarian action figure" +/obj/item/toy/figure/crew/librarian + name = "\improper Librarian action figure" desc = "The quiet Librarian, from Space Life's SS12 figurine collection." icon_state = "librarian" toysay = "One day while..." -/obj/item/toy/figure/md - name = "Medical Doctor action figure" +/obj/item/toy/figure/crew/md + name = "\improper Medical Doctor action figure" desc = "The stressed-out doctor, from Space Life's SS12 figurine collection." icon_state = "md" toysay = "The patient is already dead!" -/obj/item/toy/figure/mime - name = "Mime action figure" +/obj/item/toy/figure/crew/mime + name = "\improper Mime action figure" desc = "... from Space Life's SS12 figurine collection." icon_state = "mime" toysay = "..." -/obj/item/toy/figure/miner - name = "Shaft Miner action figure" +/obj/item/toy/figure/crew/miner + name = "\improper Shaft Miner action figure" desc = "The gun-toting Shaft Miner, from Space Life's SS12 figurine collection." icon_state = "miner" toysay = "Oh god it's eating my intestines!" -/obj/item/toy/figure/ninja - name = "Ninja action figure" +/obj/item/toy/figure/crew/ninja + name = "\improper Ninja action figure" desc = "It's the mysterious ninja! It's from Space Life's special edition SS12 figurine collection." icon_state = "ninja" toysay = "Oh god! Stop shooting, I'm friendly!" -/obj/item/toy/figure/wizard - name = "Wizard action figure" +/obj/item/toy/figure/crew/wizard + name = "\improper Wizard action figure" desc = "It's the deadly, spell-slinging wizard! It's from Space Life's special edition SS12 figurine collection." icon_state = "wizard" toysay = "Ei Nath!" -/obj/item/toy/figure/rd - name = "Research Director action figure" +/obj/item/toy/figure/crew/rd + name = "\improper Research Director action figure" desc = "The ambitious RD, from Space Life's SS12 figurine collection." icon_state = "rd" toysay = "Blowing all of the borgs!" -/obj/item/toy/figure/roboticist - name = "Roboticist action figure" +/obj/item/toy/figure/crew/roboticist + name = "\improper Roboticist action figure" desc = "The skillful Roboticist, from Space Life's SS12 figurine collection." icon_state = "roboticist" toysay = "He asked to be borged!" -/obj/item/toy/figure/scientist - name = "Scientist action figure" +/obj/item/toy/figure/crew/scientist + name = "\improper Scientist action figure" desc = "The mad Scientist, from Space Life's SS12 figurine collection." icon_state = "scientist" toysay = "Someone else must have made those bombs!" -/obj/item/toy/figure/syndie - name = "Nuclear Operative action figure" +/obj/item/toy/figure/crew/syndie + name = "\improper Nuclear Operative action figure" desc = "It's the red-suited Nuclear Operative! It's from Space Life's special edition SS12 figurine collection." icon_state = "syndie" toysay = "Get that fucking disk!" -/obj/item/toy/figure/secofficer - name = "Security Officer action figure" +/obj/item/toy/figure/crew/secofficer + name = "\improper Security Officer action figure" desc = "The power-tripping Security Officer, from Space Life's SS12 figurine collection." icon_state = "secofficer" toysay = "I am the law!" -/obj/item/toy/figure/virologist - name = "Virologist action figure" +/obj/item/toy/figure/crew/virologist + name = "\improper Virologist action figure" desc = "The pandemic-starting Virologist, from Space Life's SS12 figurine collection." icon_state = "virologist" toysay = "It's not my virus!" -/obj/item/toy/figure/warden - name = "Warden action figure" +/obj/item/toy/figure/crew/warden + name = "\improper Warden action figure" desc = "The amnesiac Warden, from Space Life's SS12 figurine collection." icon_state = "warden" toysay = "Execute him for breaking in!" +/* + * Xenomorph action figure + */ + +/obj/item/toy/figure/xeno + name = "\improper Xenomorph action figure" + desc = "MEGA presents the new Xenos Isolated action figure! Comes complete with realistic sounds! Pull back string to use." + icon_state = "toy_xeno" + bubble_icon = "alien" + cooldown_time = 5 SECONDS + + +/obj/item/toy/figure/xeno/activate(mob/user) + user.visible_message("[user] pulls back the string on [src].") + icon_state = "[initial(icon_state)]_used" + addtimer(CALLBACK(src, .proc/hiss), 0.5 SECONDS) + +/obj/item/toy/figure/xeno/proc/hiss() + atom_say("Hiss!") + playsound(src, get_sfx("hiss"), 50, TRUE) + addtimer(CALLBACK(src, .proc/reset_icon), 4.5 SECONDS) + +/obj/item/toy/figure/xeno/proc/reset_icon() + icon_state = "[initial(icon_state)]" + +/obj/item/toy/figure/xeno/on_cooldown(mob/user) + to_chat(user, "The string on [src] hasn't rewound all the way!") + +/obj/item/toy/figure/owl + name = "\improper Owl action figure" + desc = "An action figure modeled after 'The Owl', defender of justice." + icon_state = "owlprize" + +/obj/item/toy/figure/owl/activate(mob/user) + var/message = pick("You won't get away this time, Griffin!", "Stop right there, criminal!", "Hoot! Hoot!", "I am the night!") + to_chat(user, "You pull the string on [src].") + playsound(src, 'sound/creatures/hoot.ogg', 25, TRUE) + atom_say("[message]") + +/obj/item/toy/figure/griffin + name = "\improper Griffin action figure" + desc = "An action figure modeled after 'The Griffin', criminal mastermind." + icon_state = "griffinprize" + + +/obj/item/toy/figure/griffin/activate(mob/user) + var/message = pick("You can't stop me, Owl!", "My plan is flawless! The vault is mine!", "Caaaawwww!", "You will never catch me!") + to_chat(user, "You pull the string on [src].") + playsound(src, 'sound/creatures/caw.ogg', 25, TRUE) + atom_say("[message]") + +/* + * Mech prizes + */ +/obj/item/toy/figure/mech + icon_state = "ripleytoy" + cooldown_time = 8 + +//all credit to skasi for toy mech fun ideas +/obj/item/toy/figure/mech/activate(mob/user) + to_chat(user, "You play with [src].") + playsound(src, 'sound/mecha/mechstep.ogg', 20, TRUE) + +/obj/random/mech + name = "Random Mech Prize" + desc = "This is a random prize" + icon = 'icons/obj/toy.dmi' + icon_state = "ripleytoy" + +/obj/random/mech/item_to_spawn() + return pick(subtypesof(/obj/item/toy/figure/mech)) //exclude the base type. + +/obj/item/toy/figure/mech/ripley + name = "toy Ripley" + desc = "Mini-Mecha action figure! Collect them all! 1/11. This one is a ripley, a mining and engineering mecha." + +/obj/item/toy/figure/mech/fireripley + name = "toy Firefighting Ripley" + desc = "Mini-Mecha action figure! Collect them all! 2/11. This one is a firefighter ripley, a fireproof mining and engineering mecha." + icon_state = "fireripleytoy" + +/obj/item/toy/figure/mech/deathripley + name = "toy Death Squad Ripley" + desc = "Mini-Mecha action figure! Collect them all! 3/11. This one is the black ripley used by the hero of DeathSquad, that TV drama about loose-cannon ERT officers!" + icon_state = "deathripleytoy" + +/obj/item/toy/figure/mech/gygax + name = "toy Gygax" + desc = "Mini-Mecha action figure! Collect them all! 4/11. This one is the speedy gygax combat mecha. Zoom zoom, pew pew!" + icon_state = "gygaxtoy" + +/obj/item/toy/figure/mech/durand + name = "toy Durand" + desc = "Mini-Mecha action figure! Collect them all! 5/11. This one is the heavy durand combat mecha. Stomp stomp!" + icon_state = "durandprize" + +/obj/item/toy/figure/mech/honk + name = "toy H.O.N.K." + desc = "Mini-Mecha action figure! Collect them all! 6/11. This one is the infamous H.O.N.K mech!" + icon_state = "honkprize" + +/obj/item/toy/figure/mech/marauder + name = "toy Marauder" + desc = "Mini-Mecha action figure! Collect them all! 7/11. This one is the powerful marauder combat mecha! Run for cover!" + icon_state = "marauderprize" + +/obj/item/toy/figure/mech/seraph + name = "toy Seraph" + desc = "Mini-Mecha action figure! Collect them all! 8/11. This one is the powerful seraph combat mecha! Someone's in trouble!" + icon_state = "seraphprize" + +/obj/item/toy/figure/mech/mauler + name = "toy Mauler" + desc = "Mini-Mecha action figure! Collect them all! 9/11. This one is the deadly mauler combat mecha! Look out!" + icon_state = "maulerprize" + +/obj/item/toy/figure/mech/odysseus + name = "toy Odysseus" + desc = "Mini-Mecha action figure! Collect them all! 10/11. This one is the spindly, syringe-firing odysseus medical mecha." + icon_state = "odysseusprize" + +/obj/item/toy/figure/mech/phazon + name = "toy Phazon" + desc = "Mini-Mecha action figure! Collect them all! 11/11. This one is the mysterious Phazon combat mecha! Nobody's safe!" + icon_state = "phazonprize" + + ////////////////////////////////////////////////////// // Magic 8-Ball / Conch // ////////////////////////////////////////////////////// diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 48edcc826e6..ba96fc54aba 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -91,8 +91,8 @@ /obj/random/figure, /obj/item/toy/minimeteor, /obj/item/toy/redbutton, - /obj/item/toy/owl, - /obj/item/toy/griffin, + /obj/item/toy/figure/owl, + /obj/item/toy/figure/griffin, /obj/item/clothing/head/blob, /obj/item/id_decal/gold, /obj/item/id_decal/silver, diff --git a/code/modules/antagonists/traitor/contractor/datums/syndicate_contract.dm b/code/modules/antagonists/traitor/contractor/datums/syndicate_contract.dm index d3847a6629b..ded185b75ab 100644 --- a/code/modules/antagonists/traitor/contractor/datums/syndicate_contract.dm +++ b/code/modules/antagonists/traitor/contractor/datums/syndicate_contract.dm @@ -30,7 +30,7 @@ /obj/item/reagent_containers/food/snacks/tatortot, /obj/item/storage/box/fakesyndiesuit, /obj/item/storage/fancy/cigarettes/cigpack_syndicate, - /obj/item/toy/figure/syndie, + /obj/item/toy/figure/crew/syndie, /obj/item/toy/nuke, /obj/item/toy/plushie/nukeplushie, /obj/item/toy/sword, diff --git a/code/modules/arcade/arcade_prize.dm b/code/modules/arcade/arcade_prize.dm index 3adc53684cf..18d149b39e9 100644 --- a/code/modules/arcade/arcade_prize.dm +++ b/code/modules/arcade/arcade_prize.dm @@ -10,8 +10,8 @@ var/opening = 0 var/possible_contents = list(/obj/random/carp_plushie, /obj/random/plushie, /obj/random/figure, /obj/item/toy/eight_ball, /obj/item/stack/tickets) -/obj/item/toy/prizeball/New() - ..() +/obj/item/toy/prizeball/Initialize(mapload) + . = ..() icon_state = pick("prizeball_1","prizeball_2","prizeball_3") /obj/item/toy/prizeball/attack_self(mob/user as mob) diff --git a/code/modules/arcade/prize_datums.dm b/code/modules/arcade/prize_datums.dm index 9e402020242..8ffc59825cb 100644 --- a/code/modules/arcade/prize_datums.dm +++ b/code/modules/arcade/prize_datums.dm @@ -200,7 +200,7 @@ GLOBAL_DATUM_INIT(global_prizes, /datum/prizes, new()) /datum/prize_item/toy_xeno name = "Xeno Action Figure" desc = "A lifelike replica of the horrific xeno scourge." - typepath = /obj/item/toy/toy_xeno + typepath = /obj/item/toy/figure/xeno cost = 80 /datum/prize_item/rubberducky @@ -272,13 +272,13 @@ GLOBAL_DATUM_INIT(global_prizes, /datum/prizes, new()) /datum/prize_item/owl name = "Owl Action Figure" desc = "Remember: heroes don't grief!" - typepath = /obj/item/toy/owl + typepath = /obj/item/toy/figure/owl cost = 125 /datum/prize_item/griffin name = "Griffin Action Figure" desc = "If you can't be the best, you can always be the WORST." - typepath = /obj/item/toy/griffin + typepath = /obj/item/toy/figure/griffin cost = 125 /datum/prize_item/codex_gigas diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index 19773358277..56c5c820559 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -61,7 +61,7 @@ if(53 to 54) new /obj/item/toy/balloon(src) if(55 to 56) - var/newitem = pick(subtypesof(/obj/item/toy/prize)) + var/newitem = pick(subtypesof(/obj/item/toy/figure/mech)) new newitem(src) if(57 to 58) new /obj/item/toy/syndicateballoon(src)