diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index 01d5f876fd7..9132f7ae88f 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -34796,20 +34796,8 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cyborgrecharger{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/mech_bay_power_console, -/obj/item/circuitboard/mech_recharger{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/mechfab{ - pixel_y = -6; - pixel_x = 6 - }, /obj/machinery/power/apc/directional/north, +/obj/effect/spawner/random/tech_storage/robotics, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cvz" = ( @@ -35514,18 +35502,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/borgupload{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/aiupload{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/aicore{ - pixel_x = 5; - pixel_y = -5 - }, +/obj/effect/spawner/random/tech_storage/silicon, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "cyv" = ( @@ -35542,23 +35519,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/message_monitor{ - pixel_y = 6; - pixel_x = -6 - }, -/obj/item/circuitboard/aifixer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/teleporter, -/obj/item/circuitboard/teleporter_hub{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/teleporter_station{ - pixel_x = 6; - pixel_y = -6 - }, +/obj/effect/spawner/random/tech_storage/teleporter, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cyz" = ( @@ -35575,14 +35536,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/autolathe{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/ore_redemption{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/effect/spawner/random/tech_storage/supply, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cyB" = ( @@ -36044,14 +35998,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/communications{ - pixel_y = 1; - pixel_x = -1 - }, -/obj/item/circuitboard/card{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/effect/spawner/random/tech_storage/comms, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "czU" = ( @@ -36452,16 +36399,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/robotics{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/mecha_control{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/rnd_backup_console, -/obj/item/circuitboard/rnd_network_controller, +/obj/effect/spawner/random/tech_storage/rnd, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "cBs" = ( @@ -36469,34 +36407,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cloning{ - pixel_y = 8; - pixel_x = -8 - }, -/obj/item/circuitboard/clonescanner{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/circuitboard/clonepod{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/cryo_tube{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/pandemic{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/bodyscanner{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/circuitboard/sleeper{ - pixel_x = 9; - pixel_y = -9 - }, +/obj/effect/spawner/random/tech_storage/medical, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cBt" = ( @@ -36504,19 +36415,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/powermonitor{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/stationalert, -/obj/item/circuitboard/atmos_alert{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/smes{ - pixel_x = 6; - pixel_y = -6 - }, +/obj/effect/spawner/random/tech_storage/engineering, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cBu" = ( @@ -36524,18 +36423,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/secure_data{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/camera{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/prisoner{ - pixel_x = 5; - pixel_y = -5 - }, +/obj/effect/spawner/random/tech_storage/security, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cBv" = ( @@ -70655,22 +70543,10 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/rdconsole{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/circuitboard/rdserver{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/scientific_analyzer, -/obj/item/circuitboard/protolathe{ - pixel_x = 3; - pixel_y = -3 - }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/spawner/random/tech_storage/research, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "ppo" = ( diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 048a08a98ab..338ae738c96 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -42088,18 +42088,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/item/circuitboard/borgupload{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/aiupload{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/aicore{ - pixel_x = 5; - pixel_y = -5 - }, +/obj/effect/spawner/random/tech_storage/silicon, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -43828,17 +43817,10 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/autolathe{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/ore_redemption{ - pixel_x = 3; - pixel_y = -3 - }, /obj/machinery/light/small{ dir = 4 }, +/obj/effect/spawner/random/tech_storage/supply, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "iaW" = ( @@ -49774,19 +49756,12 @@ icon_state = "4-8" }, /obj/structure/rack, -/obj/item/circuitboard/card{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/communications{ - pixel_x = 5; - pixel_y = -5 - }, /obj/machinery/camera{ c_tag = "Secure Tech Storage"; dir = 8; network = list("SS13","CE") }, +/obj/effect/spawner/random/tech_storage/comms, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -52228,19 +52203,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cyborgrecharger{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/mech_bay_power_console, -/obj/item/circuitboard/mech_recharger{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/mechfab{ - pixel_y = -6; - pixel_x = 6 - }, +/obj/effect/spawner/random/tech_storage/robotics, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "jTr" = ( @@ -59569,19 +59532,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/powermonitor{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/stationalert, -/obj/item/circuitboard/atmos_alert{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/smes{ - pixel_x = 6; - pixel_y = -6 - }, +/obj/effect/spawner/random/tech_storage/engineering, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "lCQ" = ( @@ -65789,16 +65740,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/item/circuitboard/robotics{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/mecha_control{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/rnd_backup_console, -/obj/item/circuitboard/rnd_network_controller, +/obj/effect/spawner/random/tech_storage/rnd, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -72273,34 +72215,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cloning{ - pixel_y = 8; - pixel_x = -8 - }, -/obj/item/circuitboard/clonescanner{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/circuitboard/clonepod{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/cryo_tube{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/pandemic{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/bodyscanner{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/circuitboard/sleeper{ - pixel_x = 9; - pixel_y = -9 - }, +/obj/effect/spawner/random/tech_storage/medical, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "oJn" = ( @@ -92402,22 +92317,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/rdconsole{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/circuitboard/rdserver{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/protolathe{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/circuit_imprinter{ - pixel_y = -6; - pixel_x = 6 - }, +/obj/effect/spawner/random/tech_storage/research, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "twC" = ( @@ -102556,24 +102456,8 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/message_monitor{ - pixel_y = 6; - pixel_x = -6 - }, -/obj/item/circuitboard/aifixer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/teleporter, -/obj/item/circuitboard/teleporter_hub{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/teleporter_station{ - pixel_x = 6; - pixel_y = -6 - }, /obj/machinery/firealarm/directional/east, +/obj/effect/spawner/random/tech_storage/teleporter, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "vRb" = ( @@ -105074,21 +104958,10 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/secure_data{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/camera{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/prisoner{ - pixel_x = 5; - pixel_y = -5 - }, /obj/machinery/light/small{ dir = 8 }, +/obj/effect/spawner/random/tech_storage/security, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "wvB" = ( diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index 6c137aa5465..5ec31266fac 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -19315,25 +19315,14 @@ /area/station/engineering/tech_storage) "bAi" = ( /obj/structure/rack, -/obj/item/circuitboard/robotics{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/mecha_control, /obj/structure/cable{ icon_state = "4-8" }, -/obj/item/circuitboard/rnd_backup_console, -/obj/item/circuitboard/rnd_network_controller, +/obj/effect/spawner/random/tech_storage/rnd, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "bAj" = ( /obj/structure/rack, -/obj/item/circuitboard/communications{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/card, /obj/structure/cable{ icon_state = "1-2" }, @@ -19343,6 +19332,7 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/effect/spawner/random/tech_storage/comms, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "bAl" = ( @@ -19755,19 +19745,6 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cyborgrecharger{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/mech_bay_power_console, -/obj/item/circuitboard/mech_recharger{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/mechfab{ - pixel_x = 6; - pixel_y = -6 - }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -21531,34 +21508,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cloning{ - pixel_x = -8; - pixel_y = 8 - }, -/obj/item/circuitboard/clonescanner{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/circuitboard/clonepod{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/cryo_tube{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/pandemic{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/bodyscanner{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/circuitboard/sleeper{ - pixel_x = 9; - pixel_y = -9 - }, +/obj/effect/spawner/random/tech_storage/medical, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -21568,14 +21518,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/autolathe{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/ore_redemption{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/effect/spawner/random/tech_storage/supply, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -22053,19 +21996,6 @@ }, /area/station/engineering/break_room) "bIJ" = ( -/obj/item/circuitboard/powermonitor{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/stationalert, -/obj/item/circuitboard/atmos_alert{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/smes{ - pixel_x = 6; - pixel_y = -6 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -22073,6 +22003,7 @@ dir = 8; layer = 2.9 }, +/obj/effect/spawner/random/tech_storage/engineering, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -22090,19 +22021,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cyborgrecharger{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/mech_bay_power_console, -/obj/item/circuitboard/mech_recharger{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/mechfab{ - pixel_y = -6; - pixel_x = 6 - }, +/obj/effect/spawner/random/tech_storage/robotics, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -22592,18 +22511,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/secure_data{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/camera{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/prisoner{ - pixel_x = 5; - pixel_y = -5 - }, +/obj/effect/spawner/random/tech_storage/security, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -57280,23 +57188,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/message_monitor{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/circuitboard/aifixer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/teleporter, -/obj/item/circuitboard/teleporter_hub{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/teleporter_station{ - pixel_x = 6; - pixel_y = -6 - }, +/obj/effect/spawner/random/tech_storage/teleporter, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -67862,23 +67754,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/rdconsole{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/circuitboard/rdserver{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/scientific_analyzer, -/obj/item/circuitboard/protolathe{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/circuit_imprinter{ - pixel_x = 6; - pixel_y = -6 - }, +/obj/effect/spawner/random/tech_storage/research, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -69096,18 +68972,10 @@ /area/station/engineering/equipmentstorage) "lXr" = ( /obj/structure/rack, -/obj/item/circuitboard/aicore{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/aiupload, -/obj/item/circuitboard/borgupload{ - pixel_x = 3; - pixel_y = -3 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/spawner/random/tech_storage/silicon, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "lXB" = ( diff --git a/_maps/map_files/stations/emeraldstation.dmm b/_maps/map_files/stations/emeraldstation.dmm index ce49e66e3ff..11290669323 100644 --- a/_maps/map_files/stations/emeraldstation.dmm +++ b/_maps/map_files/stations/emeraldstation.dmm @@ -123,34 +123,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cloning{ - pixel_y = 8; - pixel_x = -8 - }, -/obj/item/circuitboard/clonescanner{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/circuitboard/clonepod{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/cryo_tube{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/pandemic{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/bodyscanner{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/circuitboard/sleeper{ - pixel_x = 9; - pixel_y = -9 - }, +/obj/effect/spawner/random/tech_storage/medical, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "acd" = ( @@ -4749,18 +4722,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/rnd_network_controller{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/circuitboard/robotics{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/mecha_control{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/effect/spawner/random/tech_storage/rnd, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "aYw" = ( @@ -11397,17 +11359,10 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/communications{ - pixel_y = 1; - pixel_x = -1 - }, -/obj/item/circuitboard/card{ - pixel_x = 3; - pixel_y = -3 - }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/spawner/random/tech_storage/comms, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "cmt" = ( @@ -13820,14 +13775,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/autolathe{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/ore_redemption{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/effect/spawner/random/tech_storage/supply, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "cLk" = ( @@ -17054,19 +17002,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cyborgrecharger{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/mech_bay_power_console, -/obj/item/circuitboard/mech_recharger{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/mechfab{ - pixel_y = -6; - pixel_x = 6 - }, +/obj/effect/spawner/random/tech_storage/robotics, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "dtO" = ( @@ -53866,15 +53802,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/teleporter, -/obj/item/circuitboard/teleporter_hub{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/teleporter_station{ - pixel_x = 6; - pixel_y = -6 - }, +/obj/effect/spawner/random/tech_storage/teleporter, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "kLu" = ( @@ -65038,18 +64966,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/borgupload{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/aiupload{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/aicore{ - pixel_x = 5; - pixel_y = -5 - }, +/obj/effect/spawner/random/tech_storage/silicon, /turf/simulated/floor/plasteel, /area/station/engineering/tech_storage) "nak" = ( @@ -74258,22 +74175,10 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/powermonitor{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/stationalert, -/obj/item/circuitboard/atmos_alert{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/smes{ - pixel_x = 6; - pixel_y = -6 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/spawner/random/tech_storage/engineering, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "oNq" = ( @@ -106814,22 +106719,6 @@ }, /turf/simulated/floor/plating, /area/station/science/xenobiology) -"vml" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/aifixer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/message_monitor, -/obj/item/circuitboard/rnd_backup_console{ - pixel_y = -3; - pixel_x = 3 - }, -/turf/simulated/floor/plating, -/area/station/engineering/tech_storage) "vmm" = ( /obj/structure/sign/nosmoking_2{ pixel_x = -32 @@ -111692,21 +111581,10 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/secure_data{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/camera{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/prisoner{ - pixel_x = 5; - pixel_y = -5 - }, /obj/structure/cable{ icon_state = "2-4" }, +/obj/effect/spawner/random/tech_storage/security, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "wiU" = ( @@ -113980,23 +113858,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/rdconsole{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/circuitboard/rdserver{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/scientific_analyzer, -/obj/item/circuitboard/protolathe{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/circuit_imprinter{ - pixel_y = -6; - pixel_x = 6 - }, +/obj/effect/spawner/random/tech_storage/research, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "wKg" = ( @@ -142606,7 +142468,7 @@ kHZ tXi dtL vpm -vml +iET iET wYo dGm diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index 721c035b0cd..bd66901784d 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -11926,19 +11926,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cyborgrecharger{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/mech_bay_power_console, -/obj/item/circuitboard/mech_recharger{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/mechfab{ - pixel_y = -6; - pixel_x = 6 - }, +/obj/effect/spawner/random/tech_storage/robotics, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -11948,34 +11936,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/cloning{ - pixel_y = 8; - pixel_x = -8 - }, -/obj/item/circuitboard/clonescanner{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/circuitboard/clonepod{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/cryo_tube{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/pandemic{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/bodyscanner{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/circuitboard/sleeper{ - pixel_x = 9; - pixel_y = -9 - }, +/obj/effect/spawner/random/tech_storage/medical, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -11998,20 +11959,8 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/powermonitor{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/stationalert, -/obj/item/circuitboard/atmos_alert{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/smes{ - pixel_x = 6; - pixel_y = -6 - }, /obj/machinery/requests_console/directional/north, +/obj/effect/spawner/random/tech_storage/engineering, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -13063,18 +13012,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/borgupload{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/aiupload{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/aicore{ - pixel_x = 5; - pixel_y = -5 - }, +/obj/effect/spawner/random/tech_storage/silicon, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -13108,14 +13046,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/autolathe{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/ore_redemption{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/effect/spawner/random/tech_storage/supply, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -13125,23 +13056,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/message_monitor{ - pixel_y = 6; - pixel_x = -6 - }, -/obj/item/circuitboard/aifixer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/teleporter, -/obj/item/circuitboard/teleporter_hub{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/teleporter_station{ - pixel_x = 6; - pixel_y = -6 - }, +/obj/effect/spawner/random/tech_storage/teleporter, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -13296,21 +13211,10 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/secure_data{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/camera{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/prisoner{ - pixel_x = 5; - pixel_y = -5 - }, /obj/machinery/ai_status_display{ pixel_y = 31 }, +/obj/effect/spawner/random/tech_storage/security, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -13601,17 +13505,10 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/card{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/communications{ - pixel_x = 5; - pixel_y = -5 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/spawner/random/tech_storage/comms, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -14182,11 +14079,6 @@ /obj/machinery/firealarm/directional/north, /turf/simulated/floor/plasteel, /area/station/supply/storage) -"bjm" = ( -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/station/medical/reception) "bjp" = ( /obj/structure/table, /obj/item/storage/toolbox/emergency, @@ -14250,16 +14142,7 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/robotics{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/mecha_control{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/rnd_backup_console, -/obj/item/circuitboard/rnd_network_controller, +/obj/effect/spawner/random/tech_storage/rnd, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -28332,12 +28215,6 @@ "chM" = ( /turf/simulated/wall, /area/station/medical/paramedic) -"chN" = ( -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whiteblue" - }, -/area/station/medical/medbay) "chO" = ( /obj/machinery/door/airlock/public/glass{ name = "Hydroponics Storage" @@ -29345,10 +29222,8 @@ /turf/simulated/wall/r_wall, /area/station/science/rnd) "cmq" = ( -/obj/machinery/economy/vending/medical, /turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whiteblue" + icon_state = "white" }, /area/station/medical/reception) "cmr" = ( @@ -30093,18 +29968,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) -"cpZ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "whitehall" - }, -/area/station/medical/reception) "cqb" = ( /obj/structure/window/reinforced{ dir = 8 @@ -31462,12 +31325,6 @@ icon_state = "white" }, /area/station/medical/storage) -"cvU" = ( -/obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel{ - icon_state = "whitehall" - }, -/area/station/medical/reception) "cvV" = ( /obj/machinery/door/airlock{ name = "Abandoned Hydroponics" @@ -31723,6 +31580,12 @@ icon_state = "neutralfull" }, /area/station/hallway/secondary/exit) +"cwY" = ( +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/station/medical/medbay) "cwZ" = ( /obj/machinery/computer/borgupload{ dir = 8 @@ -35717,7 +35580,15 @@ }, /area/station/security/prisonlockers) "cPj" = ( -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteblue" @@ -49187,6 +49058,17 @@ "hDK" = ( /turf/simulated/floor/plasteel, /area/station/supply/lobby) +"hDL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/poster/official/random/directional/west, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/station/medical/medbay) "hDY" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/delivery, @@ -54048,6 +53930,20 @@ /obj/effect/mapping_helpers/airlock/autoname, /turf/simulated/floor/plating, /area/station/procedure/trainer_office) +"jLg" = ( +/obj/item/stock_parts/cell/crap, +/obj/machinery/cell_charger, +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/structure/sign/singulo{ + pixel_x = 1; + pixel_y = 31 + }, +/turf/simulated/floor/carpet, +/area/station/science/robotics/showroom) "jLr" = ( /obj/structure/table, /obj/item/tank/internals/anesthetic{ @@ -55944,6 +55840,13 @@ icon_state = "dark" }, /area/station/medical/cloning) +"kAi" = ( +/obj/machinery/economy/vending/medical, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/station/medical/reception) "kAP" = ( /obj/structure/closet/crate/trashcart, /obj/effect/turf_decal/delivery, @@ -60496,15 +60399,11 @@ /turf/simulated/floor/bluegrid, /area/station/turret_protected/ai) "mwo" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start/chief_medical_officer, /turf/simulated/floor/plasteel{ - dir = 1; + dir = 6; icon_state = "whiteblue" }, -/area/station/medical/medbay) +/area/station/medical/reception) "mwH" = ( /obj/structure/table/wood, /obj/item/stack/sheet/metal{ @@ -65076,19 +64975,9 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "oqO" = ( -/obj/structure/disposalpipe/segment/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/table, -/obj/machinery/recharger, +/obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ - icon_state = "whitebluefull" + icon_state = "whitehall" }, /area/station/medical/reception) "oqZ" = ( @@ -66501,6 +66390,16 @@ }, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) +"oWw" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/chief_medical_officer, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/station/medical/medbay) "oWE" = ( /turf/simulated/wall/r_wall, /area/station/public/fitness) @@ -67379,6 +67278,22 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/aft_starboard) +"pqR" = ( +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/table, +/obj/machinery/recharger, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/station/medical/reception) "pre" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ @@ -68284,12 +68199,6 @@ icon_state = "dark" }, /area/station/turret_protected/ai_upload) -"pLQ" = ( -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whiteblue" - }, -/area/station/medical/reception) "pMx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -70496,26 +70405,10 @@ dir = 8; layer = 2.9 }, -/obj/item/circuitboard/rdconsole{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/circuitboard/rdserver{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/scientific_analyzer, -/obj/item/circuitboard/protolathe{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/circuit_imprinter{ - pixel_y = -6; - pixel_x = 6 - }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/spawner/random/tech_storage/research, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -72401,21 +72294,6 @@ icon_state = "dark" }, /area/station/security/interrogation) -"ryB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" - }, -/area/station/medical/medbay) "ryG" = ( /obj/machinery/driver_button{ id_tag = "toxinsdriver"; @@ -73404,6 +73282,13 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/aft/south) +"rQm" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/station/medical/medbay) "rQt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment/corner{ @@ -81836,6 +81721,18 @@ /obj/effect/mapping_helpers/airlock/autoname, /turf/simulated/floor/plasteel, /area/station/science/toxins/mixing) +"vyL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "whitehall" + }, +/area/station/medical/reception) "vzi" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -82090,17 +81987,6 @@ }, /turf/space, /area/station/engineering/solar/fore_port) -"vIt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/sign/poster/official/random/directional/west, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/station/medical/medbay) "vIz" = ( /obj/structure/cable{ icon_state = "4-8" @@ -82753,13 +82639,6 @@ icon_state = "dark" }, /area/station/service/chapel/funeral) -"vXx" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whiteblue" - }, -/area/station/medical/reception) "vXJ" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -84719,19 +84598,12 @@ /turf/simulated/floor/plasteel, /area/station/service/janitor) "wVq" = ( -/obj/item/stock_parts/cell/crap, -/obj/machinery/cell_charger, -/obj/structure/table/wood, -/obj/structure/window/reinforced{ - dir = 8 +/obj/machinery/hologram/holopad, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" }, -/obj/machinery/door/firedoor, -/obj/structure/sign/singulo{ - pixel_x = 1; - pixel_y = 31 - }, -/turf/simulated/floor/carpet, -/area/station/science/robotics/showroom) +/area/station/medical/reception) "wVD" = ( /obj/structure/cable{ icon_state = "4-8" @@ -110379,7 +110251,7 @@ mFQ pIt rXj ujh -vIt +hDL blu wcp vzQ @@ -110882,7 +110754,7 @@ lcd lzO nBF uLM -cPj +rQm cov rot qdp @@ -110894,7 +110766,7 @@ daP cCa daP mnA -ryB +cPj iIy ybX daP @@ -111632,7 +111504,7 @@ bMS dDT jdP bcX -cvU +oqO ciB dAq nht @@ -111889,8 +111761,8 @@ bZx rUT jdP bcX -cvU -pLQ +oqO +mwo fGE skP coo @@ -112146,12 +112018,12 @@ bMS caD jdP bcX -cvU +oqO asn xFH bVF cia -mwo +oWw daP daP cuL @@ -112404,7 +112276,7 @@ tZp jdP bcX chE -bjm +cmq cvn mAk bDc @@ -112660,7 +112532,7 @@ bZl can jdP bcX -cvU +oqO qSu eVn xxa @@ -112917,7 +112789,7 @@ bZl caN jdP bcX -cvU +oqO oNo iFi cNP @@ -113174,14 +113046,14 @@ ebs tZp dfv car -cpZ +vyL ogq oHy -pLQ +mwo cEU opu cwq -chN +cwY bRb lhd eRZ @@ -113689,7 +113561,7 @@ caO jdP xvh bDc -oqO +pqR dej dvU fEf @@ -113947,7 +113819,7 @@ jdP xvh cia cpz -vXx +wVq oNo liB cCf @@ -114462,7 +114334,7 @@ omr coo uiK hcL -cmq +kAi coo coo kRA @@ -114707,7 +114579,7 @@ cnm bSc bSc bSc -wVq +jLg cfJ jJW bSc diff --git a/code/game/objects/effects/spawners/random/random_spawner.dm b/code/game/objects/effects/spawners/random/random_spawner.dm index be0c2ea7e0b..06e104398ee 100644 --- a/code/game/objects/effects/spawners/random/random_spawner.dm +++ b/code/game/objects/effects/spawners/random/random_spawner.dm @@ -17,10 +17,12 @@ var/spawn_loot_count = 1 /// If the same item can be spawned twice var/spawn_loot_double = TRUE - /// Whether the items should be distributed to offsets 0,1,-1,2,-2,3,-3.. This overrides pixel_x/y on the spawner itself + /// Whether the items should be staggered visually on their location. var/spawn_loot_split = FALSE - /// The pixel x/y divider offsets for spawn_loot_split (spaced 1 pixel apart by default) + /// The pixel x/y divider offsets for spawn_loot_split (spaced 2 pixels apart by default) var/spawn_loot_split_pixel_offsets = 2 + /// The placer for loot when `spawn_loot_split` is enabled + var/datum/spawner_pixel_placer/pixel_placer /// Whether the spawner should spawn all the loot in the list var/spawn_all_loot = FALSE /// The chance for the spawner to create loot (ignores spawn_loot_count) @@ -51,6 +53,10 @@ spawn_loot() return INITIALIZE_HINT_QDEL +/obj/effect/spawner/random/Destroy() + . = ..() + qdel(pixel_placer) + /obj/effect/spawner/random/proc/generate_loot_list() if(loot_type_path) loot += typesof(loot_type_path) @@ -82,9 +88,11 @@ var/list/loot_list = generate_loot_list() var/safe_failure_count = 0 + if(spawn_loot_split) + pixel_placer = new(spawn_loot_split_pixel_offsets, spawn_random_offset_max_pixels) + if(length(loot_list)) var/loot_spawned = 0 - var/pixel_divider = FLOOR(spawn_random_offset_max_pixels / spawn_loot_split_pixel_offsets, 1) while((spawn_loot_count-loot_spawned) && length(loot_list) && safe_failure_count <= 10) loot_spawned++ var/lootspawn = pick_weight_recursive(loot_list) @@ -122,16 +130,12 @@ else if(spawn_random_offset) spawned_loot.pixel_x = rand(-spawn_random_offset_max_pixels, spawn_random_offset_max_pixels) spawned_loot.pixel_y = rand(-spawn_random_offset_max_pixels, spawn_random_offset_max_pixels) - else if(spawn_loot_split) - if(loot_spawned) - var/column = FLOOR(loot_spawned / pixel_divider, 1) - spawned_loot.pixel_x = spawn_loot_split_pixel_offsets * (loot_spawned % pixel_divider) + (column * spawn_loot_split_pixel_offsets) - spawned_loot.pixel_y = spawn_loot_split_pixel_offsets * (loot_spawned % pixel_divider) + else if(spawn_loot_split && loot_spawned) + pixel_placer.place(spawned_loot, loot_spawned) if(container) spawned_loot.forceMove(container) - /** * Makes the actual item related to our spawner. If `record_spawn` is `TRUE`, * this is when the items spawned are recorded to blackbox (except for `/obj/effect`s). diff --git a/code/game/objects/effects/spawners/random/spawner_pixel_placer.dm b/code/game/objects/effects/spawners/random/spawner_pixel_placer.dm new file mode 100644 index 00000000000..afde4b280d2 --- /dev/null +++ b/code/game/objects/effects/spawners/random/spawner_pixel_placer.dm @@ -0,0 +1,48 @@ +/// For use when arranging items on a tile with a staggered visual +/// appearance. Initially for use with [/obj/effect/spawner/random]s. +/datum/spawner_pixel_placer + /// The pixel x/y divider offsets between items. + var/pixel_offsets = 2 + /// Maximum offset distance from the center of a tile. + var/max_pixel_offset = 16 + /// For tracking if we're staggering from the top left or bottom right. + var/static/list/offsets = list(1, -1) + var/offset_multiplier = 0 + var/pixel_divider + /// The items we've added so far. Used to perform one + /// last visual arrangement in z-order once complete. + var/list/added_items + +/datum/spawner_pixel_placer/New(pixel_offsets_, max_pixel_offset_) + . = ..() + pixel_offsets = pixel_offsets_ + max_pixel_offset = max_pixel_offset_ + pixel_divider = FLOOR(max_pixel_offset * 2 / pixel_offsets, 1) + +/datum/spawner_pixel_placer/proc/place(atom/item, count) + if(count == 1) + added_items = list(item) + return + + var/offset = offsets[(count % 2) + 1] + if(offset == 1) + added_items.Add(item) + offset_multiplier++ + else + added_items.Insert(1, item) + var/column = FLOOR(count / pixel_divider, 1) + var/loot_pixel_x = offset * (pixel_offsets * (offset_multiplier % pixel_divider) + (column * pixel_offsets)) + var/loot_pixel_y = offset * (pixel_offsets * (offset_multiplier % pixel_divider)) + item.pixel_x = loot_pixel_x + item.pixel_y = -loot_pixel_y + +/datum/spawner_pixel_placer/Destroy(force, ...) + . = ..() + + // Once we've placed all our items, arrange them visually from top to bottom. + if(!isnull(added_items)) + for(var/i in 1 to length(added_items)) + var/atom/A = added_items[i] + A.layer += 0.001 * i + + added_items.Cut() diff --git a/code/game/objects/effects/spawners/random/tech_storage_spawners.dm b/code/game/objects/effects/spawners/random/tech_storage_spawners.dm new file mode 100644 index 00000000000..77ea2e608c2 --- /dev/null +++ b/code/game/objects/effects/spawners/random/tech_storage_spawners.dm @@ -0,0 +1,95 @@ +/obj/effect/spawner/random/tech_storage + name = "generic circuit board spawner" + icon = 'icons/effects/random_spawners.dmi' + icon_state = "circuit_board" + spawn_loot_split = TRUE + spawn_loot_split_pixel_offsets = 3 + spawn_all_loot = TRUE + +/obj/effect/spawner/random/tech_storage/medical + name = "medical circuit boards spawner" + loot = list( + /obj/item/circuitboard/bodyscanner, + /obj/item/circuitboard/clonepod, + /obj/item/circuitboard/clonescanner, + /obj/item/circuitboard/cloning, + /obj/item/circuitboard/cryo_tube, + /obj/item/circuitboard/pandemic, + /obj/item/circuitboard/sleeper, + ) + +/obj/effect/spawner/random/tech_storage/security + name = "security circuit boards spawner" + loot = list( + /obj/item/circuitboard/camera, + /obj/item/circuitboard/prisoner, + /obj/item/circuitboard/secure_data, + ) + +/obj/effect/spawner/random/tech_storage/engineering + name = "engineering circuit boards spawner" + loot = list( + /obj/item/circuitboard/atmos_alert, + /obj/item/circuitboard/powermonitor, + /obj/item/circuitboard/smes, + /obj/item/circuitboard/stationalert, + ) + +/obj/effect/spawner/random/tech_storage/teleporter + name = "teleporter circuit boards spawner" + loot = list( + /obj/item/circuitboard/teleporter_station, + /obj/item/circuitboard/teleporter_hub, + /obj/item/circuitboard/teleporter, + /obj/item/circuitboard/message_monitor, + ) + +/obj/effect/spawner/random/tech_storage/supply + name = "supply circuit boards spawner" + loot = list( + /obj/item/circuitboard/ore_redemption, + /obj/item/circuitboard/autolathe, + ) + +/obj/effect/spawner/random/tech_storage/research + name = "research circuit boards spawner" + loot = list( + /obj/item/circuitboard/protolathe, + /obj/item/circuitboard/scientific_analyzer, + /obj/item/circuitboard/rdserver, + /obj/item/circuitboard/rdconsole, + /obj/item/circuitboard/aifixer, + ) + +/obj/effect/spawner/random/tech_storage/robotics + name = "robotics circuit boards spawner" + loot = list( + /obj/item/circuitboard/mechfab, + /obj/item/circuitboard/mech_recharger, + /obj/item/circuitboard/mech_bay_power_console, + /obj/item/circuitboard/cyborgrecharger, + ) + +/obj/effect/spawner/random/tech_storage/silicon + name = "secure silicon circuit boards spawner" + loot = list( + /obj/item/circuitboard/aicore, + /obj/item/circuitboard/aiupload, + /obj/item/circuitboard/borgupload, + ) + +/obj/effect/spawner/random/tech_storage/comms + name = "secure command circuit boards spawner" + loot = list( + /obj/item/circuitboard/card, + /obj/item/circuitboard/communications, + ) + +/obj/effect/spawner/random/tech_storage/rnd + name = "secure science circuit boards spawner" + loot = list( + /obj/item/circuitboard/rnd_network_controller, + /obj/item/circuitboard/rnd_backup_console, + /obj/item/circuitboard/mecha_control, + /obj/item/circuitboard/robotics, + ) diff --git a/icons/effects/random_spawners.dmi b/icons/effects/random_spawners.dmi index 6c4a9779ad8..2de26c69b36 100644 Binary files a/icons/effects/random_spawners.dmi and b/icons/effects/random_spawners.dmi differ diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index 7f179f38ab7..8203f7ca12d 100644 Binary files a/icons/obj/module.dmi and b/icons/obj/module.dmi differ diff --git a/paradise.dme b/paradise.dme index ca8be1fdd19..e270eaf8d29 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1123,6 +1123,8 @@ #include "code\game\objects\effects\spawners\random\outfit_spawners.dm" #include "code\game\objects\effects\spawners\random\plushie_spawners.dm" #include "code\game\objects\effects\spawners\random\random_spawner.dm" +#include "code\game\objects\effects\spawners\random\spawner_pixel_placer.dm" +#include "code\game\objects\effects\spawners\random\tech_storage_spawners.dm" #include "code\game\objects\effects\spawners\random\toy_spawners.dm" #include "code\game\objects\effects\spawners\random\trash_spawners.dm" #include "code\game\objects\effects\spawners\random\pool\lavaland_pools.dm"