From 5ba3bf7fd06b07fc81978ddd98417bee67c3155c Mon Sep 17 00:00:00 2001 From: generalthrax <139387950+generalthrax@users.noreply.github.com> Date: Fri, 25 Oct 2024 20:26:45 -0500 Subject: [PATCH] Revert "Refactors lootdroppers (#3526)" This reverts commit 94cb62b6626cd2b0d6fb5324b5c27f1eccffde27. --- .../BeachRuins/beach_ancient_ruin.dmm | 2 +- .../BeachRuins/beach_float_resort.dmm | 2 +- .../BeachRuins/beach_ocean_town.dmm | 56 +- .../BeachRuins/beach_pirate_crash.dmm | 10 +- .../BeachRuins/beach_treasure_cove.dmm | 6 +- .../IceRuins/icemoon_crashed_holemaker.dmm | 12 +- .../IceRuins/icemoon_ice_lodge.dmm | 22 +- .../icemoon_underground_abandoned_village.dmm | 8 +- .../icemoon_underground_brazillianlab.dmm | 8 +- .../JungleRuins/jungle_bombed_starport.dmm | 10 +- .../JungleRuins/jungle_cavecrew.dmm | 12 +- .../JungleRuins/jungle_medtech_outbreak.dmm | 2 +- .../JungleRuins/jungle_paradise.dmm | 28 +- .../JungleRuins/jungle_syndicate.dmm | 2 +- .../lavaland_abandonedlisteningpost.dmm | 10 +- .../LavaRuins/lavaland_crashed_starwalker.dmm | 4 +- .../lavaland_surface_wrecked_factory.dmm | 50 +- .../RockRuins/rockplanet_budgetcuts.dmm | 10 +- .../RockRuins/rockplanet_distillery.dmm | 36 +- .../RockRuins/rockplanet_nomadcrash.dmm | 6 +- .../RockRuins/rockplanet_shippingdock.dmm | 22 +- .../whitesands_surface_camp_combination.dmm | 16 +- .../whitesands_surface_camp_saloon.dmm | 18 +- .../whitesands_surface_medipen_plant.dmm | 8 +- .../whitesands_surface_pubbyslopcrash.dmm | 28 +- _maps/RandomRuins/SpaceRuins/astraeus.dmm | 24 +- .../SpaceRuins/corporate_mining.dmm | 12 +- _maps/RandomRuins/SpaceRuins/power_puzzle.dmm | 36 +- _maps/RandomRuins/SpaceRuins/spacemall.dmm | 108 +- .../wasteplanet_abandoned_mechbay.dmm | 30 +- .../WasteRuins/wasteplanet_lab.dmm | 2 +- .../WasteRuins/wasteplanet_tradepost.dmm | 8 +- .../WasteRuins/wasteplanet_yard.dmm | 22 +- _maps/outpost/hangar/nt_asteroid_40x20.dmm | 6 +- _maps/outpost/hangar/nt_asteroid_40x40.dmm | 7 +- _maps/outpost/hangar/nt_asteroid_56x20.dmm | 11 +- _maps/outpost/hangar/nt_asteroid_56x40.dmm | 11 +- _maps/outpost/indie_space.dmm | 122 +- _maps/outpost/nanotrasen_asteroid.dmm | 48 +- _maps/outpost/nanotrasen_ice.dmm | 26 +- .../independent/independent_beluga.dmm | 12 +- .../shuttles/independent/independent_box.dmm | 18 +- .../independent/independent_bubble.dmm | 6 +- .../independent/independent_dwayne.dmm | 65 +- .../independent/independent_junker.dmm | 28 +- .../shuttles/independent/independent_kilo.dmm | 12 +- .../independent/independent_lagoon.dmm | 4 +- .../independent/independent_mudskipper.dmm | 14 +- .../independent/independent_raleigh.dmm | 22 +- .../independent/independent_rigger.dmm | 40 +- .../independent/independent_schmiedeberg.dmm | 26 +- .../independent/independent_shetland.dmm | 18 +- .../independent/independent_sunskipper.dmm | 4 +- .../independent/independent_tranquility.dmm | 16 +- _maps/shuttles/inteq/inteq_colossus.dmm | 32 +- _maps/shuttles/inteq/inteq_hound.dmm | 14 +- _maps/shuttles/inteq/inteq_talos.dmm | 70 +- _maps/shuttles/inteq/inteq_valor.dmm | 18 +- _maps/shuttles/inteq/inteq_vaquero.dmm | 26 +- _maps/shuttles/minutemen/minutemen_atlas.dmm | 10 +- .../shuttles/nanotrasen/nanotrasen_delta.dmm | 16 +- .../shuttles/nanotrasen/nanotrasen_gecko.dmm | 146 +- .../nanotrasen/nanotrasen_harrier.dmm | 14 +- .../shuttles/nanotrasen/nanotrasen_heron.dmm | 41 +- _maps/shuttles/nanotrasen/nanotrasen_meta.dmm | 30 +- .../shuttles/nanotrasen/nanotrasen_mimir.dmm | 56 +- .../shuttles/nanotrasen/nanotrasen_ranger.dmm | 10 +- _maps/shuttles/pgf/pgf_crying_sun.dmm | 12 +- _maps/shuttles/pirate/pirate_libertatia.dmm | 20 +- _maps/shuttles/pirate/pirate_tortuga.dmm | 54 +- _maps/shuttles/solgov/solgov_inkwell.dmm | 16 +- .../subshuttles/independent_sugarcube.dmm | 8 +- .../syndicate/syndicate_cybersun_kansatsu.dmm | 6 +- .../syndicate/syndicate_gorlex_hyena.dmm | 16 +- .../syndicate/syndicate_gorlex_komodo.dmm | 48 +- .../syndicate/syndicate_litieguai.dmm | 8 +- .../shuttles/syndicate/syndicate_panacea.dmm | 6 +- .../syndicate/syndicate_twinkleshine.dmm | 22 +- _maps/templates/shelter_2.dmm | 2 +- _maps/templates/shelter_3.dmm | 2 +- code/__HELPERS/_lists.dm | 102 +- code/__HELPERS/_string_lists.dm | 2 +- code/_globalvars/lists/maintenance_loot.dm | 6 +- .../configuration/entries/game_options.dm | 10 - code/controllers/subsystem/overmap.dm | 2 +- code/controllers/subsystem/ticker.dm | 2 +- code/datums/ai_laws.dm | 4 +- code/datums/components/fantasy/_fantasy.dm | 2 +- code/datums/components/fantasy/suffixes.dm | 2 +- code/datums/components/squeak.dm | 4 +- code/datums/looping_sounds/_looping_sound.dm | 2 +- .../mapgen/planetary/JungleGenerator.dm | 6 +- code/datums/mapgen/planetary/LavaGenerator.dm | 6 +- code/datums/mapgen/planetary/RockGenerator.dm | 6 +- code/datums/mapgen/planetary/SandGenerator.dm | 6 +- code/datums/mapgen/planetary/SnowGenerator.dm | 10 +- .../datums/mapgen/planetary/WasteGenerator.dm | 248 ++-- .../mapgen/single_biome/WasteplanetCaves.dm | 2 +- code/datums/votes/_vote_datum.dm | 2 +- code/datums/weather/weather_controller.dm | 2 +- .../MapData/shuttles/nanotrasen_ranger.dm | 12 +- code/game/gamemodes/dynamic/dynamic.dm | 14 +- code/game/gamemodes/game_mode.dm | 4 +- code/game/gamemodes/meteor/meteors.dm | 2 +- code/game/machinery/computer/arcade.dm | 12 +- code/game/objects/effects/landmarks.dm | 10 +- code/game/objects/effects/misc.dm | 20 + code/game/objects/effects/spawners/bundle.dm | 104 +- .../game/objects/effects/spawners/lootdrop.dm | 1314 +++++++++++++++++ .../objects/effects/spawners/mobspawner.dm | 32 +- .../effects/spawners/random.dm/ai_module.dm | 41 - .../effects/spawners/random.dm/anomaly.dm | 222 --- .../effects/spawners/random.dm/bedsheet.dm | 33 - .../effects/spawners/random.dm/boards.dm | 245 --- .../effects/spawners/random.dm/bureaucracy.dm | 68 - .../effects/spawners/random.dm/clothing.dm | 67 - .../effects/spawners/random.dm/decoration.dm | 118 -- .../effects/spawners/random.dm/engineering.dm | 138 -- .../spawners/random.dm/entertainment.dm | 282 ---- .../effects/spawners/random.dm/exotic.dm | 69 - .../spawners/random.dm/food_or_drink.dm | 284 ---- .../effects/spawners/random.dm/maintenance.dm | 57 - .../effects/spawners/random.dm/medical.dm | 145 -- .../effects/spawners/random.dm/random.dm | 175 --- .../effects/spawners/random.dm/readme.md | 425 ------ .../effects/spawners/random.dm/salvaging.dm | 207 --- .../effects/spawners/random.dm/structure.dm | 91 -- .../effects/spawners/random.dm/trash.dm | 282 ---- .../effects/spawners/random.dm/vending.dm | 17 - .../spawners/random.dm/waste_planet.dm | 101 -- code/game/objects/effects/spawners/spawner.dm | 23 - code/game/objects/effects/spawners/traps.dm | 9 + .../objects/effects/spawners/vaultspawner.dm | 28 + .../effects/spawners/xeno_egg_delivery.dm | 18 + code/game/objects/items/chromosome.dm | 2 +- code/game/objects/items/devices/flashlight.dm | 9 + code/game/objects/items/devices/mines.dm | 8 +- .../game/objects/items/grenades/ghettobomb.dm | 2 +- code/game/objects/items/plushes.dm | 40 + .../game/objects/items/storage/uplink_kits.dm | 6 +- code/game/objects/items/toys.dm | 2 +- code/game/objects/structures/bedsheet_bin.dm | 4 +- .../crates_lockers/closets/gimmick.dm | 1 + .../crates_lockers/closets/utility_closets.dm | 2 +- code/game/objects/structures/geyser.dm | 2 +- code/game/objects/structures/salvaging.dm | 316 +++- code/game/turfs/closed/minerals.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 2 +- .../changeling/powers/pheromone_receptors.dm | 2 +- code/modules/awaymissions/away_props.dm | 6 +- code/modules/awaymissions/corpse.dm | 12 +- .../awaymissions/mission_code/snowdin.dm | 77 + .../blackmarket_items/consumables.dm | 4 +- code/modules/cargo/packs/costumes_toys.dm | 4 +- code/modules/cargo/packs/food.dm | 12 +- code/modules/clothing/gloves/color.dm | 18 + .../clothing/outfits/ert/frontiersmen_ert.dm | 12 +- code/modules/events/brain_trauma.dm | 2 +- code/modules/events/heart_attack.dm | 2 +- code/modules/events/holiday/xmas.dm | 2 +- code/modules/fishing/fish/_fish.dm | 2 +- code/modules/fishing/sources/_fish_source.dm | 2 +- code/modules/flufftext/Hallucination.dm | 2 +- code/modules/food_and_drinks/pizzabox.dm | 4 +- code/modules/mapping/mapping_helpers.dm | 8 +- code/modules/mining/lavaland/ash_flora.dm | 121 +- code/modules/mining/ore_veins.dm | 2 +- .../hostile/abandoned_minebot.dm | 4 +- .../living/simple_animal/hostile/hivebot.dm | 2 +- .../simple_animal/hostile/human/survivors.dm | 32 +- .../hostile/mining_mobs/hivelord.dm | 4 +- .../hostile/mining_mobs/hivelord_outfits.dm | 56 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- code/modules/mob/mob_helpers.dm | 2 +- code/modules/mob_spawner/hivebot.dm | 2 +- code/modules/mob_spawner/spawner_componet.dm | 2 +- code/modules/overmap/objects/dynamic_datum.dm | 4 +- code/modules/overmap/objects/event_datum.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 4 +- .../research/designs/biogenerator_designs.dm | 2 +- code/modules/research/experimentor.dm | 4 +- code/modules/shuttle/shuttle.dm | 8 +- code/modules/vending/cola.dm | 11 + code/modules/vending/snack.dm | 11 + config/game_options.txt | 5 - html/changelogs/archive/2019-03.yml | 2 +- icons/effects/landmarks_static.dmi | Bin 0 -> 19814 bytes icons/effects/mapping/docking_ports.dmi | Bin 697 -> 0 bytes icons/effects/mapping/landmarks_static.dmi | Bin 19106 -> 0 bytes icons/effects/mapping/mapping_helpers.dmi | Bin 12739 -> 0 bytes icons/effects/mapping/random_spawners.dmi | Bin 97084 -> 0 bytes icons/effects/mapping_helpers.dmi | Bin 0 -> 16864 bytes icons/obj/clothing/gloves.dmi | Bin 21845 -> 24290 bytes icons/obj/lighting.dmi | Bin 76435 -> 80208 bytes shiptest.dme | 24 +- .../Scripts/17256_NEWFOOD_cakebreadnoodle.txt | 22 + .../Scripts/55614_replacemonkeys.txt | 5 + .../Scripts/55658_apc_pixel_offsets.txt | 4 + .../UpdatePaths/Scripts/55658_cornersfix.txt | 30 + .../Scripts/56644_turfs2decals.txt | 467 ++++++ .../Scripts/59820_replaceplasteelturf.txt | 50 + ...pawners.txt => 60522_replace_spawners.txt} | 128 +- .../Scripts/60619_toxins_to_plasma.txt | 38 + .../Scripts/61694_reinforcedwindows.txt | 35 + .../Scripts/62601_wallitems_f2w.txt | 94 ++ .../Scripts/62789_camera_diag_f2w.txt | 5 + .../Scripts/65236_clothingunderrepath.txt | 196 +++ .../Scripts/65326_lib_computers.txt | 1 + .../Scripts/65504_floor_repathing.txt | 53 + .../Scripts/65656_windoor_replacement.txt | 39 + .../Scripts/65755_pdas_to_tabs.txt | 56 + .../65906_replace_wayfinding_beacons.txt | 1 + .../66210_replace_tiered_canisters.txt | 9 + .../Scripts/66406_turf_updates.txt | 344 +++++ .../Scripts/66411_thermomachines.txt | 6 + .../Scripts/66505_tablet_cartridges.txt | 24 + .../Scripts/66754_replace_sign_names.txt | 17 + .../Scripts/66860_replace_masks.txt | 16 + .../Scripts/67083_action_granters.txt | 1 + .../Scripts/67107_turf_updates_2.txt | 118 ++ .../Scripts/67324_misc_space_fix.txt | 4 + .../67512_mail_sorting_to_shipping.txt | 2 + .../67761_floorvaredits_to_mappinghelpers.txt | 66 + ...aredited_signs_to_subtype_directionals.txt | 452 ++++++ 224 files changed, 5518 insertions(+), 4584 deletions(-) create mode 100644 code/game/objects/effects/spawners/lootdrop.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/ai_module.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/anomaly.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/bedsheet.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/boards.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/bureaucracy.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/clothing.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/decoration.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/engineering.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/entertainment.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/exotic.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/food_or_drink.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/maintenance.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/medical.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/random.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/readme.md delete mode 100644 code/game/objects/effects/spawners/random.dm/salvaging.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/structure.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/trash.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/vending.dm delete mode 100644 code/game/objects/effects/spawners/random.dm/waste_planet.dm delete mode 100644 code/game/objects/effects/spawners/spawner.dm create mode 100644 code/game/objects/effects/spawners/traps.dm create mode 100644 code/game/objects/effects/spawners/vaultspawner.dm create mode 100644 code/game/objects/effects/spawners/xeno_egg_delivery.dm create mode 100644 icons/effects/landmarks_static.dmi delete mode 100644 icons/effects/mapping/docking_ports.dmi delete mode 100644 icons/effects/mapping/landmarks_static.dmi delete mode 100644 icons/effects/mapping/mapping_helpers.dmi delete mode 100644 icons/effects/mapping/random_spawners.dmi create mode 100644 icons/effects/mapping_helpers.dmi create mode 100644 tools/UpdatePaths/Scripts/17256_NEWFOOD_cakebreadnoodle.txt create mode 100644 tools/UpdatePaths/Scripts/55614_replacemonkeys.txt create mode 100644 tools/UpdatePaths/Scripts/55658_apc_pixel_offsets.txt create mode 100644 tools/UpdatePaths/Scripts/55658_cornersfix.txt create mode 100644 tools/UpdatePaths/Scripts/56644_turfs2decals.txt create mode 100644 tools/UpdatePaths/Scripts/59820_replaceplasteelturf.txt rename tools/UpdatePaths/Scripts/{3526_replace_spawners.txt => 60522_replace_spawners.txt} (62%) create mode 100644 tools/UpdatePaths/Scripts/60619_toxins_to_plasma.txt create mode 100644 tools/UpdatePaths/Scripts/61694_reinforcedwindows.txt create mode 100644 tools/UpdatePaths/Scripts/62601_wallitems_f2w.txt create mode 100644 tools/UpdatePaths/Scripts/62789_camera_diag_f2w.txt create mode 100644 tools/UpdatePaths/Scripts/65236_clothingunderrepath.txt create mode 100644 tools/UpdatePaths/Scripts/65326_lib_computers.txt create mode 100644 tools/UpdatePaths/Scripts/65504_floor_repathing.txt create mode 100644 tools/UpdatePaths/Scripts/65656_windoor_replacement.txt create mode 100644 tools/UpdatePaths/Scripts/65755_pdas_to_tabs.txt create mode 100644 tools/UpdatePaths/Scripts/65906_replace_wayfinding_beacons.txt create mode 100644 tools/UpdatePaths/Scripts/66210_replace_tiered_canisters.txt create mode 100644 tools/UpdatePaths/Scripts/66406_turf_updates.txt create mode 100644 tools/UpdatePaths/Scripts/66411_thermomachines.txt create mode 100644 tools/UpdatePaths/Scripts/66505_tablet_cartridges.txt create mode 100644 tools/UpdatePaths/Scripts/66754_replace_sign_names.txt create mode 100644 tools/UpdatePaths/Scripts/66860_replace_masks.txt create mode 100644 tools/UpdatePaths/Scripts/67083_action_granters.txt create mode 100644 tools/UpdatePaths/Scripts/67107_turf_updates_2.txt create mode 100644 tools/UpdatePaths/Scripts/67324_misc_space_fix.txt create mode 100644 tools/UpdatePaths/Scripts/67512_mail_sorting_to_shipping.txt create mode 100644 tools/UpdatePaths/Scripts/67761_floorvaredits_to_mappinghelpers.txt create mode 100644 tools/UpdatePaths/Scripts/68004_varedited_signs_to_subtype_directionals.txt diff --git a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm index dad43ef34082..bda6fb742d53 100644 --- a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm @@ -1144,7 +1144,7 @@ /turf/open/floor/concrete/slab_1, /area/ruin/beach/complex/wall) "sa" = ( -/obj/effect/spawner/random/food_or_drink/garden/seaweed, +/obj/effect/spawner/lootdrop/garden/seaweed, /turf/open/water/beach, /area/overmap_encounter/planetoid/beachplanet/explored) "so" = ( diff --git a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm index 8c8097e2c794..b2c39404d641 100644 --- a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm @@ -825,7 +825,7 @@ dir = 1 }, /obj/item/candle, -/obj/effect/spawner/random/food_or_drink/donut, +/obj/effect/spawner/lootdrop/donut, /turf/open/floor/wood{ light_range = 2 }, diff --git a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm index 39bebb15982e..312e11abe0f4 100644 --- a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm @@ -113,7 +113,7 @@ }, /area/overmap_encounter/planetoid/beachplanet/explored) "bs" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "bu" = ( @@ -412,9 +412,9 @@ /area/ruin/beach/oceantown) "fn" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donut/slimejelly, -/obj/effect/spawner/random/food_or_drink/donut, -/obj/effect/spawner/random/food_or_drink/donut, +/obj/effect/spawner/lootdrop/donut/slimejelly, +/obj/effect/spawner/lootdrop/donut, +/obj/effect/spawner/lootdrop/donut, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "fp" = ( @@ -711,8 +711,8 @@ /area/overmap_encounter/planetoid/beachplanet/explored) "ix" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donut/slimejelly, -/obj/effect/spawner/random/food_or_drink/donut, +/obj/effect/spawner/lootdrop/donut/slimejelly, +/obj/effect/spawner/lootdrop/donut, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "iz" = ( @@ -1560,11 +1560,11 @@ /area/ruin/beach/oceantown/bar) "un" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donut, -/obj/effect/spawner/random/food_or_drink/donut, -/obj/effect/spawner/random/food_or_drink/donut, -/obj/effect/spawner/random/food_or_drink/donut, -/obj/effect/spawner/random/food_or_drink/donut/slimejelly, +/obj/effect/spawner/lootdrop/donut, +/obj/effect/spawner/lootdrop/donut, +/obj/effect/spawner/lootdrop/donut, +/obj/effect/spawner/lootdrop/donut, +/obj/effect/spawner/lootdrop/donut/slimejelly, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "ur" = ( @@ -3367,8 +3367,8 @@ /area/overmap_encounter/planetoid/beachplanet/explored) "NX" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donut/jelly, -/obj/effect/spawner/random/food_or_drink/donut/jelly, +/obj/effect/spawner/lootdrop/donut/jelly, +/obj/effect/spawner/lootdrop/donut/jelly, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "Oe" = ( @@ -3541,7 +3541,7 @@ /area/ruin/beach/oceantown) "PF" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donut/slimejelly, +/obj/effect/spawner/lootdrop/donut/slimejelly, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "PH" = ( @@ -3569,7 +3569,7 @@ /turf/open/water/beach, /area/overmap_encounter/planetoid/beachplanet/explored) "Qf" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "Qm" = ( @@ -3733,10 +3733,10 @@ /area/overmap_encounter/planetoid/beachplanet/explored) "SS" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donut, -/obj/effect/spawner/random/food_or_drink/donut, -/obj/effect/spawner/random/food_or_drink/donut/slimejelly, -/obj/effect/spawner/random/food_or_drink/donut/jelly, +/obj/effect/spawner/lootdrop/donut, +/obj/effect/spawner/lootdrop/donut, +/obj/effect/spawner/lootdrop/donut/slimejelly, +/obj/effect/spawner/lootdrop/donut/jelly, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "SY" = ( @@ -3906,7 +3906,7 @@ /area/ruin/beach/oceantown/bar) "Vr" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/carpet, /area/ruin/beach/oceantown) "VI" = ( @@ -3945,9 +3945,9 @@ /area/ruin/beach/oceantown/shop) "VQ" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donut/jelly, -/obj/effect/spawner/random/food_or_drink/donut/jelly, -/obj/effect/spawner/random/food_or_drink/donut/jelly, +/obj/effect/spawner/lootdrop/donut/jelly, +/obj/effect/spawner/lootdrop/donut/jelly, +/obj/effect/spawner/lootdrop/donut/jelly, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "VS" = ( @@ -4112,11 +4112,11 @@ /area/overmap_encounter/planetoid/beachplanet/explored) "XQ" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donut/jelly, -/obj/effect/spawner/random/food_or_drink/donut/jelly, -/obj/effect/spawner/random/food_or_drink/donut/jelly, -/obj/effect/spawner/random/food_or_drink/donut/slimejelly, -/obj/effect/spawner/random/food_or_drink/donut/jelly, +/obj/effect/spawner/lootdrop/donut/jelly, +/obj/effect/spawner/lootdrop/donut/jelly, +/obj/effect/spawner/lootdrop/donut/jelly, +/obj/effect/spawner/lootdrop/donut/slimejelly, +/obj/effect/spawner/lootdrop/donut/jelly, /turf/open/floor/plasteel/patterned/grid, /area/ruin/beach/oceantown/shop) "XS" = ( diff --git a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm index fddfa5bdc00f..67ac69292603 100644 --- a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm @@ -1111,7 +1111,7 @@ /obj/structure/closet/crate, /obj/effect/turf_decal/box, /obj/item/stack/cable_coil/red, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ruin/beach/piratecrash/shuttle) @@ -1350,7 +1350,7 @@ "Pf" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/item/stack/sheet/mineral/gold/five, /obj/item/stack/sheet/mineral/silver/five, /obj/item/stack/sheet/mineral/silver/five, @@ -1433,9 +1433,9 @@ "QG" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate, -/obj/effect/spawner/random/circuit/machine/rare, -/obj/effect/spawner/random/maintenance/four, -/obj/effect/spawner/random/circuit/machine/common, +/obj/effect/spawner/lootdrop/random_machine_circuit_rare, +/obj/effect/spawner/lootdrop/maintenance/four, +/obj/effect/spawner/lootdrop/random_machine_circuit_common, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/rust, diff --git a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm index fbf9bf8ed4eb..839e87815f93 100644 --- a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm @@ -35,7 +35,7 @@ "bI" = ( /obj/effect/turf_decal/industrial/hatch/yellow, /obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/concrete/slab_1, /area/ruin/beach/treasure_cove) "bN" = ( @@ -53,7 +53,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/plating/dirt/jungle, /area/ruin/unpowered) "cJ" = ( @@ -543,7 +543,7 @@ pixel_x = -10; pixel_y = 4 }, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/wood, /area/ruin/beach/treasure_cove) "rA" = ( diff --git a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm index 294dd1056431..707be4573d13 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm @@ -473,7 +473,9 @@ /obj/structure/bed/double{ dir = 1 }, -/obj/effect/spawner/random/bedsheet/double, +/obj/item/bedsheet/dorms/double{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/crashed_holemaker) "iN" = ( @@ -672,7 +674,7 @@ /area/ruin/unpowered/crashed_holemaker) "lt" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/crate_abandoned, +/obj/effect/spawner/lootdrop/crate_spawner, /turf/open/floor/plating, /area/ruin/unpowered/crashed_holemaker) "lu" = ( @@ -741,7 +743,7 @@ }, /obj/item/radio/intercom/directional/north, /obj/structure/closet/cabinet, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/crashed_holemaker) @@ -1439,7 +1441,7 @@ /turf/open/floor/carpet, /area/ruin/unpowered/crashed_holemaker) "ze" = ( -/obj/effect/spawner/random/structure/crate_abandoned, +/obj/effect/spawner/lootdrop/crate_spawner, /turf/open/floor/plating, /area/ruin/unpowered/crashed_holemaker) "zh" = ( @@ -2387,7 +2389,7 @@ /turf/open/floor/plasteel/icemoon, /area/ruin/unpowered/crashed_holemaker) "RL" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/spline/fancy/transparent/neutral/corner{ dir = 4 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm b/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm index a698cf49ea18..92b840e05aa0 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_ice_lodge.dmm @@ -337,7 +337,7 @@ /turf/open/floor/concrete/slab_3/icemoon, /area/overmap_encounter/planetoid/cave/explored) "fe" = ( -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /obj/effect/turf_decal/siding/wood, /obj/structure/bed{ icon_state = "dirty_mattress" @@ -1256,10 +1256,10 @@ /obj/item/clothing/head/frontier, /obj/item/clothing/gloves/color/latex, /obj/item/clothing/mask/surgical, -/obj/effect/spawner/random/medical/chem_jug, -/obj/effect/spawner/random/medical/chem_jug, -/obj/effect/spawner/random/medical/chem_jug, -/obj/effect/spawner/random/medical/chem_jug, +/obj/effect/spawner/lootdrop/chem_jug, +/obj/effect/spawner/lootdrop/chem_jug, +/obj/effect/spawner/lootdrop/chem_jug, +/obj/effect/spawner/lootdrop/chem_jug, /obj/effect/turf_decal/corner/opaque/blue, /obj/effect/turf_decal/corner/opaque/neutral{ dir = 4 @@ -1659,7 +1659,7 @@ /area/ruin/powered/icemoon/lodge/mainhall) "wD" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /obj/effect/turf_decal/siding/wood{ dir = 10 }, @@ -1771,7 +1771,7 @@ /turf/open/floor/wood/maple, /area/ruin/powered/icemoon/lodge/mainhall) "yi" = ( -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /obj/effect/turf_decal/siding/wood{ dir = 6 }, @@ -1968,9 +1968,9 @@ /obj/effect/turf_decal/spline/fancy/wood{ dir = 8 }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/wood/mahogany{ icon_state = "wood-broken6" }, @@ -2677,7 +2677,7 @@ /turf/closed/wall/mineral/wood, /area/ruin/powered/icemoon/lodge/residential) "Nq" = ( -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /obj/effect/turf_decal/siding/wood, /obj/effect/decal/cleanable/dirt, /obj/structure/bed{ diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm index f4db9fa9d9f7..42aa6b288469 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm @@ -40,7 +40,7 @@ "fD" = ( /obj/structure/bed, /obj/effect/decal/cleanable/blood/bubblegum, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ruin/powered) "fQ" = ( @@ -459,7 +459,7 @@ /area/overmap_encounter/planetoid/cave/explored) "LZ" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ruin/powered) "Nq" = ( @@ -477,7 +477,7 @@ /turf/open/floor/carpet, /area/ruin/powered) "Pp" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/holofloor/wood, /area/ruin/powered) "PQ" = ( @@ -554,7 +554,7 @@ "WH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ruin/powered) "Ze" = ( diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm index 1a52405a3ec0..d560e98b2f20 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm @@ -478,7 +478,7 @@ /area/overmap_encounter/planetoid/cave/explored) "xN" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/ruin/unpowered) "xQ" = ( @@ -1028,7 +1028,7 @@ /obj/structure/rack, /obj/item/hatchet, /obj/item/hatchet, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/ruin/unpowered) "Ul" = ( @@ -1086,7 +1086,7 @@ /obj/item/ammo_casing/shotgun/improvised, /obj/item/ammo_casing/shotgun/improvised, /obj/item/ammo_casing/shotgun/improvised, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/ruin/unpowered) "WH" = ( @@ -1181,7 +1181,7 @@ "Yx" = ( /obj/effect/decal/cleanable/dirt, /obj/item/rack_parts, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/wood{ icon_state = "wood-broken3"; initial_gas_mix = "ICEMOON_ATMOS" diff --git a/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm b/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm index 1afed51826aa..77c280d07e90 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm @@ -811,10 +811,10 @@ /area/overmap_encounter/planetoid/jungle/explored) "fJ" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plasteel/dark, /area/overmap_encounter/planetoid/jungle/explored) "fL" = ( @@ -2699,7 +2699,7 @@ /area/overmap_encounter/planetoid/jungle/explored) "sK" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) "sN" = ( diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm index 1159123d30f1..923e58b4cb05 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm @@ -167,7 +167,7 @@ /area/overmap_encounter/planetoid/cave/explored) "bH" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/cloth/grey, /obj/effect/decal/cleanable/shreds, /turf/open/floor/carpet/nanoweave/beige, @@ -1028,10 +1028,10 @@ pixel_y = 32 }, /obj/structure/closet/secure_closet/freezer/wall/directional/west, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/condiment/enzyme{ pixel_x = -8; pixel_y = 5 @@ -2221,7 +2221,7 @@ /area/ruin/jungle/cavecrew/bridge) "Be" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/cloth/grey, /turf/open/floor/carpet/red_gold, /area/ruin/jungle/cavecrew/dormitories) diff --git a/_maps/RandomRuins/JungleRuins/jungle_medtech_outbreak.dmm b/_maps/RandomRuins/JungleRuins/jungle_medtech_outbreak.dmm index 467dd8e8abd7..75b7e390c540 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_medtech_outbreak.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_medtech_outbreak.dmm @@ -2108,7 +2108,7 @@ /obj/effect/turf_decal/corner/opaque/mauve{ dir = 1 }, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/plasteel/dark, /area/ship/crew/office) "Ie" = ( diff --git a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm index 4429e0b8779a..47455933ec16 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm @@ -685,7 +685,7 @@ /turf/open/floor/plating/grass/jungle, /area/overmap_encounter/planetoid/cave/explored) "ei" = ( -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/plating/dirt/jungle/dark, /area/overmap_encounter/planetoid/cave/explored) "el" = ( @@ -989,7 +989,7 @@ /obj/structure/bed{ icon_state = "dirty_mattress" }, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/decal/cleanable/dirt, /obj/structure/railing{ color = "#A47449"; @@ -1446,7 +1446,7 @@ dir = 4; layer = 3.9 }, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/cable/yellow{ icon_state = "1-9" }, @@ -3204,7 +3204,7 @@ /obj/structure/bed{ icon_state = "dirty_mattress" }, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/cable/yellow{ icon_state = "0-5" }, @@ -4344,11 +4344,11 @@ /obj/effect/turf_decal/techfloor/corner{ dir = 1 }, -/obj/effect/spawner/random/food_or_drink/three_course_meal, -/obj/effect/spawner/random/food_or_drink/three_course_meal, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/three_course_meal, +/obj/effect/spawner/lootdrop/three_course_meal, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plasteel/tech/grid, /area/ruin/jungle/paradise/cargo) "AT" = ( @@ -5764,9 +5764,9 @@ /obj/structure/cable/yellow{ icon_state = "1-6" }, -/obj/effect/spawner/random/food_or_drink/three_course_meal, -/obj/effect/spawner/random/food_or_drink/three_course_meal, -/obj/effect/spawner/random/food_or_drink/three_course_meal, +/obj/effect/spawner/lootdrop/three_course_meal, +/obj/effect/spawner/lootdrop/three_course_meal, +/obj/effect/spawner/lootdrop/three_course_meal, /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/reagent_containers/food/snacks/meat/slab, @@ -7185,7 +7185,7 @@ /obj/structure/bed{ icon_state = "dirty_mattress" }, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood/walnut, /area/ruin/jungle/paradise/dorms) "UC" = ( @@ -7411,7 +7411,7 @@ }, /area/overmap_encounter/planetoid/cave/explored) "VV" = ( -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/plating/dirt/jungle, /area/overmap_encounter/planetoid/cave/explored) "VW" = ( diff --git a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm index 60d24171ad0f..2eba13537777 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm @@ -662,7 +662,7 @@ /obj/item/storage/box/donkpockets/donkpocketteriyaki, /obj/item/storage/box/donkpockets, /obj/item/storage/box/donkpockets/donkpocketberry, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plating, /area/ruin/jungle/syndifort) "ve" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm index dd98807a4958..24fea81ce05c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm @@ -77,7 +77,7 @@ /obj/effect/turf_decal/spline/fancy/opaque/syndiered/corner{ dir = 4 }, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/plasteel/white, /area/ruin/unpowered/listening_post) "cm" = ( @@ -2039,7 +2039,7 @@ /area/ruin/unpowered/listening_post/engineering) "MZ" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, /obj/structure/sign/poster/official/high_class_martini{ pixel_y = 32 }, @@ -2124,8 +2124,8 @@ /area/ruin/unpowered/listening_post/commons) "Om" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/listening_post/canteen) "On" = ( @@ -2246,7 +2246,7 @@ icon_state = "trimline"; dir = 8 }, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 10 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm index e0a98de791fc..336588e2d807 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm @@ -2415,7 +2415,7 @@ pixel_x = -26 }, /obj/structure/spider/stickyweb, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/pod/light, /area/ruin/unpowered/crashed_starwalker) "MO" = ( @@ -2447,7 +2447,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, /area/ruin/unpowered/crashed_starwalker) "MX" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/structure/railing{ dir = 4 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index 3a6b545859b7..768c6275cf56 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -164,8 +164,8 @@ /area/ruin/lavaland/factory/manager_office) "bE" = ( /obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/trash/decal, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, +/obj/effect/spawner/lootdrop/waste/trash, /obj/item/storage/bag/trash, /obj/item/reagent_containers/glass/bucket, /obj/item/mop, @@ -216,7 +216,7 @@ "cm" = ( /obj/structure/table/wood, /obj/machinery/light/directional/east, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /turf/open/floor/wood, /area/ruin/lavaland/factory/adminstrative) "co" = ( @@ -341,7 +341,7 @@ /area/ruin/lavaland/factory/warehouse) "dc" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/cloth, /obj/effect/turf_decal/corner/opaque/ntblue, /obj/effect/turf_decal/corner/opaque/ntblue{ @@ -641,7 +641,7 @@ }, /obj/item/modular_computer/laptop, /obj/item/stack/arcadeticket, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/white, /area/ruin/lavaland/factory/dorms) "go" = ( @@ -1506,7 +1506,7 @@ }, /obj/item/storage/wallet/random, /obj/item/instrument/guitar, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/white, /area/ruin/lavaland/factory/dorms) "oh" = ( @@ -1887,7 +1887,7 @@ /obj/item/poster/random_contraband, /obj/item/toy/eightball, /obj/item/toy/cards/deck/tarot, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/white, /area/ruin/lavaland/factory/dorms) "rh" = ( @@ -2287,7 +2287,7 @@ /obj/item/storage/fancy/cigarettes/cigpack_cannabis, /obj/item/lighter/greyscale, /obj/item/reagent_containers/food/drinks/bottle/whiskey, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/white, /area/ruin/lavaland/factory/dorms) "ve" = ( @@ -2985,7 +2985,7 @@ /obj/machinery/light/directional/west, /obj/item/melee/knife/hunting, /obj/item/clothing/suit/hooded/cloak/goliath, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/white, /area/ruin/lavaland/factory/dorms) "CW" = ( @@ -3149,18 +3149,18 @@ /obj/effect/turf_decal/corner/opaque/ntblue{ dir = 1 }, -/obj/effect/spawner/random/trash/decal, -/obj/effect/spawner/random/trash/decal, -/obj/effect/spawner/random/trash/decal, -/obj/effect/spawner/random/trash/decal, -/obj/effect/spawner/random/trash/decal, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, +/obj/effect/spawner/lootdrop/waste/trash, +/obj/effect/spawner/lootdrop/waste/trash, +/obj/effect/spawner/lootdrop/waste/trash, +/obj/effect/spawner/lootdrop/waste/trash, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/white, /area/ruin/lavaland/factory/dorms) "EP" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/cloth, /obj/effect/turf_decal/corner/opaque/ntblue, /obj/effect/turf_decal/corner/opaque/ntblue{ @@ -4062,11 +4062,11 @@ /area/overmap_encounter/planetoid/cave/explored) "Or" = ( /obj/structure/closet/crate/freezer, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, @@ -4945,9 +4945,9 @@ /obj/effect/turf_decal/corner/opaque/bar, /obj/structure/closet/crate/bin, /obj/machinery/light/directional/west, -/obj/effect/spawner/random/trash/decal, -/obj/effect/spawner/random/trash/decal, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, +/obj/effect/spawner/lootdrop/waste/trash, +/obj/effect/spawner/lootdrop/waste/trash, /turf/open/floor/plasteel, /area/ruin/lavaland/factory/dorms) "Xn" = ( @@ -5078,7 +5078,7 @@ /area/overmap_encounter/planetoid/lava/explored) "YJ" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/cloth, /obj/effect/turf_decal/corner/opaque/ntblue, /obj/effect/turf_decal/corner/opaque/ntblue{ diff --git a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm index c9c7ea2501f3..3b2b995fd979 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm @@ -109,7 +109,7 @@ /turf/open/floor/wood, /area/ruin/rockplanet/nanotrasen) "by" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/industrial/warning, /obj/machinery/light/dim/directional/north, /turf/open/floor/plasteel, @@ -214,7 +214,7 @@ /area/ruin/rockplanet/nanotrasen) "db" = ( /obj/structure/bed/pod, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/ruin/rockplanet/nanotrasen) @@ -1551,7 +1551,7 @@ /obj/structure/railing{ dir = 4 }, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ruin/rockplanet/nanotrasen) "Ap" = ( @@ -1699,7 +1699,7 @@ /area/overmap_encounter/planetoid/rockplanet/explored) "Cx" = ( /obj/structure/bed/pod, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/light/dim/directional/east, /turf/open/floor/wood, /area/ruin/rockplanet/nanotrasen) @@ -2493,7 +2493,7 @@ /area/ruin/rockplanet/nanotrasen) "Rm" = ( /obj/structure/bed/pod, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/light/dim/directional/east, /turf/open/floor/carpet/black, /area/ruin/rockplanet/nanotrasen) diff --git a/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm b/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm index 6d6f81ffd5a0..3926cffbbf81 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm @@ -401,7 +401,7 @@ /turf/open/floor/plating/asteroid/rockplanet/lit, /area/overmap_encounter/planetoid/rockplanet/explored) "dZ" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/spline/fancy/opaque/white, /turf/open/floor/plasteel/patterned/brushed, /area/ruin/rockplanet/distillery/crew) @@ -859,7 +859,7 @@ dir = 8; icon_state = "dirty_mattress" }, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ruin/rockplanet/distillery/crew) "kn" = ( @@ -1613,12 +1613,12 @@ "sQ" = ( /obj/effect/turf_decal/industrial/outline/red, /obj/structure/closet/crate/freezer, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/patterned/brushed/rockplanet, /area/ruin/rockplanet/distillery/crew) "tc" = ( @@ -2187,7 +2187,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/pod, /area/ruin/rockplanet/distillery/office) "yO" = ( @@ -3032,10 +3032,10 @@ "Iz" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/industrial/outline/red, -/obj/effect/spawner/random/circuit/computer/common, -/obj/effect/spawner/random/maintenance/four, -/obj/effect/spawner/random/circuit/machine/common, -/obj/effect/spawner/random/circuit/machine/common, +/obj/effect/spawner/lootdrop/random_computer_circuit_common, +/obj/effect/spawner/lootdrop/maintenance/four, +/obj/effect/spawner/lootdrop/random_machine_circuit_common, +/obj/effect/spawner/lootdrop/random_machine_circuit_common, /turf/open/floor/plasteel/patterned/brushed/rockplanet, /area/ruin/rockplanet/distillery/crew) "IA" = ( @@ -3419,7 +3419,7 @@ icon_state = "1-5" }, /obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/wood/rockplanet{ icon_state = "wood-broken6" }, @@ -3582,7 +3582,9 @@ }, /area/overmap_encounter/planetoid/rockplanet/explored) "Os" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random{ + tilted = 1 + }, /obj/effect/turf_decal/spline/fancy/opaque/white, /turf/open/floor/plasteel/patterned/brushed, /area/ruin/rockplanet/distillery/crew) @@ -4183,7 +4185,7 @@ /obj/structure/fluff/glowshroom, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate/bin, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/wood, /area/ruin/rockplanet/distillery/crew) "Vg" = ( @@ -4197,7 +4199,7 @@ widenet = 1 }, /obj/machinery/light/small/broken/directional/east, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/patterned/brushed, /area/ruin/rockplanet/distillery/crew) "Vj" = ( diff --git a/_maps/RandomRuins/RockRuins/rockplanet_nomadcrash.dmm b/_maps/RandomRuins/RockRuins/rockplanet_nomadcrash.dmm index 6db4bf5240a2..ff58248ffc4e 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_nomadcrash.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_nomadcrash.dmm @@ -408,7 +408,7 @@ icon_state = "1-8" }, /obj/structure/frame/machine, -/obj/effect/spawner/random/salvage_matter_bin, +/obj/effect/spawner/lootdrop/salvage_matter_bin, /turf/open/floor/plasteel/rockplanet, /area/ruin/rockplanet/nomad) "oz" = ( @@ -558,7 +558,7 @@ }, /obj/structure/frame/machine, /obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/salvage_matter_bin, +/obj/effect/spawner/lootdrop/salvage_matter_bin, /turf/open/floor/plating, /area/ruin/rockplanet/nomad) "sn" = ( @@ -1272,7 +1272,7 @@ icon_state = "spline_plain_cee" }, /obj/structure/frame/machine, -/obj/effect/spawner/random/salvage_matter_bin, +/obj/effect/spawner/lootdrop/salvage_matter_bin, /turf/open/floor/plasteel/tech/grid, /area/ruin/rockplanet/nomad) "Lk" = ( diff --git a/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm b/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm index 1c518cceabca..f18742a8aadb 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm @@ -288,7 +288,7 @@ /turf/open/floor/wood, /area/ruin/rockplanet/shippingdockoffice) "cz" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ruin/rockplanet/shippingdock) @@ -2068,7 +2068,7 @@ "sa" = ( /obj/effect/turf_decal/rechargefloor, /obj/effect/turf_decal/industrial/warning/dust, -/obj/effect/spawner/random/exotic/ripley, +/obj/effect/spawner/lootdrop/ripley, /turf/open/floor/plasteel/mono/dark, /area/ruin/rockplanet/shippingdockwarehouse) "sc" = ( @@ -2132,7 +2132,7 @@ /area/overmap_encounter/planetoid/rockplanet/explored) "su" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/concrete/pavement{ light_power = 0.6; light_range = 2 @@ -2426,7 +2426,7 @@ /area/ruin/rockplanet/shippingdockoffice) "uo" = ( /obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/trash/can, /obj/item/trash/can/food/peaches, /obj/item/trash/tray, @@ -4044,7 +4044,7 @@ }, /area/overmap_encounter/planetoid/rockplanet/explored) "HL" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/concrete/pavement{ light_power = 0.6; light_range = 2 @@ -4208,7 +4208,7 @@ /turf/open/floor/concrete/pavement, /area/ruin/rockplanet/shippingdockwarehouse) "Ju" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/ruin/rockplanet/shippingdock) "Jz" = ( @@ -5282,9 +5282,9 @@ "SJ" = ( /obj/structure/rack, /obj/structure/window/reinforced, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plasteel/mono/white, /area/ruin/rockplanet/shippingdockwarehouse) "SM" = ( @@ -5968,7 +5968,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/effect/spawner/random/maintenance/eight, +/obj/effect/spawner/lootdrop/maintenance/eight, /turf/open/floor/plasteel/mono/white, /area/ruin/rockplanet/shippingdockwarehouse) "XU" = ( @@ -6020,7 +6020,7 @@ "Yf" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/concrete/pavement{ light_power = 0.6; light_range = 2 diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm index c19dd9de68a1..c7b060634951 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm @@ -115,7 +115,7 @@ /area/ruin) "fb" = ( /obj/structure/flora/ash/cap_shroom, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid/whitesands{ light_range = 2 }, @@ -269,7 +269,7 @@ /area/overmap_encounter/planetoid/sand/explored) "ko" = ( /obj/structure/closet/crate/bin, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/chair/stool/bar, /turf/open/floor/wood, /area/ruin) @@ -290,7 +290,7 @@ }, /area/overmap_encounter/planetoid/sand/explored) "kO" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid/whitesands{ light_range = 2 }, @@ -699,7 +699,7 @@ /area/ruin) "AI" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ruin) "AR" = ( @@ -915,7 +915,7 @@ /turf/open/floor/wood, /area/ruin) "HX" = ( -/obj/effect/spawner/random/exotic/armory, +/obj/effect/spawner/lootdrop/armory_contraband/metastation, /turf/open/floor/plating/asteroid/whitesands/dried{ light_range = 2 }, @@ -964,7 +964,7 @@ }, /area/overmap_encounter/planetoid/sand/explored) "JE" = ( -/obj/effect/spawner/random/engineering/tool/sydnie, +/obj/effect/spawner/lootdrop/tool_engie_sydnie, /turf/open/floor/plating/asteroid/whitesands{ light_range = 2 }, @@ -1164,7 +1164,7 @@ }, /area/overmap_encounter/planetoid/sand/explored) "SV" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid/whitesands/dried{ light_range = 2 }, @@ -1273,7 +1273,7 @@ /area/ruin) "Xa" = ( /obj/structure/closet/crate/bin, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/wood, /area/ruin) "Xb" = ( diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm index 17a16c3fffc6..219fc7a6b6b6 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm @@ -133,7 +133,7 @@ /area/ruin/whitesands/saloon) "eq" = ( /obj/structure/closet/crate/bin, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/west, /turf/open/floor/wood, @@ -220,7 +220,7 @@ /area/ruin/whitesands/saloon) "ge" = ( /obj/structure/closet/cabinet, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood{ icon_state = "wood-broken5" @@ -426,7 +426,7 @@ /area/ruin/whitesands/saloon) "lg" = ( /obj/structure/closet/crate/bin, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/wood, /area/ruin/whitesands/saloon) "lB" = ( @@ -444,7 +444,7 @@ /area/ruin/whitesands/saloon) "lI" = ( /obj/structure/table/wood/poker, -/obj/effect/spawner/random/entertainment/gambling, +/obj/effect/spawner/lootdrop/gambling, /turf/open/floor/carpet, /area/ruin/whitesands/saloon) "lV" = ( @@ -645,7 +645,7 @@ /area/ruin/whitesands/saloon) "sj" = ( /obj/structure/closet/crate/bin, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/chair/stool/bar, /turf/open/floor/wood, /area/ruin/whitesands/saloon) @@ -848,7 +848,7 @@ /area/ruin/whitesands/saloon) "zv" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood{ icon_state = "wood-broken5" }, @@ -1025,7 +1025,7 @@ /area/ruin/whitesands/saloon) "EV" = ( /obj/structure/closet/cabinet, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt, /obj/item/gun/energy/plasmacutter{ icon_state = "pulse_carbine"; @@ -1355,7 +1355,7 @@ /area/ruin/whitesands/saloon) "Pi" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ruin/whitesands/saloon) "Px" = ( @@ -1590,7 +1590,7 @@ /area/ruin/whitesands/saloon) "Wl" = ( /obj/structure/closet/cabinet, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/wood, /area/ruin/whitesands/saloon) "WP" = ( diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_medipen_plant.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_medipen_plant.dmm index 60dfc9186132..7ae333dcd541 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_medipen_plant.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_medipen_plant.dmm @@ -751,7 +751,7 @@ /turf/open/floor/plasteel/dark, /area/ruin/powered) "uu" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 }, @@ -760,7 +760,7 @@ /turf/open/floor/plasteel/dark, /area/ruin/powered) "uz" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 }, @@ -848,7 +848,7 @@ }, /obj/effect/turf_decal/corner/transparent/neutral, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/plasteel/dark, /area/ruin/powered) "xd" = ( @@ -1210,7 +1210,7 @@ /area/ruin/powered) "KU" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 }, diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_pubbyslopcrash.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_pubbyslopcrash.dmm index 5cfb5e8eb771..6906e1dd2bed 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_pubbyslopcrash.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_pubbyslopcrash.dmm @@ -225,8 +225,8 @@ /obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/obj/effect/spawner/random/maintenance/five, -/obj/effect/spawner/random/maintenance/five, +/obj/effect/spawner/lootdrop/maintenance/five, +/obj/effect/spawner/lootdrop/maintenance/five, /turf/open/floor/plasteel, /area/ruin/whitesands/pubbycrash) "fO" = ( @@ -405,7 +405,7 @@ dir = 8; name = "engine fuel pump" }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/tech, /area/ruin/whitesands/pubbycrash/engine_room) "jt" = ( @@ -502,7 +502,7 @@ "ln" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset/wall/directional/south, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/tech/grid, /area/ruin/whitesands/pubbycrash/engine_room) "ly" = ( @@ -530,7 +530,7 @@ name = "engine fuel pump" }, /obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/item/stack/sheet/mineral/wood/fifty, /obj/structure/closet/crate, /turf/open/floor/plasteel/tech, @@ -622,7 +622,7 @@ /area/ruin/whitesands/pubbycrash) "nP" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/engine, /area/ruin/whitesands/pubbycrash) "nQ" = ( @@ -780,7 +780,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/tech, /area/ruin/whitesands/pubbycrash/engine_room) "rT" = ( @@ -931,7 +931,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/engine, /area/ruin/whitesands/pubbycrash) "vL" = ( @@ -972,7 +972,7 @@ /obj/structure/sign/poster/official/random{ pixel_x = 32 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/ruin/whitesands/pubbycrash) @@ -1063,7 +1063,7 @@ /obj/structure/table, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/industrial/warning/corner, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/tech, /area/ruin/whitesands/pubbycrash/engine_room) "xX" = ( @@ -1792,7 +1792,7 @@ /obj/structure/sign/poster/retro/nanotrasen_logo_70s{ pixel_x = -32 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/ruin/whitesands/pubbycrash/engine_room) "KT" = ( @@ -2003,7 +2003,7 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/tech, /area/ruin/whitesands/pubbycrash/engine_room) "PA" = ( @@ -2118,7 +2118,7 @@ /turf/open/floor/plasteel/tech/techmaint, /area/ruin/whitesands/pubbycrash/engine_room) "RC" = ( -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/item/stack/ore/salvage/scraptitanium, /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, @@ -2292,7 +2292,7 @@ /obj/structure/sign/number/two, /obj/item/stack/ore/salvage/scrapmetal, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/engine, /area/ruin/whitesands/pubbycrash) "Wo" = ( diff --git a/_maps/RandomRuins/SpaceRuins/astraeus.dmm b/_maps/RandomRuins/SpaceRuins/astraeus.dmm index e790766a2a94..2c62420cef30 100644 --- a/_maps/RandomRuins/SpaceRuins/astraeus.dmm +++ b/_maps/RandomRuins/SpaceRuins/astraeus.dmm @@ -101,7 +101,7 @@ /turf/open/space, /area/space/nearstation) "dx" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/airless, /area/ruin/space/has_grav/astraeus/hallway) "dA" = ( @@ -326,7 +326,7 @@ /turf/open/space, /area/space/nearstation) "jd" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/astraeus/disposals) "je" = ( @@ -349,7 +349,7 @@ /obj/machinery/conveyor{ dir = 6 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/astraeus/disposals) "jT" = ( @@ -556,7 +556,7 @@ /area/ruin/space/has_grav/astraeus/bridge) "pT" = ( /obj/item/stack/conveyor, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/astraeus/disposals) "pU" = ( @@ -621,7 +621,7 @@ dir = 5 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/dark/airless, /area/ruin/space/has_grav/astraeus/bridge) "rk" = ( @@ -675,7 +675,7 @@ /turf/open/floor/plasteel/airless, /area/ruin/space/has_grav/astraeus/hallway) "sL" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/airless, /area/ruin/space/has_grav/astraeus/dorms_med) "sR" = ( @@ -731,8 +731,8 @@ "uH" = ( /obj/effect/turf_decal/industrial/hatch/yellow, /obj/structure/closet, -/obj/effect/spawner/random/maintenance{ - spawn_loot_count = 2; +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; name = "2maintenance loot spawner" }, /turf/open/floor/plasteel/airless, @@ -800,7 +800,7 @@ /obj/machinery/conveyor{ dir = 4 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/airless, /area/ruin/space/has_grav/astraeus/munitions) "wl" = ( @@ -1374,7 +1374,7 @@ /obj/machinery/conveyor/inverted{ dir = 9 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/astraeus/disposals) "KD" = ( @@ -1560,7 +1560,7 @@ /obj/machinery/power/apc/auto_name/directional/east{ start_charge = 0 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/airless, /area/ruin/space/has_grav/astraeus/munitions) "Pd" = ( @@ -1734,7 +1734,7 @@ /turf/open/floor/plating/asteroid/airless, /area/ruin/unpowered) "UK" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ruin/space/has_grav/astraeus/hallway) "UU" = ( diff --git a/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm b/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm index 956466fc4be0..a2cb21cd1c1c 100644 --- a/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm +++ b/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm @@ -462,7 +462,7 @@ /area/ruin/space/has_grav/corporatemine/bridge) "kZ" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 4 }, @@ -812,7 +812,7 @@ /obj/effect/decal/cleanable/oil/slippery, /obj/structure/closet/crate, /obj/effect/turf_decal/industrial/outline, -/obj/effect/spawner/random/materials, +/obj/effect/spawner/lootdrop/materials, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/corporatemine/hall) "sb" = ( @@ -1590,8 +1590,8 @@ "IF" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/industrial/outline, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/corporatemine/hall) "IS" = ( @@ -1774,7 +1774,7 @@ "NH" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/industrial/outline, -/obj/effect/spawner/random/materials, +/obj/effect/spawner/lootdrop/materials, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/corporatemine/hall) "NO" = ( @@ -2293,7 +2293,7 @@ /area/ruin/space/has_grav/corporatemine/crewquarters) "ZU" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 8 }, diff --git a/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm b/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm index c052a6f0cd04..e02a7e328b28 100644 --- a/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm +++ b/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm @@ -3,7 +3,7 @@ /obj/structure/bed, /obj/structure/curtain/cloth/grey, /obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/powerpuzzle) "ae" = ( @@ -365,9 +365,9 @@ /area/ruin/space/has_grav/powerpuzzle) "br" = ( /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, /obj/effect/turf_decal/corner/transparent/grey/diagonal, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/powerpuzzle) @@ -695,14 +695,14 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/powerpuzzle) "cB" = ( -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/generic, /obj/effect/turf_decal/corner/transparent/grey/diagonal, /obj/structure/closet/crate/secure, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/powerpuzzle) "cD" = ( -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /obj/effect/decal/cleanable/glass, /obj/effect/turf_decal/industrial/warning{ dir = 8 @@ -797,7 +797,7 @@ /obj/effect/decal/cleanable/greenglow, /obj/item/stack/ore/salvage/scrapuranium, /obj/item/bodypart/l_arm/robot, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/assembly/prox_sensor, /obj/item/stack/ore/salvage/scrapuranium{ pixel_x = -4; @@ -1116,7 +1116,7 @@ /area/ruin/space/has_grav/powerpuzzle) "gM" = ( /obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/spawner/random/maintenance/six, +/obj/effect/spawner/lootdrop/maintenance/six, /obj/structure/closet/crate/secure, /obj/machinery/light/dim/directional/north, /turf/open/floor/plasteel/dark, @@ -1478,7 +1478,7 @@ pixel_x = 2; pixel_y = 4 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/broken/directional/south, /obj/item/poster/random_official, /obj/item/poster/random_official, @@ -1677,7 +1677,7 @@ /obj/structure/railing/corner{ dir = 1 }, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/plasteel, /area/ruin/space/has_grav/powerpuzzle) "rI" = ( @@ -1838,7 +1838,7 @@ /obj/structure/railing, /obj/effect/turf_decal/corner/transparent/grey/diagonal, /obj/item/stack/ore/salvage/scrapuranium/five, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/structure/closet/crate/engineering, /obj/effect/turf_decal/box, /turf/open/floor/plasteel/dark, @@ -1850,8 +1850,8 @@ /obj/item/reagent_containers/food/drinks/waterbottle/empty, /obj/item/reagent_containers/food/drinks/waterbottle/empty, /obj/item/reagent_containers/food/drinks/waterbottle, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/snacks/sosjerky, /obj/item/reagent_containers/food/snacks/sosjerky, /obj/item/stack/medical/gauze/improvised, @@ -2446,7 +2446,7 @@ /obj/structure/bed, /obj/structure/curtain/cloth/grey, /obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/light/small/broken/directional/north, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/powerpuzzle) @@ -3273,7 +3273,7 @@ /obj/structure/bed, /obj/structure/curtain/cloth/grey, /obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/light/small/broken/directional/south, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/powerpuzzle) @@ -3546,7 +3546,7 @@ dir = 4 }, /obj/structure/closet/crate/secure, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/powerpuzzle) "VV" = ( @@ -3589,7 +3589,7 @@ dir = 6 }, /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /obj/structure/noticeboard{ pixel_x = -15; pixel_y = 32 @@ -3647,7 +3647,7 @@ /obj/structure/railing{ dir = 6 }, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/powerpuzzle/engineering) "Xj" = ( @@ -3692,7 +3692,7 @@ dir = 5 }, /obj/structure/closet/crate/secure, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/powerpuzzle) "Yr" = ( diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm index c5acb2629e09..6b75031ae8ba 100644 --- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm @@ -708,7 +708,7 @@ /area/ruin/space/has_grav/spacemall/dorms) "cO" = ( /obj/effect/turf_decal/box, -/obj/effect/spawner/random/salvage_machine, +/obj/effect/spawner/lootdrop/salvage_machine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shuttle) "cP" = ( @@ -1296,9 +1296,9 @@ "eS" = ( /obj/structure/rack, /obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) "eU" = ( @@ -1306,7 +1306,7 @@ pixel_y = -30 }, /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ruin/space/has_grav/spacemall/dorms) "eV" = ( @@ -1323,7 +1323,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) "eX" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/corner/transparent/green/diagonal, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -1391,7 +1391,7 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/decal/cleanable/dirt/dust, /obj/item/stack/cable_coil/random/five, -/obj/effect/spawner/random/techstorage/engineering, +/obj/effect/spawner/lootdrop/techstorage/engineering, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/maint) "fi" = ( @@ -1399,8 +1399,8 @@ dir = 2 }, /obj/structure/rack, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) "fl" = ( @@ -1655,7 +1655,7 @@ /area/ruin/space/has_grav/spacemall/dorms) "gu" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /obj/effect/turf_decal/corner/transparent/black/diagonal, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) @@ -2516,9 +2516,9 @@ "jD" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate/secure, -/obj/effect/spawner/random/clothing/costume, -/obj/effect/spawner/random/clothing/costume, -/obj/effect/spawner/random/clothing/costume, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shuttle) "jE" = ( @@ -3111,7 +3111,7 @@ /obj/effect/decal/cleanable/cobweb, /obj/effect/turf_decal/box, /obj/structure/closet/crate/wooden, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/maint) "lR" = ( @@ -3255,7 +3255,7 @@ "mJ" = ( /obj/structure/rack, /obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) "mK" = ( @@ -3638,7 +3638,7 @@ /area/ruin/space/has_grav/spacemall/dorms) "ob" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) "od" = ( @@ -4048,7 +4048,7 @@ /area/ruin/space/has_grav/spacemall) "pB" = ( /obj/effect/decal/cleanable/ash, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /obj/structure/closet/crate, /obj/structure/railing, @@ -5749,7 +5749,7 @@ "vp" = ( /obj/structure/rack, /obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) "vs" = ( @@ -5866,7 +5866,7 @@ /area/ruin/space/has_grav/spacemall/shop2) "vS" = ( /obj/structure/rack, -/obj/effect/spawner/random/medical/beaker, +/obj/effect/spawner/lootdrop/beaker_loot_spawner, /obj/effect/turf_decal/corner/opaque/blue/diagonal, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/spacemall/shop2) @@ -6451,8 +6451,8 @@ /obj/structure/closet/crate/secure, /obj/effect/turf_decal/box, /obj/structure/railing, -/obj/effect/spawner/random/exotic/prison_contraband, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/prison_contraband, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/maint) "yk" = ( @@ -6524,7 +6524,7 @@ /obj/structure/closet/crate/trashcart, /obj/item/trash/popcorn, /obj/item/trash/candy, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shuttle) "yF" = ( @@ -6666,7 +6666,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shuttle) "yZ" = ( @@ -6964,9 +6964,9 @@ "Ag" = ( /obj/structure/rack, /obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/circuit/computer/common, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/random_computer_circuit_common, /obj/item/research_notes/loot, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) @@ -7269,9 +7269,9 @@ "Bq" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate/secure, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shuttle) "Bu" = ( @@ -7469,7 +7469,7 @@ dir = 10 }, /obj/structure/spider/stickyweb, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/maint) "Cv" = ( @@ -7631,7 +7631,7 @@ /area/ruin/space/has_grav/spacemall) "CR" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/decal/cleanable/blood, /obj/item/reagent_containers/food/snacks/spiderling{ pixel_y = 5; @@ -8230,9 +8230,9 @@ /turf/open/floor/eighties, /area/ruin/space/has_grav/spacemall/shop2) "EI" = ( -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) "EJ" = ( @@ -9438,7 +9438,7 @@ /area/ruin/space/has_grav/spacemall) "JE" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ruin/space/has_grav/spacemall/dorms) "JF" = ( @@ -9569,7 +9569,7 @@ "Kl" = ( /obj/effect/decal/cleanable/robot_debris/old, /obj/structure/closet/crate/wooden, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/maint) "Kn" = ( @@ -9999,9 +9999,9 @@ "LS" = ( /obj/structure/rack, /obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/circuit/computer/common, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/random_computer_circuit_common, /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) @@ -10056,9 +10056,9 @@ /area/ruin/space/has_grav/spacemall/dorms) "Mb" = ( /obj/effect/decal/cleanable/greenglow, -/obj/effect/spawner/random/medical/prosthetic, -/obj/effect/spawner/random/medical/memeorgans, -/obj/effect/spawner/random/medical/memeorgans, +/obj/effect/spawner/lootdrop/random_prosthetic, +/obj/effect/spawner/lootdrop/memeorgans, +/obj/effect/spawner/lootdrop/memeorgans, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 4 }, @@ -11266,7 +11266,7 @@ /area/ruin/space/has_grav/spacemall) "Qf" = ( /obj/structure/rack, -/obj/effect/spawner/random/engineering/tool/common, +/obj/effect/spawner/lootdrop/tool_engie_common, /obj/effect/turf_decal/corner/transparent/black/diagonal, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) @@ -11297,7 +11297,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) "Qn" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/corner/transparent/green/diagonal, /obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 @@ -11311,7 +11311,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/maint) "Qu" = ( @@ -11865,7 +11865,7 @@ /area/ruin/space/has_grav/spacemall/maint) "SD" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/item/toy/plush/slimeplushie{ pixel_y = -4; pixel_x = 4 @@ -12218,7 +12218,7 @@ /obj/structure/rack, /obj/effect/turf_decal/corner/transparent/black/diagonal, /obj/machinery/light/directional/east, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) "TZ" = ( @@ -12290,10 +12290,10 @@ "Ul" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate/engineering/electrical, -/obj/effect/spawner/random/techstorage, -/obj/effect/spawner/random/techstorage, -/obj/effect/spawner/random/stockparts, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/techstorage, +/obj/effect/spawner/lootdrop/techstorage, +/obj/effect/spawner/lootdrop/stockparts, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shuttle) "Um" = ( @@ -12606,7 +12606,7 @@ }, /obj/structure/closet/crate, /obj/structure/catwalk/over/plated_catwalk, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) "Vr" = ( @@ -12655,8 +12655,8 @@ "VA" = ( /obj/structure/rack, /obj/structure/window/reinforced/spawner, -/obj/effect/spawner/random/medical/beaker, -/obj/effect/spawner/random/medical/beaker, +/obj/effect/spawner/lootdrop/beaker_loot_spawner, +/obj/effect/spawner/lootdrop/beaker_loot_spawner, /obj/effect/turf_decal/corner/opaque/blue/diagonal, /obj/item/clothing/neck/stethoscope, /turf/open/floor/plasteel/white, @@ -13459,7 +13459,7 @@ dir = 2 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/box, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm index 50d9986ea756..e1a64004decb 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm @@ -612,7 +612,7 @@ /area/ruin/wasteplanet/abandoned_mechbay/mainhall) "fX" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /obj/machinery/light/dim/directional/south, /turf/open/floor/plasteel/dark, /area/ruin/wasteplanet/abandoned_mechbay/bay2) @@ -1084,8 +1084,8 @@ /obj/effect/turf_decal/industrial/outline/yellow, /obj/item/mop, /obj/item/reagent_containers/glass/bucket, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/clothing/costume, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/lootdrop/costume, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/tech/grid, /area/ruin/wasteplanet/abandoned_mechbay/crewquarters) @@ -1445,7 +1445,7 @@ "qH" = ( /obj/structure/rack, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/six, +/obj/effect/spawner/lootdrop/maintenance/six, /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill, /turf/open/floor/plasteel/dark, /area/ruin/wasteplanet/abandoned_mechbay/bay2) @@ -2278,7 +2278,7 @@ /area/ruin/wasteplanet/abandoned_mechbay/mainhall) "Bg" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /obj/effect/turf_decal/box/white, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/tech/grid, @@ -2360,13 +2360,13 @@ /area/ruin/wasteplanet/abandoned_mechbay/bay2) "BF" = ( /obj/structure/closet/crate, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /obj/effect/turf_decal/industrial/outline/yellow, /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/food/salt, @@ -2411,7 +2411,7 @@ "Cp" = ( /obj/structure/table, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/spawner/random/materials, +/obj/effect/spawner/lootdrop/materials, /obj/item/stack/sheet/metal/fifty, /obj/item/stack/sheet/glass/twenty, /turf/open/floor/plasteel/tech/grid, @@ -3424,7 +3424,7 @@ /area/overmap_encounter/planetoid/cave/explored) "Oj" = ( /obj/structure/table, -/obj/effect/spawner/random/clothing/pirate_or_bandana, +/obj/effect/spawner/lootdrop/minor/pirate_or_bandana, /turf/open/floor/plasteel, /area/ruin/wasteplanet/abandoned_mechbay/crewquarters) "Om" = ( @@ -3933,7 +3933,7 @@ "Vx" = ( /obj/structure/rack, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill, /turf/open/floor/plasteel/dark, /area/ruin/wasteplanet/abandoned_mechbay/bay2) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_lab.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_lab.dmm index bdfc9c75a4a1..dba9f5e3c3c9 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_lab.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_lab.dmm @@ -699,7 +699,7 @@ /turf/open/floor/plating/rust, /area/ruin/powered) "HW" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /turf/open/floor/plating, /area/ruin/powered) "Ie" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_tradepost.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_tradepost.dmm index 83c587268b34..c865138fb568 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_tradepost.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_tradepost.dmm @@ -1806,10 +1806,10 @@ /obj/effect/turf_decal/industrial/warning/full, /obj/structure/closet/crate, /obj/machinery/light/small/broken/directional/south, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/pod/dark, /area/ruin/wasteplanet/tradepost/warehouse) "ug" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm index e3e0c20ef75f..a53934c91013 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm @@ -152,10 +152,10 @@ /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/effect/turf_decal/industrial/hatch/yellow, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) "bB" = ( @@ -1542,10 +1542,10 @@ /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/machinery/light/small/broken/directional/south, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) "rd" = ( @@ -1965,8 +1965,8 @@ /area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) "wc" = ( /obj/structure/closet/secure_closet/freezer/fridge, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/light/small/directional/west, /obj/effect/turf_decal/corner/transparent/neutral/mono, /obj/effect/turf_decal/corner/transparent/blue/border{ @@ -4045,7 +4045,7 @@ /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/effect/turf_decal/industrial/hatch/yellow, /obj/machinery/light/small/broken/directional/west, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) "Zy" = ( diff --git a/_maps/outpost/hangar/nt_asteroid_40x20.dmm b/_maps/outpost/hangar/nt_asteroid_40x20.dmm index ab49a101ee1e..312e0443aeea 100644 --- a/_maps/outpost/hangar/nt_asteroid_40x20.dmm +++ b/_maps/outpost/hangar/nt_asteroid_40x20.dmm @@ -383,7 +383,7 @@ }, /area/hangar) "kU" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/stack/sheet/mineral/wood{ pixel_x = -6 }, @@ -392,7 +392,7 @@ pixel_y = 7 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/stack/sheet/mineral/wood{ pixel_x = -6 }, @@ -861,7 +861,7 @@ }, /area/hangar) "vh" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating{ planetary_atmos = 1 diff --git a/_maps/outpost/hangar/nt_asteroid_40x40.dmm b/_maps/outpost/hangar/nt_asteroid_40x40.dmm index eab944babc1c..005b657e38ee 100644 --- a/_maps/outpost/hangar/nt_asteroid_40x40.dmm +++ b/_maps/outpost/hangar/nt_asteroid_40x40.dmm @@ -1070,7 +1070,10 @@ /area/hangar) "NE" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = 5; + pixel_y = 9 + }, /turf/open/floor/plating{ planetary_atmos = 1 }, @@ -1330,7 +1333,7 @@ /obj/structure/catwalk/over/plated_catwalk, /obj/item/stack/cable_coil/cut/yellow, /obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating{ icon_state = "panelscorched"; planetary_atmos = 1 diff --git a/_maps/outpost/hangar/nt_asteroid_56x20.dmm b/_maps/outpost/hangar/nt_asteroid_56x20.dmm index 070f2a949044..11ba5baac070 100644 --- a/_maps/outpost/hangar/nt_asteroid_56x20.dmm +++ b/_maps/outpost/hangar/nt_asteroid_56x20.dmm @@ -106,7 +106,7 @@ /area/hangar) "cz" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating{ planetary_atmos = 1 }, @@ -1024,8 +1024,8 @@ /area/hangar) "MI" = ( /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/directional/east, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark{ @@ -1254,7 +1254,10 @@ /area/hangar) "Wp" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = 5; + pixel_y = 9 + }, /turf/open/floor/plating{ icon_state = "panelscorched"; planetary_atmos = 1 diff --git a/_maps/outpost/hangar/nt_asteroid_56x40.dmm b/_maps/outpost/hangar/nt_asteroid_56x40.dmm index 020ab48b8d9f..5d66d8966d0b 100644 --- a/_maps/outpost/hangar/nt_asteroid_56x40.dmm +++ b/_maps/outpost/hangar/nt_asteroid_56x40.dmm @@ -277,8 +277,8 @@ /area/hangar) "lZ" = ( /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/directional/east, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark{ @@ -806,7 +806,7 @@ /area/hangar) "Hs" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating{ planetary_atmos = 1 }, @@ -963,7 +963,10 @@ /area/hangar) "KT" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = 5; + pixel_y = 9 + }, /turf/open/floor/plating{ icon_state = "panelscorched"; planetary_atmos = 1 diff --git a/_maps/outpost/indie_space.dmm b/_maps/outpost/indie_space.dmm index b10b86822c8c..86a2a8d102b1 100644 --- a/_maps/outpost/indie_space.dmm +++ b/_maps/outpost/indie_space.dmm @@ -113,7 +113,7 @@ /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 8 }, -/obj/effect/spawner/random/entertainment/plushie{ +/obj/effect/spawner/lootdrop/plushie{ pixel_x = 16; pixel_y = 4 }, @@ -270,7 +270,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/effect/spawner/random/salvage/metal, +/obj/effect/spawner/lootdrop/salvage/metal, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/central) "bL" = ( @@ -287,7 +287,7 @@ /turf/open/floor/plasteel, /area/outpost/hallway/port) "bS" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/turf_decal/corner_techfloor_grid{ dir = 8 }, @@ -346,7 +346,7 @@ /turf/open/floor/plasteel, /area/outpost/hallway/central) "ci" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -481,7 +481,7 @@ /turf/open/floor/plasteel, /area/outpost/vacant_rooms) "dl" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/turf_decal/steeldecal/steel_decals7{ dir = 9 }, @@ -958,7 +958,7 @@ /turf/open/floor/plasteel/mono, /area/outpost/vacant_rooms) "gz" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 1 @@ -1001,7 +1001,7 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "gS" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/outpost/maintenance/fore) "gT" = ( @@ -1078,7 +1078,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/outpost/maintenance/central) "hz" = ( @@ -1126,8 +1126,8 @@ /area/outpost/hallway/port) "hK" = ( /obj/structure/rack, -/obj/effect/spawner/random/salvage_laser, -/obj/effect/spawner/random/salvage_capacitor, +/obj/effect/spawner/lootdrop/salvage_laser, +/obj/effect/spawner/lootdrop/salvage_capacitor, /turf/open/floor/plating, /area/outpost/maintenance/fore) "hM" = ( @@ -1188,7 +1188,7 @@ /area/outpost/maintenance/central) "hZ" = ( /obj/structure/table/wood, -/obj/effect/spawner/random/food_or_drink/donut, +/obj/effect/spawner/lootdrop/donut, /turf/open/floor/wood, /area/outpost/crew/bar) "ib" = ( @@ -1269,7 +1269,7 @@ /turf/open/floor/wood, /area/outpost/crew/library) "iD" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /turf/open/floor/plating, /area/outpost/maintenance/fore) "iG" = ( @@ -1350,7 +1350,7 @@ /area/outpost/crew/bar) "jn" = ( /obj/structure/table, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/central) @@ -1430,7 +1430,7 @@ /turf/open/floor/plasteel/tech, /area/outpost/hallway/central) "jM" = ( -/obj/effect/spawner/random/chicken, +/obj/effect/spawner/lootdrop/chicken, /turf/open/floor/ship/dirt, /area/outpost/hallway/port) "jO" = ( @@ -1703,7 +1703,7 @@ /area/outpost/maintenance/central) "lA" = ( /obj/structure/flora/grass/jungle, -/obj/effect/spawner/random/chicken, +/obj/effect/spawner/lootdrop/chicken, /turf/open/floor/grass/ship/jungle, /area/outpost/hallway/central) "lB" = ( @@ -1858,7 +1858,7 @@ /area/outpost/hallway/central) "mv" = ( /obj/structure/rack, -/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, /obj/effect/decal/cleanable/wrapping, /turf/open/floor/plasteel/mono, /area/outpost/vacant_rooms) @@ -2597,8 +2597,8 @@ /area/outpost/maintenance/fore) "rp" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/maintenance/seven, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/maintenance/seven, /turf/open/floor/plasteel/mono, /area/outpost/vacant_rooms) "rr" = ( @@ -2670,7 +2670,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -2782,7 +2782,7 @@ /obj/structure/cable/yellow{ icon_state = "1-4" }, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, @@ -2988,9 +2988,9 @@ /area/outpost/crew/library) "ta" = ( /obj/structure/rack, -/obj/effect/spawner/random/clothing/twentyfive_percent_cyborg_mask, +/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/clothing/gloves, +/obj/effect/spawner/lootdrop/gloves, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/mono, /area/outpost/storage) @@ -3160,7 +3160,7 @@ /area/outpost/cargo) "tS" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plating, /area/outpost/maintenance/fore) "tT" = ( @@ -3324,7 +3324,7 @@ /turf/open/floor/ship/dirt, /area/outpost/hallway/central) "uE" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/outpost/maintenance/fore) @@ -3791,7 +3791,7 @@ /turf/open/floor/plasteel, /area/outpost/hallway/port) "xu" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/outpost/maintenance/fore) @@ -3884,7 +3884,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /turf/open/floor/plating, /area/outpost/maintenance/fore) "xZ" = ( @@ -3968,7 +3968,7 @@ /area/outpost/crew/bar) "yN" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plasteel/mono, /area/outpost/vacant_rooms) "yQ" = ( @@ -4155,7 +4155,7 @@ /turf/open/floor/plating/asteroid, /area/outpost/external) "zS" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /turf/open/floor/plating, /area/outpost/maintenance/central) "zY" = ( @@ -4208,7 +4208,7 @@ /turf/open/floor/plasteel/tech, /area/outpost/maintenance/fore) "Am" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 8 }, @@ -4858,8 +4858,8 @@ /area/outpost/hallway/port) "DH" = ( /obj/structure/rack, -/obj/effect/spawner/random/clothing/bowler_or_that, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/minor/bowler_or_that, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/mono, /area/outpost/storage) "DI" = ( @@ -4912,7 +4912,7 @@ /obj/effect/turf_decal/corner_techfloor_gray{ dir = 9 }, -/obj/effect/spawner/random/salvage/metal, +/obj/effect/spawner/lootdrop/salvage/metal, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) @@ -4984,7 +4984,7 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "ER" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/outpost/maintenance/central) "EV" = ( @@ -4995,7 +4995,7 @@ /area/outpost/crew/bar) "EX" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/outpost/maintenance/fore) "Fa" = ( @@ -5189,7 +5189,7 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms/office) "Gj" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/structure/cable/yellow{ icon_state = "4-8" }, @@ -5222,7 +5222,7 @@ /area/outpost/external) "Gn" = ( /obj/structure/rack, -/obj/effect/spawner/random/clothing/bowler_or_that, +/obj/effect/spawner/lootdrop/minor/bowler_or_that, /turf/open/floor/plating, /area/outpost/maintenance/fore) "Gu" = ( @@ -5394,7 +5394,7 @@ /area/outpost/hallway/central) "Hk" = ( /obj/structure/rack, -/obj/effect/spawner/random/clothing/beret_or_rabbitears, +/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears, /obj/machinery/light/dim/directional/west, /turf/open/floor/plasteel/mono, /area/outpost/storage) @@ -5853,7 +5853,7 @@ /area/outpost/cargo/office) "JV" = ( /obj/structure/rack, -/obj/effect/spawner/random/clothing/pirate_or_bandana, +/obj/effect/spawner/lootdrop/minor/pirate_or_bandana, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/mono, @@ -6213,8 +6213,8 @@ /turf/open/floor/wood, /area/outpost/crew/library) "LR" = ( -/obj/effect/spawner/random/engineering/tool/common, -/obj/effect/spawner/random/engineering/tool/common, +/obj/effect/spawner/lootdrop/tool_engie_common, +/obj/effect/spawner/lootdrop/tool_engie_common, /obj/structure/rack, /turf/open/floor/plating, /area/outpost/maintenance/fore) @@ -6454,7 +6454,7 @@ /area/outpost/cargo/office) "No" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donut/jelly, +/obj/effect/spawner/lootdrop/donut/jelly, /obj/effect/turf_decal/floordetail/tiled, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/security) @@ -6531,7 +6531,7 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/food/snacks/grown/citrus/orange, -/obj/effect/spawner/random/salvage_capacitor, +/obj/effect/spawner/lootdrop/salvage_capacitor, /turf/open/floor/plating, /area/outpost/maintenance/fore) "NV" = ( @@ -6718,7 +6718,7 @@ /area/outpost/crew/cryo) "Pw" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms/office) "Px" = ( @@ -6914,8 +6914,8 @@ /area/outpost/maintenance/fore) "Qx" = ( /obj/structure/rack, -/obj/effect/spawner/random/clothing/bowler_or_that, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/minor/bowler_or_that, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/mono, /area/outpost/storage) "QA" = ( @@ -7079,7 +7079,7 @@ /obj/structure/cable/yellow{ icon_state = "4-6" }, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/turf_decal/corner_techfloor_gray{ dir = 10 }, @@ -7166,7 +7166,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /turf/open/floor/plating, /area/outpost/maintenance/fore) "RJ" = ( @@ -7390,8 +7390,8 @@ /area/outpost/hallway/port) "SW" = ( /obj/structure/rack, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/mono, /area/outpost/vacant_rooms) "SY" = ( @@ -7400,7 +7400,7 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Ta" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/oil, /obj/effect/turf_decal/steeldecal/steel_decals9, /turf/open/floor/plating, @@ -7556,7 +7556,7 @@ /obj/effect/turf_decal/corner_techfloor_gray{ dir = 9 }, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/maintenance/fore) @@ -7608,7 +7608,7 @@ /turf/open/floor/plating, /area/outpost/maintenance/central) "Uq" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/hallway/port) "Us" = ( @@ -7618,7 +7618,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -7789,7 +7789,7 @@ }, /obj/item/bedsheet/double/captain, /obj/effect/decal/cleanable/greenglow, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, /obj/item/clothing/head/papersack/smiley{ pixel_x = 7 @@ -7897,7 +7897,7 @@ /turf/open/floor/carpet/green, /area/outpost/crew/bar) "Wa" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/mouse/brown, /turf/open/floor/plating, @@ -8004,7 +8004,7 @@ /turf/open/floor/plasteel, /area/outpost/hallway/central) "WO" = ( -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/outpost/maintenance/fore) "WR" = ( @@ -8029,7 +8029,7 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "WV" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ dir = 1 }, @@ -8161,7 +8161,7 @@ /area/outpost/hallway/port) "XA" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/five, +/obj/effect/spawner/lootdrop/maintenance/five, /turf/open/floor/plasteel/mono, /area/outpost/vacant_rooms) "XD" = ( @@ -8332,7 +8332,7 @@ /turf/open/floor/plasteel/patterned, /area/outpost/cargo) "YC" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/structure/rack, /obj/effect/turf_decal/steeldecal/steel_decals_central2{ dir = 4 @@ -8528,8 +8528,8 @@ /area/outpost/hallway/central) "ZP" = ( /obj/structure/rack, -/obj/effect/spawner/random/medical/surgery_tool/common, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/tool_surgery_common, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plasteel/patterned/cargo_one, /area/outpost/vacant_rooms/office) "ZU" = ( diff --git a/_maps/outpost/nanotrasen_asteroid.dmm b/_maps/outpost/nanotrasen_asteroid.dmm index 179aa234e780..d5af45bfef2d 100644 --- a/_maps/outpost/nanotrasen_asteroid.dmm +++ b/_maps/outpost/nanotrasen_asteroid.dmm @@ -63,7 +63,7 @@ /area/outpost/hallway/starboard) "aw" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/machinery/light/small/broken/directional/south, /turf/open/floor/plating/rust, /area/outpost/maintenance/aft) @@ -951,7 +951,7 @@ dir = 8 }, /obj/effect/turf_decal/box/corners, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/concrete/slab_1, /area/outpost/hallway/central) "dF" = ( @@ -1678,7 +1678,7 @@ dir = 8 }, /obj/structure/rack, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/paper/crumpled, /turf/open/floor/concrete/slab_1, /area/outpost/hallway/central) @@ -1911,7 +1911,7 @@ /turf/closed/mineral/random/snow, /area/outpost/crew/cryo) "hd" = ( -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating, /area/outpost/maintenance/aft) "he" = ( @@ -2178,7 +2178,7 @@ /area/outpost/crew/bar) "im" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/structure/grille/broken, /turf/open/floor/plating{ icon_state = "foam_plating" @@ -2337,7 +2337,7 @@ /area/outpost/vacant_rooms) "iW" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/structure/sign/poster/contraband/random{ pixel_x = 32; pixel_y = -32 @@ -5481,7 +5481,7 @@ /turf/open/floor/plasteel/dark, /area/outpost/operations) "tD" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating{ icon_state = "panelscorched" @@ -6814,7 +6814,7 @@ "xV" = ( /obj/machinery/light/dim/directional/south, /obj/structure/closet/cardboard, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/outpost/maintenance/fore) "xW" = ( @@ -6990,7 +6990,7 @@ }, /area/outpost/maintenance/fore) "yE" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating{ icon_state = "platingdmg1" }, @@ -7386,7 +7386,7 @@ /area/outpost/engineering/atmospherics) "zY" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/rust, /area/outpost/maintenance/aft) "zZ" = ( @@ -7614,7 +7614,7 @@ icon_state = "box_corners"; dir = 8 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/machinery/airalarm/directional/west, /turf/open/floor/concrete/slab_1, /area/outpost/hallway/central) @@ -7899,7 +7899,7 @@ "BI" = ( /obj/machinery/door/window/brigdoor/southright, /obj/structure/rack, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/concrete/tiles, /area/outpost/hallway/central) "BJ" = ( @@ -10357,7 +10357,7 @@ /obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/concrete/slab_1, /area/outpost/hallway/central) "Kj" = ( @@ -10560,7 +10560,7 @@ /area/outpost/hallway/starboard) "KW" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/outpost/maintenance/aft) "KX" = ( @@ -11767,7 +11767,7 @@ "Pb" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/item/stack/sheet/mineral/wood{ pixel_x = -6 }, @@ -12080,7 +12080,7 @@ /obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/item/paperplane, /obj/item/radio/intercom/directional/south, /obj/machinery/firealarm/directional/south, @@ -12344,7 +12344,7 @@ "Ra" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/outpost/maintenance/fore) "Rc" = ( @@ -12447,7 +12447,7 @@ /area/outpost/maintenance/aft) "Ru" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -12633,7 +12633,7 @@ "RZ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/stack/rods/ten{ pixel_x = 9 }, @@ -12648,7 +12648,7 @@ /area/outpost/crew/canteen) "Sd" = ( /obj/structure/grille/broken, -/obj/effect/spawner/random/clothing/pirate_or_bandana, +/obj/effect/spawner/lootdrop/minor/pirate_or_bandana, /turf/open/floor/plating, /area/outpost/maintenance/fore) "Se" = ( @@ -12868,8 +12868,8 @@ "Tc" = ( /obj/structure/closet/crate/trashcart/laundry, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, /obj/structure/grille/broken, /obj/effect/turf_decal/box/white, /turf/open/floor/plating{ @@ -13743,7 +13743,7 @@ /area/outpost/hallway/central) "Wj" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/concrete/slab_1, /area/outpost/hallway/central) "Wn" = ( @@ -14038,7 +14038,7 @@ /obj/structure/railing{ layer = 3.1 }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/item/trash/can{ pixel_x = -8; pixel_y = -6 diff --git a/_maps/outpost/nanotrasen_ice.dmm b/_maps/outpost/nanotrasen_ice.dmm index cfd32ad951ae..70fb809c4c95 100644 --- a/_maps/outpost/nanotrasen_ice.dmm +++ b/_maps/outpost/nanotrasen_ice.dmm @@ -943,7 +943,7 @@ "gO" = ( /obj/effect/turf_decal/industrial/outline/yellow, /obj/structure/rack, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/structure/sign/poster/retro/random{ pixel_x = -32 }, @@ -1168,7 +1168,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/structure/rack, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plasteel/tech, /area/outpost/vacant_rooms/shop) "iH" = ( @@ -1809,7 +1809,7 @@ "mV" = ( /obj/structure/rack, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/tech, /area/outpost/vacant_rooms/shop) "na" = ( @@ -2177,7 +2177,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/rack, /obj/structure/grille/broken, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating, /area/outpost/maintenance/starboard) "oF" = ( @@ -3267,7 +3267,7 @@ /area/outpost/maintenance/fore) "vn" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small/directional/south, /turf/open/floor/plating{ @@ -3476,7 +3476,7 @@ /area/outpost/engineering/atmospherics) "wD" = ( /obj/structure/grille/broken, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/structure/spider/stickyweb, /obj/machinery/light/small/directional/east, /turf/open/floor/plating/rust, @@ -4002,7 +4002,7 @@ /obj/structure/flora/grass/both{ layer = 3.1 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid/snow/temperatre{ light_color = "#1B1D2E"; light_range = 2 @@ -4396,7 +4396,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/bin, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/trash/sosjerky, /obj/item/trash/can, /turf/open/floor/plasteel/patterned/brushed{ @@ -4552,7 +4552,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 8 }, @@ -4840,7 +4840,7 @@ dir = 5 }, /obj/item/trash/chips, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/trash/candy, /turf/open/floor/wood/walnut, /area/outpost/crew/bar) @@ -6062,7 +6062,7 @@ "PN" = ( /obj/structure/rack, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/tech, /area/outpost/vacant_rooms/shop) "PT" = ( @@ -7551,7 +7551,7 @@ /obj/structure/flora/grass/green{ layer = 3.1 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid/snow/temperatre{ light_color = "#1B1D2E"; light_range = 2 @@ -7688,7 +7688,7 @@ layer = 3.1 }, /obj/item/shard, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/asteroid/snow/temperatre{ light_color = "#1B1D2E"; light_range = 2 diff --git a/_maps/shuttles/independent/independent_beluga.dmm b/_maps/shuttles/independent/independent_beluga.dmm index ddbcfba512b3..c283c0d21584 100644 --- a/_maps/shuttles/independent/independent_beluga.dmm +++ b/_maps/shuttles/independent/independent_beluga.dmm @@ -1090,7 +1090,7 @@ pixel_y = -32 }, /obj/item/storage/bag/tray, -/obj/effect/spawner/random/food_or_drink/ration{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = 6; pixel_y = 6 }, @@ -2631,7 +2631,7 @@ "zh" = ( /obj/structure/bed, /obj/structure/curtain/cloth/grey, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/light/directional/south, /turf/open/floor/wood, /area/ship/crew/dorm) @@ -3425,7 +3425,7 @@ /area/ship/crew/canteen) "Hq" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/bounty, /obj/structure/sign/poster/official/ian{ pixel_x = 32 @@ -3803,7 +3803,7 @@ "Kc" = ( /obj/structure/bed, /obj/structure/curtain/cloth/grey, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/light_switch{ pixel_x = -8; pixel_y = -20; @@ -3827,7 +3827,7 @@ /area/ship/crew) "Ko" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/bounty, /turf/open/floor/carpet/red, /area/ship/crew) @@ -4118,7 +4118,7 @@ "Nv" = ( /obj/structure/bed, /obj/structure/curtain/cloth/grey, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ship/crew/dorm) "Nw" = ( diff --git a/_maps/shuttles/independent/independent_box.dmm b/_maps/shuttles/independent/independent_box.dmm index f64c84ca5b33..31891a371d8c 100644 --- a/_maps/shuttles/independent/independent_box.dmm +++ b/_maps/shuttles/independent/independent_box.dmm @@ -711,7 +711,7 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/crew/toilet) "cG" = ( -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/structure/closet/emcloset/anchored, /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 4 @@ -968,7 +968,7 @@ dir = 8 }, /obj/structure/bed/pod, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/carpet/blue, /area/ship/crew) "dr" = ( @@ -1162,7 +1162,7 @@ /obj/structure/sign/poster/official/help_others{ pixel_x = -32 }, -/obj/effect/spawner/random/medical/surgery_tool/adv, +/obj/effect/spawner/lootdrop/tool_surgery_adv, /obj/item/megaphone/command, /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 4 @@ -1421,7 +1421,7 @@ /turf/open/floor/plasteel/tech, /area/ship/medical) "mx" = ( -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/bounty, /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -1460,10 +1460,10 @@ /area/ship/medical) "nA" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/ration{ +/obj/effect/spawner/lootdrop/ration{ pixel_y = 3 }, -/obj/effect/spawner/random/food_or_drink/ration{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = -5; pixel_y = 3 }, @@ -2022,7 +2022,7 @@ /obj/item/circuitboard/machine/chem_master, /obj/item/reagent_containers/glass/beaker/large, /obj/item/stack/sheet/glass/two, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/item/trash/can/food/beans, /turf/open/floor/plasteel/white, /area/ship/medical) @@ -2165,7 +2165,7 @@ /obj/item/vending_refill/medical, /obj/item/screwdriver, /obj/machinery/airalarm/directional/south, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/white, /area/ship/cargo) "Cn" = ( @@ -2808,7 +2808,7 @@ /obj/structure/cable/yellow{ icon_state = "0-10" }, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/structure/rack, /obj/item/areaeditor/shuttle, /obj/item/flashlight{ diff --git a/_maps/shuttles/independent/independent_bubble.dmm b/_maps/shuttles/independent/independent_bubble.dmm index 298a919bbaa7..08fd116f2536 100644 --- a/_maps/shuttles/independent/independent_bubble.dmm +++ b/_maps/shuttles/independent/independent_bubble.dmm @@ -248,7 +248,7 @@ /turf/open/floor/plasteel/mono, /area/ship/hallway/central) "jr" = ( -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/bed, /obj/structure/curtain/bounty, /obj/effect/turf_decal/siding/wood{ @@ -905,7 +905,7 @@ /turf/open/floor/plating, /area/ship/engineering) "LK" = ( -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/bed, /obj/structure/curtain/bounty, /obj/effect/turf_decal/siding/wood{ @@ -1228,7 +1228,7 @@ /turf/open/floor/plasteel, /area/ship/engineering) "Yi" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/structure/closet/firecloset/full, /turf/open/floor/plating, /area/ship/maintenance/port) diff --git a/_maps/shuttles/independent/independent_dwayne.dmm b/_maps/shuttles/independent/independent_dwayne.dmm index 9d36cb61c748..7f8e7b569c68 100644 --- a/_maps/shuttles/independent/independent_dwayne.dmm +++ b/_maps/shuttles/independent/independent_dwayne.dmm @@ -257,7 +257,7 @@ /obj/structure/closet/crate, /obj/machinery/firealarm/directional/north, /obj/item/circuitboard/machine/pipedispenser, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/patterned/grid, /area/ship/cargo) "dh" = ( @@ -1442,7 +1442,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/patterned/grid, /area/ship/cargo) "vj" = ( @@ -1584,7 +1584,7 @@ }, /obj/machinery/light/directional/west, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plasteel/patterned/grid, /area/ship/cargo) "yu" = ( @@ -1889,7 +1889,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/large, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/patterned/grid, /area/ship/cargo) "Ds" = ( @@ -2083,7 +2083,7 @@ /area/ship/external/dark) "Gl" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/airalarm/directional/east, /obj/item/radio/intercom/directional/south, /turf/open/floor/carpet, @@ -2213,7 +2213,7 @@ "Is" = ( /obj/structure/closet/crate/science, /obj/item/paicard, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/ship/cargo) "IF" = ( @@ -2301,7 +2301,7 @@ /area/ship/storage/eva) "JH" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/cable/yellow{ icon_state = "4-10" }, @@ -2433,10 +2433,10 @@ /obj/structure/closet/secure_closet/freezer/wall/directional/south{ name = "kitchen cabinet" }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, @@ -2617,13 +2617,28 @@ /area/ship/storage/eva) "NT" = ( /obj/structure/closet/cardboard, -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_y = 2 + }, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_y = -3; + pixel_x = 7 + }, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = -6 + }, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_y = -3 + }, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = -4; + pixel_y = -4 + }, /turf/open/floor/plating, /area/ship/storage/eva) "NW" = ( @@ -2736,11 +2751,11 @@ /obj/effect/turf_decal/corner/opaque/yellow/half, /obj/structure/closet/crate/large, /obj/effect/turf_decal/industrial/warning, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/spawner/random/entertainment/plushie, +/obj/effect/spawner/lootdrop/plushie, +/obj/effect/spawner/lootdrop/plushie, +/obj/effect/spawner/lootdrop/plushie, +/obj/effect/spawner/lootdrop/plushie, +/obj/effect/spawner/lootdrop/plushie, /obj/structure/cable/cyan{ icon_state = "1-2" }, @@ -3390,7 +3405,7 @@ /obj/item/trash/candy, /obj/item/trash/sosjerky, /obj/item/trash/can/food/beans, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/structure/cable/cyan{ icon_state = "2-5" }, @@ -3458,7 +3473,7 @@ /area/ship/engineering) "ZQ" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/carpet, /area/ship/crew/dorm) "ZR" = ( diff --git a/_maps/shuttles/independent/independent_junker.dmm b/_maps/shuttles/independent/independent_junker.dmm index c7b7eb4ae673..0ae98ef37fe2 100644 --- a/_maps/shuttles/independent/independent_junker.dmm +++ b/_maps/shuttles/independent/independent_junker.dmm @@ -48,7 +48,7 @@ /area/ship/maintenance/port) "aq" = ( /obj/item/trash/sosjerky, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/item/areaeditor/shuttle{ pixel_y = 7 }, @@ -67,7 +67,7 @@ /obj/item/storage/backpack/explorer, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/item/pickaxe/rusted, /turf/open/floor/plating, /area/ship/engineering/electrical) @@ -75,7 +75,7 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/broken/directional/north, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/item/flashlight/pen, /turf/open/floor/wood/walnut{ icon_state = "wood-broken" @@ -399,7 +399,7 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/ship/engineering/electrical) "hb" = ( @@ -857,7 +857,7 @@ "qm" = ( /obj/structure/rack, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/item/reagent_containers/food/snacks/canned/peaches/maint, /turf/open/floor/plating, /area/ship/construction) @@ -1232,7 +1232,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/spawner/random/maintenance/eight, +/obj/effect/spawner/lootdrop/maintenance/eight, /obj/structure/safe/floor{ number_of_tumblers = 5 }, @@ -1610,7 +1610,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/ship/maintenance/port) "Df" = ( @@ -1735,7 +1735,7 @@ /obj/item/reagent_containers/glass/bottle/welding_fuel, /obj/machinery/power/apc/auto_name/directional/west, /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/ship/storage/eva) "Fz" = ( @@ -1808,7 +1808,7 @@ /area/ship/storage/eva) "Hj" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/item/decal_painter, /obj/item/storage/box/mousetraps, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -2034,7 +2034,7 @@ "JZ" = ( /obj/structure/rack, /obj/machinery/light/small/broken/directional/west, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/item/toner, /obj/item/clothing/neck/stethoscope, /turf/open/floor/plating, @@ -2085,7 +2085,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/machinery/light/small/directional/north, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/wood/walnut{ icon_state = "wood-broken3" }, @@ -2231,7 +2231,7 @@ dir = 1 }, /mob/living/simple_animal/hostile/cockroach/glockroach, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light_switch{ dir = 8; pixel_x = 20; @@ -2487,7 +2487,7 @@ }, /obj/effect/decal/cleanable/sprayweb, /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/pod/light, /area/ship/maintenance/aft) "Wv" = ( @@ -2730,7 +2730,7 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/ship/maintenance/port) diff --git a/_maps/shuttles/independent/independent_kilo.dmm b/_maps/shuttles/independent/independent_kilo.dmm index 7783dff02df5..43941169b66a 100644 --- a/_maps/shuttles/independent/independent_kilo.dmm +++ b/_maps/shuttles/independent/independent_kilo.dmm @@ -123,7 +123,7 @@ /turf/open/floor/plating, /area/ship/hallway/port) "bm" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/ship/maintenance/fore) "bn" = ( @@ -905,7 +905,7 @@ /area/ship/cargo) "mz" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/light_switch{ pixel_x = 7; pixel_y = 20 @@ -1212,9 +1212,9 @@ /obj/item/reagent_containers/food/drinks/soda_cans/cola, /obj/item/reagent_containers/food/drinks/soda_cans/cola, /obj/item/reagent_containers/food/drinks/soda_cans/cola, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/snacks/icecreamsandwich, /obj/item/reagent_containers/food/snacks/icecreamsandwich, /obj/effect/turf_decal/corner/transparent/beige/full, @@ -1789,7 +1789,7 @@ /obj/structure/cable/pink{ icon_state = "1-6" }, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/light/directional/west, /turf/open/floor/carpet, /area/ship/crew/dorm) diff --git a/_maps/shuttles/independent/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm index 2855c6e0d686..5130aed76be3 100644 --- a/_maps/shuttles/independent/independent_lagoon.dmm +++ b/_maps/shuttles/independent/independent_lagoon.dmm @@ -4873,7 +4873,7 @@ /area/ship/hallway/aft) "GN" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood{ dir = 4 }, @@ -6155,7 +6155,7 @@ /area/ship/hallway/port) "QI" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood{ dir = 6 }, diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index 676301c8271e..11d98b3c1475 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -1412,7 +1412,7 @@ /area/ship/hallway/aft) "Ft" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/bounty, /obj/machinery/light_switch{ dir = 1; @@ -1727,10 +1727,10 @@ /obj/structure/closet/crate{ name = "ration crate" }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/snacks/canned/beans, /obj/item/reagent_containers/food/snacks/canned/beans, /obj/item/reagent_containers/food/snacks/canned/beans, @@ -1990,7 +1990,7 @@ /area/ship/crew/toilet) "ST" = ( /obj/item/storage/cans/sixbeer, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /obj/structure/closet/secure_closet/freezer{ anchored = 1; name = "fridge" @@ -2140,7 +2140,7 @@ /area/ship/engineering/engine) "Vy" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/bounty, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/dim/directional/north, diff --git a/_maps/shuttles/independent/independent_raleigh.dmm b/_maps/shuttles/independent/independent_raleigh.dmm index 906af974bfe5..a6bff35f8dc7 100644 --- a/_maps/shuttles/independent/independent_raleigh.dmm +++ b/_maps/shuttles/independent/independent_raleigh.dmm @@ -714,12 +714,16 @@ /obj/structure/table, /obj/effect/turf_decal/corner/opaque/yellow/mono, /obj/structure/closet/wall/white/directional/east, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration{ + pixel_y = 1 + }, /obj/item/storage/cans/sixbeer, /obj/item/storage/cans/sixbeer, /obj/effect/decal/cleanable/food/flour, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration{ + pixel_y = 1 + }, /turf/open/floor/plasteel/mono/white, /area/ship/crew/canteen) "jc" = ( @@ -1032,7 +1036,7 @@ /area/ship/crew/ccommons) "my" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /obj/structure/curtain/bounty, /obj/item/toy/plush/flushed, /turf/open/floor/carpet/green, @@ -1051,7 +1055,7 @@ /area/ship/hallway/central) "mE" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /obj/structure/curtain/bounty, /obj/item/toy/plush/carpplushie, /turf/open/floor/carpet/green, @@ -1621,7 +1625,7 @@ /turf/open/floor/plasteel/mono, /area/ship/cargo) "tg" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/corner_steel_grid{ dir = 9 }, @@ -1847,7 +1851,7 @@ "ws" = ( /obj/structure/curtain/bounty, /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /turf/open/floor/carpet/green, /area/ship/crew/dorm) "wS" = ( @@ -4078,7 +4082,7 @@ dir = 8 }, /obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "Wm" = ( @@ -4527,7 +4531,7 @@ "ZE" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/ship/engineering/engines/starboard) diff --git a/_maps/shuttles/independent/independent_rigger.dmm b/_maps/shuttles/independent/independent_rigger.dmm index 78053b7e5e8c..d87ae083832b 100644 --- a/_maps/shuttles/independent/independent_rigger.dmm +++ b/_maps/shuttles/independent/independent_rigger.dmm @@ -62,7 +62,7 @@ "bc" = ( /obj/structure/closet/cardboard, /obj/item/paicard, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating, /area/ship/maintenance/fore) "bi" = ( @@ -239,8 +239,8 @@ populate = 0 }, /obj/item/storage/cans/sixbeer, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/condiment/flour, /obj/item/reagent_containers/condiment/sugar, /obj/item/radio/intercom/directional/north, @@ -283,7 +283,7 @@ "eu" = ( /obj/structure/closet/crate, /obj/machinery/airalarm/directional/north, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating, /area/ship/maintenance/fore) "eF" = ( @@ -430,7 +430,7 @@ dir = 1 }, /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /obj/structure/curtain/bounty, /turf/open/floor/plasteel/grimy, /area/ship/crew/dorm) @@ -1102,7 +1102,7 @@ "nU" = ( /obj/machinery/light/directional/west, /obj/effect/turf_decal/corner/opaque/yellow/diagonal, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/plasteel/white, /area/ship/crew/canteen) "od" = ( @@ -1160,7 +1160,7 @@ /turf/open/floor/plasteel/white, /area/ship/crew/canteen) "oX" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/ship/maintenance/fore) "ph" = ( @@ -2463,7 +2463,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) "DG" = ( @@ -2616,7 +2616,7 @@ }, /obj/structure/closet/crate, /obj/machinery/firealarm/directional/west, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating, /area/ship/maintenance/port) "Fu" = ( @@ -3240,7 +3240,7 @@ /area/ship/medical) "Ne" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /obj/structure/curtain/bounty, /turf/open/floor/plasteel/grimy, /area/ship/crew/dorm) @@ -3552,7 +3552,7 @@ /area/ship/maintenance/central) "Qv" = ( /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel, /area/ship/construction) "QB" = ( @@ -3680,7 +3680,7 @@ }, /obj/structure/bed, /obj/structure/curtain/bounty, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/random, /turf/open/floor/plasteel/grimy, /area/ship/crew/dorm) "Sj" = ( @@ -3791,13 +3791,13 @@ dir = 1 }, /obj/structure/crate_shelf, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large{ pixel_x = 1; pixel_y = -3 @@ -3903,7 +3903,7 @@ /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, /obj/structure/closet/crate/bin, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/grimy, /area/ship/crew) "Ug" = ( diff --git a/_maps/shuttles/independent/independent_schmiedeberg.dmm b/_maps/shuttles/independent/independent_schmiedeberg.dmm index bf97b9b1a44b..3ae3915db4d3 100644 --- a/_maps/shuttles/independent/independent_schmiedeberg.dmm +++ b/_maps/shuttles/independent/independent_schmiedeberg.dmm @@ -167,7 +167,7 @@ /obj/machinery/door/window/brigdoor/northright{ dir = 2 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/turf_decal/siding/wood{ dir = 10 }, @@ -440,7 +440,7 @@ /area/ship/cargo) "fq" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/greenglow/filled, /obj/effect/turf_decal/siding/wood{ color = "#543C30"; @@ -462,7 +462,7 @@ /area/ship/engineering) "fM" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, @@ -1176,8 +1176,8 @@ /obj/machinery/door/poddoor/shutters/preopen{ id = "pharmlobby" }, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/mineral/titanium, /area/ship/cargo) "qj" = ( @@ -1222,7 +1222,7 @@ /area/ship/medical) "qU" = ( /obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/turf_decal/siding/wood{ color = "#543C30"; dir = 9 @@ -2360,7 +2360,7 @@ /obj/structure/rack, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/north, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /obj/machinery/door/window/brigdoor/northright{ dir = 8 }, @@ -2728,14 +2728,14 @@ /obj/structure/rack, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/north, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /obj/machinery/door/window/brigdoor/northright{ dir = 8 }, /obj/machinery/door/poddoor/shutters/preopen{ id = "pharmlobby" }, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/wood/walnut, /area/ship/cargo) "OO" = ( @@ -2977,7 +2977,7 @@ pixel_y = -32 }, /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/bounty, /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -3050,7 +3050,7 @@ /obj/item/flashlight/glowstick/blue, /obj/item/flashlight/glowstick/cyan, /obj/item/storage/pill_bottle/floorpill, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/turf_decal/siding/wood{ color = "#543C30"; dir = 1 @@ -3097,7 +3097,7 @@ dir = 8 }, /obj/item/storage/pill_bottle/zoom, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/machinery/door/poddoor/shutters/preopen{ id = "pharmlobby" }, @@ -3205,7 +3205,7 @@ /obj/machinery/door/window/brigdoor/northright{ dir = 2 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/turf_decal/siding/wood{ dir = 6 }, diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm index 8cdb3dfae61a..75784c301eda 100644 --- a/_maps/shuttles/independent/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -735,7 +735,7 @@ /turf/open/floor/plasteel/patterned, /area/ship/crew/janitor) "gd" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/corner/opaque/neutral/half{ dir = 4 }, @@ -3100,7 +3100,7 @@ /turf/open/floor/plating, /area/ship/hallway/port) "zr" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/corner/opaque/neutral/three_quarters{ dir = 8 }, @@ -4361,7 +4361,7 @@ "Li" = ( /obj/structure/bed, /obj/structure/curtain/bounty, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/random{ pixel_x = -32; @@ -4647,7 +4647,7 @@ "MS" = ( /obj/structure/bed, /obj/structure/curtain/bounty, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/plasteel/grimy, /area/ship/crew/dorm) "MT" = ( @@ -4676,7 +4676,7 @@ "Ni" = ( /obj/structure/bed, /obj/structure/curtain/bounty, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/random{ pixel_y = 32 @@ -4768,7 +4768,7 @@ "Ok" = ( /obj/structure/bed, /obj/structure/curtain/bounty, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, @@ -5423,9 +5423,9 @@ pixel_x = -5; pixel_y = 3 }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /obj/item/reagent_containers/food/drinks/waterbottle/large{ pixel_x = 1; diff --git a/_maps/shuttles/independent/independent_sunskipper.dmm b/_maps/shuttles/independent/independent_sunskipper.dmm index 12f34a8991ac..3edffc72acbc 100644 --- a/_maps/shuttles/independent/independent_sunskipper.dmm +++ b/_maps/shuttles/independent/independent_sunskipper.dmm @@ -1182,7 +1182,9 @@ /obj/structure/bed{ dir = 1 }, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms{ + dir = 1 + }, /obj/structure/curtain/cloth/grey, /obj/structure/cable/green{ icon_state = "1-2" diff --git a/_maps/shuttles/independent/independent_tranquility.dmm b/_maps/shuttles/independent/independent_tranquility.dmm index 0ecbfbe09e90..35b3044df741 100644 --- a/_maps/shuttles/independent/independent_tranquility.dmm +++ b/_maps/shuttles/independent/independent_tranquility.dmm @@ -1721,7 +1721,7 @@ /area/ship/hallway/starboard) "nr" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/cloth/grey, /obj/machinery/light/dim/directional/east, /obj/structure/sign/poster/contraband/gec{ @@ -4731,7 +4731,7 @@ "LT" = ( /obj/structure/bed, /obj/structure/curtain/cloth/grey, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood{ dir = 4 }, @@ -5755,7 +5755,7 @@ /area/ship/crew/hydroponics) "Tl" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/cloth/grey, /obj/machinery/light/dim/directional/east, /obj/structure/sign/poster/contraband/hacking_guide{ @@ -5891,7 +5891,7 @@ /obj/structure/bed, /obj/structure/curtain/cloth/grey, /obj/machinery/light/dim/directional/north, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/carpet/black, /area/ship/crew/dorm/dormthree) "Up" = ( @@ -6197,10 +6197,10 @@ "WS" = ( /obj/machinery/light/dim/directional/north, /obj/structure/closet/crate/hydroponics, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/food_or_drink/seed, +/obj/effect/spawner/lootdrop/seeded, +/obj/effect/spawner/lootdrop/seeded, +/obj/effect/spawner/lootdrop/seeded, +/obj/effect/spawner/lootdrop/seeded, /obj/item/seeds/random, /turf/open/floor/grass, /area/ship/crew/hydroponics) diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm index e6542ff6a355..70f32bfb60f2 100644 --- a/_maps/shuttles/inteq/inteq_colossus.dmm +++ b/_maps/shuttles/inteq/inteq_colossus.dmm @@ -228,8 +228,8 @@ locked = 0; name = "fridge" }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -856,7 +856,7 @@ /turf/open/floor/plating, /area/ship/maintenance/port) "iT" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/trimline/opaque/yellow/line, /obj/effect/turf_decal/siding/thinplating, /obj/structure/cable, @@ -1632,16 +1632,16 @@ dir = 1 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, @@ -2537,7 +2537,7 @@ }, /obj/structure/closet/cardboard, /obj/item/radio/intercom/directional/south, -/obj/effect/spawner/random/maintenance/seven, +/obj/effect/spawner/lootdrop/maintenance/seven, /obj/effect/turf_decal/corner_techfloor_gray{ dir = 4 }, @@ -3652,7 +3652,7 @@ /obj/structure/closet/crate/trashcart, /obj/machinery/airalarm/directional/east, /obj/machinery/firealarm/directional/south, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/corner_techfloor_gray{ dir = 4 }, @@ -4494,7 +4494,7 @@ /turf/open/floor/carpet/black, /area/ship/crew) "XS" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/trimline/opaque/yellow/line, /obj/effect/turf_decal/siding/thinplating, /obj/machinery/airalarm/directional/south, diff --git a/_maps/shuttles/inteq/inteq_hound.dmm b/_maps/shuttles/inteq/inteq_hound.dmm index b0c1bdfb8171..c6f9e34a653d 100644 --- a/_maps/shuttles/inteq/inteq_hound.dmm +++ b/_maps/shuttles/inteq/inteq_hound.dmm @@ -27,8 +27,8 @@ locked = 0; name = "fridge" }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /obj/item/reagent_containers/food/snacks/icecreamsandwich, /obj/machinery/light/directional/south, @@ -2043,11 +2043,11 @@ dir = 4 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /turf/open/floor/plasteel/patterned/cargo_one, diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm index b322c45ea99b..5df5060f6f06 100644 --- a/_maps/shuttles/inteq/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -888,12 +888,12 @@ /area/ship/maintenance/starboard) "fN" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ship/maintenance/port) "fU" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ship/storage/port) "fX" = ( @@ -948,7 +948,7 @@ "gm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ship/storage/starboard) "go" = ( @@ -1262,7 +1262,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/item/cigbutt, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ship/storage/starboard) "im" = ( @@ -1640,7 +1640,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance/starboard) "kD" = ( @@ -2132,7 +2132,7 @@ /area/ship/storage) "nF" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/storage/port) "nH" = ( @@ -2345,7 +2345,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/closet/cardboard, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating/airless, /area/ship/maintenance/starboard) "oR" = ( @@ -2484,8 +2484,8 @@ name = "fridge" }, /obj/item/storage/cans/sixbeer, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/snacks/popsicle/creamsicle_orange, /obj/item/reagent_containers/food/snacks/popsicle/creamsicle_orange, /obj/item/radio/intercom/directional/north, @@ -2636,7 +2636,7 @@ "qp" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance/port) "qr" = ( @@ -2879,7 +2879,7 @@ /area/ship/security) "rN" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance/starboard) "rP" = ( @@ -3028,7 +3028,7 @@ /area/ship/maintenance/port) "sD" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/turf_decal/industrial/warning{ dir = 4 }, @@ -3041,7 +3041,7 @@ /obj/effect/turf_decal/corner/opaque/brown{ dir = 4 }, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/machinery/camera/autoname, /obj/machinery/status_display/shuttle{ pixel_y = 32 @@ -4081,7 +4081,7 @@ /area/ship/maintenance/port) "zg" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance/port) "zh" = ( @@ -4159,7 +4159,7 @@ "zB" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate/trashcart, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ship/storage/port) "zE" = ( @@ -4237,7 +4237,7 @@ "Aa" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/storage/port) "Ag" = ( @@ -4499,7 +4499,7 @@ /area/ship/crew/canteen) "BN" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/storage/starboard) "BP" = ( @@ -4545,7 +4545,7 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "Cp" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/structure/sign/poster/contraband/inteq{ pixel_x = 32 }, @@ -5212,7 +5212,7 @@ icon_state = "1-8" }, /obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance/starboard) "GR" = ( @@ -5286,7 +5286,7 @@ "Ho" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/storage/starboard) "Hp" = ( @@ -5522,7 +5522,7 @@ /turf/open/floor/engine/vacuum, /area/ship/engineering/engine) "Jk" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ship/maintenance/starboard) "Jo" = ( @@ -6161,7 +6161,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ship/storage/port) "NK" = ( @@ -6308,7 +6308,7 @@ "OP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance/port) "Pf" = ( @@ -6360,7 +6360,7 @@ /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/structure/closet/crate, /turf/open/floor/plating/airless, /area/ship/storage/starboard) @@ -6635,7 +6635,7 @@ /area/ship/hallway/central) "Ri" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance/port) "Rp" = ( @@ -6717,7 +6717,7 @@ /obj/machinery/light/small/directional/north, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/plasma, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/ship/maintenance/port) "RY" = ( @@ -6888,7 +6888,7 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "SS" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/machinery/airalarm/directional/east, /turf/open/floor/plasteel/grimy, /area/ship/crew) @@ -7105,11 +7105,11 @@ /obj/structure/closet/crate{ name = "food crate" }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, @@ -7146,7 +7146,7 @@ /area/ship/storage/starboard) "Uy" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/storage/port) "UD" = ( @@ -7684,7 +7684,7 @@ /area/ship/maintenance/starboard) "YZ" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance/starboard) "Zb" = ( @@ -7883,7 +7883,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/cardboard, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating/airless, /area/ship/storage/port) "ZY" = ( diff --git a/_maps/shuttles/inteq/inteq_valor.dmm b/_maps/shuttles/inteq/inteq_valor.dmm index 994041639613..00b25f936eab 100644 --- a/_maps/shuttles/inteq/inteq_valor.dmm +++ b/_maps/shuttles/inteq/inteq_valor.dmm @@ -92,7 +92,7 @@ }, /obj/effect/turf_decal/box/corners, /obj/structure/rack, -/obj/effect/spawner/random/maintenance/five, +/obj/effect/spawner/lootdrop/maintenance/five, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "bv" = ( @@ -586,9 +586,9 @@ /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/ration/crayons, /obj/effect/turf_decal/box/corners{ dir = 8 @@ -1491,7 +1491,7 @@ /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 5 }, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) @@ -2691,8 +2691,8 @@ dir = 1 }, /obj/item/reagent_containers/food/snacks/hotdog, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) "yu" = ( @@ -4647,7 +4647,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/food_or_drink/donut, +/obj/effect/spawner/lootdrop/donut, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) "Qn" = ( @@ -5393,7 +5393,7 @@ /obj/effect/turf_decal/trimline/opaque/yellow/line{ dir = 4 }, -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/directional/east, /turf/open/floor/plasteel/patterned/grid, diff --git a/_maps/shuttles/inteq/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm index cd79d41cc9cc..9ea8b60d9b89 100644 --- a/_maps/shuttles/inteq/inteq_vaquero.dmm +++ b/_maps/shuttles/inteq/inteq_vaquero.dmm @@ -1520,16 +1520,16 @@ dir = 1 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, @@ -3217,7 +3217,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "XG" = ( @@ -3252,8 +3252,8 @@ name = "fridge" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /obj/item/storage/cans/sixbeer, /obj/item/reagent_containers/food/snacks/carneburrito, /obj/effect/turf_decal/corner/opaque/yellow{ diff --git a/_maps/shuttles/minutemen/minutemen_atlas.dmm b/_maps/shuttles/minutemen/minutemen_atlas.dmm index 1b9d5dc2dffb..325069e91a6e 100644 --- a/_maps/shuttles/minutemen/minutemen_atlas.dmm +++ b/_maps/shuttles/minutemen/minutemen_atlas.dmm @@ -3749,11 +3749,11 @@ /obj/structure/closet/secure_closet/freezer/fridge/open{ populate = 0 }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm index f4643679b3d0..0d57e0ca165a 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm @@ -252,11 +252,11 @@ }, /obj/structure/closet/crate, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "bd" = ( @@ -497,7 +497,7 @@ /turf/open/floor/plating, /area/ship/engineering) "cm" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/dark, /area/ship/hallway/central) @@ -1089,8 +1089,8 @@ dir = 1; pixel_y = -32 }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /turf/open/floor/plasteel, /area/ship/crew) diff --git a/_maps/shuttles/nanotrasen/nanotrasen_gecko.dmm b/_maps/shuttles/nanotrasen/nanotrasen_gecko.dmm index 1e65ca7f3773..2cb4e641cd53 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_gecko.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_gecko.dmm @@ -130,7 +130,7 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/aft) "bh" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/ship/maintenance/fore) @@ -246,7 +246,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/ship/maintenance/fore) "cj" = ( @@ -319,7 +319,7 @@ /turf/open/floor/plating, /area/ship/maintenance/fore) "cP" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -357,7 +357,7 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/maintenance/fore) "dp" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -435,7 +435,7 @@ /turf/open/floor/plasteel, /area/ship/cargo/starboard) "ej" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/borderfloor, /obj/structure/extinguisher_cabinet/directional/west, @@ -559,7 +559,7 @@ /turf/open/floor/engine/hull, /area/ship/external) "eQ" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -658,7 +658,7 @@ /area/ship/engineering/atmospherics) "ga" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/bounty, /obj/structure/window/reinforced{ dir = 4 @@ -676,7 +676,7 @@ /turf/open/floor/plating, /area/ship/engineering/engine) "gf" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, @@ -696,7 +696,7 @@ /turf/open/floor/plasteel/patterned, /area/ship/cargo/port) "gh" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/structure/cable{ icon_state = "1-2" }, @@ -712,7 +712,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 @@ -776,7 +776,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/turf_decal/industrial/warning, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -815,7 +815,7 @@ /area/ship/crew) "hA" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel/patterned, /area/ship/cargo/port) "hL" = ( @@ -907,7 +907,7 @@ /turf/open/floor/engine/airless, /area/ship/engineering/engine) "iJ" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel/patterned, /area/ship/cargo/starboard) "iK" = ( @@ -931,7 +931,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/port) @@ -944,9 +944,9 @@ /area/ship/bridge) "jc" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/radio/intercom/directional/east, /turf/open/floor/plasteel/grimy, /area/ship/crew) @@ -1144,13 +1144,13 @@ /area/ship/engineering/engine) "lb" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/bounty, /turf/open/floor/plasteel/grimy, /area/ship/crew) "lE" = ( /obj/effect/turf_decal/box/corners, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/starboard) "lM" = ( @@ -1176,7 +1176,7 @@ /area/ship/hallway/central) "lT" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/structure/cable{ icon_state = "1-2" }, @@ -1219,7 +1219,7 @@ /area/ship/cargo/port) "mb" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/starboard) "mm" = ( @@ -1402,7 +1402,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -1418,10 +1418,10 @@ /obj/item/reagent_containers/food/snacks/canned/beans, /obj/item/reagent_containers/food/snacks/canned/beans, /obj/structure/closet/crate, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/patterned, /area/ship/storage) "oR" = ( @@ -1579,7 +1579,7 @@ /area/ship/storage) "qn" = ( /obj/machinery/power/apc/auto_name/directional/west, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "0-4" @@ -1604,7 +1604,7 @@ /turf/open/floor/plating, /area/ship/maintenance/port) "qu" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/fore) @@ -1684,12 +1684,12 @@ /obj/effect/turf_decal/box/corners{ dir = 1 }, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/port) "qY" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 6 @@ -1955,7 +1955,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, @@ -2078,7 +2078,7 @@ icon_state = "1-8" }, /obj/machinery/light/small/directional/south, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -2113,7 +2113,7 @@ /turf/open/floor/plasteel/patterned, /area/ship/storage) "vi" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/ship/maintenance/fore) "vl" = ( @@ -2158,7 +2158,7 @@ /turf/open/floor/plastic, /area/ship/crew/toilet) "vG" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/effect/turf_decal/borderfloor{ dir = 1 }, @@ -2267,7 +2267,7 @@ /turf/open/floor/plasteel/tech, /area/ship/engineering/communications) "wP" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/effect/turf_decal/industrial/outline/yellow, /turf/open/floor/plasteel, /area/ship/cargo/port) @@ -2294,7 +2294,7 @@ /turf/open/floor/plating, /area/ship/engineering/engine) "xd" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, @@ -2336,7 +2336,7 @@ /area/ship/cargo/port) "xG" = ( /obj/item/radio/intercom/directional/north, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/effect/turf_decal/industrial/outline/yellow, /turf/open/floor/plasteel, /area/ship/cargo/port) @@ -2397,7 +2397,7 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plasteel/stairs{ dir = 1 }, @@ -2453,7 +2453,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plasteel/stairs, /area/ship/maintenance/port) "yG" = ( @@ -2524,7 +2524,7 @@ /turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "zv" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/ntspaceworks_big/six{ dir = 4 @@ -2637,7 +2637,7 @@ /turf/open/floor/plasteel/tech/techmaint, /area/ship/engineering/engine) "AD" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -2684,7 +2684,7 @@ "AN" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel, /area/ship/cargo/starboard) "AW" = ( @@ -2729,7 +2729,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/crew) "BM" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 4 }, @@ -2752,7 +2752,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/structure/cable{ icon_state = "4-8" }, @@ -2761,7 +2761,7 @@ "Cc" = ( /obj/machinery/light/directional/west, /obj/effect/turf_decal/industrial/warning, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, @@ -3080,7 +3080,7 @@ /obj/effect/turf_decal/box/corners{ dir = 8 }, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/starboard) @@ -3345,14 +3345,14 @@ /area/ship/bridge) "HK" = ( /obj/machinery/light/directional/north, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/effect/turf_decal/borderfloor{ dir = 1 }, /turf/open/floor/plasteel, /area/ship/hallway/aft) "HN" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/port) "HT" = ( @@ -3437,7 +3437,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/ship/maintenance/starboard) "Is" = ( @@ -3543,7 +3543,7 @@ "Jk" = ( /obj/effect/turf_decal/industrial/outline/yellow, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel, /area/ship/cargo/starboard) "Jn" = ( @@ -3568,7 +3568,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/ship/maintenance/fore) "JL" = ( @@ -3739,7 +3739,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ dir = 9 }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/ship/engineering/engine) "LK" = ( @@ -3771,7 +3771,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/sign/warning/electricshock{ pixel_y = 32 @@ -3875,7 +3875,7 @@ /area/ship/hallway/aft) "Nz" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/port) "NC" = ( @@ -3944,7 +3944,7 @@ /obj/effect/turf_decal/arrows{ dir = 1 }, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/structure/cable{ icon_state = "4-8" }, @@ -3970,7 +3970,7 @@ /area/ship/external) "OZ" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/ship/engineering/engine) "Pc" = ( @@ -4080,7 +4080,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/fore) @@ -4160,7 +4160,7 @@ /obj/effect/turf_decal/box/corners{ dir = 4 }, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/starboard) "Qz" = ( @@ -4243,7 +4243,7 @@ /obj/effect/turf_decal/box/corners{ dir = 8 }, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/starboard) @@ -4318,7 +4318,7 @@ "Sa" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/industrial/warning, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/structure/cable{ icon_state = "2-8" }, @@ -4340,7 +4340,7 @@ /obj/effect/turf_decal/borderfloor{ dir = 1 }, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel, /area/ship/hallway/aft) "Sl" = ( @@ -4382,7 +4382,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -4401,7 +4401,7 @@ /area/ship/cargo/port) "SK" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 4 @@ -4416,7 +4416,7 @@ /turf/open/floor/plating, /area/ship/maintenance/fore) "SQ" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/ship/engineering/engine) "SV" = ( @@ -4482,7 +4482,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, @@ -4527,7 +4527,7 @@ /obj/effect/turf_decal/box/corners{ dir = 1 }, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/port) @@ -4571,7 +4571,7 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/hallway/central) "UC" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, @@ -4642,7 +4642,7 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/ship/maintenance/port) @@ -4704,7 +4704,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo/port) "Vz" = ( @@ -4845,7 +4845,7 @@ /area/ship/cargo/port) "Wo" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/ship/maintenance/port) "Wq" = ( @@ -5106,7 +5106,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/sign/warning/electricshock{ pixel_y = -32 @@ -5248,7 +5248,7 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) "ZS" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/industrial/outline/yellow, /obj/machinery/button/ignition/incinerator/atmos{ dir = 4; @@ -5265,7 +5265,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/crew) "ZY" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel/patterned, /area/ship/cargo/starboard) diff --git a/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm b/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm index 3ddabcf1253c..72bd430d743b 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm @@ -1370,11 +1370,11 @@ /obj/structure/closet/crate{ name = "food crate" }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /obj/machinery/light/directional/west, /turf/open/floor/plasteel/patterned, @@ -5012,7 +5012,7 @@ /turf/open/floor/plasteel/white, /area/ship/medical) "BO" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, /turf/open/floor/plasteel, /area/ship/hallway/central) @@ -7448,7 +7448,7 @@ /turf/open/floor/plasteel/mono, /area/ship/hallway/central) "OD" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/machinery/light/directional/south, /obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm index 1a07763671e5..a02ec78fc9e6 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, @@ -807,7 +807,7 @@ /area/ship/science/robotics) "dq" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood{ dir = 10 }, @@ -1740,7 +1740,10 @@ /turf/open/floor/plasteel/dark, /area/ship/bridge) "hn" = ( -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = 5; + pixel_y = 9 + }, /obj/effect/decal/cleanable/plastic, /obj/machinery/atmospherics/pipe/simple/purple/hidden, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -1886,7 +1889,7 @@ /area/ship/crew/dorm/dormtwo) "hM" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood{ dir = 6 }, @@ -2449,7 +2452,7 @@ /obj/effect/turf_decal/trimline/opaque/blue/line{ dir = 9 }, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/machinery/light/directional/west, /obj/machinery/light_switch{ pixel_y = 22; @@ -4832,7 +4835,7 @@ /area/ship/medical) "sr" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood{ dir = 9 }, @@ -6160,14 +6163,14 @@ /area/ship/bridge) "wq" = ( /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/turf_decal/corner_techfloor_gray/diagonal{ dir = 8 }, /obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/effect/spawner/random/maintenance/five, +/obj/effect/spawner/lootdrop/maintenance/five, /obj/item/radio/intercom/directional/east, /turf/open/floor/plasteel/dark, /area/ship/storage) @@ -6913,9 +6916,9 @@ dir = 10 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance, -/obj/effect/spawner/random/clothing/gloves, -/obj/effect/spawner/random/clothing/beret_or_rabbitears, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/gloves, +/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears, /obj/effect/decal/cleanable/vomit/old, /turf/open/floor/plasteel/dark, /area/ship/storage) @@ -7719,7 +7722,7 @@ /area/ship/crew/canteen) "CP" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood{ dir = 4 }, @@ -8990,7 +8993,7 @@ /obj/effect/turf_decal/trimline/opaque/beige/filled/line{ dir = 10 }, -/obj/effect/spawner/random/salvage/half, +/obj/effect/spawner/lootdrop/salvage_50, /obj/structure/cable{ icon_state = "1-2" }, @@ -10461,7 +10464,7 @@ /obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/small/directional/west, /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/get_your_legs{ @@ -10960,7 +10963,7 @@ /area/ship/engineering/atmospherics) "OR" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood{ dir = 8 }, @@ -11572,8 +11575,8 @@ dir = 9 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/ship/storage) @@ -11810,7 +11813,7 @@ /area/ship/hangar) "Sz" = ( /obj/structure/bed, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/effect/turf_decal/siding/wood{ dir = 5 }, @@ -11886,7 +11889,7 @@ dir = 5 }, /obj/item/toy/plush/beeplushie, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable{ icon_state = "0-8" diff --git a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm index 2f1d3b060077..95b61c204b54 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm @@ -240,9 +240,9 @@ icon_state = "crateopen"; opened = 1 }, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/clothing/gloves, +/obj/effect/spawner/lootdrop/gloves, /turf/open/floor/plasteel/dark, /area/ship/cargo) "aF" = ( @@ -576,9 +576,9 @@ dir = 4 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/plasteel/dark, /area/ship/cargo) "bX" = ( @@ -2000,7 +2000,7 @@ /turf/open/floor/plasteel, /area/ship/crew/canteen/kitchen) "pF" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/corner/transparent/bar/diagonal, /obj/machinery/light/directional/east, /obj/effect/decal/cleanable/dirt/dust, @@ -2172,8 +2172,8 @@ /obj/effect/turf_decal/ntspaceworks_big/two, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate, -/obj/effect/spawner/random/medical/surgery_tool/common, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/tool_surgery_common, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/dark, /area/ship/cargo) "uk" = ( @@ -2520,8 +2520,8 @@ /obj/effect/decal/cleanable/oil, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/spawner/random/medical/prosthetic, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/lootdrop/random_prosthetic, /turf/open/floor/plasteel/dark, /area/ship/cargo) "Ai" = ( @@ -2683,7 +2683,7 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt/dust, /obj/item/radio/intercom/directional/east, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/item/extinguisher/mini, /turf/open/floor/plasteel/dark, /area/ship/cargo) @@ -2846,7 +2846,7 @@ dir = 8 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /obj/effect/decal/cleanable/dirt/dust, /obj/item/spacecash/bundle/pocketchange, /turf/open/floor/plasteel/dark, @@ -3064,7 +3064,7 @@ /turf/open/floor/plasteel/dark, /area/ship/cargo) "La" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/corner/transparent/bar/diagonal, /obj/machinery/light/broken/directional/east, /obj/effect/decal/cleanable/dirt/dust, @@ -3701,11 +3701,11 @@ "Zf" = ( /obj/effect/turf_decal/corner/transparent/bar/diagonal, /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration{ +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration{ pixel_x = 7 }, -/obj/effect/spawner/random/food_or_drink/ration{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = -8 }, /obj/machinery/button/door{ diff --git a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm index 25b3bb0a0c83..f749f60f7e52 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm @@ -50,7 +50,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/techfloor/orange, /turf/open/floor/plasteel/tech/grid, @@ -876,7 +876,7 @@ /area/ship/engineering) "fd" = ( /obj/structure/table/wood/reinforced, -/obj/effect/spawner/random/food_or_drink/ration{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = 5; pixel_y = 5 }, @@ -908,7 +908,7 @@ pixel_x = -5; pixel_y = -7 }, -/obj/effect/spawner/random/food_or_drink/ration{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = 6; pixel_y = 11 }, @@ -1035,7 +1035,7 @@ /obj/structure/railing{ dir = 8 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/port) @@ -1412,7 +1412,7 @@ /turf/open/floor/plasteel/white, /area/ship/medical) "hZ" = ( -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, @@ -1441,7 +1441,7 @@ /obj/structure/railing/corner{ dir = 1 }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -2092,7 +2092,7 @@ dir = 6 }, /obj/structure/railing, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, @@ -2117,7 +2117,7 @@ /turf/open/floor/plating, /area/ship/engineering/atmospherics) "lW" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/port) @@ -2330,7 +2330,7 @@ /area/ship/security/prison) "nk" = ( /obj/structure/railing, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, @@ -2745,12 +2745,12 @@ /area/ship/engineering/electrical) "pV" = ( /obj/structure/railing, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/port) "pY" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/siding/red{ dir = 4 }, @@ -2956,7 +2956,7 @@ /obj/structure/railing{ dir = 9 }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -3258,7 +3258,7 @@ /obj/structure/railing{ dir = 1 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/tech/grid, /area/ship/maintenance/starboard) @@ -3321,7 +3321,7 @@ icon_state = "5-8" }, /obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/techfloor/orange, @@ -4610,7 +4610,7 @@ /obj/structure/railing/corner{ dir = 4 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/techfloor/orange{ @@ -4726,7 +4726,7 @@ /obj/structure/window/reinforced/tinted/frosted{ dir = 8 }, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/curtain/cloth/grey, /obj/machinery/light_switch{ dir = 8; @@ -4851,7 +4851,7 @@ /area/ship/crew/canteen) "Dh" = ( /obj/structure/table/wood, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel, /area/ship/security/prison) "Dj" = ( @@ -5222,7 +5222,7 @@ /obj/item/canvas/twentythreeXtwentythree, /obj/structure/closet/crate/trashcart, /obj/item/paint/anycolor, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/sprayweb, /turf/open/floor/plating, @@ -5644,7 +5644,7 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/ship/hallway/central) "GZ" = ( -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plating, /area/ship/maintenance/fore) "Ha" = ( @@ -5657,7 +5657,7 @@ /obj/structure/railing{ dir = 1 }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/engineering) @@ -5752,7 +5752,7 @@ /obj/structure/railing{ dir = 1 }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -6434,7 +6434,7 @@ dir = 4 }, /obj/structure/curtain/cloth/grey, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/wood, /area/ship/crew/dorm) "Lt" = ( @@ -6870,7 +6870,7 @@ /obj/structure/railing{ dir = 1 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -7102,7 +7102,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/maintenance/starboard) "PC" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/siding/red{ dir = 4 }, @@ -7467,7 +7467,7 @@ /obj/structure/railing{ dir = 6 }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/port) @@ -7713,7 +7713,7 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/crew/dorm/dormthree) "Ti" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/railing{ dir = 9 @@ -7737,7 +7737,7 @@ /obj/structure/railing{ dir = 4 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ship/maintenance/port) @@ -8532,7 +8532,7 @@ /area/ship/engineering/atmospherics) "XY" = ( /obj/structure/table/wood, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/spline/plain/opaque/blue, /turf/open/floor/plasteel, /area/ship/security/prison) diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm index 5d181bcf584c..f50061aaa28f 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -1137,7 +1137,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/firealarm/directional/east, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/decal/cleanable/plasma, /turf/open/floor/plating, /area/ship/maintenance/port) @@ -3923,7 +3923,7 @@ /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "EP" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "Ff" = ( @@ -4272,7 +4272,7 @@ id = "Ranger_Port_maint_shut"; req_ship_access = 1 }, -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /turf/open/floor/plating, /area/ship/maintenance/port) "Ih" = ( @@ -5558,11 +5558,11 @@ /obj/effect/turf_decal/techfloor{ dir = 5 }, -/obj/effect/spawner/random/lpaid{ +/obj/effect/spawner/lootdrop/lpaid{ pixel_x = 2; pixel_y = -2 }, -/obj/effect/spawner/random/lpretrieval{ +/obj/effect/spawner/lootdrop/lpretrieval{ pixel_x = -10; pixel_y = 10 }, diff --git a/_maps/shuttles/pgf/pgf_crying_sun.dmm b/_maps/shuttles/pgf/pgf_crying_sun.dmm index ca6e86f10345..933d8f7fbfe0 100644 --- a/_maps/shuttles/pgf/pgf_crying_sun.dmm +++ b/_maps/shuttles/pgf/pgf_crying_sun.dmm @@ -2667,7 +2667,7 @@ /obj/effect/turf_decal/trimline/opaque/bottlegreen/filled/corner{ dir = 8 }, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/machinery/light/directional/east, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) @@ -2935,7 +2935,7 @@ /obj/effect/turf_decal/trimline/opaque/bottlegreen/filled/line{ dir = 1 }, -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) "zc" = ( @@ -6330,10 +6330,10 @@ /obj/item/storage/ration/vegan_chili, /obj/item/storage/ration/beef_strips, /obj/item/storage/ration/beef_strips, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /turf/open/floor/plasteel/white, /area/ship/crew/canteen) diff --git a/_maps/shuttles/pirate/pirate_libertatia.dmm b/_maps/shuttles/pirate/pirate_libertatia.dmm index 2890fa5ba815..46d00806edd7 100644 --- a/_maps/shuttles/pirate/pirate_libertatia.dmm +++ b/_maps/shuttles/pirate/pirate_libertatia.dmm @@ -842,8 +842,8 @@ /area/ship/crew) "AL" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/item/radio/intercom/directional/north, /obj/item/lighter{ @@ -876,8 +876,8 @@ /turf/open/floor/plasteel/grimy, /area/ship/crew) "Bw" = ( -/obj/effect/spawner/random/clothing/pirate_or_bandana, -/obj/effect/spawner/random/clothing/pirate_or_bandana, +/obj/effect/spawner/lootdrop/minor/pirate_or_bandana, +/obj/effect/spawner/lootdrop/minor/pirate_or_bandana, /obj/effect/decal/cleanable/dirt/dust, /obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/jackboots, @@ -1569,12 +1569,12 @@ name = "food crate" }, /obj/item/storage/cans/sixbeer, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, diff --git a/_maps/shuttles/pirate/pirate_tortuga.dmm b/_maps/shuttles/pirate/pirate_tortuga.dmm index 35387ea53cd5..3e48d25a962c 100644 --- a/_maps/shuttles/pirate/pirate_tortuga.dmm +++ b/_maps/shuttles/pirate/pirate_tortuga.dmm @@ -158,7 +158,7 @@ /turf/open/floor/plating, /area/ship/maintenance/starboard) "bR" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /turf/open/floor/plating/airless, /area/ship/maintenance) "cb" = ( @@ -555,7 +555,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "gG" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/decal/cleanable/glass, /turf/open/floor/plating/airless, /area/ship/maintenance) @@ -918,7 +918,7 @@ /turf/open/floor/mineral/plastitanium, /area/ship/security/armory) "kp" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/structure/cable/yellow{ icon_state = "4-8" }, @@ -928,7 +928,7 @@ }, /area/ship/maintenance) "kv" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/ship/maintenance) @@ -942,7 +942,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance) "la" = ( @@ -977,7 +977,7 @@ /turf/open/floor/plasteel/tech/techmaint, /area/ship/cargo) "li" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/ship/maintenance) @@ -1022,7 +1022,7 @@ /turf/open/floor/mineral/plastitanium, /area/ship/security/armory) "mf" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/structure/cable/yellow{ icon_state = "5-9" }, @@ -1297,8 +1297,8 @@ /turf/open/floor/plasteel, /area/ship/crew/canteen) "oK" = ( -/obj/effect/spawner/random/trash/grille_or_waste, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/grille_or_trash, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/ship/maintenance) @@ -1391,7 +1391,7 @@ /turf/closed/wall, /area/ship/crew/canteen) "qi" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/crayon{ icon_state = "med" @@ -1448,7 +1448,7 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless{ icon_state = "plating_rust" @@ -1546,7 +1546,7 @@ /turf/open/floor/plasteel, /area/ship/crew/canteen) "ti" = ( -/obj/effect/spawner/random/food_or_drink/donut, +/obj/effect/spawner/lootdrop/donut, /turf/open/floor/plating/airless{ icon_state = "plating_rust" }, @@ -1577,7 +1577,7 @@ dir = 1 }, /obj/structure/curtain/cloth, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/carpet, /area/ship/crew) @@ -1936,7 +1936,7 @@ /turf/open/floor/plasteel, /area/ship/crew/canteen) "yc" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/ship/maintenance) @@ -2051,7 +2051,7 @@ "Ar" = ( /obj/structure/bed, /obj/structure/curtain/cloth, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /turf/open/floor/carpet, /area/ship/crew) "Av" = ( @@ -2072,7 +2072,7 @@ /turf/open/floor/plasteel, /area/ship/crew) "AG" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless, /area/ship/maintenance) "AQ" = ( @@ -2199,7 +2199,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless{ icon_state = "plating_rust" @@ -2233,7 +2233,7 @@ dir = 1 }, /obj/structure/curtain/cloth, -/obj/effect/spawner/random/bedsheet, +/obj/item/bedsheet/dorms, /obj/machinery/airalarm/directional/north, /turf/open/floor/carpet, /area/ship/crew) @@ -2255,7 +2255,7 @@ /turf/open/floor/plating/airless, /area/ship/maintenance) "Eb" = ( -/obj/effect/spawner/random/trash/decal, +/obj/effect/spawner/lootdrop/waste/trash, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless{ icon_state = "plating_rust" @@ -2820,9 +2820,9 @@ /area/ship/crew/canteen) "Lb" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/siding/wideplating{ dir = 5 }, @@ -2998,7 +2998,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless{ icon_state = "plating_rust" @@ -3216,7 +3216,7 @@ /turf/open/floor/plasteel/white, /area/ship/crew/canteen) "Pb" = ( -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless{ icon_state = "platingdmg1" }, @@ -3309,7 +3309,7 @@ /turf/open/floor/plasteel/mono, /area/ship/cargo) "QM" = ( -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /obj/structure/closet/cardboard, /turf/open/floor/plating/airless, /area/ship/maintenance) @@ -3358,7 +3358,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/spawner/random/trash/grille_or_waste, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating/airless{ icon_state = "plating_rust" }, @@ -4044,7 +4044,7 @@ /turf/open/floor/plating, /area/ship/cargo) "YU" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless{ icon_state = "plating_rust" diff --git a/_maps/shuttles/solgov/solgov_inkwell.dmm b/_maps/shuttles/solgov/solgov_inkwell.dmm index 8ed63dcfac50..0a63ed263799 100644 --- a/_maps/shuttles/solgov/solgov_inkwell.dmm +++ b/_maps/shuttles/solgov/solgov_inkwell.dmm @@ -2536,7 +2536,7 @@ /obj/effect/turf_decal/industrial/stand_clear{ dir = 1 }, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/mono, /area/ship/cargo) "qw" = ( @@ -2645,7 +2645,7 @@ /turf/open/floor/plasteel/mono, /area/ship/cargo) "rm" = ( -/obj/effect/spawner/random/structure/crate_abandoned, +/obj/effect/spawner/lootdrop/crate_spawner, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 }, @@ -2862,7 +2862,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/mono, /area/ship/cargo) "sn" = ( @@ -5208,7 +5208,7 @@ /obj/structure/closet/crate, /obj/effect/turf_decal/techfloor, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/tech/grid, /area/ship/storage) "GN" = ( @@ -5450,7 +5450,7 @@ /turf/open/floor/plasteel/mono, /area/ship/cargo) "IC" = ( -/obj/effect/spawner/random/structure/crate_abandoned, +/obj/effect/spawner/lootdrop/crate_spawner, /obj/machinery/light/small/directional/east, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/tech/grid, @@ -5613,7 +5613,7 @@ dir = 1 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/mono, /area/ship/cargo) "JN" = ( @@ -6128,7 +6128,7 @@ /area/ship/crew/canteen/kitchen) "Nj" = ( /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/mono, /area/ship/cargo) "Np" = ( @@ -6776,7 +6776,7 @@ /area/ship/bridge) "RS" = ( /obj/structure/closet/cardboard, -/obj/effect/spawner/random/maintenance/three, +/obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plasteel/mono, /area/ship/cargo) "RX" = ( diff --git a/_maps/shuttles/subshuttles/independent_sugarcube.dmm b/_maps/shuttles/subshuttles/independent_sugarcube.dmm index ad9ef66d3d5d..0504142f55b3 100644 --- a/_maps/shuttles/subshuttles/independent_sugarcube.dmm +++ b/_maps/shuttles/subshuttles/independent_sugarcube.dmm @@ -56,8 +56,8 @@ /turf/open/floor/plating, /area/ship/engineering) "h" = ( -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/trash/cheesie, /obj/item/trash/cheesie, /obj/item/trash/candy, @@ -259,8 +259,8 @@ /obj/item/circuitboard/machine/autolathe, /obj/item/pickaxe/improvised, /obj/item/pickaxe/improvised, -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/spawner/random/decoration/glowstick, +/obj/effect/spawner/lootdrop/glowstick, +/obj/effect/spawner/lootdrop/glowstick, /obj/machinery/power/terminal{ dir = 8 }, diff --git a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm index 71019ff4131e..253a82277fdf 100644 --- a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm +++ b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm @@ -849,9 +849,9 @@ /obj/structure/railing{ dir = 4 }, -/obj/effect/spawner/random/maintenance/five, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/maintenance/five, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /obj/item/stack/marker_beacon/thirty, /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm index 711a9f2033ae..4aafbcf9dc72 100644 --- a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm @@ -222,12 +222,12 @@ name = "food crate" }, /obj/item/storage/cans/sixbeer, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/industrial/outline, /turf/open/floor/plasteel/mono/dark, /area/ship/cargo) @@ -1284,8 +1284,8 @@ /area/ship/security/armory) "wO" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /obj/effect/turf_decal/corner/transparent/bar{ dir = 1 }, diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm index 6b63e3626a88..fedc993738bd 100644 --- a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm @@ -998,7 +998,7 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) "jD" = ( -/obj/effect/spawner/random/salvage_capacitor, +/obj/effect/spawner/lootdrop/salvage_capacitor, /obj/effect/decal/cleanable/shreds, /obj/structure/cable{ icon_state = "4-8" @@ -1461,7 +1461,7 @@ dir = 9 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/effect/turf_decal/box, /obj/machinery/camera/autoname{ dir = 10 @@ -2009,7 +2009,7 @@ dir = 4 }, /obj/machinery/light/dim/directional/north, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) "sV" = ( @@ -2058,9 +2058,9 @@ dir = 10 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/clothing/costume, +/obj/effect/spawner/lootdrop/costume, /obj/item/storage/box/emptysandbags, -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /obj/machinery/button/door{ dir = 4; id = "syndie_mechbay"; @@ -3151,14 +3151,22 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration{ + pixel_x = -6 + }, +/obj/effect/spawner/lootdrop/ration{ + pixel_x = -6 + }, +/obj/effect/spawner/lootdrop/ration{ + pixel_x = -6 + }, +/obj/effect/spawner/lootdrop/ration{ + pixel_x = -6 + }, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/airalarm/directional/south, /turf/open/floor/mineral/plastitanium, /area/ship/hallway/aft) @@ -3249,7 +3257,7 @@ /turf/open/floor/plasteel/tech/techmaint, /area/ship/engineering) "FV" = ( -/obj/effect/spawner/random/salvage_scanning, +/obj/effect/spawner/lootdrop/salvage_scanning, /obj/effect/decal/cleanable/shreds{ pixel_y = 14 }, @@ -3876,10 +3884,10 @@ /obj/structure/table/reinforced, /obj/item/hemostat, /obj/machinery/light/directional/west, -/obj/effect/spawner/random/medical/prosthetic{ +/obj/effect/spawner/lootdrop/random_prosthetic{ pixel_x = 6 }, -/obj/effect/spawner/random/medical/prosthetic{ +/obj/effect/spawner/lootdrop/random_prosthetic{ pixel_x = -6 }, /turf/open/floor/pod/dark, @@ -4452,7 +4460,7 @@ /obj/structure/railing{ dir = 8 }, -/obj/effect/spawner/random/salvage_manipulator, +/obj/effect/spawner/lootdrop/salvage_manipulator, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -5340,7 +5348,7 @@ /turf/open/floor/plasteel/tech, /area/ship/engineering) "YT" = ( -/obj/effect/spawner/random/salvage_manipulator, +/obj/effect/spawner/lootdrop/salvage_manipulator, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ icon_state = "4-8" @@ -5423,7 +5431,7 @@ }, /area/ship/cargo) "Zf" = ( -/obj/effect/spawner/random/salvage_matter_bin, +/obj/effect/spawner/lootdrop/salvage_matter_bin, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/industrial/warning{ @@ -5439,7 +5447,7 @@ /obj/effect/turf_decal/techfloor{ dir = 8 }, -/obj/effect/spawner/random/maintenance/two, +/obj/effect/spawner/lootdrop/maintenance/two, /obj/machinery/button/door{ dir = 1; id = "Artillery2shutter"; diff --git a/_maps/shuttles/syndicate/syndicate_litieguai.dmm b/_maps/shuttles/syndicate/syndicate_litieguai.dmm index 750f3016b14e..2b12f177f57e 100644 --- a/_maps/shuttles/syndicate/syndicate_litieguai.dmm +++ b/_maps/shuttles/syndicate/syndicate_litieguai.dmm @@ -266,7 +266,7 @@ /turf/open/floor/plasteel/patterned/brushed, /area/ship/medical) "fX" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/trimline/opaque/red/filled/line{ dir = 8 }, @@ -397,8 +397,8 @@ /area/ship/crew) "jh" = ( /obj/structure/table, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/radio/intercom/directional/west, /turf/open/floor/wood/ebony, /area/ship/crew) @@ -538,7 +538,7 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/maintenance/port) "na" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/trimline/opaque/red/filled/line{ dir = 8 }, diff --git a/_maps/shuttles/syndicate/syndicate_panacea.dmm b/_maps/shuttles/syndicate/syndicate_panacea.dmm index 875d5806131c..3d26ff6512b5 100644 --- a/_maps/shuttles/syndicate/syndicate_panacea.dmm +++ b/_maps/shuttles/syndicate/syndicate_panacea.dmm @@ -47,7 +47,7 @@ /turf/open/floor/plasteel/sepia, /area/ship/crew/ccommons) "az" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/suns/diagonal{ color = "#543C30" }, @@ -7126,7 +7126,7 @@ /turf/open/floor/carpet/red, /area/ship/crew/dorm/dormtwo) "Qi" = ( -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /turf/open/floor/suns/diagonal{ color = "#543C30" }, @@ -8163,7 +8163,7 @@ /area/ship/engineering) "Wr" = ( /obj/machinery/light/directional/north, -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /turf/open/floor/suns/dark/plain, /area/ship/crew/ccommons) "Wu" = ( diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm index f52d41d021c3..9b789add9c3e 100644 --- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -272,7 +272,7 @@ "bR" = ( /obj/effect/turf_decal/corner/opaque/syndiered/three_quarters, /obj/machinery/light/directional/south, -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /obj/effect/turf_decal/borderfloorblack{ dir = 1 }, @@ -358,7 +358,7 @@ /area/ship/medical) "cp" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /obj/item/trash/syndi_cakes, /turf/open/floor/plating, /area/ship/engineering/atmospherics) @@ -815,7 +815,7 @@ /turf/open/floor/plasteel/dark, /area/ship/security) "eQ" = ( -/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/pod/dark, /area/ship/engineering/atmospherics) "eR" = ( @@ -3005,8 +3005,8 @@ /obj/item/storage/box/ingredients/vegetarian, /obj/item/reagent_containers/condiment/milk, /obj/item/reagent_containers/condiment/milk, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/effect/spawner/random/food_or_drink/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/carpet/red, /area/ship/crew/canteen) "qQ" = ( @@ -5820,7 +5820,7 @@ dir = 8 }, /obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/eight, +/obj/effect/spawner/lootdrop/maintenance/eight, /obj/item/circuitboard/machine/autolathe, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/matter_bin, @@ -6329,7 +6329,7 @@ dir = 8 }, /obj/machinery/light/directional/north, -/obj/effect/spawner/random/vending/cola, +/obj/machinery/vending/cola/random, /obj/effect/turf_decal/borderfloorblack/corner{ dir = 8 }, @@ -7487,7 +7487,7 @@ icon_state = "2-8" }, /obj/structure/closet/emcloset, -/obj/effect/spawner/random/maintenance/four, +/obj/effect/spawner/lootdrop/maintenance/four, /obj/item/reagent_containers/food/snacks/burger/red{ name = "suspicious red burger"; desc = "A suspicious looking burger."; @@ -8597,9 +8597,9 @@ "Xf" = ( /obj/structure/table/wood, /obj/machinery/door/firedoor/border_only, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/carpet/red, /area/ship/crew/canteen) "Xg" = ( diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 6a076e34555b..c12d8dd837da 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -161,7 +161,7 @@ pixel_x = 7; pixel_y = 2 }, -/obj/effect/spawner/random/food_or_drink/three_course_meal, +/obj/effect/spawner/lootdrop/three_course_meal, /turf/open/floor/carpet/black, /area/survivalpod) "y" = ( diff --git a/_maps/templates/shelter_3.dmm b/_maps/templates/shelter_3.dmm index 56743e38b0f7..570483a06a1d 100644 --- a/_maps/templates/shelter_3.dmm +++ b/_maps/templates/shelter_3.dmm @@ -225,7 +225,7 @@ /turf/open/floor/carpet/black, /area/survivalpod) "L" = ( -/obj/effect/spawner/random/vending/snack, +/obj/machinery/vending/snack/random, /turf/open/floor/carpet/black, /area/survivalpod) "M" = ( diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 776014c4dfb5..b231b4e944c9 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -261,99 +261,43 @@ result = first ^ second return result -/** - * Picks a random element from a list based on a weighting system: - * 1. Adds up the total of weights for each element - * 2. Gets a number between 1 and that total - * 3. For each element in the list, subtracts its weighting from that number - * 4. If that makes the number 0 or less, return that element. - * Will output null sometimes if you use decimals (e.g. 0.1 instead of 10) as rand() uses integers, not floats -**/ -/proc/pick_weight(list/list_to_pick) +//Picks a random element from a list based on a weighting system: +//1. Adds up the total of weights for each element +//2. Gets a number between 1 and that total +//3. For each element in the list, subtracts its weighting from that number +//4. If that makes the number 0 or less, return that element. +/proc/pickweight(list/L) var/total = 0 var/item - for(item in list_to_pick) - if(!list_to_pick[item]) - list_to_pick[item] = 1 - total += list_to_pick[item] + for (item in L) + if (!L[item]) + L[item] = 1 + total += L[item] total = rand(1, total) - for(item in list_to_pick) - total -= list_to_pick[item] - if(total <= 0) + for (item in L) + total -=L [item] + if (total <= 0) return item return null -/** - * Picks a random element from a list based on a weighting system. - * For example, given the following list: - * A = 6, B = 3, C = 1, D = 0 - * A would have a 60% chance of being picked, - * B would have a 30% chance of being picked, - * C would have a 10% chance of being picked, - * and D would have a 0% chance of being picked. - * You should only pass integers in. - */ -/proc/pick_weight_allow_zero(list/list_to_pick) //The original pick_weight proc will sometimes pick entries with zero weight. I'm not sure if changing the original will break anything, so I left it be. - if(length(list_to_pick) == 0) - return null - +/proc/pickweightAllowZero(list/L) //The original pickweight proc will sometimes pick entries with zero weight. I'm not sure if changing the original will break anything, so I left it be. var/total = 0 - for(var/item in list_to_pick) - if(!list_to_pick[item]) - list_to_pick[item] = 0 - total += list_to_pick[item] - - total = rand(1, total) - for(var/item in list_to_pick) - var/item_weight = list_to_pick[item] - if(item_weight == 0) - continue + var/item + for (item in L) + if (!L[item]) + L[item] = 0 + total += L[item] - total -= item_weight - if(total <= 0) + total = rand(0, total) + for (item in L) + total -=L [item] + if (total <= 0 && L[item]) return item return null -/** - * Like pick_weight, but allowing for nested lists. - * - * For example, given the following list: - * list(A = 1, list(B = 1, C = 1)) - * A would have a 50% chance of being picked, - * and list(B, C) would have a 50% chance of being picked. - * If list(B, C) was picked, B and C would then each have a 50% chance of being picked. - * So the final probabilities would be 50% for A, 25% for B, and 25% for C. - * - * Weights should be integers. Entries without weights are assigned weight 1 (so unweighted lists can be used as well) - */ -/proc/pick_weight_recursive(list/list_to_pick) - var/result = pick_weight(fill_with_ones(list_to_pick)) - while(islist(result)) - result = pick_weight(fill_with_ones(result)) - return result - -/** - * Given a list, return a copy where values without defined weights are given weight 1. - * For example, fill_with_ones(list(A, B=2, C)) = list(A=1, B=2, C=1) - * Useful for weighted random choices (loot tables, syllables in languages, etc.) - */ -/proc/fill_with_ones(list/list_to_pad) - if (!islist(list_to_pad)) - return list_to_pad - - var/list/final_list = list() - - for (var/key in list_to_pad) - if (list_to_pad[key]) - final_list[key] = list_to_pad[key] - else - final_list[key] = 1 - - return final_list - /// Takes a weighted list (see above) and expands it into raw entries /// This eats more memory, but saves time when actually picking from it /proc/expand_weights(list/list_to_pick) diff --git a/code/__HELPERS/_string_lists.dm b/code/__HELPERS/_string_lists.dm index 5dab48761ecc..cdbee26f9ba7 100644 --- a/code/__HELPERS/_string_lists.dm +++ b/code/__HELPERS/_string_lists.dm @@ -1,5 +1,5 @@ #define pick_list(FILE, KEY) (pick(strings(FILE, KEY))) -#define pick_list_weighted(FILE, KEY) (pick_weight(strings(FILE, KEY))) +#define pick_list_weighted(FILE, KEY) (pickweight(strings(FILE, KEY))) #define pick_list_replacements(FILE, KEY) (strings_replacement(FILE, KEY)) #define json_load(FILE) (json_decode(file2text(FILE))) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 505734d6cd5d..15fbf39c6e24 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -92,7 +92,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/clothing/suit/toggle/labcoat = 1, /obj/item/clothing/under/color/grey = 1, /obj/item/clothing/gloves/color/fyellow = 1, - /obj/effect/spawner/random/clothing/gloves = 1, + /obj/effect/spawner/lootdrop/gloves = 1, /obj/item/storage/wallet/random = 1, /obj/item/clothing/glasses/science = 1, /obj/item/clothing/glasses/meson = 1, @@ -148,7 +148,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items //light sources /obj/item/flashlight = 1, - /obj/effect/spawner/random/decoration/glowstick = 1, + /obj/effect/spawner/lootdrop/glowstick = 1, /obj/item/clothing/head/hardhat/red = 1, /obj/item/flashlight/flare = 1, ) = 1, @@ -233,7 +233,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/storage/box/donkpockets/donkpockethonk = 1, ) = 1, /obj/item/reagent_containers/food/snacks/monkeycube = 1, - /obj/effect/spawner/random/food_or_drink/ration = 1, + /obj/effect/spawner/lootdrop/ration = 1, ) = 8, list(//fakeout items, keep this list at low relative weight diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 37256f9ce833..ac7298dc100d 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -431,13 +431,3 @@ max_val = 255 config_entry_value = 127 min_val = 127 - -/** - * A config that skews with the random spawners weights - * If the value is lower than 1, it'll tend to even out the odds - * If higher than 1, it'll lean toward common spawns even more. - */ -/datum/config_entry/number/random_loot_weight_modifier - integer = FALSE - default = 1 - min_val = 0.05 diff --git a/code/controllers/subsystem/overmap.dm b/code/controllers/subsystem/overmap.dm index dd5515397277..113bfefa7a52 100644 --- a/code/controllers/subsystem/overmap.dm +++ b/code/controllers/subsystem/overmap.dm @@ -154,7 +154,7 @@ SUBSYSTEM_DEF(overmap) return if(!length(orbits)) break // Can't fit any more in - var/event_type = pick_weight(GLOB.overmap_event_pick_list) + var/event_type = pickweight(GLOB.overmap_event_pick_list) var/selected_orbit = pick(orbits) var/list/T = get_unused_overmap_square_in_radius(selected_orbit) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 7f0e9c8ee627..5ca963c53472 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -225,7 +225,7 @@ SUBSYSTEM_DEF(ticker) if(!runnable_modes.len) to_chat(world, "Unable to choose playable game mode. Reverting to pre-game lobby.") return 0 - mode = pick_weight(runnable_modes) + mode = pickweight(runnable_modes) if(!mode) //too few roundtypes all run too recently mode = pick(runnable_modes) diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index 148bf17ed210..acaa03d3ff7a 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -264,7 +264,7 @@ var/datum/ai_laws/lawtype var/list/law_weights = CONFIG_GET(keyed_list/law_weight) while(!lawtype && law_weights.len) - var/possible_id = pick_weight_allow_zero(law_weights) + var/possible_id = pickweightAllowZero(law_weights) lawtype = lawid_to_type(possible_id) if(!lawtype) law_weights -= possible_id @@ -331,7 +331,7 @@ replaceable_groups[LAW_INHERENT] = inherent.len if(supplied.len && (LAW_SUPPLIED in groups)) replaceable_groups[LAW_SUPPLIED] = supplied.len - var/picked_group = pick_weight(replaceable_groups) + var/picked_group = pickweight(replaceable_groups) switch(picked_group) if(LAW_ZEROTH) . = zeroth diff --git a/code/datums/components/fantasy/_fantasy.dm b/code/datums/components/fantasy/_fantasy.dm index 6941f6c169b4..92bd0868a746 100644 --- a/code/datums/components/fantasy/_fantasy.dm +++ b/code/datums/components/fantasy/_fantasy.dm @@ -75,7 +75,7 @@ var/usedSlots = NONE for(var/i in 1 to max(1, abs(quality))) // We want at least 1 affix applied - var/datum/fantasy_affix/affix = pick_weight(affixListing) + var/datum/fantasy_affix/affix = pickweight(affixListing) if(affix.placement & usedSlots) continue if(!(affix.alignment & alignment)) diff --git a/code/datums/components/fantasy/suffixes.dm b/code/datums/components/fantasy/suffixes.dm index 7035c143ae4f..8cabee42d21c 100644 --- a/code/datums/components/fantasy/suffixes.dm +++ b/code/datums/components/fantasy/suffixes.dm @@ -138,7 +138,7 @@ /obj/projectile/beam/disabler = 15 ) - var/obj/projectile/picked_projectiletype = pick_weight(weighted_projectile_types) + var/obj/projectile/picked_projectiletype = pickweight(weighted_projectile_types) var/obj/item/master = comp.parent comp.appliedComponents += master.AddComponent(/datum/component/mirv, picked_projectiletype) diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index 7f4b8b50229e..1307d5d0ec8e 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -67,9 +67,9 @@ if(prob(squeak_chance)) if(!override_squeak_sounds) - playsound(parent, pick_weight(default_squeak_sounds), volume, TRUE, sound_extra_range, sound_falloff_exponent, falloff_distance = sound_falloff_distance) + playsound(parent, pickweight(default_squeak_sounds), volume, TRUE, sound_extra_range, sound_falloff_exponent, falloff_distance = sound_falloff_distance) else - playsound(parent, pick_weight(override_squeak_sounds), volume, TRUE, sound_extra_range, sound_falloff_exponent, falloff_distance = sound_falloff_distance) + playsound(parent, pickweight(override_squeak_sounds), volume, TRUE, sound_extra_range, sound_falloff_exponent, falloff_distance = sound_falloff_distance) /datum/component/squeak/proc/step_squeak() SIGNAL_HANDLER diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index f88e594e3fc7..bb7a33846a34 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -100,7 +100,7 @@ /datum/looping_sound/proc/get_sound(starttime, _mid_sounds) . = _mid_sounds || mid_sounds while(!isfile(.) && !isnull(.)) - . = pick_weight(.) + . = pickweight(.) /datum/looping_sound/proc/on_start() var/start_wait = 0 diff --git a/code/datums/mapgen/planetary/JungleGenerator.dm b/code/datums/mapgen/planetary/JungleGenerator.dm index f64e47504957..077065c8e44e 100644 --- a/code/datums/mapgen/planetary/JungleGenerator.dm +++ b/code/datums/mapgen/planetary/JungleGenerator.dm @@ -100,7 +100,7 @@ mob_spawn_list = list( /mob/living/carbon/monkey = 10, /mob/living/simple_animal/hostile/retaliate/chicken = 10, - /obj/effect/spawner/random/chicken/jungle/flock = 1 + /obj/effect/spawner/lootdrop/chicken/jungle/flock = 1 ) /datum/biome/jungle/dense @@ -123,7 +123,7 @@ /mob/living/simple_animal/hostile/gorilla = 1, /mob/living/carbon/monkey = 6, /mob/living/simple_animal/hostile/retaliate/chicken = 4, - /obj/effect/spawner/random/chicken/jungle/flock = 1 + /obj/effect/spawner/lootdrop/chicken/jungle/flock = 1 ) /datum/biome/jungle/plains @@ -181,7 +181,7 @@ feature_spawn_list = list( /obj/item/pickaxe/rusted = 1, /obj/structure/spawner/burrow/jungle_planet = 1, - /obj/effect/spawner/random/anomaly/jungle = 1 + /obj/effect/spawner/lootdrop/anomaly/jungle = 1 ) /datum/biome/cave/jungle/dirt diff --git a/code/datums/mapgen/planetary/LavaGenerator.dm b/code/datums/mapgen/planetary/LavaGenerator.dm index 846d4145a66c..bca54d019397 100644 --- a/code/datums/mapgen/planetary/LavaGenerator.dm +++ b/code/datums/mapgen/planetary/LavaGenerator.dm @@ -100,7 +100,7 @@ /obj/structure/flora/rock/hell = 20, /obj/structure/elite_tumor = 4, /obj/structure/geyser/random = 4, - /obj/effect/spawner/random/anomaly/lava = 2, + /obj/effect/spawner/lootdrop/anomaly/lava = 2, /obj/structure/flora/rock/hell = 14, /obj/structure/vein = 5, /obj/structure/vein/classtwo = 2, @@ -108,7 +108,7 @@ /obj/structure/geyser/random = 2, /obj/structure/vein/classthree = 1, /obj/effect/spawner/minefield = 1, - /obj/effect/spawner/random/anomaly/lava = 1, + /obj/effect/spawner/lootdrop/anomaly/lava = 1, ) mob_spawn_chance = 4 mob_spawn_list = list( @@ -167,7 +167,7 @@ feature_spawn_list = list( /obj/structure/flora/tree/dead/barren = 50, /obj/structure/flora/tree/dead/tall/grey = 45, - /obj/effect/spawner/random/anomaly/lava = 10, + /obj/effect/spawner/lootdrop/anomaly/lava = 10, /obj/structure/vein = 5, /obj/structure/vein/classtwo = 2, /obj/structure/vein/classthree = 1, diff --git a/code/datums/mapgen/planetary/RockGenerator.dm b/code/datums/mapgen/planetary/RockGenerator.dm index b7ab59f5d843..30349a2ea53b 100644 --- a/code/datums/mapgen/planetary/RockGenerator.dm +++ b/code/datums/mapgen/planetary/RockGenerator.dm @@ -89,10 +89,10 @@ /obj/structure/vein = 60, /obj/structure/elite_tumor = 40, /obj/structure/vein/classtwo = 40, - /obj/effect/spawner/random/anomaly/rock = 10, + /obj/effect/spawner/lootdrop/anomaly/rock = 10, /obj/structure/vein/classthree = 10, /obj/effect/spawner/minefield = 2, - /obj/effect/spawner/random/anomaly/big = 1 //get out of here stalker + /obj/effect/spawner/lootdrop/anomaly/big = 1 //get out of here stalker ) flora_spawn_chance = 5 @@ -162,7 +162,7 @@ /obj/structure/vein/classthree = 1, /obj/structure/spawner/burrow/rock_plant = 4, /obj/effect/spawner/minefield = 1, - /obj/effect/spawner/random/anomaly/rock/cave = 1, + /obj/effect/spawner/lootdrop/anomaly/rock/cave = 1, ) mob_spawn_chance = 6 mob_spawn_list = list( diff --git a/code/datums/mapgen/planetary/SandGenerator.dm b/code/datums/mapgen/planetary/SandGenerator.dm index 37615a6b961e..e285f5b1ac6c 100644 --- a/code/datums/mapgen/planetary/SandGenerator.dm +++ b/code/datums/mapgen/planetary/SandGenerator.dm @@ -96,7 +96,7 @@ /obj/structure/vein/classtwo = 4, /obj/structure/elite_tumor = 4, /obj/structure/vein/classthree = 2, - /obj/effect/spawner/random/anomaly/sand = 1, + /obj/effect/spawner/lootdrop/anomaly/sand = 1, ) mob_spawn_chance = 4 mob_spawn_list = list( @@ -120,7 +120,7 @@ /obj/structure/flora/ash/cap_shroom = 4, /obj/structure/flora/ash/stem_shroom = 4, /obj/effect/decal/remains/human = 4, - /obj/effect/spawner/random/maintenance = 40, + /obj/effect/spawner/lootdrop/maintenance = 40, ) /datum/biome/sand/grass @@ -199,7 +199,7 @@ /obj/structure/geyser/random = 4, /obj/structure/vein/classtwo = 4, /obj/structure/elite_tumor = 4, - /obj/effect/spawner/random/anomaly/sand/cave = 1 + /obj/effect/spawner/lootdrop/anomaly/sand/cave = 1 ) mob_spawn_chance = 4 mob_spawn_list = list( diff --git a/code/datums/mapgen/planetary/SnowGenerator.dm b/code/datums/mapgen/planetary/SnowGenerator.dm index 4297f8a50f2c..7fddcd176c66 100644 --- a/code/datums/mapgen/planetary/SnowGenerator.dm +++ b/code/datums/mapgen/planetary/SnowGenerator.dm @@ -112,8 +112,8 @@ ) feature_spawn_chance = 0.1 feature_spawn_list = list( - /obj/effect/spawner/random/anomaly/ice = 12, - /obj/effect/spawner/random/anomaly/big = 1, + /obj/effect/spawner/lootdrop/anomaly/ice = 12, + /obj/effect/spawner/lootdrop/anomaly/big = 1, /obj/structure/spawner/burrow/ice_planet = 80, /obj/structure/vein/ice = 25, /obj/effect/spawner/minefield = 2, @@ -212,8 +212,8 @@ ) feature_spawn_chance = 0.3 feature_spawn_list = list( - /obj/effect/spawner/random/anomaly/ice = 100, - /obj/effect/spawner/random/anomaly/big = 1, + /obj/effect/spawner/lootdrop/anomaly/ice = 100, + /obj/effect/spawner/lootdrop/anomaly/big = 1, /obj/structure/spawner/burrow/ice_planet/hard = 600, /obj/structure/vein/ice = 300, /obj/structure/vein/ice/classtwo = 500, @@ -268,7 +268,7 @@ feature_spawn_list = list( /obj/structure/spawner/burrow/ice_planet = 60, /obj/structure/spawner/burrow/ice_planet = 40, - /obj/effect/spawner/random/anomaly/ice/cave = 10, + /obj/effect/spawner/lootdrop/anomaly/ice/cave = 10, /obj/structure/vein/ice = 30, /obj/structure/vein/ice/classtwo = 50, /obj/structure/vein/ice/classthree = 6, diff --git a/code/datums/mapgen/planetary/WasteGenerator.dm b/code/datums/mapgen/planetary/WasteGenerator.dm index 3f87e6879c1b..621d5e3b9c4d 100644 --- a/code/datums/mapgen/planetary/WasteGenerator.dm +++ b/code/datums/mapgen/planetary/WasteGenerator.dm @@ -96,27 +96,27 @@ flora_spawn_list = list( //mech spawners - /obj/effect/spawner/random/waste/mechwreck = 100, - /obj/effect/spawner/random/waste/mechwreck/rare = 20, + /obj/effect/spawner/lootdrop/waste/mechwreck = 100, + /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 20, //decals and fluff structures - /obj/effect/spawner/random/trash/decal = 1800, - /obj/effect/spawner/random/waste/radiation = 80, - /obj/effect/spawner/random/waste/radiation/more_rads = 10, + /obj/effect/spawner/lootdrop/waste/trash = 1800, + /obj/effect/spawner/lootdrop/waste/radiation = 80, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 10, //stuff you can actually use - /obj/effect/spawner/random/waste/girder = 600, + /obj/effect/spawner/lootdrop/waste/girder = 600, /obj/structure/reagent_dispensers/watertank = 200, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, - /obj/effect/spawner/random/waste/atmos_can = 50, - /obj/effect/spawner/random/waste/atmos_can/rare = 1, - /obj/effect/spawner/random/waste/salvageable = 300, - /obj/effect/spawner/random/waste/grille_or_trash = 200, - /obj/effect/spawner/random/maintenance = 200, - /obj/effect/spawner/random/maintenance/two = 100, - /obj/effect/spawner/random/maintenance/three = 50, - /obj/effect/spawner/random/maintenance/four = 20, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 300, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 200, + /obj/effect/spawner/lootdrop/maintenance/two = 100, + /obj/effect/spawner/lootdrop/maintenance/three = 50, + /obj/effect/spawner/lootdrop/maintenance/four = 20, //plants /obj/structure/flora/ash/garden/waste = 70, @@ -125,7 +125,7 @@ //the illusive shrapnel plant /obj/item/mine/pressure/explosive/shrapnel/live = 30, - /obj/effect/spawner/random/mine = 8, + /obj/effect/spawner/lootdrop/mine = 8, /obj/effect/spawner/minefield = 2 ) @@ -133,7 +133,7 @@ /obj/effect/radiation/waste = 30, /obj/effect/radiation/waste/intense = 10, /obj/structure/geyser/random = 1, - /obj/effect/spawner/random/anomaly/waste = 1 + /obj/effect/spawner/lootdrop/anomaly/waste = 1 ) mob_spawn_list = list( @@ -159,23 +159,23 @@ ) flora_spawn_list = list( - /obj/effect/spawner/random/trash/decal = 180, - /obj/effect/spawner/random/waste/radiation = 16, - /obj/effect/spawner/random/waste/radiation/more_rads = 2, - /obj/effect/spawner/random/waste/atmos_can = 36, - /obj/effect/spawner/random/waste/atmos_can/rare = 1, - /obj/effect/spawner/random/waste/salvageable = 60, + /obj/effect/spawner/lootdrop/waste/trash = 180, + /obj/effect/spawner/lootdrop/waste/radiation = 16, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 2, + /obj/effect/spawner/lootdrop/waste/atmos_can = 36, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 60, ) mob_spawn_chance = 1 /datum/biome/waste/crater/rad flora_spawn_list = list( /obj/structure/flora/ash/glowshroom = 180, - /obj/effect/spawner/random/trash/decal = 90, - /obj/effect/spawner/random/waste/radiation = 25, - /obj/effect/spawner/random/waste/radiation/more_rads = 7, - /obj/effect/spawner/random/waste/atmos_can = 7, - /obj/effect/spawner/random/waste/salvageable = 15 + /obj/effect/spawner/lootdrop/waste/trash = 90, + /obj/effect/spawner/lootdrop/waste/radiation = 25, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 7, + /obj/effect/spawner/lootdrop/waste/atmos_can = 7, + /obj/effect/spawner/lootdrop/waste/salvageable = 15 ) /datum/biome/waste/clearing @@ -184,26 +184,26 @@ /datum/biome/waste/clearing/mushroom flora_spawn_list = list( - /obj/effect/spawner/random/waste/mechwreck = 100, - /obj/effect/spawner/random/trash/decal = 900, - /obj/effect/spawner/random/waste/radiation = 300, - /obj/effect/spawner/random/waste/radiation/more_rads = 120, - /obj/effect/spawner/random/waste/girder = 600, + /obj/effect/spawner/lootdrop/waste/mechwreck = 100, + /obj/effect/spawner/lootdrop/waste/trash = 900, + /obj/effect/spawner/lootdrop/waste/radiation = 300, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 120, + /obj/effect/spawner/lootdrop/waste/girder = 600, /obj/structure/reagent_dispensers/watertank = 200, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, - /obj/effect/spawner/random/waste/atmos_can = 50, - /obj/effect/spawner/random/waste/atmos_can/rare = 1, - /obj/effect/spawner/random/waste/salvageable = 300, - /obj/effect/spawner/random/waste/grille_or_trash = 200, - /obj/effect/spawner/random/maintenance = 200, - /obj/effect/spawner/random/maintenance/two = 100, - /obj/effect/spawner/random/maintenance/three = 50, - /obj/effect/spawner/random/maintenance/four = 20, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 300, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 200, + /obj/effect/spawner/lootdrop/maintenance/two = 100, + /obj/effect/spawner/lootdrop/maintenance/three = 50, + /obj/effect/spawner/lootdrop/maintenance/four = 20, /obj/structure/flora/ash/garden/waste = 300, /obj/structure/flora/ash/glowshroom = 1800, /obj/item/mine/pressure/explosive/shrapnel/live = 30, - /obj/effect/spawner/random/mine = 8, + /obj/effect/spawner/lootdrop/mine = 8, /obj/effect/spawner/minefield = 2 ) @@ -227,29 +227,29 @@ ) flora_spawn_list = list( //there are no plants here - /obj/effect/spawner/random/waste/mechwreck = 200, - /obj/effect/spawner/random/waste/mechwreck/rare = 50, - /obj/effect/spawner/random/trash/decal = 900, - /obj/effect/spawner/random/waste/radiation = 80, - /obj/effect/spawner/random/waste/radiation/more_rads = 20, - /obj/effect/spawner/random/waste/girder = 600, + /obj/effect/spawner/lootdrop/waste/mechwreck = 200, + /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 50, + /obj/effect/spawner/lootdrop/waste/trash = 900, + /obj/effect/spawner/lootdrop/waste/radiation = 80, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 20, + /obj/effect/spawner/lootdrop/waste/girder = 600, /obj/structure/reagent_dispensers/watertank = 200, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, - /obj/effect/spawner/random/waste/atmos_can = 50, - /obj/effect/spawner/random/waste/atmos_can/rare = 1, - /obj/effect/spawner/random/waste/salvageable = 300, - /obj/effect/spawner/random/waste/grille_or_trash = 200, - /obj/effect/spawner/random/maintenance = 200, - /obj/effect/spawner/random/maintenance/two = 100, - /obj/effect/spawner/random/maintenance/three = 50, - /obj/effect/spawner/random/maintenance/four = 20, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 300, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 200, + /obj/effect/spawner/lootdrop/maintenance/two = 100, + /obj/effect/spawner/lootdrop/maintenance/three = 50, + /obj/effect/spawner/lootdrop/maintenance/four = 20, /obj/structure/closet/crate/secure/loot = 30, - /obj/effect/spawner/random/waste/atmos_can = 180, - /obj/effect/spawner/random/waste/atmos_can/rare = 1, - /obj/effect/spawner/random/waste/salvageable = 300, + /obj/effect/spawner/lootdrop/waste/atmos_can = 180, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 300, /obj/item/mine/pressure/explosive/rad/live = 30, - /obj/effect/spawner/random/mine = 8, + /obj/effect/spawner/lootdrop/mine = 8, /obj/effect/spawner/minefield = 2 ) mob_spawn_list = list( //nor organics, more biased towards hivebots though @@ -288,28 +288,28 @@ ) flora_spawn_list = list( - /obj/effect/spawner/random/waste/mechwreck = 100, - /obj/effect/spawner/random/waste/mechwreck/rare = 20, - /obj/effect/spawner/random/trash/decal = 1800, - /obj/effect/spawner/random/waste/radiation = 80, - /obj/effect/spawner/random/waste/radiation/more_rads = 10, - /obj/effect/spawner/random/waste/girder = 600, + /obj/effect/spawner/lootdrop/waste/mechwreck = 100, + /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 20, + /obj/effect/spawner/lootdrop/waste/trash = 1800, + /obj/effect/spawner/lootdrop/waste/radiation = 80, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 10, + /obj/effect/spawner/lootdrop/waste/girder = 600, /obj/structure/reagent_dispensers/watertank = 200, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, - /obj/effect/spawner/random/waste/atmos_can = 50, - /obj/effect/spawner/random/waste/atmos_can/rare = 5, - /obj/effect/spawner/random/waste/salvageable = 300, - /obj/effect/spawner/random/waste/grille_or_trash = 200, - /obj/effect/spawner/random/maintenance = 20, - /obj/effect/spawner/random/maintenance/two = 50, - /obj/effect/spawner/random/maintenance/three = 100, - /obj/effect/spawner/random/maintenance/four = 200, - /obj/effect/spawner/random/waste/salvageable = 400, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 5, + /obj/effect/spawner/lootdrop/waste/salvageable = 300, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 20, + /obj/effect/spawner/lootdrop/maintenance/two = 50, + /obj/effect/spawner/lootdrop/maintenance/three = 100, + /obj/effect/spawner/lootdrop/maintenance/four = 200, + /obj/effect/spawner/lootdrop/waste/salvageable = 400, /obj/structure/flora/ash/garden/waste = 70, /obj/structure/flora/ash/glowshroom = 400, //more common in caves /obj/item/mine/pressure/explosive/rad/live = 10, - /obj/effect/spawner/random/mine = 8, + /obj/effect/spawner/lootdrop/mine = 8, /obj/effect/spawner/minefield = 2 ) @@ -317,7 +317,7 @@ /obj/effect/radiation/waste = 30, /obj/effect/radiation/waste/intense = 10, /obj/structure/geyser/random = 1, - /obj/effect/spawner/random/anomaly/waste/cave = 1 + /obj/effect/spawner/lootdrop/anomaly/waste/cave = 1 ) mob_spawn_list = list( /mob/living/simple_animal/hostile/hivebot/strong/rockplanet = 70, @@ -348,24 +348,24 @@ /datum/biome/cave/waste/rad flora_spawn_list = list( - /obj/effect/spawner/random/trash/decal = 900, - /obj/effect/spawner/random/waste/radiation = 250, - /obj/effect/spawner/random/waste/radiation/more_rads = 70, - /obj/effect/spawner/random/waste/atmos_can = 50, - /obj/effect/spawner/random/waste/atmos_can/rare = 5, - /obj/effect/spawner/random/waste/salvageable = 150, - /obj/effect/spawner/random/waste/girder = 200, + /obj/effect/spawner/lootdrop/waste/trash = 900, + /obj/effect/spawner/lootdrop/waste/radiation = 250, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 70, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 5, + /obj/effect/spawner/lootdrop/waste/salvageable = 150, + /obj/effect/spawner/lootdrop/waste/girder = 200, /obj/structure/reagent_dispensers/watertank = 10, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, - /obj/effect/spawner/random/waste/grille_or_trash = 200, - /obj/effect/spawner/random/maintenance = 20, - /obj/effect/spawner/random/maintenance/two = 50, - /obj/effect/spawner/random/maintenance/three = 100, - /obj/effect/spawner/random/maintenance/four = 200, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 20, + /obj/effect/spawner/lootdrop/maintenance/two = 50, + /obj/effect/spawner/lootdrop/maintenance/three = 100, + /obj/effect/spawner/lootdrop/maintenance/four = 200, /obj/structure/flora/ash/glowshroom = 1800, /obj/item/mine/pressure/explosive/rad/live = 30, - /obj/effect/spawner/random/mine = 8, + /obj/effect/spawner/lootdrop/mine = 8, /obj/effect/spawner/minefield = 2 ) feature_spawn_chance = 12 @@ -382,26 +382,26 @@ /turf/closed/wall/rust/wasteplanet = 10 ) flora_spawn_list = list( - /obj/effect/spawner/random/waste/mechwreck = 40, - /obj/effect/spawner/random/waste/mechwreck/rare = 10, - /obj/effect/spawner/random/trash/decal = 180, - /obj/effect/spawner/random/waste/radiation = 32, - /obj/effect/spawner/random/waste/radiation/more_rads = 4, - /obj/effect/spawner/random/waste/girder = 120, + /obj/effect/spawner/lootdrop/waste/mechwreck = 40, + /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 10, + /obj/effect/spawner/lootdrop/waste/trash = 180, + /obj/effect/spawner/lootdrop/waste/radiation = 32, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 4, + /obj/effect/spawner/lootdrop/waste/girder = 120, /obj/structure/reagent_dispensers/watertank = 40, /obj/item/stack/cable_coil/cut = 100, /obj/structure/closet/crate/secure/loot = 6, - /obj/effect/spawner/random/waste/atmos_can = 10, - /obj/effect/spawner/random/waste/atmos_can/rare = 1, - /obj/effect/spawner/random/waste/salvageable = 60, - /obj/effect/spawner/random/waste/grille_or_trash = 40, - /obj/effect/spawner/random/maintenance = 4, - /obj/effect/spawner/random/maintenance/two = 10, - /obj/effect/spawner/random/maintenance/three = 20, - /obj/effect/spawner/random/maintenance/four = 40, - /obj/effect/spawner/random/waste/salvageable = 80, + /obj/effect/spawner/lootdrop/waste/atmos_can = 10, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 60, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 40, + /obj/effect/spawner/lootdrop/maintenance = 4, + /obj/effect/spawner/lootdrop/maintenance/two = 10, + /obj/effect/spawner/lootdrop/maintenance/three = 20, + /obj/effect/spawner/lootdrop/maintenance/four = 40, + /obj/effect/spawner/lootdrop/waste/salvageable = 80, /obj/item/mine/proximity/spawner/manhack/live = 40, - /obj/effect/spawner/random/mine = 8, + /obj/effect/spawner/lootdrop/mine = 8, /obj/effect/spawner/minefield/manhack = 2 ) mob_spawn_list = list( //nor organics, more biased towards hivebots though @@ -417,18 +417,18 @@ /datum/biome/cave/waste/metal/hivebot flora_spawn_list = list( - /obj/effect/spawner/random/trash/decal = 90, - /obj/effect/spawner/random/waste/radiation = 16, - /obj/effect/spawner/random/waste/radiation/more_rads = 2, - /obj/effect/spawner/random/waste/girder = 60, + /obj/effect/spawner/lootdrop/waste/trash = 90, + /obj/effect/spawner/lootdrop/waste/radiation = 16, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 2, + /obj/effect/spawner/lootdrop/waste/girder = 60, /obj/structure/reagent_dispensers/watertank = 20, /obj/item/stack/cable_coil/cut = 50, /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/random/maintenance = 2, - /obj/effect/spawner/random/maintenance/two = 5, - /obj/effect/spawner/random/maintenance/three = 10, - /obj/effect/spawner/random/maintenance/four = 20, - /obj/effect/spawner/random/waste/salvageable = 40, + /obj/effect/spawner/lootdrop/maintenance = 2, + /obj/effect/spawner/lootdrop/maintenance/two = 5, + /obj/effect/spawner/lootdrop/maintenance/three = 10, + /obj/effect/spawner/lootdrop/maintenance/four = 20, + /obj/effect/spawner/lootdrop/waste/salvageable = 40, /obj/structure/foamedmetal = 100, /obj/item/mine/proximity/spawner/manhack/live = 20 ) @@ -456,19 +456,19 @@ ) flora_spawn_list = list( - /obj/effect/spawner/random/waste/mechwreck = 20, - /obj/effect/spawner/random/trash/decal = 90, - /obj/effect/spawner/random/waste/radiation = 16, + /obj/effect/spawner/lootdrop/waste/mechwreck = 20, + /obj/effect/spawner/lootdrop/waste/trash = 90, + /obj/effect/spawner/lootdrop/waste/radiation = 16, /obj/structure/reagent_dispensers/watertank = 20, /obj/item/stack/cable_coil/cut = 50, /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/random/waste/atmos_can = 5, - /obj/effect/spawner/random/waste/atmos_can/rare = 1, - /obj/effect/spawner/random/waste/salvageable = 30, - /obj/effect/spawner/random/maintenance = 2, - /obj/effect/spawner/random/maintenance/two = 5, - /obj/effect/spawner/random/maintenance/three = 10, - /obj/effect/spawner/random/waste/salvageable = 40, + /obj/effect/spawner/lootdrop/waste/atmos_can = 5, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 30, + /obj/effect/spawner/lootdrop/maintenance = 2, + /obj/effect/spawner/lootdrop/maintenance/two = 5, + /obj/effect/spawner/lootdrop/maintenance/three = 10, + /obj/effect/spawner/lootdrop/waste/salvageable = 40, ) mob_spawn_list = list( /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 80, diff --git a/code/datums/mapgen/single_biome/WasteplanetCaves.dm b/code/datums/mapgen/single_biome/WasteplanetCaves.dm index 3caf1c9429ad..08f63ba3149a 100644 --- a/code/datums/mapgen/single_biome/WasteplanetCaves.dm +++ b/code/datums/mapgen/single_biome/WasteplanetCaves.dm @@ -40,7 +40,7 @@ /obj/structure/salvageable/destructive_analyzer = 8, /obj/structure/salvageable/server = 8, /obj/item/mine/pressure/explosive/rusty/live = 30, - /obj/effect/spawner/random/mine = 8 + /obj/effect/spawner/lootdrop/mine = 8 ) feature_spawn_list = list( /obj/structure/geyser/random = 1, diff --git a/code/datums/votes/_vote_datum.dm b/code/datums/votes/_vote_datum.dm index 7118695bf1bb..8c7b7234b516 100644 --- a/code/datums/votes/_vote_datum.dm +++ b/code/datums/votes/_vote_datum.dm @@ -156,7 +156,7 @@ /// Gets the winner of the vote, selecting a random choice from all choices based on their vote count. /datum/vote/proc/get_random_winner() - var/winner = pick_weight(choices) + var/winner = pickweight(choices) return winner ? list(winner) : list() /** diff --git a/code/datums/weather/weather_controller.dm b/code/datums/weather/weather_controller.dm index 30be3ebb23c5..ad4d5005c049 100644 --- a/code/datums/weather/weather_controller.dm +++ b/code/datums/weather/weather_controller.dm @@ -60,7 +60,7 @@ if(!possible_weathers) return next_weather = world.time + rand(wait_interval_low, wait_interval_high) - next_weather_type = pick_weight(possible_weathers) + next_weather_type = pickweight(possible_weathers) /datum/weather_controller/proc/run_weather(datum/weather/weather_datum_type, telegraph = TRUE) if(!ispath(weather_datum_type, /datum/weather)) diff --git a/code/game/MapData/shuttles/nanotrasen_ranger.dm b/code/game/MapData/shuttles/nanotrasen_ranger.dm index 06d988760722..08f1a7c670d2 100644 --- a/code/game/MapData/shuttles/nanotrasen_ranger.dm +++ b/code/game/MapData/shuttles/nanotrasen_ranger.dm @@ -283,9 +283,9 @@ //lootdrop -/obj/effect/spawner/random/lpretrieval +/obj/effect/spawner/lootdrop/lpretrieval name = "LP Retrieval Missions" - spawn_loot_double = FALSE + lootdoubles = FALSE loot = list( /obj/item/disk/holodisk/lp/retrieval/phazon = 1, @@ -294,11 +294,11 @@ /obj/item/disk/holodisk/lp/retrieval/materials = 1 ) - spawn_loot_count = 2 + lootcount = 2 -/obj/effect/spawner/random/lpaid +/obj/effect/spawner/lootdrop/lpaid name = "LP Aid Missions" - spawn_loot_double = FALSE + lootdoubles = FALSE loot = list( /obj/item/disk/holodisk/lp/aid/repairs = 1, @@ -306,5 +306,5 @@ /obj/item/disk/holodisk/lp/aid/guard = 1, ) - spawn_loot_count = 4 + lootcount = 4 diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index f8d681199094..b8dcd669d385 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -435,7 +435,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /// Picks a random roundstart rule from the list given as an argument and executes it. /datum/game_mode/dynamic/proc/picking_roundstart_rule(list/drafted_rules = list(), forced = FALSE) - var/datum/dynamic_ruleset/roundstart/starting_rule = pick_weight(drafted_rules) + var/datum/dynamic_ruleset/roundstart/starting_rule = pickweight(drafted_rules) if(!starting_rule) log_game("DYNAMIC: Couldn't pick a starting ruleset. No rulesets available") return FALSE @@ -450,7 +450,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if(drafted_rules.len <= 0) log_game("DYNAMIC: Picking [starting_rule.name] failed due to blocking_rules and no more rulesets available. Report this.") return FALSE - starting_rule = pick_weight(drafted_rules) + starting_rule = pickweight(drafted_rules) // Check if the ruleset is highlander and if a highlander ruleset has been executed else if(starting_rule.flags & HIGHLANDER_RULESET) // Should already be filtered out, but making sure. Check filtering at end of proc if reported. if(threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) @@ -459,14 +459,14 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if(drafted_rules.len <= 0) log_game("DYNAMIC: Picking [starting_rule.name] failed due to no highlander stacking and no more rulesets available. Report this.") return FALSE - starting_rule = pick_weight(drafted_rules) + starting_rule = pickweight(drafted_rules) // With low pop and high threat there might be rulesets that get executed with no valid candidates. else if(!starting_rule.ready()) // Should already be filtered out, but making sure. Check filtering at end of proc if reported. drafted_rules -= starting_rule if(drafted_rules.len <= 0) log_game("DYNAMIC: Picking [starting_rule.name] failed because there were not enough candidates and no more rulesets available. Report this.") return FALSE - starting_rule = pick_weight(drafted_rules) + starting_rule = pickweight(drafted_rules) log_game("DYNAMIC: Picked a ruleset: [starting_rule.name]") @@ -512,7 +512,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /// Picks a random midround OR latejoin rule from the list given as an argument and executes it. /// Also this could be named better. /datum/game_mode/dynamic/proc/picking_midround_latejoin_rule(list/drafted_rules = list(), forced = FALSE) - var/datum/dynamic_ruleset/rule = pick_weight(drafted_rules) + var/datum/dynamic_ruleset/rule = pickweight(drafted_rules) if(!rule) return FALSE @@ -524,7 +524,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) drafted_rules -= rule if(drafted_rules.len <= 0) return FALSE - rule = pick_weight(drafted_rules) + rule = pickweight(drafted_rules) // Check if the ruleset is highlander and if a highlander ruleset has been executed else if(rule.flags & HIGHLANDER_RULESET) if(threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) @@ -532,7 +532,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) drafted_rules -= rule if(drafted_rules.len <= 0) return FALSE - rule = pick_weight(drafted_rules) + rule = pickweight(drafted_rules) if(!rule.repeatable) if(rule.ruletype == "Latejoin") diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index eca77ba4df5a..00bc1bc95e13 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -149,7 +149,7 @@ message_admins("Convert_roundtype failed due to no valid modes to convert to. Please report this error to the Coders.") return null - replacementmode = pick_weight(usable_modes) + replacementmode = pickweight(usable_modes) var/matc = CONFIG_GET(number/midround_antag_time_check) if(world.time >= (matc * 600)) @@ -272,7 +272,7 @@ reports += config.mode_reports[report_type] Count++ for(var/i in Count to rand(3,5)) //Between three and five wrong entries on the list. - var/false_report_type = pick_weight_allow_zero(report_weights) + var/false_report_type = pickweightAllowZero(report_weights) report_weights[false_report_type] = 0 //Make it so the same false report won't be selected twice reports += config.mode_reports[false_report_type] diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 93f3e5d98a15..7e9d90bb482f 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -50,7 +50,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event max_i-- if(max_i<=0) return - var/Me = pick_weight(meteortypes) + var/Me = pickweight(meteortypes) var/obj/effect/meteor/M = new Me(pickedstart, pickedgoal) M.dest = pickedgoal diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 4caca6b376d3..96fbbd8254d1 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -72,7 +72,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( var/list/gameodds = list(/obj/item/circuitboard/computer/arcade/battle = 49, /obj/item/circuitboard/computer/arcade/orion_trail = 49, /obj/item/circuitboard/computer/arcade/amputation = 2) - var/thegame = pick_weight(gameodds) + var/thegame = pickweight(gameodds) var/obj/item/circuitboard/CB = new thegame() new CB.build_path(loc, CB) return INITIALIZE_HINT_QDEL @@ -93,9 +93,9 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( return var/prizeselect if(prize_override) - prizeselect = pick_weight(prize_override) + prizeselect = pickweight(prize_override) else - prizeselect = pick_weight(GLOB.arcade_prize_pool) + prizeselect = pickweight(GLOB.arcade_prize_pool) var/atom/movable/the_prize = new prizeselect(get_turf(src)) playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) visible_message("[src] dispenses [the_prize]!", "You hear a chime and a clunk.") @@ -118,9 +118,9 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( num_of_prizes = rand(0,2) for(var/i = num_of_prizes; i > 0; i--) if(override) - empprize = pick_weight(prize_override) + empprize = pickweight(prize_override) else - empprize = pick_weight(GLOB.arcade_prize_pool) + empprize = pickweight(GLOB.arcade_prize_pool) new empprize(loc) explosion(loc, -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes) @@ -635,7 +635,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( event = ORION_TRAIL_COLLISION event() else if(prob(75-gamerSkill)) - event = pick_weight(events) + event = pickweight(events) if(lings_aboard) if(event == ORION_TRAIL_LING || prob(55-gamerSkill)) event = ORION_TRAIL_LING_ATTACK diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 495b4c9ab666..ccc3e4f0286a 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -1,6 +1,6 @@ /obj/effect/landmark name = "landmark" - icon = 'icons/effects/mapping/landmarks_static.dmi' + icon = 'icons/effects/landmarks_static.dmi' icon_state = "x2" anchored = TRUE layer = MID_LANDMARK_LAYER @@ -210,7 +210,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) return ..() /obj/effect/landmark/start/ai/secondary - icon = 'icons/effects/mapping/landmarks_static.dmi' + icon = 'icons/effects/landmarks_static.dmi' icon_state = "ai_spawn" primary_ai = FALSE latejoin_active = FALSE @@ -249,7 +249,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) /obj/effect/landmark/start/wizard name = "wizard" - icon = 'icons/effects/mapping/landmarks_static.dmi' + icon = 'icons/effects/landmarks_static.dmi' icon_state = "wiznerd_spawn" /obj/effect/landmark/start/wizard/Initialize() @@ -259,7 +259,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) /obj/effect/landmark/start/nukeop name = "nukeop" - icon = 'icons/effects/mapping/landmarks_static.dmi' + icon = 'icons/effects/landmarks_static.dmi' icon_state = "snukeop_spawn" /obj/effect/landmark/start/nukeop/Initialize() @@ -269,7 +269,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) /obj/effect/landmark/start/nukeop_leader name = "nukeop leader" - icon = 'icons/effects/mapping/landmarks_static.dmi' + icon = 'icons/effects/landmarks_static.dmi' icon_state = "snukeop_leader_spawn" /obj/effect/landmark/start/nukeop_leader/Initialize() diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index 986ad10eb187..73b96c29768c 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -9,6 +9,26 @@ /obj/effect/beam/singularity_pull() return +/obj/effect/spawner + name = "object spawner" + +// Brief explanation: +// Rather then setting up and then deleting spawners, we block all atomlike setup +// and do the absolute bare minimum +// This is with the intent of optimizing mapload +/obj/effect/spawner/Initialize(mapload) + SHOULD_CALL_PARENT(FALSE) + if(flags_1 & INITIALIZED_1) + stack_trace("Warning: [src]([type]) initialized multiple times!") + flags_1 |= INITIALIZED_1 + + return INITIALIZE_HINT_QDEL + +/obj/effect/spawner/Destroy(force) + SHOULD_CALL_PARENT(FALSE) + moveToNullspace() + return QDEL_HINT_QUEUE + /obj/effect/list_container name = "list container" diff --git a/code/game/objects/effects/spawners/bundle.dm b/code/game/objects/effects/spawners/bundle.dm index 8ccaf334feae..f9f465bf47ab 100644 --- a/code/game/objects/effects/spawners/bundle.dm +++ b/code/game/objects/effects/spawners/bundle.dm @@ -1,150 +1,134 @@ -/obj/effect/spawner/costume - name = "costume spawner" +/obj/effect/spawner/bundle + name = "bundle spawner" icon = 'icons/hud/screen_gen.dmi' icon_state = "x2" - color = COLOR_VIBRANT_LIME + color = "#00FF00" var/list/items -/obj/effect/spawner/costume/Initialize(mapload) +/obj/effect/spawner/bundle/Initialize(mapload) . = ..() - if(items?.len) + if(items && items.len) for(var/path in items) new path(loc) -/obj/effect/spawner/costume/gladiator +/obj/effect/spawner/bundle/costume/gladiator name = "gladiator costume spawner" items = list( /obj/item/clothing/under/costume/gladiator, - /obj/item/clothing/head/helmet/gladiator - ) + /obj/item/clothing/head/helmet/gladiator) -/obj/effect/spawner/costume/madscientist +/obj/effect/spawner/bundle/costume/madscientist name = "mad scientist costume spawner" items = list( /obj/item/clothing/under/rank/command/captain/suit, /obj/item/clothing/head/flatcap, - /obj/item/clothing/suit/toggle/labcoat/mad - ) + /obj/item/clothing/suit/toggle/labcoat/mad) -/obj/effect/spawner/costume/elpresidente +/obj/effect/spawner/bundle/costume/elpresidente name = "el presidente costume spawner" items = list( /obj/item/clothing/under/rank/command/captain/suit, /obj/item/clothing/head/flatcap, /obj/item/clothing/mask/cigarette/cigar/havana, - /obj/item/clothing/shoes/jackboots - ) + /obj/item/clothing/shoes/jackboots) -/obj/effect/spawner/costume/nyangirl +/obj/effect/spawner/bundle/costume/nyangirl name = "nyangirl costume spawner" items = list( /obj/item/clothing/under/costume/schoolgirl, /obj/item/clothing/head/kitty, - /obj/item/clothing/glasses/blindfold - ) + /obj/item/clothing/glasses/blindfold) -/obj/effect/spawner/costume/maid +/obj/effect/spawner/bundle/costume/maid name = "maid costume spawner" items = list( /obj/item/clothing/under/dress/skirt/color, - /obj/effect/spawner/random/clothing/beret_or_rabbitears, - /obj/item/clothing/glasses/blindfold - ) + /obj/effect/spawner/lootdrop/minor/beret_or_rabbitears, + /obj/item/clothing/glasses/blindfold) -/obj/effect/spawner/costume/butler + +/obj/effect/spawner/bundle/costume/butler name = "butler costume spawner" items = list( /obj/item/clothing/accessory/waistcoat, /obj/item/clothing/under/suit/black, - /obj/item/clothing/head/that - ) + /obj/item/clothing/head/that) -/obj/effect/spawner/costume/highlander +/obj/effect/spawner/bundle/costume/highlander name = "highlander costume spawner" items = list( /obj/item/clothing/under/costume/kilt, - /obj/item/clothing/head/beret - ) + /obj/item/clothing/head/beret) -/obj/effect/spawner/costume/prig +/obj/effect/spawner/bundle/costume/prig name = "prig costume spawner" items = list( /obj/item/clothing/accessory/waistcoat, - /obj/effect/spawner/random/clothing/bowler_or_that, + /obj/effect/spawner/lootdrop/minor/bowler_or_that, /obj/item/clothing/shoes/sneakers/black, /obj/item/cane, /obj/item/clothing/under/suit/sl, - /obj/item/clothing/mask/fakemoustache - ) + /obj/item/clothing/mask/fakemoustache) -/obj/effect/spawner/costume/plaguedoctor +/obj/effect/spawner/bundle/costume/plaguedoctor name = "plague doctor costume spawner" items = list( /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, - /obj/item/clothing/mask/gas/plaguedoctor - ) + /obj/item/clothing/mask/gas/plaguedoctor) -/obj/effect/spawner/costume/nightowl +/obj/effect/spawner/bundle/costume/nightowl name = "night owl costume spawner" items = list( /obj/item/clothing/suit/toggle/owlwings, /obj/item/clothing/under/costume/owl, - /obj/item/clothing/mask/gas/owl_mask - ) + /obj/item/clothing/mask/gas/owl_mask) -/obj/effect/spawner/costume/waiter +/obj/effect/spawner/bundle/costume/waiter name = "waiter costume spawner" items = list( /obj/item/clothing/under/suit/waiter, - /obj/effect/spawner/random/clothing/kittyears_or_rabbitears, - /obj/item/clothing/suit/apron - ) + /obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, + /obj/item/clothing/suit/apron) -/obj/effect/spawner/costume/pirate +/obj/effect/spawner/bundle/costume/pirate name = "pirate costume spawner" items = list( /obj/item/clothing/under/costume/pirate, /obj/item/clothing/suit/pirate, - /obj/effect/spawner/random/clothing/pirate_or_bandana, - /obj/item/clothing/glasses/eyepatch - ) + /obj/effect/spawner/lootdrop/minor/pirate_or_bandana, + /obj/item/clothing/glasses/eyepatch) -/obj/effect/spawner/costume/cutewitch +/obj/effect/spawner/bundle/costume/cutewitch name = "cute witch costume spawner" items = list( /obj/item/clothing/under/dress/sundress, - /obj/item/staff/broom - ) + /obj/item/staff/broom) -/obj/effect/spawner/costume/mafia +/obj/effect/spawner/bundle/costume/mafia name = "black mafia outfit spawner" items = list( /obj/item/clothing/head/fedora, /obj/item/clothing/under/suit/blacktwopiece, - /obj/item/clothing/shoes/laceup - ) + /obj/item/clothing/shoes/laceup) -/obj/effect/spawner/costume/mafia/white +/obj/effect/spawner/bundle/costume/mafia/white name = "white mafia outfit spawner" items = list( /obj/item/clothing/head/fedora/white, /obj/item/clothing/under/suit/white, - /obj/item/clothing/shoes/laceup - ) + /obj/item/clothing/shoes/laceup) -/obj/effect/spawner/costume/mafia/checkered +/obj/effect/spawner/bundle/costume/mafia/checkered name = "checkered mafia outfit spawner" items = list( /obj/item/clothing/head/fedora, /obj/item/clothing/under/suit/checkered, - /obj/item/clothing/shoes/laceup - ) + /obj/item/clothing/shoes/laceup) -/obj/effect/spawner/costume/mafia/beige +/obj/effect/spawner/bundle/costume/mafia/beige name = "beige mafia outfit spawner" items = list( /obj/item/clothing/head/fedora/beige, /obj/item/clothing/under/suit/beige, - /obj/item/clothing/shoes/laceup - ) + /obj/item/clothing/shoes/laceup) diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm new file mode 100644 index 000000000000..b0239c8f5fdd --- /dev/null +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -0,0 +1,1314 @@ +/obj/effect/spawner/lootdrop + icon = 'icons/effects/landmarks_static.dmi' + icon_state = "random_loot" + layer = OBJ_LAYER + var/lootcount = 1 //how many items will be spawned + var/lootdoubles = TRUE //if the same item can be spawned twice + var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect) + var/fan_out_items = FALSE //Whether the items should be distributed to offsets 0,1,-1,2,-2,3,-3.. This overrides pixel_x/y on the spawner itself + +/obj/effect/spawner/lootdrop/Initialize(mapload) + . = ..() + if(loot && loot.len) + var/loot_spawned = 0 + while((lootcount-loot_spawned) && loot.len) + var/lootspawn = pickweight_float(loot) // WS edit - Fix various startup runtimes + while(islist(lootspawn)) + lootspawn = pickweight_float(lootspawn) // WS edit - Fix various startup runtimes + if(!lootdoubles) + loot.Remove(lootspawn) + + if(lootspawn) + var/atom/movable/spawned_loot = new lootspawn(loc) + if (!fan_out_items) + if (pixel_x != 0) + spawned_loot.pixel_x = pixel_x + if (pixel_y != 0) + spawned_loot.pixel_y = pixel_y + else + if (loot_spawned) + spawned_loot.pixel_x = spawned_loot.pixel_y = ((!(loot_spawned%2)*loot_spawned/2)*-1)+((loot_spawned%2)*(loot_spawned+1)/2*1) + else + break // WS edit - Support spawn weights of 0 in loot tables and ruins + loot_spawned++ + +/obj/effect/spawner/lootdrop/donkpockets + name = "donk pocket box spawner" + lootdoubles = FALSE + + loot = list( + /obj/item/storage/box/donkpockets/donkpocketspicy = 1, + /obj/item/storage/box/donkpockets/donkpocketteriyaki = 1, + /obj/item/storage/box/donkpockets/donkpocketpizza = 1, + /obj/item/storage/box/donkpockets/donkpocketberry = 1, + /obj/item/storage/box/donkpockets/donkpockethonk = 1, + ) + + +/obj/effect/spawner/lootdrop/armory_contraband + name = "armory contraband gun spawner" + lootdoubles = FALSE + + loot = list( + /obj/item/gun/ballistic/automatic/pistol/ringneck = 8, + /obj/item/gun/ballistic/shotgun/automatic/combat = 5, + /obj/item/gun/ballistic/automatic/pistol/deagle, + /obj/item/gun/ballistic/revolver/mateba + ) + +/obj/effect/spawner/lootdrop/armory_contraband/metastation + loot = list(/obj/item/gun/ballistic/automatic/pistol/ringneck = 5, + /obj/item/gun/ballistic/shotgun/automatic/combat = 5, + /obj/item/gun/ballistic/automatic/pistol/deagle, + /obj/item/storage/box/syndie_kit/throwing_weapons = 3, + /obj/item/gun/ballistic/revolver/mateba) + +/obj/effect/spawner/lootdrop/armory_contraband/donutstation + loot = list(/obj/item/grenade/clusterbuster/teargas = 5, + /obj/item/gun/ballistic/shotgun/automatic/combat = 5, + /obj/item/bikehorn/golden, + /obj/item/grenade/clusterbuster, + /obj/item/storage/box/syndie_kit/throwing_weapons = 3, + /obj/item/gun/ballistic/revolver/mateba) + +/obj/effect/spawner/lootdrop/prison_contraband + name = "prison contraband loot spawner" + loot = list(/obj/item/clothing/mask/cigarette/space_cigarette = 4, + /obj/item/clothing/mask/cigarette/robust = 2, + /obj/item/clothing/mask/cigarette/carp = 3, + /obj/item/clothing/mask/cigarette/uplift = 2, + /obj/item/clothing/mask/cigarette/dromedary = 3, + /obj/item/clothing/mask/cigarette/robustgold = 1, + /obj/item/storage/fancy/cigarettes/cigpack_uplift = 3, + /obj/item/storage/fancy/cigarettes = 3, + /obj/item/clothing/mask/cigarette/rollie/cannabis = 4, + /obj/item/toy/crayon/spraycan = 2, + /obj/item/crowbar = 1, + /obj/item/assembly/flash/handheld = 1, + /obj/item/restraints/handcuffs/cable/zipties = 1, + /obj/item/restraints/handcuffs = 1, + /obj/item/radio = 1, + /obj/item/lighter = 3, + /obj/item/storage/box/matches = 3, + /obj/item/reagent_containers/syringe/contraband/space_drugs = 1, + /obj/item/reagent_containers/syringe/contraband/krokodil = 1, + /obj/item/reagent_containers/syringe/contraband/crank = 1, + /obj/item/reagent_containers/syringe/contraband/methamphetamine = 1, + /obj/item/reagent_containers/syringe/contraband/bath_salts = 1, + /obj/item/reagent_containers/syringe/contraband/fentanyl = 1, + /obj/item/reagent_containers/syringe/contraband/morphine = 1, + /obj/item/storage/pill_bottle/happy = 1, + /obj/item/storage/pill_bottle/lsd = 1, + /obj/item/storage/pill_bottle/psicodine = 1, + /obj/item/reagent_containers/food/drinks/beer = 4, + /obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, + /obj/item/paper/fluff/jobs/prisoner/letter = 1, + /obj/item/grenade/smokebomb = 1, + /obj/item/flashlight/seclite = 1, + /obj/item/melee/knife/shiv = 4, + /obj/item/melee/knife/shiv/carrot = 1, + /obj/item/melee/knife/kitchen = 1, + /obj/item/storage/wallet/random = 1, + /obj/item/pda = 1 + ) + +/obj/effect/spawner/lootdrop/gambling + name = "gambling valuables spawner" + loot = list( + /obj/item/clothing/head/trapper = 3, + /obj/item/storage/box/syndie_kit/throwing_weapons, + /obj/item/coin/gold, + /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, + ) + +/obj/effect/spawner/lootdrop/grille_or_trash + name = "maint grille or trash spawner" + loot = list(/obj/structure/grille = 5, + /obj/item/flashlight/flare/burnt = 1, + /obj/item/cigbutt = 1, + /obj/item/trash/cheesie = 1, + /obj/item/trash/candy = 1, + /obj/item/trash/chips = 1, + /obj/item/reagent_containers/food/snacks/deadmouse = 1, + /obj/item/trash/pistachios = 1, + /obj/item/trash/plate = 1, + /obj/item/trash/popcorn = 1, + /obj/item/trash/raisins = 1, + /obj/item/trash/sosjerky = 1, + /obj/item/trash/syndi_cakes = 1) + +/obj/effect/spawner/lootdrop/three_course_meal + name = "three course meal spawner" + lootcount = 3 + lootdoubles = FALSE + var/soups = list( + /obj/item/reagent_containers/food/snacks/soup/beet, + /obj/item/reagent_containers/food/snacks/soup/sweetpotato, + /obj/item/reagent_containers/food/snacks/soup/stew, + /obj/item/reagent_containers/food/snacks/soup/hotchili, + /obj/item/reagent_containers/food/snacks/soup/nettle, + /obj/item/reagent_containers/food/snacks/soup/meatball) + var/salads = list( + /obj/item/reagent_containers/food/snacks/salad/herbsalad, + /obj/item/reagent_containers/food/snacks/salad/validsalad, + /obj/item/reagent_containers/food/snacks/salad/fruit, + /obj/item/reagent_containers/food/snacks/salad/jungle, + /obj/item/reagent_containers/food/snacks/salad/aesirsalad) + var/mains = list( + /obj/item/reagent_containers/food/snacks/bearsteak, + /obj/item/reagent_containers/food/snacks/enchiladas, + /obj/item/reagent_containers/food/snacks/stewedsoymeat, + /obj/item/reagent_containers/food/snacks/burger/bigbite, + /obj/item/reagent_containers/food/snacks/burger/superbite, + /obj/item/reagent_containers/food/snacks/burger/fivealarm) + +/obj/effect/spawner/lootdrop/three_course_meal/Initialize(mapload) + loot = list(pick(soups) = 1,pick(salads) = 1,pick(mains) = 1) + . = ..() + +/obj/effect/spawner/lootdrop/maintenance + name = "maintenance loot spawner" + // see code/_globalvars/lists/maintenance_loot.dm for loot table + +/obj/effect/spawner/lootdrop/maintenance/Initialize(mapload) + loot = GLOB.maintenance_loot + . = ..() + +/obj/effect/spawner/lootdrop/maintenance/two + name = "2 x maintenance loot spawner" + lootcount = 2 + +/obj/effect/spawner/lootdrop/maintenance/three + name = "3 x maintenance loot spawner" + lootcount = 3 + +/obj/effect/spawner/lootdrop/maintenance/four + name = "4 x maintenance loot spawner" + lootcount = 4 + +/obj/effect/spawner/lootdrop/maintenance/five + name = "5 x maintenance loot spawner" + lootcount = 5 + +/obj/effect/spawner/lootdrop/maintenance/six + name = "6 x maintenance loot spawner" + lootcount = 6 + +/obj/effect/spawner/lootdrop/maintenance/seven + name = "7 x maintenance loot spawner" + lootcount = 7 + +/obj/effect/spawner/lootdrop/maintenance/eight + name = "8 x maintenance loot spawner" + lootcount = 8 + +/obj/effect/spawner/lootdrop/crate_spawner + name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF! + lootdoubles = FALSE + + loot = list( + /obj/structure/closet/crate/secure/loot = 20, + "" = 80 + ) + +/obj/effect/spawner/lootdrop/organ_spawner + name = "ayylien organ spawner" + loot = list( + /obj/item/organ/heart/gland/electric = 3, + /obj/item/organ/heart/gland/trauma = 4, + /obj/item/organ/heart/gland/egg = 7, + /obj/item/organ/heart/gland/chem = 5, + /obj/item/organ/heart/gland/mindshock = 5, + /obj/item/organ/heart/gland/plasma = 7, + /obj/item/organ/heart/gland/transform = 5, + /obj/item/organ/heart/gland/slime = 4, + /obj/item/organ/heart/gland/spiderman = 5, + /obj/item/organ/heart/gland/ventcrawling = 1, + /obj/item/organ/body_egg/alien_embryo = 1, + /obj/item/organ/regenerative_core = 2) + lootcount = 3 + +/obj/effect/spawner/lootdrop/memeorgans + name = "meme organ spawner" + loot = list( + /obj/item/organ/ears/penguin, + /obj/item/organ/ears/cat, + /obj/item/organ/eyes/compound, + /obj/item/organ/eyes/snail, + /obj/item/organ/tongue/bone, + /obj/item/organ/tongue/fly, + /obj/item/organ/tongue/snail, + /obj/item/organ/tongue/lizard, + /obj/item/organ/tongue/alien, + /obj/item/organ/tongue/ethereal, + /obj/item/organ/tongue/robot, + /obj/item/organ/tongue/zombie, + /obj/item/organ/appendix, + /obj/item/organ/liver/fly, + /obj/item/organ/lungs/plasmaman, + /obj/item/organ/tail/cat, + /obj/item/organ/tail/lizard) + lootcount = 5 + +/obj/effect/spawner/lootdrop/rnd + name = "random RND spawner" + loot = list( + /obj/item/storage/box/rndmining, + /obj/item/storage/box/rndengi, + /obj/item/storage/box/rndsec, + /obj/item/storage/box/rndciv, + /obj/item/storage/box/rndmed) + lootcount = 1 + +/obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner + name = "2% chance xeno egg spawner" + loot = list( + /obj/effect/decal/remains/xeno = 49, + /obj/effect/spawner/xeno_egg_delivery = 1) + +/obj/effect/spawner/lootdrop/costume + name = "random costume spawner" + +/obj/effect/spawner/lootdrop/costume/Initialize() + loot = list() + for(var/path in subtypesof(/obj/effect/spawner/bundle/costume)) + loot[path] = TRUE + . = ..() + +// Minor lootdrops follow + +/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears + name = "beret or rabbit ears spawner" + loot = list( + /obj/item/clothing/head/beret = 1) + +/obj/effect/spawner/lootdrop/minor/bowler_or_that + name = "bowler or top hat spawner" + loot = list( + /obj/item/clothing/head/that = 1) + +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears + name = "kitty ears or rabbit ears spawner" + loot = list( + /obj/item/clothing/head/kitty = 1) + +/obj/effect/spawner/lootdrop/minor/pirate_or_bandana + name = "pirate hat or bandana spawner" + loot = list( + /obj/item/clothing/head/pirate = 1, + /obj/item/clothing/head/bandana = 1) + +/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask + name = "25% cyborg mask spawner" + loot = list( + /obj/item/clothing/mask/gas/cyborg = 25, + "" = 75) + +/obj/effect/spawner/lootdrop/aimodule_harmless // These shouldn't allow the AI to start butchering people + name = "harmless AI module spawner" + loot = list( + /obj/item/aiModule/core/full/asimov, + /obj/item/aiModule/core/full/asimovpp, + /obj/item/aiModule/core/full/hippocratic, + /obj/item/aiModule/core/full/paladin_devotion, + /obj/item/aiModule/core/full/paladin + ) + +/obj/effect/spawner/lootdrop/aimodule_neutral // These shouldn't allow the AI to start butchering people without reason + name = "neutral AI module spawner" + loot = list( + /obj/item/aiModule/core/full/corp, + /obj/item/aiModule/core/full/maintain, + /obj/item/aiModule/core/full/drone, + /obj/item/aiModule/core/full/peacekeeper, + /obj/item/aiModule/core/full/reporter, + /obj/item/aiModule/core/full/robocop, + /obj/item/aiModule/core/full/liveandletlive, + /obj/item/aiModule/core/full/hulkamania + ) + +/obj/effect/spawner/lootdrop/aimodule_harmful // These will get the shuttle called + name = "harmful AI module spawner" + loot = list( + /obj/item/aiModule/core/full/antimov, + /obj/item/aiModule/core/full/balance, + /obj/item/aiModule/core/full/tyrant, + /obj/item/aiModule/core/full/thermurderdynamic, + /obj/item/aiModule/core/full/damaged, + /obj/item/aiModule/reset/purge + ) + +// Tech storage circuit board spawners + +/obj/effect/spawner/lootdrop/techstorage + name = "generic circuit board spawner" + lootdoubles = FALSE + fan_out_items = TRUE + lootcount = INFINITY + +/obj/effect/spawner/lootdrop/techstorage/service + name = "service circuit board spawner" + loot = list( + /obj/item/circuitboard/computer/arcade/battle, + /obj/item/circuitboard/computer/arcade/orion_trail, + /obj/item/circuitboard/machine/autolathe, + /obj/item/circuitboard/computer/mining, + /obj/item/circuitboard/machine/ore_redemption, + /obj/item/circuitboard/machine/vending/mining_equipment, + /obj/item/circuitboard/machine/microwave, + /obj/item/circuitboard/machine/chem_dispenser/drinks, + /obj/item/circuitboard/machine/chem_dispenser/drinks/beer, + /obj/item/circuitboard/computer/slot_machine + ) + +/obj/effect/spawner/lootdrop/techstorage/rnd + name = "RnD circuit board spawner" + loot = list( + /obj/item/circuitboard/computer/aifixer, + /obj/item/circuitboard/machine/rdserver, + /obj/item/circuitboard/machine/mechfab, + /obj/item/circuitboard/machine/circuit_imprinter/department, + /obj/item/circuitboard/computer/teleporter, + /obj/item/circuitboard/machine/destructive_analyzer, + /obj/item/circuitboard/computer/rdconsole, + /obj/item/circuitboard/computer/nanite_chamber_control, + /obj/item/circuitboard/computer/nanite_cloud_controller, + /obj/item/circuitboard/machine/nanite_chamber, + /obj/item/circuitboard/machine/nanite_programmer, + /obj/item/circuitboard/machine/nanite_program_hub + ) + +/obj/effect/spawner/lootdrop/techstorage/security + name = "security circuit board spawner" + loot = list( + /obj/item/circuitboard/computer/secure_data, + /obj/item/circuitboard/computer/security, + /obj/item/circuitboard/computer/prisoner + ) + +/obj/effect/spawner/lootdrop/techstorage/engineering + name = "engineering circuit board spawner" + loot = list( + /obj/item/circuitboard/computer/atmos_alert, + /obj/item/circuitboard/computer/stationalert, + /obj/item/circuitboard/computer/powermonitor + ) + +/obj/effect/spawner/lootdrop/techstorage/tcomms + name = "tcomms circuit board spawner" + loot = list( + /obj/item/circuitboard/computer/message_monitor, + /obj/item/circuitboard/machine/telecomms/broadcaster, + /obj/item/circuitboard/machine/telecomms/bus, + /obj/item/circuitboard/machine/telecomms/server, + /obj/item/circuitboard/machine/telecomms/receiver, + /obj/item/circuitboard/machine/telecomms/processor, + /obj/item/circuitboard/machine/announcement_system, + /obj/item/circuitboard/computer/comm_server, + /obj/item/circuitboard/computer/comm_monitor + ) + +/obj/effect/spawner/lootdrop/techstorage/medical + name = "medical circuit board spawner" + loot = list( + /obj/item/circuitboard/machine/chem_dispenser, + /obj/item/circuitboard/computer/scan_consolenew, + /obj/item/circuitboard/computer/med_data, + /obj/item/circuitboard/machine/smoke_machine, + /obj/item/circuitboard/machine/chem_master, + /obj/item/circuitboard/machine/dnascanner, + /obj/item/circuitboard/computer/pandemic + ) + +/obj/effect/spawner/lootdrop/techstorage/AI + name = "secure AI circuit board spawner" + loot = list( + /obj/item/circuitboard/computer/aiupload, + /obj/item/circuitboard/computer/borgupload, + /obj/item/circuitboard/aicore + ) + +/obj/effect/spawner/lootdrop/techstorage/command + name = "secure command circuit board spawner" + loot = list( + /obj/item/circuitboard/computer/crew, + /obj/item/circuitboard/computer/communications, + /obj/item/circuitboard/computer/card + ) + +/obj/effect/spawner/lootdrop/techstorage/RnD_secure + name = "secure RnD circuit board spawner" + loot = list( + /obj/item/circuitboard/computer/mecha_control, + /obj/item/circuitboard/computer/apc_control, + /obj/item/circuitboard/computer/robotics + ) + +/obj/effect/spawner/lootdrop/mafia_outfit + name = "mafia outfit spawner" + loot = list( + /obj/effect/spawner/bundle/costume/mafia = 20, + /obj/effect/spawner/bundle/costume/mafia/white = 5, + /obj/effect/spawner/bundle/costume/mafia/checkered = 2, + /obj/effect/spawner/bundle/costume/mafia/beige = 5 + ) + +/obj/effect/spawner/lootdrop/salvage_machine + name = "salvageable machine spawner" + loot = list( + /obj/structure/salvageable/protolathe, + /obj/structure/salvageable/circuit_imprinter, + /obj/structure/salvageable/server, + /obj/structure/salvageable/machine, + /obj/structure/salvageable/autolathe, + /obj/structure/salvageable/computer, + /obj/structure/salvageable/destructive_analyzer + ) + +/obj/effect/spawner/lootdrop/ripley + name = "25% exosuit 75% wreckage ripley spawner" + loot = list(/obj/mecha/working/ripley/mining = 1, + /obj/structure/mecha_wreckage/ripley = 5) + lootdoubles = FALSE + +/obj/effect/spawner/lootdrop/salvage_50 + name = "50% salvage spawner" + loot = list( + /obj/effect/spawner/lootdrop/maintenance = 13, + /obj/effect/spawner/lootdrop/salvage_machine = 12, + /obj/effect/spawner/lootdrop/ripley = 12, + /obj/structure/closet/crate/secure/loot = 13, + "" = 50 + ) + +//finds the probabilities of items spawning from a loot spawner's loot pool +/obj/item/loot_table_maker + icon = 'icons/effects/landmarks_static.dmi' + icon_state = "random_loot" + var/spawner_to_test = /obj/effect/spawner/lootdrop/maintenance //what lootdrop spawner to use the loot pool of + var/loot_count = 180 //180 is about how much maint loot spawns per map as of 11/14/2019 + //result outputs + var/list/spawned_table //list of all items "spawned" and how many + var/list/stat_table //list of all items "spawned" and their occurrance probability + +/obj/item/loot_table_maker/Initialize() + . = ..() + make_table() + +/obj/item/loot_table_maker/attack_self(mob/user) + to_chat(user, "Loot pool re-rolled.") + make_table() + +/obj/item/loot_table_maker/proc/make_table() + spawned_table = list() + stat_table = list() + var/obj/effect/spawner/lootdrop/spawner_to_table = new spawner_to_test + var/lootpool = spawner_to_table.loot + qdel(spawner_to_table) + for(var/i in 1 to loot_count) + var/loot_spawn = pick_loot(lootpool) + if(!loot_spawn) // WS edit - Support spawn weights of 0 in loot tables and ruins + continue + if(!(loot_spawn in spawned_table)) + spawned_table[loot_spawn] = 1 + else + spawned_table[loot_spawn] += 1 + stat_table += spawned_table + for(var/item in stat_table) + stat_table[item] /= loot_count + +/obj/item/loot_table_maker/proc/pick_loot(lootpool) //selects path from loot table and returns it + var/lootspawn = pickweight_float(lootpool) // WS edit - Fix various startup runtimes + while(islist(lootspawn)) + lootspawn = pickweight_float(lootspawn) // WS edit - Fix various startup runtimes + return lootspawn + +/obj/effect/spawner/lootdrop/stockparts + name = "random good stock parts" + lootcount = 6 + loot = list( + /obj/item/stock_parts/capacitor/adv, + /obj/item/stock_parts/capacitor/quadratic, + /obj/item/stock_parts/capacitor/super, + /obj/item/stock_parts/cell/hyper, + /obj/item/stock_parts/cell/super, + /obj/item/stock_parts/cell/bluespace, + /obj/item/stock_parts/matter_bin/bluespace, + /obj/item/stock_parts/matter_bin/super, + /obj/item/stock_parts/matter_bin/adv, + /obj/item/stock_parts/micro_laser/ultra, + /obj/item/stock_parts/micro_laser/quadultra, + /obj/item/stock_parts/micro_laser/high, + /obj/item/stock_parts/scanning_module/triphasic, + /obj/item/stock_parts/scanning_module/phasic, + /obj/item/stock_parts/scanning_module/adv, + /obj/item/reagent_containers/glass/beaker/bluespace, + /obj/item/reagent_containers/glass/beaker/plastic, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/stock_parts/manipulator/nano, + /obj/item/stock_parts/manipulator/pico, + /obj/item/stock_parts/manipulator/femto + ) + +/obj/effect/spawner/lootdrop/materials + name = "random bulk materials" + lootcount = 2 + loot = list( + /obj/item/stack/sheet/plastic/fifty, + /obj/item/stack/sheet/bluespace_crystal/twenty, + /obj/item/stack/sheet/cardboard/fifty, + /obj/item/stack/sheet/glass/fifty, + /obj/item/stack/sheet/metal/fifty, + /obj/item/stack/sheet/plasteel/twenty, + /obj/item/stack/sheet/mineral/plasma/fifty, + /obj/item/stack/sheet/mineral/silver/fifty, + /obj/item/stack/sheet/mineral/titanium/fifty, + /obj/item/stack/sheet/mineral/uranium/fifty, + /obj/item/stack/sheet/mineral/wood/fifty, + /obj/item/stack/sheet/mineral/diamond/twenty, + /obj/item/stack/sheet/mineral/gold/fifty, + + /obj/item/stack/cable_coil/red, + /obj/item/stack/rods/fifty + ) + +/obj/effect/spawner/lootdrop/singularitygen + name = "Tesla or Singulo spawner" + lootdoubles = FALSE + + loot = list( + /obj/machinery/the_singularitygen/tesla = 1, + /obj/machinery/the_singularitygen = 1, + ) + +/obj/effect/spawner/lootdrop/stockparts + name = "random good stock parts" + lootcount = 5 + loot = list( + /obj/item/stock_parts/capacitor/adv, + /obj/item/stock_parts/capacitor/quadratic, + /obj/item/stock_parts/capacitor/super, + /obj/item/stock_parts/cell/hyper, + /obj/item/stock_parts/cell/super, + /obj/item/stock_parts/cell/bluespace, + /obj/item/stock_parts/matter_bin/bluespace, + /obj/item/stock_parts/matter_bin/super, + /obj/item/stock_parts/matter_bin/adv, + /obj/item/stock_parts/micro_laser/ultra, + /obj/item/stock_parts/micro_laser/quadultra, + /obj/item/stock_parts/micro_laser/high, + /obj/item/stock_parts/scanning_module/triphasic, + /obj/item/stock_parts/scanning_module/phasic, + /obj/item/stock_parts/scanning_module/adv, + /obj/item/reagent_containers/glass/beaker/bluespace, + /obj/item/reagent_containers/glass/beaker/plastic, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/stock_parts/manipulator/nano, + /obj/item/stock_parts/manipulator/pico, + /obj/item/stock_parts/manipulator/femto + ) + +/obj/effect/spawner/lootdrop/materials + name = "random materials" + lootcount = 3 + loot = list( + /obj/item/stack/sheet/plastic/fifty, + /obj/item/stack/sheet/plastic/five, + /obj/item/stack/sheet/bluespace_crystal/twenty, + /obj/item/stack/sheet/bluespace_crystal/five, + /obj/item/stack/sheet/cardboard/fifty, + /obj/item/stack/sheet/glass/fifty, + /obj/item/stack/sheet/metal/fifty, + /obj/item/stack/sheet/metal/twenty, + /obj/item/stack/sheet/plasteel/twenty, + /obj/item/stack/sheet/mineral/plasma/fifty, + /obj/item/stack/sheet/mineral/plasma/twenty, + /obj/item/stack/sheet/mineral/silver/fifty, + /obj/item/stack/sheet/mineral/titanium/twenty, + /obj/item/stack/sheet/mineral/uranium/twenty, + /obj/item/stack/sheet/mineral/wood/fifty, + /obj/item/stack/sheet/mineral/diamond/twenty, + /obj/item/stack/sheet/mineral/gold/fifty, + /obj/item/stack/cable_coil/red, + /obj/item/stack/rods/fifty + ) + +/obj/effect/spawner/lootdrop/donut + name = "random donut" //donut :) + lootcount = 1 + loot = list( + /obj/item/reagent_containers/food/snacks/donut/apple = 1, + /obj/item/reagent_containers/food/snacks/donut/berry = 1, + /obj/item/reagent_containers/food/snacks/donut/caramel = 1, + /obj/item/reagent_containers/food/snacks/donut/choco = 1, + /obj/item/reagent_containers/food/snacks/donut/laugh = 1, + /obj/item/reagent_containers/food/snacks/donut/matcha = 1, + /obj/item/reagent_containers/food/snacks/donut/meat = 1, + /obj/item/reagent_containers/food/snacks/donut/plain = 1, + /obj/item/reagent_containers/food/snacks/donut/trumpet = 1, + /obj/item/reagent_containers/food/snacks/donut/blumpkin = 1, + /obj/item/reagent_containers/food/snacks/donut/bungo = 1, + /obj/item/reagent_containers/food/snacks/donut/chaos = 1, + ) + +/obj/effect/spawner/lootdrop/donut/jelly + name = "random jelly donut" + lootcount = 1 + loot = list( + /obj/item/reagent_containers/food/snacks/donut/jelly/berry = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/apple = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/blumpkin = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/bungo = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/caramel = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/choco = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/laugh = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/matcha = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/plain = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/trumpet = 1, + ) + +/obj/effect/spawner/lootdrop/donut/slimejelly + name = "random slimejelly donut" + lootcount = 1 + loot = list( + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/apple = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/berry = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/blumpkin = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/bungo = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/caramel = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/choco = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/laugh = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/matcha = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/plain = 1, + /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/trumpet = 1, + ) + +/obj/effect/spawner/lootdrop/seeded + name = "GO FORTH AND CULTIVATE" + icon = 'icons/obj/hydroponics/seeds.dmi' + icon_state = "seed"//sneed + loot = list( + /obj/item/seeds/aloe, + /obj/item/seeds/ambrosia, + /obj/item/seeds/apple, + /obj/item/seeds/cotton, + /obj/item/seeds/banana, + /obj/item/seeds/berry, + /obj/item/seeds/cabbage, + /obj/item/seeds/carrot, + /obj/item/seeds/cherry, + /obj/item/seeds/chanter, + /obj/item/seeds/chili, + /obj/item/seeds/cocoapod, + /obj/item/seeds/coffee, + /obj/item/seeds/corn, + /obj/item/seeds/eggplant, + /obj/item/seeds/garlic, + /obj/item/seeds/grape, + /obj/item/seeds/grass, + /obj/item/seeds/lemon, + /obj/item/seeds/lime, + /obj/item/seeds/onion, + /obj/item/seeds/orange, + /obj/item/seeds/peas, + /obj/item/seeds/pineapple, + /obj/item/seeds/potato, + /obj/item/seeds/poppy, + /obj/item/seeds/pumpkin, + /obj/item/seeds/wheat/rice, + /obj/item/seeds/soya, + /obj/item/seeds/sugarcane, + /obj/item/seeds/sunflower, + /obj/item/seeds/tea, + /obj/item/seeds/tobacco, + /obj/item/seeds/tomato, + /obj/item/seeds/tower, + /obj/item/seeds/watermelon, + /obj/item/seeds/wheat, + /obj/item/seeds/whitebeet, + /obj/item/seeds/amanita, + /obj/item/seeds/glowshroom, + /obj/item/seeds/liberty, + /obj/item/seeds/nettle, + /obj/item/seeds/plump, + /obj/item/seeds/reishi, + /obj/item/seeds/cannabis, + /obj/item/seeds/starthistle, + /obj/item/seeds/cherry/bomb, + /obj/item/seeds/berry/glow, + /obj/item/seeds/sunflower/moonflower + ) + +/obj/effect/spawner/lootdrop/flora + name = "random flora spawner" + loot = list( + /obj/structure/flora/tree/chapel, + /obj/structure/flora/tree/pine, + /obj/structure/flora/tree/jungle/small, + /obj/structure/flora/tree/jungle, + /obj/structure/flora/ash/puce, + /obj/structure/flora/ash/fireblossom, + /obj/structure/flora/ash/fern, + /obj/structure/flora/ash/tall_shroom, + /obj/structure/flora/ash/stem_shroom, + /obj/structure/flora/ash/space/voidmelon, + /obj/structure/flora/ash/leaf_shroom, + /obj/structure/flora/junglebush/large, + /obj/structure/flora/junglebush/b, + /obj/structure/flora/junglebush/c, + /obj/structure/flora/ausbushes/fernybush, + /obj/structure/flora/ausbushes/genericbush, + /obj/structure/flora/ausbushes/grassybush, + /obj/structure/flora/ausbushes/leafybush, + /obj/structure/flora/ausbushes/palebush, + /obj/structure/flora/ausbushes/pointybush, + /obj/structure/flora/ausbushes/reedbush, + /obj/structure/flora/ausbushes/stalkybush, + /obj/structure/flora/ausbushes/sunnybush, + /obj/structure/flora/bush, + /obj/structure/flora/grass/jungle, + /obj/structure/flora/junglebush, + /obj/structure/flora/junglebush/b, + /obj/structure/flora/junglebush/c, + /obj/structure/flora/ash, + /obj/structure/flora/ash/cacti, + /obj/structure/flora/ash/cap_shroom, + /obj/structure/flora/ash/chilly, + /obj/structure/flora/tree/palm + ) + lootcount = 1 + +/obj/effect/spawner/lootdrop/flower + name = "random flower spawner" + loot = list( + /obj/structure/flora/ausbushes/brflowers, + /obj/structure/flora/ausbushes/ywflowers, + /obj/structure/flora/ausbushes/ppflowers, + /obj/structure/flora/ausbushes/fullgrass, + /obj/structure/flora/ausbushes/sparsegrass + ) + lootcount = 1 + +/obj/effect/spawner/lootdrop/anomaly + name = "random anomaly spawner" + loot = list( + /obj/effect/anomaly/bluespace/planetary, + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/grav/planetary, + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/pyro/planetary, + /obj/effect/anomaly/vortex/planetary, + /obj/effect/anomaly/grav/high/planetary, + /obj/effect/anomaly/heartbeat/planetary, + /obj/effect/anomaly/sparkler/planetary, + /obj/effect/anomaly/tvstatic/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + /obj/effect/anomaly/phantom/planetary, + /obj/effect/anomaly/melter/planetary, + /obj/effect/anomaly/transfusion/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/safe + name = "relatively safe anomaly spawner" + loot = list( + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/pyro/planetary, + /obj/effect/anomaly/sparkler/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/phantom/planetary, + /obj/effect/anomaly/transfusion/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/dangerous + name = "relatively dangerous anomaly spawner" + loot = list( + /obj/effect/anomaly/bluespace/planetary, + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/grav/planetary, + /obj/effect/anomaly/vortex/planetary, + /obj/effect/anomaly/grav/high/planetary, + /obj/effect/anomaly/heartbeat/planetary, + /obj/effect/anomaly/tvstatic/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + /obj/effect/anomaly/melter/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/big + name = "random big anomaly spawner" + loot = list( + /obj/effect/anomaly/bluespace/big/planetary, + /obj/effect/anomaly/flux/big/planetary, + /obj/effect/anomaly/grav/high/big/planetary, + /obj/effect/anomaly/pyro/big/planetary + + ) + +//handpicked lists relevant to the planets they're on +// /cave lists are made for spawning in cave biomes. Not every anomaly goes well there. We don't have enough anomalies to really populate them all though + +/obj/effect/spawner/lootdrop/anomaly/jungle + name = "Jungle Anomaly Spawner" + loot = list( + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/heartbeat/planetary, + /obj/effect/anomaly/tvstatic/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/phantom/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/jungle/cave + loot = list( + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/heartbeat/planetary, + /obj/effect/anomaly/tvstatic/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/phantom/planetary, + ) + +//beaches don't currently have anomalies, but I don't see a reason why they couldn't have *some* + +/obj/effect/spawner/lootdrop/anomaly/beach + name = "Beach anomaly spawner" + loot = list( + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/sparkler/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/phantom/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/beach/cave + loot = list( + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/sparkler/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/phantom/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/sand + name = "Sand anomaly spawner" + loot = list( + /obj/effect/anomaly/bluespace/planetary, + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/sparkler/planetary, + /obj/effect/anomaly/tvstatic/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/phantom/planetary, + /obj/effect/anomaly/melter/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/sand/cave + loot = list( + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/pyro/planetary, + /obj/effect/anomaly/sparkler/planetary, + /obj/effect/anomaly/tvstatic/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/phantom/planetary, + /obj/effect/anomaly/melter/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/rock + name = "Rock anomaly spawner" + loot = list( + /obj/effect/anomaly/bluespace/planetary, + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/grav/planetary, + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/pyro/planetary, + /obj/effect/anomaly/vortex/planetary, + /obj/effect/anomaly/grav/high/planetary, + /obj/effect/anomaly/heartbeat/planetary, + /obj/effect/anomaly/sparkler/planetary, + /obj/effect/anomaly/tvstatic/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + /obj/effect/anomaly/phantom/planetary, + /obj/effect/anomaly/melter/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/rock/cave + loot = list( + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/pyro/planetary, + /obj/effect/anomaly/heartbeat/planetary, + /obj/effect/anomaly/sparkler/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + /obj/effect/anomaly/phantom/planetary, + /obj/effect/anomaly/melter/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/lava + name = "Lava anomaly spawner" + loot = list( + /obj/effect/anomaly/bluespace/planetary, + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/grav/planetary, + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/pyro/planetary, + /obj/effect/anomaly/vortex/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/lava/cave + loot = list( + /obj/effect/anomaly/flux/planetary, + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/pyro/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/ice + name = "Ice anomaly spawner" + loot = list( + /obj/effect/anomaly/bluespace/planetary, + /obj/effect/anomaly/grav/planetary, + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/vortex/planetary, + /obj/effect/anomaly/grav/high/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + /obj/effect/anomaly/phantom/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/ice/cave + loot = list( + /obj/effect/anomaly/hallucination/planetary, + /obj/effect/anomaly/grav/high/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + /obj/effect/anomaly/phantom/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/waste + name = "Waste anomaly spawner" + loot = list( + /obj/effect/anomaly/vortex/planetary, + /obj/effect/anomaly/heartbeat/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + /obj/effect/anomaly/melter/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/waste/cave + loot = list( + /obj/effect/anomaly/heartbeat/planetary, + /obj/effect/anomaly/veins/planetary, + /obj/effect/anomaly/plasmasoul/planetary, + /obj/effect/anomaly/melter/planetary, + ) + +/obj/effect/spawner/lootdrop/anomaly/storm + loot = list( + /obj/effect/anomaly/flux/storm, + /obj/effect/anomaly/pyro/storm, + /obj/effect/anomaly/sparkler, + /obj/effect/anomaly/veins, + /obj/effect/anomaly/phantom, + /obj/effect/anomaly/melter, + ) + +//wasteplanet things + +/obj/effect/spawner/lootdrop/waste/grille_or_trash + name = "wasteplanet loot spawner" + loot = list( + /obj/structure/grille/broken = 5, + /obj/structure/grille = 5, + /obj/item/flashlight/flare/burnt = 1, + /obj/item/cigbutt = 1, + /obj/item/trash/cheesie = 1, + /obj/item/trash/candy = 1, + /obj/item/trash/chips = 1, + /obj/item/reagent_containers/food/snacks/deadmouse = 1, + /obj/item/trash/pistachios = 1, + /obj/item/trash/plate = 1, + /obj/item/trash/popcorn = 1, + /obj/item/trash/raisins = 1, + /obj/item/trash/sosjerky = 1, + /obj/item/trash/syndi_cakes = 1 + ) + +/obj/effect/spawner/lootdrop/waste/mechwreck + name = "wasteplanet exosuit wreckage" + loot = list( + /obj/structure/mecha_wreckage/ripley = 15, + /obj/structure/mecha_wreckage/ripley/firefighter = 9, + /obj/structure/mecha_wreckage/ripley/mkii = 9, + /obj/structure/mecha_wreckage/ripley/clip = 9 + ) + +/obj/effect/spawner/lootdrop/waste/mechwreck/rare + loot = list( + /obj/structure/mecha_wreckage/durand = 12.5, + /obj/structure/mecha_wreckage/durand/clip = 12.5, + /obj/structure/mecha_wreckage/odysseus = 25, + /obj/structure/mecha_wreckage/gygax = 25 + ) + +/obj/effect/spawner/lootdrop/waste/trash //debatable if this is actually loot + loot = list( + /obj/item/flashlight/flare/burnt = 30, + /obj/effect/decal/cleanable/greenglow/filled = 30, + /obj/effect/decal/cleanable/greenglow/ecto = 1, + /obj/effect/decal/cleanable/glass = 30, + /obj/effect/decal/cleanable/glass/plasma = 30, + /obj/effect/decal/cleanable/glass/strange = 30, + /obj/effect/decal/cleanable/molten_object = 30, + /obj/effect/decal/cleanable/molten_object/large = 30, + /obj/effect/decal/cleanable/oil = 30, + /obj/effect/decal/cleanable/oil/slippery = 1, // :) + /obj/effect/decal/cleanable/plastic = 30, + /obj/effect/decal/cleanable/ash = 30, + /obj/effect/decal/cleanable/ash/large = 30, + ) + +/obj/effect/spawner/lootdrop/waste/radiation + loot = list( + /obj/structure/radioactive = 6, + /obj/structure/radioactive/stack = 6, + /obj/structure/radioactive/waste = 6 + ) + +/obj/effect/spawner/lootdrop/waste/radiation/more_rads + loot = list( + /obj/structure/radioactive = 3, + /obj/structure/radioactive/stack = 12, + /obj/structure/radioactive/waste = 12 + ) + +/obj/effect/spawner/lootdrop/waste/atmos_can + loot = list( + /obj/machinery/portable_atmospherics/canister/toxins = 3, + /obj/machinery/portable_atmospherics/canister/carbon_dioxide = 3, + /obj/machinery/portable_atmospherics/canister/nitrogen = 3, + /obj/machinery/portable_atmospherics/canister/oxygen = 3, + /obj/machinery/portable_atmospherics/canister/nitrous_oxide = 1, + /obj/machinery/portable_atmospherics/canister/water_vapor = 1 + ) + +/obj/effect/spawner/lootdrop/waste/atmos_can/rare + loot = list( + /obj/machinery/portable_atmospherics/canister/tritium = 3, + /obj/machinery/portable_atmospherics/canister/pluoxium = 3 + ) + +/obj/effect/spawner/lootdrop/waste/salvageable + loot = list( + /obj/structure/salvageable/machine = 20, + /obj/structure/salvageable/autolathe = 15, + /obj/structure/salvageable/computer = 10, + /obj/structure/salvageable/protolathe = 10, + /obj/structure/salvageable/circuit_imprinter = 8, + /obj/structure/salvageable/destructive_analyzer = 8, + /obj/structure/salvageable/server = 8 + ) + +/obj/effect/spawner/lootdrop/waste/girder + loot = list( + /obj/structure/girder, + /obj/structure/girder/displaced, + /obj/structure/girder/reinforced + ) +/obj/effect/spawner/lootdrop/waste/hivebot + loot = list( + /obj/effect/spawner/lootdrop/salvage/metal, + /obj/effect/spawner/lootdrop/salvage/metal, + /obj/effect/spawner/lootdrop/salvage/metal, + /obj/effect/spawner/lootdrop/salvage/gold, + /obj/effect/spawner/lootdrop/salvage/plasma, + /obj/effect/spawner/lootdrop/salvage/silver, + /obj/effect/spawner/lootdrop/salvage/titanium, + /obj/item/stack/ore/salvage/scrapbluespace, + /obj/item/stack/ore/salvage/scrapbluespace, + /obj/item/stack/ore/salvage/scrapuranium + ) + lootcount = 2 + +/obj/effect/spawner/lootdrop/waste/hivebot/beacon + lootcount = 6 + +/obj/effect/spawner/lootdrop/salvage + name = "salvage mats spawner" + loot = list( + /obj/item/stack/ore/salvage/scrapmetal, + /obj/item/stack/ore/salvage/scrapgold, + /obj/item/stack/ore/salvage/scrapplasma, + /obj/item/stack/ore/salvage/scrapsilver, + /obj/item/stack/ore/salvage/scraptitanium, + /obj/item/stack/ore/salvage/scrapbluespace, + /obj/item/stack/ore/salvage/scrapuranium + ) + +/obj/effect/spawner/lootdrop/salvage/metal + loot = list( + /obj/item/stack/ore/salvage/scrapmetal + ) + +/obj/effect/spawner/lootdrop/salvage/metal/Initialize() + lootcount = pick(list( + 1, + 2, + 3, + 4 + )) + return ..() + +/obj/effect/spawner/lootdrop/salvage/gold + loot = list( + /obj/item/stack/ore/salvage/scrapgold + ) + +/obj/effect/spawner/lootdrop/salvage/gold/Initialize() + lootcount = pick(list( + 1, + 2, + 3, + 4 + )) + return ..() + +/obj/effect/spawner/lootdrop/salvage/plasma + loot = list( + /obj/item/stack/ore/salvage/scrapplasma + ) +/obj/effect/spawner/lootdrop/salvage/plasma/Initialize() + lootcount = pick(list( + 1, + 2, + 3, + 4 + )) + return ..() + + +/obj/effect/spawner/lootdrop/salvage/silver + loot = list( + /obj/item/stack/ore/salvage/scrapsilver + ) +/obj/effect/spawner/lootdrop/salvage/silver/Initialize() + lootcount = pick(list( + 1, + 2, + 3, + 4 + )) + return ..() + + +/obj/effect/spawner/lootdrop/salvage/titanium + loot = list( + /obj/item/stack/ore/salvage/scraptitanium + ) +/obj/effect/spawner/lootdrop/salvage/titanium/Initialize() + lootcount = pick(list( + 1, + 2, + 3, + 4 + )) + return ..() + +/obj/effect/spawner/lootdrop/salvage/bluespace + loot = list( + /obj/item/stack/ore/salvage/scrapbluespace + ) +/obj/effect/spawner/lootdrop/salvage/bluespace/Initialize() + lootcount = pick(list( + 1, + 2, + 3, + 4 + )) + return ..() + +/obj/effect/spawner/lootdrop/salvage/uranium + loot = list( + /obj/item/stack/ore/salvage/scrapuranium + ) +/obj/effect/spawner/lootdrop/salvage/uranium/Initialize() + lootcount = pick(list( + 1, + 2, + 3, + 4 + )) + return ..() + + +//random RND imprinter/protolathe board spawners. Do not use on maps without a good reason +/obj/effect/spawner/lootdrop/randomprotolathe + name = "random departmental protolathe" + loot = list( + /obj/item/circuitboard/machine/protolathe/department/cargo, + /obj/item/circuitboard/machine/protolathe/department/engineering, + /obj/item/circuitboard/machine/protolathe/department/service, + /obj/item/circuitboard/machine/protolathe/department/medical, + /obj/item/circuitboard/machine/protolathe/department/science, + /obj/item/circuitboard/machine/protolathe/department/security + ) + +/obj/effect/spawner/lootdrop/randomimprinter + name = "random departmental circuit imprinter" + loot = list( + /obj/item/circuitboard/machine/circuit_imprinter/department/cargo, + /obj/item/circuitboard/machine/circuit_imprinter/department/engi, + /obj/item/circuitboard/machine/circuit_imprinter/department/civ, + /obj/item/circuitboard/machine/circuit_imprinter/department/med, + /obj/item/circuitboard/machine/circuit_imprinter/department/science, + /obj/item/circuitboard/machine/circuit_imprinter/department/sec + ) + +/obj/effect/spawner/lootdrop/randomtechfab + name = "random departmental techfab" + loot = list( + /obj/item/circuitboard/machine/techfab/department/service, + /obj/item/circuitboard/machine/techfab/department/cargo, + /obj/item/circuitboard/machine/techfab/department/engineering, + /obj/item/circuitboard/machine/techfab/department/service, + /obj/item/circuitboard/machine/techfab/department/medical, + /obj/item/circuitboard/machine/techfab/department/science, + /obj/item/circuitboard/machine/techfab/department/security + ) + +/obj/effect/spawner/lootdrop/ration + loot = list ( + /obj/item/storage/ration/vegan_chili = 5, + /obj/item/storage/ration/shredded_beef = 5, + /obj/item/storage/ration/pork_spaghetti = 5, + /obj/item/storage/ration/fried_fish = 5, + /obj/item/storage/ration/beef_strips = 5, + /obj/item/storage/ration/chili_macaroni = 5, + /obj/item/storage/ration/chicken_wings_hot_sauce = 5, + /obj/item/storage/ration/fish_stew = 5, + /obj/item/storage/ration/lemon_pepper_chicken = 5, + /obj/item/storage/ration/sausage_peppers_onions = 5, + /obj/item/storage/ration/pork_dumplings_chili_sauce = 5, + /obj/item/storage/ration/battered_fish_sticks = 5, + /obj/item/storage/ration/assorted_salted_offal = 5, + /obj/item/storage/ration/maple_pork_sausage_patty = 5, + /obj/item/storage/ration/pepper_jack_beef_patty = 5, + /obj/item/storage/ration/beef_goulash = 5, + /obj/item/storage/ration/pepperoni_pizza_slice = 5, + /obj/item/storage/ration/blackened_calamari = 5, + /obj/item/storage/ration/elbow_macaroni = 5, + /obj/item/storage/ration/cheese_pizza_slice = 5, + /obj/item/storage/ration/crayons = 2 // :) + ) + +/obj/effect/spawner/lootdrop/chem_jug + loot = list( + /obj/item/reagent_containers/glass/chem_jug/carbon, + /obj/item/reagent_containers/glass/chem_jug/oxygen, + /obj/item/reagent_containers/glass/chem_jug/nitrogen, + /obj/item/reagent_containers/glass/chem_jug/hydrogen, + /obj/item/reagent_containers/glass/chem_jug/radium, + /obj/item/reagent_containers/glass/chem_jug/aluminium, + /obj/item/reagent_containers/glass/chem_jug/chlorine, + /obj/item/reagent_containers/glass/chem_jug/copper, + /obj/item/reagent_containers/glass/chem_jug/bromine, + /obj/item/reagent_containers/glass/chem_jug/iodine, + /obj/item/reagent_containers/glass/chem_jug/potassium, + /obj/item/reagent_containers/glass/chem_jug/sulfur) diff --git a/code/game/objects/effects/spawners/mobspawner.dm b/code/game/objects/effects/spawners/mobspawner.dm index 2161ebd06bb5..187b7c155fe0 100644 --- a/code/game/objects/effects/spawners/mobspawner.dm +++ b/code/game/objects/effects/spawners/mobspawner.dm @@ -1,11 +1,11 @@ -/obj/effect/spawner/random/randomthreat +/obj/effect/spawner/lootdrop/randomthreat var/static/mob_category = rand(1, 3) -/obj/effect/spawner/random/randomthreat/Initialize(mapload) +/obj/effect/spawner/lootdrop/randomthreat/Initialize(mapload) switch(mob_category) if(1) loot = list( - /obj/effect/spawner/random/hivebotspawner + /obj/effect/spawner/lootdrop/hivebotspawner ) if(2) loot = list( @@ -13,28 +13,28 @@ ) if(3) loot = list( - /obj/effect/spawner/random/spiderspawner + /obj/effect/spawner/lootdrop/spiderspawner ) return ..() -/obj/effect/spawner/random/xenospawner +/obj/effect/spawner/lootdrop/xenospawner name = "Xenomorph spawner" loot = list( /mob/living/simple_animal/hostile/alien = 0.3, /mob/living/simple_animal/hostile/alien/drone = 0.2, /mob/living/simple_animal/hostile/alien/sentinel = 0.3, - /obj/effect/spawner/random/xenoqueenspawner = 0.1 + /obj/effect/spawner/lootdrop/xenoqueenspawner = 0.1 ) -/obj/effect/spawner/random/xenoqueenspawner +/obj/effect/spawner/lootdrop/xenoqueenspawner name = "xenomorph queen spawner" loot = list( /mob/living/simple_animal/hostile/alien/queen = 0.2, //regular queen mob isn't actually that strong /mob/living/simple_animal/hostile/alien/queen/large = 0.8 ) -/obj/effect/spawner/random/hivebotspawner +/obj/effect/spawner/lootdrop/hivebotspawner name = "Hivebot spawner" loot = list( @@ -42,7 +42,7 @@ /mob/living/simple_animal/hostile/hivebot, ) -/obj/effect/spawner/random/spiderspawner +/obj/effect/spawner/lootdrop/spiderspawner name = "Spider spawner" loot = list( @@ -51,29 +51,29 @@ /mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper, ) -/obj/effect/spawner/random/thirtyfive_percent_borerspawner +/obj/effect/spawner/lootdrop/thirtyfive_percent_borerspawner name = "35 percent neutered borer spawner" loot = list( /mob/living/simple_animal/borer/sterile = 0.35, - /obj/effect/spawner/random/maintenance = 0.65, + /obj/effect/spawner/lootdrop/maintenance = 0.65, ) -/obj/effect/spawner/random/chicken +/obj/effect/spawner/lootdrop/chicken name = "chicken spawner" loot = list( /mob/living/simple_animal/chicken ) -/obj/effect/spawner/random/chicken/jungle +/obj/effect/spawner/lootdrop/chicken/jungle name = "jungle chicken spawner" loot = list( /mob/living/simple_animal/hostile/retaliate/chicken ) -/obj/effect/spawner/random/chicken/jungle/flock +/obj/effect/spawner/lootdrop/chicken/jungle/flock loot = list( /mob/living/simple_animal/hostile/retaliate/chicken ) - spawn_loot_count = 7 - spawn_loot_double = TRUE + lootcount = 7 + lootdoubles = TRUE diff --git a/code/game/objects/effects/spawners/random.dm/ai_module.dm b/code/game/objects/effects/spawners/random.dm/ai_module.dm deleted file mode 100644 index 7f5eed59e4a0..000000000000 --- a/code/game/objects/effects/spawners/random.dm/ai_module.dm +++ /dev/null @@ -1,41 +0,0 @@ -/obj/effect/spawner/random/aimodule - name = "AI module spawner" - desc = "State laws human." - icon_state = "circuit" - spawn_loot_double = FALSE - spawn_loot_count = 3 - spawn_loot_split = TRUE - -/obj/effect/spawner/random/aimodule_harmless // These shouldn't allow the AI to start butchering people - name = "harmless AI module spawner" - loot = list( - /obj/item/aiModule/core/full/asimov, - /obj/item/aiModule/core/full/asimovpp, - /obj/item/aiModule/core/full/hippocratic, - /obj/item/aiModule/core/full/paladin_devotion, - /obj/item/aiModule/core/full/paladin - ) - -/obj/effect/spawner/random/aimodule_neutral // These shouldn't allow the AI to start butchering people without reason - name = "neutral AI module spawner" - loot = list( - /obj/item/aiModule/core/full/corp, - /obj/item/aiModule/core/full/maintain, - /obj/item/aiModule/core/full/drone, - /obj/item/aiModule/core/full/peacekeeper, - /obj/item/aiModule/core/full/reporter, - /obj/item/aiModule/core/full/robocop, - /obj/item/aiModule/core/full/liveandletlive, - /obj/item/aiModule/core/full/hulkamania - ) - -/obj/effect/spawner/random/aimodule_harmful // These will get the shuttle called - name = "harmful AI module spawner" - loot = list( - /obj/item/aiModule/core/full/antimov, - /obj/item/aiModule/core/full/balance, - /obj/item/aiModule/core/full/tyrant, - /obj/item/aiModule/core/full/thermurderdynamic, - /obj/item/aiModule/core/full/damaged, - /obj/item/aiModule/reset/purge - ) diff --git a/code/game/objects/effects/spawners/random.dm/anomaly.dm b/code/game/objects/effects/spawners/random.dm/anomaly.dm deleted file mode 100644 index aa8fa472de2c..000000000000 --- a/code/game/objects/effects/spawners/random.dm/anomaly.dm +++ /dev/null @@ -1,222 +0,0 @@ -/obj/effect/spawner/random/anomaly - name = "random anomaly spawner" - icon_state = "anomaly" - loot = list( - /obj/effect/anomaly/bluespace/planetary, - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/grav/planetary, - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/pyro/planetary, - /obj/effect/anomaly/vortex/planetary, - /obj/effect/anomaly/grav/high/planetary, - /obj/effect/anomaly/heartbeat/planetary, - /obj/effect/anomaly/sparkler/planetary, - /obj/effect/anomaly/tvstatic/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - /obj/effect/anomaly/phantom/planetary, - /obj/effect/anomaly/melter/planetary, - /obj/effect/anomaly/transfusion/planetary, - ) - -/obj/effect/spawner/random/anomaly/safe - name = "relatively safe anomaly spawner" - loot = list( - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/pyro/planetary, - /obj/effect/anomaly/sparkler/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/phantom/planetary, - /obj/effect/anomaly/transfusion/planetary, - ) - -/obj/effect/spawner/random/anomaly/dangerous - name = "relatively dangerous anomaly spawner" - loot = list( - /obj/effect/anomaly/bluespace/planetary, - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/grav/planetary, - /obj/effect/anomaly/vortex/planetary, - /obj/effect/anomaly/grav/high/planetary, - /obj/effect/anomaly/heartbeat/planetary, - /obj/effect/anomaly/tvstatic/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - /obj/effect/anomaly/melter/planetary, - ) - -/obj/effect/spawner/random/anomaly/big - name = "random big anomaly spawner" - icon_state = "big_anomaly" - loot = list( - /obj/effect/anomaly/bluespace/big/planetary, - /obj/effect/anomaly/flux/big/planetary, - /obj/effect/anomaly/grav/high/big/planetary, - /obj/effect/anomaly/pyro/big/planetary - - ) - -//handpicked lists relevant to the planets they're on -// /cave lists are made for spawning in cave biomes. Not every anomaly goes well there. We don't have enough anomalies to really populate them all though - -/obj/effect/spawner/random/anomaly/jungle - name = "Jungle Anomaly Spawner" - loot = list( - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/heartbeat/planetary, - /obj/effect/anomaly/tvstatic/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/phantom/planetary, - ) - -/obj/effect/spawner/random/anomaly/jungle/cave - loot = list( - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/heartbeat/planetary, - /obj/effect/anomaly/tvstatic/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/phantom/planetary, - ) - -//beaches don't currently have anomalies, but I don't see a reason why they couldn't have *some* - -/obj/effect/spawner/random/anomaly/beach - name = "Beach anomaly spawner" - loot = list( - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/sparkler/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/phantom/planetary, - ) - -/obj/effect/spawner/random/anomaly/beach/cave - loot = list( - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/sparkler/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/phantom/planetary, - ) - -/obj/effect/spawner/random/anomaly/sand - name = "Sand anomaly spawner" - loot = list( - /obj/effect/anomaly/bluespace/planetary, - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/sparkler/planetary, - /obj/effect/anomaly/tvstatic/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/phantom/planetary, - /obj/effect/anomaly/melter/planetary, - ) - -/obj/effect/spawner/random/anomaly/sand/cave - loot = list( - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/pyro/planetary, - /obj/effect/anomaly/sparkler/planetary, - /obj/effect/anomaly/tvstatic/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/phantom/planetary, - /obj/effect/anomaly/melter/planetary, - ) - -/obj/effect/spawner/random/anomaly/rock - name = "Rock anomaly spawner" - loot = list( - /obj/effect/anomaly/bluespace/planetary, - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/grav/planetary, - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/pyro/planetary, - /obj/effect/anomaly/vortex/planetary, - /obj/effect/anomaly/grav/high/planetary, - /obj/effect/anomaly/heartbeat/planetary, - /obj/effect/anomaly/sparkler/planetary, - /obj/effect/anomaly/tvstatic/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - /obj/effect/anomaly/phantom/planetary, - /obj/effect/anomaly/melter/planetary, - ) - -/obj/effect/spawner/random/anomaly/rock/cave - loot = list( - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/pyro/planetary, - /obj/effect/anomaly/heartbeat/planetary, - /obj/effect/anomaly/sparkler/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - /obj/effect/anomaly/phantom/planetary, - /obj/effect/anomaly/melter/planetary, - ) - -/obj/effect/spawner/random/anomaly/lava - name = "Lava anomaly spawner" - loot = list( - /obj/effect/anomaly/bluespace/planetary, - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/grav/planetary, - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/pyro/planetary, - /obj/effect/anomaly/vortex/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - ) - -/obj/effect/spawner/random/anomaly/lava/cave - loot = list( - /obj/effect/anomaly/flux/planetary, - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/pyro/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - ) - -/obj/effect/spawner/random/anomaly/ice - name = "Ice anomaly spawner" - loot = list( - /obj/effect/anomaly/bluespace/planetary, - /obj/effect/anomaly/grav/planetary, - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/vortex/planetary, - /obj/effect/anomaly/grav/high/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - /obj/effect/anomaly/phantom/planetary, - ) - -/obj/effect/spawner/random/anomaly/ice/cave - loot = list( - /obj/effect/anomaly/hallucination/planetary, - /obj/effect/anomaly/grav/high/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - /obj/effect/anomaly/phantom/planetary, - ) - -/obj/effect/spawner/random/anomaly/waste - name = "Waste anomaly spawner" - loot = list( - /obj/effect/anomaly/vortex/planetary, - /obj/effect/anomaly/heartbeat/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - /obj/effect/anomaly/melter/planetary, - ) - -/obj/effect/spawner/random/anomaly/waste/cave - loot = list( - /obj/effect/anomaly/heartbeat/planetary, - /obj/effect/anomaly/veins/planetary, - /obj/effect/anomaly/plasmasoul/planetary, - /obj/effect/anomaly/melter/planetary, - ) - -/obj/effect/spawner/random/anomaly/storm - loot = list( - /obj/effect/anomaly/flux/storm, - /obj/effect/anomaly/pyro/storm, - /obj/effect/anomaly/sparkler, - /obj/effect/anomaly/veins, - /obj/effect/anomaly/phantom, - /obj/effect/anomaly/melter, - ) diff --git a/code/game/objects/effects/spawners/random.dm/bedsheet.dm b/code/game/objects/effects/spawners/random.dm/bedsheet.dm deleted file mode 100644 index f8a53fffd2c9..000000000000 --- a/code/game/objects/effects/spawners/random.dm/bedsheet.dm +++ /dev/null @@ -1,33 +0,0 @@ -/obj/effect/spawner/random/bedsheet - name = "random dorm bedsheet" - icon_state = "random_bedsheet" - loot = list( - /obj/item/bedsheet, - /obj/item/bedsheet/blue, - /obj/item/bedsheet/green, - /obj/item/bedsheet/grey, - /obj/item/bedsheet/orange, - /obj/item/bedsheet/purple, - /obj/item/bedsheet/red, - /obj/item/bedsheet/yellow, - /obj/item/bedsheet/brown, - /obj/item/bedsheet/black, - /obj/item/bedsheet/rainbow - ) - -/obj/effect/spawner/random/bedsheet/double - name = "random dorm double bedsheet" - icon_state = "random_doublesheet" - loot = list( - /obj/item/bedsheet/double, - /obj/item/bedsheet/double/blue, - /obj/item/bedsheet/double/green, - /obj/item/bedsheet/double/grey, - /obj/item/bedsheet/double/orange, - /obj/item/bedsheet/double/purple, - /obj/item/bedsheet/double/red, - /obj/item/bedsheet/double/yellow, - /obj/item/bedsheet/double/brown, - /obj/item/bedsheet/double/black, - /obj/item/bedsheet/double/rainbow - ) diff --git a/code/game/objects/effects/spawners/random.dm/boards.dm b/code/game/objects/effects/spawners/random.dm/boards.dm deleted file mode 100644 index 0104d17326d7..000000000000 --- a/code/game/objects/effects/spawners/random.dm/boards.dm +++ /dev/null @@ -1,245 +0,0 @@ -// Tech storage circuit board spawners - -/obj/effect/spawner/random/techstorage - name = "generic circuit board spawner" - icon_state = "circuit" - spawn_loot_split = TRUE - spawn_all_loot = TRUE - -/obj/effect/spawner/random/techstorage/service - name = "service circuit board spawner" - loot = list( - /obj/item/circuitboard/computer/arcade/battle, - /obj/item/circuitboard/computer/arcade/orion_trail, - /obj/item/circuitboard/machine/autolathe, - /obj/item/circuitboard/computer/mining, - /obj/item/circuitboard/machine/ore_redemption, - /obj/item/circuitboard/machine/vending/mining_equipment, - /obj/item/circuitboard/machine/microwave, - /obj/item/circuitboard/machine/chem_dispenser/drinks, - /obj/item/circuitboard/machine/chem_dispenser/drinks/beer, - /obj/item/circuitboard/computer/slot_machine - ) - -/obj/effect/spawner/random/techstorage/rnd - name = "RnD circuit board spawner" - loot = list( - /obj/item/circuitboard/computer/aifixer, - /obj/item/circuitboard/machine/rdserver, - /obj/item/circuitboard/machine/mechfab, - /obj/item/circuitboard/machine/circuit_imprinter/department, - /obj/item/circuitboard/computer/teleporter, - /obj/item/circuitboard/machine/destructive_analyzer, - /obj/item/circuitboard/computer/rdconsole, - /obj/item/circuitboard/computer/nanite_chamber_control, - /obj/item/circuitboard/computer/nanite_cloud_controller, - /obj/item/circuitboard/machine/nanite_chamber, - /obj/item/circuitboard/machine/nanite_programmer, - /obj/item/circuitboard/machine/nanite_program_hub - ) - -/obj/effect/spawner/random/techstorage/security - name = "security circuit board spawner" - loot = list( - /obj/item/circuitboard/computer/secure_data, - /obj/item/circuitboard/computer/security, - /obj/item/circuitboard/computer/prisoner - ) - -/obj/effect/spawner/random/techstorage/engineering - name = "engineering circuit board spawner" - loot = list( - /obj/item/circuitboard/computer/atmos_alert, - /obj/item/circuitboard/computer/stationalert, - /obj/item/circuitboard/computer/powermonitor - ) - -/obj/effect/spawner/random/techstorage/tcomms - name = "tcomms circuit board spawner" - loot = list( - /obj/item/circuitboard/computer/message_monitor, - /obj/item/circuitboard/machine/telecomms/broadcaster, - /obj/item/circuitboard/machine/telecomms/bus, - /obj/item/circuitboard/machine/telecomms/server, - /obj/item/circuitboard/machine/telecomms/receiver, - /obj/item/circuitboard/machine/telecomms/processor, - /obj/item/circuitboard/machine/announcement_system, - /obj/item/circuitboard/computer/comm_server, - /obj/item/circuitboard/computer/comm_monitor - ) - -/obj/effect/spawner/random/techstorage/medical - name = "medical circuit board spawner" - loot = list( - /obj/item/circuitboard/machine/chem_dispenser, - /obj/item/circuitboard/computer/scan_consolenew, - /obj/item/circuitboard/computer/med_data, - /obj/item/circuitboard/machine/smoke_machine, - /obj/item/circuitboard/machine/chem_master, - /obj/item/circuitboard/machine/dnascanner, - /obj/item/circuitboard/computer/pandemic - ) - -/obj/effect/spawner/random/techstorage/ai_all - name = "secure AI circuit board spawner" - loot = list( - /obj/item/circuitboard/computer/aiupload, - /obj/item/circuitboard/computer/borgupload, - /obj/item/circuitboard/aicore - ) - -/obj/effect/spawner/random/techstorage/command - name = "secure command circuit board spawner" - loot = list( - /obj/item/circuitboard/computer/crew, - /obj/item/circuitboard/computer/communications, - /obj/item/circuitboard/computer/card - ) - -/obj/effect/spawner/random/techstorage/rnd_secure - name = "secure RnD circuit board spawner" - loot = list( - /obj/item/circuitboard/computer/mecha_control, - /obj/item/circuitboard/computer/apc_control, - /obj/item/circuitboard/computer/robotics - ) - -//random RND imprinter/protolathe board spawners. Do not use on maps without a good reason -/obj/effect/spawner/random/circuit/protolathe - name = "random departmental protolathe" - icon_state = "circuit" - loot = list( - /obj/item/circuitboard/machine/protolathe/department/cargo, - /obj/item/circuitboard/machine/protolathe/department/engineering, - /obj/item/circuitboard/machine/protolathe/department/service, - /obj/item/circuitboard/machine/protolathe/department/medical, - /obj/item/circuitboard/machine/protolathe/department/science, - /obj/item/circuitboard/machine/protolathe/department/security - ) - -/obj/effect/spawner/random/circuit/imprinter - name = "random departmental circuit imprinter" - icon_state = "circuit" - loot = list( - /obj/item/circuitboard/machine/circuit_imprinter/department/cargo, - /obj/item/circuitboard/machine/circuit_imprinter/department/engi, - /obj/item/circuitboard/machine/circuit_imprinter/department/civ, - /obj/item/circuitboard/machine/circuit_imprinter/department/med, - /obj/item/circuitboard/machine/circuit_imprinter/department/science, - /obj/item/circuitboard/machine/circuit_imprinter/department/sec - ) - -/obj/effect/spawner/random/circuit/techfab - name = "random departmental techfab" - icon_state = "circuit" - loot = list( - /obj/item/circuitboard/machine/techfab/department/service, - /obj/item/circuitboard/machine/techfab/department/cargo, - /obj/item/circuitboard/machine/techfab/department/engineering, - /obj/item/circuitboard/machine/techfab/department/service, - /obj/item/circuitboard/machine/techfab/department/medical, - /obj/item/circuitboard/machine/techfab/department/science, - /obj/item/circuitboard/machine/techfab/department/security - ) - -/obj/effect/spawner/random/rnd - name = "random RND spawner" - icon_state = "circuit" - loot = list( - /obj/item/storage/box/rndmining, - /obj/item/storage/box/rndengi, - /obj/item/storage/box/rndsec, - /obj/item/storage/box/rndciv, - /obj/item/storage/box/rndmed - ) - -/obj/effect/spawner/random/circuit/machine/common - loot = list( - /obj/item/circuitboard/machine/autolathe = 5, - /obj/item/circuitboard/machine/biogenerator = 5, - /obj/item/circuitboard/machine/cell_charger = 5, - /obj/item/circuitboard/machine/chem_heater = 5, - /obj/item/circuitboard/machine/chem_master = 5, - /obj/item/circuitboard/machine/clonescanner = 5, - /obj/item/circuitboard/machine/cryo_tube = 5, - /obj/item/circuitboard/machine/cyborgrecharger = 5, - /obj/item/circuitboard/machine/deep_fryer = 5, - /obj/item/circuitboard/machine/experimentor = 5, - /obj/item/circuitboard/machine/holopad = 5, - /obj/item/circuitboard/machine/hydroponics = 5, - /obj/item/circuitboard/machine/limbgrower = 5, - /obj/item/circuitboard/machine/ltsrbt = 5, - /obj/item/circuitboard/machine/mech_recharger = 5, - /obj/item/circuitboard/machine/mechfab = 5, - /obj/item/circuitboard/machine/medical_kiosk = 5, - /obj/item/circuitboard/machine/medipen_refiller = 5, - /obj/item/circuitboard/machine/microwave = 5, - /obj/item/circuitboard/machine/ore_redemption = 5, - /obj/item/circuitboard/machine/ore_silo = 5, - /obj/item/circuitboard/machine/reagentgrinder = 5, - /obj/item/circuitboard/machine/recharger = 5, - /obj/item/circuitboard/machine/seed_extractor = 5, - /obj/item/circuitboard/machine/selling_pad = 5, - /obj/item/circuitboard/machine/emitter = 5, - ) - -/obj/effect/spawner/random/circuit - icon_state = "circuit" - -/obj/effect/spawner/random/circuit/machine/rare - loot = list( - /obj/item/circuitboard/aicore = 5, - /obj/item/circuitboard/machine/chem_dispenser = 5, - /obj/item/circuitboard/machine/circuit_imprinter = 5, - /obj/item/circuitboard/machine/protolathe = 5, - /obj/item/circuitboard/machine/clonepod/experimental = 5, - /obj/item/circuitboard/machine/rad_collector = 5, - /obj/item/circuitboard/machine/launchpad = 5, - ) - -/obj/effect/spawner/random/circuit/machine/mech - loot = list( - /obj/item/circuitboard/mecha/ripley/main = 100, - /obj/item/circuitboard/mecha/ripley/peripherals = 100, - /obj/item/circuitboard/mecha/honker/main = 5, - /obj/item/circuitboard/mecha/honker/peripherals = 5, - /obj/item/circuitboard/mecha/odysseus/main = 5, - /obj/item/circuitboard/mecha/odysseus/peripherals = 5, - /obj/item/circuitboard/mecha/gygax/main = 1, - /obj/item/circuitboard/mecha/gygax/peripherals = 1, - /obj/item/circuitboard/mecha/gygax/targeting = 1, - /obj/item/circuitboard/mecha/durand/main = 1, - /obj/item/circuitboard/mecha/durand/peripherals = 1, - /obj/item/circuitboard/mecha/durand/targeting = 1, - ) - -//COMPUTER -/obj/effect/spawner/random/circuit/computer/common - loot = list( - /obj/item/circuitboard/computer/aifixer = 5, - /obj/item/circuitboard/computer/arcade/amputation = 5, - /obj/item/circuitboard/computer/arcade/battle = 5, - /obj/item/circuitboard/computer/arcade/orion_trail = 5, - /obj/item/circuitboard/computer/atmos_alert = 5, - /obj/item/circuitboard/computer/card = 5, - /obj/item/circuitboard/computer/cloning = 5, - /obj/item/circuitboard/computer/communications = 5, - /obj/item/circuitboard/computer/launchpad_console = 5, - /obj/item/circuitboard/computer/mech_bay_power_console = 5, - /obj/item/circuitboard/computer/pandemic = 5, - /obj/item/circuitboard/computer/powermonitor/secret = 5, - /obj/item/circuitboard/computer/prototype_cloning = 5, - /obj/item/circuitboard/computer/stationalert = 5, - /obj/item/circuitboard/computer/teleporter = 5, - /obj/item/circuitboard/computer/operating = 5, - /obj/item/circuitboard/computer/crew = 5, - /obj/item/circuitboard/computer/scan_consolenew = 5, - ) - -/obj/effect/spawner/random/circuit/computer/rare - loot = list( - /obj/item/circuitboard/computer/cargo = 5, - /obj/item/circuitboard/computer/communications = 5, - /obj/item/circuitboard/computer/shuttle/helm = 5, - /obj/item/circuitboard/computer/med_data = 5, - ) diff --git a/code/game/objects/effects/spawners/random.dm/bureaucracy.dm b/code/game/objects/effects/spawners/random.dm/bureaucracy.dm deleted file mode 100644 index b55c9dc7b364..000000000000 --- a/code/game/objects/effects/spawners/random.dm/bureaucracy.dm +++ /dev/null @@ -1,68 +0,0 @@ -/obj/effect/spawner/random/bureaucracy - name = "bureaucracy loot spawner" - desc = "For the exotic art of paper shuffling." - -/obj/effect/spawner/random/bureaucracy/pen - name = "pen spawner" - icon_state = "pen" - loot = list( - /obj/item/pen = 30, - /obj/item/pen/blue = 5, - /obj/item/pen/red = 5, - /obj/item/flashlight/pen = 5, - /obj/item/pen/fourcolor = 2, - /obj/item/pen/fountain = 1, - ) - -/obj/effect/spawner/random/bureaucracy/stamp - name = "stamp spawner" - icon_state = "stamp" - loot = list( - /obj/item/stamp = 3, - /obj/item/stamp/denied = 1, - ) - -/obj/effect/spawner/random/bureaucracy/crayon - name = "crayon spawner" - icon_state = "crayon" - loot = list( - /obj/item/toy/crayon/red, - /obj/item/toy/crayon/orange, - /obj/item/toy/crayon/yellow, - /obj/item/toy/crayon/green, - /obj/item/toy/crayon/blue, - /obj/item/toy/crayon/purple, - /obj/item/toy/crayon/black, - /obj/item/toy/crayon/white, - ) - -/obj/effect/spawner/random/bureaucracy/paper - name = "paper spawner" - icon_state = "paper" - loot = list( - /obj/item/paper = 20, - /obj/item/paper/crumpled = 2, - /obj/item/paper/crumpled/bloody = 2, - /obj/item/paper/crumpled/muddy = 2, - /obj/item/paper/construction = 1, - /obj/item/paper/carbon = 1, - ) - -/obj/effect/spawner/random/bureaucracy/briefcase - name = "briefcase spawner" - icon_state = "briefcase" - loot = list( - /obj/item/storage/briefcase = 3, - /obj/item/storage/briefcase/lawyer = 1, - ) - -/obj/effect/spawner/random/bureaucracy/folder - name = "folder spawner" - icon_state = "folder" - loot = list( - /obj/item/folder/blue, - /obj/item/folder/red, - /obj/item/folder/yellow, - /obj/item/folder/white, - /obj/item/folder, - ) diff --git a/code/game/objects/effects/spawners/random.dm/clothing.dm b/code/game/objects/effects/spawners/random.dm/clothing.dm deleted file mode 100644 index e5137f9e5078..000000000000 --- a/code/game/objects/effects/spawners/random.dm/clothing.dm +++ /dev/null @@ -1,67 +0,0 @@ -/obj/effect/spawner/random/clothing - name = "clothing loot spawner" - desc = "Time to look pretty." - icon_state = "suit" - -/obj/effect/spawner/random/clothing/gloves - name = "random gloves" - desc = "These gloves are supposed to be a random color..." - icon_state = "gloves" - loot = list( - /obj/item/clothing/gloves/color/orange, - /obj/item/clothing/gloves/color/red, - /obj/item/clothing/gloves/color/blue, - /obj/item/clothing/gloves/color/purple, - /obj/item/clothing/gloves/color/green, - /obj/item/clothing/gloves/color/grey, - /obj/item/clothing/gloves/color/light_brown, - /obj/item/clothing/gloves/color/brown, - /obj/item/clothing/gloves/color/white, - /obj/item/clothing/gloves/color/rainbow - ) - -/obj/effect/spawner/random/clothing/costume - name = "random costume spawner" - icon_state = "costume" - loot_subtype_path = /obj/effect/spawner/costume - loot = list() - -/obj/effect/spawner/random/clothing/beret_or_rabbitears - name = "beret or rabbit ears spawner" - loot = list( - /obj/item/clothing/head/beret - ) - -/obj/effect/spawner/random/clothing/bowler_or_that - name = "bowler or top hat spawner" - loot = list( - /obj/item/clothing/head/that - ) - -/obj/effect/spawner/random/clothing/kittyears_or_rabbitears - name = "kitty ears or rabbit ears spawner" - loot = list( - /obj/item/clothing/head/kitty - ) - -/obj/effect/spawner/random/clothing/pirate_or_bandana - name = "pirate hat or bandana spawner" - loot = list( - /obj/item/clothing/head/pirate, - /obj/item/clothing/head/bandana - ) - -/obj/effect/spawner/random/clothing/twentyfive_percent_cyborg_mask - name = "25% cyborg mask spawner" - spawn_loot_chance = 25 - loot = list(/obj/item/clothing/mask/gas/cyborg) - -/obj/effect/spawner/random/clothing/mafia_outfit - name = "mafia outfit spawner" - icon_state = "costume" - loot = list( - /obj/effect/spawner/costume/mafia = 20, - /obj/effect/spawner/costume/mafia/white = 5, - /obj/effect/spawner/costume/mafia/checkered = 2, - /obj/effect/spawner/costume/mafia/beige = 5 - ) diff --git a/code/game/objects/effects/spawners/random.dm/decoration.dm b/code/game/objects/effects/spawners/random.dm/decoration.dm deleted file mode 100644 index 7af7af7fe85b..000000000000 --- a/code/game/objects/effects/spawners/random.dm/decoration.dm +++ /dev/null @@ -1,118 +0,0 @@ -/obj/effect/spawner/random/decoration - name = "decoration loot spawner" - desc = "Time for some bling bling." - icon_state = "lamp" - -/obj/effect/spawner/random/decoration/material - name = "decoration material spawner" - icon_state = "tile" - loot = list( - /obj/item/stack/sheet/sandblock{amount = 30} = 25, - /obj/item/stack/sheet/mineral/wood{amount = 30} = 25, - /obj/item/stack/tile/noslip{amount = 20} = 10, - /obj/item/stack/sheet/plastic{amount = 30} = 10, - /obj/item/stack/tile/pod{amount = 20} = 4, - /obj/item/stack/tile/pod/light{amount = 20} = 3, - /obj/item/stack/tile/pod/dark{amount = 20} = 3, - ) - -/obj/effect/spawner/random/decoration/carpet - name = "carpet spawner" - icon_state = "carpet" - loot = list( - /obj/item/stack/tile/carpet{amount = 30} = 35, - /obj/item/stack/tile/carpet/black{amount = 30} = 20, - ) - -/obj/effect/spawner/random/decoration/ornament - name = "ornament spawner" - icon_state = "lamp" - loot = list( - /obj/item/flashlight/lamp = 35, - /obj/item/flashlight/lamp/green = 35, - /obj/item/flashlight/lantern = 10, - /obj/item/flashlight/lamp/bananalamp = 5, - ) -/obj/effect/spawner/random/decoration/glowstick - name = "random colored glowstick" - icon_state = "glowstick" - loot_type_path = /obj/item/flashlight/glowstick - loot = list() - -/obj/effect/spawner/random/decoration/glowstick/on - name = "random colored glowstick (on)" - icon_state = "glowstick" - -/obj/effect/spawner/random/decoration/glowstick/on/make_item(spawn_loc, type_path_to_make) - . = ..() - - var/obj/item/flashlight/glowstick = . - - glowstick.set_light_on(TRUE) - -/obj/effect/spawner/random/decoration/paint - name = "paint spawner" - icon_state = "paint" - loot_subtype_path = /obj/item/paint - loot = list() - -/obj/effect/spawner/random/decoration/flower - name = "random grown flower spawner" - icon_state = "flower" - loot = list( - /obj/item/reagent_containers/food/snacks/grown/poppy, - /obj/item/reagent_containers/food/snacks/grown/harebell, - /obj/item/reagent_containers/food/snacks/grown/trumpet, - ) - -/obj/effect/spawner/random/flora - name = "random flora spawner" - loot = list( - /obj/structure/flora/tree/chapel, - /obj/structure/flora/tree/pine, - /obj/structure/flora/tree/jungle/small, - /obj/structure/flora/tree/jungle, - /obj/structure/flora/ash/puce, - /obj/structure/flora/ash/fireblossom, - /obj/structure/flora/ash/fern, - /obj/structure/flora/ash/tall_shroom, - /obj/structure/flora/ash/stem_shroom, - /obj/structure/flora/ash/space/voidmelon, - /obj/structure/flora/ash/leaf_shroom, - /obj/structure/flora/junglebush/large, - /obj/structure/flora/junglebush/b, - /obj/structure/flora/junglebush/c, - /obj/structure/flora/ausbushes/fernybush, - /obj/structure/flora/ausbushes/genericbush, - /obj/structure/flora/ausbushes/grassybush, - /obj/structure/flora/ausbushes/leafybush, - /obj/structure/flora/ausbushes/palebush, - /obj/structure/flora/ausbushes/pointybush, - /obj/structure/flora/ausbushes/reedbush, - /obj/structure/flora/ausbushes/stalkybush, - /obj/structure/flora/ausbushes/sunnybush, - /obj/structure/flora/bush, - /obj/structure/flora/grass/jungle, - /obj/structure/flora/junglebush, - /obj/structure/flora/junglebush/b, - /obj/structure/flora/junglebush/c, - /obj/structure/flora/ash, - /obj/structure/flora/ash/cacti, - /obj/structure/flora/ash/cap_shroom, - /obj/structure/flora/ash/chilly, - /obj/structure/flora/tree/palm - ) - spawn_loot_count = 1 - -/obj/effect/spawner/random/flower - name = "random flower spawner" - icon_state = "flower" - loot = list( - /obj/structure/flora/ausbushes/brflowers, - /obj/structure/flora/ausbushes/ywflowers, - /obj/structure/flora/ausbushes/ppflowers, - /obj/structure/flora/ausbushes/fullgrass, - /obj/structure/flora/ausbushes/sparsegrass - ) - spawn_loot_count = 1 - diff --git a/code/game/objects/effects/spawners/random.dm/engineering.dm b/code/game/objects/effects/spawners/random.dm/engineering.dm deleted file mode 100644 index 81f264039feb..000000000000 --- a/code/game/objects/effects/spawners/random.dm/engineering.dm +++ /dev/null @@ -1,138 +0,0 @@ -/obj/effect/spawner/random/engineering - name = "engineering loot spawner" - desc = "All engineering related spawners go here" - icon_state = "toolbox" - -/obj/effect/spawner/random/engineering/tool - loot = list( - /obj/effect/spawner/random/engineering/tool/common = 120, - /obj/effect/spawner/random/engineering/tool/sydnie = 20, - /obj/effect/spawner/random/engineering/tool/adv = 5, - ) - -/obj/effect/spawner/random/engineering/tool/common - loot = list( - /obj/item/wrench/crescent = 1, - /obj/item/screwdriver = 1, - /obj/item/weldingtool = 1, - /obj/item/crowbar = 1, - /obj/item/wirecutters = 1, - /obj/item/multitool = 1, - ) - -/obj/effect/spawner/random/engineering/tool/sydnie - loot = list( - /obj/item/wrench/syndie = 1, - /obj/item/screwdriver/nuke = 1, - /obj/item/weldingtool/largetank = 1, - /obj/item/crowbar/syndie = 1, - /obj/item/wirecutters/syndie = 1, - /obj/item/multitool/syndie = 1, - ) - -/obj/effect/spawner/random/engineering/tool/adv - loot = list( - /obj/item/screwdriver/power = 1, - /obj/item/weldingtool/experimental = 1, - /obj/item/crowbar/power = 1, - ) - -/obj/effect/spawner/random/stockparts - name = "random good stock parts" - spawn_loot_count = 6 - loot = list( - /obj/item/stock_parts/capacitor/adv, - /obj/item/stock_parts/capacitor/quadratic, - /obj/item/stock_parts/capacitor/super, - /obj/item/stock_parts/cell/hyper, - /obj/item/stock_parts/cell/super, - /obj/item/stock_parts/cell/bluespace, - /obj/item/stock_parts/matter_bin/bluespace, - /obj/item/stock_parts/matter_bin/super, - /obj/item/stock_parts/matter_bin/adv, - /obj/item/stock_parts/micro_laser/ultra, - /obj/item/stock_parts/micro_laser/quadultra, - /obj/item/stock_parts/micro_laser/high, - /obj/item/stock_parts/scanning_module/triphasic, - /obj/item/stock_parts/scanning_module/phasic, - /obj/item/stock_parts/scanning_module/adv, - /obj/item/reagent_containers/glass/beaker/bluespace, - /obj/item/reagent_containers/glass/beaker/plastic, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/stock_parts/manipulator/nano, - /obj/item/stock_parts/manipulator/pico, - /obj/item/stock_parts/manipulator/femto - ) - -/obj/effect/spawner/random/materials - name = "random bulk materials" - spawn_loot_count = 2 - loot = list( - /obj/item/stack/sheet/plastic/fifty, - /obj/item/stack/sheet/bluespace_crystal/twenty, - /obj/item/stack/sheet/cardboard/fifty, - /obj/item/stack/sheet/glass/fifty, - /obj/item/stack/sheet/metal/fifty, - /obj/item/stack/sheet/plasteel/twenty, - /obj/item/stack/sheet/mineral/plasma/fifty, - /obj/item/stack/sheet/mineral/silver/fifty, - /obj/item/stack/sheet/mineral/titanium/fifty, - /obj/item/stack/sheet/mineral/uranium/fifty, - /obj/item/stack/sheet/mineral/wood/fifty, - /obj/item/stack/sheet/mineral/diamond/twenty, - /obj/item/stack/sheet/mineral/gold/fifty, - /obj/item/stack/cable_coil/red, - /obj/item/stack/rods/fifty - ) - -/obj/effect/spawner/random/stockparts - name = "random good stock parts" - spawn_loot_count = 5 - loot = list( - /obj/item/stock_parts/capacitor/adv, - /obj/item/stock_parts/capacitor/quadratic, - /obj/item/stock_parts/capacitor/super, - /obj/item/stock_parts/cell/hyper, - /obj/item/stock_parts/cell/super, - /obj/item/stock_parts/cell/bluespace, - /obj/item/stock_parts/matter_bin/bluespace, - /obj/item/stock_parts/matter_bin/super, - /obj/item/stock_parts/matter_bin/adv, - /obj/item/stock_parts/micro_laser/ultra, - /obj/item/stock_parts/micro_laser/quadultra, - /obj/item/stock_parts/micro_laser/high, - /obj/item/stock_parts/scanning_module/triphasic, - /obj/item/stock_parts/scanning_module/phasic, - /obj/item/stock_parts/scanning_module/adv, - /obj/item/reagent_containers/glass/beaker/bluespace, - /obj/item/reagent_containers/glass/beaker/plastic, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/stock_parts/manipulator/nano, - /obj/item/stock_parts/manipulator/pico, - /obj/item/stock_parts/manipulator/femto - ) - -/obj/effect/spawner/random/materials - name = "random materials" - spawn_loot_count = 3 - loot = list( - /obj/item/stack/sheet/plastic/fifty, - /obj/item/stack/sheet/plastic/five, - /obj/item/stack/sheet/bluespace_crystal/twenty, - /obj/item/stack/sheet/bluespace_crystal/five, - /obj/item/stack/sheet/cardboard/fifty, - /obj/item/stack/sheet/glass/fifty, - /obj/item/stack/sheet/metal/fifty, - /obj/item/stack/sheet/metal/twenty, - /obj/item/stack/sheet/plasteel/twenty, - /obj/item/stack/sheet/mineral/plasma/fifty, - /obj/item/stack/sheet/mineral/plasma/twenty, - /obj/item/stack/sheet/mineral/silver/fifty, - /obj/item/stack/sheet/mineral/titanium/twenty, - /obj/item/stack/sheet/mineral/uranium/twenty, - /obj/item/stack/sheet/mineral/wood/fifty, - /obj/item/stack/sheet/mineral/diamond/twenty, - /obj/item/stack/sheet/mineral/gold/fifty, - /obj/item/stack/cable_coil/red, - /obj/item/stack/rods/fifty - ) diff --git a/code/game/objects/effects/spawners/random.dm/entertainment.dm b/code/game/objects/effects/spawners/random.dm/entertainment.dm deleted file mode 100644 index 8e51ddf384c0..000000000000 --- a/code/game/objects/effects/spawners/random.dm/entertainment.dm +++ /dev/null @@ -1,282 +0,0 @@ -/obj/effect/spawner/random/entertainment - name = "entertainment loot spawner" - desc = "It's time to paaaaaarty!" - -/obj/effect/spawner/random/entertainment/arcade - name = "spawn random arcade machine" - desc = "Automagically transforms into a random arcade machine. If you see this while in a shift, please create a bug report." - icon_state = "arcade" - loot = list( - /obj/machinery/computer/arcade/orion_trail = 49, - /obj/machinery/computer/arcade/battle = 49, - /obj/machinery/computer/arcade/amputation = 2, - ) - -/obj/effect/spawner/random/entertainment/musical_instrument - name = "musical instrument spawner" - icon_state = "eguitar" - loot = list( - /obj/item/instrument/violin = 5, - /obj/item/instrument/banjo = 5, - /obj/item/instrument/guitar = 5, - /obj/item/instrument/eguitar = 5, - /obj/item/instrument/glockenspiel = 5, - /obj/item/instrument/accordion = 5, - /obj/item/instrument/trumpet = 5, - /obj/item/instrument/saxophone = 5, - /obj/item/instrument/trombone = 5, - /obj/item/instrument/recorder = 5, - /obj/item/instrument/harmonica = 5, - /obj/item/instrument/bikehorn = 2, - /obj/item/instrument/violin/golden = 2, - ) - -/obj/effect/spawner/random/entertainment/gambling - name = "gambling valuables spawner" - icon_state = "dice" - loot = list( - /obj/item/clothing/head/trapper = 3, - /obj/effect/spawner/random/entertainment/coin = 3, - /obj/effect/spawner/random/entertainment/money = 3, - /obj/item/dice/d6 = 3, - /obj/item/storage/box/syndie_kit/throwing_weapons = 1, - /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, - ) - -/obj/effect/spawner/random/entertainment/coin - name = "coin spawner" - icon_state = "coin" - loot = list( - /obj/item/coin/iron = 5, - /obj/item/coin/plastic = 5, - /obj/item/coin/silver = 4, - /obj/item/coin/plasma = 4, - /obj/item/coin/uranium = 3, - /obj/item/coin/titanium = 3, - /obj/item/coin/diamond = 2, - /obj/item/coin/twoheaded = 1, - /obj/item/coin/antagtoken = 1, - ) - -/obj/effect/spawner/random/entertainment/money_small - name = "small money spawner" - icon_state = "cash" - spawn_loot_count = 3 - spawn_loot_split = TRUE - loot = list( - /obj/item/spacecash/bundle/c1 = 5, - /obj/item/spacecash/bundle/c10 = 3, - /obj/item/spacecash/bundle/c20 = 2, - ) - -/obj/effect/spawner/random/entertainment/money - name = "money spawner" - icon_state = "cash" - spawn_loot_count = 3 - spawn_loot_split = TRUE - loot = list( - /obj/item/spacecash/bundle/c1 = 10, - /obj/item/spacecash/bundle/c10 = 5, - /obj/item/spacecash/bundle/c20 = 3, - /obj/item/spacecash/bundle/c50 = 2, - /obj/item/spacecash/bundle/c100 = 1, - ) - -/obj/effect/spawner/random/entertainment/money_medium - name = "money spawner" - icon_state = "cash" - loot = list( - /obj/item/spacecash/bundle/c100 = 25, - /obj/item/spacecash/bundle/c200 = 15, - /obj/item/spacecash/bundle/c50 = 10, - /obj/item/spacecash/bundle/c500 = 5, - /obj/item/spacecash/bundle/c1000 = 1, - ) - -/obj/effect/spawner/random/entertainment/money_large - name = "large money spawner" - icon_state = "cash" - spawn_loot_count = 5 - spawn_loot_split = TRUE - loot = list( - /obj/item/spacecash/bundle/c1 = 100, - /obj/item/spacecash/bundle/c10 = 80, - /obj/item/spacecash/bundle/c20 = 60, - /obj/item/spacecash/bundle/c50 = 40, - /obj/item/spacecash/bundle/c100 = 30, - /obj/item/spacecash/bundle/c200 = 20, - /obj/item/spacecash/bundle/c500 = 10, - /obj/item/spacecash/bundle/c1000 = 5, - /obj/item/spacecash/bundle/c10000 = 1, - ) - -/obj/effect/spawner/random/entertainment/drugs - name = "recreational drugs spawner" - icon_state = "pill" - loot = list( - /obj/item/reagent_containers/food/drinks/bottle/hooch = 50, - /obj/item/clothing/mask/cigarette/rollie/cannabis = 15, - /obj/item/reagent_containers/syringe = 15, - /obj/item/cigbutt/roach = 15, - /obj/item/clothing/mask/cigarette/rollie/mindbreaker = 5, - ) - -/obj/effect/spawner/random/entertainment/dice - name = "dice spawner" - icon_state = "dice_bag" - loot = list( - /obj/item/dice/d4, - /obj/item/dice/d6, - /obj/item/dice/d8, - /obj/item/dice/d10, - /obj/item/dice/d12, - /obj/item/dice/d20, - ) - -/obj/effect/spawner/random/entertainment/cigarette_pack - name = "cigarette pack spawner" - icon_state = "cigarettes" - loot = list( - /obj/item/storage/fancy/cigarettes = 3, - /obj/item/storage/fancy/cigarettes/dromedaryco = 3, - /obj/item/storage/fancy/cigarettes/cigpack_uplift = 3, - /obj/item/storage/fancy/cigarettes/cigpack_robust = 3, - /obj/item/storage/fancy/cigarettes/cigpack_carp = 3, - /obj/item/storage/fancy/cigarettes/cigpack_robustgold = 1, - /obj/item/storage/fancy/cigarettes/cigpack_midori = 1, - /obj/item/storage/fancy/cigarettes/cigpack_candy = 1, - ) - -/obj/effect/spawner/random/entertainment/cigarette - name = "cigarette spawner" - icon_state = "cigarettes" - loot = list( - /obj/item/clothing/mask/cigarette/space_cigarette = 3, - /obj/item/clothing/mask/cigarette/rollie/cannabis = 3, - /obj/item/clothing/mask/cigarette/rollie/nicotine = 3, - /obj/item/clothing/mask/cigarette/dromedary = 2, - /obj/item/clothing/mask/cigarette/uplift = 2, - /obj/item/clothing/mask/cigarette/robust = 2, - /obj/item/clothing/mask/cigarette/carp = 1, - /obj/item/clothing/mask/cigarette/robustgold = 1, - ) - -/obj/effect/spawner/random/entertainment/cigar - name = "cigar spawner" - icon_state = "cigarettes" - loot = list( - /obj/item/clothing/mask/cigarette/cigar = 3, - /obj/item/clothing/mask/cigarette/cigar/havana = 2, - /obj/item/clothing/mask/cigarette/cigar/cohiba = 1, - ) - -/obj/effect/spawner/random/entertainment/wallet_lighter - name = "lighter wallet spawner" - icon_state = "lighter" - loot = list( // these fit inside a wallet - /obj/item/match = 10, - /obj/item/lighter/greyscale = 10, - /obj/item/lighter = 1, - ) - -/obj/effect/spawner/random/entertainment/lighter - name = "lighter spawner" - icon_state = "lighter" - loot = list( - /obj/item/storage/box/matches = 10, - /obj/item/lighter/greyscale = 10, - /obj/item/lighter = 1, - ) - -/obj/effect/spawner/random/entertainment/wallet_storage - name = "wallet contents spawner" - icon_state = "wallet" - spawn_loot_count = 1 - loot = list( // random photos would go here. IF I HAD ONE. :'( - /obj/item/lipstick/random, - /obj/effect/spawner/random/food_or_drink/seed, - /obj/effect/spawner/random/medical/minor_healing, - /obj/effect/spawner/random/entertainment/coin, - /obj/effect/spawner/random/entertainment/dice, - /obj/effect/spawner/random/entertainment/cigarette, - /obj/effect/spawner/random/entertainment/wallet_lighter, - /obj/effect/spawner/random/bureaucracy/paper, - /obj/effect/spawner/random/bureaucracy/crayon, - /obj/effect/spawner/random/bureaucracy/pen, - /obj/effect/spawner/random/bureaucracy/stamp, - ) - -/obj/effect/spawner/random/entertainment/deck - name = "deck spawner" - icon_state = "deck" - loot = list( - /obj/item/toy/cards/deck = 5, - /obj/item/toy/cards/deck/kotahi = 2, - /obj/item/toy/cards/deck/tarot = 1, - ) - -/obj/effect/spawner/random/entertainment/toy_figure - name = "toy figure spawner" - icon_state = "toy" - loot_subtype_path = /obj/item/toy/figure - loot = list() - -/obj/effect/spawner/random/entertainment/toy - name = "toy spawner" - icon_state = "toy" - loot = list() - -/obj/effect/spawner/random/entertainment/toy/Initialize(mapload) - loot += GLOB.arcade_prize_pool - return ..() - -/obj/effect/spawner/random/entertainment/plushie - name = "plushie spawner" - icon_state = "plushie" - loot = list ( - /obj/item/toy/plush/beeplushie, - /obj/item/toy/plush/blahaj, - /obj/item/toy/plush/carpplushie, - /obj/item/toy/plush/flushed, - /obj/item/toy/plush/kari, - /obj/item/toy/plush/lizardplushie, - /obj/item/toy/plush/mora, - /obj/item/toy/plush/realgoat, - /obj/item/toy/plush/rilena, - /obj/item/toy/plush/sharai, - /obj/item/toy/plush/slimeplushie, - /obj/item/toy/plush/snakeplushie, - /obj/item/toy/plush/spider, - /obj/item/toy/plush/tali, - /obj/item/toy/plush/xader, - /obj/effect/spawner/random/entertainment/plushie/moth // fair chances - ) - -/obj/effect/spawner/random/entertainment/plushie/moth - loot = list ( - /obj/item/toy/plush/moth, - /obj/item/toy/plush/moth/monarch, - /obj/item/toy/plush/moth/luna, - /obj/item/toy/plush/moth/atlas, - /obj/item/toy/plush/moth/redish, - /obj/item/toy/plush/moth/royal, - /obj/item/toy/plush/moth/gothic, - /obj/item/toy/plush/moth/lovers, - /obj/item/toy/plush/moth/whitefly, - /obj/item/toy/plush/moth/punished, - /obj/item/toy/plush/moth/firewatch, - /obj/item/toy/plush/moth/deadhead, - /obj/item/toy/plush/moth/poison, - /obj/item/toy/plush/moth/ragged, - /obj/item/toy/plush/moth/snow, - /obj/item/toy/plush/moth/moonfly - ) - -/obj/effect/spawner/random/entertainment/colorful_grenades - name = "colorful/glitter grenades spawner" - loot = list( - /obj/item/grenade/chem_grenade/glitter/pink, - /obj/item/grenade/chem_grenade/glitter/blue, - /obj/item/grenade/chem_grenade/glitter/white, - /obj/item/grenade/chem_grenade/colorful - ) diff --git a/code/game/objects/effects/spawners/random.dm/exotic.dm b/code/game/objects/effects/spawners/random.dm/exotic.dm deleted file mode 100644 index 9d55fa9b69ff..000000000000 --- a/code/game/objects/effects/spawners/random.dm/exotic.dm +++ /dev/null @@ -1,69 +0,0 @@ -/obj/effect/spawner/random/exotic - name = "exotic spawner" - desc = "Super duper rare stuff." - icon_state = "showcase" - -/obj/effect/spawner/random/exotic/ripley - name = "25% exosuit 75% wreckage ripley spawner" - icon_state = "ripley" - loot = list( - /obj/mecha/working/ripley/mining = 1, - /obj/structure/mecha_wreckage/ripley = 5 - ) - -/obj/effect/spawner/random/exotic/prison_contraband - name = "prison contraband loot spawner" - icon_state = "prisoner" - loot = list( - /obj/item/clothing/mask/cigarette/space_cigarette = 4, - /obj/item/clothing/mask/cigarette/robust = 2, - /obj/item/clothing/mask/cigarette/carp = 3, - /obj/item/clothing/mask/cigarette/uplift = 2, - /obj/item/clothing/mask/cigarette/dromedary = 3, - /obj/item/clothing/mask/cigarette/robustgold = 1, - /obj/item/storage/fancy/cigarettes/cigpack_uplift = 3, - /obj/item/storage/fancy/cigarettes = 3, - /obj/item/clothing/mask/cigarette/rollie/cannabis = 4, - /obj/item/toy/crayon/spraycan = 2, - /obj/item/crowbar = 1, - /obj/item/assembly/flash/handheld = 1, - /obj/item/restraints/handcuffs/cable/zipties = 1, - /obj/item/restraints/handcuffs = 1, - /obj/item/radio = 1, - /obj/item/lighter = 3, - /obj/item/storage/box/matches = 3, - /obj/item/reagent_containers/syringe/contraband/space_drugs = 1, - /obj/item/reagent_containers/syringe/contraband/krokodil = 1, - /obj/item/reagent_containers/syringe/contraband/crank = 1, - /obj/item/reagent_containers/syringe/contraband/methamphetamine = 1, - /obj/item/reagent_containers/syringe/contraband/bath_salts = 1, - /obj/item/reagent_containers/syringe/contraband/fentanyl = 1, - /obj/item/reagent_containers/syringe/contraband/morphine = 1, - /obj/item/storage/pill_bottle/happy = 1, - /obj/item/storage/pill_bottle/lsd = 1, - /obj/item/storage/pill_bottle/psicodine = 1, - /obj/item/reagent_containers/food/drinks/beer = 4, - /obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, - /obj/item/paper/fluff/jobs/prisoner/letter = 1, - /obj/item/grenade/smokebomb = 1, - /obj/item/flashlight/seclite = 1, - /obj/item/melee/knife/shiv = 4, - /obj/item/melee/knife/shiv/carrot = 1, - /obj/item/melee/knife/kitchen = 1, - /obj/item/storage/wallet/random = 1, - /obj/item/pda = 1 - ) - -/obj/effect/spawner/random/exotic/armory - name = "generic armory spawner" - spawn_loot_split = TRUE - spawn_loot_count = 3 - spawn_loot_split_pixel_offsets = 4 - - loot = list( - /obj/item/gun/ballistic/automatic/pistol/ringneck = 8, - /obj/item/gun/ballistic/shotgun/automatic/combat = 5, - /obj/item/gun/ballistic/automatic/pistol/deagle, - /obj/item/gun/ballistic/revolver/mateba - ) - diff --git a/code/game/objects/effects/spawners/random.dm/food_or_drink.dm b/code/game/objects/effects/spawners/random.dm/food_or_drink.dm deleted file mode 100644 index 300f94260ee1..000000000000 --- a/code/game/objects/effects/spawners/random.dm/food_or_drink.dm +++ /dev/null @@ -1,284 +0,0 @@ -/obj/effect/spawner/random/food_or_drink - name = "food or drink loot spawner" - desc = "Nom nom nom" - icon_state = "soup" - -/obj/effect/spawner/random/food_or_drink/donkpockets - name = "donk pocket box spawner" - icon_state = "donkpocket" - loot = list( - /obj/item/storage/box/donkpockets/donkpocketspicy = 1, - /obj/item/storage/box/donkpockets/donkpocketteriyaki = 1, - /obj/item/storage/box/donkpockets/donkpocketpizza = 1, - /obj/item/storage/box/donkpockets/donkpocketberry = 1, - /obj/item/storage/box/donkpockets/donkpockethonk = 1, - ) - -/obj/effect/spawner/random/food_or_drink/ration - name = "ration spawner" - icon_state = "pizzabox" - loot = list ( - /obj/item/storage/ration/vegan_chili = 5, - /obj/item/storage/ration/shredded_beef = 5, - /obj/item/storage/ration/pork_spaghetti = 5, - /obj/item/storage/ration/fried_fish = 5, - /obj/item/storage/ration/beef_strips = 5, - /obj/item/storage/ration/chili_macaroni = 5, - /obj/item/storage/ration/chicken_wings_hot_sauce = 5, - /obj/item/storage/ration/fish_stew = 5, - /obj/item/storage/ration/lemon_pepper_chicken = 5, - /obj/item/storage/ration/sausage_peppers_onions = 5, - /obj/item/storage/ration/pork_dumplings_chili_sauce = 5, - /obj/item/storage/ration/battered_fish_sticks = 5, - /obj/item/storage/ration/assorted_salted_offal = 5, - /obj/item/storage/ration/maple_pork_sausage_patty = 5, - /obj/item/storage/ration/pepper_jack_beef_patty = 5, - /obj/item/storage/ration/beef_goulash = 5, - /obj/item/storage/ration/pepperoni_pizza_slice = 5, - /obj/item/storage/ration/blackened_calamari = 5, - /obj/item/storage/ration/elbow_macaroni = 5, - /obj/item/storage/ration/cheese_pizza_slice = 5, - /obj/item/storage/ration/crayons = 2 // :) - ) - -/obj/effect/spawner/random/food_or_drink/donut - name = "random donut" //donut :) - icon_state = "pizzabox" - loot = list( - /obj/item/reagent_containers/food/snacks/donut/apple = 1, - /obj/item/reagent_containers/food/snacks/donut/berry = 1, - /obj/item/reagent_containers/food/snacks/donut/caramel = 1, - /obj/item/reagent_containers/food/snacks/donut/choco = 1, - /obj/item/reagent_containers/food/snacks/donut/laugh = 1, - /obj/item/reagent_containers/food/snacks/donut/matcha = 1, - /obj/item/reagent_containers/food/snacks/donut/meat = 1, - /obj/item/reagent_containers/food/snacks/donut/plain = 1, - /obj/item/reagent_containers/food/snacks/donut/trumpet = 1, - /obj/item/reagent_containers/food/snacks/donut/blumpkin = 1, - /obj/item/reagent_containers/food/snacks/donut/bungo = 1, - /obj/item/reagent_containers/food/snacks/donut/chaos = 1, - ) - -/obj/effect/spawner/random/food_or_drink/donut/jelly - name = "random jelly donut" - loot = list( - /obj/item/reagent_containers/food/snacks/donut/jelly/berry = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/apple = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/blumpkin = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/bungo = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/caramel = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/choco = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/laugh = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/matcha = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/plain = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/trumpet = 1, - ) - -/obj/effect/spawner/random/food_or_drink/donut/slimejelly - name = "random slimejelly donut" - loot = list( - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/apple = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/berry = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/blumpkin = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/bungo = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/caramel = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/choco = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/laugh = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/matcha = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/plain = 1, - /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/trumpet = 1, - ) - -/obj/effect/spawner/random/food_or_drink/three_course_meal - name = "three course meal spawner" - spawn_loot_count = 3 - spawn_loot_double = FALSE - var/soups = list( - /obj/item/reagent_containers/food/snacks/soup/beet, - /obj/item/reagent_containers/food/snacks/soup/sweetpotato, - /obj/item/reagent_containers/food/snacks/soup/stew, - /obj/item/reagent_containers/food/snacks/soup/hotchili, - /obj/item/reagent_containers/food/snacks/soup/nettle, - /obj/item/reagent_containers/food/snacks/soup/meatball) - var/salads = list( - /obj/item/reagent_containers/food/snacks/salad/herbsalad, - /obj/item/reagent_containers/food/snacks/salad/validsalad, - /obj/item/reagent_containers/food/snacks/salad/fruit, - /obj/item/reagent_containers/food/snacks/salad/jungle, - /obj/item/reagent_containers/food/snacks/salad/aesirsalad) - var/mains = list( - /obj/item/reagent_containers/food/snacks/bearsteak, - /obj/item/reagent_containers/food/snacks/enchiladas, - /obj/item/reagent_containers/food/snacks/stewedsoymeat, - /obj/item/reagent_containers/food/snacks/burger/bigbite, - /obj/item/reagent_containers/food/snacks/burger/superbite, - /obj/item/reagent_containers/food/snacks/burger/fivealarm) - -/obj/effect/spawner/random/food_or_drink/three_course_meal/Initialize(mapload) - loot = list(pick(soups) = 1,pick(salads) = 1,pick(mains) = 1) - . = ..() - -/obj/effect/spawner/random/food_or_drink/garden - name = "lush garden seeder" - spawn_loot_count = 3 - loot = list( - /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus = 1, - /obj/item/reagent_containers/food/snacks/grown/berries/death/stealth = 2, - /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d = 1, - /obj/item/reagent_containers/food/snacks/grown/trumpet = 1, - /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, - /obj/item/seeds/random = 1, - /obj/item/grown/log/bamboo = 2, - /obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris = 2, - /obj/item/reagent_containers/food/snacks/grown/berries/poison/stealth = 5, - /obj/item/reagent_containers/food/snacks/grown/citrus/lemon = 2, - /obj/item/reagent_containers/food/snacks/grown/citrus/lime = 2, - /obj/item/reagent_containers/food/snacks/grown/vanillapod = 2, - /obj/item/reagent_containers/food/snacks/grown/moonflower = 2, - /obj/item/reagent_containers/food/snacks/grown/cocoapod = 2, - /obj/item/reagent_containers/food/snacks/grown/pineapple = 2, - /obj/item/reagent_containers/food/snacks/grown/poppy/lily = 2, - /obj/item/reagent_containers/food/snacks/grown/poppy/geranium = 2, - /obj/item/reagent_containers/food/snacks/grown/sugarcane = 2, - /obj/item/reagent_containers/food/snacks/grown/tea = 2, - /obj/item/reagent_containers/food/snacks/grown/tobacco = 2, - /obj/item/reagent_containers/food/snacks/grown/watermelon = 4, - /obj/item/grown/sunflower = 4, - /obj/item/reagent_containers/food/snacks/grown/banana = 4, - /obj/item/reagent_containers/food/snacks/grown/apple = 4, - /obj/item/reagent_containers/food/snacks/grown/berries = 5, - /obj/item/reagent_containers/food/snacks/grown/cherries = 4, - /obj/item/reagent_containers/food/snacks/grown/citrus/orange = 4, - /obj/item/reagent_containers/food/snacks/grown/garlic = 4, - /obj/item/reagent_containers/food/snacks/grown/grapes = 4, - /obj/item/reagent_containers/food/snacks/grown/grass = 5, - /obj/item/reagent_containers/food/snacks/grown/pumpkin = 4, - /obj/item/reagent_containers/food/snacks/grown/rainbow_flower = 4, - /obj/item/reagent_containers/food/snacks/grown/wheat = 4, - /obj/item/reagent_containers/food/snacks/grown/parsnip = 4, - /obj/item/reagent_containers/food/snacks/grown/peas = 4, - /obj/item/reagent_containers/food/snacks/grown/rice = 4, - /obj/item/reagent_containers/food/snacks/grown/soybeans = 4, - /obj/item/reagent_containers/food/snacks/grown/tomato = 4, - /obj/item/reagent_containers/food/snacks/grown/cabbage = 4, - /obj/item/reagent_containers/food/snacks/grown/onion = 4, - /obj/item/reagent_containers/food/snacks/grown/carrot = 4) - -/obj/effect/spawner/random/food_or_drink/garden/arid - name = "arid garden seeder" - loot = list( - /obj/item/reagent_containers/food/snacks/grown/ghost_chili = 1, - /obj/item/reagent_containers/food/snacks/grown/nettle = 1, - /obj/item/grown/cotton/durathread = 1, - /obj/item/seeds/random = 1, - /obj/item/reagent_containers/food/snacks/grown/redbeet = 1, - /obj/item/reagent_containers/food/snacks/grown/aloe = 2, - /obj/item/grown/cotton = 2, - /obj/item/reagent_containers/food/snacks/grown/mushroom/angel = 2, - /obj/item/reagent_containers/food/snacks/grown/chili = 2, - /obj/item/reagent_containers/food/snacks/grown/whitebeet = 5, - /obj/item/reagent_containers/food/snacks/grown/potato = 4, - /obj/item/reagent_containers/food/snacks/grown/potato/sweet = 4, - /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle = 4, - /obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet = 4, - /obj/item/reagent_containers/food/snacks/grown/corn = 4 - ) - -/obj/effect/spawner/random/food_or_drink/garden/cold - name = "frigid garden seeder" - loot = list( - /obj/item/reagent_containers/food/snacks/grown/bluecherries = 1, - /obj/item/reagent_containers/food/snacks/grown/galaxythistle = 1, - /obj/item/reagent_containers/food/snacks/grown/berries/death/stealth = 1, - /obj/item/seeds/random = 1, - /obj/item/reagent_containers/food/snacks/grown/poppy = 2, - /obj/item/reagent_containers/food/snacks/grown/tomato/blue = 2, - /obj/item/reagent_containers/food/snacks/grown/berries/poison/stealth = 2, - /obj/item/reagent_containers/food/snacks/grown/berries = 4, - /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle = 4, - /obj/item/reagent_containers/food/snacks/grown/oat = 4, - /obj/item/reagent_containers/food/snacks/grown/grapes/green = 4, - /obj/item/reagent_containers/food/snacks/grown/grass = 4, - /obj/item/reagent_containers/food/snacks/grown/harebell = 5, - /obj/item/seeds/starthistle = 5 - ) - -/obj/effect/spawner/random/food_or_drink/garden/sick - name = "sickly garden seeder" - loot = list( - /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow = 1, - /obj/item/reagent_containers/food/snacks/grown/cannabis/death = 1, - /obj/item/seeds/replicapod = 1, - /obj/item/reagent_containers/food/snacks/grown/mushroom/angel = 1, - /obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap = 2, - /obj/item/seeds/tower/steel = 2, - /obj/item/reagent_containers/food/snacks/grown/cannabis = 2, - /obj/item/seeds/random = 2, - /obj/item/reagent_containers/food/snacks/grown/mushroom/jupitercup = 2, - /obj/item/reagent_containers/food/snacks/grown/cherrybulbs = 4, - /obj/item/reagent_containers/food/snacks/grown/mushroom/amanita = 4, - /obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap = 4, - /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi = 4, - /obj/item/reagent_containers/food/snacks/grown/berries/glow = 4 - ) - -/obj/effect/spawner/random/food_or_drink/garden/seaweed - name = "seaweed patch seeder" - loot = list( - /obj/item/reagent_containers/food/snacks/grown/seaweed - ) - -/obj/effect/spawner/random/food_or_drink/seed - name = "GO FORTH AND CULTIVATE" - icon_state = "seed"//sneed - loot = list( - /obj/item/seeds/aloe, - /obj/item/seeds/ambrosia, - /obj/item/seeds/apple, - /obj/item/seeds/cotton, - /obj/item/seeds/banana, - /obj/item/seeds/berry, - /obj/item/seeds/cabbage, - /obj/item/seeds/carrot, - /obj/item/seeds/cherry, - /obj/item/seeds/chanter, - /obj/item/seeds/chili, - /obj/item/seeds/cocoapod, - /obj/item/seeds/coffee, - /obj/item/seeds/corn, - /obj/item/seeds/eggplant, - /obj/item/seeds/garlic, - /obj/item/seeds/grape, - /obj/item/seeds/grass, - /obj/item/seeds/lemon, - /obj/item/seeds/lime, - /obj/item/seeds/onion, - /obj/item/seeds/orange, - /obj/item/seeds/peas, - /obj/item/seeds/pineapple, - /obj/item/seeds/potato, - /obj/item/seeds/poppy, - /obj/item/seeds/pumpkin, - /obj/item/seeds/wheat/rice, - /obj/item/seeds/soya, - /obj/item/seeds/sugarcane, - /obj/item/seeds/sunflower, - /obj/item/seeds/tea, - /obj/item/seeds/tobacco, - /obj/item/seeds/tomato, - /obj/item/seeds/tower, - /obj/item/seeds/watermelon, - /obj/item/seeds/wheat, - /obj/item/seeds/whitebeet, - /obj/item/seeds/amanita, - /obj/item/seeds/glowshroom, - /obj/item/seeds/liberty, - /obj/item/seeds/nettle, - /obj/item/seeds/plump, - /obj/item/seeds/reishi, - /obj/item/seeds/cannabis, - /obj/item/seeds/starthistle, - /obj/item/seeds/cherry/bomb, - /obj/item/seeds/berry/glow, - /obj/item/seeds/sunflower/moonflower - ) diff --git a/code/game/objects/effects/spawners/random.dm/maintenance.dm b/code/game/objects/effects/spawners/random.dm/maintenance.dm deleted file mode 100644 index 53a61e0f877d..000000000000 --- a/code/game/objects/effects/spawners/random.dm/maintenance.dm +++ /dev/null @@ -1,57 +0,0 @@ -/obj/effect/spawner/random/maintenance - name = "maintenance loot spawner" - desc = "Come on Lady Luck, spawn me a pair of sunglasses." - icon_state = "loot" - // see code/_globalvars/lists/maintenance_loot.dm for loot table - -/obj/effect/spawner/random/maintenance/Initialize(mapload) - loot = GLOB.maintenance_loot - . = ..() - -/obj/effect/spawner/random/maintenance/skew_loot_weights(list/loot_list, exponent) - ///We only need to skew the weights once, since it's a global list used by all maint spawners. - var/static/already_done = FALSE - if(loot_list == GLOB.maintenance_loot && already_done) - return - already_done = TRUE - return ..() - -/obj/effect/spawner/random/maintenance/spawn_loot(lootcount_override) - if(isnull(lootcount_override)) - lootcount_override = spawn_loot_count - . = ..() - - /* Fucks everything. Investigate further - // In addition, closets that are closed will have the maintenance loot inserted inside. - for(var/obj/structure/closet/closet in get_turf(src)) - if(!closet.opened) - closet.take_contents() - */ - -/obj/effect/spawner/random/maintenance/two - name = "2 x maintenance loot spawner" - spawn_loot_count = 2 - -/obj/effect/spawner/random/maintenance/three - name = "3 x maintenance loot spawner" - spawn_loot_count = 3 - -/obj/effect/spawner/random/maintenance/four - name = "4 x maintenance loot spawner" - spawn_loot_count = 4 - -/obj/effect/spawner/random/maintenance/five - name = "5 x maintenance loot spawner" - spawn_loot_count = 5 - -/obj/effect/spawner/random/maintenance/six - name = "6 x maintenance loot spawner" - spawn_loot_count = 6 - -/obj/effect/spawner/random/maintenance/seven - name = "7 x maintenance loot spawner" - spawn_loot_count = 7 - -/obj/effect/spawner/random/maintenance/eight - name = "8 x maintenance loot spawner" - spawn_loot_count = 8 diff --git a/code/game/objects/effects/spawners/random.dm/medical.dm b/code/game/objects/effects/spawners/random.dm/medical.dm deleted file mode 100644 index a0d5a6db53b9..000000000000 --- a/code/game/objects/effects/spawners/random.dm/medical.dm +++ /dev/null @@ -1,145 +0,0 @@ -/obj/effect/spawner/random/medical - name = "medical loot spawner" - desc = "Doc, gimmie something good." - -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - icon_state = "gauze" - loot = list( - /obj/item/stack/medical/suture, - /obj/item/stack/medical/mesh, - /obj/item/stack/medical/gauze, - ) - -/obj/effect/spawner/random/medical/organs - name = "ayylien organ spawner" - loot = list( - /obj/item/organ/heart/gland/electric = 3, - /obj/item/organ/heart/gland/trauma = 4, - /obj/item/organ/heart/gland/egg = 7, - /obj/item/organ/heart/gland/chem = 5, - /obj/item/organ/heart/gland/mindshock = 5, - /obj/item/organ/heart/gland/plasma = 7, - /obj/item/organ/heart/gland/transform = 5, - /obj/item/organ/heart/gland/slime = 4, - /obj/item/organ/heart/gland/spiderman = 5, - /obj/item/organ/heart/gland/ventcrawling = 1, - /obj/item/organ/body_egg/alien_embryo = 1, - /obj/item/organ/regenerative_core = 2) - spawn_loot_count = 3 - -/obj/effect/spawner/random/medical/memeorgans - name = "meme organ spawner" - loot = list( - /obj/item/organ/ears/penguin, - /obj/item/organ/ears/cat, - /obj/item/organ/eyes/compound, - /obj/item/organ/eyes/snail, - /obj/item/organ/tongue/bone, - /obj/item/organ/tongue/fly, - /obj/item/organ/tongue/snail, - /obj/item/organ/tongue/lizard, - /obj/item/organ/tongue/alien, - /obj/item/organ/tongue/ethereal, - /obj/item/organ/tongue/robot, - /obj/item/organ/tongue/zombie, - /obj/item/organ/appendix, - /obj/item/organ/liver/fly, - /obj/item/organ/lungs/plasmaman, - /obj/item/organ/tail/cat, - /obj/item/organ/tail/lizard - ) - spawn_loot_count = 5 - -/obj/effect/spawner/random/medical/surgery_tool/common - name = "Surgery tool spawner" - icon_state = "scapel" - loot = list( - /obj/item/scalpel, - /obj/item/hemostat, - /obj/item/retractor, - /obj/item/circular_saw, - /obj/item/surgicaldrill, - /obj/item/cautery, - ) - -/obj/effect/spawner/random/medical/surgery_tool/adv - loot = list( - /obj/item/scalpel/advanced, - /obj/item/retractor/advanced, - /obj/item/surgicaldrill/advanced, - ) - -/obj/effect/spawner/random/medical/surgery_tool - loot = list( - /obj/effect/spawner/random/medical/surgery_tool/common = 120, - /obj/effect/spawner/random/medical/surgery_tool/adv = 10, - ) - -/obj/effect/spawner/random/medical/medkit - name = "medkit spawner" - icon_state = "medkit" - loot = list( - /obj/item/storage/firstaid/regular = 10, - /obj/item/storage/firstaid/o2 = 10, - /obj/item/storage/firstaid/fire = 10, - /obj/item/storage/firstaid/brute = 10, - /obj/item/storage/firstaid/toxin = 10, - /obj/item/storage/firstaid/advanced = 1, - ) - -/obj/effect/spawner/random/medical/patient_stretcher - name = "patient stretcher spawner" - icon_state = "rollerbed" - loot = list( - /obj/structure/bed/roller, - /obj/vehicle/ridden/wheelchair, - ) - -/obj/effect/spawner/random/medical/supplies - name = "medical supplies spawner" - icon_state = "box_small" - loot = list( - /obj/item/storage/box/hug, - /obj/item/storage/box/pillbottles, - /obj/item/storage/box/bodybags, - /obj/item/storage/box/rxglasses, - /obj/item/storage/box/beakers, - /obj/item/storage/box/gloves, - /obj/item/storage/box/masks, - /obj/item/storage/box/syringes, - ) - -/obj/effect/spawner/random/medical/beaker - loot = list( - /obj/item/reagent_containers/glass/beaker = 300, - /obj/item/reagent_containers/glass/beaker/large = 200, - /obj/item/reagent_containers/glass/beaker/plastic = 50, - /obj/item/reagent_containers/glass/beaker/meta = 10, - /obj/item/reagent_containers/glass/beaker/noreact = 5, - /obj/item/reagent_containers/glass/beaker/bluespace = 1, - ) - -/obj/effect/spawner/random/medical/prosthetic - loot = list( - /obj/item/bodypart/l_arm/robot/surplus = 1, - /obj/item/bodypart/r_arm/robot/surplus = 1, - /obj/item/bodypart/leg/left/robot/surplus = 1, - /obj/item/bodypart/leg/right/robot/surplus = 1, - ) - -/obj/effect/spawner/random/medical/chem_jug - loot = list( - /obj/item/reagent_containers/glass/chem_jug/carbon, - /obj/item/reagent_containers/glass/chem_jug/oxygen, - /obj/item/reagent_containers/glass/chem_jug/nitrogen, - /obj/item/reagent_containers/glass/chem_jug/hydrogen, - /obj/item/reagent_containers/glass/chem_jug/radium, - /obj/item/reagent_containers/glass/chem_jug/aluminium, - /obj/item/reagent_containers/glass/chem_jug/chlorine, - /obj/item/reagent_containers/glass/chem_jug/copper, - /obj/item/reagent_containers/glass/chem_jug/bromine, - /obj/item/reagent_containers/glass/chem_jug/iodine, - /obj/item/reagent_containers/glass/chem_jug/potassium, - /obj/item/reagent_containers/glass/chem_jug/sulfur - ) diff --git a/code/game/objects/effects/spawners/random.dm/random.dm b/code/game/objects/effects/spawners/random.dm/random.dm deleted file mode 100644 index 0e6606f3b9ee..000000000000 --- a/code/game/objects/effects/spawners/random.dm/random.dm +++ /dev/null @@ -1,175 +0,0 @@ -/** - * Base class for all random spawners. - */ -/obj/effect/spawner/random - icon = 'icons/effects/mapping/random_spawners.dmi' - icon_state = "loot" - layer = OBJ_LAYER - /// Stops persistent lootdrop spawns from being shoved into lockers - anchored = TRUE - /// A list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect) - var/list/loot - /// The subtypes AND type to combine with the loot list - var/loot_type_path - /// The subtypes (this excludes the provided path) to combine with the loot list - var/loot_subtype_path - /// How many items will be spawned - 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 - var/spawn_loot_split = FALSE - /// The pixel x/y divider offsets for spawn_loot_split (spaced 1 pixel apart by default) - var/spawn_loot_split_pixel_offsets = 2 - /// 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) - var/spawn_loot_chance = 100 - /// Determines how big of a range (in tiles) we should scatter things in. - var/spawn_scatter_radius = 0 - /// Whether the items should have a random pixel_x/y offset (maxium offset distance is ±16 pixels for x/y) - var/spawn_random_offset = FALSE - /// Whether items that cannot be spawned will be removed from the loot list. Keep it TRUE unless you've a good reason. - var/remove_if_cant_spawn = TRUE - -/obj/effect/spawner/random/Initialize(mapload) - . = ..() - spawn_loot() - -///If the spawner has any loot defined, randomly picks some and spawns it. Does not cleanup the spawner. -/obj/effect/spawner/random/proc/spawn_loot(lootcount_override) - if(!prob(spawn_loot_chance)) - return - - var/list/spawn_locations = get_spawn_locations(spawn_scatter_radius) - var/spawn_loot_count = isnull(lootcount_override) ? src.spawn_loot_count : lootcount_override - - if(spawn_all_loot) - spawn_loot_count = INFINITY - spawn_loot_double = FALSE - - if(loot_type_path) - loot += typesof(loot_type_path) - - if(loot_subtype_path) - loot += subtypesof(loot_subtype_path) - - if(CONFIG_GET(number/random_loot_weight_modifier) != 1) - skew_loot_weights(loot, CONFIG_GET(number/random_loot_weight_modifier)) - - if(loot?.len) - var/loot_spawned = 0 - var/pixel_divider = FLOOR(16 / spawn_loot_split_pixel_offsets, 1) // 16 pixels offsets is max that should be allowed in any direction - while((spawn_loot_count-loot_spawned) && loot.len) - var/lootspawn = pick_weight_recursive(loot) - if(!can_spawn(lootspawn)) - if(remove_if_cant_spawn) - loot.Remove(lootspawn) - continue - if(!spawn_loot_double) - loot.Remove(lootspawn) - if(lootspawn && (spawn_scatter_radius == 0 || spawn_locations.len)) - var/turf/spawn_loc = loc - if(spawn_scatter_radius > 0) - spawn_loc = pick_n_take(spawn_locations) - - var/atom/movable/spawned_loot = make_item(spawn_loc, lootspawn) - spawned_loot.setDir(dir) - - if (!spawn_loot_split && !spawn_random_offset) - if (pixel_x != 0) - spawned_loot.pixel_x = pixel_x - if (pixel_y != 0) - spawned_loot.pixel_y = pixel_y - else if (spawn_random_offset) - spawned_loot.pixel_x = rand(-16, 16) - spawned_loot.pixel_y = rand(-16, 16) - 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) - loot_spawned++ - -///Levels out the weights of loot if lower than 1, or makes rarer spawns even more rare. -/obj/effect/spawner/random/proc/skew_loot_weights(list/loot_list, exponent) - ///This helps keeping the modified weights more or less correct, since pick_weight doesn't appreciate decimals. - var/precision = 1 - if(exponent < 1) - precision = round((1 - exponent) * 10) + 1 - for(var/loot_type in loot_list) - if(islist(loot_type)) - skew_loot_weights(loot_type, exponent) - var/loot_weight = loot_list[loot_type] - if(loot_weight <= 1) - if(exponent < 1) - loot_list[loot_type] = precision - continue - loot_list[loot_type] = round(loot_weight ** exponent * precision, 1) - -/** - * Makes the actual item related to our spawner. - * - * spawn_loc - where are we spawning it? - * type_path_to_make - what are we spawning? - **/ -/obj/effect/spawner/random/proc/make_item(spawn_loc, type_path_to_make) - return new type_path_to_make(spawn_loc) - -///If the spawner has a spawn_scatter_radius set, this creates a list of nearby turfs available that are in view and have an unblocked line to them. -/obj/effect/spawner/random/proc/get_spawn_locations(radius) - var/list/scatter_locations = list() - - if(!radius) - return scatter_locations - - for(var/turf/turf_in_view in view(radius, get_turf(src))) - if(isclosedturf(turf_in_view)) - continue - if(!has_unblocked_line(turf_in_view)) - continue - - scatter_locations += turf_in_view - - return scatter_locations - -/obj/effect/spawner/random/proc/has_unblocked_line(destination) - for(var/turf/potential_blockage as anything in get_line(get_turf(src), destination)) - if(!potential_blockage.is_blocked_turf(exclude_mobs = TRUE)) - continue - return FALSE - return TRUE - -//finds the probabilities of items spawning from a loot spawner's loot pool -/obj/item/loot_table_maker - icon = 'icons/effects/mapping/landmarks_static.dmi' - icon_state = "random_loot" - var/spawner_to_test = /obj/effect/spawner/random/maintenance //what lootdrop spawner to use the loot pool of - var/loot_count = 180 //180 is about how much maint loot spawns per map as of 11/14/2019 - //result outputs - var/list/spawned_table //list of all items "spawned" and how many - var/list/stat_table //list of all items "spawned" and their occurrance probability - -/obj/item/loot_table_maker/Initialize(mapload) - . = ..() - make_table() - -/obj/item/loot_table_maker/attack_self(mob/user) - to_chat(user, "Loot pool re-rolled.") - make_table() - -/obj/item/loot_table_maker/proc/make_table() - spawned_table = list() - stat_table = list() - var/obj/effect/spawner/random/spawner_to_table = new spawner_to_test - var/lootpool = spawner_to_table.loot - qdel(spawner_to_table) - for(var/i in 1 to loot_count) - var/loot_spawn = pick_weight_recursive(lootpool) - if(!(loot_spawn in spawned_table)) - spawned_table[loot_spawn] = 1 - else - spawned_table[loot_spawn] += 1 - stat_table += spawned_table - for(var/item in stat_table) - stat_table[item] /= loot_count diff --git a/code/game/objects/effects/spawners/random.dm/readme.md b/code/game/objects/effects/spawners/random.dm/readme.md deleted file mode 100644 index 97db867f2de6..000000000000 --- a/code/game/objects/effects/spawners/random.dm/readme.md +++ /dev/null @@ -1,425 +0,0 @@ -# Random Spawners - -## About - -Random spawners are an organized tool primarily for mapping to enhance replayability. The spawners can create objects, effects, and structures with different tweakable settings to get the desired outcome. You can make a spawner determine direction, rarity, number of items to spawn, pixel spacing between items, and even spread it over a large tile radius. This lets you control the atmosphere of a location. You could for instance spawn different piles of trash in maint or spawn decoration items for a room to give it more randomized flavor. The choice is yours! - -*(note the audience of this README is directed towards mappers who lack knowledge of coding)* - -## Variables - -The following variables are defined in `code/game/objects/effects/spawners/random/random.dm` that control how a spawner works. - -- `loot` - a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect) -- `loot_type_path` - this combines the subtypes AND type list with the loot list -- `loot_subtype_path` - this combines ONLY the subtypes (excludes the `loot_subtype_path`) with the loot list -- `spawn_loot_count` - how many items will be spawned -- `spawn_loot_double` - if the same item can be spawned twice from the loot list -- `spawn_loot_split` - whether the items should be distributed to offsets 0,1,-1,2,-2,3,-3.. This overrides pixel_x/y on the spawner itself -- `spawn_all_loot` - whether the spawner should spawn all the loot in the list (ignores `spawn_loot_count`) -- `spawn_loot_chance` - the chance for the spawner to create loot (ignores `spawn_loot_count`) -- `spawn_scatter_radius` - determines how big of a range (in tiles) we should scatter things in - -These variables are set to the following default values for the base `random.dm` object that all objects inherit from: - -```dm - /// these three loot values are all empty - var/list/loot - var/loot_type_path - var/loot_subtype_path - - var/spawn_loot_count = 1 // by default one item will be selected from the loot list - var/spawn_loot_double = TRUE // by default duplicate items CAN be spawned from the loot list - var/spawn_loot_split = FALSE // by default items will NOT spread out on the same tile - var/spawn_all_loot = FALSE // by default the spawner will only spawn the number of items set in spawn_loot_count - var/spawn_loot_chance = 100 // by default the spawner has a 100% chance to spawn the item(s) - var/spawn_scatter_radius = 0 // by default the spawner will spawn the items ONLY on the tile it is on -``` - -However there are some categories that overwrite these default values so pay attention to the folder or category you group your spawner in. For instance the `obj/effect/spawner/random/techstorage` category overwrites the `spawn_all_loot` and the `spawn_loot_split` variables. - -```dm -// Tech storage circuit board spawners -/obj/effect/spawner/random/techstorage - name = "generic circuit board spawner" - spawn_loot_split = TRUE - spawn_all_loot = TRUE -``` - -This means any spawner you create under the techstorage will also have those variables set to that by default. This can be overridden quite easily just be resetting the variables back to the normal state like so: - -```dm -/obj/effect/spawner/random/techstorage/data_disk - name = "data disk spawner" - spawn_all_loot = FALSE // now our loot won't all be spawned - loot = list( - /obj/item/disk/data = 49, - /obj/item/disk/nuclear/fake/obvious = 1, - ) -``` - -## Template - -All the random spawners follow the same template format to keep things consistent and unison. - -```dm -/obj/effect/spawner/random/INSERT_SPAWNER_GROUP/INSERT_SPAWNER_NAME - name = "INSERT_SPAWNER_NAME spawner" - loot = list( - /obj/item/PATH/INSERT_OBJ_1, - /obj/item/PATH/INSERT_OBJ_2, - /obj/item/PATH/INSERT_OBJ_3, - ) -``` - -All the capitalized code is the parts where you are supposed to swap out with your objects like so: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture, - /obj/item/stack/medical/mesh, - /obj/item/stack/medical/gauze, - ) -``` - -Find the path to different objects and add them to the list but try to be consistent with the types of the object and the spawner. For example a medical spawner shouldn't have a emag in the loot list. (use an antag spawner for that instead!) - -## Probability - -Be aware that the `loot` list uses a *weighted chance* formula to determine probability. So if there are no numbers set in the `loot` list then each object defaults to 1 and has the same probability to be selected. For our above example for the `minor_healing` spawner each medical item has a 1/3 chance to be spawned. But if we rearranged the values to this: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture = 2, - /obj/item/stack/medical/mesh = 1, - /obj/item/stack/medical/gauze = 1, - ) -``` - -Then now `suture` has a 50% chance of being spawned (2/4), `mesh` has a 25% chance of being spawned (1/4), and `gauze` also has a 25% chance of being spawned (1/4). If we add another item into the mix then we get the following: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture = 2, - /obj/item/stack/medical/mesh = 1, - /obj/item/stack/medical/gauze = 1, - /obj/item/reagent_containers/syringe = 1, - ) -``` - -Suture is 40% (2/5), Mesh is 20% (1/5), Gauze is 20% (1/5), and Syringe is 20% (1/5). A weighted list has the advantage of not needing to update every item in the list when adding a new item. If the list was based on a straight percent values, then each new item would require to manually go and edit ALL the items in the list. For big lists that would become very tedious. This is why we use weighted lists to determine probability! - -## Style - -Here are some simple guidelines that you should stick to when making a new spawner: - -### If ALL the items have the same chance, we should not set a weighted value to the item - -Do not put `/obj/item/ = 1` unless other items have different spawn chances - -Good: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture = 2, - /obj/item/stack/medical/mesh = 1, - /obj/item/stack/medical/gauze = 1, - /obj/item/reagent_containers/syringe = 1, - ) -``` - -Also Good: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture, - /obj/item/stack/medical/mesh, - /obj/item/stack/medical/gauze, - /obj/item/reagent_containers/syringe, - ) -``` - -Bad: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture = 1, - /obj/item/stack/medical/mesh = 1, - /obj/item/stack/medical/gauze = 1, - /obj/item/reagent_containers/syringe = 1, - ) -``` - - -### Sort the list from highest probability to lowest - -Sort from top to bottom. The rarest items for your spawner should be at the bottom of the list. - -Good: - -```dm -/obj/effect/spawner/random/exotic/armory - name = "armory loot spawner" - loot = list( - /obj/item/gun/ballistic/automatic/pistol = 8, - /obj/item/gun/ballistic/shotgun/automatic/combat = 5, - /obj/item/storage/box/syndie_kit/throwing_weapons = 3, - /obj/item/grenade/clusterbuster/teargas = 2, - /obj/item/grenade/clusterbuster = 2, - /obj/item/gun/ballistic/automatic/pistol/deagle = 1, - /obj/item/gun/ballistic/revolver/mateba = 1, - ) -``` - -Bad: - -```dm -/obj/effect/spawner/random/exotic/armory - name = "armory loot spawner" - loot = list( - /obj/item/storage/box/syndie_kit/throwing_weapons = 3, - /obj/item/gun/ballistic/automatic/pistol = 8, - /obj/item/gun/ballistic/revolver/mateba = 1, - /obj/item/grenade/clusterbuster/teargas = 2, - /obj/item/gun/ballistic/automatic/pistol/deagle = 1, - /obj/item/grenade/clusterbuster = 2, - /obj/item/gun/ballistic/shotgun/automatic/combat = 5, - ) -``` - -### Always put the `loot` list at the bottom of your spawner - -This is just to keep things organized. - -Good: - -```dm -/obj/effect/spawner/random/food_or_drink/donkpockets - name = "donk pocket box spawner" - spawn_loot_double = FALSE - loot = list( - /obj/item/storage/box/donkpockets/donkpocketspicy, - /obj/item/storage/box/donkpockets/donkpocketteriyaki, - /obj/item/storage/box/donkpockets/donkpocketpizza, - /obj/item/storage/box/donkpockets/donkpocketberry, - /obj/item/storage/box/donkpockets/donkpockethonk, - ) -``` - -Bad: - -```dm -/obj/effect/spawner/random/food_or_drink/donkpockets - name = "donk pocket box spawner" - loot = list( - /obj/item/storage/box/donkpockets/donkpocketspicy, - /obj/item/storage/box/donkpockets/donkpocketteriyaki, - /obj/item/storage/box/donkpockets/donkpocketpizza, - /obj/item/storage/box/donkpockets/donkpocketberry, - /obj/item/storage/box/donkpockets/donkpockethonk, - ) - spawn_loot_double = FALSE -``` - -### Always put a comma at the last item in the `loot` list - -This will make it easier for people to add items to your spawner later without getting frustrating code errors. - -Good: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture, - /obj/item/stack/medical/mesh, - /obj/item/stack/medical/gauze, - ) -``` - -Bad: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture, - /obj/item/stack/medical/mesh, - /obj/item/stack/medical/gauze // if someone adds an item to the list later it will cause an error - ) -``` - -### Keep the same tab formatting for the `loot` list (unless there is only one item) - -Again, this is just good code organization. If there is only one item, then encase that item in `loot = list(item)` - -Good: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture, - /obj/item/stack/medical/mesh, - /obj/item/stack/medical/gauze, - ) -``` - -Also Good: - -```dm -/obj/effect/spawner/random/structure/crate_abandoned - icon = 'icons/effects/landmarks_static.dmi' - icon_state = "loot_site" - spawn_loot_chance = 20 - loot = list(/obj/structure/closet/crate/secure/loot) -``` - -Bad: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list( - /obj/item/stack/medical/suture, - /obj/item/stack/medical/mesh, - /obj/item/stack/medical/gauze, - ) -``` - -Also Bad: - -```dm -/obj/effect/spawner/random/medical/minor_healing - name = "minor healing spawner" - loot = list(/obj/item/stack/medical/suture, - /obj/item/stack/medical/mesh, - /obj/item/stack/medical/gauze,) -``` - -### Try to keep the total combined weight of your `loot` list to sane values (Aim for 5, 10, 20, 50, or 100) - -This makes the math probability easier for people to calculate. (this is recommended, but not always possible) - -Good: - -```dm -/obj/effect/spawner/random/trash/cigbutt - name = "cigarette butt spawner" - loot = list( - /obj/item/cigbutt = 65, - /obj/item/cigbutt/roach = 20, - /obj/item/cigbutt/cigarbutt = 15, - ) -``` - -Also Good: - -```dm -/obj/effect/spawner/random/trash/botanical_waste - name = "botanical waste spawner" - loot = list( - /obj/item/grown/bananapeel = 6, - /obj/item/grown/corncob = 3, - /obj/item/food/grown/bungopit = 1, - ) -``` - -Bad: - -```dm -/obj/effect/spawner/random/entertainment/money_large - name = "large money spawner" - loot = list( - /obj/item/stack/spacecash/c1 = 521, - /obj/item/stack/spacecash/c10 = 378, - /obj/item/stack/spacecash/c20 = 212, - /obj/item/stack/spacecash/c50 = 205, - /obj/item/stack/spacecash/c100 = 71, - /obj/item/stack/spacecash/c200 = 60, - /obj/item/stack/spacecash/c500 = 57, - /obj/item/stack/spacecash/c1000 = 41, - /obj/item/stack/spacecash/c10000 = 12, - ) -``` - -### Do not put empty items in the loot list - -Instead use the `spawn_loot_chance` var to control the chance for the spawner to spawn nothing. - -Good: - -```dm -/obj/effect/spawner/random/structure/crate_abandoned - name = "locked crate spawner" - spawn_loot_chance = 20 - loot = list(/obj/structure/closet/crate/secure/loot) -``` - - -Bad: - -```dm -/obj/effect/spawner/lootdrop/crate_spawner - name = "lootcrate spawner" - loot = list( - "" = 80 - /obj/structure/closet/crate/secure/loot = 20, - ) -``` - -### Avoid making a spawner that is a duplicate - -We don't want copy-cat spawners that are almost identical. Instead merge spawners together if possible. - -Good: - -```dm -/obj/effect/spawner/random/exotic/armory - name = "armory loot spawner" - icon_state = "pistol" - loot = list( - /obj/item/gun/ballistic/automatic/pistol = 8, - /obj/item/gun/ballistic/shotgun/automatic/combat = 5, - /obj/item/storage/box/syndie_kit/throwing_weapons = 3, - /obj/item/grenade/clusterbuster/teargas = 2, - /obj/item/grenade/clusterbuster = 2, - /obj/item/gun/ballistic/automatic/pistol/deagle, - /obj/item/gun/ballistic/revolver/mateba, - ) -``` - - -Bad: - -```dm -/obj/effect/spawner/lootdrop/armory_contraband - loot = list( - /obj/item/gun/ballistic/automatic/pistol = 8, - /obj/item/gun/ballistic/shotgun/automatic/combat = 5, - /obj/item/gun/ballistic/automatic/pistol/deagle, - /obj/item/gun/ballistic/revolver/mateba - ) - -/obj/effect/spawner/lootdrop/armory_contraband/metastation - loot = list( - /obj/item/gun/ballistic/automatic/pistol = 8, - /obj/item/gun/ballistic/shotgun/automatic/combat = 5, - /obj/item/storage/box/syndie_kit/throwing_weapons = 3, - /obj/item/gun/ballistic/automatic/pistol/deagle, - /obj/item/gun/ballistic/revolver/mateba - ) - -``` diff --git a/code/game/objects/effects/spawners/random.dm/salvaging.dm b/code/game/objects/effects/spawners/random.dm/salvaging.dm deleted file mode 100644 index 66543e3ef47a..000000000000 --- a/code/game/objects/effects/spawners/random.dm/salvaging.dm +++ /dev/null @@ -1,207 +0,0 @@ -//GENERIC -/obj/effect/spawner/random/salvage_capacitor - icon_state = "matter_bin" - loot = list( - /obj/item/stock_parts/capacitor = 120, - /obj/item/stock_parts/capacitor/adv = 20, - /obj/item/stock_parts/capacitor/super = 5, - ) - -/obj/effect/spawner/random/salvage_scanning - icon_state = "matter_bin" - loot = list( - /obj/item/stock_parts/scanning_module = 120, - /obj/item/stock_parts/scanning_module/adv = 20, - /obj/item/stock_parts/scanning_module/phasic = 5, - ) - -/obj/effect/spawner/random/salvage_manipulator - icon_state = "matter_bin" - loot = list( - /obj/item/stock_parts/manipulator = 120, - /obj/item/stock_parts/manipulator/nano = 20, - /obj/item/stock_parts/manipulator/pico = 5, - ) - -/obj/effect/spawner/random/salvage_matter_bin - icon_state = "matter_bin" - loot = list( - /obj/item/stock_parts/matter_bin = 120, - /obj/item/stock_parts/matter_bin/adv = 20, - /obj/item/stock_parts/matter_bin/super = 5, - ) - -/obj/effect/spawner/random/salvage_laser - icon_state = "matter_bin" - loot = list( - /obj/item/stock_parts/micro_laser = 120, - /obj/item/stock_parts/micro_laser/high = 20, - /obj/item/stock_parts/micro_laser/ultra = 5, - ) - -//PROTOLATHE - -/obj/effect/spawner/random/random_gun_protolathe_lootdrop - icon_state = "laser_gun" - loot = list( - /obj/item/gun/energy/lasercannon = 1, - /obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq/proto = 1, - /obj/item/gun/energy/temperature/security = 1, - ) - -/obj/effect/spawner/random/random_ammo_protolathe_lootdrop - icon_state = "rubbershot" - loot = list( - /obj/item/stock_parts/cell/gun/upgraded = 5, - /obj/item/ammo_box/magazine/smgm9mm = 7, - ) - -//DESTRUCTIVE ANAL //i'm killing you -/obj/effect/spawner/random/destructive_anal_loot //what do people usually put in these things anayways - loot = list( - /obj/item/storage/toolbox/syndicate/empty = 650, - /obj/item/gun/ballistic/automatic/pistol/ringneck = 500, - /obj/item/camera_bug = 500, - /obj/item/clothing/gloves/combat = 200, - /obj/item/clothing/head/chameleon = 200, - /obj/item/pen/sleepy = 200, - /obj/item/reagent_containers/hypospray/medipen/stimpack/traitor = 100, - /obj/item/grenade/c4 = 100, - - /obj/item/wrench/syndie = 30, - /obj/item/screwdriver/nuke = 30, - /obj/item/crowbar/syndie = 30, - /obj/item/wirecutters/syndie = 30, - /obj/item/multitool/syndie = 30, - ) - -/obj/effect/spawner/random/salvage_machine - name = "salvageable machine spawner" - icon_state = "arcade" - loot = list( - /obj/structure/salvageable/protolathe, - /obj/structure/salvageable/circuit_imprinter, - /obj/structure/salvageable/server, - /obj/structure/salvageable/machine, - /obj/structure/salvageable/autolathe, - /obj/structure/salvageable/computer, - /obj/structure/salvageable/destructive_analyzer - ) - -/obj/effect/spawner/random/salvage - name = "salvage mats spawner" - icon_state = "rods" - loot = list( - /obj/item/stack/ore/salvage/scrapmetal, - /obj/item/stack/ore/salvage/scrapgold, - /obj/item/stack/ore/salvage/scrapplasma, - /obj/item/stack/ore/salvage/scrapsilver, - /obj/item/stack/ore/salvage/scraptitanium, - /obj/item/stack/ore/salvage/scrapbluespace, - /obj/item/stack/ore/salvage/scrapuranium - ) - -/obj/effect/spawner/random/salvage/half - name = "50% salvage spawner" - spawn_loot_chance = 50 - loot = list( - /obj/effect/spawner/random/maintenance, - /obj/effect/spawner/random/salvage_machine, - /obj/effect/spawner/random/exotic/ripley, - /obj/structure/closet/crate/secure/loot, - ) - -/obj/effect/spawner/random/salvage/metal - loot = list( - /obj/item/stack/ore/salvage/scrapmetal - ) - -/obj/effect/spawner/random/salvage/metal/Initialize() - spawn_loot_count = pick(list( - 1, - 2, - 3, - 4 - )) - return ..() - -/obj/effect/spawner/random/salvage/gold - loot = list( - /obj/item/stack/ore/salvage/scrapgold - ) - -/obj/effect/spawner/random/salvage/gold/Initialize() - spawn_loot_count = pick(list( - 1, - 2, - 3, - 4 - )) - return ..() - -/obj/effect/spawner/random/salvage/plasma - loot = list( - /obj/item/stack/ore/salvage/scrapplasma - ) -/obj/effect/spawner/random/salvage/plasma/Initialize() - spawn_loot_count = pick(list( - 1, - 2, - 3, - 4 - )) - return ..() - - -/obj/effect/spawner/random/salvage/silver - loot = list( - /obj/item/stack/ore/salvage/scrapsilver - ) -/obj/effect/spawner/random/salvage/silver/Initialize() - spawn_loot_count = pick(list( - 1, - 2, - 3, - 4 - )) - return ..() - - -/obj/effect/spawner/random/salvage/titanium - loot = list( - /obj/item/stack/ore/salvage/scraptitanium - ) -/obj/effect/spawner/random/salvage/titanium/Initialize() - spawn_loot_count = pick(list( - 1, - 2, - 3, - 4 - )) - return ..() - -/obj/effect/spawner/random/salvage/bluespace - loot = list( - /obj/item/stack/ore/salvage/scrapbluespace - ) -/obj/effect/spawner/random/salvage/bluespace/Initialize() - spawn_loot_count = pick(list( - 1, - 2, - 3, - 4 - )) - return ..() - -/obj/effect/spawner/random/salvage/uranium - loot = list( - /obj/item/stack/ore/salvage/scrapuranium - ) -/obj/effect/spawner/random/salvage/uranium/Initialize() - spawn_loot_count = pick(list( - 1, - 2, - 3, - 4 - )) - return ..() diff --git a/code/game/objects/effects/spawners/random.dm/structure.dm b/code/game/objects/effects/spawners/random.dm/structure.dm deleted file mode 100644 index 0264b3d76a9e..000000000000 --- a/code/game/objects/effects/spawners/random.dm/structure.dm +++ /dev/null @@ -1,91 +0,0 @@ - -/obj/effect/spawner/random/structure - name = "structure spawner" - desc = "Now you see me, now you don't..." - icon_state = "girder" - -/obj/effect/spawner/random/structure/crate_abandoned - name = "locked crate spawner" - icon_state = "crate_secure" - spawn_loot_chance = 20 - loot = list(/obj/structure/closet/crate/secure/loot) - -/obj/effect/spawner/random/structure/girder - name = "girder spawner" - icon_state = "girder" - spawn_loot_chance = 90 - loot = list( // 80% chance normal girder, 10% chance of displaced, 10% chance of nothing - /obj/structure/girder = 8, - /obj/structure/girder/displaced = 1, - ) - -/obj/effect/spawner/random/structure/grille - name = "grille spawner" - icon_state = "grille" - spawn_loot_chance = 90 - loot = list( // 80% chance normal grille, 10% chance of broken, 10% chance of nothing - /obj/structure/grille = 8, - /obj/structure/grille/broken = 1, - ) - -/obj/effect/spawner/random/structure/furniture_parts - name = "furniture parts spawner" - icon_state = "table_parts" - loot = list( - /obj/structure/table_frame, - /obj/structure/table_frame/wood, - /obj/item/rack_parts, - ) - -/obj/effect/spawner/random/structure/table_or_rack - name = "table or rack spawner" - icon_state = "rack_parts" - loot = list( - /obj/effect/spawner/random/structure/table, - /obj/structure/rack, - ) - -/obj/effect/spawner/random/structure/table - name = "table spawner" - icon_state = "table" - loot = list( - /obj/structure/table = 40, - /obj/structure/table/wood = 30, - /obj/structure/table/glass = 20, - /obj/structure/table/reinforced = 5, - /obj/structure/table/wood/poker = 5, - ) - -/obj/effect/spawner/random/structure/closet_empty - name = "empty closet spawner" - icon_state = "locker" - loot = list( - /obj/structure/closet = 850, - /obj/structure/closet/cabinet = 150, - /obj/structure/closet/acloset = 1, - ) - -/obj/effect/spawner/random/structure/closet_empty/crate - name = "empty crate spawner" - icon_state = "crate" - loot = list( - /obj/structure/closet/crate = 20, - /obj/structure/closet/crate/wooden = 1, - /obj/structure/closet/crate/internals = 1, - /obj/structure/closet/crate/medical = 1, - /obj/structure/closet/crate/freezer = 1, - /obj/structure/closet/crate/radiation = 1, - /obj/structure/closet/crate/hydroponics = 1, - /obj/structure/closet/crate/engineering = 1, - /obj/structure/closet/crate/engineering/electrical = 1, - /obj/structure/closet/crate/science = 1, - ) - -/obj/effect/spawner/random/structure/barricade - name = "barricade spawner" - icon_state = "barricade" - spawn_loot_chance = 80 - loot = list( - /obj/structure/barricade/wooden, - /obj/structure/barricade/wooden/crude, - ) diff --git a/code/game/objects/effects/spawners/random.dm/trash.dm b/code/game/objects/effects/spawners/random.dm/trash.dm deleted file mode 100644 index 3c15e77106a3..000000000000 --- a/code/game/objects/effects/spawners/random.dm/trash.dm +++ /dev/null @@ -1,282 +0,0 @@ -/obj/effect/spawner/random/trash - name = "trash spawner" - desc = "Ewwwwwww gross." - icon_state = "trash" - -/obj/effect/spawner/random/trash/garbage - name = "garbage spawner" - loot = list( - /obj/effect/spawner/random/trash/food_packaging = 20, - /obj/item/trash/can = 15, - /obj/item/shard = 10, - /obj/effect/spawner/random/trash/cigbutt = 10, - /obj/effect/spawner/random/trash/botanical_waste = 5, - /obj/item/broken_bottle = 5, - /obj/item/light/tube/broken = 5, - /obj/item/light/bulb/broken = 5, - /obj/item/assembly/mousetrap/armed = 5, - /obj/item/stack/cable_coil = 5, - /obj/item/trash/candle = 1, - /obj/item/reagent_containers/glass/rag = 1, - /obj/item/popsicle_stick = 1, - /obj/item/reagent_containers/syringe = 1, - /obj/item/shard/plasma = 1, - ) - -/obj/effect/spawner/random/trash/deluxe_garbage - name = "fancy deluxe garbage spawner" - loot = list( - /obj/effect/spawner/random/trash/garbage = 25, - /obj/effect/spawner/random/trash/food_packaging = 10, - /obj/effect/spawner/random/entertainment/money = 10, - /obj/effect/spawner/random/trash/crushed_can = 10, - /obj/item/shard/plasma = 5, - /obj/item/reagent_containers/pill/floorpill = 5, - /obj/effect/spawner/random/trash/soap = 3, - /obj/item/broken_bottle = 3, - /obj/effect/spawner/random/engineering/tool/common = 1, - /mob/living/simple_animal/mouse = 1, - /obj/item/reagent_containers/glass/rag = 1, - /obj/effect/spawner/random/entertainment/drugs= 1, - /obj/item/reagent_containers/syringe = 1, - /obj/effect/spawner/random/entertainment/cigar = 1, - /obj/item/stack/ore/gold = 1, - ) - -/obj/effect/spawner/random/trash/cigbutt - name = "cigarette butt spawner" - loot = list( - /obj/item/cigbutt = 25, - /obj/item/cigbutt/roach = 25, - /obj/effect/decal/cleanable/ash = 25, - /obj/item/cigbutt/cigarbutt = 15, - ) - -/obj/effect/spawner/random/trash/food_packaging - name = "empty food packaging spawner" - icon_state = "chips" - loot = list( - /obj/item/trash/raisins = 2, - /obj/item/trash/cheesie = 2, - /obj/item/trash/candy = 2, - /obj/item/trash/chips = 2, - /obj/item/trash/sosjerky = 2, - /obj/item/trash/pistachios = 2, - /obj/item/trash/boritos = 1, - /obj/item/trash/can/food/beans = 1, - /obj/item/trash/can/food/peaches = 1, - /obj/item/trash/popcorn = 1, - /obj/item/trash/energybar = 1, - /obj/item/trash/can/food/peaches/maint = 1, - /obj/item/trash/semki = 1, - /obj/item/trash/syndi_cakes = 1, - /obj/item/trash/tray = 1, - ) - -/obj/effect/spawner/random/trash/botanical_waste - name = "botanical waste spawner" - icon_state = "peel" - loot = list( - /obj/item/grown/bananapeel = 6, - /obj/item/grown/corncob = 3, - ) - -/obj/effect/spawner/random/trash/grille_or_waste - name = "grille or waste spawner" - icon_state = "grille" - loot = list( - /obj/structure/grille = 5, - /obj/effect/spawner/random/trash/food_packaging = 3, - /obj/effect/spawner/random/trash/cigbutt = 1, - /obj/item/reagent_containers/food/snacks/deadmouse = 1, - ) - -/obj/effect/spawner/random/trash/decal - icon_state = "vomit" - loot = list( - /obj/effect/decal/cleanable/greenglow/filled = 30, - /obj/effect/decal/cleanable/greenglow/ecto = 1, - /obj/effect/decal/cleanable/glass = 30, - /obj/effect/decal/cleanable/glass/plasma = 30, - /obj/effect/decal/cleanable/glass/strange = 30, - /obj/effect/decal/cleanable/molten_object = 30, - /obj/effect/decal/cleanable/molten_object/large = 30, - /obj/effect/decal/cleanable/oil = 30, - /obj/effect/decal/cleanable/oil/slippery = 1, // :) - /obj/effect/decal/cleanable/plastic = 30, - /obj/effect/decal/cleanable/ash = 30, - /obj/effect/decal/cleanable/ash/large = 30, - ) - -/obj/effect/spawner/random/trash/mess - name = "gross decal spawner" - icon_state = "vomit" - loot = list( - /obj/effect/decal/cleanable/dirt = 6, - /obj/effect/decal/cleanable/garbage = 3, - /obj/effect/decal/cleanable/vomit/old = 3, - /obj/effect/decal/cleanable/blood/gibs/old = 3, - /obj/effect/decal/cleanable/insectguts = 1, - /obj/effect/decal/cleanable/greenglow/ecto = 1, - /obj/effect/decal/cleanable/wrapping = 1, - /obj/effect/decal/cleanable/plastic = 1, - /obj/effect/decal/cleanable/glass = 1, - ) - -/obj/effect/spawner/random/trash/grime - name = "trash and grime spawner" - spawn_loot_count = 5 - spawn_scatter_radius = 2 - loot = list( // This spawner will scatter garbage around a dirty site. - /obj/effect/spawner/random/trash/garbage = 6, - /mob/living/simple_animal/hostile/cockroach = 5, - /obj/effect/decal/cleanable/garbage = 4, - /obj/effect/decal/cleanable/vomit/old = 3, - /obj/effect/spawner/random/trash/cigbutt = 2, - ) - -/obj/effect/spawner/random/trash/moisture - name = "water hazard spawner" - icon_state = "caution" - spawn_loot_count = 2 - spawn_scatter_radius = 1 - loot = list( // This spawner will scatter water related items around a moist site. - /obj/item/clothing/head/cone = 7, - /obj/item/clothing/suit/caution = 3, - /mob/living/simple_animal/hostile/retaliate/frog = 2, - /obj/item/reagent_containers/glass/rag = 2, - /obj/item/reagent_containers/glass/bucket = 2, - /obj/effect/decal/cleanable/blood/old = 2, - ) - -/obj/effect/spawner/random/trash/graffiti - name = "random graffiti spawner" - icon_state = "rune" - loot = list(/obj/effect/decal/cleanable/crayon) - var/graffiti_icons = list( - "rune1", "rune2", "rune3", "rune4", "rune5", "rune6", - "amyjon", "face", "matt", "revolution", "engie", "guy", - "end", "dwarf", "uboa", "body", "cyka", "star", - "prolizard", "antilizard", "danger", "firedanger", "electricdanger", - "biohazard", "radiation", "safe", "evac", "space", "med", "trade", "shop", - "food", "peace", "like", "skull", "nay", "heart", "credit", - "smallbrush", "brush", "largebrush", "splatter", "snake", "stickman", - "carp", "ghost", "clown", "taser", "disk", "fireaxe", "toolbox", - "corgi", "cat", "toilet", "blueprint", "beepsky", "scroll", "bottle", - "shotgun", "arrow", "line", "thinline", "shortline", "body", "chevron", - "footprint", "clawprint", "pawprint", - ) - // This sets the color of the graffiti (used for mapedits) - color = COLOR_WHITE - /// Whether the graffiti will spawn with a random color (used for mapedits) - var/random_color = TRUE - /// Whether the graffiti will spawn with this spawner's icon_state instead of a random one (used for mapedits) - var/random_icon = TRUE - -/obj/effect/spawner/random/trash/graffiti/make_item(spawn_loc, type_path_to_make) - var/obj/effect/decal/cleanable/crayon/graffiti_decal = ..() - if(istype(graffiti_decal)) - color = random_color && "#[random_short_color()]" || color - icon_state = random_icon && pick(graffiti_icons) || icon_state - - graffiti_decal.add_atom_colour(color, FIXED_COLOUR_PRIORITY) - graffiti_decal.icon_state = icon_state - - return graffiti_decal - -/obj/effect/spawner/random/trash/mopbucket - name = "mop bucket spawner" - icon_state = "mopbucket" - spawn_loot_count = 2 - spawn_loot_double = FALSE - loot = list( - /obj/item/mop = 5, - /obj/item/clothing/suit/caution = 3, - /obj/item/reagent_containers/glass/bucket = 1, - /obj/item/reagent_containers/glass/bucket/wooden = 1, - ) - -/obj/effect/spawner/random/trash/caution_sign - name = "caution sign spawner" - icon_state = "caution" - loot = list( - /obj/item/clothing/suit/caution = 40, - /obj/structure/holosign/wetsign = 5, - /obj/structure/holosign/barrier = 3, - /obj/structure/holosign/barrier/wetsign = 2, - ) - -/obj/effect/spawner/random/trash/bucket - name = "bucket spawner" - icon_state = "caution" - loot = list( - /obj/item/reagent_containers/glass/bucket, - /obj/item/reagent_containers/glass/bucket/wooden, - ) - -/obj/effect/spawner/random/trash/soap - name = "soap spawner" - icon_state = "soap" - loot = list( - /obj/item/soap = 25, - /obj/item/bikehorn/rubberducky = 20, - /obj/item/soap/homemade = 20, - /obj/item/soap/deluxe = 15, - /obj/item/soap/nanotrasen = 10, - ) - -/obj/effect/spawner/random/trash/box - name = "box spawner" - icon_state = "box" - loot = list( - /obj/structure/closet/cardboard = 9, - /obj/structure/closet/cardboard/metal = 1, - ) - -/obj/effect/spawner/random/trash/bin - name = "trashbin spawner" - icon_state = "trash_bin" - loot = list( - /obj/structure/closet/crate/bin = 10, - /obj/structure/closet/crate/trashcart = 3, - /obj/effect/spawner/random/trash/box = 3, - /obj/structure/closet/crate/trashcart/laundry = 1, - ) - - -/obj/effect/spawner/random/trash/janitor_supplies - name = "janitor supplies spawner" - icon_state = "box_small" - loot = list( - /obj/item/storage/box/mousetraps, - /obj/item/storage/box/lights/tubes, - /obj/item/storage/box/lights/mixed, - /obj/item/storage/box/lights/bulbs, - ) - -/obj/effect/spawner/random/trash/crushed_can - name = "crushed can spawner" - icon_state = "crushed_can" - loot = list(/obj/item/trash/can) - /// Whether the can will spawn with this spawner's icon_state instead of a random one (used for mapedits) - var/soda_icons = list( - "energy_drink", "monkey_energy", "thirteen_loko", "space_mountain_wind", "dr_gibb", "starkist", - "sodawater", "tonic", "cola", "purple_can", "ice_tea_can", - "sol_dry", "wellcheers", "space beer", "ebisu", "shimauma", "moonlabor", - "space_up", "lemon_lime", "shamblers", "shamblerseldritch", "air", "laughter", - "volt_energy", "melon_soda", - ) - -/obj/effect/spawner/random/trash/crushed_can/make_item(spawn_loc, type_path_to_make) - var/obj/item/trash/can/crushed_can = .. () - if(istype(crushed_can)) - crushed_can.icon_state = pick(soda_icons) - return crushed_can - -/obj/effect/spawner/random/trash/ghetto_containers - name = "ghetto container spawner" - loot = list( - /obj/item/reagent_containers/glass/bucket = 5, - /obj/item/reagent_containers/glass/bottle = 5, - /obj/item/reagent_containers/glass/mortar = 2, - ) diff --git a/code/game/objects/effects/spawners/random.dm/vending.dm b/code/game/objects/effects/spawners/random.dm/vending.dm deleted file mode 100644 index 595746e14e19..000000000000 --- a/code/game/objects/effects/spawners/random.dm/vending.dm +++ /dev/null @@ -1,17 +0,0 @@ -/obj/effect/spawner/random/vending - name = "machinery spawner" - desc = "Randomized electronics for extra fun." - -/obj/effect/spawner/random/vending/snack - name = "spawn random snack vending machine" - desc = "Automagically transforms into a random snack vendor. If you see this while in a shift, please create a bug report." - icon_state = "snack" - loot_type_path = /obj/machinery/vending/snack - loot = list() - -/obj/effect/spawner/random/vending/cola - name = "spawn random cola vending machine" - desc = "Automagically transforms into a random cola vendor. If you see this while in a shift, please create a bug report." - icon_state = "cola" - loot_type_path = /obj/machinery/vending/cola - loot = list() diff --git a/code/game/objects/effects/spawners/random.dm/waste_planet.dm b/code/game/objects/effects/spawners/random.dm/waste_planet.dm deleted file mode 100644 index 46ad61a754a6..000000000000 --- a/code/game/objects/effects/spawners/random.dm/waste_planet.dm +++ /dev/null @@ -1,101 +0,0 @@ -/obj/effect/spawner/random/waste/grille_or_trash - icon_state = "grille" - name = "wasteplanet loot spawner" - loot = list( - /obj/structure/grille/broken = 5, - /obj/structure/grille = 5, - /obj/item/cigbutt = 1, - /obj/item/trash/cheesie = 1, - /obj/item/trash/candy = 1, - /obj/item/trash/chips = 1, - /obj/item/reagent_containers/food/snacks/deadmouse = 1, - /obj/item/trash/pistachios = 1, - /obj/item/trash/plate = 1, - /obj/item/trash/popcorn = 1, - /obj/item/trash/raisins = 1, - /obj/item/trash/sosjerky = 1, - /obj/item/trash/syndi_cakes = 1 - ) - -/obj/effect/spawner/random/waste/mechwreck - icon_state = "ripley" - name = "wasteplanet exosuit wreckage" - loot = list( - /obj/structure/mecha_wreckage/ripley = 15, - /obj/structure/mecha_wreckage/ripley/firefighter = 9, - /obj/structure/mecha_wreckage/ripley/mkii = 9, - /obj/structure/mecha_wreckage/ripley/clip = 9 - ) - -/obj/effect/spawner/random/waste/mechwreck/rare - loot = list( - /obj/structure/mecha_wreckage/durand = 12.5, - /obj/structure/mecha_wreckage/durand/clip = 12.5, - /obj/structure/mecha_wreckage/odysseus = 25, - /obj/structure/mecha_wreckage/gygax = 25 - ) - -/obj/effect/spawner/random/waste/radiation - loot = list( - /obj/structure/radioactive = 6, - /obj/structure/radioactive/stack = 6, - /obj/structure/radioactive/waste = 6 - ) - -/obj/effect/spawner/random/waste/radiation/more_rads - loot = list( - /obj/structure/radioactive = 3, - /obj/structure/radioactive/stack = 12, - /obj/structure/radioactive/waste = 12 - ) - -/obj/effect/spawner/random/waste/atmos_can - loot = list( - /obj/machinery/portable_atmospherics/canister/toxins = 3, - /obj/machinery/portable_atmospherics/canister/carbon_dioxide = 3, - /obj/machinery/portable_atmospherics/canister/nitrogen = 3, - /obj/machinery/portable_atmospherics/canister/oxygen = 3, - /obj/machinery/portable_atmospherics/canister/nitrous_oxide = 1, - /obj/machinery/portable_atmospherics/canister/water_vapor = 1 - ) - -/obj/effect/spawner/random/waste/atmos_can/rare - loot = list( - /obj/machinery/portable_atmospherics/canister/tritium = 3, - /obj/machinery/portable_atmospherics/canister/pluoxium = 3 - ) - -/obj/effect/spawner/random/waste/salvageable - loot = list( - /obj/structure/salvageable/machine = 20, - /obj/structure/salvageable/autolathe = 15, - /obj/structure/salvageable/computer = 10, - /obj/structure/salvageable/protolathe = 10, - /obj/structure/salvageable/circuit_imprinter = 8, - /obj/structure/salvageable/destructive_analyzer = 8, - /obj/structure/salvageable/server = 8 - ) - -/obj/effect/spawner/random/waste/girder - loot = list( - /obj/structure/girder, - /obj/structure/girder/displaced, - /obj/structure/girder/reinforced - ) -/obj/effect/spawner/random/waste/hivebot - loot = list( - /obj/effect/spawner/random/salvage/metal, - /obj/effect/spawner/random/salvage/metal, - /obj/effect/spawner/random/salvage/metal, - /obj/effect/spawner/random/salvage/gold, - /obj/effect/spawner/random/salvage/plasma, - /obj/effect/spawner/random/salvage/silver, - /obj/effect/spawner/random/salvage/titanium, - /obj/item/stack/ore/salvage/scrapbluespace, - /obj/item/stack/ore/salvage/scrapbluespace, - /obj/item/stack/ore/salvage/scrapuranium - ) - spawn_loot_count = 2 - -/obj/effect/spawner/random/waste/hivebot/beacon - spawn_loot_count = 6 diff --git a/code/game/objects/effects/spawners/spawner.dm b/code/game/objects/effects/spawners/spawner.dm deleted file mode 100644 index d8091c6cfc65..000000000000 --- a/code/game/objects/effects/spawners/spawner.dm +++ /dev/null @@ -1,23 +0,0 @@ -/obj/effect/spawner - name = "object spawner" - -// Brief explanation: -// Rather then setting up and then deleting spawners, we block all atomlike setup -// and do the absolute bare minimum -// This is with the intent of optimizing mapload -/obj/effect/spawner/Initialize(mapload) - SHOULD_CALL_PARENT(FALSE) - if(flags_1 & INITIALIZED_1) - stack_trace("Warning: [src]([type]) initialized multiple times!") - flags_1 |= INITIALIZED_1 - - return INITIALIZE_HINT_QDEL - -/obj/effect/spawner/Destroy(force) - SHOULD_CALL_PARENT(FALSE) - moveToNullspace() - return QDEL_HINT_QUEUE - -/// Override to define loot blacklist behavior -/obj/effect/spawner/proc/can_spawn(atom/loot) - return TRUE diff --git a/code/game/objects/effects/spawners/traps.dm b/code/game/objects/effects/spawners/traps.dm new file mode 100644 index 000000000000..0409d9944b9b --- /dev/null +++ b/code/game/objects/effects/spawners/traps.dm @@ -0,0 +1,9 @@ +/obj/effect/spawner/trap + name = "random trap" + icon = 'icons/obj/hand_of_god_structures.dmi' + icon_state = "trap_rand" + +/obj/effect/spawner/trap/Initialize(mapload) + . = ..() + var/new_type = pick(subtypesof(/obj/structure/trap) - typesof(/obj/structure/trap/ctf)) + new new_type(get_turf(src)) diff --git a/code/game/objects/effects/spawners/vaultspawner.dm b/code/game/objects/effects/spawners/vaultspawner.dm new file mode 100644 index 000000000000..9bdf0a673ed9 --- /dev/null +++ b/code/game/objects/effects/spawners/vaultspawner.dm @@ -0,0 +1,28 @@ +/obj/effect/vaultspawner + var/maxX = 6 + var/maxY = 6 + var/minX = 2 + var/minY = 2 + +/obj/effect/vaultspawner/New(turf/location,lX = minX,uX = maxX,lY = minY,uY = maxY,type = null) + if(!type) + type = pick("sandstone","rock","alien") + + var/lowBoundX = location.x + var/lowBoundY = location.y + + var/hiBoundX = location.x + rand(lX,uX) + var/hiBoundY = location.y + rand(lY,uY) + + var/z = location.z + + for(var/i = lowBoundX,i<=hiBoundX,i++) + for(var/j = lowBoundY,j<=hiBoundY,j++) + var/turf/T = locate(i,j,z) + if(i == lowBoundX || i == hiBoundX || j == lowBoundY || j == hiBoundY) + T.PlaceOnTop(/turf/closed/wall/vault) + else + T.PlaceOnTop(/turf/open/floor/vault) + T.icon_state = "[type]vault" + + qdel(src) diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm new file mode 100644 index 000000000000..1eb4fd0dda94 --- /dev/null +++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm @@ -0,0 +1,18 @@ +/obj/effect/spawner/xeno_egg_delivery + name = "xeno egg delivery" + icon = 'icons/mob/alien.dmi' + icon_state = "egg_growing" + var/announcement_time = 1200 + +/obj/effect/spawner/xeno_egg_delivery/Initialize(mapload) + . = ..() + var/turf/T = get_turf(src) + + new /obj/structure/alien/egg(T) + new /obj/effect/temp_visual/gravpush(T) + playsound(T, 'sound/items/party_horn.ogg', 50, TRUE, -1) + + message_admins("An alien egg has been delivered to [ADMIN_VERBOSEJMP(T)].") + log_game("An alien egg has been delivered to [AREACOORD(T)]") + var/message = "Attention [station_name()], we have entrusted you with a research specimen in [get_area_name(T, TRUE)]. Remember to follow all safety precautions when dealing with the specimen." + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_addtimer), CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(print_command_report), message), announcement_time)) diff --git a/code/game/objects/items/chromosome.dm b/code/game/objects/items/chromosome.dm index c6ee7f174aab..3acf3cfe5cb3 100644 --- a/code/game/objects/items/chromosome.dm +++ b/code/game/objects/items/chromosome.dm @@ -48,7 +48,7 @@ if(!initial(CM.weight)) break chromosomes[A] = initial(CM.weight) - return pick_weight(chromosomes) + return pickweight(chromosomes) /obj/item/chromosome/stabilizer diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 0606e999b1ce..26b23c509838 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -564,6 +564,15 @@ name = "pink glowstick" color = LIGHT_COLOR_PINK +/obj/effect/spawner/lootdrop/glowstick + name = "random colored glowstick" + icon = 'icons/obj/lighting.dmi' + icon_state = "random_glowstick" + +/obj/effect/spawner/lootdrop/glowstick/Initialize() + loot = typesof(/obj/item/flashlight/glowstick) + . = ..() + /obj/item/flashlight/spotlight //invisible lighting source name = "disco light" desc = "Groovy..." diff --git a/code/game/objects/items/devices/mines.dm b/code/game/objects/items/devices/mines.dm index 4f2169350d79..ee391d578c03 100644 --- a/code/game/objects/items/devices/mines.dm +++ b/code/game/objects/items/devices/mines.dm @@ -841,10 +841,10 @@ LIVE_MINE_HELPER(pressure/sound) // spawners (random mines, minefields, non-guaranteed mine) // -/obj/effect/spawner/random/mine +/obj/effect/spawner/lootdrop/mine name = "live mine spawner (random)" - spawn_loot_count = 1 - spawn_loot_split = TRUE + lootcount = 1 + fan_out_items = TRUE loot = list( /obj/item/mine/pressure/explosive/live = 10, /obj/item/mine/pressure/explosive/shrapnel/live = 3, @@ -864,7 +864,7 @@ LIVE_MINE_HELPER(pressure/sound) /obj/effect/spawner/minefield/random name = "random minefield spawner" - minetype = /obj/effect/spawner/random/mine + minetype = /obj/effect/spawner/lootdrop/mine /obj/effect/spawner/minefield/manhack name = "manhack field spawner" diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm index 247ca439c8bd..915011b81b11 100644 --- a/code/game/objects/items/grenades/ghettobomb.dm +++ b/code/game/objects/items/grenades/ghettobomb.dm @@ -25,7 +25,7 @@ add_overlay("improvised_grenade_filled") add_overlay("improvised_grenade_wired") times = list("5" = 10, "-1" = 20, "[rand(30,80)]" = 50, "[rand(65,180)]" = 20)// "Premature, Dud, Short Fuse, Long Fuse"=[weighting value] - det_time = text2num(pick_weight(times)) + det_time = text2num(pickweight(times)) if(det_time < 0) //checking for 'duds' range = 1 det_time = rand(30,80) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index dd00d3abd1fd..4b16ee60942d 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -863,3 +863,43 @@ var/mutable_appearance/base_overlay_among = mutable_appearance(icon, "plushie_among_visor") base_overlay_among.appearance_flags = RESET_COLOR add_overlay(base_overlay_among) + +/obj/effect/spawner/lootdrop/plushie + loot = list ( + /obj/item/toy/plush/beeplushie, + /obj/item/toy/plush/blahaj, + /obj/item/toy/plush/carpplushie, + /obj/item/toy/plush/flushed, + /obj/item/toy/plush/kari, + /obj/item/toy/plush/lizardplushie, + /obj/item/toy/plush/mora, + /obj/item/toy/plush/realgoat, + /obj/item/toy/plush/rilena, + /obj/item/toy/plush/sharai, + /obj/item/toy/plush/slimeplushie, + /obj/item/toy/plush/snakeplushie, + /obj/item/toy/plush/spider, + /obj/item/toy/plush/tali, + /obj/item/toy/plush/xader, + /obj/effect/spawner/lootdrop/plushie/moth // fair chances + ) + +/obj/effect/spawner/lootdrop/plushie/moth + loot = list ( + /obj/item/toy/plush/moth, + /obj/item/toy/plush/moth/monarch, + /obj/item/toy/plush/moth/luna, + /obj/item/toy/plush/moth/atlas, + /obj/item/toy/plush/moth/redish, + /obj/item/toy/plush/moth/royal, + /obj/item/toy/plush/moth/gothic, + /obj/item/toy/plush/moth/lovers, + /obj/item/toy/plush/moth/whitefly, + /obj/item/toy/plush/moth/punished, + /obj/item/toy/plush/moth/firewatch, + /obj/item/toy/plush/moth/deadhead, + /obj/item/toy/plush/moth/poison, + /obj/item/toy/plush/moth/ragged, + /obj/item/toy/plush/moth/snow, + /obj/item/toy/plush/moth/moonfly + ) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 5a1bdaabe340..e8b619b0d712 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -2,7 +2,7 @@ /obj/item/storage/box/syndicate /obj/item/storage/box/syndicate/bundle_A/PopulateContents() - switch (pick_weight(list("recon" = 2, "bloodyspai" = 3, "stealth" = 2, "screwed" = 2, "sabotage" = 3, "guns" = 2, "murder" = 2, "implant" = 1, "hacker" = 3, "sniper" = 1, "metaops" = 1))) + switch (pickweight(list("recon" = 2, "bloodyspai" = 3, "stealth" = 2, "screwed" = 2, "sabotage" = 3, "guns" = 2, "murder" = 2, "implant" = 1, "hacker" = 3, "sniper" = 1, "metaops" = 1))) if("recon") new /obj/item/clothing/glasses/thermal/xray(src) // ~8 tc? new /obj/item/storage/briefcase/launchpad(src) //6 tc @@ -117,7 +117,7 @@ new /obj/item/card/emag(src) // 6 tc /obj/item/storage/box/syndicate/bundle_B/PopulateContents() - switch (pick_weight(list( "bond" = 2, "ninja" = 1, "darklord" = 1, "white_whale_holy_grail" = 2, "mad_scientist" = 2, "mr_freeze" = 2, "made_man"= 1))) + switch (pickweight(list( "bond" = 2, "ninja" = 1, "darklord" = 1, "white_whale_holy_grail" = 2, "mad_scientist" = 2, "mr_freeze" = 2, "made_man"= 1))) if("bond") new /obj/item/gun/ballistic/automatic/pistol/ringneck(src) new /obj/item/attachment/silencer(src) @@ -181,7 +181,7 @@ new /obj/item/melee/transforming/energy/sword/saber/blue(src) //see see it fits the theme bc its blue and ice is blue if("made_man") - new /obj/effect/spawner/random/clothing/mafia_outfit(src) // 0 TC, just an outfit for the new 'don of this family + new /obj/effect/spawner/lootdrop/mafia_outfit(src) // 0 TC, just an outfit for the new 'don of this family new /obj/item/gun/ballistic/automatic/smg/firestorm/pan(src) // 20 TC, a gun with 50 .45 bullets on a three round burst is kinda outstanding new /obj/item/melee/knife/switchblade(src) // 3 TC? It's nice, but it's really a stealth/oh fuck I'm out of ammo weapon new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) // 5 TC, free molotov assemblies diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 220e0e605828..81e6ea9d54ec 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1392,7 +1392,7 @@ pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) icon_state = "shell[rand(1,3)]" - color = pick_weight(possible_colors) + color = pickweight(possible_colors) setDir(pick(GLOB.cardinals)) /obj/item/toy/brokenradio diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 5b140a5b2428..8ee8d8214f80 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -383,7 +383,7 @@ LINEN BINS /obj/item/bedsheet/dorms/Initialize() ..() - var/type = pick_weight(list("Colors" = 80, "Special" = 20)) + var/type = pickweight(list("Colors" = 80, "Special" = 20)) switch(type) if("Colors") type = pick(list(/obj/item/bedsheet, @@ -408,7 +408,7 @@ LINEN BINS /obj/item/bedsheet/dorms/double/Initialize() ..() - var/type = pick_weight(list("Colors" = 80, "Special" = 20)) + var/type = pickweight(list("Colors" = 80, "Special" = 20)) switch(type) if("Colors") type = pick(list(/obj/item/bedsheet/double, diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index a69a279bad77..cfea37148e55 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -14,6 +14,7 @@ desc = "It looks alien!" icon_state = "alien" + /obj/structure/closet/gimmick name = "administrative supply closet" desc = "It's a storage unit for things that have no right being here." diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index fa4fe485015d..7b800d7ab097 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -29,7 +29,7 @@ if (prob(40)) new /obj/item/storage/toolbox/emergency(src) - switch (pick_weight(list("small" = 40, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 4, "delete" = 1))) + switch (pickweight(list("small" = 40, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 4, "delete" = 1))) if ("small") new /obj/item/tank/internals/emergency_oxygen(src) new /obj/item/tank/internals/emergency_oxygen(src) diff --git a/code/game/objects/structures/geyser.dm b/code/game/objects/structures/geyser.dm index d5c7dbeef362..af536d2e8c1c 100644 --- a/code/game/objects/structures/geyser.dm +++ b/code/game/objects/structures/geyser.dm @@ -45,7 +45,7 @@ /obj/structure/geyser/random/Initialize() . = ..() - reagent_id = pick_weight(options) + reagent_id = pickweight(options) /obj/item/plunger name = "plunger" diff --git a/code/game/objects/structures/salvaging.dm b/code/game/objects/structures/salvaging.dm index ccb76bd81c4a..a3b3b2b5763f 100644 --- a/code/game/objects/structures/salvaging.dm +++ b/code/game/objects/structures/salvaging.dm @@ -56,16 +56,16 @@ /obj/item/stack/ore/salvage/scrapgold/five = 60, /obj/item/stack/ore/salvage/scrapmetal/five = 60, - /obj/effect/spawner/random/salvage_capacitor = 50, - /obj/effect/spawner/random/salvage_capacitor = 50, - /obj/effect/spawner/random/salvage_scanning = 50, - /obj/effect/spawner/random/salvage_scanning = 50, - /obj/effect/spawner/random/salvage_matter_bin = 40, - /obj/effect/spawner/random/salvage_matter_bin = 40, - /obj/effect/spawner/random/salvage_manipulator = 40, - /obj/effect/spawner/random/salvage_manipulator = 40, - /obj/effect/spawner/random/salvage_laser = 40, - /obj/effect/spawner/random/salvage_laser = 40, + /obj/effect/spawner/lootdrop/salvage_capacitor = 50, + /obj/effect/spawner/lootdrop/salvage_capacitor = 50, + /obj/effect/spawner/lootdrop/salvage_scanning = 50, + /obj/effect/spawner/lootdrop/salvage_scanning = 50, + /obj/effect/spawner/lootdrop/salvage_matter_bin = 40, + /obj/effect/spawner/lootdrop/salvage_matter_bin = 40, + /obj/effect/spawner/lootdrop/salvage_manipulator = 40, + /obj/effect/spawner/lootdrop/salvage_manipulator = 40, + /obj/effect/spawner/lootdrop/salvage_laser = 40, + /obj/effect/spawner/lootdrop/salvage_laser = 40, ) /obj/structure/salvageable/computer @@ -79,7 +79,7 @@ /obj/item/stack/ore/salvage/scrapgold/five = 60, /obj/item/stack/ore/salvage/scrapmetal/five = 60, - /obj/effect/spawner/random/salvage_capacitor = 60, + /obj/effect/spawner/lootdrop/salvage_capacitor = 60, /obj/item/computer_hardware/battery = 40, /obj/item/computer_hardware/battery = 40, @@ -91,8 +91,8 @@ /obj/item/computer_hardware/card_slot = 40, /obj/item/computer_hardware/network_card/advanced = 20, - /obj/effect/spawner/random/circuit/computer/common = 50, - /obj/effect/spawner/random/circuit/computer/rare = 5, + /obj/effect/spawner/lootdrop/random_computer_circuit_common = 50, + /obj/effect/spawner/lootdrop/random_computer_circuit_rare = 5, /obj/item/research_notes/loot/tiny = 10, ) @@ -106,10 +106,11 @@ /obj/item/stack/ore/salvage/scraptitanium/five = 60, /obj/item/stack/ore/salvage/scrapmetal/five = 60, - /obj/effect/spawner/random/salvage_matter_bin = 40, - /obj/effect/spawner/random/salvage_matter_bin = 40, - /obj/effect/spawner/random/salvage_matter_bin = 40, - /obj/effect/spawner/random/salvage_manipulator = 30, + + /obj/effect/spawner/lootdrop/salvage_matter_bin = 40, + /obj/effect/spawner/lootdrop/salvage_matter_bin = 40, + /obj/effect/spawner/lootdrop/salvage_matter_bin = 40, + /obj/effect/spawner/lootdrop/salvage_manipulator = 30, /obj/item/circuitboard/machine/autolathe = 35, @@ -133,17 +134,17 @@ /obj/item/stack/ore/salvage/scrapplasma/five = 60, /obj/item/stack/ore/salvage/scrapmetal/five = 60, - /obj/effect/spawner/random/salvage_matter_bin = 40, - /obj/effect/spawner/random/salvage_matter_bin = 40, - /obj/effect/spawner/random/salvage_manipulator = 30, - /obj/effect/spawner/random/salvage_manipulator = 30, + /obj/effect/spawner/lootdrop/salvage_matter_bin = 40, + /obj/effect/spawner/lootdrop/salvage_matter_bin = 40, + /obj/effect/spawner/lootdrop/salvage_manipulator = 30, + /obj/effect/spawner/lootdrop/salvage_manipulator = 30, - /obj/effect/spawner/random/engineering/tool = 45, - /obj/effect/spawner/random/medical/surgery_tool = 55, - /obj/effect/spawner/random/medical/beaker = 45, - /obj/effect/spawner/random/medical/prosthetic = 25, - /obj/effect/spawner/random/random_gun_protolathe_lootdrop = 5, //:flushed: - /obj/effect/spawner/random/random_ammo_protolathe_lootdrop = 5, + /obj/effect/spawner/lootdrop/tool_engie_proto = 45, + /obj/effect/spawner/lootdrop/tool_surgery_proto = 55, + /obj/effect/spawner/lootdrop/beaker_loot_spawner = 45, + /obj/effect/spawner/lootdrop/random_prosthetic = 25, + /obj/effect/spawner/lootdrop/random_gun_protolathe_lootdrop = 5, //:flushed: + /obj/effect/spawner/lootdrop/random_ammo_protolathe_lootdrop = 5, /obj/item/storage/part_replacer = 20, /obj/item/storage/part_replacer/bluespace = 1, @@ -171,13 +172,13 @@ /obj/item/stack/ore/salvage/scrapmetal/five = 60, /obj/item/stack/ore/salvage/scrapbluespace = 60, - /obj/effect/spawner/random/salvage_matter_bin = 40, - /obj/effect/spawner/random/salvage_manipulator = 30, + /obj/effect/spawner/lootdrop/salvage_matter_bin = 40, + /obj/effect/spawner/lootdrop/salvage_manipulator = 30, /obj/item/stack/circuit_stack = 50, //this might be the only way in the game to get a poly circuit, and the only way for many ships to get essensial electronics. huh. - /obj/effect/spawner/random/circuit/machine/mech = 45, //with all the wonderful broken mechs lying around, this might be a chance to get something stupidly overpowered. - /obj/effect/spawner/random/circuit/machine/common = 50, //well.... "common" - /obj/effect/spawner/random/circuit/machine/rare = 5, + /obj/effect/spawner/lootdrop/random_machine_circuit_mech = 45, //with all the wonderful broken mechs lying around, this might be a chance to get something stupidly overpowered. + /obj/effect/spawner/lootdrop/random_machine_circuit_common = 50, //well.... "common" + /obj/effect/spawner/lootdrop/random_machine_circuit_rare = 5, /obj/item/stack/sheet/metal/five = 15, //same as above but more geared towards stuff used by circuit imprinter /obj/item/stack/sheet/glass/five = 15, @@ -198,12 +199,12 @@ /obj/item/stack/ore/salvage/scrapmetal/five = 60, /obj/item/stack/ore/salvage/scrapplasma = 60, - /obj/effect/spawner/random/salvage_scanning = 40, - /obj/effect/spawner/random/salvage_laser = 30, - /obj/effect/spawner/random/salvage_manipulator = 30, + /obj/effect/spawner/lootdrop/salvage_scanning = 40, + /obj/effect/spawner/lootdrop/salvage_laser = 30, + /obj/effect/spawner/lootdrop/salvage_manipulator = 30, /obj/item/storage/toolbox/syndicate/empty = 80, - /obj/effect/spawner/random/destructive_anal_loot = 65, + /obj/effect/spawner/lootdrop/destructive_anal_loot = 65, /obj/item/stack/sheet/metal/five = 15, //same as above but more geared towards stuff used by circuit imprinter /obj/item/stack/sheet/glass/five = 15, @@ -341,11 +342,11 @@ color = "#808080" salvageable_parts = list( - /obj/effect/spawner/random/food_or_drink/seed = 80, - /obj/effect/spawner/random/food_or_drink/seed = 80, - /obj/effect/spawner/random/food_or_drink/seed = 80, - /obj/effect/spawner/random/food_or_drink/seed = 80, - /obj/effect/spawner/random/food_or_drink/seed = 80, + /obj/effect/spawner/lootdrop/seeded = 80, + /obj/effect/spawner/lootdrop/seeded = 80, + /obj/effect/spawner/lootdrop/seeded = 80, + /obj/effect/spawner/lootdrop/seeded = 80, + /obj/effect/spawner/lootdrop/seeded = 80, /obj/item/seeds/random = 80, /obj/item/seeds/random = 40, /obj/item/seeds/random = 40, @@ -469,3 +470,236 @@ /obj/item/stack/ore/salvage/scrapbluespace/five amount = 5 + +//loot spawners as shown above + +//GENERIC +/obj/effect/spawner/lootdrop/salvage_capacitor + loot = list( + /obj/item/stock_parts/capacitor = 120, + /obj/item/stock_parts/capacitor/adv = 20, + /obj/item/stock_parts/capacitor/super = 5, + ) + +/obj/effect/spawner/lootdrop/salvage_scanning + loot = list( + /obj/item/stock_parts/scanning_module = 120, + /obj/item/stock_parts/scanning_module/adv = 20, + /obj/item/stock_parts/scanning_module/phasic = 5, + ) + +/obj/effect/spawner/lootdrop/salvage_manipulator + loot = list( + /obj/item/stock_parts/manipulator = 120, + /obj/item/stock_parts/manipulator/nano = 20, + /obj/item/stock_parts/manipulator/pico = 5, + ) + +/obj/effect/spawner/lootdrop/salvage_matter_bin + loot = list( + /obj/item/stock_parts/matter_bin = 120, + /obj/item/stock_parts/matter_bin/adv = 20, + /obj/item/stock_parts/matter_bin/super = 5, + ) + +/obj/effect/spawner/lootdrop/salvage_laser + loot = list( + /obj/item/stock_parts/micro_laser = 120, + /obj/item/stock_parts/micro_laser/high = 20, + /obj/item/stock_parts/micro_laser/ultra = 5, + ) + +//PROTOLATHE +/obj/effect/spawner/lootdrop/tool_engie_proto + loot = list( + /obj/effect/spawner/lootdrop/tool_engie_common = 120, + /obj/effect/spawner/lootdrop/tool_engie_sydnie = 20, + /obj/effect/spawner/lootdrop/tool_engie_adv = 5, + ) + +/obj/effect/spawner/lootdrop/tool_engie_common + loot = list( + /obj/item/wrench/crescent = 1, + /obj/item/screwdriver = 1, + /obj/item/weldingtool = 1, + /obj/item/crowbar = 1, + /obj/item/wirecutters = 1, + /obj/item/multitool = 1, + ) + +/obj/effect/spawner/lootdrop/tool_engie_sydnie + loot = list( + /obj/item/wrench/syndie = 1, + /obj/item/screwdriver/nuke = 1, + /obj/item/weldingtool/largetank = 1, + /obj/item/crowbar/syndie = 1, + /obj/item/wirecutters/syndie = 1, + /obj/item/multitool/syndie = 1, + ) + +/obj/effect/spawner/lootdrop/tool_engie_adv + loot = list( + /obj/item/screwdriver/power = 1, + /obj/item/weldingtool/experimental = 1, + /obj/item/crowbar/power = 1, + ) + +/obj/effect/spawner/lootdrop/tool_surgery_proto + loot = list( + /obj/effect/spawner/lootdrop/tool_surgery_common = 120, + /obj/effect/spawner/lootdrop/tool_surgery_adv = 10, + ) + +/obj/effect/spawner/lootdrop/tool_surgery_common + loot = list( + /obj/item/scalpel = 1, + /obj/item/hemostat = 1, + /obj/item/cautery = 1, + /obj/item/retractor = 1, + /obj/item/circular_saw = 1, + /obj/item/surgicaldrill = 1, + ) + +/obj/effect/spawner/lootdrop/tool_surgery_adv + loot = list( + /obj/item/scalpel/advanced = 1, + /obj/item/retractor/advanced = 1, + /obj/item/surgicaldrill/advanced = 1, + ) + +/obj/effect/spawner/lootdrop/beaker_loot_spawner + loot = list( + /obj/item/reagent_containers/glass/beaker = 300, + /obj/item/reagent_containers/glass/beaker/large = 200, + /obj/item/reagent_containers/glass/beaker/plastic = 50, + /obj/item/reagent_containers/glass/beaker/meta = 10, + /obj/item/reagent_containers/glass/beaker/noreact = 5, + /obj/item/reagent_containers/glass/beaker/bluespace = 1, + ) +/obj/effect/spawner/lootdrop/random_prosthetic + loot = list( + /obj/item/bodypart/l_arm/robot/surplus = 1, + /obj/item/bodypart/r_arm/robot/surplus = 1, + /obj/item/bodypart/leg/left/robot/surplus = 1, + /obj/item/bodypart/leg/right/robot/surplus = 1, + ) +/obj/effect/spawner/lootdrop/random_gun_protolathe_lootdrop + loot = list( + /obj/item/gun/energy/lasercannon = 1, + /obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq/proto = 1, + /obj/item/gun/energy/temperature/security = 1, + ) +/obj/effect/spawner/lootdrop/random_ammo_protolathe_lootdrop + loot = list( + /obj/item/stock_parts/cell/gun/upgraded = 5, + /obj/item/ammo_box/magazine/smgm9mm = 7, + ) + +//CIRCUIT IMPRINTER +/obj/effect/spawner/lootdrop/random_machine_circuit_common + loot = list( + /obj/item/circuitboard/machine/autolathe = 5, + /obj/item/circuitboard/machine/biogenerator = 5, + /obj/item/circuitboard/machine/cell_charger = 5, + /obj/item/circuitboard/machine/chem_heater = 5, + /obj/item/circuitboard/machine/chem_master = 5, + /obj/item/circuitboard/machine/clonescanner = 5, + /obj/item/circuitboard/machine/cryo_tube = 5, + /obj/item/circuitboard/machine/cyborgrecharger = 5, + /obj/item/circuitboard/machine/deep_fryer = 5, + /obj/item/circuitboard/machine/experimentor = 5, + /obj/item/circuitboard/machine/holopad = 5, + /obj/item/circuitboard/machine/hydroponics = 5, + /obj/item/circuitboard/machine/limbgrower = 5, + /obj/item/circuitboard/machine/ltsrbt = 5, + /obj/item/circuitboard/machine/mech_recharger = 5, + /obj/item/circuitboard/machine/mechfab = 5, + /obj/item/circuitboard/machine/medical_kiosk = 5, + /obj/item/circuitboard/machine/medipen_refiller = 5, + /obj/item/circuitboard/machine/microwave = 5, + /obj/item/circuitboard/machine/ore_redemption = 5, + /obj/item/circuitboard/machine/ore_silo = 5, + /obj/item/circuitboard/machine/reagentgrinder = 5, + /obj/item/circuitboard/machine/recharger = 5, + /obj/item/circuitboard/machine/seed_extractor = 5, + /obj/item/circuitboard/machine/selling_pad = 5, + /obj/item/circuitboard/machine/emitter = 5, + ) + +/obj/effect/spawner/lootdrop/random_machine_circuit_rare + loot = list( + /obj/item/circuitboard/aicore = 5, + /obj/item/circuitboard/machine/chem_dispenser = 5, + /obj/item/circuitboard/machine/circuit_imprinter = 5, + /obj/item/circuitboard/machine/protolathe = 5, + /obj/item/circuitboard/machine/clonepod/experimental = 5, + /obj/item/circuitboard/machine/rad_collector = 5, + /obj/item/circuitboard/machine/launchpad = 5, + ) + +/obj/effect/spawner/lootdrop/random_machine_circuit_mech + loot = list( + /obj/item/circuitboard/mecha/ripley/main = 100, + /obj/item/circuitboard/mecha/ripley/peripherals = 100, + /obj/item/circuitboard/mecha/honker/main = 5, + /obj/item/circuitboard/mecha/honker/peripherals = 5, + /obj/item/circuitboard/mecha/odysseus/main = 5, + /obj/item/circuitboard/mecha/odysseus/peripherals = 5, + /obj/item/circuitboard/mecha/gygax/main = 1, + /obj/item/circuitboard/mecha/gygax/peripherals = 1, + /obj/item/circuitboard/mecha/gygax/targeting = 1, + /obj/item/circuitboard/mecha/durand/main = 1, + /obj/item/circuitboard/mecha/durand/peripherals = 1, + /obj/item/circuitboard/mecha/durand/targeting = 1, + ) + +//COMPUTER +/obj/effect/spawner/lootdrop/random_computer_circuit_common + loot = list( + /obj/item/circuitboard/computer/aifixer = 5, + /obj/item/circuitboard/computer/arcade/amputation = 5, + /obj/item/circuitboard/computer/arcade/battle = 5, + /obj/item/circuitboard/computer/arcade/orion_trail = 5, + /obj/item/circuitboard/computer/atmos_alert = 5, + /obj/item/circuitboard/computer/card = 5, + /obj/item/circuitboard/computer/cloning = 5, + /obj/item/circuitboard/computer/communications = 5, + /obj/item/circuitboard/computer/launchpad_console = 5, + /obj/item/circuitboard/computer/mech_bay_power_console = 5, + /obj/item/circuitboard/computer/pandemic = 5, + /obj/item/circuitboard/computer/powermonitor/secret = 5, + /obj/item/circuitboard/computer/prototype_cloning = 5, + /obj/item/circuitboard/computer/stationalert = 5, + /obj/item/circuitboard/computer/teleporter = 5, + /obj/item/circuitboard/computer/operating = 5, + /obj/item/circuitboard/computer/crew = 5, + /obj/item/circuitboard/computer/scan_consolenew = 5, + ) + +/obj/effect/spawner/lootdrop/random_computer_circuit_rare + loot = list( + /obj/item/circuitboard/computer/cargo = 5, + /obj/item/circuitboard/computer/communications = 5, + /obj/item/circuitboard/computer/shuttle/helm = 5, + /obj/item/circuitboard/computer/med_data = 5, + ) + +//DESTRUCTIVE ANAL //i'm killing you +/obj/effect/spawner/lootdrop/destructive_anal_loot //what do people usually put in these things anayways + loot = list( + /obj/item/storage/toolbox/syndicate/empty = 650, + /obj/item/gun/ballistic/automatic/pistol/ringneck = 500, + /obj/item/camera_bug = 500, + /obj/item/clothing/gloves/combat = 200, + /obj/item/clothing/head/chameleon = 200, + /obj/item/pen/sleepy = 200, + /obj/item/reagent_containers/hypospray/medipen/stimpack/traitor = 100, + + /obj/item/grenade/c4 = 100, + + /obj/item/wrench/syndie = 30, + /obj/item/screwdriver/nuke = 30, + /obj/item/crowbar/syndie = 30, + /obj/item/wirecutters/syndie = 30, + /obj/item/multitool/syndie = 30, + ) diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 7b8d68b7b2f9..dfdc7797e7f5 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -197,7 +197,7 @@ . = ..() if (prob(mineralChance)) - var/path = pick_weight(mineralSpawnChanceList) + var/path = pickweight(mineralSpawnChanceList) if(ispath(path, /turf)) var/turf/T = ChangeTurf(path,null,CHANGETURF_IGNORE_AIR) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 68a2f4675bdb..333b8b828022 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -854,7 +854,7 @@ switch(ruin_force) if("Random") - //Can't use pick_weight as it might be from "everything" + //Can't use pickweight as it might be from "everything" ruin_target = select_from[pick(select_from)] else var/selected_ruin = tgui_input_list(usr, "Which ruin?", "Spawn Ruin", select_from, 60 SECONDS) diff --git a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm index 93905c9d6aed..5980993958b0 100644 --- a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm +++ b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm @@ -48,7 +48,7 @@ changelings[C] = (CHANGELING_PHEROMONE_MAX_DISTANCE ** 2) - (distance ** 2) if(changelings.len) - scan_target = pick_weight(changelings) //Point at a 'random' changeling, biasing heavily towards closer ones. + scan_target = pickweight(changelings) //Point at a 'random' changeling, biasing heavily towards closer ones. else scan_target = null diff --git a/code/modules/awaymissions/away_props.dm b/code/modules/awaymissions/away_props.dm index 3b51ebb583d8..a29d48657446 100644 --- a/code/modules/awaymissions/away_props.dm +++ b/code/modules/awaymissions/away_props.dm @@ -1,7 +1,7 @@ /obj/effect/oneway name = "one way effect" desc = "Only lets things in from it's dir." - icon = 'icons/effects/mapping/mapping_helpers.dmi' + icon = 'icons/effects/mapping_helpers.dmi' icon_state = "field_dir" invisibility = INVISIBILITY_MAXIMUM anchored = TRUE @@ -14,7 +14,7 @@ /obj/effect/wind name = "wind effect" desc = "Creates pressure effect in it's direction. Use sparingly." - icon = 'icons/effects/mapping/mapping_helpers.dmi' + icon = 'icons/effects/mapping_helpers.dmi' icon_state = "field_dir" invisibility = INVISIBILITY_MAXIMUM var/strength = 30 @@ -32,7 +32,7 @@ /obj/effect/path_blocker name = "magic barrier" desc = "You shall not pass." - icon = 'icons/effects/mapping/mapping_helpers.dmi' + icon = 'icons/effects/mapping_helpers.dmi' icon_state = "blocker" //todo make this actually look fine when visible anchored = TRUE var/list/blocked_types = list() diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 4fb7ceac4527..26361b99cfc6 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -6,7 +6,7 @@ name = "Mob Spawner" density = TRUE anchored = TRUE - icon = 'icons/effects/mapping/mapping_helpers.dmi' // These aren't *really* mapping helpers but it fits the most with it's common usage (to help place corpses in maps) + icon = 'icons/effects/mapping_helpers.dmi' // These aren't *really* mapping helpers but it fits the most with it's common usage (to help place corpses in maps) icon_state = "mobspawner" // So it shows up in the map editor var/mob_type = null var/mob_name = "" @@ -138,7 +138,6 @@ // Base version - place these on maps/templates. /obj/effect/mob_spawn/human mob_type = /mob/living/carbon/human - icon_state = "corpsehuman" //Human specific stuff. var/mob_species = null //Set to make them a mutant race such as lizard or skeleton. Uses the datum typepath instead of the ID. var/datum/outfit/outfit = /datum/outfit //If this is a path, it will be instanced in Initialize() @@ -327,10 +326,12 @@ /obj/effect/mob_spawn/human/corpse/cargo_tech name = "Cargo Tech" outfit = /datum/outfit/job/cargo_tech + icon_state = "corpsecargotech" /obj/effect/mob_spawn/human/cook name = "Cook" outfit = /datum/outfit/job/cook + icon_state = "corpsecook" /obj/effect/mob_spawn/human/cook/husked husk = TRUE @@ -338,6 +339,8 @@ /obj/effect/mob_spawn/human/doctor name = "Doctor" outfit = /datum/outfit/job/doctor + icon_state = "corpsedoctor" + /obj/effect/mob_spawn/human/doctor/alive death = FALSE @@ -360,18 +363,22 @@ /obj/effect/mob_spawn/human/engineer name = "Engineer" outfit = /datum/outfit/job/engineer + icon_state = "corpseengineer" /obj/effect/mob_spawn/human/clown name = "Clown" outfit = /datum/outfit/job/clown + icon_state = "corpseclown" /obj/effect/mob_spawn/human/scientist name = "Scientist" outfit = /datum/outfit/job/scientist + icon_state = "corpsescientist" /obj/effect/mob_spawn/human/miner name = "Shaft Miner" outfit = /datum/outfit/job/miner + icon_state = "corpseminer" /obj/effect/mob_spawn/human/plasmaman mob_species = /datum/species/plasmaman @@ -398,6 +405,7 @@ /obj/effect/mob_spawn/human/bartender name = "Space Bartender" + icon_state = "corpsebartender" id_job = "Bartender" id_access_list = list(ACCESS_BAR) outfit = /datum/outfit/spacebartender diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 210a5cec7a47..a240bf9f8404 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -453,6 +453,83 @@ SAY AAAAAAAAAAAAAAAA FUCK THAT DELAY 15;"} +//lootspawners//-- + +/obj/effect/spawner/lootdrop/snowdin + name = "why are you using this dummy" + lootdoubles = 0 + lootcount = 1 + loot = list(/obj/item/bikehorn = 100) + +/obj/effect/spawner/lootdrop/snowdin/dungeonlite + name = "dungeon lite" + loot = list(/obj/item/melee/classic_baton = 11, + /obj/item/melee/classic_baton/telescopic = 12, + /obj/item/book/granter/spell/smoke = 10, + /obj/item/book/granter/spell/blind = 10, + /obj/item/storage/firstaid/regular = 45, + /obj/item/storage/firstaid/toxin = 35, + /obj/item/storage/firstaid/brute = 27, + /obj/item/storage/firstaid/fire = 27, + /obj/item/storage/toolbox/syndicate = 12, + /obj/item/grenade/c4 = 7, + /obj/item/grenade/clusterbuster/smoke = 15, + /obj/item/clothing/under/chameleon = 13, + /obj/item/clothing/shoes/chameleon/noslip = 10, + /obj/item/borg/upgrade/ddrill = 3, + /obj/item/borg/upgrade/soh = 3) + +/obj/effect/spawner/lootdrop/snowdin/dungeonmid + name = "dungeon mid" + loot = list(/obj/item/defibrillator/compact = 6, + /obj/item/storage/firstaid/tactical = 35, + /obj/item/shield/energy = 6, + /obj/item/shield/riot/tele = 12, + /obj/item/dnainjector/lasereyesmut = 7, + /obj/item/pneumatic_cannon = 15, + /obj/item/melee/transforming/energy/sword = 7, + /obj/item/book/granter/spell/knock = 15, + /obj/item/book/granter/spell/summonitem = 20, + /obj/item/book/granter/spell/forcewall = 17, + /obj/item/storage/backpack/holding = 12, + /obj/item/grenade/spawnergrenade/manhacks = 6, + /obj/item/grenade/spawnergrenade/spesscarp = 7, + /obj/item/grenade/clusterbuster/inferno = 3, + /obj/item/stack/sheet/mineral/diamond{amount = 15} = 10, + /obj/item/stack/sheet/mineral/uranium{amount = 15} = 10, + /obj/item/stack/sheet/mineral/plasma{amount = 15} = 10, + /obj/item/stack/sheet/mineral/gold{amount = 15} = 10, + /obj/item/book/granter/spell/barnyard = 4, + /obj/item/pickaxe/drill/diamonddrill = 6, + /obj/item/borg/upgrade/disablercooler = 7) + + +/obj/effect/spawner/lootdrop/snowdin/dungeonheavy + name = "dungeon heavy" + loot = list(/obj/item/melee/axe/fire = 25, + /obj/item/organ/brain/alien = 17, + /obj/item/dualsaber = 15, + /obj/item/organ/heart/demon = 7, + /obj/item/gun/ballistic/automatic/smg/cobra = 16, + /obj/item/uplink/old = 2, + /obj/item/book/granter/spell/charge = 12, + /obj/item/grenade/clusterbuster/spawner_manhacks = 15, + /obj/item/book/granter/spell/fireball = 10, + /obj/item/pickaxe/drill/jackhammer = 30, + /obj/item/borg/upgrade/syndicate = 13, + /obj/item/borg/upgrade/selfrepair = 17) + +/obj/effect/spawner/lootdrop/snowdin/dungeonmisc + name = "dungeon misc" + lootdoubles = 2 + lootcount = 1 + + loot = list(/obj/item/stack/sheet/mineral/snow{amount = 25} = 10, + /obj/item/toy/snowball = 15, + /obj/item/shovel = 10, + /obj/item/melee/spear = 8, + ) + //special items//-- /obj/structure/barricade/wooden/snowed diff --git a/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm b/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm index 65a72290bf07..2d9f3af83c06 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/consumables.dm @@ -4,7 +4,7 @@ /datum/blackmarket_item/consumable/donk_pocket_box name = "Box of Donk Pockets" desc = "A well packaged box containing the favourite snack of every spacefarer." - item = /obj/effect/spawner/random/food_or_drink/donkpockets + item = /obj/effect/spawner/lootdrop/donkpockets stock_min = 2 stock_max = 5 @@ -186,7 +186,7 @@ /datum/blackmarket_item/consumable/ration name = "Ration Pack" desc = "PGF military surplus rations. What's in them? Who knows. Surprise is the spice of life after all." - item = /obj/effect/spawner/random/food_or_drink/ration + item = /obj/effect/spawner/lootdrop/ration price_min = 150 price_max = 300 diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index a7bcbb2fe7d4..cab2ac8563af 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -73,7 +73,7 @@ var/the_toy for(var/i in 1 to 5) if(prob(50)) - the_toy = pick_weight(GLOB.arcade_prize_pool) + the_toy = pickweight(GLOB.arcade_prize_pool) else the_toy = pick(subtypesof(/obj/item/toy/plush)) new the_toy(C) @@ -103,7 +103,7 @@ /datum/supply_pack/costumes_toys/mafia/fill(obj/structure/closet/crate/C) for(var/i in 1 to 4) - new /obj/effect/spawner/random/clothing/mafia_outfit(C) + new /obj/effect/spawner/lootdrop/mafia_outfit(C) new /obj/item/virgin_mary(C) if(prob(30)) //Not all mafioso have mustaches, some people also find this item annoying. new /obj/item/clothing/mask/fakemoustache/italian(C) diff --git a/code/modules/cargo/packs/food.dm b/code/modules/cargo/packs/food.dm index 13402cce51b3..364c53ec9eb5 100644 --- a/code/modules/cargo/packs/food.dm +++ b/code/modules/cargo/packs/food.dm @@ -47,12 +47,12 @@ name = "Ration Crate" desc = "6 standerd issue rations." cost = 500 - contains = list(/obj/effect/spawner/random/food_or_drink/ration, - /obj/effect/spawner/random/food_or_drink/ration, - /obj/effect/spawner/random/food_or_drink/ration, - /obj/effect/spawner/random/food_or_drink/ration, - /obj/effect/spawner/random/food_or_drink/ration, - /obj/effect/spawner/random/food_or_drink/ration) + contains = list(/obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration) crate_name = "ration crate" crate_type = /obj/structure/closet/crate diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index db9e2814b2c0..0447f62aab9e 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -259,6 +259,24 @@ item_state = "lgloves" custom_price = 200 +/obj/effect/spawner/lootdrop/gloves + name = "random gloves" + desc = "These gloves are supposed to be a random color..." + icon = 'icons/obj/clothing/gloves.dmi' + icon_state = "random_gloves" + loot = list( + /obj/item/clothing/gloves/color/orange = 1, + /obj/item/clothing/gloves/color/red = 1, + /obj/item/clothing/gloves/color/blue = 1, + /obj/item/clothing/gloves/color/purple = 1, + /obj/item/clothing/gloves/color/green = 1, + /obj/item/clothing/gloves/color/grey = 1, + /obj/item/clothing/gloves/color/light_brown = 1, + /obj/item/clothing/gloves/color/brown = 1, + /obj/item/clothing/gloves/color/white = 1, + /obj/item/clothing/gloves/color/rainbow = 1, + ) + /obj/item/clothing/gloves/maid name = "maid arm covers" desc = "Cylindrical looking tubes that go over your arm, weird." diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm index 8f1e0663ee31..f5e4ddcdf55b 100644 --- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm +++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm @@ -47,26 +47,26 @@ return if(prob(90)) - head = pick_weight(list( + head = pickweight(list( /obj/item/clothing/head/beret/sec/frontier = 10, /obj/item/clothing/head/helmet/bulletproof/x11/frontier = 5, /obj/item/reagent_containers/glass/bucket = 1)) if(prob(60)) - suit = pick_weight(list( + suit = pickweight(list( /obj/item/clothing/suit/armor/vest = 5, /obj/item/clothing/suit/armor/vest/bulletproof/frontier = 5, /obj/item/clothing/suit/armor/vest/scrap = 1)) if(prob(50)) - mask = pick_weight(list( + mask = pickweight(list( /obj/item/clothing/mask/gas/frontiersmen = 12, /obj/item/clothing/mask/gas/sechailer/balaclava = 10, /obj/item/clothing/mask/breath = 7, /obj/item/clothing/mask/whistle/trench = 3)) if(prob(90)) - back = pick_weight(list( + back = pickweight(list( /obj/item/storage/backpack = 20, /obj/item/storage/backpack/satchel = 20, /obj/item/storage/backpack/messenger = 20, @@ -76,7 +76,7 @@ )) if(prob(90)) - shoes = pick_weight(list( + shoes = pickweight(list( /obj/item/clothing/shoes/jackboots = 10, /obj/item/clothing/shoes/sneakers = 5, )) @@ -136,7 +136,7 @@ /obj/item/gun/ballistic/shotgun/doublebarrel/beacon/presawn, /obj/item/gun/energy/e_gun/mini)) if("Melee") - r_hand = pick_weight(list( + r_hand = pickweight(list( /obj/item/melee/knife/survival = 15, /obj/item/melee/baseball_bat = 10, /obj/item/roastingstick = 2, diff --git a/code/modules/events/brain_trauma.dm b/code/modules/events/brain_trauma.dm index 3c68b18d50f9..f7324e3c57dd 100644 --- a/code/modules/events/brain_trauma.dm +++ b/code/modules/events/brain_trauma.dm @@ -27,7 +27,7 @@ 15;TRAUMA_RESILIENCE_LOBOTOMY, 5;TRAUMA_RESILIENCE_MAGIC) - var/trauma_type = pick_weight(list( + var/trauma_type = pickweight(list( BRAIN_TRAUMA_MILD = 60, BRAIN_TRAUMA_SEVERE = 30, BRAIN_TRAUMA_SPECIAL = 10 diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm index 73e3b721c067..35d8c4b141e1 100644 --- a/code/modules/events/heart_attack.dm +++ b/code/modules/events/heart_attack.dm @@ -18,7 +18,7 @@ heart_attack_contestants[victim] = 1 if(LAZYLEN(heart_attack_contestants)) - var/mob/living/carbon/human/winner = pick_weight(heart_attack_contestants) + var/mob/living/carbon/human/winner = pickweight(heart_attack_contestants) var/datum/disease/D = new /datum/disease/heart_failure() winner.ForceContractDisease(D, FALSE, TRUE) announce_to_ghosts(winner) diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index 1fbb017b7dd4..43e60c3137c3 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -42,7 +42,7 @@ /obj/effect/spawner/xmastree name = "christmas tree spawner" - icon = 'icons/effects/mapping/landmarks_static.dmi' + icon = 'icons/effects/landmarks_static.dmi' icon_state = "x2" layer = FLY_LAYER diff --git a/code/modules/fishing/fish/_fish.dm b/code/modules/fishing/fish/_fish.dm index 40b979a89577..4f2c3cd1343a 100644 --- a/code/modules/fishing/fish/_fish.dm +++ b/code/modules/fishing/fish/_fish.dm @@ -386,6 +386,6 @@ if(initial(fish.available_in_random_cases) || !case_fish_only) chance_table[fish] = initial(fish.random_case_rarity) probability_table[argkey] = chance_table - return pick_weight(probability_table[argkey]) + return pickweight(probability_table[argkey]) diff --git a/code/modules/fishing/sources/_fish_source.dm b/code/modules/fishing/sources/_fish_source.dm index db051d69175e..136a650148cd 100644 --- a/code/modules/fishing/sources/_fish_source.dm +++ b/code/modules/fishing/sources/_fish_source.dm @@ -79,7 +79,7 @@ GLOBAL_LIST_INIT(preset_fish_sources,init_fishing_configurations()) /// In case you want more complex rules for specific spots /datum/fish_source/proc/roll_reward(obj/item/fishing_rod/rod, mob/fisherman) - return pick_weight(get_modified_fish_table(rod,fisherman)) + return pickweight(get_modified_fish_table(rod,fisherman)) /// Gives out the reward if possible /datum/fish_source/proc/dispense_reward(reward_path, mob/fisherman) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 30b768e702b0..29ff8ead2f62 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( if(world.time < next_hallucination) return - var/halpick = pick_weight(GLOB.hallucination_list) + var/halpick = pickweight(GLOB.hallucination_list) new halpick(src, FALSE) next_hallucination = world.time + rand(100, 600) diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index bfc9179c4893..b5c4c2c42b85 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -341,13 +341,13 @@ /obj/item/pizzabox/infinite/proc/attune_pizza(mob/living/carbon/human/noms) //tonight on "proc names I never thought I'd type" if(!pizza_preferences[noms.ckey]) - pizza_preferences[noms.ckey] = pick_weight(pizza_types) + pizza_preferences[noms.ckey] = pickweight(pizza_types) if(noms.has_quirk(/datum/quirk/pineapple_liker)) pizza_preferences[noms.ckey] = /obj/item/reagent_containers/food/snacks/pizza/pineapple else if(noms.has_quirk(/datum/quirk/pineapple_hater)) var/list/pineapple_pizza_liker = pizza_types.Copy() pineapple_pizza_liker -= /obj/item/reagent_containers/food/snacks/pizza/pineapple - pizza_preferences[noms.ckey] = pick_weight(pineapple_pizza_liker) + pizza_preferences[noms.ckey] = pickweight(pineapple_pizza_liker) else if(noms.mind && noms.mind.assigned_role == "Botanist") pizza_preferences[noms.ckey] = /obj/item/reagent_containers/food/snacks/pizza/dank diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 52b5f7659305..47e545c33663 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -4,7 +4,7 @@ /obj/effect/baseturf_helper //Set the baseturfs of every turf in the /area/ it is placed. name = "baseturf editor" - icon = 'icons/effects/mapping/mapping_helpers.dmi' + icon = 'icons/effects/mapping_helpers.dmi' icon_state = "" var/list/baseturf_to_replace @@ -89,9 +89,8 @@ /obj/effect/mapping_helpers - icon = 'icons/effects/mapping/mapping_helpers.dmi' + icon = 'icons/effects/mapping_helpers.dmi' icon_state = "" - invisibility = INVISIBILITY_OBSERVER var/late = FALSE /obj/effect/mapping_helpers/Initialize() @@ -273,6 +272,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) /obj/effect/mapping_helpers/ianbirthday name = "Ian's Bday Helper" late = TRUE + icon_state = "iansbdayhelper" var/balloon_clusters = 2 /obj/effect/mapping_helpers/ianbirthday/LateInitialize() @@ -331,6 +331,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) /obj/effect/mapping_helpers/ianbirthday/admin//so admins may birthday any room name = "generic birthday setup" + icon_state = "bdayhelper" /obj/effect/mapping_helpers/ianbirthday/admin/LateInitialize() birthday() @@ -340,6 +341,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) /obj/effect/mapping_helpers/iannewyear name = "Ian's New Years Helper" late = TRUE + icon_state = "iansnewyrshelper" /obj/effect/mapping_helpers/iannewyear/LateInitialize() if(SSevents.holidays && SSevents.holidays[NEW_YEAR]) diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index bf4ad80647ef..bf6fb15c9332 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -508,7 +508,7 @@ icon_state = "garden" harvested_name = "lush garden" harvested_desc = "In the soil and shade, something softly grew. It seems some industrious scavenger already passed by." - harvest = /obj/effect/spawner/random/food_or_drink/garden + harvest = /obj/effect/spawner/lootdrop/garden harvest_amount_high = 1 harvest_amount_low = 1 harvest_message_low = "You discover something nestled away in the growing bough." @@ -527,7 +527,7 @@ icon_state = "gardenarid" harvested_name = "sandy garden" harvested_desc = "Beneath a bluff of soft silicate, a sheltered grove slumbered. Some desert wanderer seems to have picked it clean." - harvest = /obj/effect/spawner/random/food_or_drink/garden/arid + harvest = /obj/effect/spawner/lootdrop/garden/arid harvest_amount_high = 1 harvest_amount_low = 1 harvest_message_low = "You brush sand away from a verdant prize, nestled in the leaves." @@ -540,7 +540,7 @@ icon_state = "gardencold" harvested_name = "chilly garden" harvested_desc = "A delicate layer of frost covers hardy brush. Someone came with the blizzard, and left with any prize this might contain." - harvest = /obj/effect/spawner/random/food_or_drink/garden/cold + harvest = /obj/effect/spawner/lootdrop/garden/cold harvest_amount_high = 1 harvest_amount_low = 1 harvest_message_low = "You unearth a snow-covered treat." @@ -553,7 +553,7 @@ icon_state = "gardensick" harvested_name = "sickly garden" harvested_desc = "Polluted water wells up from the cracked earth, where it once fed a patch of something curious. Now only wilted leaves remain." - harvest = /obj/effect/spawner/random/food_or_drink/garden/sick + harvest = /obj/effect/spawner/lootdrop/garden/sick harvest_amount_high = 1 harvest_amount_low = 1 harvest_message_low = "You pry something odd from the poisoned soil." @@ -567,13 +567,124 @@ icon_state = "seaweed" harvested_name = "seaweed patch" harvested_desc = "A patch of seaweed, floating on the surface of the water. It seems someone has already searched through this" - harvest = /obj/effect/spawner/random/food_or_drink/garden/seaweed + harvest = /obj/effect/spawner/lootdrop/garden/seaweed harvest_amount_high = 1 harvest_amount_low = 1 harvest_message_low = "You discover some edible weeds within the patch." harvest_message_med = "You discover some edible weeds within the patch." harvest_message_high = "You discover some edible weeds within the patch." +/obj/effect/spawner/lootdrop/garden + name = "lush garden seeder" + lootcount = 3 + var/list/plant = list( + /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus = 1, + /obj/item/reagent_containers/food/snacks/grown/berries/death/stealth = 2, + /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d = 1, + /obj/item/reagent_containers/food/snacks/grown/trumpet = 1, + /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, + /obj/item/seeds/random = 1, + /obj/item/grown/log/bamboo = 2, + /obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris = 2, + /obj/item/reagent_containers/food/snacks/grown/berries/poison/stealth = 5, + /obj/item/reagent_containers/food/snacks/grown/citrus/lemon = 2, + /obj/item/reagent_containers/food/snacks/grown/citrus/lime = 2, + /obj/item/reagent_containers/food/snacks/grown/vanillapod = 2, + /obj/item/reagent_containers/food/snacks/grown/moonflower = 2, + /obj/item/reagent_containers/food/snacks/grown/cocoapod = 2, + /obj/item/reagent_containers/food/snacks/grown/pineapple = 2, + /obj/item/reagent_containers/food/snacks/grown/poppy/lily = 2, + /obj/item/reagent_containers/food/snacks/grown/poppy/geranium = 2, + /obj/item/reagent_containers/food/snacks/grown/sugarcane = 2, + /obj/item/reagent_containers/food/snacks/grown/tea = 2, + /obj/item/reagent_containers/food/snacks/grown/tobacco = 2, + /obj/item/reagent_containers/food/snacks/grown/watermelon = 4, + /obj/item/grown/sunflower = 4, + /obj/item/reagent_containers/food/snacks/grown/banana = 4, + /obj/item/reagent_containers/food/snacks/grown/apple = 4, + /obj/item/reagent_containers/food/snacks/grown/berries = 5, + /obj/item/reagent_containers/food/snacks/grown/cherries = 4, + /obj/item/reagent_containers/food/snacks/grown/citrus/orange = 4, + /obj/item/reagent_containers/food/snacks/grown/garlic = 4, + /obj/item/reagent_containers/food/snacks/grown/grapes = 4, + /obj/item/reagent_containers/food/snacks/grown/grass = 5, + /obj/item/reagent_containers/food/snacks/grown/pumpkin = 4, + /obj/item/reagent_containers/food/snacks/grown/rainbow_flower = 4, + /obj/item/reagent_containers/food/snacks/grown/wheat = 4, + /obj/item/reagent_containers/food/snacks/grown/parsnip = 4, + /obj/item/reagent_containers/food/snacks/grown/peas = 4, + /obj/item/reagent_containers/food/snacks/grown/rice = 4, + /obj/item/reagent_containers/food/snacks/grown/soybeans = 4, + /obj/item/reagent_containers/food/snacks/grown/tomato = 4, + /obj/item/reagent_containers/food/snacks/grown/cabbage = 4, + /obj/item/reagent_containers/food/snacks/grown/onion = 4, + /obj/item/reagent_containers/food/snacks/grown/carrot = 4) + +/obj/effect/spawner/lootdrop/garden/Initialize(mapload) + loot = plant + . = ..() + +/obj/effect/spawner/lootdrop/garden/arid + name = "arid garden seeder" + plant = list( + /obj/item/reagent_containers/food/snacks/grown/ghost_chili = 1, + /obj/item/reagent_containers/food/snacks/grown/nettle = 1, + /obj/item/grown/cotton/durathread = 1, + /obj/item/seeds/random = 1, + /obj/item/reagent_containers/food/snacks/grown/redbeet = 1, + /obj/item/reagent_containers/food/snacks/grown/aloe = 2, + /obj/item/grown/cotton = 2, + /obj/item/reagent_containers/food/snacks/grown/mushroom/angel = 2, + /obj/item/reagent_containers/food/snacks/grown/chili = 2, + /obj/item/reagent_containers/food/snacks/grown/whitebeet = 5, + /obj/item/reagent_containers/food/snacks/grown/potato = 4, + /obj/item/reagent_containers/food/snacks/grown/potato/sweet = 4, + /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle = 4, + /obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet = 4, + /obj/item/reagent_containers/food/snacks/grown/corn = 4) + +/obj/effect/spawner/lootdrop/garden/cold + name = "frigid garden seeder" + plant = list( + /obj/item/reagent_containers/food/snacks/grown/bluecherries = 1, + /obj/item/reagent_containers/food/snacks/grown/galaxythistle = 1, + /obj/item/reagent_containers/food/snacks/grown/berries/death/stealth = 1, + /obj/item/seeds/random = 1, + /obj/item/reagent_containers/food/snacks/grown/poppy = 2, + /obj/item/reagent_containers/food/snacks/grown/tomato/blue = 2, + /obj/item/reagent_containers/food/snacks/grown/berries/poison/stealth = 2, + /obj/item/reagent_containers/food/snacks/grown/berries = 4, + /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle = 4, + /obj/item/reagent_containers/food/snacks/grown/oat = 4, + /obj/item/reagent_containers/food/snacks/grown/grapes/green = 4, + /obj/item/reagent_containers/food/snacks/grown/grass = 4, + /obj/item/reagent_containers/food/snacks/grown/harebell = 5, + /obj/item/seeds/starthistle = 5) + +/obj/effect/spawner/lootdrop/garden/sick + name = "sickly garden seeder" + plant = list( + /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow = 1, + /obj/item/reagent_containers/food/snacks/grown/cannabis/death = 1, + /obj/item/seeds/replicapod = 1, + /obj/item/reagent_containers/food/snacks/grown/mushroom/angel = 1, + /obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap = 2, + /obj/item/seeds/tower/steel = 2, + /obj/item/reagent_containers/food/snacks/grown/cannabis = 2, + /obj/item/seeds/random = 2, + /obj/item/reagent_containers/food/snacks/grown/mushroom/jupitercup = 2, + /obj/item/reagent_containers/food/snacks/grown/cherrybulbs = 4, + /obj/item/reagent_containers/food/snacks/grown/mushroom/amanita = 4, + /obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap = 4, + /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi = 4, + /obj/item/reagent_containers/food/snacks/grown/berries/glow = 4) + +/obj/effect/spawner/lootdrop/garden/seaweed + name = "seaweed patch seeder" + plant = list( + /obj/item/reagent_containers/food/snacks/grown/seaweed = 1 + ) + /obj/item/reagent_containers/food/snacks/grown/berries/poison/stealth //careful eating from random jungle bushes seed = /obj/item/seeds/berry/poison name = "bunch of berries" diff --git a/code/modules/mining/ore_veins.dm b/code/modules/mining/ore_veins.dm index fa497b44a323..16f6afa8da0c 100644 --- a/code/modules/mining/ore_veins.dm +++ b/code/modules/mining/ore_veins.dm @@ -72,7 +72,7 @@ GLOBAL_LIST_EMPTY(ore_veins) else ore_type_amount = 1 for(var/ore_count in 1 to ore_type_amount) - var/picked = pick_weight(ore_list) + var/picked = pickweight(ore_list) vein_contents.Add(picked) ore_list.Remove(picked) GLOB.ore_veins += src diff --git a/code/modules/mob/living/simple_animal/hostile/abandoned_minebot.dm b/code/modules/mob/living/simple_animal/hostile/abandoned_minebot.dm index 038aae0900de..58e48850c2b8 100644 --- a/code/modules/mob/living/simple_animal/hostile/abandoned_minebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/abandoned_minebot.dm @@ -35,14 +35,14 @@ minimum_distance = 1 icon_state = "mining_drone_offense" faction = list("mining", "turret") - loot = list(/obj/effect/decal/cleanable/robot_debris, /obj/effect/spawner/random/minebot) + loot = list(/obj/effect/decal/cleanable/robot_debris, /obj/effect/spawner/lootdrop/minebot) projectiletype = /obj/projectile/kinetic/miner/weak /obj/projectile/kinetic/miner/weak damage = 15 -/obj/effect/spawner/random/minebot +/obj/effect/spawner/lootdrop/minebot loot = list(/obj/item/borg/upgrade/modkit/minebot_passthrough = 15, /obj/item/borg/upgrade/modkit/chassis_mod = 15, /obj/item/borg/upgrade/modkit/tracer = 15, diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 6dcff82cb7c4..b98da0a899fc 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -69,7 +69,7 @@ /mob/living/simple_animal/hostile/hivebot/death(gibbed) do_sparks(3, TRUE, src) - new /obj/effect/spawner/random/waste/hivebot(loc) + new /obj/effect/spawner/lootdrop/waste/hivebot(loc) ..(TRUE) /mob/living/simple_animal/hostile/hivebot/range diff --git a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm index 772c277a0e8d..8cfeeff0695a 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm @@ -80,7 +80,7 @@ var/survivor_type //room for alternatives inside the fuckoff grade init. /obj/effect/mob_spawn/human/corpse/damaged/whitesands/Initialize() //everything here should equal out to 100 for the sake of my sanity. - mob_species = pick_weight(list( + mob_species = pickweight(list( /datum/species/human = 50, /datum/species/lizard = 20, /datum/species/ipc = 10, @@ -92,7 +92,7 @@ //to-do: learn how to make mobsprites for other survivors //gloves are a tossup - gloves = pick_weight(list( + gloves = pickweight(list( /obj/item/clothing/gloves/color/black = 60, /obj/item/clothing/gloves/explorer = 30, /obj/item/clothing/gloves/explorer/old = 10 @@ -100,7 +100,7 @@ ) //bags are semi-random. - back = pick_weight(list( + back = pickweight(list( /obj/item/storage/backpack = 20, /obj/item/storage/backpack/explorer = 20, /obj/item/storage/backpack/satchel = 20, @@ -112,7 +112,7 @@ //as are bag contents backpack_contents = list() if(prob(70)) - backpack_contents += pick_weight(list( //these could stand to be expanded, right now they're just mildly modified miner ones, and I don't know how to plus that up. + backpack_contents += pickweight(list( //these could stand to be expanded, right now they're just mildly modified miner ones, and I don't know how to plus that up. /obj/item/soap = 10, /obj/item/stack/marker_beacon/ten = 15, /obj/item/mining_scanner = 5, @@ -128,7 +128,7 @@ ) ) if(prob(70)) - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/stack/sheet/animalhide/goliath_hide = 20, /obj/item/stack/marker_beacon/ten = 10, /obj/item/mining_scanner = 20, @@ -140,7 +140,7 @@ ) ) if(prob(70)) - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/stack/sheet/animalhide/goliath_hide = 5, /obj/item/stack/marker_beacon/ten = 5, /obj/item/mining_scanner = 5, @@ -154,7 +154,7 @@ ) ) if (prob(15)) //mayhaps a medkit - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/storage/firstaid/regular = 50, /obj/item/storage/firstaid/brute = 15, /obj/item/storage/firstaid/medical = 15, @@ -167,7 +167,7 @@ backpack_contents += /obj/item/reagent_containers/hypospray/medipen/survival //masks - mask = pick_weight(list( + mask = pickweight(list( /obj/item/clothing/mask/gas = 40, /obj/item/clothing/mask/gas/explorer = 20, /obj/item/clothing/mask/gas/explorer/old = 20, @@ -177,7 +177,7 @@ //the eyes are the window into the soul. if(prob(70)) - glasses = pick_weight(list( + glasses = pickweight(list( /obj/item/clothing/glasses/heat = 20, /obj/item/clothing/glasses/cold = 20, /obj/item/clothing/glasses/meson = 40, @@ -189,7 +189,7 @@ if(prob(1)) //oh my god they can't hear the sandstorm coming they've got airpods in ears = /obj/item/instrument/piano_synth/headphones/spacepods else - ears = pick_weight(list( + ears = pickweight(list( /obj/item/radio/headset = 50, /obj/item/radio/headset/alt = 50 ) @@ -198,7 +198,7 @@ switch(survivor_type) if("survivor") //uniforms are random to show varied backgrounds, but similar goal - uniform = pick_weight(list( + uniform = pickweight(list( /obj/item/clothing/under/color/random = 65, /obj/item/clothing/under/rank/cargo/miner/lavaland = 10, /obj/item/clothing/under/rank/prisoner = 10, @@ -207,7 +207,7 @@ ) ) //storage is semi-randomized, giving some variety - belt = pick_weight(list( + belt = pickweight(list( /obj/item/storage/belt/fannypack = 40, /obj/item/storage/belt/mining = 20, /obj/item/storage/belt/mining/alt = 15, @@ -223,7 +223,7 @@ r_pocket = /obj/item/spacecash/bundle/smallrand if("hunter") - uniform = pick_weight(list( + uniform = pickweight(list( /obj/item/clothing/under/color/random = 50, /obj/item/clothing/under/rank/cargo/miner/lavaland = 25, /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 15, @@ -231,7 +231,7 @@ /obj/item/clothing/under/utility = 5 ) ) - belt = pick_weight(list( + belt = pickweight(list( /obj/item/storage/belt/mining = 30, /obj/item/storage/belt/fannypack = 20, /obj/item/storage/belt/mining/alt = 15, @@ -251,7 +251,7 @@ visible_message(span_warning("The hunter's weapon shatters as they impact the ground!")) if("gunslinger") - uniform = pick_weight(list( + uniform = pickweight(list( /obj/item/clothing/under/rank/cargo/miner/lavaland = 35, /obj/item/clothing/under/color/random = 25, /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 15, @@ -260,7 +260,7 @@ /obj/item/clothing/under/syndicate/combat = 5 ) ) - belt = pick_weight(list( + belt = pickweight(list( /obj/item/storage/belt/mining = 30, /obj/item/storage/belt/bandolier = 30, /obj/item/storage/belt/military = 20, diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 7e3e217ecebd..2bae8ea2a5dc 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -463,7 +463,7 @@ H.transform = H.transform.Scale(0.8, 1)//somehow dwarf squashing is borked when not roundstart. I hate WS code /obj/effect/mob_spawn/human/corpse/damaged/legioninfested/Initialize() //in an ideal world, these would generate, the legion would overlay over the corpse, and we'd get cool sprites - mob_species = pick_weight(list( + mob_species = pickweight(list( /datum/species/human = 50, /datum/species/lizard = 20, /datum/species/ipc = 10, @@ -472,7 +472,7 @@ /datum/species/spider = 5 ) ) - var/type = pick_weight(list( + var/type = pickweight(list( "Miner" = 40, "Assistant" = 10, "Engineer" = 5, diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm index 86476b21b3f4..15626099bff9 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm @@ -1,6 +1,6 @@ /datum/outfit/generic/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() - uniform = pick_weight(list( + uniform = pickweight(list( /obj/item/clothing/under/utility = 5, /obj/item/clothing/under/utility/skirt = 5, /obj/item/clothing/under/color/black = 1, @@ -21,7 +21,7 @@ /obj/item/clothing/under/syndicate/tacticool = 1, ) ) - suit = pick_weight(list( + suit = pickweight(list( /obj/item/clothing/suit/hooded/wintercoat = 1, /obj/item/clothing/suit/jacket = 1, /obj/item/clothing/suit/jacket/leather = 1, @@ -33,7 +33,7 @@ /obj/item/clothing/suit/toggle/hazard = 1, ) ) - back = pick_weight(list( + back = pickweight(list( /obj/item/storage/backpack = 1, /obj/item/storage/backpack/satchel = 1, /obj/item/storage/backpack/duffelbag = 1, @@ -42,7 +42,7 @@ ) ) if (prob(10)) - belt = pick_weight(list( + belt = pickweight(list( /obj/item/gun/ballistic/automatic/pistol/candor = 2, /obj/item/gun/ballistic/automatic/pistol/commander = 1, /obj/item/gun/ballistic/automatic/pistol/ringneck = 1, @@ -51,13 +51,13 @@ ) ) if(prob(50)) - gloves = pick_weight(list( + gloves = pickweight(list( /obj/item/clothing/gloves/color/black = 1, /obj/item/clothing/gloves/fingerless = 1, /obj/item/clothing/gloves/color/white = 1, ) ) - shoes = pick_weight(list( + shoes = pickweight(list( /obj/item/clothing/shoes/laceup = 1, /obj/item/clothing/shoes/sandal = 1, /obj/item/clothing/shoes/winterboots = 1, @@ -69,7 +69,7 @@ ) ) if(prob(50)) - head = pick_weight(list( + head = pickweight(list( /obj/item/clothing/head/beret = 3, /obj/item/clothing/head/beret/grey = 3, /obj/item/clothing/head/flatcap = 3, @@ -83,7 +83,7 @@ ) ) if(prob(50)) - mask = pick_weight(list( + mask = pickweight(list( /obj/item/clothing/mask/balaclava = 1, /obj/item/clothing/mask/bandana/red = 1, /obj/item/clothing/mask/gas = 3, @@ -91,7 +91,7 @@ ) ) if(prob(25)) - neck = pick_weight(list( + neck = pickweight(list( /obj/item/clothing/neck/scarf/red = 1, /obj/item/clothing/neck/scarf/green = 1, /obj/item/clothing/neck/scarf/darkblue = 1, @@ -103,7 +103,7 @@ ) ears = pick(/obj/item/radio/headset, /obj/item/radio/headset/alt) if(prob(50)) - glasses = pick_weight(list( + glasses = pickweight(list( /obj/item/clothing/glasses/regular = 1, /obj/item/clothing/glasses/regular/circle = 1, /obj/item/clothing/glasses/regular/jamjar = 1, @@ -121,7 +121,7 @@ l_pocket = pick(/obj/item/radio, /obj/item/flashlight) id = /obj/item/card/id backpack_contents = list() - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/dice/d20 = 1, /obj/item/lipstick = 1, /obj/item/clothing/mask/vape = 1, @@ -151,14 +151,14 @@ /datum/outfit/generic/miner/pre_equip(mob/living/carbon/human/H, visualsOnly) . = ..() if(prob(75)) - uniform = pick_weight(list( + uniform = pickweight(list( /obj/item/clothing/under/rank/cargo/miner/lavaland = 5, /obj/item/clothing/under/rank/cargo/miner = 4, /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 1, ) ) if(prob(25)) - suit = pick_weight(list( + suit = pickweight(list( /obj/item/clothing/suit/hooded/explorer = 18, /obj/item/clothing/suit/hooded/explorer/old = 1, /obj/item/clothing/suit/hooded/cloak/goliath = 1 @@ -167,13 +167,13 @@ if(prob(75)) back = /obj/item/storage/backpack/explorer if(prob(75)) - belt = pick_weight(list( + belt = pickweight(list( /obj/item/storage/belt/mining = 2, /obj/item/storage/belt/mining/alt = 2 ) ) else if(prob(75)) - belt = pick_weight(list( + belt = pickweight(list( /obj/item/pickaxe = 16, /obj/item/pickaxe/mini = 8, /obj/item/pickaxe/silver = 4, @@ -183,7 +183,7 @@ ) ) if(prob(75)) - gloves = pick_weight(list( + gloves = pickweight(list( /obj/item/clothing/gloves/color/black = 9, /obj/item/clothing/gloves/explorer/old = 1 ) @@ -191,7 +191,7 @@ if(prob(75)) shoes = /obj/item/clothing/shoes/workboots/mining if(prob(75)) - mask = pick_weight(list( + mask = pickweight(list( /obj/item/clothing/mask/gas/explorer = 9, /obj/item/clothing/mask/gas/explorer/old = 1 ) @@ -199,7 +199,7 @@ if(prob(50)) glasses = /obj/item/clothing/glasses/meson if(prob(50)) - r_pocket = pick_weight(list( + r_pocket = pickweight(list( /obj/item/stack/marker_beacon = 20, /obj/item/spacecash/bundle/smallrand = 7, /obj/item/reagent_containers/hypospray/medipen/survival = 2, @@ -207,7 +207,7 @@ ) ) if(prob(25)) - l_pocket = pick_weight(list( + l_pocket = pickweight(list( /obj/item/spacecash/bundle/smallrand = 5, /obj/item/reagent_containers/hypospray/medipen/survival = 2, /obj/item/borg/upgrade/modkit/cooldown = 1 @@ -216,7 +216,7 @@ if(prob(75)) for(var/count in 1 to 3) if(prob(70)) - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/borg/upgrade/modkit/damage = 1, /obj/item/borg/upgrade/modkit/trigger_guard = 1, /obj/item/soap/nanotrasen = 1, @@ -236,7 +236,7 @@ ) if(prob(30)) backpack_contents += list( - /obj/item/reagent_containers/hypospray/medipen/survival = pick_weight(list( + /obj/item/reagent_containers/hypospray/medipen/survival = pickweight(list( 1 = 3, 2 = 2, 3 = 1 @@ -245,7 +245,7 @@ ) else if (prob(75)) backpack_contents = list() - back = pick_weight(list( + back = pickweight(list( /obj/item/kinetic_crusher = 9, /obj/item/kinetic_crusher/old = 1 ) @@ -276,7 +276,7 @@ back = /obj/item/melee/axe/fire for(var/i = 1 to 3) if(prob(75)) - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/stack/tape/industrial/electrical = 1, /obj/item/electronics/apc = 1, /obj/item/multitool = 1, @@ -305,7 +305,7 @@ else if (prob(75)) back = /obj/item/defibrillator/loaded if(prob(75)) - belt = pick_weight(list(/obj/item/storage/belt/medical = 5, /obj/item/defibrillator/compact/loaded = 1)) + belt = pickweight(list(/obj/item/storage/belt/medical = 5, /obj/item/defibrillator/compact/loaded = 1)) if(prob(75)) gloves = pick(/obj/item/clothing/gloves/color/white, /obj/item/clothing/gloves/color/latex/nitrile) if(prob(75)) @@ -320,7 +320,7 @@ glasses = pick(/obj/item/clothing/glasses/hud/health, /obj/item/clothing/glasses/hud/health/prescription) for(var/i = 1 to 3) if(prob(75)) - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/reagent_containers/pill/patch/styptic = 5, /obj/item/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/storage/firstaid/medical = 3, @@ -365,7 +365,7 @@ neck = /obj/item/clothing/neck/tie/horrible for(var/i = 1 to 3) if(prob(75)) - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/research_notes/loot/tiny = 3, /obj/item/research_notes/loot/small = 3, /obj/item/reagent_scanner = 3, @@ -408,7 +408,7 @@ ears = /obj/item/radio/headset/headset_cargo for(var/i = 1 to 3) if(prob(75)) - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/spacecash/bundle/smallrand = 5, /obj/item/ammo_box/magazine/illestren_a850r = 5, /obj/item/ammo_box/magazine/zip_ammo_9mm = 5, @@ -456,7 +456,7 @@ suit_store = pick(/obj/item/gun/energy/e_gun, /obj/item/gun/energy/e_gun/smg, /obj/item/gun/energy/e_gun/iot) for(var/i = 1 to 3) if(prob(75)) - backpack_contents += pick_weight(list( + backpack_contents += pickweight(list( /obj/item/restraints/handcuffs = 8, /obj/item/assembly/flash/handheld = 5, /obj/item/storage/box/evidence = 6, diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index e90d00a38a42..f6dff0f23bb8 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -479,7 +479,7 @@ return //we never mate when not alone, so just abort early if(alone && partner && children < 3) - var/childspawn = pick_weight(childtype) + var/childspawn = pickweight(childtype) var/turf/target = get_turf(loc) if(target) return new childspawn(target) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index e8d5f5c508c6..bfad583d057c 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -77,7 +77,7 @@ if(prob(probability)) zone = check_zone(zone) else - zone = pick_weight(list(BODY_ZONE_HEAD = 1, BODY_ZONE_CHEST = 1, BODY_ZONE_L_ARM = 4, BODY_ZONE_R_ARM = 4, BODY_ZONE_L_LEG = 4, BODY_ZONE_R_LEG = 4)) + zone = pickweight(list(BODY_ZONE_HEAD = 1, BODY_ZONE_CHEST = 1, BODY_ZONE_L_ARM = 4, BODY_ZONE_R_ARM = 4, BODY_ZONE_L_LEG = 4, BODY_ZONE_R_LEG = 4)) return zone ///Would this zone be above the neck diff --git a/code/modules/mob_spawner/hivebot.dm b/code/modules/mob_spawner/hivebot.dm index 2b36075d2225..630ed6f6f3c7 100644 --- a/code/modules/mob_spawner/hivebot.dm +++ b/code/modules/mob_spawner/hivebot.dm @@ -42,7 +42,7 @@ smoke.set_up(2, loc) smoke.start() new /obj/effect/particle_effect/sparks(loc) - new /obj/effect/spawner/random/waste/hivebot/beacon(loc) + new /obj/effect/spawner/lootdrop/waste/hivebot/beacon(loc) /obj/effect/light_emitter/hivespawner set_luminosity = 4 diff --git a/code/modules/mob_spawner/spawner_componet.dm b/code/modules/mob_spawner/spawner_componet.dm index 637423f0b1e0..8a904a5504c4 100644 --- a/code/modules/mob_spawner/spawner_componet.dm +++ b/code/modules/mob_spawner/spawner_componet.dm @@ -114,7 +114,7 @@ spot = pick(peel) else spot = pick(circleviewturfs(origin, spawn_distance_max)) - var/chosen_mob_type = pick_weight(mob_types) + var/chosen_mob_type = pickweight(mob_types) var/mob/living/simple_animal/L = new chosen_mob_type(spot) L.flags_1 |= (P.flags_1 & ADMIN_SPAWNED_1) spawned_mobs += L diff --git a/code/modules/overmap/objects/dynamic_datum.dm b/code/modules/overmap/objects/dynamic_datum.dm index ad7d5007ca6d..1ca28df922aa 100644 --- a/code/modules/overmap/objects/dynamic_datum.dm +++ b/code/modules/overmap/objects/dynamic_datum.dm @@ -128,7 +128,7 @@ probabilities = list() for(var/datum/planet_type/planet_type as anything in subtypesof(/datum/planet_type)) probabilities[initial(planet_type.planet)] = initial(planet_type.weight) - planet = SSmapping.planet_types[force_encounter ? force_encounter : pick_weight_allow_zero(probabilities)] + planet = SSmapping.planet_types[force_encounter ? force_encounter : pickweightAllowZero(probabilities)] if(planet.planet !=DYNAMIC_WORLD_ASTEROID && planet.planet != DYNAMIC_WORLD_SPACERUIN) //these aren't real planets @@ -192,7 +192,7 @@ log_shuttle("[src] [REF(src)] LEVEL_INIT") // use the ruin type in template if it exists, or pick from ruin list if IT exists; otherwise null - var/selected_ruin = template || (ruin_type ? pick_weight_allow_zero(SSmapping.ruin_types_probabilities[ruin_type]) : null) + var/selected_ruin = template || (ruin_type ? pickweightAllowZero(SSmapping.ruin_types_probabilities[ruin_type]) : null) var/list/dynamic_encounter_values = SSovermap.spawn_dynamic_encounter(src, selected_ruin) if(!length(dynamic_encounter_values)) return FALSE diff --git a/code/modules/overmap/objects/event_datum.dm b/code/modules/overmap/objects/event_datum.dm index 19604ce53375..9381e8cae6d5 100644 --- a/code/modules/overmap/objects/event_datum.dm +++ b/code/modules/overmap/objects/event_datum.dm @@ -323,7 +323,7 @@ /datum/overmap/event/anomaly/affect_ship(datum/overmap/ship/controlled/S) var/area/source_area = pick(S.shuttle_port.shuttle_areas) var/source_object = pick(source_area.contents) - new /obj/effect/spawner/random/anomaly/storm(get_turf(source_object)) + new /obj/effect/spawner/lootdrop/anomaly/storm(get_turf(source_object)) for(var/mob/M as anything in GLOB.player_list) if(S.shuttle_port.is_in_shuttle_bounds(M)) M.playsound_local(S.shuttle_port, 'sound/effects/bamf.ogg', 100) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 35adab3cd4a3..b6fe4370d9c5 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1517,9 +1517,9 @@ var/turf/open/floor/F = T playsound(T, 'sound/effects/bubbles.ogg', 50) F.PlaceOnTop(/turf/open/floor/grass, flags = CHANGETURF_INHERIT_AIR) - new /obj/effect/spawner/random/flower(T) + new /obj/effect/spawner/lootdrop/flower(T) if(prob(75)) - new /obj/effect/spawner/random/flora(T) + new /obj/effect/spawner/lootdrop/flora(T) ..() /datum/reagent/genesis/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index 2cc0134cf8f6..c33b2c4558d3 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -199,7 +199,7 @@ id = "rngplant" build_type = BIOGENERATOR materials = list(/datum/material/biomass= 2000) - build_path = /obj/effect/spawner/random/food_or_drink/seed + build_path = /obj/effect/spawner/lootdrop/seeded category = list("initial","LIFESEED_2.0") /datum/design/genesis diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 62cd6f6bf8ef..64e5a0921b2b 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -200,7 +200,7 @@ use_power(750) if(dotype != FAIL) var/list/nodes = techweb_item_boost_check(process) - var/picked = pick_weight(nodes) //This should work. + var/picked = pickweight(nodes) //This should work. if(linked_console) linked_console.stored_research.boost_with_path(SSresearch.techweb_node_by_id(picked), process.type) updateUsrDialog() @@ -292,7 +292,7 @@ else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) var/savedName = "[exp_on]" ejectItem(TRUE) - var/newPath = text2path(pick_weight(valid_items)) + var/newPath = text2path(pickweight(valid_items)) loaded_item = new newPath(src) visible_message("[src] malfunctions, transforming [savedName] into [loaded_item]!") investigate_log("Experimentor has transformed [savedName] into [loaded_item]", INVESTIGATE_EXPERIMENTOR) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 5b6e6239f6a7..1a5ad3d0d35f 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -5,9 +5,9 @@ //NORTH default dir /obj/docking_port - invisibility = INVISIBILITY_OBSERVER - icon = 'icons/effects/mapping/docking_ports.dmi' - icon_state = "static" + invisibility = INVISIBILITY_ABSTRACT + icon = 'icons/obj/device.dmi' + icon_state = "pinonfar" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | LANDING_PROOF | HYPERSPACE_PROOF anchored = TRUE @@ -272,7 +272,7 @@ /obj/docking_port/mobile name = "shuttle" - icon_state = "mobile" + icon_state = "pinonclose" var/area_type = SHUTTLE_DEFAULT_SHUTTLE_AREA_TYPE diff --git a/code/modules/vending/cola.dm b/code/modules/vending/cola.dm index 8592b02f2dae..a3fa70ce6209 100644 --- a/code/modules/vending/cola.dm +++ b/code/modules/vending/cola.dm @@ -31,6 +31,17 @@ machine_name = "RobustMore Softdrinks" icon_state = "refill_cola" +/obj/machinery/vending/cola/random + name = "\improper Random Drinkies" + icon_state = "random_cola" + desc = "Uh oh!" + +/obj/machinery/vending/cola/random/Initialize() + ..() + var/T = pick(subtypesof(/obj/machinery/vending/cola) - /obj/machinery/vending/cola/random) + new T(loc) + return INITIALIZE_HINT_QDEL + /obj/machinery/vending/cola/blue icon_state = "Cola_Machine" light_mask = "cola-light-mask" diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm index 7d5e13a5e5c0..cb9b6b1b9d95 100644 --- a/code/modules/vending/snack.dm +++ b/code/modules/vending/snack.dm @@ -26,6 +26,17 @@ /obj/item/vending_refill/snack machine_name = "RobustMore DrinkFoods LLC" +/obj/machinery/vending/snack/random + name = "\improper Random Snackies" + icon_state = "random_snack" + desc = "Uh oh!" + +/obj/machinery/vending/snack/random/Initialize() + ..() + var/T = pick(subtypesof(/obj/machinery/vending/snack) - /obj/machinery/vending/snack/random) + new T(loc) + return INITIALIZE_HINT_QDEL + /obj/machinery/vending/snack/blue icon_state = "snackblue" diff --git a/config/game_options.txt b/config/game_options.txt index 005649a1480c..135123b845ad 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -593,8 +593,3 @@ BLUESPACE_JUMP_WAIT 12000 ## If admins are allowed to use the authentication server as a regular server for testing AUTH_ADMIN_TESTING - -# A config that skews with the random spawners weights -# If the value is lower than 1, it'll tend to even out the odds -# If higher than 1, it'll lean toward common spawns even more. -RANDOM_LOOT_WEIGHT_MODIFIER 1 diff --git a/html/changelogs/archive/2019-03.yml b/html/changelogs/archive/2019-03.yml index af4cd2063ffc..b5fd83b8ae4c 100644 --- a/html/changelogs/archive/2019-03.yml +++ b/html/changelogs/archive/2019-03.yml @@ -430,7 +430,7 @@ - bugfix: Rolling a 17 on the d20 of fate no longer gives you an empty box. Basilman: - bugfix: fixed runtime from selectin missing bodypart due to ran_zone - - code_imp: changed how ran_zone selects a zone from a switch to pick_weight + - code_imp: changed how ran_zone selects a zone from a switch to pickweight Kierany9: - bugfix: Added a 15 second grace period after death to prevent people from avoiding a hivemind host's Reclaim by succumbing. diff --git a/icons/effects/landmarks_static.dmi b/icons/effects/landmarks_static.dmi new file mode 100644 index 0000000000000000000000000000000000000000..05301f14a8313341677a74718c2b6d9df943f61d GIT binary patch literal 19814 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%0Dt$x8%$wY} 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 diff --git a/icons/effects/mapping/landmarks_static.dmi b/icons/effects/mapping/landmarks_static.dmi deleted file mode 100644 index 3e51e3f9a6e504f98bf87b4fb1a3121726ec3076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19106 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%0A2Q#SI`&O6%YK&I2G>edD&j9WO0jL^+-t%=KL(#8 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 diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi new file mode 100644 index 0000000000000000000000000000000000000000..50e88be487b0285a932f8ec654a41fae7f03091e GIT binary patch literal 16864 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 SaRO%m00005!eR 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 D;g-Jl literal 21845 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 F{|AceN%Q~! literal 76435 zcmcG#Wl&sE(>02FV6fos?!nz%f(7@W!QI{6U4y&31b2r4g1cLAnM?9K?^|{6t@{3b zRWmhb_nfn5_L=Ur*6!{JS5lDtgn)|x1_t&?T1rd>3=D$!?-LH@!_pZ(hyO8{@=(=u z5;Ju)cCfH>vatOD2IiKPoi_fXkQpOndGu?ZOQx#)oLED;{Nhw;bgst zRM>F%kM6w;3)X&K-N(k1m30SHhh&ZVeNq+rpO&4+j(|V*M#9QPyOrO>r2>-8+%ySb zL}a7~lc0ZgxX2$XD;~j|YQF@JQA2&B5FEY0?*Rzx3`7LxWoBt2+Bz9^L8h)7A=^$E zA!EH^tW79w%1!kL+Q|349Ze`-y%zq+_A@5wxe=32=gGsX(AIW2?Y+PUN+ER6k&^s8 zSscNK%fKVwrbi4pLoz0bY$a7DC`UJZoK;^lTlAE$=F`&k5ucTbw!{VAmd?VrSCT(RzfdTo@I#o7%q~s9JA9- z7eCL-AEL7PiBwf$?#MG>bGhJC^u`rU<)}(u7JcNtMW2PI*8(p3+H3jI+Z*`_KAu!3 zQo(X7{Js>k67<$+z2VITJ=LWTQ5>ea(7^PjNE8=^KSSXgTE`2mnP;DD0%=l$g)TU1 zkIi>U5oO8KyrCoL(%%B7ju}yYQNVvqY`qSFHT)A`V*yAG$i=5$<{Ei7%@5p6@yd>CWdjg@P-b%rQfR?nB?SxBSLh>KqjHFouwT)hO&L1B2C9{pmgZhO$%)IaHw0YUm4iE=IFW5IxdQ~61Y z39Gtgon^yk>4-OhDlV2hAI?0N(xpdoYD0uX{?r8$2l$ajz}@%~x8?;PKIhJ;7tpC!62k@jeXNMp`m{bhuQ@q(n7(krt<;6b4W;+@c%D34OoI4pPx~Z& zMMHf>P1x&JL6W(DOwPJp`Oyi15-*2L>MyQYPZ-Dg4gQbQX>4aN>B}0`?|*s)8hzi5 znn1|U(NXIy%EOz!yar7m#ouas=S$4#{1%UQe(rBAWT7zkKi7PP{CfLKCNpfTncl~_ zgY0q*H?yb`PPY@nA5k&pS&L`MS`-!&9h6*3OwDQ#+O*p~VS zJKrTu@V+gq@?GKcCVgjF^9{bt+}oS481-Ns)`C0(QBpHkeZw-h$sNrUk^*Fb6wtLhrGAnU3%F=bmu(jiJ69PV{KQ7wCIJ{@y#uW zW*sL_w|(Z#P}h>a*R6e+QyOGMH|ip)4pCm(4(^8VYNN**fafUptMT=|Ah;YWyClZC&$t?(6AS##FX48VN zDA?7`uZ<2kS8R4DOk^LAu<(;ns#}b?KR3KZ%NUcc%`78>wo^{eHDklNMbEtNph7a=&Zc&Vu4+-a{eRmDD#eJ0R|1 zeRDd#5Wev>g0}zXytlsGk_3EyCUa1~{}1Yl%LrZYmq0;9veD^HUq&pHNmnFToh#jM zE_&68tVU6M*gjn8jdgPWQ? zR%3*{-EuP#odgI=S^k+qmnQn$0qO47DU>skrc*NX#ShYEE_5*Sv?wYp{`ne%Y>N*b zxpAxCz=;fqJ<|WYoQV8$&*K#&sF&A?F!)Y(y^CX03%w`RJ7bLf=J+c}r^IAWh%gFO zo(x+-H%O>L_`GpD7HkxY7=;XHR5hv>kE{_lEV|#dck;s&ml_{sMkDcWrYCDpjQ_-r z3BmuhgY3@qsEdPB+xdn&`YaC~kkAVjr#WZ`=3GB(FB*&`{fpHXi2W8ZK3w&|5!Lwc3s3SRgK>9N02`Ku*_Awo4 z4HTT0v|q~krqtxtvzP>Y2b*^-E=Z@(s+5va*o3K|JTWgFHrAF(2;!I}d-95$v z6vLKFO2pr_nkGSL=0L!Ba92y&ms|LDi$DKPEMNemktX3o&eoQ(e5rZ+i8Xrb(pNx4 zqf#^elpV>yCWK9FBu1VrQ$oP`t?>Xv2z2I~wEe!wFdKcy=$<3@B2!_Ld6vhgeUT|P zBA$wCTIT=~ch5$tcoPmXK`;kr;U?5}VR%c4M>ZFBw~Jg}y6zp7-@v**veR8A@)cD`Yh7Bp-+bQCQF&iki>h}!j%WFQ z&93*-kE^AG(D!aery{T_SfeFW8KT#Q@E${A0+PB&>&#hqHBa?_^h-%aPxB+GB9j)n z@MolN;II%g<$jJ@5_}HCLVC;aPf2CiF3e3k^n3K{Z0u@gSeE9d3|;FjGX_pN{^E!{4U)6sN+@#F<7UCocFG0% z2258;f^G&7tXT(P3bXzt*a(Djli+(lY}guT@Eips7=he_#=(u$%0wJ`kHa!Cr&`X*n7f5v|K zK->uh3L5Y;E$AG#of}5TXu>$0bF+uJO_?$H@0>jAr z-zM&RJm&8Gj|OW)OczCKaEA{zTYG^pb@7ZMTWn{X;t@E|+}v2|KJV{`Kfzd{<1dZV zVzEZXudz2?m07gt)6C5^$mGP3Kp&J~*JD8r8V<_D=y+p$BQtEdY1Hg3 z*!-T8$|y47IDcteazpR(k~teGPhyCPK`dkN>7|mCyz34!CUcqMJLL5ACa4pGnDT=d z@GaT-*?NeaGNah>-5zUSR>O^&eT#Piz&iX7GCV#t&gT66vd8wZbd#2FP7bVOPWP)? z_cE0i7$2&+Y3^6Y?iAwpJ56vX_^MDx%6;^6@uf`u#GnebJI<$@dT6LDD){R- zmnP0-X&jcV&{-GeW2JWH|OLJ8KgMJy-( z^O?c`C>n*l`VcP4V2EZvBxHoYCy`%L2Qgyj0kj+>5dXsftTGr8ak!uUvwK5HdWd^8q7q7W zOkexu104e`N{GDYM3EaC@m?%T)bOlsZ~xQ?TE2eiyp23{KD9sPu0?4!^j>BQ1ice2 zK^yz@`Rr7aYS71xxPPUMzO%!+^=Qq#dzbPtT7?}5<;G*E4DCo;?tiO%ki0>k7fAn+ z&wLqrKW$stFeCEQ!Y5=YjBI6!mT_*Hqo!r!(Cs|eCp+7p4=65|zW-^b&|+h+KM0nd zm{0B+JZ;SmX^L}j_!SQeNe9L1@299AMPSmw2xw*+3bB90GU2T1&cWS>hvEWV`2>H^ zO}(WcFL(X<0sDhl;m6MCvb@1tjP~h+(7Gt3*pP0V;6! zoZ9hcCLp;MKct6lyQ=JS+mc4@^CSTbm)fPsz8Gyfywkc}npjw$x6&V7QwpZ$gY?t0 z=4$w#D(^YP1EoDqLzDlc02=oDp|phL=Ek>b8Pom*B8H~CqZsOewg5Gd*R!f*4KjE> zt^LD%g1P=CjrP&rAN)@IkV4pQFS*{#D+uhW zB?#HW%-Ho~*Sa2RLA_+=c0br~ea1%#| zkbj2ozeDDXJyR^XeD`V5?*B4?J|F%U1em`O0U*cQbH@4)83e=sizg`IdSrw+ zR6F%`w71Il7sTQkG#p%A*`A-7!ftUpyPZsDvx4ncG>yLT0ry1Q)IuTfVJLI2jv|ch zNqKNI0zzJC+abz97(^2Lw|BSFPv33HG~qFc417U2j$uG9qH{qA1T8;5s-`xRn{LP* z$Sr|D(xMUOL0CW1qQ{RHyPM-hYLN(}uU=r(A`(M+{dSU8dSNy52Mba9a zrDU2BN`j1t?m=H{^xoE|)_C;R%%tCcJo)=+7Y`VraKsQhu? zI_oXRzoH|h=8=81M+)rap=O2o>f1&g!nvSa3~ty&*5LG%(6gagPsbOti=1L1Z7)TY zAe|>zPEX|KS`5VEw;D=m)Or=ZM7}TvYjH>*2+a)C10sETx*0bD{?Zad0{Y6|u&w$& zBAq}w+!dWSV-bOcp&XSc=IXf>^&*98Y|Q?kcS%17jN%*IidRhz1>7?U^d6*6c&%v8 zybr>z3bNtXL7U{wnc2Fz@*7{`NawqIv1{J%AVTW%0VN_38-48q@0otgyr*x6L&xUg#Nfh0?ciZRR1kVJ8QlC62f@9l&{Fx0K48>*|2zeR-G~UY zgG*k>>(P*&qipydjTogKC+E_K!6VVAkr3r>RFda(Y|(T;=2})yR7`~ZD8I7uzT~yX zsCExo;Qb5NNDufwV>0b~K_f(|d}uX@YyS`I&p%j!SOeVd++Y6Y04RT1KE^|069`RT z`s207~bHFC=!oYO5y(C*+T&1?cq6CbtM60( z5I>K880C-HRrW{BC6nJ|FP2Be%Lrt1I7KEiZ9hN7lr7YB?n2i;-sZBK(SD(>ee#eP ze61>BK8vR&InEwdat>nms|HxU!eWBsKvliL4Fz{9G;O-;T z6Q?pO=b9VPGdPIaWYx?@L*6DqzNL-l*1lE(4yol637=jv=f_2ZO}@Wq-^O>Snx=@< zgHWNvo)i&nQ2-JAn>|i};LxtO3rfOok6>|3b_lGPG+wBeT`!W&P3WxbA3px+!zXFT zUr<(|Aw@N+zQ(K(0MvrX#bEFmaAwy1FtCaXDQZVxr z^O1CeJ2hV#5y6$(Aq)8olEx0nnpJy7uE4Z2KZe}0deQexq`gZA)F_%c-c#Wp1G$$> zQPXp4P$6>vU|8wXXlTfop3|}4G>pn)5lS+HSbQ{+!n4vhyGHhxv-n?B-ldg5uFd9q zB6bX3r#=jbVDf^$j$fqo;rK)C&Ah=0DClIBkN38efkc&k;EPD`^`G`8rU&d3GOWOhm(*XNAcBFaFZU-VVz&s2Pb@r{% z53X+{XHeE5fa7CS`LP{|r5378ZeI8IV~Er;JU!Q;g8nCVFallr=q+u&(AsuDqVD`% z3DhW43=dL^678j2Xqot5i-`$-9U=_v>7UUbXK)e7|ISf_aTXaI!}~YK>`tjJ^M6uP zh5l90BN2{0KLy{2^qajkP+9r@{-7bbk^oO*ZE%R>X-q_Nhm9nefMlg>@cUf;QPFaD z&ea|`@M}W_EPoLw;j?fC=r9@qzhYb*ajAI22ox}JscS=on4Df`NFPgPVf_o0AmR}_ z>;-tt4`R~yr};eb%|D-FfK~zkRR`N_4gT$MI(M$8GXwkab*_V8uN?Hk@eYOwZvbl1 z77UwPtCpB~7l)eghIHIYn-_n5WMLSl5doNR0YBubQIcGT`4f2;z-&|Kua!c$#DGfb`@8)fWVeGe0)``J(6VfXM>VeavI z#ci^Sb<&Cze}gpn?JuVTOsZZ3OwvEV)@(s5Y(1evbp?-i4WxPay%BlW>9!WQ{ui-7Fc+NG2Ch+k z^&#!Ow}z;x>Wzd5Q1`j_$s;5*`y9nWaESxwGQdAynVJ6NGINS0C=@;-ZnvLj`V-jN ze2TT8HSn8&@hZ_=Rt`#K(0?KK+!FN1EAK59#higz8>!oqK(ac=MDRs4V{#ONgsC=~ z)Z_^JI_68a4ey67ma6O9E%@JT<_NF4>8X7)^sk5(0u0COs3=JHfKC!g*s&2@vu-6n zzWle?PpWe>H{feFknwuwkvNP*2Pb_$u*tKdUi`fB7W9ax-|aC`@ec7`guUqXua5(s zAYzudoYLmWxf`s0UgI3J`77-f*H5_0y)YTy+k##sjEjx(W)4nqY+icSGhUIBn?IKP zUo-dtw zr0=_M%SH%Gz7D@%h?vVNfR*uB8v^zvGmG_!g1sa)l*opcm*m?&JpJ4V+RA%l3vBv8 z;WtAY=TZi!dPC5k!}K+mM$l}pkV!un0uH{7oH&C1fam4A@`f*W+=SmhMeu>Ff{s8J z#xxyco>iPRa!}?_+{A~z_#r1LYY_h_V<>*YsM&*<3=%T_6Qol6Uy!7I??zp;MKxUA z#5an#XJVAo4h*EA|2|qV`z{`2VPy{OKiH0fgZrWIg#QbY?f*cMo=dCXEfUeL8p@yu zfh%$cFu$|&u}nogJi3oCam*&{2>6E?qF`CHn-&(F_+sNsy~NsZtU9&OCfGun#~%^Q z+)UCfp8ttOJO&xK8MSCQ)bioTC`+gWW)m?YxJD7gD-e=>QDEi~!(%0G!Y^bq&;C1* z!XdE#6C=p~hrGrAKa=sl76}aaJAZw_^4J6Rfe%z0nT40oxD`_f)2UUwU(hf9)t$q_ z-{_=xEEKf#XIknW{?aq%JDnzm8Pz%Vp~$-2in{}Qv(`fYHX1+bd{}Yt*Ai+wKIa}W zOQNirdaLL+Yi*X6=s-Q9?M@$g{#M(q-xG%p=13jTP{rgS7Gaa;Q9t26fNk0UvlV$f zKIZMIZaRB1#kM#lG{n)j)DB205^T6GFvQW=a|x0mP;=%4h^JRb$9Pamkf$i5m5#09 z0coHDYv8lWml+Pl*Ct?Zb(g!?}qJVNw{^>plS1mC|w8!T$qN29dTtU8N#gTi&9sS z;R~j;^EWM=SDCIki#bGvOK7OoPdlHvLDIFbHv2+!`0&`b9V+Ri{iHjAa?vC3)S=*I zB%mQ!G0}v8f*Nl8){yu$p`odbsgOqWgLEK+(gUv7mYNHqD|OmbVEgKhu1}{t_meLX z72mcUu`&*IU&g5}{WJyNsWGE_bZ@a4u(BuLFn$8vJq zI1@<6kiF64db~_l{j=sMz^>rH;Y&ly9*tQ1_ZcNS*0mf_^zcY?{Rh*aBdnvOKu^z@ ztc>4rXt;X1fRfX4*4U97r^($4v(P-9v6Y?X!ViM#Q)e^_yl$W8P`iaLMoUG6l2R)V z?r-ejoqMQB7+9L5LKhM2gBmhjIL=b^_Qz3mqWAh<)2f>Bhac_nXfRUb=lHU6>Y>;# z#M@Hp9AS!KdP?R4^paESlWXtF+}C7y%wr7Fh);6nSrP;>&eEiz? z;JQ9)nKr-878V*A8L3Wce<@(oL%#L5X-IVqhT zwT8T%NAd8vF(;#Qd;Fo#Cfm0w?Mu}r%IDCa=whEDS zJA7{@PwpByGNKe`qdGfVhXPfS+*}r;AbN(xgUm^mbkOc0nl1<%HJAx%eVp*S(T*4` zH3>HYP>%Bn>nakH0Klg!X znk8OkXkgTB#}1w$`+e`7yJWL3Xk6^X;2~KDJf%7dan=wX;P`B44i1hQ;Pa8f!N8@d zvr}6ue=z9tG@4-P0n5B1)OMg?6hQ+18`#powK>%_us^*Hf&z-Td*Pa8-rT_ zIe3NcofKN%OgE5(44!tKQmyFYi{{4;vb{NfI#n`qsg|FbWut}8JERX8?ik53_^acq zImb%@C3os%vUg1r{%jKu*#jVwa@Xdzdqx2WRMR~vQpmrcMtw-b*GlJ~^d7rxP$tv1 zeG$&^e?JaAq{nTQQG0B1A9b&^9u%=vXW9q6Fxl~S+RV!@Y$K^HDq8*I>+$s{v@5Y+ z@30kAfXYvWGfG?n|CJ!8anTssTtW5oWDcF2udLaDOlcRS?^7aordmZFH2 zLU!zR2pf;*CL$)DCt2s?xfgoFOD`(9+pFl4gL5Jdik7+HTo9JY93)*u^aD%qRfb+B z+P?eeAqHG8b5`LaFO3Ovl$2r$`MLxpGcj+7QX0z`Xwe?hd^{-*>~UMi`t4t;I#6lp z*0*QEi!Vs|dIH~wFNwus6{@2*U@(;)hMHPVe<;$~w|lPeFwr_46)T+%@o>b}kjvzB zL64PMFa7qkAXP8sUMJDTcv-QiGv>BAz@yin83Tt9Bi>djuzAaewIJ6S|IAb}GLvB1 zeAKDv6rEiWnx^D73qWA7eG6>=eZFw+9eSH;U07huh8dK~Ev$uZx#j?iPIn4FTw_dX zycQ)rM`kB){&FChPHpk&^0y0>bNec=Nt*{<_mcVghH?K9>sM9g^d7bDukM-}G?^vU z#jM(F_|=@>$w~=^6$TA26y6_Fd?3c}ND3XHxHYZYV={4X(^d_Yl8<^eTq-dc(Lg;a zwc+Qu1MjU?A;+GgeutSwd9aD@vt!c<&$kEY=QL(6F}`l4`O!rU(Vug57V8XJ;^&NA zMZaa8nnJ`x*mkZ<2$kA3ymO&mhUS#wy0{%_spxdIq@UEQ%75glt3P#L+?|tGqRl~4 z@H+X9O5BI(^4BnGOBK|mwki4IeY$J8^>p1A4@M?)G;bAD;9xi^NEHP0`Lb@6x>+on zpkHBAn)E%Jmi&ORadDjC@i1=hLDXc2RGHgsr=U1kp8Ul7$)#A6?rTYU6|eBU_iBH) zCKG`B+Tm#ZQ;)%~oljHedc&Tb9o)*~S;S5acf6_?%dDu^0fc88rNf1%X(L`S5p$8- z=M0=*b9|E>d6w)78nY7dJAxAGSw!-jV6dna;r21L)2UZ_yXipW5jP0vYz+BI^2|hH z>$NZ7lNVTye{b-GpVH%znkiOe)rn6U`5+`*`18J^Ymb-|r&Grn)u=j3gUa65wJm&B zmZoW1fr)d>GeWb|5p9cDHMrqE7VOX8WIF}&3p>0C%gRi9W{`bh~W5kTEQE(!>($54!n*w3!KcZ)tE0V}P3~XUH=eHMW7R#!K z>5r$mb+|CT+wSr@=hS5D{PapKZ668xDt7yfE(U-NsXpMz7KNIV3r}DUGTEQ_N_2#r z^G21uY#M!(omG(bbZkf}zGRFlxc#UwwToHSkGku&P0S19g7)<=n0okp8LcjEV-t2q z9Fxw9r^zi!wwgfu ztpUV-%)((Tpmgt>c>nb)qYRL@vv|;1H!wmx*YSGs!P?D!mf-loV0=Ee{o>m9rywtf z5yU`XWSZ^tXp6}tu*OQQsApM&+vi5ME+)_>KL%3cWM2&)HBl zMY~Zsv-dglgR{Rowkrt^*06{jkfRv{rhF$VSXwYA)mn+#4YFd`f6@b z_lP273SryiVY#NrgCgyv_&rwZTUA1W16KGj`;OgxyouEpqzWih$YgEmCLzua+A3W` z^$21mVmq}U__(Z=fFfF}8Ww9V)Ef4z@9sXZP9*UrJd^6raOfn>7SM)I0rl12f7OMI zIIx|cBiMKG+vt!t1`ZYE?=rk3!GW(?5zEBf;yzwPQH@>_gza(0lIz^~cU}icARv}v zZ^;w1ALkW}H5an-A<~ZP@cXj+-84p^plj7wUFPj_bqR z*t$eo6HC{DG2mbIqd-r9j;)q|r{8QdYYT0Vg)q;A6Gyy=OP_4H`5;Xr-ktsaROZ;C zG6s(vY86f`!w@n~+aZX~3!x2zDO(otc|#}AI=pVWZs8DFMY(D1lCLl~9Od!%_<$q| zZ*@Jz4}7Ykbzp8~Ek`TXkvd=w4jt`s1&wHGcNj~cH*^fr ze#yh67G)69kVQU>Y%hjZRr8jeR}E_cpWGxCX=e0oe?cB^yDHQxIeivTizk!QPP)Ng z9_~J7w%p}+`N7m`cE#sgKE97UyfdrdA{e}mrT3gi2Nl$t*L6)yJ11~Dumcx>BFHXV@MqQr}eGv%K7# z|KfiD|A%wnTN630e;)R#9{pd3m#=)lTc84OnWXf-W~hrqfj$9LI#IqP9v-#alJ zfl?$XFkB4cGk|!FB6N3AD9_s1X1#Tiux9hv#eM8Ip}yZCG~g3+2lK)!-_lrhcCvI?0Q83V|Z@SQOqG_5sf=_sUL7-Uv zBrS`Z`l_J+_)n4q**1FN?A0*i^M!X$agbi=DXy48aJTyv$>@^~ew)NCv{={_jx(b- z@~hd{A!BE9uQ{^(DS4&R3XSK=oDCHS1t7Ck0y*`IIV)pc0a($&2fqV=IIFd!3SFIr z=`fh{lUZ}B4s7AM4PC^&jMh$opyzCDg! zcgfqxO>jt0cKDWr|6;6ep_6-QFS~FU*K$v`8Gto-^!uY;!K@-Zdv_RA5B-3qpBH$A z##Q{ha&6#&rCk@mKx~m_>+Z*~6i!eV5nre_Bf9OT#aAgR%BG7`;@TvXGhyC&yv|6> z$I2iucZ-5aLQgDFsS8yIp7c`<_|5-@$Y$F(x02e8_l@k3p>q>d5}YdOpE(V4Pvtn8T@Q`IGab5? zX7&L1k~^mcFD1Qw@usOTdN{5d$0Nk(*bOear>-d z3y;TZru9|l`=%nVx19@JiYAGpyX+)~nl@cRs^RNHs)i0zeZdkc?WKg-X6 zP{J7RKSyrBU3#wLrIgI9O18-HQU$9VD{%u-P{OS0(iya+=X&ywwng8%Zh*znyCtz8 zH96@k4?ZmzWxe!AU8SirlRa0c?ShGV%!sn?!p3g`m_ja(zqxs8(J6>}z zNV1}U8dY~$C_i8tHfqnWI!hq|gXD@r!Rw@b_;#s;KC|doYM|qf29|00THDHs#+`f3 z!@hB+)C$ZHg0&I&#SxSba*KkGW#JJ;4|b4VtO3^Z+s_9@INQ93Ao`#RHiABO-DA#L zj^Q@iLX`|?h1;2iZ^DzVvxXG>RsHfE->!W*Lm3E!>K`Y2bWWKsw=CoVXN6jzKVm;pza9f#^0C1GPyL zJQq&g;sKolm8@?AUgn|P)`Mzuj##OktKM-<`rRPWW|D0kkjX8gVF`m9NmknSxg6ovAs%CbJnp;I=bp#?cUL|W3VqS$gBkB> zY9d?ywcE$A(cdoQAk3JXd;HpScVMZaqIK;+j^7!y`{>=Lxlm?d$?0idRg$D$x4#$J zVZUiQK{7RpY+3)0K--NVC(cVv4*T=3UGr&J32it0^QWcP?{s@lvr;u) zUpIZd-kGJu$?qQSokV`ai_l;h{~}WeLlz%CIy7W>C5(Hh9P{3J-|z>m?{n}dRh7bW9wF{ilb{OK8owblLvudEE`NMt&1BERe+gH>tfz)%dx++(7u4juUblshQUTTEHrX$VvXn> zH$5aZzKi2B=1dTA5&$gYUC$oac55kLKHw_*KKy_F4A{6}T@E73s`vThAf^%#S*Keoq2}zHBjs7Fd#ZHP7 zy51$?$)M+P`%V>Gd}@dNY2RTV!lGkQ2SGf4q;G#8V`5YFA( zcrWrrXvpNfeR3LdgHn1Zg1|9glozg{U~&Sr48Es3Lw?dw-h=r3f(s?9fg5&|o&T77 zJ2m%4Jb7qoxePgK>>$vdZ3%6n{sk)m{}{YsSt1SW>AN}`FI?qKD0@nxYGf;8#M@2f zS7>$V05E?U*c+HCu9<8o2veqIXQ>cu0%o}s7lMS&CcE01Ubg@0}zu6xZy|zH5XGUp+KFx0RB}vl#d5Fyl zRy5?4+3pRAdvPoB_Ekk{P{zfb4c&2OT#K%ZoS5I%E0;6^%_EUNm)+>8Ow7)P__OW{FJ`qrmy$BQ~rLs|{Yez9r8jye<{qH}72% z89phf;(cn^0OXrby2`NMpb0pjgJ&Vg;5g2T8mQH9$3N?M*bEmtw*Ur-$mwawzr_cp z)oF7^MFxo?SC>>o+&?IoJUP}|e#2yq=#~7cR#r4137gVd@awTI411%(KnpXUYr_^(poHm5^7M}F6Sm7qS}BE}~@YakIY*uc^sr1BAV>JoL};*fT5 z@+X4h{llkiOV3c{)>YX_OFkYR{#C$pJa_u(qd4fog@5%Kj-)joLRa=i(F;uV_A%?M zs#A`k>Q4iL5zqO#<$(teRqq3B^qjSRFJCdO^_?9v0SV5> zofuch@C03AE>(tjKa$-o=B^M1LtV8JONSkH-I&}$y0Iq@(r%>-F0LFdUCafd(&7Zi zgldcEy}%2eLJqO7$%##FuV3ZDd{f$gAF7mi(xVpv@Jbe%8U8ju<3Q22qo)H~VQG7d zpY*j>n@`>yw}hTMnQp&JmSc+BHxMm&XB2Y-Ib#1NAaoYj);QL;?FgPnmVN$s7jpQ) zr_`@1GOYI8&dLI9Ue7wk&-hvo!{z?G@|CnT<$a0zE+SIB#JxHYv;drIL%clK>v;Wg zzr?5#{EM@WN}cWqc3%cKzeaOOg!yMe;*4Gpw;T{;%n+T;i#if{7Iz8wWVcp;{YW zL8T{RCw4Z48-CTt&rS*{qCCUS0GXDC)75k-obhU2wePNO{#2snK_N zj+?7cK5oBM@#C#=E-!DB`-5Z+EwA&_{Q4>IzTx2d^6g;B(|ph7CXiP{SYzxoXy&uJ zF|C{`pKZh^N==^wr}h_Ig|_#SP({_{H)EF#SBAs=WVnygu55exgmLEW-x5ko`qZe} z_T>qMDGP&Ad#Yu|lrw&k(>DQ3v&wVN!^zFQPKKgNh#j3$39!1>IoN)4i`tq*t4;ln zL<82mm^E6XrC;sLdJg2kIedLYNiyQS&9=y!ZqD<#>QTTfRGoBc5p??=^(^j?WY{p4 z5hmv2R%5M9JLj?~JBEq?$IJN$5*oU)y&6L7g)Ca-kjtg{fq{qeh1ns*{QS<+=O8Ro`x?00dY&|Q zz4^2_=~@CczPaL~DKIqEk(BK!dD3mWFH5efZivuMtgxJQfg_fn5Sj4Z)_!)Jh&ZBN z_W_pF!(xy`H}3UMuU^;RJPIovS{mPv*G`fWd_K>n zC5baBpFrY9*MVZoUOZs{8QOr89V_pf!5*@VW{Fsd2NwH!BIv)(QY=s-V$JQp>MOXL zs$t{7Z@ZydY`wXfE{_+U2O4ktsN_uo_8VyWAhv-dXtYSWHpJ4tA)Tm1l$CRTPLeVU zI&_Rb%2Yv?T5&_hyiN6EVd`q=#P~!9_vfnSimr|eZGX50W*1=CfR+@=cz5j~cC<-6 zu;7C#4}}@Sba8H#Ft5A@xs+if~){_T_a9(LvTqoX-@;`nxrhbyDzH$agB@UqU<^IuH5u>8m)z0Oi~@J?Y`y()7ab z20LZEUg43pWaVfJYE9Vy{t+=5@i@?$qre+_%ki})0ODR*IqY~gEH^tbPeFr}y6e&U z&7y~*7?3WILdO*S+hi{S6S4=fNlese*ZWMH zfG^O&Zcch;k5~tEoHPb_Y^QEdzP-e1D<6P678K zwqcC5`b!j5dk>VvuYusD&nbcLxW5q533f9mhwm?Rkl0oTt4QV7v7kbZYD+G7QyY0MxA*QWUNlXvh*ow_blD zlMc%^ie-`2rO8pBQ)R4ndj$)Qb+uPf*ns~Jg&o*bdonSiYLRZB2VCA z*>ksu&wbg0Zm(`S>RQ+P6^Vu!q~}t@cpQ{&Xk`uf_s;?vdeVUi)b(3)wq-)$uwHFO z)n*;bO{C_dGr|WGzF8a?(ljkPpVRN^hSwQP#AwP1Y}|=fW3~`uvd}$oa_d;!UktuB z&pl;$6a+tW^JB21_%r-bMNDq9$;#wG-VvAgRzNo2=0Zu%!oPF#(4As4J<=nS1Y}W$ zfZ-?!CwTyWB}FVH62>f77a^dCFo@>jLtzKlA5{hJ+m3pt_6v%@OLx~Tz$tv!7zKti zP)EcX=fsSl=Hd}jZMwQ+SxLPjm7LoBf#7f>X0VK*dlRx z`Pk*0m_5NA^2nzLCG!K3hf4Y%@=}w1ePa?oI{%n~o$d|qf94ev33y$wbMf%-M%6TQ z#my$t{7G=EVNzAtO=nP`rl_}25&In+vTNny(1`Rz+U(`hCrLZEDDd?q69~s3h4u$N zv)r-JXi^g#R+U+m=Gf2SQwn{ycH4O%)-yO`oj{#!{PSLM3c3r$lUZhbstycCF)s*; zkT+UOT1UJA!Uk52Xg{FY!S&KTwuaxiZ+KtROQf?$QNc<$xp z*ZA;XTjKie>H_!sf1Aq8`~2tO-MW8W;bB7}`Abpn<8MhNoDM{P)DFw1G*rVE&I$W( zTv$|vgs%rPf%!DyRhbh%it~uMEuNnAUkXV8Ki-yHv%3=`o{5liR%lXGk6tH?76J3zVBHwc1M2#F%0tJ5}IU5?VN9j6eA;``s69(oA<9q+sB z>BAa?Tu$xRUv`*F+o&i zdNO?d9G;S%M*BGh-^%?pJA7K&P(h{7DEGTl~GC8c3#ks7*Fx;vy>x&;O4uAy5}LK>7tI;2}lfsyX+ z?iyz9_&w)2=ehTH@BMGTWdzaqH7YZ=^UZ4w6SU2poc!lAoRG)5t;*7I zOsV^K^MVH{8i9+FUOAc~PF9XEayBX=`2&uqp*7Ao2_z};I7vF3kE0Fi@lVj~#A6tJ z{ECzBBRDErU03flBWvRlisp;SwzRA?Efu+bw9Fr?gI!a(9H5|kgB)2CI^PaJ2;ki< z`-rPHK8kc~`ZhVxe<`AeP7_fYU0BaJ`GB&7Z>&=Us@+34ss&}=pE5wB9Nre#RSaOJga z)`UGO#)(t=&;i!5Tl(kfi_iL;-jB!*C|VFSmDPH&SMLeFQMAYh-nDXxF0V@T?r5Wq zXvwDNcq~;o^UpNx>Js~^Dmtk2C+v&`Jo|f{Sc{rlZl0&PmU5u`vsPqd$i0UECy7FV z0vl6o`pX_u+1+-==8jRQ&6eiXQxVvd0AK~ai=1Al!v4%#n+6^XHCnB)guu@n)OKUa zKn1t#>B7{Ccq{T-i{UWw94*g8Y2nUKMLl0E3DpzgI3@j zzb@~yr=@#BP9BK3lv2mt0I zw#txtKt@b_amvzF&3wp8KB?RR&d5&C2qm-W>G{L#WzjvWvij3X@>spHEL|4WXKM`8 zshPG4!_vSALX=tL=-9SwjBDSeN0jkfDNV<{ZR0mR@0_u5a87-I;a)X|loOJ7(z3(>{qmfXIg zF(5V!AF+$xj(15xNt<|^QWadG#2XpsIv?%3kSnz#;Ns`D4u8}s0m9Jpi zmxAJODf{KvQPaHGir>Z7j1;fDA47dUl|H`)N_cf$x0s8XoIabF{gfwjz z*m-MoN2N~8^;jgCZ6tM#8dC7g$itxkV0Q_?c(R874d4ugV5G^AfRdx+)sU!2~&PXk6v zBy9N@st;I$l@vj>g0pQW%`VK-q*23P4mfC2?Upk&`Uv6Kzjl)h8bM!pd$knh4v1hK zFdxo;67CK@Y|#&KrVs%&rMvN*PlVMD0LnPj5$hI{Zd)@pzHQaadp?ZnUHGhvaz}VE zTy8;W?T`*U&xp(*6qKyXg(W^+`?hNDgNj!~6ba9>^|g(SQbfAOBBwI!fM`>s{wPZn zJRxu>bsRWt+fCLRTqx#HM@IAxFRFrBrzo(qVXM=$VH2#hGT_eH>9#NjH+l@-8=CuG z5oP2heJ#8V%-#*yjXNvdV`F&vLrG}hWOYS>HaST+Kg=p}Qyl{!NeG;gFbA$*JdQ1R zhuii2EF5;@roeT2H`HFLE{c!B6p&b8taN&C5PuTj%(mRW|0rf;?+mZOl^H@Gr214{ zam)k~w|Nu|_jYPeB`n_gyw?KA3@`i2dA7Qo81?z8N^!1H!8CpE!<)_c-`P)+I8&&1 z9H5I2v_r6+^3Ln%-{&lrh{R~o-1cN4yqYIQB#OwFn26KBNDOSc$Yil~RpYEf?M)x3 zXFIxPZ7V@y;uO)&H#s38HhdfdhYH5q)8&g>=%*v2tzL;d>qi;of!q42r7D_>FZTc< z`HO?LU27|8$>}bQH}sp_nCJ>@@|hOg<7yayn5`e$rBf%at>QCTB{TL}MnicsBXTNn z{RhX@HPl>~q3B(F0b*23a|^!Q_{V2k3(uC?^}zPETGS)M=R0afGyTWz&okBe*)`oK zwR@8H`_AVN^49?*<_-FLrM^Trbo+JblpIoy@JN zBV%bK)H9{vttJ>rn{zpp6bQ>8CBL)Os#N?UGQaN`-|cKZJS4#!C8?!(<#~xj{ZFR0 z>ed_U7OhuV8mfW1mEbfvhRVi|)b&OSGYV;8{*O0G+qvsM1-qOFkd#dVgg34OUPYv+ z#Gf+4h4uvN$^7)#0C_>&hf%%!e6H5crsIz*nLWSNzZMiUMUoEcj~p!0i;^O|m4V+=Q2Kz6aEv66tVC+~)+k!nW@|3^T z`~JLvXH6bq=uybks&&48Suy_M1;OE0Ih_Y+8th);i5*`p4D;K%5nm*x&>F96GCI}r z8Nf8JCjk^mMR?a@I#>9-MfTE+JsJs}AAQ-jh0*N3)M-w)NiA(hxN0*W6YOATc312U zyD@n1&jChq-v6O(@JzJsD}1B1ZJ4a&;`e{c;b0@AhrJuJ-1i_YHbE`+5E*i9S}!AC zAg6gQ4629B?7(xi4=KFHrJE@L@`^d)EqNd&$!ob;_ z@~=yDe-TmUJziyj;}R;e(7Swv zAD66Lo~=x;dGx-z%LLbZ2QvPUGTe}4wSKn7`_OJ?jL5$<0)6BmUOg`&>n1kO6>XM(^nGomeE|RbE@s5Oj4`L8!mLCG*^PD; zVG|iec43-LvR4iTJ z)fb;6Na2tQ*v4$wK^_>YCpG704RUZ8wnv)a8;nZpHHt`DcKcR)QESri=vi+)glir0 z(H&G5krCCxt(Q0`R8$dU>M>9<^E0T1X;{EiPcXJi%DkFTNW0O8y+_!z!9$qmCf9Tu zYs#S!EoS|cDZpfk&hll2LrX0GRyZ!D2i)#0QRbYmiIQB80$e#h0U7-8o~W(?d5QD3 zMA%7}4z8~Y4J!zZvZ5m$XmcrxKhTbMO*HCx_#1cV<>&>MiE&-KQ_NNVpXnqh?G!xPQJkqQU~4&S;LE)6<9a9_b-=&^u- zpkM@WO!Y`rk+P=Q0UajBK~}R`qN40Y;2B{dwBDrDb-p$>nu(|Lvu5?I=*c%Oz8TLX z=q&Z>ah!QatezYIgCE}6XBXK`Xgfh=ya(b8gV64moX^a%onB%lXXHeoD2L*cdpWR# z&VK)3n#MGo>>~fIbc+1)SBKQ?LG7vqV<%k-hZHp;G{ChLkjj7A@^wiMH~Q&hYl{-CV^gdhGx(v@ z4BDy@di8#*weD!!{>OxY4jKoZHmiQTZ;&Qn;CD)YlkR5Qa>cNm|+a(F96gYC1s^UG`&UMfFL@HDElqBI7zQH4mJi4jQaB?dfvRj9hoP zCNZ9^M{R3tlk{BKx+wgK$P*yiTtC*tBoP3(t+W0rOhFoe^=lLl1)fM*c^_>3^#J7Z z&EI%XQ6SHGca4Y!h+h93aI{ZadH?cckFK9i+)<3(z|@ntj&m1kg~f#zGMp2R`TB41 z(ic}LnUBV&>&$`D8Usd@m)J{>!QZkr$M}R@vq<9drFCup?0!#XgR`j9RDUn25^dLz z4(Q9rs|*YvI+?MWZQ2ow9_iXet%t?Vp5;&TOb@)>&XCC~F|LkLlo7A?0VKrClkCmp z;fK!lwQK_6X$fS7n~s1znE$+vepllK-Cj3|{mZ$2brq>Of`J=mmhXVEH*9Yx)CK2) zToMI|4!Kn5H&dC5uX5DyMhupppLC$mFk=H|)tLc8jBaL3078?A4l$!Vik_QL1;Yr- zein(y*?7KSa3(USqFL`w7ROekK6GM;D#b&evL1nl%te7eP@-VR`ZHWS(S4E|dADOn zd6FDADoA~qKek7wR8pVjv$=6>C9!HoeOsXGH1&IXH?Ce{4FV$0Mt_i~)T)v?wr2>V?`HEU8 zyMm1bkEWHmueemZ(5}{$sMZwJ0jqGe{qE$_)M97-kM7O2#S>J=FB3gkw(w6^V7qsO zsHnb3AXKk3@PaM3%FnUGjLqYi=)lLk zftRI<6fwU+V^REa>!MdyvAM-;UUZPfhA`}d+AEqG$=ni;&KS_|nUp4@*II90#BJ4!`bW!xDU0yl3$iIlN6HSK% zKvmXSo0y1Ei7!#UYP0gIZ9P7=u_^r#L=GoI45iiHvW69-u0wy{-_~`)Z=_Q8=#?0 z6iSzCV&HQhKtvJ!j9)f1byS+)v7Sr(QN=X%4od1NvPSp0UQlf7H(8L_r&gX}mq_eg zbo~Vxl(`GXkh)Ny+^l`_If*y{?Q_lZk+%4&Q^tDiv>zW?b&nu?^uj|pLPGF*;CJ!3 z6{BtqCCp6pGSY%GH*UH1QS>b>@fq~|3~~~m=LD%?`6(%Ngm%Jj-l(Vy#S<^o>xz^-?=GI5A^uNPa zPXEBg;i}@B4&bPiqwEpN=Od5i#%~hcW9c7CB?)|P3|mb-E&y8Za_NPky>bg)jQXJ! z710+yzs69WUMPE0=@PfTnY(Fu>+4y|KaZ(kDBUXC+6yoN2t5xlu8G3UK5$?870B9M<^V_{kPeI+CG@_2_xel<;L zfS8f*&AhNWqlg$(%5Z*b)O%#OMS+wN7h>DtwG6kMU6tWT1{I!v8{Kj0XdoOKw(mIw-zGFo^ zlA}t0&IH7;#u8}h6(`0dQe}*Z7Z(+^DW_1(B)iy`&XN0=Pc=F*Y6B4#;GUIqj9XO- z=%;zA*P8lu@$*u+OoX=@KM^qWg(Z1E}t#FowHhH^sWW6itN;OAj~*4QV+gt6=Z1)iRtRl1`%F&jC*R z84fNiJ&x1GD7`&ec+Nvf9r)CK*!N(Z7YHHqejgDRg9$b@)57b2_a&%+`-;sYH`5t% zsDFmTVEt1q{VUjy;T2^K>t(`Q(1bpCXH}DNTACq%dpf8GUt}68K={gJf3larK>0le zxaoHFqw0^GF5tKd!Dm95N|yCMyx4Pr zeCgykt<6UMAOg?VaS|uV-TK03-DJq)|8)-rx*bOrOE^4yvKzgfsW6;L|JZ6Zh8oXf z;pj+!B)}hT<%bignX`?G^qy;j0R=rt1}k%wCnOPoEx=%5$sO*r?4QgrlEQvc?PXy6 z&a2D+on88jQM1kar@XZ*6SbM;FRcykF!$5eJ@qioHNoayyKj2I+=VvQsjrJQ?cI7# zcwcll>Gy`P8?n1RY}0`X@4CtwTe=S4uYMdz{&3^@Vfb3wma+sXD!fiqE;Yv4wB=`_ z`ZvP8h5V0DuYCqa|3WO(2qYH@!t^kOT#>VFelBq+`CK(+O=I zwi0*~XLW92OqKZCPz@ZCG4etFCVORVwj;-e@b~G((h>$kc#!b~YY{I;{`OB>)sCia zXA80PouErDGxytTkWmBnfOqQi@mEpQ=ECVMSA$wzdSx0(Lh_T?B0kf2bDd}jk2^pj=YF|&{RIXe_rj`eiySBlOBKB+GJkmYhEpXkm` z?X;91juvuYD6}Zx+`rPT9j$799A223WB0q{Nu4=$JDqa|iH+ zILGgk>J`zYqw%K$24=J6UAX@1=!@4q3eHDnv(%V8DsM)4lTe-wn=*F_at9k%O-3nZ zITmmjx2@hHkko3e%VP)u4tGt1YzHu!9`ns5+O8&Bpk5`}F-d^~H_%OY3eV%39osWV z*YC44nGNtTfsyKD2tT`Wis<^?*(G_v%hX;_l@xzO4OP0=n22ZxICDEcmPP2aH$43To6Ek}R}6>iT9cLV-f@ z3JtPaeV&Dy`$~rClcjb-DzJC&`Bm7^2%f@#yb(@}KJ`J{lrgNJ8KlsXn}Q!+gyH@9 z(>RBpi8D4W(`M&l*Y=PNNea2!yBCGDu31tVb9F4Zm1yD!_7}-+eUSm!aw1J7$q6UM zCek%`#=SPI?})c54rRTeU7pHY3ltMI5w(9Fe(sbyXZy`e3L391@;B6$c=Zo&?V{ht zvKBV9f*S(|>(i4a8n&LZYoJ__+Rlc{=Q?1EOO{@M2j6imdZ-Y~{>kxq)%V>BEtjJM;=QkL2xc2^A?P{AM_K974p5B&&sswxf7dJczU z0CuE)>Q`=bv%BV!3CRyE-YnQUIjI!nu zBa>_lLQOf7=qavC`3Ys}Y9QMZY=jtJSK7UW<_&~z*L$n8_91b^B#+Srn%5SS+|k${ zBE{c@noB&pyi}|o?A>+|BaQZ8!bwle-uK3)5@;Qp;UV(>;d9H^#48;mfsS(=Cs~G( zz@2SSLpc-{GMw?~0=D0cRZLhAIE-@7rqq*dt6zaBULi{}tqIRh?>IOtoGi9(EsgI+ zaxqc6ht;&e&hU7^dUZ^Mn8Y33^LlM*ZL0(e;}v?9pXK97%KL}u;_N8CC)n}2ZVpsA zS2OuBCGSwPNllu3+9<7CF|R=ob(0PN9^PC8@L2qMA>X@7eR90WTVfDJLSXs{jDMEV z)9mV)`#AVrugs)_dr~g^5ure{7r}Zw*Z8P5n?ug8*1|>DPD2835oR3`Q^#7nywWB# zLd<8kmLgTUl&D`ylg7lMB=jB5RcLBnrinw!!p6ZL}RD@$}suPNtW-jFw9W z=>~s0LWw>O8xQV$-Mg#Sp+3WG$#uThqJxEn(X zO(OLOlHJK)(|p(y)P+8%6^-U=>>I*E!|>Kl*C9a|NvFy1l*RQ9D$=~+z@i;VkmaBZ zE3D)1TVgmss_0{0MGO;Z}7~6Wd7HCXh%U( zNa24|SJ8_klknipW#CU>i9-4R9N0-&_u3F%P_+vcs2_U;0x2(#$JPG3p4TH-h=0CM z)ZYew&*k~LBvD!2ZDvZ{PAwkZiuj-T*l`MTNwr0NGN7&%7wUZ4Vp>1b+c}gFs#yEI z7)JW{;suSC+TM6YQmP*iQtgL5BKZ1#_ojo6gLI)IOna#4(m*Uyg_0}04)R}#hm$sW zILRN%AQ-e)!*NnJ7nat^O|Rd1_>+Eu-CKJiN05$-|967!@Ck+{5o-U3G`i3)%B$!A zH~~U|ylAn=GJh!`H%f!}|1(G#EEsA&ZBpB&hEEI!zOGcP9StOU74TED_2_L>l9128 zU&v@MnvbGHQY0DhVSfJsi>>~dh8`CezV#)>KCbZnqsxH*|39=wO15RW*oa_pGY^vf z_ZGEkLv0Xg{_YO#P7*3TR@^W8de6oYVhcr&Skf)us`= zFA1t)H7KQ<3ZRnnEBH4IO_)I+LjU`)xPJjsj5nK~8*KhR6DA$a50I+=Y;qCG_=xuJ z9jm=G*c_ESf=B}Xdq2X63^T#If2bJX3~xA(2d9KW)eSOu)LeOs<%XQ#A1Ed>?EmJt zxyzjxtQiv+Mx$3L6j=WU_Jx;BNrr+QWdoSWj$v>Lea$vK*h$U*7yRX#W&efA=+Cke z{{!iNJy7}^#s4wL`TPl$@T~5WEas5YToeK0#OZSQf4C0=JH2Fx4Ll~vfb`8c-}3~~ zSkzjfB~afK)Y&HCCFzImj{I*My}vk(GOyD#jb2DZI<}Eq>5F{5i<}0M_`7Q!c;t!K+EAV+t%p4lW|?bW zeQ5Abem&z$+U_qkc&4@IJx?6d%@dO6PIBqeI~sro<*M^&CWesV&Hfj34tBrxZxhI1 z7ej|HFu8L4|1Ax0(j*Jxk}@w1N?GE<->5771G#_gIH9<3p*FMEKj_uQ9sCbg5dLSM z|6c}V2>W&4{XY^u{A+(T0Lbtiko=3?q6|&wzo18mhFL3rjY9x@1`2eDMP`;{X#N9A z4?HgQo&3asSUk9^;ooB7I+?TyaRy)-Fi=hRh>J>l#Pt6_F|*L-Xuir7i!HdK@Xla?NDIIIlKo(qFCQ(L>OY(eT2Dg# zM{vPGLXw2NnKec#Ctgk+bO{ara+Ts~5(*?hdxpjYgs}t3khVXx_@$&QUr>jz+A38b{bd=8D!x zO_%p+Imq*A;H<`r`yBQ8lVq8X+kp`}E%EjrXU2?b2C^gsnrQZ~PM3u){mvk2)1SU3 ziU7IOuP`Y1GK3`?1f!QirycuoyO-gvLfT#4<-xrnR;_a9i;t2V;C67Q0q3aX2%94; zcn64(RJLwd6)~_uy^C#g+I?8lQyaAQAguK--o>-AB~mvQ35$NnEj%K(}Roc{;tlqcx zwG!-C01(yn-dhm^@g#ojM&Xap3k7+Eu};WKhD=*<>Et8~#nS6BbojBV^fn92q5PMV9v zKxJaYIb#5!!>ZQ;&)*2{t%EYOYB|L&c8>nTyHz}C-9$MrPAAE{}oFAhp^NH@`k=d=E)WdWrBZelRYmGwl#iF24;ENZ+g#>bvy`!){DqPxom6a9i8s1PcsNdWP zOC`2Wa(DNRvhC5LskoEq#`3}W{70_d+PePR_CSNH3uF=MUm(y@f`qFGuIiPtjK~Kk$4`PeiZWkiOyq0hoalKe~FQK1u%H#4W$-Tma56uep%z*_2Lbs_Zbo@^sBv2JmuLCSVp@Wgn=VeXj>2eT%|2$(X2Bw2V2Tkglq{h zv#^Gyq{uMWF0Hq*ajJbl==9hFajSM+&BhC7cyK$+R&{hiyZ)-mxCExU1rvkfpa;=_ zACAHS4>xmK_`zy)^Aw@wRgM69qi_mUs9(dc-rbN{wCfG2T3$)tdrcpwS^2}pmTz$Y zl*B^OxLZL`qhG;~`=Le+ON9s3myR#ztouGTM0z`y95_SK`t14o)_YZ#&&6J1Be{s7 zoltUG5TcLt%DqcVez=3Tl4b)18k-qgA08dGdc@W`0)n^UdTXFu&HYVD;*7(K^52y6 zSg7&{p|n7%K;yQ{p+H;`M?bAVEt$(bv|L?qlnvwm#y z^#r$!gKByU=6Gap{q%z{1*B1MQ#fgc@Gg!_L`0;AId=WR2k~urIL&2si(%DaP@=@M zRUg~hUs@I1XEtr476+Z8vPj}}Zhj(_vQL)MN*Z_p(n6ZSVV7+b3NrWk*iR5$mFo1<14ok5@)BTKx1nLb|aiDAtT=wXMM5 z5nUu|-27Zp)B8F;2u@HYyj9rT^X}T>Vu_KIm*ZO38pIs5!B}R#x_ag=<)M|VuKBjn z@3u?^B|<@CDK%yU7&^Cytc)8o_N>2)A$F1g^Tui zVWoAqQB@Zu3jw4|mG8hP;^tprghT?=+IQwluI{61=Wic`&rtLNzO^AuUyX&AM0wB3BodQ%O4!pMe zd+>H0vPj}Q#B(F$H_y`*2l#4kQ1SWl7EXFK=6UR?HQ0%Bm&km0=x=Tz82C}?EDJeg z1%&tu45PG%UcAM@R4w-mZlJ?XAwn@scq^*P$o7_9z~0_b$s;|wCuN}zMKLBUD#n^} z{SHetIGiT_gfm`K6D1ELk;B-#pGvt?(T5O{gzf$daZ+B2^=cY?rM8y=>Oe)`EfIj( zUm3g_+pySA#T(|&;L_y!_E%9mnMfs^X3`S7zGF(`XY1D6`>UtMOUyZL#kP>o?5z)5 zfAC+q>&|!7iIAd|S8BUFD<@U1VxV8e3{|7`YZ#LnRD`(J8GORM^^wLeGM2XTU$SVx z;ssoQ$rIOj6@Q(qvK$1&9 z2k2vJXCSp3chuTu;58rbZ0soh{9FgSsNdEoCZ;!qQrD?beVM#YQb$`ZW7uE%M7DwD z4)kjZwuq>nm=NC4^%T~TN6#bA`^qWB`(T3h#<3MR(xu)gmg902vodSRKn)r47e8I& z=lMf8-~kthP`9;BZxWAvt+7)7}W5N%|J zOF6{>^SBNGbKsSCpjGVHjvw1Y7l0B;W?R7)w$S0(vuTet%9hg2oEIp0UxT{Z03-ZX z5hRSJFBwJh^K(37LJt=6VbULOdoZb|F0n}aAbkjT1IjZL`lo_dv=&CZZxBp=+87dJ zN`JqBBSjXh&%@4}E{^usxR?`+e<;n&@Hw28C@&QeCWiyz#*6g7~J7E3h zFg-C3MT!?Wb;HvtNInZ;?8QY$5}p#apH8X*ZCGQ(%@;X7tb;yTCbB*N8?>UgiQ9d5 zLnV`c28k978jp20kCxFMpVW5|Lxn6#uY3se` z>e4J?gGPI|F?1zBdKKE$*J`C_bt(DQ13zW7cOS4Ki6W0KFk#~IZZn(eb}0Hn)?)Ba z;9Th_60a5HZKj9Eio{XsdqfuYTKT=ZwoXkOf|>WnUdJTaQjCL06q2wrGRV-<*}{T{Wa!(%P#?L}$@#JZ+iq6AH~ zVjw9ie-@I)qNddec3_ALqK4a!-%7}Xo}P4brh3+3l2eoS z;UB=c6Y$yDF_;OLvDtw^jaCvQUcN2gx|YJoR^=|#lU1v^U9Bw z{pl{$>EUR~W}AAV8@ARxvztL`<}ceD-u04+0v2Zf_`3#F%xIDyeZF@A+5Ne83;)s* zq$hkOoTo6XqDzDJYK{7doZ)WNctXYJ8l3kQ@@wgQrPSfp5Y)>xA-vAqhFn_2^c0>Y<0n~0>wQlBhyzwE|HPCGR>YIj*hGGqnz<``fL&LQ5$4$)t#*PR)IsR! zA5$%xC8xJ;ZGw9z5LC?=s)B*xJzIJ`r|5{BuRD@Y4rFT(te<(bBb*SWJZQ8VJ;+q^ zUW+o!2HP(u&bwP&%~Pa0#)ZQZ7H?Q)Sp;W-xC4td)VLR>v*{6uU4@*om_5BaVa5$BH$6a7by&^zxnd@_GqNyHJWXITOUnGZiH2}bgZ$=vtK zkjhFSVBVrI8G1unn~|>uWn99I9vx4Yv4MX519xwf^`U#5LO8d4$DcTl9vDSI6ra2{ zF-k+Hw#*|)k_7N>y&__MbQM(*L4rWE4YH*Kjyf1WL~LE!`py?OXR$PLJ|dVgo6qbx zp((mzDAoJZ8cTu?Hou@B_QA01VHui<^T_z-i2eAl5xVY${=AOF2!Tfi>WHh2@U5XO zzYJQ6E0kp<(Pkd|E^Day;7Z%XO8^l*+wo(R-qURIfm(SSpFIsm4{WLjXV;0-IiZh?J4hITpI~9T1{5*K&VR(%m!2S4G z>z3mhW2d4k$0QYj@2Kfbt7}qr1=r$H>m5mfB)@!tNDD*+IKF#!cSp zp_3idnD;MwPaC%4&VJ&N^40l-N~3xm_q{C@m~WgyqT8k<6g=h*wO`swrE(t1f zP;=yBe0(8|^&&FprqI2-G8MTL%VOpO{wh=|+|#&ieWu062lOQ_29K-p6sLEVahhs< z3d&_m0+9Q@eR{ZxVnj5>FR<`%wsqtp2aA&4=h9kBea)2+9n6;#=JcR-rLG7K3}*)p z1W7ASLz5iY;A+U+kYR7R1h+}}m#5?GGJF?LO@u+L_&lMbMjeYmQuE%aiO!@+2!7S} zoq%XzW4+S%V^4EDxwDiw5{y98qL>r2r))*1*hfE;d&$nV3^|^G>A{L?PJ1Ur7yl0M zJ+%;}URm%rmk+>txk5wf$&}vfPe|{+k|KRXd^^Pw#vCb?V&e&H>!d_v7L4p=9Gk2z z6SvaDiO~M|45v}D)D0tgCmEyOejRt4UYja_xDHdeIH4|6GB%MYOwH5>&!u9wCawS* z?q;aNgPqOT2_0j+et$^=_FVgJf;X6<*w$+mu7wpqeHlQ#+16>Lnh=KZqPf$79<8#D zN!5m|eIr2}lEE@2NhOXjf5;y;?Nsw2+Wm$8wTRypHYO?xr8ePCc*S0gXxCvviBfPsEA!N2_==%0zXWHW}}aHjSrM{4Zq>opGS+QPSSnq`)-lD#F9wZR)Xh#rTI+q`vX~hxydx zhcJqa;_ioTt6-;1#%@2IR8Rb?6N}&LMX0*B;Mbd6~ z#qKbY3;<1;m+he|>CnDX#BZ=ml4;6D42t>^+$Wf-q;%{+)6Cw$xPMjlM(Cy=)ztqe%N>NNIAKXZ&U1|LsogSxxW zvS1Tnyv|)>g zDV$cr7RnZBfG33VBvm6Bw9<WM*M*`X|8;5hj)MMtQx-$^(AY!eskv8Q1})KolY?tOL^TisqK zP7pyA)Z!=H2*SSG6i6>a8vXb|5e9AZuW>c=wpP}%8RVztib|Q$g+7O%peKX((_r3f zfu%+i9v?n@kRnALAwoPD&mX4HJyN8;rD0QYDl(FMti>~we#C{po-Nw>wC4?VDcmH9 zkgndO@noUe#i@7*-%eYxpw=RbY8AO<>}&ugXkR>Cd*Gt1;cWD7GAGhQrnE5LSl|( zNofxx@My*NW$0J-l24Kl4$vCjq2?tTdt$5PPtRp@s_N&}rAdyL8imuphF#eS_I@^O zI)DF+#E(}60Uv6@d=Vn4!NsQy#WW~%4%jPlJuHgO!C#pCdsi_+b-lm0m_$!5n~{E6)JsD(=_L4xJ-81#G#SHE7P zXPAfzEJDD`B=`u!iF-snd(;qB;fK(T^92=$-ji!vPw2>cC>H1bF85O(7T33HLoi(X z`%%taSp6bFycl=$U8Gu}jzZ!}r(YclZ+0na_BAj0E1^){5E z@56Hp_;qopUPKHEAQWSH@&DLpcYbAYyfML`7rwu_^(;v8OT=ooiQ&apbOoI+;F&tM z`^78J`+S&W;vC#4hygT;E&I-yf^8X*v==E-k0Cc^jPGd5IL$q-3O}GG&Y}?^4D&=8 zwm(lWt=+FziqjDiWYDcVFd=nrQVTd{wwdVaqOciM>+b2$$XH$F^V;%J1l`+bdXMwC zz@BU5<%h4oMzOL<0n+vy zm)o>JqBVlPWd7GB2e+p?i5okvuUhg~8<^hjA~$A+vAg#4y=|h89Pi{- zGEIjRq2orMwqDW#iU+NfU)gJ;&R}AI`NYYCVu-2UHIPA{)?j@_z`xrK3-u2lP`r%6AYbEftK{USGHWbbf(kX`s9WDn(Y0&) zJRH+8ItH{1e{bt~OJwlhe;8kPKoC)feXqu~%-?Wv_(eP|=ozr~+?;h@Br1|HZbyXu z<|M=uH6o@yRqv(56e!OxuKzVs;L-P^t)ia6dE6<}^MhNKb?t)f>6ezuO`af(I3K ztm$6jJ&6;YbP&EXg%Ct-HR>|bPMKZK4WjuYt?!aE_3LPSSGI?~eW3O~t~&=SQkN48 z#iEr?`S!3F@iS`VEq^qGnG;d{{{8zfpzZSRApofS1jR0)EM!&Lpj4Up^57nI$xR_OIOMRcte7 zkY4v&dOmp`Q(hMQX-O=}Hx)Nm{*2DTu5EGWB+Jd-5`m1!5PXCZLKrH|AmrnMfD|IP z{fBPf9>*Vk8ZC_G}tN3!w{Xv!5U^vcT0UZ>ffKZ%c|v){1s znEp6nCX5_8QcXCouaDi2!pmnh`wbh9>ERjQmp{(y>tpvzMR@uBT0qeH5!(c#&x79| z-RIHvjy`3gTT%wfr0M^u`FzDW4U-QaoKTYw`fO;uSeEL|DY#yDLY+5nUNxUl4YRJhSrN^sotD|>vbp8 z`0_7V4F_^UrCuas#=7g%o`?&4KIkS4oUlSim zj|mb_Z0{88nS!LNcT6hsf8&fZl$DYMrE})Mq)C(Dt+(DvX)lyygM_gZb*Yd75Z{gOde3XpUWD?$#mUn<3i zPJHu6x&oCUcb@$|)O+qrTK@B2JXg(Ya>vZ50N7r!O5OJIFW*Y~b^qeSi`D!`uRSuF zzyHKWb=%*Ldp50K_LqqLLKxFw%CI=!T0g^++ihy*4Yga8H zOnkuMD8dpiKy=|@tujLGu{9t*QVk6a4eB-&0L|a-jqaNaA)*V9LDeNt^Mi8m{H8FP zzx}dE6GmHOyLuj}5JCqcQv#78*I#!A1tKE|VjoC=5Lp3=4-_5<3V`DGN2}I{@4ov^ zU57$Iw}R*-QUsv*z<&PD=E+B7CZG4zyH@ z>tcd$5jhG94=uuHxAMnzF~PTpEP(_Fku_}lr~ww7etmSgUg)d3RIq9P#P+JM{9{{r_-GxM2o$p0hpXiYEs zgcnC*1833TX}O8k^s-NQaU?cyRx$@qBN9v24Ms=gFM6e}3xNaelZ*Ki1VQ8yBtVF) zBi)sJy7SLt^zh=b1Eo>e@ccm!FCIHkTFSzP6N!g>KnQ}!3i{I3mb&BSE`8~0OWkp^ z3lbm%L1Yu#_CE07jj;o$;XJMb`ufcWwr#ro!5d=-P{Vm#2UPx92MG{@AhL#73&&-a zYBlw=jmS-6EgUygRja9|ZA5mEalK$}y6Gn6;)^eiE|*?^-GGkAzKo*t&p!Js+;h)8 z)PA4A#Fzi*-w&+(*_Tmtp2|Nr8UJ;Y0D+K!>*x%vIjK&@b>oa?Ze7qHbrz0aCQ?t` z+iNgj4kn3}Q@EFX(La%6`-SShX)=Jjs|fsoFvwxAwu^+@wc`b~b-2IG{#RYk<|Tbz z-CAS=uE-u%w(p7VoA8V52kaa%#B&Mo96LeI$*!@ZxBHVVXysVU5_Vn00jio<+NfV& zMp{7Zc6&7GX4d|u*kcjdL2Q}nX4d{DD*wd5DsTl;Pum>V-*!ApztYlU{W(6qs8}*! zg%La7%l~lWSL`U}hYk8EgruVsvvDvJBSv4Tfk^M9(ZvgTVKi6Rf8Z5g#t?z6j-a+d^MPjHFaM% zma*k(wtWb@ZzXJfE%5vVuv-pe|2J6)$+c`hG@F!Z6@OaML|F+K#0s!k2Sc%am~q;q zoCv3^i4Qxw|HDAwCxa;3)p7zb>-%J+0I8^`h^B#7K(WUnvV+(%8>j%K@*g;pYb#XY z;dyZvRNc2rQ3c0>+fS^#=Vh_r`rA&@_p4p}@ZC7Y?R`DAR>5L_h7pRuk5&xgC^kQl zr3q|)$oNmTbrT}2GUK(W5FR(Q00eG=v|;&;vi;o;!5~b50^?}*1vw6a(nPMqH}C`o{_G3FXIFVn#iqItD2lA&3%Eb8c@Px=*J`Td*%~c{`~m^FMm7+ zm4E+1G0}d{8gSmZ8GNhv!s?F~7lLFA{icl@!k^!npqvm6Hw+aV}& z^a?OTFfm~?j-4Nhqv;^PDE0+k!R`T?t?@kZg`JHR5}tP@aNKCH7$yJ*W0VPfJaP?S@_C|n^Gy!#B>X9}y7M{s8IP)^~jg;Py`Fb*yRd=6D1a>2CM*mE)l zOiX+L{7AAac?pW_v)tQ^_p96I9sWA2>`K@%hJ(ccZs zbvPn>2v$EgZ6ex3ycQ;zEVPf$Z z2!%(ZwF`I2I02&5ID6I+Z1VR+B<)xk1Nu4il+t}(nS}qxi7S8YSQ$gMl)okx=DF%0 zdVJVp78w1HR;V4a=LxoM3wwJ^VpEBoG@4X5Z9C%iOEK0FRD%`F9h~=T*)epA~dDTb%ssODxA=v`%t^)7{ z%2*{7f`|_XsM|U8eGrav@3vi~3Wd`rT?E*QW)>R3EN%e1ajX1A!()XrZ7*UuOH0?? z3Zf{0Nwm9nn6FX)=d=lz7EUw2ireMoTd!im!($vXVk7$kZ*)u+Zc+cQe)BV65S>iu zbb(3msQwmdMsa$02n113JH!(Xxq{WmgV=eQm_W*y=d-`?hu13HkYWQ@Xs%(`c8dM{ zAt0HST*Wqx3xBp*6@M9dk=l3;dlQ+`Jw`-q{Rch*Q}h&LA-P*yr=mIn)|7gb3WrA-RvJ_esq%HU7vG=?hM&&72#kDzQeH5M36Ue9 z!F2@eY&#Yj+~dF3A4AyQ)~Sb0G;WS-M4M2Pk2-ui{}sVX-O{KG^g&S76@5%4#)~ z**Ad6u!@O>_rPfQME-2Y%}l_22?GB)Sd1GA4>vraijEcAo@8QUqx@yVEnqio<_axq zLtU=boZYyNYH+MNz9G3?sD=xrZ} zRGN89u6CzGOANcV1D3yLtw~Gyqv(hg3agK* zj|9D9JTvaRbzy@4j~0?8RhL!Fb=9jPr5nn~K_ONdxY(Cp3tKF;pU9odUREy$-(7z# z3>lo>3Gtj12T8$ahnVW)PSc9vGNdt^~Uau>9_-K^3MLa}Wv ztK7EAE4F_H2HwX6N-HPutxSCGWzPWmniMKs(mKu}?oa{}dwv3|ArJ_&XU6xe6z5_Q4kjiQ?P^?iY96@0i?l3lmHoT&c}JF~II0fQcplDw87hc9=|qopX31h|LPm zE$3ub0!!C#04#c*lOQA))xEuDcSZ`3T!smZ=ZoH6vfphGX*M8o6ecj9hZlP;e|1}$ z%RfdaJPw+8U}$q$sCLVAb zc8jcnQmYtj=$H;8*+-JmP{0oFg^)PevszhTKmQlN#K{nOOZyFShxbNKlEbVj2hjIgz(mD|&9XD>sA3oHJZ^G`pnE+#<2+gQa}RZt`S zj@=CdlVLuk#1>?gWwh&Rx=-^U!E@#yC;Y=X&koF~nNs$X8J#yG)* z^SF-45BT%vg6XnL)fgw3a30rX2q+ZL^06s)9sa3Z{O~mPM%e%ntH*4X#BKV>EPUk^6yL-;Z6P#pmdPNb}7amNo*<1c}+$$i9}=vH529 zQvSyNL&u3|#tm=l*evgCKZ8|P>lBlr5em!=tO7z|B*XU>8T`0vhhmEptq356uwn`_ z@e$ItWsF0zGPa7zu3{gG4k$15E9He-m8wD}pe$IS;(f`g<`;;ZZ^Ul}1*F}qgkJgb z&tNuf1e2j2tj6XwC)KF}5My-!iVI0@0Y%=-l^3jKLShT6Y;kyN+~$JFJ;0_Y@9Loi zGX4+#KifxHU2Jf2cGFJwKPW!iwR}U`|6mzo1#U|D9q1$KeUN1*yZ${8k_^V0!2$N% z`gEXKv4C|_|dUpH%xCMf)CrVp2xsF2ZgkLyuj zKtxPa(U6%C>TtwoFLXPAu^cl`;E5mdSELBqx~)3U|xfb zzj%Bmc0`u;Yk^=D7*--E67Vb7&z5!3&#jQp=9 z7~MAGLb2y6TF(~r{QWsg7idFDtHjJ>>MmK7x&!j}h{fw6L558pQh=;5u$1IOFZvf;WkYfTyKaZmL8$Ni3d0(UE4u0*1eg9klZm$tKgXp7U(xcfDdii^8qH@{-j5I9QZ+R60vO|%>=(~a;%QIrU zn*M;oN!jD}D4swUd#>%mQNz#2=fVHlZS1L*w&J)x^dJyKo-^X<)$~TSq6mw2#G+Zj|Bz1Bk*1+4k=1Y7CIG z4!s_*H-{WVl`-4X$1IVedK>Tyh1YW`B z((JxCf*=wCFPJPv*6QH_$=f+W@^v0w@%aDzSuk0L;UTOPFiuh>aSW6{x}0hL*_E_PyuGTiSPURY&|82H9J|V8AbW zhZZM<(6O2n;Ca6kdhJsDoe0xwFNcs~Wdbx~d+!_svKq6c!^1(lN06TV^j7ftjSvo_ z2$e{H5Cp+YQgauU-bLk-qq6EB*_x|c6} zCMG;P`gEY^I*kf7z*BCVYWD+Y6wu}us}^w5M#Bd0pma^ z134`4g772Q&}z%Z!S#{^_7pOLQSgiMDG#g7FduAuf(iI0_N(l`-aY9)!GXa4Z~{Pe zi5=|bv4F!V2x1|Kf)O|#ovbMi2tg1aD{{!ozQUYJSn+N>@wUAv81}sW&~}J~UKfB9 zRv65VO~8vI*!)BxU{uF*!SL)t$UK3)Po{FB`E zYR`wj?Lt$@r!1|4NN<}!+O9Z*;G7<(QeM2$dgjQ#!jM7%9Oe=TO2ZXVFhPOI4>lvd zr?bgwAT!Yv#@;WSBnMc@N1=t7Y%A~scjonJK=1W+0mbDpOTp+X)I{mx34)0Fz2i?3cc(&vd>%#KpC;73} z=ZyclDVs!9vQXIXBLtEh1X*%1;n~c@$OdR^_k{nmI^E|sASMPlL5)(&aaF<(#$2Ix zzZDi=13}r$o^kx`2T6bs1fj^GE??)CwS^(CvsJVfzAhLnUje6fmt7(l?VAktQhbpV zU~p~T;_`(;0^j;%a1U&5Y!$)P#XCe^Fj`C4pAudajvn^D7^RFqR2m(6ms<4{e?@rRj@b2_s8}iNi}@;dZtQS=0kYM^tKx z4a%r;Ua4@{xPUxdJbuhoSP3cSjibVA8a6;6Wa#}cIgbcD&x6ez6fZvdHYl;nP;6Jg zY{1`3_6szl5C8+`!@&Yo2UNqEPeV9t246sJf+GP!5P449S08}UUhlPcaAf@`Y9x6DATThz4FX zhKDS=<4`qf>akZ}0FjXGdgRn^St?-ZaEJt1A~dwFsRDRq7kIjiim+}7-b22&c$89E zSe#8hAX*#{44^iIRX_%Hkiej13cdR616TimK^+c(1PDRoFv13P3S|?zVrnY9XKi}hGNH2esN?|jBkNaDu11>Ywiyy0Fo&J zw63WEC@>1(umySR+4rMEV({yR6Jb~}nya(oYgoHSSh?UAyh)wn2*qZD6O7{L!6oZ1 zg37{8P-MsPV6vuJDQO724NT$)^O?7*UE1Z(w!g^klZUgLEL?@dt_AbTR`8kit0NSf z1UGguR-0kCf8P&9HZPVx2@rzFZ}267y;3mn(KJwGHVtFE2JF?MhCtT^1@>Z*gMJ5Z zF!5nIxRGu9MhS;M^SAHv%3Z!s<&b}!?C)G}DHGQ=J>B}IU~!_uDTZ~&uVIXSi51dz zh*)0Nq~Tik3--#uaXDDp=bfm1(W7`W#g56Mi4sv4Ci__y`r7T3Yv|~LHg6l)O>L}_ zUS~gL(6vxz$L1;w?v_oJHQqzCZs2$}JHTStpp@7)DZ@&FFuIIW4yh8AqiWN9ioL@s ze*;UUESZy*iP^+Uh3~zL0v{uUf*^RAU~6Rw{eEx&IvdMB>*{HC&iH%5ct0aRs4wqjC9Hw;0+k@H)z;w>XZ&f#*JhNUxW7S^5$p zW3=cIJ~O65)w+aY_h4)uGNTBI5fi+&4SQ`=uvEs@nN(5X4Hm2Go7~p%-!wa5M+b(j zM z3_?il^&s#Z1SB`eVSK(!ncS?TSsrlU#OW;6Y87f<|Ch)A*G7arFb<1T6n;EcwSIiK z`48;pxEweReWuWN3Z1p_7+Fa@c?yj{;hj+8I=*!c=<7)$N7yAED zFBpQzbI|mU-TiPdI;=qPs|&}inFx{KWB3*Olp=+m21R+9 z5$t}8FI5ydnbZSD7a;iJEL2RQ1%eXZ z2TXb}C~Q)|`-4qNrCdWt2@@c-&=snH&cGPqu%TZWrw`wbv33yMyRb7Rm&h$c#e zx)s~e%4Swa!DXyDtSSUyWsPGzT+E)QW^nl%*zXLRF7*I(IOt-=i1j{#&n;R%uzXQS z6|!erF;-P^AcfiQf-7Lx?8Z@$Nr0q*qPLeo(_f#4y$?L7CY;B0M1Bx{aR~&TdKxy} z{-Bz09@nJ}s9s7!`@e9a(QU95wHT~L zY=3?la6ImVFX$>xG;KH9iU-?=juEWoL)(B84r3{#9UCw3D2O5)hyj-o-i8an+oTp&~p&aQF7(302DSrpCaIQSZPf`>5? zQpsMj%RX7eaUa2y?s6pQngSV5s$KYYPT2!v*VKQP8{&eUIl$In49)T!l}jUl=5 zd@bxAnz$xcIoIME0WB^w?Dbfosl&=`XiE3_^@cvWGCmt<{lI4f%b`RGN)?JHFmysk zs0amy-h4MO({TL*0h@W4{Ayuwl0e3}T2~e+39a5jDZ2 zf$C-T7xrfxksFx*wf{0c(6(fvi4YVDXsK9HyZGUkAktM9g@TVQKZpCFnbI?CTu`h!H}v7uQ&juYkQi6eJ^9Is{}@ki<60h+Ie-1hQ<9 zi$Aysg^clpLmmR7x{EsSUpj8e0Ffam$y~eF2ri$M-P2HKgXNE`0vZh#Q!Nx)GAhhC ziiZiCI|?T3@)b^S%V-UgS;dKgIIvj~W7v4v*ZX)SARWns;*XdJox_B}?C{R^;b1cl zg3^KtFdN6<$giMTKR_FbUXkRf;0v9{o|uclZa#tSKNNT#Ed*#8Q$Q4r?71jc!g93| zhNaO#Qck;4>*h11iWYgyJ@0(hv_jUKnmEsK#?Z&*e{a^HDpJd(tzM>5spKww=#C)c~uD{pv$9~EoBR@ zzg4vcFu`K3n)kAI`xB?J!#LP}FSGsdm{XYO`Ewesu}73K)l5jp?5hk$0mltBoOS4Z zp;y0Nz`oWE>`QGcU_?@1kY|SIwLr&K~}l6 zL6b}5nmWdzHAB4@@3g;cKe6~4FbD#xxLP<*zyLLNy&Gzzk_j_m=ltP)oiFaX!G5Ce zTqw0-vk&gmrNs%!8u)*G#VICH0@2XQ#7BkU!Xxjuv-==__P1*V@r-Yn;KQaUU%H!N z(BH>6ZIUe%lxkVI4hJP{0#Be(Y4vtMSn5*D##OAcX6lDSvC?3^`6#Y1`DWxkklnIJyN+5Kk_=C|WN$;*-44vFy;8Zc*zUHL5 z*1F}}oUH6cwr-F(=a7q}4>rBcc{r0|HSC%QqL)?ZnPe^O6F3qsL_T0Z6?7J{SUhI* zUG_Q`NT2=feo;DM8hE;ZTefUjj|X6t;1P*Dp}thU`NB;%-PGfc?w)(@$(VLtRtYAw z{QFY*<_nov{*LQ!J6@Z;qw2DXX-!Y<`JBzarf(nr-gS3F$2wSh&VR5e3;jxY!7f($DBO;ABm1hKh9lPEpmFNBEf_i-qnBa;F^u7X-DumqZK^YASMU^U zQbDT*3JWN(G_i`TlgW*Z(C%5wIX!!^DfTvb%EZGk zuGoGgD}#~1GZ8Rr)Fn(P+`@#&Dr3#yK(MJv;figegqb5A#aI^Dom78DFm$>ay|lzG zV+;?q8!h%^L1$9*=Lm;Ys|FJmzl{D*weMk8`7UM8oQIYFhjsN^?CgI0L@Idq8UCnW z0QMA->o?!aM9i~XdBNIj9}fntN=(?DpeV}8>b-qy&E4$!{|S=3a=!uuVIt)DM4SLM zEo3K5ge0W=)77*<92`u9{Hll5=!k~`lGWQ!97_Zt(aUI8Yi`1r$U-07c+O!yv~fu$wEDVWmN^n_8FvSGg}mz}!cfDEWkmo89cWXk_K~$h)A( zo7YSqo{7zteFmGhz$hNagxIm{eilJU-pbM<&LC{tM}Xkh*=@Jo7F~9pGW1TCh{4*OSK(OiOte91!wdr6K8944sX!FX)wRMZM>6Ezr zv3w0ouw1MOmKWGETEDPM<`9VZGh~eT&|#IPUE%q0U^5M66=o60N+)y$wn0^~PpK^_ z1cCQ*>zgEKc8!*8@4n9Y$85$CY;h1d9LEKlNU+PU7EnxeELD59_=1(He+Pq!91p8} z44fRs3I(0?uqQxRtFT8Xc1tysvya6JhX)4PTr5uR(f2uK;gX z5x9I#c0VvSj8`24C(W>PtptNu0Y$daU^AnmutV~{db8-CyMTS6ce1pHm0Ty-t%D?S z@#~^;+5+$eI)Uf?ID)M@h#ZdNVlxLZnkfbpiwYIBXN&4wTCO&+1SR|ptOEnT37lT^ ziSlFltLL#|dl4wgslW+GvHU!2{!RA3JK3>YGC`;f1l2h=DAj=i$3RfFC_Z*won4=S zKiJr#0J-LxYog0lzr1unnPU$RorfQOm@1$QC%*hmmt8ub<6#dE9V-9KMvIDy+yviS zIB+@-BE2_uYuo3uWM?9xQ){}3-4A=s%#IN(cR?hc2#OPI6aFgG#0R2PnkJ>d$}6KP z&78{{09RK)8CwNVZpR)C0q(PH?2F7(38FB9ud5jw-q838j%0hFic~u;3Jl$uRGr5z zh;jQBDZrJoim(%ENgt;<| zYKnoyFt!JFuT^`vpp&UVa5C|^mp^Khw!L8dzLqN8JKj4CpguUTfdlVoSUwmtHXmj$9BQhHwhzk4q)Po)L@fJZCQRHSaZ0J1I4)+oI(I2G{;Mrr{;nF9ZoAtr-_b2(1 z`q7Vm^rIg~FpM}LsGOiAQX?ai!_?a)e8#{+>#)gVgt7rsegFF^Mn%N6%a|jgJnNd< z3UY3EFs<;Omqas6Eh;tv9ctiQcn&vwI*^E%=SNaAlCr`CA%E2Hl1Jy;l5oF22)q`} zADO7O1uxbjG7kCAgZs$tRw&&*4kU&{*SFd&11FU-oCC9vBC*Ue2}wWt(T{%gqaR5D z1BwVo#idXN0jVhB(g)^?MPmZ?(WmUP9X&Z)7&2fGli^O|^72Q40xJY!GCt#mA)8oN z{#9Ih{$5wxcs!yd`13fobpKa0|2mc(_qfD{H=pL<09 z@t^M>7hW-2f8pt;D1P?D#rC5g{pd$OjvSzJ4KSR8TBhIff7pR2jHp+7YLys){0H1&4v%>pWcL7d`38qiZ0Rsug>|b85$6_(k z`Lo{|(vN=hqaXd~E>Hpag_2P__{g@~Q9+@iV$z)HsyC1x`E-pCdVi^f$^Lwv>T7me zD~}m$J#j)_^tIKu38Mx!GHyp56$F;4JZ-jN75TsWui=Y|OD&^^yD@w-e&_hrv`hFQ z`5Zr_C>nk1+b0;2U(I-IO^lUaPvWrwl8V;n9>I0kwQWySUw~`31NXi6Pofi5S5@?5 z=~HRLy9+a8BVNCz1)`YssfMsjYvA5@AEqMzC2MzK1VYT}={eAIUvka0dSO`^ak^b3 zzqo`@N{J^uowz;e#O`n!M5L$hryu?3M?d=U(*uL6S)Avb(8v!iSQ38r%bzjn&b5r& zzD#ZLw#hX+GA)y9jPS6z@Bj4$VOa5KCe7;N24=b0qReJC!(Gdj<~8zK%^OHw0{6YY zgmKxuTv3MCImvEVLDV(7A7U~bHEg!?OD@;*Una}`B^9~(Ap65Uw9+I%DZ4>mJO3ue zVe4QVqDrkoE_|Os;#QE9f$2DF(IurQ_EmLZ@IRkAla8X%j+RX6_&( zO5^u|rVa>#AdtMgf_Q3Bj)wB*PFXcE~e3{pd$O`q7Ug0EP*kE6<7uql?$@ z#aTbtshR0n^;5(@p`?410teGl0ngQEuJsQ=CB*b^}>DiqaXd~M?Zc- zFbIg5Z7;+Yd1~0Aw6*-Oyk^@8lVTQE+bn~8Jhk{y#$nwJr3pw#6XlrCsg?VhT7@Ny z%d&*caeT`ZcvkU43pa8DGFJlOSPI8rv_rIXV4j36P+Fm2^s`2g7wKbZhV8li zw9LZgRaK=>4Ece>EPvII;e{JP{zg;2aD?4|vg<$D?Y|#C4g6p-I`khvC5EGDRAiJe z**c|dj6)0q@z_K~4he;B7F5tV<|jsPLvw$$j}eT00^^jxhZ~m-C#*f_zk*XpXvIMy z1^3dL?Cb0^;3IM@Oe$wDWqvz#LyxzC znP2d0$3_=b?sScr9~5&(#dN`$Ce?p7Y*OV}m4ig`_kXOLuUXx{dt+Stw>>QzanVZ8 z+VRm(D{EZi<_9f#qoN=`Jy!SGh^b@F8e3r@4?n(UzGn0M?)4FMy(0h8?Zej|8+pHS zn`iQTzqN2wL>HY|(H)@L1$S(|& z&!&zfXJOW&St~%ki~Me0bMMGc_WdWj{*&GQ4+a~qzI3mCXxOv=PN`}2pECAEKnyple4mmI07l?6%1*@P!?=P6ooLaI#h6NRia1@= zoGOG0>O<5eb*S1L9IZ8XRBFLUzU_aeT-bQ}uP-jGAv&u>*_h8$m%XO+~z#vIM3KiqmA2pQf6no#ARh|-sZn`lQPhdKeA9I zYj&FQL#@tpPD&elVcWJ|lmBkf=&W^{I&NJn7tgT>gp4gAWMwr0`D7Ox@H%Imkv8^} z?-uo%{KZvOS*yPzx2}@N9IHskq;mLfvtjhw#dZ+qb<@b$35$A9{i6SA;@0O1oKR_X;j*>`OmP$?II4; z+x5|Ez1lqf{2x2#f#AY*MKdm1ozeE;ddrs0;k-E$%N26w7>NwXR>>)F9TNtDd}oep z{>r#~IKD^aU)*raj7w`qwY~kVb<4V7;hd_WFd99Y5X_Z!?l?lG3?l`KJI(dx7o^%e zzDMO>MyqCA5vyu@aRu4(wV%v6rIL`JjRe9ARei;1LQWnH^3#ZG-s-q~IKD^a&(5xz zah0>G?dct4%Q7FCb9ONyH)qF_&-?WwyGxk|<{~0s?qa*Qf-1M^^}lEgdrAHjXKkp^~pYS)z4>XYN0?41&+{5ydegDa>|0K14Bp*mF zawm-x|zZ!9YvLSKiQ`GIjpz6bo8Ckc8m=0|6@kufF<U$bZX@C|GkqaDl}lIJqy&#tcUI-N0ljXLp1a8H@oH5azJ=(yl<49 zjXf3y`B@c{@@y?nUKDnJ_Re|F5s~e0ZCe2d*FGWaY;~QJRtCCgi4Eq`V`Rz@V#vSyKRqsSkb?SzfT@z zG^os9e%AR=9buAD41fRirCW_4Jt!Z?xPOMf&n%A1zqGFB*P@ec$4k=h zDQgLK&1l>eru8C`!PtQ-T`0AY{BhSm#pg|5TReE$TG3TR@Du;W?{PmKhsT@0V|v00 zGII&Lpd)1XJ?Auc#7AEL{_TCn=L^5Nk9fljSyj!-n5g;m(Xos}mDd#)edS!>Gvzm# z^5@-jm+|@R4R?|D5JOgMi_1UzsGgU9>9&dm?ZLSG-QKwT$7kJOjDR1#r?yzqRP6cmK(*|K4i z0}B!nBo|0Z66HXrW)9{4%gV}VQ&UsYNQf!_Y1~c*34wdQ6Nm?KI2^|P_Y?`?dg%I6 z8s0y?s8OrEjIlY!@rA{iG_ZLATbdW7E=w!nxg8|Fd^pv7Ty#C6IP{2=t?u&4syD<@ zm&5A&^@|^{PEUs}hr``G4_Yv=ortXHCRR6wMKJLA;}ff=~SYvwA?hSl3L4Ed-3;eP0R?;x{b^tZbmXP(Ihg=(i4NGL^L8v6C_@Uj9$(*QXEc zS^3X97R^9PdwHO0!)I&AXvajtT>ZwqhVs1&M*r1OkRKz#X(y73r{k_!ZGC#GM14CwcP{vS96)7o%g-4c=jRQyOnX3Us@ zN?31gZ9QxQ(}a8^APEwJ-yJ6L3lqcxKNFS^+y)Xt7A;z|;$TjC#9KfRa$CJk3kQZn zv#(%0PB)vE;bk1wMyOdYku|jEhf`%048rtlu@Rn0gNshnf{|Rcp)F1G1z_w#H#0Wp zdOoADy98t}*z87F6gx&gXm$EbO4(AlhfT}Y$plBlN8NM} z*;uQQZ?;Gm5}#0$K_+> zz&R6oM}D&JKiT!4jP^flXaPBGphVU@T1M&?A4g{9tu&@&x=zjHo-x8Go#FD=8=q)7 zK_K}+{}A*E`L;T20P#Q$zxah5==B__mJpL*EbM7ZNWTRHphbK(HDGgRzVMsVj3j%d zISO0g;i*+A_M30{k$82(CQ6);jXh9oxO%%WvCxzV6O@^8Y>r z`BvvuGe`7-{Gk61-R2rR*uV7j?Y5&H-MT68z5JHy^Yyf%CtrFS4a=jC^Rd?y(^rd>V#J16_- zx2wOG&+jJZOIhT}KYa!Ao#d){y&*r@_n++gKdkNldq1ul$Hhp(I)YO(Y5!QbmsO;l z)b82dn}m$m6Gak_xrzHJA{bftlkC&n zzc_0R6%Aq)FnwTt5S>=Qpd)Vfj!$k}@5&uQG(Ly$dDBTjwr6d7sA*)nJ!kE%X5UD; z;UmJxO{8__cckL9r*Qc)j1dXWoXb5G59Gox`0ohODND4hw6-|cYwz*SH-VWeJ*Ip$E4}rbV)xj|hWzc@ydYnE6guAcqdpnPt4C2v`;$-g{Q1@Z~VCs}#BR~Ba+KYkhxW4>EM zKt6dClWg|!{*~6ad=QycP*+==bxMgL|LavCp9lF)a>Kml-jko~`%iZL_jLR3 zEK|Bz6|7ab7&4mX-Liz~^1|cJ47@>5$_0&6_Vd__0i5Y(} z=^p02F+$Jt>|#*ZTf4?U>B|5TQm%ExPLVg(4^`^hM&hcTrgQIjhVx`EaGZJkQhrD- z4l$%3n_2=Al2~ZquKwufwL0e}_OxQ+$el!@;s7GV))Pq_PAsu%5^P*bLf)N(6%_V~ILtG?jt*GS`>LVyyf#M0usq6yMFfgO&@IkLfrhB91IEh$@zd_7^yF1D6%ZSzT_Wg}7R-y|J77aHV44!4kCgAt1;Z2oS)D{T%I zuO6$GKl!uM)zJ7^bHiTW0xCzdRaXvLYRLKPihI4DUKt-K|NHEd)!@-r&JDHu7BF%o zTXp9e@-Nsntk>ngG;nkI!{<*>15^vM&;XQBbV|kBQnRPPaL#&ayJjbT+(tNvq|eqb}FlgH9+m zEf}*AjzLeRR7$vn(?{#sJogr1M5)9T5LTs` z!HQpmzxg~vvpBbf$6a)nIr{B&`2kb@i_D^5gqDAqq1oKqLdQ%Vrgd*^28HQ95(q~9a9l^+;In)Fk!-d-91Oj5D+8~ zNHB0}fuMI0Ja;H=lZc>|!=lHOK|nr^GV-7__(!Wv{z9!IS_wo1)6V~(!u3A*l7}xY zu4HpF(ybFKoc77bqo^nzAL`66XwE)6@5Q0Se?mIDctMr`slB|*dyONaGD_>=e{r8Py+Hp zy)J*yqD6b;w^f{J$j7<=i<^#RX-w^P`OZ%An@3JI@4PG!O-X! zozw^rhA}#1&1h$pFVEWqN3@3CUuv;Tu6aJ;lq!9)>2fy5RgZabFf@Hq9?n4ko@X|EoXQNz zelFpJYB}$2vg^2uaRL43tEM+N}S~*h$p9j1S1hbHJz|LPb>mYd`-JZ zV8hphQ6jyT4YxBE53S^Yh#3AQf7#f~-ZC`1*GGPx0i!?;I$}fqqdNlZO=Zr*Dj!C{ z94I0~{yzgY_GixUVU-^M`A$>*Ywn@!%#MwRRlWf7B~$+UgR9unw=6oM?myY}-<$1! z-@YMnACLzge4V`3Fy8nZts04?ww?Vz_GRtpNgt4|K$Z1v zHChh@yWmR)t^<$2E?mY3jy)tR<8 z#<_dO9eI$6{q}V&9k~cqRE@<1WXd=yz`hT7%H93O1Cl& zE6)~q3aH4+x~x#5XncZv;D}#e=e&k5DXGwc(E=!?aLjhK&A$nL_YE1I83MVDa(lI? zGz|V$7*)ooJKH>LrrSgGk|r653q4^{j9NLgnlzF)F-j$%Bj`q5Qj4VzH$FlsqcEaC z38nbPCM-?e1}BQd>2?vT-AWWG9!1da_Y;<7iOb_6JTDM`C}8AviVjByJ%2cyc}(cE6APfuy3l=qDe2 z3rV+t;A$24I1k82rPdM>)Q%8CbfPj2Q58-ZdUL{xVR3ukRO%W9%v78Bj>C}Yc^O_d z&8`s2Yyi^2;0hLWB1J!r=$EBeFiuy8K`010o~T-;{pOQS3*7te?NaT|*Q48)*1-2} zC~0ERm;jfZJC=33PiE4b>5SXHjB!}r<%i{AEDJ+fr&2UjglSpIRGR}QK$$FWs_lWO6&w2T^Ki8F5jFb->j!VvrOqd~m2N7*n67u>C^6|pcPaXD` z{IXS6`r^1q((31mb(!?}5v@s+e|1A8eKv1R(&Yb~R?(;QMM;x?eRdUnyg7ODlYRfm zuK#4W|9+$<`T_wd(jxNpx<68&1*J0av|*D1_r3Q|#$oHwbuFJOUU~`oEwo?v^s{<6 z6jJ`0hBbk4&Ui;drUKmbFfI*1kHxOM9=xVewF z! zl1@MnC6CUx$<2*}Kfb6LnQS9I z8;}ZI@qylt5(XB-*dD6aS1i?S)8zK*79cY?-BJe%S278Q2HS=crkM|>6br*Ss8BL$ zhx42h8oBbUNGg*Lgy{!@PQIsT5qY>;=iMc5-ui{g-D2}iY(uG&lx`%k_7jK{whd9)j!-a&rcNg8YIC!3f~!Z{=f~- z7z41|AG@aOF?$AJ?eDyxI*&Qg!=+~rr#!#c0Ich|`wHOt_Zk4gb^fIK0H`-(0LWOZ zQ7$99Mj4(H4^})|jKMiSXedYNVJizl10jTQ1eq0bFZCg_fT4x@5KcP%-_;d9iadLbE5f z`&!2i*Xf}|&)_2AfYt8}T77L8Xhi8u#8L_7bH{?$PwlOZj3Qc?nA4+me)e!2l8AIF zOB@>siaIBF2*)!j&&%**zfKt+(RCLiMP){oB~`T83CAf^iotoQpbG+{6DospV|1!z zF^W3C7MS*GlzVpurObN8?sQO15s0e#;9PB%-8CUlUVZMF!gH`uU7JXdKv9O%iCzbv z+hA9)ueH^K!JIk&aN39$ePVj~Q@X9`+ssEcYHZI!ImUd(thHP+>60n%ekL4#tKK-n8p(0xV8 zo8+k!i>63aZE4&Q+4Nnb($OC2O0-f9CSf$Dz*&wT&Ny7V*z}BVId|r&8?PF6#7}{z zOfHzd03aVmmcQz^o_Of{?|i5J>tEH}t8e?J^}pJJ&EYr6spLTL{TOKA)N#SWvs({!dI5{D_^y@ zJVr{~?F*SCxF* z`ZqsOeQg&qf;a}gvx5TfGi~%Bfn;$c!?Kl(U@4#sb3D}T@klsLtJe{YRIl6~2aGa(k^Y5{d>bI|PTAc|JG80A?$Jo;|ZllyNpUxavF_KvGti(ClN%F?zkTAd48Q5?w^705ITn{^iXBg~?add! zDGESQqxmuoJ{^C)9a>qh*V&+4Nhi-%@MC-xxWD?V^;GW9h<{HAcM`J6it6M#ELM@QhdB*V9;4t^|TI zSlqPwEu&pPn+rq&q`ujDk4|+PQDVhZkp=*18EX%o{5+#-R|6|P!>~5Qr#zAl93^TD z9R$y6a;dfPIxZX-#>OIJnON8c3OnVkAB1IXKr%~V@GubSa~Ra;V6=AOl$+Al>{i>` zMr*;q=)j`)?!r10*S`9O+}?7M+R=8lcivy#!|yELy|RS0Sf^M9kDO#5GpSN69(c5_ z#7@=1{*(Q0{p()y7|_;?jVh{DYH#I0k#CZlch^U@Z({UdV64*7c6G<+ww<8pk0No4 zgD1&P#=y@{6l5S<0skWV3&Bl65?S%z2Pnr6VI9tV*v%*V`VJN*c>==7W-(TqKsmNd zuHJCAke1CF)~?jbuHGx?D+;JjAVD&aTnsqxy5GXziCwGB&q3A!=PYPy^UN49-UlRs zYy|~U0s3<*6ih?CeQV>uXFvY99Ew`4ypO0hQtXx(rPgLHR3Tq_@oWa&JAtg5pEZQiQOqRxeXVHLT7lVU(lqJBxU2V|?gPnci<3ZrW>5-r$v z>I{RXNhC<<4}i)4QY}^qnvLJkj-ksFm*a*@`2suv$b0;vs>%%H`mrga#dZ| zKLp|Ud^hdyMh*v}`K5Mv9z(5>Q?3o}e2lP>hSN#@fK5y+$}{0$pPMc^PyhjB2xUZ~ zlT3E!)+^M~ArIkHo6fL|=4-V8fh>U0afmM-v^21D>m-#Q_fK{Ajv`8!e5Uwz64?0w z(bG?QmIeb=oZVpytjfK{KB{J(*5S?6B4L+x^7M}bUw(A5>N(*`7{sVtc7B8l2Q7-X z)vv2^fOWb(YBY2_DE41Dt^Xy~b&eOp!_S|_a6%y2&*rI5CByei3;J2>pdI%Gb_VVg zM^E|y?rR`CIh;1?D}B_#0Pl@bo|hTH%E;C0C*j~Vv}5F5?y}fhuuo3*1tuH)J|LZd zmX1jE+YccN$5AAbkWRY?b=pR<@s_!5T9I`4qyu0hzh7Z*XX$H%H0E`p(UN(aJ~N2#S~&L;h+p=&x5eo>8p!K`P667)_0_idq95 zn+pg@#T@SO%(gXiu+ihRkgrC&j%r#&<+ydKAa3~0 zpDykbbCBi~%*eQvMk*>1>TdDXs26e32s+PgfzopQKdw)ykuXkgFp6SjGzF&;M(~?f ze{OU>SvL@kedih>9C%yw`@BsRl{D70(T*m193?|L5{ahmCOqfWDHmZBDU8k@j1(IN zUDbIY&77uz~u{k$rqIEftqcwlHWlD9jpVi$Dd|ZN4L};bqcWk&!D;zkV%F+r@%&)*` zeS6CL0o**#rt!iUwz2k$L>q`WKA8aT;5XKq&1eZb&oI%$C>a$M5JOd$Bvq-~dUN94 zZI=q(WL#-NWZ5TYCcf*i3}2uI{9etl66qUsMPc~7f~Z(j-s)eT@q)E%?G;)q+yTnm z14Q?DsPD|!w@Xj69(}^?tS94jKCieY*?u5EK%oC3X*flMRvI8mC+pEjI^5GTU6$XK z+MD;J!sv^>OZ$WA|B=aA?I$oc`(!>N+v1it{VX=}q6?sJUkK0sfKy@o)X+~rIspj? ze4GaaVnXS7ACia9Nt}2joK6!Yq=3Xn=--nNYB-A(L&u*@8h4*kQ#YKzIqKlMkMQ?h ziA`q`g31d01khBEqh*y7(pg1uanW$t5(+f4(QqA%mUxZhDqvKb2^~pm%BD#hI&I=_B*PAkMH+7SsVLF_R#ga%MVsIme5GsZDo{E}AEh4*K=~l4#`%A=gsGa- zH3Xjb8HE|a2WujEH>#p#3H-ed9cKAwkEZ` zr2yXhQfLd?bw%E!NwII{-1mL^OBR5D91ZQY1pQQSst8D!hqc<%8JnYx^JHv}R&S0e zt&OavDmWO4rVhrGt>NY zYo}d5L_%=nXsmD`ag#fVZ|kt1qSNPhBu-R5Py7am%{2*P(}jTGIXvhufF^rRiUw`o z)+`|!me^Ye zWp>~SHglwmWF?Kn`x9KEi31!YpKi)9QK-KdYj+N2EY@O8istFE+@MRbRv@8XqRP!W zJVQ`)JnL}hF`~s8+py}wM1K&>tr{HNyf&c1@1PBafw15^73vF?B_JSYsU6-zbe2Vb z6(C;qmXdOTOV7%5G%R|iO)8uvw=_h7Fkw{cI=JSPnT~~e#dmQU!*WL>k+h7S{IXCo zU^(l~c!w}-ePU_#k&J!<(gmGJNN2*a)w^!_Lun%>;*<>N4vo`w9TWg%pmQiC@p(!l z2%q5(%&C@Vx}Kx6oURrS67O&fpBzR}{FybIIjSn?q=chc?9k9ui5~3u0@g>J9vMc9 z#jF&K#+)8O4faRMo~8d8QH8W#--tZNIvCMA|dds@m-!o;yz4x-8*!fV{M1-A7OKs z4Axk#M(2eU@ci4m{0{5Lm~J5P`m>n@i2@6K&2Wa}hQThEuIVjAQ+5EM@oI_^g#9@z zFN`7DQePkhIyioB`i| z4g@5a>}yOm`UyxEnA0%dkoX7&eKNL1s^5MvF?~{Y?l0y70pX!wC(kkrt5eD#DL@Cx zjh&C};zNQ+5D|209h)E_otAB)l>*Nd&Dm_E*2c~PI|_$ckcc3uz?V?bc)`uc5+mDP zk%&8u6$8FBG0=hgadeyL#6)vD(wF@x3@eBfbMUdqKrs|77eamqqpDkhNTIc67hHQZ z+1J=znAQ)Q`6oVeK@-GsonZz-2ODJ-xdq7OTKGP=FH&U^30$p!ofs028t8l@-I3o} zk@a=OJ@=mXd8p$PaoI4g+(GAAAR}vaRmC=*Ak9Izk3QRWy8@m+S~JR^Oof6me7@9d zjyg@W4g=!hPa=j^TV2zZ z!#yN@+NisLI?DvocoHLsC*|bHS2ujqKoUg6eL@VaT^&cd6{K4Pl|V># z?=Ohpe$I{O#CEoqWe8<5JfBZA&8h2p2J~AR5)Tr0gzuC76G*HaM;~8;u}g6IFs|Ui zOy|DWpMF6cHtuy*mUfd!aE%%Xf2*nL##EVtF$rTf!wZvGt8E7Bbf@vTMIFxesQwWRaI602Dz8^#<_uj z;7g4oi&Hd&s&I-bX9|MlczBVWl*XeRtE#dY_PQuK1ybq-f|3vWa8$B^d>htyfLolsaB4LeBKbg=!MMsXfEvay(V}5h+EqPRZEYT{Yr3pT(I#Drt^rc@ zwI<88snQmZ3{r+UhI6Hj=hL%?5>ZU!JQ+2t!?{R}Mwa-OeAL=k>*R2v+XN&(Kc4{k zAnVt!C&PyiKkOs~$p?H~V#=QcvX}MLxq*D(OMv8~5SYhMS&F5pnkvdt)CStZAzJKq zo)bG*j)NCk_rd4_eL&ja_|~=$Uw#A6k#*{2Xz@riC=Bp~PITA-*x{UYaQu*1EYggQ zgB&mH;5Z?0(K()vd+Hui9j4DjnktHUQCG%PLeBg99y4rqVW}AC*qJKi%d}YGlpOl( zu&TwH6LzH+=sZ_Jx2?ND9&!|nfZ5e5FYG$f^4@gCU4L0(A-XaWqqy#|g5(ta7ApEZ zjpeu8_0Y_eeLm(WIGvyqBF|0M8Fp}CPVD@h!K@nT0>q;U`p?C>s&4J>6l7lj)O|TC2&ZsBJ{XsKB(7X?pL^9aN+`G> zx@GNB#oLMt3;HZEJY48jBviD1+<*W5#&$_b36hXYVDm;G1xNSh#dU@$Ga-K|$UdeA zPmiW@^f)i4lsSe_a%$s(7a!$$@eCjfV`VuCghWB|(FmL^ACBo@7`99by!S>T?0WTE zPdrHCrgwayaJ7Q5d=!YsE?Jfe!Xf{bSS%!lLO!Y}a-Ig~d-(5P|754M4irEx(8R7X zvgYQbsHC%->roj|SK79i)8kDQ@_{fdHR!`ok1LjN*)+y(LGpnkU@<)XZH#(~Nd=RA zt$hJhXIdh*56{E;#(-*?D6W&;nSLodKh@t4Tv03HvT2On!tSm)zs~2Gr*V7$^ZAhP z2P{W2@EOE9KC?W7zH{Nv-hGa8oTjU?uE~g7{x5II` zS_PfMaQ?RqmtLxhT+;H%tG~*ge#z%>uARYv_Y1c>6MX~{9`8py%zQR3s>v2E5^N!4 z<)1WH+AYN4xlruzs$DY#rvMaOsiX*^25lmQf#cM|floWK!q*0Z+qYpdLEV+UB-t0) z2cYN}h@TgP=+JR@12JQ%u2G%iaC$1`-wj+Y4R5)PX{@=*n0`^unH|;_e1ypab{BgJ~AxJb#64F_IPgz0|D^1Wd*=8MdtPkgD%P+pDm1Wr$mSgK#mTQe4 zr{fEOu{4HlZ5;UF#~+_WmVZ)4EM;dsuc}IgBt=DFA~^St(NeQ1Wya8^PtV29r}?9o zk7GH$5YFk=bPao-{#-mH?tmLf&$LTKn+D1VhzOIV>x5wi>#btIC-EUaKC6_;n}B2q zS192!X^ho^0pl=gEr!mID%SNX-EtLXGQRVkGg4l`_5dg)I!`oBV06{ZXlgDa#VYt< zhr?R4Ioa2CNWf*%IOU1~<1lJ1T1zA12TxE{i()2YlA3vrdK`Kz8rCDx4*PMZe?VeU zD`T;8tivf2md|E54*TU)BOthXs|lA$W2_bo7>7}7F?2qtka3m)L&`9d@xh$9v+_qp zpD3OGPHZD`b92eJmF>)*z4yX@{>G~RfRzXTe z`0NF+RFX8R$bRUhEG3SX|EX`WKT8z3n(zY7lc#pLYFX+aR{I*AVFnm^dsrr_vb>9M zT)*|xgc|4wgQA9!rC!2VZG$P#rx8_&QR0_%O*00C58Uuf%EW>(poGiT0zEgOIO)1UN&C88(L8}bh*8Ql+& zkc1^9StO*BCFD>@2%38_;1w>JMH34!RZ>GKMN7su7_Fcqlnu&YARto|mGHzWJ8in6 zmlmO6q>50bP7rL8MG8CGfMCRMAq~S&T%s$)e3od@*w!zlu+y&Vp>?XNG{E<^{anux zgZu7zk7fMr7c!nHw_3Qx<2% zf5Ch`RM%C3FrSe2*3fSryeO6Kr#Aubo-XMuW3h#2Tof^1u%T zTuT*Tlv+lL1sO%!tW(CVQ&t7VB!ObWQF4D90Qi?KWcc)~9b)moRgBx6?%4I&><-)D zH-^LXM3j8U6lLP z4|+Og=Gkt1kW--Gs1yTVVQgzOk7Cd;^!b=t`_4Ze);0YYO;^)ZRZiE#3=^h~NF?9c zk~6Ws$;!!$8gqv!4A+USJEd48O;IHL{Q_Ml9|Gz4T9IRKi-M)ala}q~I38c9BfbOD zIi6QC^ENZFf#v9gM(ejv-x@=|`uP-+S*pedf%Wx}qrLm}8D1KA&$dC67f_)xAEk zAn~v$9kjvwd`q774tqmydW%lNAv<=uE1r z=xv$V`hbW|cbeq)md70rD+(21oxt&-4mL(uTyku#`soM0XNtlxitH@% z_-5DVm%d3gwUMeyi>@k2KvMcSVSXM)l`(G62-;LP7uy39KIN^T_}>XI{%cJ3_4NUu za*DDpkCm{j#W}9=nU4PpTw|GV+!D>-(V!83A`o4lNSxUn7%@Otb`bRQqX@%*u3#x< zDz+Ve)|C$5SI=>yqSrvP#}EzswM?M$f9a){$SJ3sV*HKUvu4dA%a$$MV~OYrzwx+w z1_}91O-;Qf|Bynlo7RpS6T}0Nh!fIV0mFXa8jeX!$8?h4Z4!bJP|*ScpSQ!GJ4ihA zH4=}JB<@T!lC^f^ZC_lHQ(m>RA<#;8=|op3VSJjV1}s)*5v4?h?Rt2eFt&*dqK%&( z-6--^@F-)+Z!oCoRAl8A}8+C!QTvMiJvKH$UH5jN;d~Ky97W2yO%^MZJ zcO?w#mZi!vT =SzTi97P37B`a8RC_{NRGy7YiV89l}Vq-O;g&9u3+&tU%6%Dm3 z`AFcy4?o;P0``RwOXG&a*cBtl)~(;CAUlw$n6Bg_ft;M2ACj~#HoGfCDP0c7d;@HEi-w`YSUE{in_HUFllSoig}`CTIVqSf5q3z&2d)32Lh=l8&~yO!A6 z8aS)Bm0JB?iHn4`GKzvrAkZ3x^S?+0Q)$HzPO7fGip~ku1?M<5U|ra-XN*47@-O(bOO zZ{NP;pWAw_K|Z=8|BzpR&LrgQv(G-%(;e(J7$gKX561G67*S(mKqn`3Kt<2{RZuWe zDUul^8LxAk@Bznhn}K93=XtA!t6Ug{2?P1?!nVkA{Cbw2v6mObw&MTHtSs`FB>#=`McYp7&g`-GzU9G+szEi3$=A zBvlxK99yOhry3F@#mx9?G0$mBkdQs0%Nf?LvAmzrb;>ESMm3x_MXQk!&jjA85_QnV@*rIzQAgN zg;#k?t2B7@S(?SRO%p`4d|=F-6A5~F6H;m>cuOT1*@sEoau5O%0z*M&iCQq=9$bza z<=&ma#$tVSg%1nFBbO1xO2%q0WNh})tkpK!7}c}vAd_5*NIc+JH;LEv2#o%Tb#D@w zZsDmP7fW%Y{*jFO#!$pA4Uacsk?3z2a8 zmuI{Xt=W$QY;{VmJenofh-kp@Bbx1-Ea@r>`$Bg6yl^%8&n0sUli8JpYhFw<` z*`vr34;@K}<3*f$Lg&;^pzyH2R@b!-RaIb9Ylm*xJ@+inj^giR)fOT$?3amek%gj~ztUQZa zzwHIilTk#hj!K+TfWa2lD_U?%8IBtX{oFW)6Q;6)I0HkEWBwD^myMZVF&#Y=hk5QF zB(i2USjBxp>QoLg{{QISKmSRz&MimF4mk zK`hc)HlM_&vl49zJKl8FV)aCw?mR|Qurm=TI`GE#?HSbsGjd4O;kHRun@zGiEit=m zK-BKchTn?jb){M-gx8DL&S(rD&_pX`wyl|?a>8Jpt9O?0(f zvpI%QmKz9)0xeaz4~YQQ0TO5XAAb89o0vv3l*+GP@aViy48Osi3W+G*H*fw1>lhQR z?X#WZd8n>=pk3rpVEJ}io~Utxjc^=V4e`A}C61P`p7X9d3@}ISNHEaK5z$yKOQ%e} zPN-Ak#h7AuI^f>>L@55mbP?-tma-1lNFhBt+cKa+%n<5d!uK5&Da#A_=+8hHCI?8y zaX>zfA}l|J^1>9xY8}luoZ~R>2_|2|46vAn9?p3xlxZZM8w&?A*hX@Hz)BJ#n!3hy z)@3&e>5E=AQZQuXJw)OIwD9469*2k!W+2w2Xjm9NeimB0>?5kL(PH5aT~p!47?}~R zUdEHDQJ&A(--$YtkOcWaWuKVNz->fjW#wMKTeWJ{Ugbc^M_2hsJQC!ir{$+w$9_0~ z$`Pkr&>~_{6eZmD;mg-4%RYXEWw`;-NH7?Q1eXEvz^DH%lomyi(L$nuvTo6%AOE>i zewY_Y`~^Z{6M(;8A#w77)KTt4ev%DN$Be#|4uLX2u~>5h;f|%TwDd7Chijn5vV))l z)zFy|**q;fuO4GtV1O;g2+~G%RS+$hbPY4VV)}VFr=VJF=~26@OtQNMfr1-h3Hn?x z`cLPh;l1)8z;`02$YqSC4Jx!Z-v`IaiUr7s#U|)1ha<^UT()XtMh4=)2%{QUM1&Do5I?i7lL9uOYyZ;1oNt{!S@~8E>0z&GbI703I8mV*k~VHFMq{yD&nP@`UlTZIfb@> zTEHr?QHdBZgkY9HAmpCxbbhzxdjMJ#YR&H56?-Hho((n~&S=Ddkw{`f3hTzR37Llv$zXopEvTA$rrZEPh8yTF_$44cHv1>BZt7 z=vb-Z>~m)oqk-rWAk<7FIRIY$uBG?=`^~-GjWoL_{-P7bKrqXj;x45-zS3>y{dUK+ zkkvNB=S(@r?@T3oTx{82y+ic*FSGP^&p-o`mvW+6{_Iiq#p3O;3Dj}RfAx1M{c1Y+ z;ctUxb4O1`cFT$4S%G7-=8cPN!EjOL`JnzieyrTBj*Q%|%kBQIKR-eyRoQL4y#Fo% zgeiD}uQmk(mx-SGyCsWtVaRH|K(g7V;?;-V;Y?hY(?|~5&)nBJ&lK=oAel_pf!T7E zsk!k6!Uyp}M7Xy`Y<}(QW6kqRq%F@UM`wr6-U6ShPEfP0o~y%})1M z(41Us5=F|4T!H6DZB}y$Xk1-KxBo`8+S3H9RWz9`R5?>efGE7Yx&0no zRijbZrWl1k;PwU4hQjG|yG7BQhx@&(?6(0;$Ptstbl7aR~&|P`chn}eQBB2?yNlLVc(QT=vaN_3pYw;Q>Qm2 z^5C?%)tMh(=K(Chb$Iq!n;~*KKu?|iLMj`ScIRMi&I=vW(ty&f#(CykU!)%{r`vP zy$=;m+kj@K5Dn0{Xr34)LeOTnheV5u&Z&GSpi%y&+Pv5t)ZUob{a-%oi^*J|KP`K&3T3SG_|;3wgkH- zEqQgFc|26n|NqIJ$&zG?u}g%;mUZkBg@~+U-?!|9v6Ef4kPO05B2t!^BKtP7j4iTn z*$KnUe6RX^zrWw(_xS$ipL_3|bKi6B`^-7d*LmNW`_6vP2j|~mT(^&|iha;amP)i;;6cZN%>EfnoG_&N1C+9xT#b&F5w3M-U zy=%mGh+hjG2Q84>wfV8U-W?V>_;~Hr zz5s8A*LTl=k3kmeI0l{h&A3ZOt~`0k0a4_B$?_q`Y4|F^0}MsXJHRNztI5VO+ReKyac<2%c5G3Vt@x|6IMTh8LSw=;&t z94MwtZ$~V0Pz+e7kN-KI8+oQx7o7LVf}JyOL&c)NjGeF0l4Wgsio2}IzsdBtyG&yA zgy>0P+0KV+59MC0%)!~RPT6S9c_+36%M1e;SeacC%Gl_e49Y?e!FEcw4IH;Gp9ZVG znA4r3$KrLDhKTb7Dm2BO7p8y67@Cf#g==nolWTQ3nuny*b6d32nOQYNbH`hhuub!@X7?)qf5%*vkynGgm92uzs<>FK*2VA2rko zA?2lexF9N-ipdS86UzU*Yqn=}kIu4VpKwVFYle2&Y&uKNkLo2gE%$mb*dq8c*UYai z|4%`QMIucvqw#v=rV=ESlQataNS*qTmvOheREHHSL+oTC ziV{loWJ?0;#FUpA^@6Bt*O(+%cFMDOHm@M1nFY#B5$SNyb@iTKSYo{@B$wQ`P4cCz z{P8o=aDuWyO{<*WrnIV&nIvm?u-G&!nbunFtLf%gk=Gm5rk?BPn|yVRA~#KudjV#t zK79|An|&N@jR%jH`%QYjY(`!;6KWm0!j*U%jW*-Vp-9vQt1LbOt1yV>x^LNqoUfbE z`MwE$N|2pFN%1BW7HK($TX_}N<7l~^0$!?0IqITUkTiEK>aVn%>Ml59JC74Tpj$CAc-v!5k_;3(mgnp84P@L zmB0MiTdPkk>+a{je{R$Ij~$MMeiWL(oJno_P;F&A-Lx=HbT-Mqoht+XGl;`JYJ_Ta zj1eL_m%%m;k4opKc&>#k99s2nV2L@K*f%1iz*8&738|Mvc2 z>b2dS0O9jq-Jb9!p(an_jJ4nm(N?wY-Q+y|f#|$=fLR5>o}%G3rwFO0N%V}bXL~vX z!k@V{L2RwM2Z_!%uI%~pi!h8Nu0&u2Mb%eI1ihj57FxO~B{WD#uM?%;>?QrsB#rr` zE-fDBwTGX|#%-m4;LMTUcaD!FM!ws`C&yxbP%>@U-N(r!sFC0D#(O>q!GP{*|rm!(;0NhC^uwk3H>SYfq7s{x!u({ zn%WOi8pbg?sxnCfx$#2%HSvp;KrY+ds4_`i%D@qwZ+gZ7tLY>t>{u@q{Iiu`boxvW zQ?#JB0h4_`dUyT|>H*63*1gJr=RRJvb@}tvHtRa6+?2P9yMWHO*=-F2Q={a1s|5KM zSDXwDZcgw8odpAa@D-OSeFb4v%zFZA!wl`-xH%7Q@(mR(cB5cP(KB9+*nzvIgwTYY z!RiN<&YmAcRtcc!Ha1>f19byQ#o<$sl%%P6M3~ZOPY!lc@1iA~@{{%?uXmoGl(^_v zlUyZ{V91h=b5eKV*{^X;aF}OY+ADP!5!1Jluy0}GELRgmQU?y`uTC@hQd&ZGNh z6j@xI-1d#5U5C6!#|VC=-eBa}tq;ik-tYHC$pSpunaexRPFX~HgWjCFwJ~}%XubFN zvSEO=Lz^od@(989&veO6Q+GCJa5+*PPv{=`E?0n-vkcpn7?K2iLex-FxP4j;U1j|4 zl>7MCo<--PR!fLX)rst4>2ntyJsplC$C4pswv9r)_TKu)E0pbGpmwpQ_E06}SZn6k zVRk7_;26}tHW(j!>AiWQx1Jfk$#2s)UpQgW=iDx3NDP!g2@)cCq(5KqUa>4ubO6WE zqGp-Na}0L9IrxH4+iJ4b9!KroRe9~MVwdj66TsT@wij)%`I5lCzqNJImooQT z<*QwII*O|-P;qe|r4WT*C!Jl!`iq)5uIvPZ99N}~sd3=1Fk(8zbO8dRaI65mM@x_u zHMP4zBZpnnPI%HQP4diPsjSU!SjRB(oo$x8xGwC`<~(p09?jP}jAb92BkgK!rpTTL z>O_pJCrx4&be5lAFSKUn*MI3%V#Pmnu57++JK*`ciA8ZXAW+G~@}YEQ4&(aOIVW6O z&fDnox0dXBlRtpdy@|vc+RJCzl>!v^2pM49G3BG0@Hn~#gb zaHQa9WuNY5keO3K09P@@QaLN_k2qg9dp7z>F>P|9p_MHK47K>PJLP-Q{uWb2g;KJgM3ow5av5MDCt_6eD^vJ(kZ?ObvNixw37K9p{k&#grEn)jqoG! zR2WiQ2|NGpXf=kxBqv%&*_U?w*{95v^271=im|tJC2Vq2i+UN7pRCv-_xEVn((VTN zFY-n8a#&7N$~5|b?y|;ead7K&Vr+z|JXN@LG~94h9v533+;a~VngVr#ngo}d(!!hN zz^a+0t35xDAI6yFpxn{)cXSpQ>=ol(d9v~QYLZ;~D^c-PP~`{rGEX^eHgpXcyq#WR z1@fqX@h6bE-f%YiiP&D^a#`cR#i>2_)YW4~M@D!`%gR_GByW}XbYUT|AbT!hizd45 zW=}3Pi|8Z7LbCLmR~?C^-sXo1RO#59V!R9z)y9ca9EHVT=Oi>xMAgFAtOP~K*Q=Fq zK+y~{PP!Nm8AVO}cbyxhVN#q=y*tJvYo4~)E3q6=oz4+*9WPoy{umErvq=YwKB*x( zl;R@qqRmgOtlTv+VNuJa8{j(7H!~504w|;G`bu$GAAHaqE=CuYCzK*# zFb3{?S|W95rgA3L@C^vKzCHmjJX&2%l|Im=s16s|fW4~=gMh0Av7+j@k~%anjNO(wI9W{XONE~O7U$%td3Nk!u@hsf7Gj^-H_lq<$u;An+pybm ztR%(FCKYa;GUTej8taRHcn93<#l=%gWiyBH64uvfbgOb!DVV;7;~3S|ctd_9Er^xm zxWcmuHy?(R9+l8feuO>4_1?^>0*|LXREMGql#$%CMDyMgl}Ap@CWM`9xD#Sdo?7RO zKiDjN5iL@I0Kz_fD*12X~K z4t!2k9G*fSrm!&+7p#yFHW~d(DhrCtz~hj|@x_JXXPQNDl|d34-pqBx!*Zf7icAB6 z(bli-oj0y!Ttg>SZ~P22Gc!Bu8_QR5QQ-L<_Mk*m^O>gUn3?Ax27u!X&~ zw{uC@2lQAreZsWtrf3oxhN#2)j{@NWcs=nBNt`epNuMgrX~Tful(Z!<3ITK9m)%ECo=%JUJ@@>G zpFL$meEvNjVc+mzIanzJ)?x74=`ROj01o_~ac&M8tIWdvgeh>OehJ(CMzLH!(zv~n zaCzs{HYj}fooRg~;lmUIEE(nTQ}(v1&-qhU*lmnZYcQ$Hxk*96VYJ9UW7dvJ=ny1H zwKV{!eY9NUcprD{8};pSMwj#c{(j}Xqj11GJd5I>cHT>EDeQ8wEp@W=S`Qv1e_`MJ zkgeb=sA%yU7C289BsXrGGPK7ad4U@4JHJ8q-kip_b_27%s|?#KS>pTe66M_uWE6(> zWWu;R9hqabBo;PEAcnDvIt-afe8Y8B6`^_;Y>fTOMm6&XV#8=MOn0Vu*Xl{n4S+Td z+~T)L{&ojQ{3`#9n%!R_>x4{%Uvv?uM9%I1g*6Qu-37g^edGQE^rr^?W6LFZXYv0z zZnqgUNZctsih+e$Z?|Fyyh)wW-z6Dt{iS~oRc`8(oc}w%gNS^xhFAqB6%B0gE8+`- z%q#D1uJEvdultrkj|C|6(;9g~75*a;UNJ(zPV!+z9;xHeHUDZm+#BtWd%KlAU?*Qo zIN?L6OLEy8Tj1@!RLc}Aa=PByE`%c8Rzt^lf~uZ(=Owh?Ib`BX#j7($9ii&QgAOrW zXsALEAe|g)@Mq(^srbJY((wtBiR9~ZjVo2WKVV>0!eR7ybsp{ApNCf+K50vF3Dkg+ zdzP8nsC|yV)cr1*Z}pgAN&Aa2HJ<-3;r`bmMhLr|BIQo0`0~-cJlh2bCq4h7>z(Xq zX)a&~gk_kHR(qK=fn}Kazqc>33_qi9C??|7E~@dA{o4Z7Gy0+f1(y2~t14vN?rD6j zxpG0g_sLJNeGFsKYPqxvfW?uE9qvzf(*KQ%fq?11HMs$!e=FRL!he_GdNym~f5}+W zxu^`dQ~!G#o}$xz@A+q{GQyJaw?68ewky;-QH7$>NNHu-S!AH9>8rXYrsl1IhTiRd06yoTWP~g95r(>>eA6F0`F~mNTA*j)x>Foe(b2? z9wP}4Y!6Z9WYnHdE>pw93YD>QO1MOQf{pDVjBr`_RWg=|<;`3i_N^WvpL{*eI69{0 zTFx1%>Y*_L|Egp1QKL1MKz5W>!HFh@UiG$!9ov|#&hxJ1RuM5-7jwr zxnd|tuN~}NHtb<;wnMZf50Ct`Ef-hl@+mt7O^ z+WM$gel;oZ}&Mb%KYlAN>sWoPI1YecO{C> z|M$e5-vt#x9mb14%^=mJgI%cOU0n;z*l2{`Yxjup5^JOP=7Q``EGT}c2ktf_;0krM zq~ld)(hDq;u_Th!CoYPbID2Fh-Q#CijGyG09$|^hG&PnB=l9l;*j$3q%Gj3B^k&~+ z>qxZn<<40R`O%Q-&+w)qxP`F+$+*wzZFI1N&J)5<06H8(Kg<%ROABr`lB%NVW#lBrcflx>cUNJ zSZ)1dyHQ*ap{dpmwSwj0BB>RIg)`;xO^np|ssYN75Q$bixcL6M}K3@XT#sNVIU+jFEt?_kAvZKaf%YN(r{H|(7zj!h5c zzo)xdO?=9#b8|(N30GRDM*w8oE|uPZ=5`_=HrV`r5WJ%CHK%BGg6Syyc`@vi2)V-Z znd8V4tp$I;#}Vay>Dob29G;(cqc94~(@Io%+C89-t4D%;(Wy+~O(S5U$&j@oLJpE} zbrc*#3>a3}mZ8ef{S@@Z zx4BjeCW^97QDNcVq6dNUOsNAbxr{l!}HGWMUJ~`YPqvUT8p-$(Q8wnP!itehsfmr`~dyA&*96&{>o@V&g8v z1^_`t0BhLJ)c&xf@en#5$iL+!FOzL9j#EQ|QSKjs+Sh+~O}wOy^wj9OU|he+>7n7= z%T^A@f25P)F|~tI4*uhxIInF1j`Qw6Lh9&z>j)K{_kfvU03I#E)5o9$*|h+)l;pK)Cd;nyC)xP&{d5Yf`Bw&$f0LROE~t#e!`x# ziK5aJ{NotF8lC*yLs6E9`6ltEe&m7G;i;~F_H8r%Dj3QV;RgZKf`g4XH%aZmmz*$7 z*V0S35cRKfDJxILCVXC--Vi@1w%3TQrMouQyipn8tU#ml@|4!?0cEhjB|>tw;B-v~zRh$}L*)BDzGh)A>4VwL_h+Zm zv+;~(wyKBhdcIM_*vEzp2$A=n%);Jlns=;$(1RLkV2_p~Bj=6LieKK1R{KjmoRpXB z?Cg|+gJs{8mGx>Uy`5lW1XB{Q)t~Qobf~9gufz%(l!f2S;}jQX$N_mZTX>yqO?5aj z19=Sk!jZYOe49#)94rygh?J}vn-Ej6Kg+>gMvJz;eFPosLQD?_m5}6OSb3+Q8wq#< z6T5M;yIP%Lt#!R=QB94W6xgB8#PV}}eUEG5P`Q?l1lYHV?k0Ihp+p6p4nMK*^+Y$7 zsp;wElZbHGY)*dyKSi6EPMcUUKXb3_*Y(SkhfuBsWK%9*7(NkTrs)e;~CD6Ij?IVo;eBylpEWo{95n{%Q4jdVaLR zzVaTJW8c5R` zY(s}NG`p!x!~@X)en4K_uM8DYdztzh8dgCFs=qXv(9KVgp!>o3xfGX6nMSHDFi9=b z^Dmj-elVf8N|bCZ>Ev{Y(H7$w!fnfzo_t>_@*C&jpFeFq83N1v%yI2p`ScJj{tT+% z;9x{^v)QbtupWrig2#!TOgU2ND}{xHds;yO`TBarzKs+~9=%ZK(ZUCGD36`^8$1~J zV(V!5MZ`;hqhGKLGXfgOHjnPMO-JSVm>=&aO&H4P?TOQVD?1C=q4^^vW5&zLD@ow0 z!eMe3EN8~kh3`~%gAb8k`0M6`Jn~`50<1!+rEjV3{_7mh}t8@G9)K@uE2J@WI9OI`HUfR4sct zbr!Cs)l%w~ZTOV03Wic#M5=rQ1pTc@mcegdG*6{;KOwx!<^_g^V%ur|+p$^xw=Mr4 z1d}X6##xG&0Wi>qLDS(N43U$%?_44vv$FdtF1@iuH?eSMhe>`ir(%m{EgX#d0sPmP zXF0?<_8oXGK(f`+1iAP9v9yKgaIvF~v;Y0^Y+x3c<5nB!Jd9J}I)`h6n&$a==-&nlvJ4zj~(=JBl`$Pg03 zX}E{Xsu_RPLxk+ICe_GK?LP3#Bo=#wN>AH6ncWg;SnD%Fk3`Eu9BB-X55F3gGu(e_ zW>J>F{X3iYgi#S{%AE&WDr2H#qbu*TkCJBUk7#eC=@z*iu2tu4?JX$6*O;cjLqYS< zzkPExi+D@(tbJXWvW47HnK_mPP_Ny&5V~j%RCruMHN}SoAScJ`t#dXOsL5pW5H)qL zTUsHeB%i8iSOmkw_-*OX_h!e@X)i=Zl(sd()lZ`T=5x0&t^*~Fwsn6qF7Xla{FUqN z+I7^wL{}d~1w0L+$jMoG7=alo;D_p-eRC$^zT^mHj(r|c1LW9fz(*v-dK+)hKw4?Nkgb#G$g&D`2vCa0&+Z(?#u~$r^XN1q(%1RAXcjmFOkdNT%P?K|w)* zE#pJ?*mSv~sV#@@ex1^NoxCGMjvxc8h_u{=GQA)pBcod%KOUkNi3ddKtGg~3m8*Y5 zd|J~)BBC9@Y;@{%zLerA@rH1+ZTYjGBE3MN#{Pgpzulvx5Ufg?cWQWtRVuMVnD$gs zPIy1BpV9_c(55@yiy6UOAM^48*1BRO@y%4R2pFnwpDeJ*BvRpuw$G?{%dJA>$;LZm z)8nuka}y`ufy}e~3J3k-v4$?`Sa4`qoky3_fKcXq;Nh_5GXKjy5i`mG=@#l!(c97P z)3aImRz_8(eEQ^enGeL$OJGhC+N>g{z=HwDE%^8vy}H<8NEbIZ)4cqAGJX^hS0ZUw zYGHJRfxu%0obSL7U8n*%3V(zVX(PzQYO{&7ASAw_H+?SJsy6dL>{j9HVh4+SkFrIb zJ+AXUv*Se|4BR1b@O08Xhs8yO`*4%yXY!u}A)=23;OS59Bs~3b=~zJ$m6gacSfNxEM?wPnWGk11$?^$x z94*NWSqTd%u&?8c!0SMpk1TYi!o4c&P)N@0>5rn~BMDE%i{9{(l936bhtp|10@!XS zOkMHw<9BkCCo3qpdX7If{t;-^8q^4e(g0{;7A`m{VpzGA519b~RrPb6|cpq6<3_u)5h zU4|z#)7H;0!fCuv5iUAX2H$|=Z)0)t=;>LC%^B~{HI{dOf_T{IJi>q&`-=u~P7MNf z`Q!%FWbrIS5iyM)2#}rMNQK5~l)fTg`SI0^l~8Lo=?T&shzxf9Is502$4j3|ie5hP z5NAxBS3h?o=jC6N_t9Ilkr@Y41!n}SIr@|c~E(Ct9fR*X@ zD~}vV-6JD@#7p(=I$Ox-ED7xrWBBLP5KRIyht5$En6uQ)55lA2I2MY3;T#B?#86k& z^0L?V;d)Kr;Ef=Y@V<|)ZZyh^ihA}h2zEwXhg^+#|K9T6g9lMr>f*l^-d$?Ag`#{v zSa@06OJQgwGOI)U>(=1+#mp;u@R7ck>~!s7R2?;-csGu@3))Fa>c>4`f