From 2680aafa3f3fc68accf20928ca09a6f442abe4e7 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Mon, 20 Apr 2026 16:52:59 +0200 Subject: [PATCH] [MDB IGNORE] Lavaland Mineral Rework: Yapmining 2026 (#95682) --- .../LavaRuins/lavaland_biodome_beach.dmm | 106 +- .../LavaRuins/lavaland_strong_rock.dmm | 1 + .../lavaland_surface_ash_walker1.dmm | 391 +- .../lavaland_surface_bileworm_nest.dmm | 38 +- .../lavaland_surface_blooddrunk1.dmm | 164 +- .../lavaland_surface_blooddrunk2.dmm | 240 +- .../lavaland_surface_blooddrunk3.dmm | 201 +- .../LavaRuins/lavaland_surface_crashsite.dmm | 7 +- .../LavaRuins/lavaland_surface_cultaltar.dmm | 67 +- .../lavaland_surface_dead_ratvar.dmm | 100 +- .../lavaland_surface_elephant_graveyard.dmm | 265 +- .../LavaRuins/lavaland_surface_envy.dmm | 2 +- .../LavaRuins/lavaland_surface_gaia.dmm | 2 +- .../LavaRuins/lavaland_surface_gluttony.dmm | 2 +- .../LavaRuins/lavaland_surface_greed.dmm | 2 +- .../LavaRuins/lavaland_surface_hermit.dmm | 47 +- .../lavaland_surface_random_ripley.dmm | 2 +- .../LavaRuins/lavaland_surface_seed_vault.dmm | 9 +- .../lavaland_surface_shuttle_wreckage.dmm | 82 +- .../LavaRuins/lavaland_surface_ufo_crash.dmm | 125 +- .../lavaland_surface_watcher_grave.dmm | 11 +- .../LavaRuins/lavaland_surface_wizard.dmm | 6 +- _maps/map_files/Mining/Lavaland.dmm | 580 +- _maps/map_files/wawastation/wawastation.dmm | 7522 ++++++++--------- code/__DEFINES/icon_smoothing.dm | 25 +- code/__DEFINES/layers.dm | 1 + code/__DEFINES/mining.dm | 50 +- code/_globalvars/lists/mapping.dm | 18 +- code/controllers/subsystem/mapping.dm | 4 +- code/controllers/subsystem/ore_generation.dm | 90 +- code/datums/components/style/style.dm | 4 +- code/datums/mapgen/CaveGenerator.dm | 228 +- .../mapgen/Cavegens/LavalandGenerator.dm | 29 +- code/datums/mapgen/biomes/_biome.dm | 75 +- code/datums/mapgen/biomes/jungle.dm | 57 + code/datums/mapgen/biomes/lavaland.dm | 12 + code/game/area/areas.dm | 68 +- code/game/area/areas/mining.dm | 4 +- .../orders/order_items/mining/order_pka.dm | 2 +- .../effects/spawners/random/mining_loot.dm | 2 +- code/game/objects/items/stacks/bscrystal.dm | 4 + .../abandoned_crates/abandoned_crates_loot.dm | 2 +- .../objects/structures/lavaland/ore_vent.dm | 4 +- code/game/turfs/closed/minerals.dm | 730 +- code/game/turfs/open/openspace.dm | 2 +- code/game/turfs/open/river.dm | 31 +- code/game/turfs/open/water.dm | 14 + code/modules/bitrunning/objects/disks.dm | 2 +- .../ruins/objects_and_mobs/necropolis_gate.dm | 2 +- .../kinetic_crusher/trophies_fauna.dm | 2 +- .../mining/equipment/mineral_scanner.dm | 26 +- code/modules/mining/ores_coins.dm | 110 +- .../basic/lavaland/goldgrub/goldgrub.dm | 24 +- .../lavaland/goldgrub/goldgrub_abilities.dm | 8 +- .../living/basic/lavaland/raptor/_raptor.dm | 2 +- code/modules/mod/modules/modules_supply.dm | 23 +- .../mapGenerators/lava_river.dm | 2 +- .../projectiles/ammunition/energy/plasma.dm | 8 +- .../guns/energy/kinetic_accelerator.dm | 79 +- .../projectiles/guns/energy/special.dm | 64 +- .../projectiles/projectile/special/plasma.dm | 32 +- .../research/designs/mining_designs.dm | 4 +- icons/blanks/480x480.dmi | Bin 0 -> 253 bytes icons/effects/mapping_helpers.dmi | Bin 27380 -> 26956 bytes icons/effects/ore_visuals.dmi | Bin 5843 -> 5305 bytes icons/turf/floors/water_lavaland.dmi | Bin 0 -> 17961 bytes icons/turf/floors/water_lavaland.png | Bin 0 -> 5552 bytes icons/turf/floors/water_lavaland.png.toml | 2 + icons/turf/mining.dmi | Bin 44267 -> 35136 bytes icons/turf/walls/red_rock.dmi | Bin 0 -> 16037 bytes icons/turf/walls/red_rock.png | Bin 0 -> 2716 bytes icons/turf/walls/red_rock.png.toml | 14 + icons/turf/walls/red_wall.dmi | Bin 16894 -> 0 bytes icons/turf/walls/red_wall.png | Bin 9365 -> 0 bytes icons/turf/walls/reinforced_rock.dmi | Bin 12605 -> 9877 bytes icons/turf/walls/reinforced_rock.png | Bin 8067 -> 2910 bytes icons/turf/walls/shale.dmi | Bin 0 -> 12829 bytes icons/turf/walls/shale.png | Bin 0 -> 2210 bytes .../{red_wall.png.toml => shale.png.toml} | 14 +- tgstation.dme | 2 + tools/UpdatePaths/Scripts/95682_pka_aoe.txt | 1 + 81 files changed, 6268 insertions(+), 5581 deletions(-) create mode 100644 code/datums/mapgen/biomes/jungle.dm create mode 100644 code/datums/mapgen/biomes/lavaland.dm create mode 100644 icons/blanks/480x480.dmi create mode 100644 icons/turf/floors/water_lavaland.dmi create mode 100644 icons/turf/floors/water_lavaland.png create mode 100644 icons/turf/floors/water_lavaland.png.toml create mode 100644 icons/turf/walls/red_rock.dmi create mode 100644 icons/turf/walls/red_rock.png create mode 100644 icons/turf/walls/red_rock.png.toml delete mode 100644 icons/turf/walls/red_wall.dmi delete mode 100644 icons/turf/walls/red_wall.png create mode 100644 icons/turf/walls/shale.dmi create mode 100644 icons/turf/walls/shale.png rename icons/turf/walls/{red_wall.png.toml => shale.png.toml} (56%) create mode 100644 tools/UpdatePaths/Scripts/95682_pka_aoe.txt diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index caf994011d8..22ffa00cf48 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -769,9 +769,6 @@ "Bn" = ( /turf/open/floor/carpet/blue, /area/ruin/powered/beach) -"Bp" = ( -/turf/closed/mineral/random/volcanic, -/area/lavaland/surface/outdoors/explored) "Bv" = ( /obj/effect/turf_decal/sand, /obj/machinery/light/directional/east, @@ -793,6 +790,10 @@ }, /turf/closed/wall/mineral/sandstone, /area/ruin/powered/beach) +"Cl" = ( +/obj/effect/spawner/random/entertainment/slot_machine, +/turf/open/floor/wood, +/area/ruin/powered/beach) "Cq" = ( /obj/structure/sign/departments/restroom/directional/east, /turf/open/floor/wood, @@ -832,6 +833,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, /turf/open/floor/wood, /area/ruin/powered/beach) +"Dh" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/lavaland/surface/outdoors/explored) "Ds" = ( /obj/structure/closet/secure_closet/freezer/kitchen/all_access, /turf/open/floor/wood, @@ -981,6 +985,9 @@ dir = 8 }, /area/ruin/powered/beach) +"Jj" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/template_noop) "Jr" = ( /turf/open/floor/carpet/purple, /area/ruin/powered/beach) @@ -1074,10 +1081,6 @@ }, /turf/closed/wall/mineral/sandstone, /area/ruin/powered/beach) -"NJ" = ( -/obj/effect/spawner/random/entertainment/slot_machine, -/turf/open/floor/wood, -/area/ruin/powered/beach) "NK" = ( /obj/machinery/grill, /turf/open/floor/wood, @@ -1409,23 +1412,20 @@ /obj/structure/curtain, /turf/open/floor/plating, /area/ruin/powered/beach) -"ZS" = ( -/turf/closed/mineral/random/volcanic, -/area/template_noop) (1,1,1) = {" aa aa aa aa -Bp -Bp -Bp -Bp +Dh +Dh +Dh +Dh wL wL wL -Bp +Dh aa aa aa @@ -1442,8 +1442,8 @@ BE BE BE yc -Bp -Bp +Dh +aa "} (2,1,1) = {" aa @@ -1451,8 +1451,8 @@ aa aa aa aa -aa -aa +Dh +Dh aj gs gs @@ -1475,16 +1475,16 @@ Df aF Fr yc -Bp +aa "} (3,1,1) = {" aa aa aa -aa -aa -aa -aa +Dh +Dh +Dh +Dh aj cg Cs @@ -1507,7 +1507,7 @@ kh aC hS cd -Bp +aa "} (4,1,1) = {" aa @@ -1539,12 +1539,12 @@ CK IJ mE CU -Bp +aa "} (5,1,1) = {" aa aj -NJ +Cl Fa xg aC @@ -1571,12 +1571,12 @@ aP Wd aj MZ -Bp +Dh "} (6,1,1) = {" aa aj -NJ +Cl Bg Ti Fa @@ -1603,7 +1603,7 @@ cE cE gF MZ -Bp +Dh "} (7,1,1) = {" aa @@ -1635,7 +1635,7 @@ uz uz lq MZ -Bp +Dh "} (8,1,1) = {" aa @@ -1667,7 +1667,7 @@ uz uz PN MZ -Bp +Dh "} (9,1,1) = {" aa @@ -1699,7 +1699,7 @@ uz uz lq MZ -Bp +Dh "} (10,1,1) = {" aa @@ -1766,7 +1766,7 @@ IP MZ "} (12,1,1) = {" -aa +Dh MZ VI VI @@ -1798,7 +1798,7 @@ Ro MZ "} (13,1,1) = {" -Bp +Dh Fr yc VI @@ -1830,7 +1830,7 @@ Ro MZ "} (14,1,1) = {" -Bp +Dh wL MZ SC @@ -1862,7 +1862,7 @@ Ro MZ "} (15,1,1) = {" -Bp +Dh gX cd VI @@ -1894,7 +1894,7 @@ EL MZ "} (16,1,1) = {" -Bp +Dh wL MZ dj @@ -1926,7 +1926,7 @@ Ro MZ "} (17,1,1) = {" -Bp +Dh wL MZ VY @@ -1958,7 +1958,7 @@ Ro MZ "} (18,1,1) = {" -Bp +Dh Zi Mf UT @@ -2114,8 +2114,8 @@ AE eA qf MZ -Bp -Bp +Dh +aa "} (23,1,1) = {" aa @@ -2147,7 +2147,7 @@ gC rO Fr yc -Bp +Dh "} (24,1,1) = {" aa @@ -2339,7 +2339,7 @@ BE CU BE Mf -Bp +aa "} (30,1,1) = {" aa @@ -2349,7 +2349,7 @@ BE BE BE Mf -ZS +Jj Fr BE BE @@ -2364,12 +2364,12 @@ Mf aj aj aj -Bp -Bp -Bp -Bp -Bp -Bp -Bp -Bp +Dh +Dh +aa +aa +aa +aa +aa +aa "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_strong_rock.dmm b/_maps/RandomRuins/LavaRuins/lavaland_strong_rock.dmm index ad90df10167..7b06697eede 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_strong_rock.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_strong_rock.dmm @@ -1,5 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( +/obj/effect/mapping_helpers/no_lava, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/template_noop) "b" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index 6bf42240c85..469eff6ff5c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -6,13 +6,13 @@ /obj/structure/stone_tile/surrounding_tile{ dir = 4 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "ac" = ( /obj/structure/stone_tile/block{ dir = 1 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "ad" = ( /obj/structure/stone_tile/block{ @@ -21,13 +21,13 @@ /obj/structure/stone_tile/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "ae" = ( /obj/structure/stone_tile/block/cracked{ dir = 1 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "af" = ( /obj/structure/stone_tile/block{ @@ -36,37 +36,30 @@ /obj/structure/stone_tile{ dir = 8 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "ag" = ( /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 1 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "ah" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "ai" = ( /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 4 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "aj" = ( /obj/structure/stone_tile/slab, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "ak" = ( /turf/closed/indestructible/riveted/boss, /area/ruin/unpowered/ash_walkers) -"al" = ( -/obj/effect/mapping_helpers/no_lava, -/obj/structure/railing/wooden_fence{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "aq" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 @@ -74,27 +67,11 @@ /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 1 }, -/turf/closed/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) -"ar" = ( -/obj/effect/mapping_helpers/no_lava, -/obj/structure/railing/wooden_fence{ - dir = 9 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "as" = ( /turf/closed/wall/mineral/wood, /area/ruin/unpowered/ash_walkers) -"at" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/stone_tile/block{ - dir = 4 - }, -/turf/closed/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) "au" = ( /obj/structure/stone_tile, /obj/structure/stone_tile{ @@ -154,12 +131,6 @@ /obj/item/flashlight/flare/torch, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) -"aF" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/closed/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) "aG" = ( /obj/structure/stone_tile/block/cracked{ dir = 4 @@ -210,13 +181,7 @@ /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "aR" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/indestructible/riveted/boss, /area/lavaland/surface/outdoors) "aS" = ( /obj/structure/stone_tile/block{ @@ -323,18 +288,11 @@ /obj/structure/stone_tile, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) -"bh" = ( -/obj/effect/mapping_helpers/no_lava, -/obj/structure/railing/wooden_fence{ - dir = 5 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "bi" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "bj" = ( /obj/structure/stone_tile/block/cracked{ @@ -489,7 +447,7 @@ /obj/structure/stone_tile/block/cracked{ dir = 4 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "bG" = ( /turf/closed/indestructible/riveted/boss/see_through, @@ -583,39 +541,39 @@ /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "cP" = ( /obj/structure/stone_tile/block, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "cQ" = ( /obj/structure/stone_tile/block/cracked, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "cR" = ( /obj/structure/stone_tile/surrounding_tile/cracked, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "cT" = ( /obj/structure/stone_tile, /obj/structure/stone_tile/block{ dir = 1 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "du" = ( /obj/structure/stone_tile/cracked{ dir = 1 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "dz" = ( /obj/structure/stone_tile/cracked{ dir = 1 }, /obj/structure/stone_tile/cracked, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "dB" = ( /obj/structure/stone_tile/surrounding_tile/cracked{ @@ -628,24 +586,24 @@ dir = 8 }, /obj/structure/stone_tile/center/cracked, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "dC" = ( /obj/structure/stone_tile, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "dD" = ( /obj/structure/stone_tile/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "dE" = ( /obj/structure/stone_tile, /obj/structure/stone_tile/cracked{ dir = 8 }, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "dP" = ( /obj/structure/stone_tile/block{ @@ -952,13 +910,6 @@ /obj/item/flashlight/flare/torch, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) -"vV" = ( -/obj/effect/mapping_helpers/no_lava, -/obj/structure/railing/wooden_fence{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "wB" = ( /obj/structure/stone_tile/block, /obj/structure/stone_tile{ @@ -1232,13 +1183,6 @@ /obj/structure/ore_container/food_trough/gutlunch_trough, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"Kg" = ( -/obj/effect/mapping_helpers/no_lava, -/obj/structure/railing/wooden_fence{ - dir = 10 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "Kt" = ( /obj/structure/water_source/puddle{ pixel_x = -3; @@ -1343,13 +1287,6 @@ /obj/structure/stone_tile, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"Rq" = ( -/obj/effect/mapping_helpers/no_lava, -/obj/structure/railing/wooden_fence{ - dir = 6 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "RE" = ( /obj/structure/stone_tile/block/cracked{ dir = 1 @@ -1687,8 +1624,8 @@ ah aa ai aq -at -aF +aR +aR aR aR eC @@ -1905,15 +1842,15 @@ cQ "} (20,1,1) = {" ah +aj +ak +ak +fM Gv +TC Gv -Gv -Gv -Gv -Gv -Gv -Gv -Gv +qH +KQ Gv Dz qm @@ -1926,17 +1863,17 @@ ah cR "} (21,1,1) = {" -ah +aa +aj +ak +ak Gv -ar -cp -cp -cp -cp -cp -Kg Gv Gv +PA +qH +KQ +Gv Gv qm Gv @@ -1948,16 +1885,16 @@ ah ah "} (22,1,1) = {" -ah +aa +aj +ak +ak Gv -al -fM -Gv -Gv -TC +bJ +bJ Gv qH -KQ +Tl Gv Gv qm @@ -1970,18 +1907,18 @@ ah ah "} (23,1,1) = {" -ah -Gv -al +aa +aj +ak +ak +bJ Gv Gv Gv -Gv -PA qH -KQ -Gv Gv +sz +sz qm Gv PK @@ -1992,62 +1929,62 @@ ah ah "} (24,1,1) = {" -ah -Gv -al +aa +aa +ak +ak Gv bJ bJ Gv -Gv -qH -Tl -Gv -Gv -qm -sz -Gv -ah -ah -ah -ah -ah -"} -(25,1,1) = {" -ah -Gv -al -bJ -Gv -Gv -Gv -Gv -qH -Gv -sz -sz -qm -Gv -Gv -ah -ah -ah -ah -ah -"} -(26,1,1) = {" -ah -Gv -al -Gv -bJ -bJ -Gv -Gv Pk sz Gv Oe +qm +sz +Gv +ah +ah +ah +ah +aa +"} +(25,1,1) = {" +aa +aa +ak +ak +Gv +Gv +TC +Gv +qH +Gv +Dz +Oe +qm +Gv +Gv +ah +ah +ah +ah +aa +"} +(26,1,1) = {" +aa +ah +ak +ak +Gv +JD +Gv +Gv +qH +Gv +Gv +Gv Gv Gv Gv @@ -2058,18 +1995,18 @@ aa aa "} (27,1,1) = {" +aa ah -Gv -al +ak +ak Gv Gv -TC -Gv Gv +PA qH Gv -Dz -Oe +Gv +Gv Gv Gv Gv @@ -2081,17 +2018,17 @@ aa "} (28,1,1) = {" ah +ah +ak +ak +TC Gv -al -Gv -JD -Gv -Gv -Gv +PA +TC qH Gv -Gv -Gv +mo +ah Gv Dz Gv @@ -2103,17 +2040,17 @@ aa "} (29,1,1) = {" ah -Gv -al +ah +ak +ak Gv Gv Gv Gv -PA qH -Gv -Gv -Gv +Uh +ty +ah Gv Gv Gv @@ -2124,17 +2061,17 @@ aa aa "} (30,1,1) = {" +aa ah +ak +ak +ak +ak +ak +cp +cp Gv -al -TC -Gv -PA -Gv -TC -qH -Gv -mo +ty ah ah ah @@ -2146,17 +2083,17 @@ aa aa "} (31,1,1) = {" +aa +aa +aa +ak +ak +ak +ak +ak +ah +ah ah -Gv -bh -vV -vV -vV -vV -vV -Rq -Uh -ty ah ah ah @@ -2168,32 +2105,10 @@ aa aa "} (32,1,1) = {" -ah -Gv -Gv -Gv -Gv -Gv -Gv -Gv -Gv -Gv -ty -ah -ah aa aa aa aa -aa -aa -aa -"} -(33,1,1) = {" -ah -ah -ah -ah ah ah ah @@ -2211,3 +2126,25 @@ aa aa aa "} +(33,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ah +ah +ah +ah +ah +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_bileworm_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_bileworm_nest.dmm index d52147d9994..3f49c8c6f98 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_bileworm_nest.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_bileworm_nest.dmm @@ -1,8 +1,9 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/turf/closed/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/template_noop) "b" = ( +/obj/effect/mapping_helpers/no_lava, /turf/open/misc/asteroid/lavaland_atmos, /area/lavaland/surface/outdoors) "c" = ( @@ -10,14 +11,17 @@ /area/template_noop) "d" = ( /mob/living/basic/mining/bileworm, +/obj/effect/mapping_helpers/no_lava, /turf/open/misc/asteroid/lavaland_atmos, /area/lavaland/surface/outdoors) "e" = ( /obj/item/crusher_trophy/bileworm_spewlet, +/obj/effect/mapping_helpers/no_lava, /turf/open/misc/asteroid/lavaland_atmos, /area/lavaland/surface/outdoors) "f" = ( /obj/structure/water_source/puddle, +/obj/effect/mapping_helpers/no_lava, /turf/open/misc/asteroid/lavaland_atmos, /area/lavaland/surface/outdoors) @@ -62,9 +66,9 @@ c c a a -a -a -a +c +c +c a a c @@ -118,7 +122,7 @@ b b a a -a +c c c c @@ -168,8 +172,8 @@ b b a a -a -a +c +c c c c @@ -185,8 +189,8 @@ b b a a -a -a +c +c c c c @@ -194,6 +198,7 @@ c (11,1,1) = {" c c +c a a a @@ -202,8 +207,7 @@ a a a a -a -a +c c c c @@ -211,8 +215,8 @@ c (12,1,1) = {" c c -a -a +c +c a a a @@ -229,15 +233,15 @@ c c c c -a -a +c a a a a a c -a +c +c c c c diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm index 9fc94d86979..e2783c55253 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm @@ -2,9 +2,6 @@ "a" = ( /turf/template_noop, /area/template_noop) -"b" = ( -/turf/closed/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) "c" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) @@ -108,15 +105,6 @@ }, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) -"t" = ( -/obj/structure/stone_tile/surrounding/cracked{ - dir = 6 - }, -/mob/living/basic/boss/blood_drunk_miner{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors) "u" = ( /obj/structure/stone_tile{ dir = 1 @@ -151,17 +139,29 @@ /obj/structure/stone_tile/cracked, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"I" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/template_noop) +"U" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 6 + }, +/mob/living/basic/boss/blood_drunk_miner{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) (1,1,1) = {" a a a -b -b -b -b -b -b +a +a +a +I +I +I a a a @@ -171,38 +171,38 @@ a (2,1,1) = {" a a -b -b +I +I c c -b -b -b -b -b -b +I +I +I +I +I +I a a "} (3,1,1) = {" -b -b -b +I +I +I c d c c -b -b -b -b -b -b +I +I +I +I +I +I a "} (4,1,1) = {" -b -b +a +I c c k @@ -211,13 +211,13 @@ c c c c -b -b -b -b +I +I +I +I "} (5,1,1) = {" -b +a c d g @@ -229,11 +229,11 @@ c c c c -b -b +I +I "} (6,1,1) = {" -b +a c c h @@ -246,26 +246,26 @@ d e c c -b +I "} (7,1,1) = {" -b +a c c c c q -t +U w x y p e c -b +a "} (8,1,1) = {" -b +a c e i @@ -278,10 +278,10 @@ f d y c -b +a "} (9,1,1) = {" -b +I c f j @@ -293,53 +293,53 @@ c c c c -b -b +a +a "} (10,1,1) = {" -b -b +I +I c c c o c c -b -b +I +I c -b -b -b +a +a +a "} (11,1,1) = {" -b -b -b +I +I +I c n c c -b -b -b -b -b -b +I +I +I +I +a +a a "} (12,1,1) = {" a -b -b +I +I c c c -b -b -b -b -b +I +I +I +I +I a a a @@ -347,11 +347,11 @@ a (13,1,1) = {" a a -b -b -b -b -b +I +I +I +I +I a a a diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm index 64d88ce895e..bf6ea418d22 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm @@ -2,9 +2,6 @@ "a" = ( /turf/template_noop, /area/template_noop) -"b" = ( -/turf/closed/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) "c" = ( /obj/structure/stone_tile/surrounding_tile{ dir = 4 @@ -70,23 +67,6 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"o" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) -"p" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile/block/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "q" = ( /obj/structure/stone_tile{ dir = 8 @@ -96,23 +76,12 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"s" = ( +"r" = ( +/obj/structure/stone_tile/surrounding/burnt, /mob/living/basic/boss/blood_drunk_miner/guidance{ dir = 8 }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) -"t" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, +/turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) "u" = ( /obj/structure/stone_tile/surrounding_tile/cracked{ @@ -150,24 +119,65 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"M" = ( +"C" = ( /obj/structure/stone_tile/block{ dir = 8 }, /obj/structure/stone_tile/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"F" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/template_noop) +"H" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"L" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"V" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"Z" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) (1,1,1) = {" a a -b -b -b -b +F +F +F +F +a +a a -b -b a a a @@ -177,24 +187,24 @@ a "} (2,1,1) = {" a -b -b -b -b -b -b -b -b -b -b +F +F +F +f +f +f +f +a +F +F a a a a "} (3,1,1) = {" -b -b +F +F c h k @@ -203,15 +213,15 @@ f f k f -b -b +F +F a a a "} (4,1,1) = {" -b -b +F +F d c l @@ -220,15 +230,15 @@ f f v f -b -b -b +F +F +F a a "} (5,1,1) = {" -b -b +F +F e i m @@ -238,65 +248,65 @@ u w f f -b -b -b +F +F +F a "} (6,1,1) = {" a -b +F +F f f -f -o -M -q +V +C +H w f f f f -b -b +F +F "} (7,1,1) = {" -b -b -b +a +F +F f f -p -s -t +L +r +Z f f q n A f -b +F "} (8,1,1) = {" -b -b +a +F g f c -q -t -q +H +Z +H k x f z d f -b +a "} (9,1,1) = {" a -b +a f j n @@ -308,57 +318,57 @@ y f n y -b -b +a +a "} (10,1,1) = {" a -b -b +a +a f f f f f f -b -b +F +F f f -b -b +a +a "} (11,1,1) = {" a a -b -b -b -b -b -b -b -b -b -b -b -b +a +a +F +F +F +F +F +F +F +F +a +a a "} (12,1,1) = {" a a a -b -b -b -b -b -b a a -b -b +F +F +F +F +a +a +a +a a a "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm index daa1409f6c6..1a6e34e94c7 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm @@ -2,9 +2,6 @@ "a" = ( /turf/template_noop, /area/template_noop) -"b" = ( -/turf/closed/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) "c" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) @@ -97,16 +94,6 @@ /obj/structure/stone_tile/cracked, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"n" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/stone_tile/block{ - dir = 4 - }, -/mob/living/basic/boss/blood_drunk_miner/hunter, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "o" = ( /obj/structure/stone_tile/cracked{ dir = 4 @@ -157,12 +144,56 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"v" = ( +"z" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/template_noop) +"A" = ( +/obj/structure/stone_tile/burnt{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"I" = ( /obj/structure/stone_tile/surrounding/cracked{ dir = 6 }, /obj/structure/stone_tile/center, -/turf/open/misc/asteroid/basalt/lava_land_surface, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/mob/living/basic/boss/blood_drunk_miner/hunter, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"N" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"R" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"W" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) (1,1,1) = {" @@ -174,58 +205,58 @@ a a a a -b -b -b -b -b +a +a +a +a +a a a a "} (2,1,1) = {" a -b -b -b +z +z +z a a -b -b -b +z +z +z c c -b -b -b +a +z +z a a "} (3,1,1) = {" -b -b -b -b -b -b -b -b +z +z +z +z +z +z +z +z c g m c c -b -b +z +z a "} (4,1,1) = {" -b +z c c -b -b -b +z +z +z c c g @@ -234,11 +265,11 @@ h q c c -b -b +z +z "} (5,1,1) = {" -b +a c c c @@ -248,15 +279,15 @@ c g i c -c +R h s c c -b +z "} (6,1,1) = {" -b +a d e e @@ -265,16 +296,16 @@ f d f e +N +I +W d -n -f t -v c -b +z "} (7,1,1) = {" -b +a c c c @@ -284,17 +315,17 @@ c h j c -c +A o u c -b -b +z +z "} (8,1,1) = {" -b -b -b +a +z +z c c c @@ -305,16 +336,16 @@ l o r c -b -b -b +z +z +z "} (9,1,1) = {" a -b -b -b -b +z +z +z +z c c c @@ -323,25 +354,25 @@ h p c c -b -b +z +z a "} (10,1,1) = {" a a a -b -b -b -b -b +z +z +z +z +a c c c c -b -b +a +a a a "} @@ -351,15 +382,15 @@ a a a a -b -b -b -b -b -b -b -b -b +a +a +a +a +a +a +a +a +a a a "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm index ef3307e388d..790ba098850 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm @@ -74,7 +74,7 @@ }, /area/ruin/unpowered) "o" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "p" = ( /obj/structure/rack, @@ -220,6 +220,9 @@ /obj/item/food/meat/steak/goliath, /turf/open/floor/pod/dark, /area/ruin/powered) +"W" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/ruin/powered) "Y" = ( /obj/machinery/power/shuttle_engine/propulsion/burst{ dir = 8 @@ -731,7 +734,7 @@ N N N N -N +W o q H diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm index 35492d9e9f2..952bc14a031 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm @@ -34,6 +34,9 @@ initial_gas_mix = "LAVALAND_ATMOS" }, /area/ruin/unpowered/cultaltar) +"j" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/template_noop) "k" = ( /obj/effect/decal/remains/human, /obj/item/melee/cultblade, @@ -84,6 +87,14 @@ "s" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/cultaltar) +"z" = ( +/turf/open/floor/engine/cult{ + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/template_noop) +"T" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/template_noop) (1,1,1) = {" a @@ -106,16 +117,16 @@ a a d e -c -s +T +j c b b b c -s -c -s +j +T +j d a "} @@ -133,13 +144,13 @@ c d e f -s +j a "} (4,1,1) = {" a -c -s +T +j c c c @@ -150,12 +161,12 @@ c c c e -c +T a "} (5,1,1) = {" a -s +j d c c @@ -167,12 +178,12 @@ b c c d -s +j a "} (6,1,1) = {" a -c +T c c b @@ -183,12 +194,12 @@ k b b c -c -c +T +T a "} (7,1,1) = {" -b +z b c c @@ -200,12 +211,12 @@ b l b c -c +T b b "} (8,1,1) = {" -c +T b g b @@ -219,7 +230,7 @@ b b g b -c +T "} (9,1,1) = {" b @@ -240,7 +251,7 @@ b "} (10,1,1) = {" a -c +T c c g @@ -252,12 +263,12 @@ b b c c -c +T a "} (11,1,1) = {" a -s +j d c c @@ -274,7 +285,7 @@ a "} (12,1,1) = {" a -c +T s c c @@ -310,15 +321,15 @@ a a d e -c +T s -c +T b b b -c -s -c +T +j +T s d a @@ -331,7 +342,7 @@ a a a b -c +T b a a diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm index 65a2652915d..f5fc610f0af 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm @@ -18,8 +18,8 @@ /turf/open/floor/bronze/filled/lavaland, /area/ruin/unpowered/ratvar) "f" = ( -/turf/closed/mineral/volcanic/lava_land_surface, -/area/ruin/unpowered/ratvar) +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/template_noop) "g" = ( /obj/structure/fluff/clockwork/alloy_shards/medium_gearbit, /turf/open/misc/asteroid/basalt/lava_land_surface, @@ -123,6 +123,20 @@ /obj/item/stack/sheet/bronze/thirty, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ratvar) +"I" = ( +/obj/structure/fluff/clockwork/alloy_shards/large, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/template_noop) +"J" = ( +/obj/structure/fluff/clockwork/alloy_shards/small, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/template_noop) +"K" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/ruin/unpowered/ratvar) +"L" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/template_noop) (1,1,1) = {" a @@ -138,10 +152,10 @@ a a a a -b +L s h -b +L a a a @@ -158,8 +172,8 @@ a a a a -o -b +I +L a h b @@ -184,7 +198,7 @@ a a a f -b +L l b v @@ -195,8 +209,8 @@ j j c l -b -b +L +L a a a @@ -221,7 +235,7 @@ j j p l -b +L h c r @@ -303,7 +317,7 @@ l c f f -b +L a "} (8,1,1) = {" @@ -328,7 +342,7 @@ l l l f -b +L a a "} @@ -352,10 +366,10 @@ b g l l -b -b -b -b +L +L +L +L a "} (10,1,1) = {" @@ -407,7 +421,7 @@ l l l l -b +L a "} (12,1,1) = {" @@ -463,9 +477,9 @@ b a "} (14,1,1) = {" -b -b -b +L +L +L m l l @@ -486,12 +500,12 @@ l b b h -b +L "} (15,1,1) = {" -b -b -b +L +L +L l l l @@ -510,8 +524,8 @@ l l l l -b -b +L +L a "} (16,1,1) = {" @@ -541,9 +555,9 @@ f a "} (17,1,1) = {" -b -b -b +L +L +L l l l @@ -563,7 +577,7 @@ l r l l -b +L a "} (18,1,1) = {" @@ -590,7 +604,7 @@ h b b m -b +L "} (19,1,1) = {" b @@ -616,7 +630,7 @@ h r h b -b +L "} (20,1,1) = {" b @@ -716,8 +730,8 @@ b l l l -b -b +L +L w r b @@ -725,8 +739,8 @@ b (24,1,1) = {" a a -b -b +L +L l l l @@ -742,7 +756,7 @@ j j l l -c +J l l b @@ -751,7 +765,7 @@ a (25,1,1) = {" a a -b +L l l l @@ -777,7 +791,7 @@ a (26,1,1) = {" a a -b +L c b l @@ -795,7 +809,7 @@ l l c m -b +L a a a @@ -859,7 +873,7 @@ a a b b -f +K c b l @@ -871,7 +885,7 @@ l c o l -b +L a a a @@ -895,7 +909,7 @@ l b l f -b +L a a a diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm index 1213c3684d7..b296990ae3c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "ab" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface) "ac" = ( /turf/closed/mineral/volcanic/lava_land_surface, @@ -319,6 +319,9 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/misc/asteroid/basalt/wasteland, /area/ruin/unpowered/elephant_graveyard) +"wT" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/ruin/unpowered/elephant_graveyard) "xr" = ( /obj/effect/decal/cleanable/vomit, /obj/item/shovel, @@ -686,12 +689,12 @@ at ab ab ab -ac -ac -ac -ac +wT +wT +wT +wT bf -ac +wT ab ab ab @@ -722,15 +725,15 @@ bf bf bf bf -ac -ac -ac -ac +wT +wT +wT +wT bf bf bf -ac -ac +wT +wT ab ab ab @@ -760,7 +763,7 @@ Oa bf bf bf -ac +wT bf bf bf @@ -768,8 +771,8 @@ bf bf bf bf -ac -ac +wT +wT ab ab aa @@ -805,9 +808,9 @@ bJ bf bf bf -ac -ac -ac +wT +wT +wT ab ab ab @@ -843,10 +846,10 @@ WF LR gB gB -ac -ac -ac -ac +wT +wT +wT +wT ab ab ab @@ -880,12 +883,12 @@ bf bf bf gB -ac -ac -ac -ac -ac -ac +wT +wT +wT +wT +wT +wT ab ab aa @@ -917,13 +920,13 @@ gB gB bf gB -ac -ac -ac -ac -ac -ac -ac +wT +wT +wT +wT +wT +wT +wT ab ab aa @@ -955,14 +958,14 @@ tf bf gB gB -ac -ac -ac -ac -ac -ac -ac -ac +wT +wT +wT +wT +wT +wT +wT +wT aa "} (10,1,1) = {" @@ -993,14 +996,14 @@ bf bf gB gB -ac -ac -ac -ac +wT +wT +wT +wT MF yy -ac -ac +wT +wT "} (11,1,1) = {" at @@ -1030,14 +1033,14 @@ vk bf bf dr -ac -ac -ac -ac +wT +wT +wT +wT ei gB gB -ac +wT "} (12,1,1) = {" at @@ -1067,14 +1070,14 @@ gB bf bf Ks -ac -ac -ac -ac -ac -ac +wT +wT +wT +wT +wT +wT Bu -ac +wT "} (13,1,1) = {" bf @@ -1104,14 +1107,14 @@ gB bf bf gB -ac -ac -ac -ac -ac -ac +wT +wT +wT +wT +wT +wT gB -ac +wT "} (14,1,1) = {" bf @@ -1142,13 +1145,13 @@ bf Xe dr gB -ac -ac -ac -ac -ac +wT +wT +wT +wT +wT gB -ac +wT "} (15,1,1) = {" bf @@ -1176,16 +1179,16 @@ gB gB Br bf -ac +wT gB gB dr -ac -ac -ac -ac +wT +wT +wT +wT Bu -ac +wT "} (16,1,1) = {" bf @@ -1213,14 +1216,14 @@ gB gB Br bf -ac -ac +wT +wT gB gB dr -ac -ac -ac +wT +wT +wT dr iE "} @@ -1251,13 +1254,13 @@ Xe Br bf bf -ac -ac +wT +wT gB Bu -ac -ac -ac +wT +wT +wT NO Ql "} @@ -1288,9 +1291,9 @@ gB Br Yq bf -ac -ac -ac +wT +wT +wT gB dr dr @@ -1325,15 +1328,15 @@ Br AT bf bf -ac -ac -ac -ac +wT +wT +wT +wT NO dr -ac -ac -ac +wT +wT +wT "} (20,1,1) = {" aa @@ -1361,23 +1364,23 @@ bf bf bf bf -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +wT +wT +wT +wT +wT +wT +wT +wT +wT +wT "} (21,1,1) = {" aa aa ab -ac -ac +bf +bf bf UK dr @@ -1396,16 +1399,16 @@ bf bf bf bf -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +wT +wT +wT +wT +wT +wT +wT +wT +wT +wT ab ab "} @@ -1414,7 +1417,7 @@ aa aa ab ab -ac +bf bf UK gB @@ -1429,14 +1432,14 @@ bf bf bf bf -ac -ac -ac -ac -ac -ac -ac -ac +wT +wT +wT +wT +wT +wT +wT +wT ab ab ab diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm index ed7a0aef9e2..fa4e286ff22 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm @@ -3,7 +3,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "b" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "c" = ( /turf/open/lava/smooth/lava_land_surface, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_gaia.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_gaia.dmm index 697a9a34e72..f7f9aa5d1cc 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_gaia.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_gaia.dmm @@ -88,7 +88,7 @@ /turf/open/misc/grass/lavaland, /area/ruin/unpowered/gaia) "w" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/ruin/unpowered/gaia) "x" = ( /obj/structure/flora/bush/sunny/style_random, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm index 30690101246..beb889fe411 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm @@ -495,7 +495,7 @@ /turf/open/indestructible/necropolis, /area/ruin/powered/gluttony) "WR" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "XY" = ( /obj/effect/decal/cleanable/blood/footprints, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm index d138d1c39f2..d3116c6b557 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm @@ -3,7 +3,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "b" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "c" = ( /turf/open/lava/smooth/lava_land_surface, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm index 49e24125657..ed31df13e20 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "b" = ( /turf/closed/mineral/volcanic/lava_land_surface, @@ -185,6 +185,9 @@ name = "dirt" }, /area/ruin/powered) +"T" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/ruin/powered) (1,1,1) = {" P @@ -264,7 +267,7 @@ P a a a -b +T c b t @@ -281,8 +284,8 @@ P a a a -b -b +T +T L n t @@ -299,7 +302,7 @@ a a a a -b +T m o o @@ -314,9 +317,9 @@ s "} (8,1,1) = {" a -b -b -b +T +T +T c f o @@ -332,7 +335,7 @@ s "} (9,1,1) = {" a -b +T f i g @@ -350,7 +353,7 @@ s "} (10,1,1) = {" a -b +T S j g @@ -360,7 +363,7 @@ f u o A -b +T P s s @@ -378,7 +381,7 @@ r c c c -b +T P P s @@ -386,14 +389,14 @@ s "} (12,1,1) = {" a -b -b +T +T k M -b -b -b -b +T +T +T +T a a P @@ -405,10 +408,10 @@ E (13,1,1) = {" a a -b -b -b -b +T +T +T +T a a a diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm index 4c82e520887..5685415aec3 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "b" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "c" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index c03669ad0b5..69c7d47d006 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "ab" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, @@ -525,9 +525,6 @@ /obj/machinery/hydroponics/constructable/fullupgrade, /turf/open/floor/mineral/plastitanium, /area/ruin/powered/seedvault) -"bD" = ( -/turf/closed/wall/r_wall, -/area/lavaland/surface/outdoors) "ca" = ( /obj/machinery/atmospherics/components/tank/air{ dir = 4 @@ -542,7 +539,7 @@ /area/ruin/powered/seedvault) "eq" = ( /obj/effect/baseturf_helper/lava_land/surface, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "hf" = ( /obj/structure/sink/directional/east, @@ -817,7 +814,7 @@ bc rF ac ac -bD +ac aa "} (8,1,1) = {" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_shuttle_wreckage.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_shuttle_wreckage.dmm index 36950aaa0ee..43f6ad0af5c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_shuttle_wreckage.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_shuttle_wreckage.dmm @@ -49,9 +49,6 @@ initial_gas_mix = "LAVALAND_ATMOS" }, /area/ruin/unpowered) -"gP" = ( -/turf/closed/mineral/titanium/volcanic, -/area/ruin/unpowered) "hT" = ( /turf/closed/wall/mineral/titanium{ initial_gas_mix = "LAVALAND_ATMOS" @@ -131,9 +128,6 @@ /obj/item/shard/titanium, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/unpowered) -"sZ" = ( -/turf/closed/mineral/random/volcanic, -/area/ruin/unpowered) "tp" = ( /obj/item/stack/sheet/iron, /turf/open/misc/asteroid/basalt/lava_land_surface, @@ -152,9 +146,6 @@ initial_gas_mix = "LAVALAND_ATMOS" }, /area/ruin/unpowered) -"uh" = ( -/turf/closed/mineral/random/volcanic, -/area/lavaland/surface) "uH" = ( /obj/effect/spawner/random/structure/crate, /turf/open/misc/asteroid/basalt/lava_land_surface, @@ -170,7 +161,7 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/unpowered) "yZ" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/ruin/unpowered) "zk" = ( /obj/effect/spawner/random/structure/crate, @@ -240,7 +231,7 @@ /turf/open/floor/plating/lavaland_atmos, /area/ruin/unpowered) "FL" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface) "FR" = ( /obj/effect/mapping_helpers/broken_floor, @@ -271,9 +262,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/unpowered) -"GZ" = ( -/turf/closed/mineral/titanium/volcanic, -/area/lavaland/surface) "Hy" = ( /obj/machinery/computer/communications{ dir = 8 @@ -414,9 +402,7 @@ /obj/item/stack/sheet/mineral/titanium/fifty{ amount = 4 }, -/turf/open/floor/mineral/titanium/yellow{ - initial_gas_mix = "LAVALAND_ATMOS" - }, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/ruin/unpowered) "XZ" = ( /obj/structure/chair/comfy/shuttle{ @@ -446,8 +432,8 @@ SV SV SV SV -GZ -GZ +FL +FL Fq Fq Fq @@ -467,8 +453,8 @@ SV SV SV FL -GZ -gP +FL +yZ yZ fy iU @@ -485,8 +471,8 @@ SV (3,1,1) = {" SV SV -uh -uh +FL +FL yZ hT hT @@ -506,8 +492,8 @@ SV "} (4,1,1) = {" SV -uh -sZ +FL +yZ hT ky HM @@ -655,13 +641,13 @@ yZ CX yZ yZ -uh +FL FL "} (11,1,1) = {" Fq -GZ -gP +FL +yZ bw Tt JD @@ -676,15 +662,15 @@ DZ XU FI Ga -uh -uh +FL +FL FL "} (12,1,1) = {" SV -GZ -gP -gP +FL +yZ +yZ VN Ee Hy @@ -698,14 +684,14 @@ oE yZ yZ FL -uh -uh +FL +FL SV "} (13,1,1) = {" SV -GZ -gP +FL +yZ Lz py hT @@ -726,7 +712,7 @@ SV "} (14,1,1) = {" SV -GZ +FL Fq Lz lu @@ -737,7 +723,7 @@ JN Dy On Om -GZ +FL FL FL SV @@ -758,8 +744,8 @@ XT yZ St St -gP -GZ +yZ +FL SV SV SV @@ -779,8 +765,8 @@ py St yZ FL -GZ -GZ +FL +FL SV SV SV @@ -840,9 +826,9 @@ SV SV FL FL -uh -uh -uh +FL +FL +FL FL FL SV @@ -863,8 +849,8 @@ SV SV SV FL -uh -uh +FL +FL FL SV SV diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm index 372731e7223..374be84f53a 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm @@ -1,7 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/turf/closed/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors) +/turf/template_noop, +/area/template_noop) "b" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) @@ -11,6 +11,9 @@ "d" = ( /turf/closed/wall/mineral/abductor, /area/ruin/unpowered) +"g" = ( +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, +/area/lavaland/surface/outdoors) "j" = ( /obj/machinery/abductor/experiment{ team_number = 100 @@ -105,9 +108,9 @@ a a a a -a -a -a +g +g +g a a "} @@ -115,53 +118,53 @@ a a a a -a -a -a -a -a -a +g +g +g +g +g +g a "} (3,1,1) = {" a a -a +g c -a -a -a -a -a -a +g +g +g +g +g +g "} (4,1,1) = {" a -a +g c d -a -a -a -a -a -a +g +g +g +g +g +g "} (5,1,1) = {" a -a +g d j k k -a +g y d -a +g "} (6,1,1) = {" a -a +g d k o @@ -169,11 +172,11 @@ s v z d -a +g "} (7,1,1) = {" -a -a +g +g d l p @@ -181,11 +184,11 @@ k w A d -a +g "} (8,1,1) = {" -a -a +g +g c d q @@ -193,11 +196,11 @@ t q d c -a +g "} (9,1,1) = {" -a -a +g +g b c d @@ -205,67 +208,67 @@ d d c b -a +g "} (10,1,1) = {" a -a +g b b b b b b -a -a +g +g "} (11,1,1) = {" -a -a +g +g b b b b b b -a -a +g +g "} (12,1,1) = {" -a -a +g +g b b b b b b -a -a +g +g "} (13,1,1) = {" a -a +g b b b b b b -a -a +g +g "} (14,1,1) = {" a -a +g b b b b b b -a -a +b +g "} (15,1,1) = {" a @@ -276,7 +279,7 @@ b b b b -a +g a "} (16,1,1) = {" @@ -288,7 +291,7 @@ b b b b -a +g a "} (17,1,1) = {" @@ -300,13 +303,13 @@ b b b b -a +g a "} (18,1,1) = {" a a -b +a b b b @@ -336,7 +339,7 @@ b b b b -a +b a "} (21,1,1) = {" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_watcher_grave.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_watcher_grave.dmm index 99af5bdced4..ce935f889af 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_watcher_grave.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_watcher_grave.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "b" = ( /obj/structure/stone_tile/surrounding_tile, @@ -35,9 +35,6 @@ /obj/effect/mapping_helpers/bombable_wall, /turf/closed/indestructible/riveted/boss/wasteland, /area/lavaland/surface/outdoors) -"l" = ( -/turf/closed/mineral/gibtonite/volcanic, -/area/lavaland/surface/outdoors) "m" = ( /turf/open/chasm/lavaland, /area/lavaland/surface/outdoors) @@ -152,7 +149,7 @@ I I I I -l +a a a a @@ -225,7 +222,7 @@ I "} (8,1,1) = {" I -l +a a R y @@ -265,7 +262,7 @@ h c R a -l +a I "} (11,1,1) = {" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm index fb0a070b894..7084fceb8fe 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wizard.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "b" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, @@ -10,7 +10,7 @@ /area/template_noop) "d" = ( /obj/structure/stone_tile/slab, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "e" = ( /obj/structure/stone_tile, @@ -302,7 +302,7 @@ /area/lavaland/surface/outdoors) "I" = ( /obj/structure/stone_tile/slab/cracked, -/turf/closed/mineral/volcanic/lava_land_surface, +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace, /area/lavaland/surface/outdoors) "J" = ( /obj/structure/fluff/divine/convertaltar, diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index a1c171b5ebd..0e9b0facd41 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -87,6 +87,10 @@ }, /turf/open/floor/carpet/neon/simple/red/nodots, /area/mine/cafeteria) +"ay" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/mine/eva) "aD" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -226,7 +230,6 @@ /turf/open/floor/iron/smooth, /area/mine/laborcamp) "bK" = ( -/obj/item/kirbyplants/random, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -236,6 +239,7 @@ dir = 4 }, /obj/structure/sign/poster/official/corporate_perks_vacation/directional/west, +/obj/item/kirbyplants/random, /turf/open/floor/iron/edge{ dir = 4 }, @@ -427,6 +431,14 @@ dir = 1 }, /area/mine/lounge) +"cL" = ( +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/structure/table, +/obj/item/paper/fluff/stations/lavaland/orm_notice, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 + }, +/area/mine/production) "cM" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/trimline/yellow/filled/arrow_cw{ @@ -457,16 +469,6 @@ dir = 1 }, /area/mine/laborcamp/quarters) -"cR" = ( -/obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 8 - }, -/area/mine/production) "cU" = ( /obj/structure/lattice/catwalk/mining, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -609,9 +611,6 @@ pixel_y = 12; pixel_x = 10 }, -/obj/structure/chair/plastic{ - dir = 4 - }, /turf/open/misc/hay/lavaland, /area/lavaland/surface/outdoors) "dI" = ( @@ -698,6 +697,13 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"eu" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "ey" = ( /obj/structure/lattice/catwalk/mining, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -1332,6 +1338,10 @@ /obj/structure/lattice/catwalk, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"hA" = ( +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "hB" = ( /obj/structure/cable, /obj/machinery/light/directional/north, @@ -1569,12 +1579,6 @@ }, /turf/open/floor/iron/checker, /area/mine/cafeteria) -"iI" = ( -/obj/machinery/power/weather_tower, -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "iN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -1883,6 +1887,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/mine/maintenance/living/north) +"kx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing/corner, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "kB" = ( /obj/structure/stone_tile/surrounding_tile, /obj/structure/stone_tile/surrounding_tile{ @@ -1969,10 +1981,18 @@ /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) "kK" = ( -/obj/structure/table, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, +/obj/machinery/camera/autoname/directional/north{ + network = list("mine") + }, +/obj/machinery/light/small/directional/north, +/obj/structure/sign/directions/evac/directional/east{ + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/table, /obj/item/camera_film{ pixel_x = 5; pixel_y = 5 @@ -2441,6 +2461,21 @@ dir = 1 }, /area/mine/laborcamp/security) +"mG" = ( +/obj/machinery/door/airlock/external/glass{ + name = "Mining External Airlock" + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/blue/filled/mid_joiner{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "lavaland_living_north" + }, +/turf/open/floor/iron/textured_large, +/area/lavaland/surface/outdoors) "mJ" = ( /obj/docking_port/stationary{ dwidth = 2; @@ -2893,6 +2928,13 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"oE" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "oI" = ( /obj/structure/bed, /obj/effect/decal/cleanable/dirt, @@ -2982,6 +3024,10 @@ /obj/effect/spawner/random/trash/hobo_squat, /turf/open/floor/plating, /area/mine/maintenance/public/south) +"ph" = ( +/obj/structure/flora/bush/jungle/c/style_random, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "pm" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 @@ -3010,15 +3056,6 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/iron/white, /area/mine/laborcamp/production) -"ps" = ( -/obj/structure/cable, -/obj/machinery/power/smes/super/full{ - output_level = 100000; - input_level = 100000 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/mine/maintenance/service) "pu" = ( /obj/item/chair/stool{ pixel_x = -2; @@ -3638,7 +3675,6 @@ /turf/open/floor/plating, /area/mine/maintenance/service) "ti" = ( -/obj/structure/table, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, @@ -3651,6 +3687,9 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"tl" = ( +/turf/open/water/lavaland_atmos/basalt, +/area/lavaland/surface/outdoors) "tr" = ( /obj/structure/closet/secure_closet/brig, /obj/effect/decal/cleanable/dirt, @@ -4130,6 +4169,10 @@ }, /turf/open/floor/iron/checker, /area/mine/cafeteria) +"wc" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/textured_large, +/area/lavaland/surface/outdoors) "wg" = ( /obj/structure/chair/sofa/corp{ dir = 1 @@ -4231,10 +4274,6 @@ /obj/item/chair/wood, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) -"wG" = ( -/obj/structure/lattice/catwalk, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "wJ" = ( /obj/structure/table/wood/poker, /obj/item/toy/cards/deck{ @@ -4582,6 +4621,10 @@ /obj/structure/lattice/catwalk/mining, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) +"yW" = ( +/obj/structure/flora/bush/jungle, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "yX" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -4676,6 +4719,16 @@ /obj/structure/lattice/catwalk/mining, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) +"zt" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/structure/table, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 + }, +/area/mine/production) "zw" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4703,10 +4756,12 @@ /turf/open/floor/iron/dark, /area/mine/production) "zF" = ( -/obj/item/kirbyplants/random, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 }, +/obj/machinery/computer/shuttle/mining/common{ + dir = 8 + }, /turf/open/floor/iron, /area/mine/lounge) "zH" = ( @@ -4770,6 +4825,13 @@ /obj/structure/railing/corner, /turf/open/misc/hay/lavaland, /area/lavaland/surface/outdoors) +"Ac" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/dark, +/area/mine/production) "Ae" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -4950,6 +5012,13 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"BE" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "BH" = ( /obj/structure/window/spawner/directional/south, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -5006,6 +5075,10 @@ /obj/structure/sign/poster/official/report_crimes/directional/west, /turf/open/floor/iron/smooth, /area/mine/laborcamp) +"BW" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/lavaland/surface/outdoors) "Ce" = ( /turf/open/floor/plating, /area/mine/maintenance/public/south) @@ -5152,6 +5225,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/mine/maintenance/living/north) +"CY" = ( +/obj/structure/flora/ash/cacti, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "CZ" = ( /obj/structure/disposalpipe/segment, /obj/structure/lattice/catwalk/mining, @@ -5298,6 +5375,10 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/mine/maintenance/living/north) +"El" = ( +/obj/structure/lattice/catwalk, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "Eo" = ( /obj/machinery/conveyor{ id = "mining_disposals" @@ -5463,6 +5544,13 @@ }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"Fo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/lattice/catwalk/mining, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "Fp" = ( /obj/structure/table, /obj/machinery/recharger, @@ -6104,10 +6192,6 @@ }, /turf/open/floor/plating, /area/mine/laborcamp/security/maintenance) -"Jp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/dark/textured_large, -/area/mine/eva) "Jt" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -6138,14 +6222,9 @@ /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) "JA" = ( -/obj/machinery/computer/shuttle/mining/common, -/obj/machinery/camera/autoname/directional/north{ - network = list("mine") - }, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 }, -/obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/mine/lounge) "JB" = ( @@ -6267,6 +6346,12 @@ /obj/structure/stone_tile, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"JX" = ( +/obj/machinery/power/weather_tower, +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "JZ" = ( /obj/structure/displaycase, /turf/open/floor/carpet/executive, @@ -6289,6 +6374,11 @@ dir = 4 }, /area/mine/eva) +"Ke" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing/corner, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "Kf" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -6351,6 +6441,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth_large, /area/mine/laborcamp) +"Kr" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/item/storage/medkit/regular, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 + }, +/area/mine/eva) "Kt" = ( /obj/structure/stone_tile/cracked, /obj/structure/stone_tile/cracked{ @@ -6413,6 +6515,16 @@ }, /turf/open/floor/iron/checker, /area/mine/cafeteria) +"KT" = ( +/obj/structure/cable, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/mine/production) "KV" = ( /obj/structure/table, /obj/machinery/light/directional/east, @@ -6551,6 +6663,13 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/plating, /area/mine/storage) +"LB" = ( +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "LE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -6721,6 +6840,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth_large, /area/mine/laborcamp) +"MC" = ( +/obj/item/bait_can/worm/premium{ + pixel_y = 8; + pixel_x = -9 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "MD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6983,13 +7109,6 @@ }, /turf/open/floor/plating/lavaland_atmos, /area/lavaland/surface/outdoors) -"Ob" = ( -/obj/machinery/suit_storage_unit/mining, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/mine/eva) "Og" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -7324,6 +7443,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/mine/laborcamp/production) +"Qh" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/dark, +/area/mine/eva) "Qi" = ( /obj/machinery/door/airlock/research/glass{ name = "Mining Station Mech Bay" @@ -7364,6 +7490,12 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating/lavaland_atmos, /area/lavaland/surface/outdoors) +"QE" = ( +/obj/structure/chair/plastic{ + pixel_y = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "QG" = ( /obj/machinery/door/airlock/public/glass{ id_tag = "gulag2"; @@ -7680,6 +7812,10 @@ dir = 1 }, /area/mine/laborcamp/security) +"Sw" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/water/lavaland_atmos/basalt, +/area/lavaland/surface/outdoors) "Sz" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/light/small/directional/west, @@ -7784,14 +7920,6 @@ }, /turf/open/floor/iron/dark/smooth_edge, /area/mine/eva) -"Ti" = ( -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/structure/table, -/obj/item/paper/fluff/stations/lavaland/orm_notice, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, -/area/mine/production) "To" = ( /obj/structure/table, /obj/machinery/reagentgrinder, @@ -7851,6 +7979,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/mine/maintenance/living/north) +"Ty" = ( +/obj/item/book/manual/fish_catalog{ + pixel_y = -6; + pixel_x = 14 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "TD" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -7880,17 +8015,6 @@ /obj/effect/turf_decal/tile/brown/fourcorners, /turf/open/floor/iron/dark, /area/mine/production) -"TQ" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, -/area/mine/eva) "TR" = ( /obj/structure/fence/cut/large{ dir = 4 @@ -8053,6 +8177,10 @@ /obj/structure/sign/poster/official/no_erp/directional/south, /turf/open/floor/iron/smooth, /area/mine/laborcamp/quarters) +"UP" = ( +/obj/effect/landmark/river_waypoint, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "UQ" = ( /obj/structure/cable, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -8269,6 +8397,10 @@ /obj/structure/lattice/catwalk/mining, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) +"VL" = ( +/obj/machinery/ore_silo, +/turf/closed/wall, +/area/mine/mechbay) "VO" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, @@ -8296,16 +8428,6 @@ }, /turf/open/floor/iron/dark/textured_large, /area/mine/laborcamp) -"VZ" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/brown/filled/line, -/obj/structure/table, -/obj/item/storage/medkit/regular, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, -/area/mine/production) "Wb" = ( /obj/structure/cable, /turf/open/floor/iron/dark/textured_large, @@ -8617,6 +8739,14 @@ /obj/item/seeds/apple, /turf/open/floor/iron/dark, /area/mine/laborcamp) +"XK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/lattice/catwalk/mining, +/obj/structure/railing, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) "XP" = ( /obj/structure/stone_tile/cracked, /obj/structure/stone_tile/block{ @@ -8770,13 +8900,6 @@ dir = 1 }, /area/mine/laborcamp/quarters) -"YD" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 6 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/dark, -/area/mine/production) "YF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8836,9 +8959,13 @@ /turf/open/floor/iron, /area/mine/lounge) "Zg" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/directions/evac/directional/east, -/turf/open/floor/plating, +/obj/machinery/door/airlock/external/glass{ + name = "Mining External Airlock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "lavaland_living_north" + }, +/turf/open/floor/iron/textured_large, /area/mine/lounge) "Zh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -8944,6 +9071,15 @@ }, /turf/open/misc/hay/lavaland, /area/lavaland/surface/outdoors) +"ZG" = ( +/obj/structure/cable, +/obj/machinery/power/smes/super/full{ + output_level = 100000; + input_level = 100000 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/mine/maintenance/service) "ZH" = ( /obj/structure/closet/secure_closet/labor_camp_security, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -35930,7 +36066,7 @@ pU pU pU pU -iI +JX pU pU pU @@ -36188,8 +36324,8 @@ aD aD aD aD -wG -wG +El +El pU pU pU @@ -39012,7 +39148,7 @@ Ue AA gB ON -ps +ZG gq ER vc @@ -39263,7 +39399,7 @@ ZY ZY pU pU -iI +JX aD Qz ON @@ -40034,7 +40170,7 @@ ZY ZY pU pU -iI +JX aD aD ON @@ -42897,9 +43033,9 @@ iu pU aj aj -aj -pU -SP +FH +BW +Zq kK Sm Vz @@ -43151,11 +43287,11 @@ kC ho aj pU -pU -pU -tF -tF -pU +aj +LV +ZM +mG +wc Zg ti DZ @@ -43408,12 +43544,12 @@ cC iu aj aj -pU -pU +aj +yV tF -aj -aj -Zq +mG +wc +Zg JA wp zF @@ -43661,19 +43797,19 @@ di di tF yV -Yq -aj -aj -pU -pU -aj -tF -aj -aj +Fo +eu +oy +ZM +ZM +LB +Ke +FH +BW +Zq Zq -SP bL -SP +Zq Zq aj aj @@ -43918,13 +44054,13 @@ di aj aj yV -Yq -aj -aj -pU -aj -aj -tF +kx +BE +BE +VK +BE +BE +oE aj aj aj @@ -44175,7 +44311,7 @@ di aj aj yV -Yq +XK aj aj aj @@ -44185,9 +44321,9 @@ pU Pd NY NY -SP +Zq xN -SP +Zq NY NY LS @@ -45710,7 +45846,7 @@ oA oA oA Vn -QX +VL QX vF QX @@ -45993,7 +46129,7 @@ Lw pU pU pU -aj +pU aj aj aj @@ -46507,7 +46643,7 @@ NY NY gQ pU -pU +aj aj aj aj @@ -46764,10 +46900,10 @@ BP BP Lw pU +aj +aj +aj pU -aj -aj -aj pU pU DB @@ -47021,9 +47157,9 @@ BP BP Lw pU +aj +aj pU -aj -aj pU pU pU @@ -47280,7 +47416,7 @@ Lw pU aj aj -aj +pU pU pU ai @@ -47537,7 +47673,7 @@ Lw pU aj aj -aj +pU pU ai ad @@ -47768,7 +47904,7 @@ Bb Ye GF nv -cR +KT Vt jW Fc @@ -48539,7 +48675,7 @@ zD TD Vw wl -Ti +cL pK lg se @@ -48796,12 +48932,12 @@ zJ oi Ts Wb -VZ +zt pK Tf -Jp +ay Yg -TQ +Kr dK pU pU @@ -49053,9 +49189,9 @@ RY RY dQ Cg -YD +Ac pK -Ob +Qh IL IL KV @@ -49071,6 +49207,7 @@ pU pU pU pU +yW pU pU pU @@ -49080,7 +49217,6 @@ pU aj aj aj -aj yV tF NL @@ -49326,16 +49462,16 @@ aj pU pU pU +CY +tl +tl +Sw +tl pU pU pU pU pU -pU -aj -aj -aj -aj aj aj zs @@ -49581,20 +49717,20 @@ NL aj aj aj -aj +pU +pU +tl +Sw +tl +tl +tl +tl pU pU pU pU pU aj -aj -aj -aj -pU -pU -aj -aj DB BP DB @@ -49838,20 +49974,20 @@ NL aj aj pU -aj -aj -aj -aj pU -aj -aj -aj -aj +pU +tl +tl +tl +tl +Sw +tl +pU +pU pU pU pU pU -aj pU pU pU @@ -50095,14 +50231,14 @@ NL aj pU pU -aj -aj -aj -aj -aj -aj -aj -aj +pU +ph +Sw +tl +tl +tl +tl +pU pU pU pU @@ -50350,16 +50486,16 @@ aj Ah aF aj -aj -aj -aj -aj pU -aj -aj -aj -aj -aj +pU +pU +pU +Ty +tl +tl +tl +hA +pU pU pU pU @@ -50607,15 +50743,15 @@ aj RO kf pU -aj -aj -aj -aj -aj -aj -aj -aj -aj +pU +pU +pU +pU +QE +tl +tl +tl +pU pU pU pU @@ -50865,14 +51001,14 @@ YP BP pU pU -aj -aj pU pU +CY +MC +tl +Sw pU pU -aj -pU pU pU ai @@ -53932,7 +54068,7 @@ ZY ZY pU pU -pU +aj aj aj aj @@ -54188,10 +54324,10 @@ ZY ZY ZY ZY -ZY -pU -pU -pU +aj +aj +aj +aj aj aj aj @@ -54444,11 +54580,11 @@ ZY ZY ZY ZY -ZY -ZY -ZY -pU -pU +aj +aj +aj +aj +aj pU pU pU @@ -54700,11 +54836,11 @@ ZY ZY ZY ZY -ZY -ZY -ZY -ZY -ZY +aj +aj +aj +aj +aj pU pU pU @@ -54957,10 +55093,10 @@ fQ ZY ZY ZY -ZY -ZY -ZY -ZY +aj +UP +aj +aj ZY ZY ZY @@ -55215,8 +55351,8 @@ fQ fQ ZY ZY -ZY -ZY +aj +aj ZY ZY ZY diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index fee7dff2c06..4ee2d9a6ad0 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -946,6 +946,11 @@ }, /turf/open/floor/iron/dark/textured, /area/station/medical/morgue) +"apr" = ( +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/maintenance/department/medical) "apt" = ( /obj/structure/rack, /obj/item/stack/sheet/glass{ @@ -3657,12 +3662,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/maintenance/department/medical) -"bme" = ( -/obj/structure/sign/warning/directional/east, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/asteroid) "bmf" = ( /obj/effect/turf_decal/siding/white{ dir = 1 @@ -4486,11 +4485,6 @@ /obj/structure/lattice, /turf/open/openspace, /area/station/command/meeting_room) -"bBo" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/cargo/miningoffice) "bBr" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, @@ -4794,6 +4788,12 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/upper) +"bGz" = ( +/obj/item/reagent_containers/cup/bottle/fake_gbs, +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/asteroid) "bGD" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -10411,12 +10411,6 @@ /obj/structure/cable, /turf/open/floor/carpet/executive, /area/station/command/heads_quarters/captain/private) -"dGk" = ( -/obj/structure/sign/warning/directional/south, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/asteroid) "dGq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 @@ -10997,6 +10991,11 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"dQq" = ( +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/hallway/secondary/entry) "dQr" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark/textured, @@ -12037,11 +12036,6 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron, /area/station/security) -"eio" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/maintenance/department/cargo) "eip" = ( /obj/structure/cable, /obj/machinery/door/airlock/external{ @@ -15882,6 +15876,20 @@ /obj/structure/disposalpipe/trunk/multiz, /turf/open/floor/iron, /area/station/security) +"fCU" = ( +/obj/structure/table/glass, +/obj/item/radio/intercom/directional/south, +/obj/item/tgui_book/manual/dsm{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/tgui_book/manual/idc{ + pixel_y = 2; + pixel_x = 3 + }, +/obj/item/food/sandwich/cheese, +/turf/open/floor/iron/dark/textured, +/area/station/command/heads_quarters/cmo) "fCY" = ( /obj/effect/turf_decal/tile/dark_blue/anticorner/contrasted{ dir = 8 @@ -22049,6 +22057,12 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/commons/dorms) +"hFT" = ( +/obj/structure/sign/warning/directional/east, +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/asteroid) "hFY" = ( /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -22461,22 +22475,6 @@ /obj/effect/mapping_helpers/airlock/access/all/command/general, /turf/open/floor/iron/dark/side, /area/station/command/bridge) -"hOh" = ( -/obj/structure/table/glass, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/book/manual/wiki/infections, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/item/tgui_book/manual/idc{ - pixel_y = 2; - pixel_x = 3 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "hOn" = ( /obj/structure/closet/emcloset, /obj/structure/sign/poster/official/random/directional/east, @@ -23273,6 +23271,12 @@ }, /turf/open/floor/iron/freezer, /area/station/security/prison/shower) +"ibw" = ( +/obj/structure/sign/warning/directional/south, +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/asteroid) "ibx" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, @@ -23775,11 +23779,6 @@ /obj/effect/spawner/random/structure/closet_empty/crate/with_loot, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"ilp" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/maintenance/department/science) "ilq" = ( /obj/structure/transport/linear/public, /obj/machinery/holopad, @@ -26223,6 +26222,11 @@ }, /turf/open/floor/iron, /area/station/security/execution/transfer) +"jfO" = ( +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/maintenance/port/greater) "jge" = ( /obj/effect/spawner/random/structure/crate, /obj/item/clothing/glasses/meson, @@ -26372,12 +26376,6 @@ /obj/docking_port/stationary/syndicate, /turf/open/space/openspace, /area/space) -"jjp" = ( -/obj/item/reagent_containers/cup/bottle/fake_gbs, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/asteroid) "jjF" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -27031,6 +27029,11 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"jsy" = ( +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/maintenance/central/greater) "jsC" = ( /turf/closed/wall/r_wall, /area/station/maintenance/department/medical/central) @@ -33485,6 +33488,11 @@ "lyN" = ( /turf/open/openspace, /area/station/engineering/lobby) +"lyP" = ( +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/asteroid) "lyQ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -33813,11 +33821,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/white, /area/station/security/medical) -"lDQ" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/hallway/secondary/entry) "lDZ" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/unres/delayed, @@ -34829,6 +34832,11 @@ dir = 1 }, /area/station/engineering/atmos/mix) +"lWq" = ( +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/maintenance/department/cargo) "lWF" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -36215,20 +36223,6 @@ }, /turf/open/openspace, /area/station/engineering/main) -"muE" = ( -/obj/structure/table/glass, -/obj/item/radio/intercom/directional/south, -/obj/item/tgui_book/manual/dsm{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/tgui_book/manual/idc{ - pixel_y = 2; - pixel_x = 3 - }, -/obj/item/food/sandwich/cheese, -/turf/open/floor/iron/dark/textured, -/area/station/command/heads_quarters/cmo) "muL" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, @@ -37650,22 +37644,6 @@ }, /turf/open/floor/iron/white, /area/station/maintenance/department/medical) -"mUB" = ( -/obj/structure/table/reinforced/rglass, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/book/manual/wiki/medicine, -/obj/item/tgui_book/manual/dsm{ - pixel_y = 3; - pixel_x = 3 - }, -/obj/item/tgui_book/manual/idc{ - pixel_y = 7 - }, -/obj/item/clothing/neck/stethoscope{ - pixel_y = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "mUF" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -39118,12 +39096,6 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"nuH" = ( -/obj/structure/sign/warning/directional/west, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/asteroid) "nuM" = ( /obj/machinery/door/airlock/public/glass{ name = "Courtroom" @@ -39670,6 +39642,11 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron, /area/station/security/office) +"nGi" = ( +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/maintenance/disposal/incinerator) "nGp" = ( /obj/machinery/camera/directional/west{ c_tag = "Atmospherics Tank - Carbon Dioxide" @@ -40655,6 +40632,22 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/station/maintenance/central/lesser) +"oab" = ( +/obj/structure/table/reinforced/rglass, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/item/book/manual/wiki/medicine, +/obj/item/tgui_book/manual/dsm{ + pixel_y = 3; + pixel_x = 3 + }, +/obj/item/tgui_book/manual/idc{ + pixel_y = 7 + }, +/obj/item/clothing/neck/stethoscope{ + pixel_y = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "oac" = ( /obj/machinery/mecha_part_fabricator{ drop_direction = 1 @@ -43697,6 +43690,22 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/tile, /area/station/service/bar) +"pdt" = ( +/obj/structure/table/glass, +/obj/item/folder/white{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/item/book/manual/wiki/infections, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 8 + }, +/obj/item/tgui_book/manual/idc{ + pixel_y = 2; + pixel_x = 3 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "pdx" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/item/radio/intercom/directional/south, @@ -44971,6 +44980,12 @@ dir = 1 }, /area/station/medical/exam_room) +"pzu" = ( +/obj/structure/sign/warning/directional/west, +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/asteroid) "pzw" = ( /obj/machinery/door/airlock/maintenance/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, @@ -47415,11 +47430,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/plating, /area/station/maintenance/central/lesser) -"qoN" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/maintenance/department/medical) "qoO" = ( /obj/structure/window/spawner/directional/south, /turf/open/floor/iron/dark, @@ -47574,20 +47584,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/construction/mining/aux_base) -"qro" = ( -/obj/structure/table/glass, -/obj/structure/reagent_dispensers/wall/virusfood/directional/west, -/obj/machinery/reagentgrinder{ - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/green/half/contrasted{ - dir = 8 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 3 - }, -/turf/open/floor/iron/white, -/area/station/medical/virology) "qrs" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -48943,6 +48939,12 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating/airless, /area/station/solars/starboard/fore) +"qSf" = ( +/obj/structure/sign/warning/directional/north, +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/asteroid) "qSg" = ( /obj/machinery/newscaster/directional/north, /obj/structure/disposalpipe/segment{ @@ -51859,11 +51861,6 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron/showroomfloor, /area/station/cargo/storage) -"rPy" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/maintenance/port/greater) "rPA" = ( /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 1 @@ -57119,11 +57116,6 @@ }, /turf/open/floor/carpet/executive, /area/station/command/meeting_room) -"tAa" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/maintenance/central/greater) "tAf" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -58498,12 +58490,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/maintenance/disposal/incinerator) -"tXg" = ( -/obj/structure/sign/warning/directional/north, -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/asteroid) "tXi" = ( /obj/machinery/duct, /obj/machinery/light_switch/directional/west, @@ -61072,6 +61058,11 @@ /obj/effect/turf_decal/trimline/blue/filled/mid_joiner, /turf/open/floor/iron/white/smooth_large, /area/station/medical/medbay/central) +"uPO" = ( +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/maintenance/department/science) "uQl" = ( /obj/item/flashlight/flare/candle/infinite{ pixel_x = 16; @@ -62742,11 +62733,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/commons/fitness/recreation) -"vxX" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/asteroid) "vxZ" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ dir = 4 @@ -63735,11 +63721,6 @@ }, /turf/open/floor/wood/tile, /area/station/service/bar) -"vPt" = ( -/turf/closed/mineral/random/stationside/asteroid/porus{ - mineralChance = 20 - }, -/area/station/maintenance/disposal/incinerator) "vPF" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/spawner/random/structure/grille, @@ -64202,6 +64183,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/science/lobby) +"vXz" = ( +/obj/structure/table/glass, +/obj/structure/reagent_dispensers/wall/virusfood/directional/west, +/obj/machinery/reagentgrinder{ + pixel_y = 8 + }, +/obj/effect/turf_decal/tile/green/half/contrasted{ + dir = 8 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 3 + }, +/turf/open/floor/iron/white, +/area/station/medical/virology) "vXS" = ( /obj/structure/broken_flooring/side, /obj/effect/decal/cleanable/dirt/dust, @@ -66673,6 +66668,11 @@ "wOU" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/qm) +"wPb" = ( +/turf/closed/mineral/random/stationside/asteroid/porus{ + mineral_chance = 20 + }, +/area/station/cargo/miningoffice) "wPd" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, @@ -81097,9 +81097,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP rnk rnk auE @@ -81121,10 +81121,10 @@ rYJ fjg gzL jsC -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP cLf dUc cLf @@ -81353,9 +81353,9 @@ dUc cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP rnk rnk tdh @@ -81378,10 +81378,10 @@ oFu hrk oFu jsC -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP rnk loh loh @@ -81608,9 +81608,9 @@ cLf cLf dUc cLf -vxX -vxX -vxX +lyP +lyP +lyP rnk rnk rnk @@ -81864,10 +81864,10 @@ cLf cLf cLf dUc -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP rnk ryV rnk @@ -82100,10 +82100,10 @@ cLf cLf cLf cLf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP cLf dUc dUc @@ -82124,7 +82124,7 @@ hCS hCS hCS hCS -vxX +lyP rnk bCv tDg @@ -83118,7 +83118,7 @@ poi fgP poi cax -eio +lWq aCx mxq mxq @@ -83374,7 +83374,7 @@ dqW vTd csl dfW -eio +lWq dDZ mMS nIJ @@ -83628,13 +83628,13 @@ cro cro cro poi -eio +lWq ngd lKZ ngd mMS mMS -eio +lWq mxq pRM mxq @@ -83890,8 +83890,8 @@ eSS dGR syR aVY -eio -eio +lWq +lWq mxq iPw tBe @@ -84148,7 +84148,7 @@ sIV syR sVn sIV -eio +lWq mxq uiy qWu @@ -84405,7 +84405,7 @@ mJL hHJ hHJ qHv -eio +lWq mxq mxq xlB @@ -84662,8 +84662,8 @@ abw eSS esl ggY -eio -eio +lWq +lWq mxq fGr ugu @@ -84917,10 +84917,10 @@ cDM lDP fBK eSS -eio +lWq ggY -eio -eio +lWq +lWq mxq mxq sGj @@ -86431,7 +86431,7 @@ cLf cLf cLf dUc -vxX +lyP ubm ubm hME @@ -86528,8 +86528,8 @@ rnk gtK oqj rnk -vxX -vxX +lyP +lyP dUc cLf cLf @@ -86688,8 +86688,8 @@ cLf cLf cLf unk -vxX -vxX +lyP +lyP ubm fae eyv @@ -86767,7 +86767,7 @@ wJy qof hHj lUk -mUB +oab asr lyr tYs @@ -86786,7 +86786,7 @@ gtK rnk rnk rnk -vxX +lyP unk cLf cLf @@ -86944,9 +86944,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP ubm eYT ohZ @@ -87043,7 +87043,7 @@ gtK rnk gaE rnk -vxX +lyP cLf cLf cLf @@ -87201,9 +87201,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP ubm dMF rrF @@ -87300,8 +87300,8 @@ gtK rZz beO rnk -vxX -vxX +lyP +lyP cLf cLf cLf @@ -87458,9 +87458,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP ubm hME hME @@ -87557,7 +87557,7 @@ paa rnk qvN rnk -vxX +lyP cLf cLf cLf @@ -87715,9 +87715,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP hHw oRD pbB @@ -87814,7 +87814,7 @@ paa rnk rnk rnk -vxX +lyP cLf cLf cLf @@ -87972,9 +87972,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP hHw mut eQY @@ -88070,7 +88070,7 @@ rnk rms loR rnk -vxX +lyP cLf cLf cLf @@ -88229,9 +88229,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP hHw xjQ oMk @@ -88487,8 +88487,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP hHw xjQ qEm @@ -88745,7 +88745,7 @@ cLf cLf cLf cLf -vxX +lyP hHw okV mks @@ -92943,9 +92943,9 @@ rnk paa lqf rnk -vxX -vxX -vxX +lyP +lyP +lyP cLf cLf dUc @@ -93137,8 +93137,8 @@ oZz oZz pHy oZz -vxX -vxX +lyP +lyP ygw lTJ qZh @@ -93200,8 +93200,8 @@ rnk paa pDQ rnk -vxX -vxX +lyP +lyP rnk rnk rnk @@ -93393,9 +93393,9 @@ fYe fYe fYe fYe -vxX -vxX -vxX +lyP +lyP +lyP ygw pgC sxC @@ -93636,10 +93636,10 @@ cLf cLf cLf cLf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP wBC pOg cYP @@ -93652,7 +93652,7 @@ cLf fYe fYe fYe -vxX +lyP ygw ygw ygw @@ -93894,9 +93894,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP wBC rKi kIK @@ -93910,10 +93910,10 @@ cLf uuN fYe fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP iol iol iol @@ -94151,9 +94151,9 @@ cLf cLf cLf cLf -vxX +lyP unk -vxX +lyP wBC dQr dNn @@ -94169,8 +94169,8 @@ uuN fYe fYe fYe -vxX -vxX +lyP +lyP fri sZy otH @@ -94427,7 +94427,7 @@ cLf cLf fYe fYe -vxX +lyP fri taD nIb @@ -103653,7 +103653,7 @@ iUF cLf cLf cLf -vxX +lyP srs eEx vDK @@ -103910,7 +103910,7 @@ iUF dUc dUc unk -vxX +lyP srs srs cgK @@ -104166,8 +104166,8 @@ cLf iUF cLf cLf -vxX -vxX +lyP +lyP srs lPj cqm @@ -104424,7 +104424,7 @@ iUF cLf cLf cLf -vxX +lyP eOn fxo vDK @@ -104703,10 +104703,10 @@ dUc cLf cLf cLf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gvF uLz grl @@ -104959,11 +104959,11 @@ dUc dUc dUc dUc -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP gvF dnW rvg @@ -105216,7 +105216,7 @@ cLf cLf cLf cLf -vxX +lyP vfJ uJt uJt @@ -105473,7 +105473,7 @@ cLf cLf cLf cLf -vxX +lyP uJt eJr wWY @@ -105708,7 +105708,7 @@ cLf iUF cLf cLf -vxX +lyP dZy fhG lQe @@ -105730,7 +105730,7 @@ cLf cLf cLf cLf -vxX +lyP uJt eJr hgX @@ -105964,8 +105964,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP dZy dZy xZX @@ -105986,8 +105986,8 @@ kYu cLf cLf cLf -vxX -vxX +lyP +lyP uJt nXF tLH @@ -106221,9 +106221,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP dZy tgw nes @@ -106239,12 +106239,12 @@ kYu aUD kYu kYu -vxX +lyP cLf cLf cLf -vxX -vxX +lyP +lyP uJt eJr wWY @@ -106479,8 +106479,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP dZy prz idU @@ -106496,12 +106496,12 @@ lYN iPQ noc kYu -vxX -vxX +lyP +lyP cLf cLf -vxX -vxX +lyP +lyP vfJ vfJ xbu @@ -106737,7 +106737,7 @@ cLf cLf cLf cLf -vxX +lyP wfl dZy dZy @@ -106753,13 +106753,13 @@ kYu kYu kYu pIN -vxX -vxX +lyP +lyP cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP vfJ eIV gMK @@ -106994,8 +106994,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP wZz wZz wZz @@ -107009,14 +107009,14 @@ wZz wZz wZz fBc -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe -vxX -vxX -vxX +lyP +lyP +lyP vfJ gLw jmY @@ -107251,8 +107251,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP wZz wZz dxA @@ -107266,14 +107266,14 @@ dPf uCS wZz wZz -vxX -vxX +lyP +lyP uif fYe fYe fYe -vxX -vxX +lyP +lyP vfJ rXG raz @@ -107508,8 +107508,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP wZz wZz tOs @@ -107523,14 +107523,14 @@ hwP wmd wZz wZz -vxX -vxX +lyP +lyP fYe fYe fYe fYe -vxX -vxX +lyP +lyP vfJ oBP raz @@ -107765,8 +107765,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP wZz wZz rdK @@ -107780,13 +107780,13 @@ hwP iYC wZz wZz -vxX -vxX +lyP +lyP fYe fYe fYe uif -vxX +lyP vfJ vfJ oBP @@ -108021,9 +108021,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP wZz wZz mYK @@ -108037,13 +108037,13 @@ cHP taK wZz wZz -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe -vxX -vxX +lyP +lyP vfJ gZF oBP @@ -108123,9 +108123,9 @@ ykG fdj dUc mPv -vxX -vxX -vxX +lyP +lyP +lyP cLf cLf cLf @@ -108278,9 +108278,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP wZz wZz fOM @@ -108294,13 +108294,13 @@ hwP tOp wZz wZz -vxX -vxX -vxX +lyP +lyP +lyP cLf cLf -vxX -vxX +lyP +lyP vfJ xAd iXp @@ -108383,8 +108383,8 @@ ykG ykG ykG ykG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -108535,9 +108535,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP wZz wZz toT @@ -108551,13 +108551,13 @@ hwP emn wZz wZz -vxX -vxX +lyP +lyP cLf cLf cLf -vxX -vxX +lyP +lyP dpu aku uOo @@ -108640,8 +108640,8 @@ pRG arr aRs ykG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -108793,8 +108793,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP wZz wZz biC @@ -108808,17 +108808,17 @@ xZL jPg wZz wZz -vxX -vxX +lyP +lyP cLf cLf cLf -vxX -vxX -ilp +lyP +lyP +uPO aku uOo -ilp +uPO obA lXz oAX @@ -108897,8 +108897,8 @@ ptc saJ arr ykG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -109050,8 +109050,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP wZz wZz wZz @@ -109065,17 +109065,17 @@ wZz wZz wZz wZz -vxX +lyP cLf cLf cLf cLf -vxX -vxX +lyP +lyP vfR aku uOo -ilp +uPO obA mxs qQr @@ -109101,7 +109101,7 @@ vKd niB hjI crU -vxX +lyP dUc dUc nbu @@ -109154,8 +109154,8 @@ rrz wOy voY ykG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -109308,7 +109308,7 @@ cLf cLf cLf cLf -vxX +lyP wNk wZz wZz @@ -109322,17 +109322,17 @@ wZz wZz wZz wNk -vxX +lyP cLf cLf cLf cLf -vxX -vxX -ilp +lyP +lyP +uPO aku uOo -ilp +uPO obA xPZ gzr @@ -109358,7 +109358,7 @@ aoA pXS hjI crU -vxX +lyP dUc dUc nbu @@ -109411,7 +109411,7 @@ ptc dwH arr ykG -vxX +lyP cLf cLf cLf @@ -109584,12 +109584,12 @@ cLf cLf cLf cLf -vxX -vxX -ilp +lyP +lyP +uPO aku uOo -ilp +uPO obA wzX eFx @@ -109615,7 +109615,7 @@ ise niB qAI crU -vxX +lyP dUc dUc nbu @@ -109668,7 +109668,7 @@ wIN arr arr ykG -vxX +lyP cLf cLf cLf @@ -109841,12 +109841,12 @@ cLf cLf cLf cLf -vxX -vxX -ilp +lyP +lyP +uPO aku uOo -ilp +uPO obA sOJ uhc @@ -109872,7 +109872,7 @@ aoA qOs bpy crU -vxX +lyP dUc dUc nbu @@ -109925,7 +109925,7 @@ ykG ykG ykG ykG -vxX +lyP cLf cLf cLf @@ -110098,12 +110098,12 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP ieo aku uOo -ilp +uPO obA obA obA @@ -110129,7 +110129,7 @@ niB niB aoA crU -vxX +lyP dUc dUc nbu @@ -110182,7 +110182,7 @@ fmr dUc cLf cLf -vxX +lyP cLf cLf cLf @@ -110354,18 +110354,18 @@ cLf cLf cLf cLf -vxX -vxX -vxX -ilp +lyP +lyP +lyP +uPO aku uOo -ilp -ilp +uPO +uPO ieo lKk iSU -ilp +uPO ixU mLH dfM @@ -110386,7 +110386,7 @@ niB ers dsL crU -vxX +lyP dUc dUc dUc @@ -110612,9 +110612,9 @@ cLf cLf cLf fYe -vxX -vxX -ilp +lyP +lyP +uPO aku uOo aku @@ -110622,7 +110622,7 @@ foX aku ouA jJe -ilp +uPO gOY gOY gOY @@ -110643,7 +110643,7 @@ aRf aRf crU crU -vxX +lyP fTX hfp hfp @@ -110693,8 +110693,8 @@ cpG cpG cpG cpG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -110869,17 +110869,17 @@ dUc dUc dUc fYe -vxX -vxX -ilp +lyP +lyP +uPO aku uOo aku foX aku aku -ilp -ilp +uPO +uPO gOY xxN aam @@ -110892,9 +110892,9 @@ uPL sSN nal gOY -vxX +lyP cxg -vxX +lyP dUc dUc dUc @@ -110951,8 +110951,8 @@ rWI hVe cpG cpG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -111126,16 +111126,16 @@ cLf cLf cLf fYe -vxX -vxX -ilp +lyP +lyP +uPO aku uOo pwZ rji foX -ilp -ilp +uPO +uPO jTB jTB jTB @@ -111151,7 +111151,7 @@ cpJ gOY cxg cxg -vxX +lyP nbu nbu nbu @@ -111208,7 +111208,7 @@ lpe xDk mcd cpG -vxX +lyP cLf cLf cLf @@ -111383,15 +111383,15 @@ cLf cLf cLf fYe -vxX -vxX -ilp +lyP +lyP +uPO vfR aku uOo aku aku -ilp +uPO jTB jTB ief @@ -111408,7 +111408,7 @@ oLj gOY wHl cxg -vxX +lyP nbu aXt rBj @@ -111641,14 +111641,14 @@ cLf cLf cLf uif -vxX -ilp -ilp -ilp +lyP +uPO +uPO +uPO uOo aku -ilp -ilp +uPO +uPO jTB jGd eBH @@ -111665,7 +111665,7 @@ gOY gOY cxg cxg -vxX +lyP nbu aXt jyO @@ -111889,8 +111889,8 @@ cLf cLf dUc cLf -vxX -vxX +lyP +lyP fYe fYe fYe @@ -111898,14 +111898,14 @@ fYe fYe fYe fYe -vxX -ilp -ilp -ilp +lyP +uPO +uPO +uPO uOo aku -ilp -ilp +uPO +uPO jTB dkr hbH @@ -111922,7 +111922,7 @@ ofG gOY cxg cxg -vxX +lyP nbu aXt aXt @@ -112144,25 +112144,25 @@ dUc dUc dUc dUc -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP fYe fYe fYe fYe fYe fYe -ilp -ilp +uPO +uPO ieo iSU uOo uro rji -ilp +uPO jTB sqJ wiT @@ -112179,7 +112179,7 @@ rYe gOY gOY cxg -vxX +lyP nbu nbu nbu @@ -112401,9 +112401,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe fYe @@ -112413,13 +112413,13 @@ cLf cLf fYe rji -ilp +uPO vfR aku uOo aku -ilp -ilp +uPO +uPO jTB dEn lIn @@ -112436,7 +112436,7 @@ fDz gqV gOY cxg -vxX +lyP nbu pIV dLf @@ -112659,7 +112659,7 @@ cLf cLf cLf cLf -vxX +lyP cLf cLf dUc @@ -112675,8 +112675,8 @@ aku aku uOo aku -ilp -ilp +uPO +uPO jTB gbV jqY @@ -112693,7 +112693,7 @@ dyd qDM gOY cxg -vxX +lyP nbu pIV mBg @@ -112750,8 +112750,8 @@ aTv aTv cpG cpG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -112932,8 +112932,8 @@ aku pkw uOo aku -ilp -ilp +uPO +uPO jTB wKR wKR @@ -112950,7 +112950,7 @@ aWM vzP gOY cxg -vxX +lyP nbu pIV pIV @@ -113007,8 +113007,8 @@ aYf aYf krW cpG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -113182,7 +113182,7 @@ cLf cLf cLf fYe -vxX +lyP rji nLT aku @@ -113190,7 +113190,7 @@ aku uOo aku ieo -ilp +uPO jTB jTB qXE @@ -113207,7 +113207,7 @@ lfq mDx gOY cxg -vxX +lyP nbu nbu nbu @@ -113264,8 +113264,8 @@ aYf eRD eRD cpG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -113438,17 +113438,17 @@ cLf cLf cLf cLf -vxX -vxX -ilp +lyP +lyP +uPO pkw aku aku uOo aku vfR -ilp -ilp +uPO +uPO jTB jTB jTB @@ -113464,7 +113464,7 @@ sLr mDx cxg cxg -vxX +lyP nbu msY nGp @@ -113521,8 +113521,8 @@ aYf eRD lPp cpG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -113721,7 +113721,7 @@ lfq nkM cxg cxg -vxX +lyP nbu msY qNM @@ -113778,8 +113778,8 @@ prc prc prc cpG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -113978,7 +113978,7 @@ vib vMR dUc cxg -vxX +lyP nbu msY msY @@ -114035,8 +114035,8 @@ prc prc prc cpG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -114235,7 +114235,7 @@ egV vMR dUc cxg -vxX +lyP nbu nbu nbu @@ -114292,8 +114292,8 @@ cpG cpG cpG cpG -vxX -vxX +lyP +lyP cLf cLf cLf @@ -114492,12 +114492,12 @@ nbS vMR dUc cLf -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP dUc wRN fdC @@ -114524,7 +114524,7 @@ kGZ woo kUX uFC -vxX +lyP uFC cUD nPW @@ -114543,14 +114543,14 @@ xwD cvL psF uFC -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP kxB kxB -vxX -vxX +lyP +lyP cLf cLf cLf @@ -114726,8 +114726,8 @@ pkl pkl pkl pkl -ilp -ilp +uPO +uPO ieo aku aku @@ -114750,11 +114750,11 @@ nkM dUc cLf dUc -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP dUc fTX rLK @@ -114780,8 +114780,8 @@ edL kGZ wlG kUX -vxX -vxX +lyP +lyP uFC pbD nPW @@ -114806,8 +114806,8 @@ gjZ sqZ uuN kxB -vxX -vxX +lyP +lyP cLf cLf cLf @@ -114980,12 +114980,12 @@ cLf cLf cLf cLf -ilp -ilp -ilp -ilp -ilp -ilp +uPO +uPO +uPO +uPO +uPO +uPO vfR pkw aku @@ -115007,12 +115007,12 @@ moe dUc cLf dUc -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP dUc eTZ dUc @@ -115037,8 +115037,8 @@ cEh kGZ pul kUX -vxX -vxX +lyP +lyP uFC biG nPW @@ -115063,7 +115063,7 @@ mlk dqK sqZ kxB -vxX +lyP cLf cLf cLf @@ -115234,17 +115234,17 @@ fYe fYe wfz dUc -vxX +lyP dUc dUc -ilp -ilp -ilp -ilp -ilp -ilp -ilp -ilp +uPO +uPO +uPO +uPO +uPO +uPO +uPO +uPO aku aku aku @@ -115268,8 +115268,8 @@ dUc dUc dUc dUc -vxX -vxX +lyP +lyP nbu jWP wVI @@ -115294,8 +115294,8 @@ nPf kGZ qih kUX -vxX -vxX +lyP +lyP uFC lCu pxu @@ -115320,7 +115320,7 @@ mlk mlk wtF kxB -vxX +lyP cLf cLf cLf @@ -115486,21 +115486,21 @@ cLf cLf cLf cLf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe fYe cLf cLf cLf -ilp -ilp -ilp -ilp +uPO +uPO +uPO +uPO cLf -ilp +uPO obA lJq tsz @@ -115525,8 +115525,8 @@ cLf cLf cLf dUc -vxX -vxX +lyP +lyP nbu jxx bHa @@ -115577,7 +115577,7 @@ mlk dqK wtF kxB -vxX +lyP cLf cLf cLf @@ -115744,9 +115744,9 @@ cLf cLf cLf uif -vxX -vxX -vxX +lyP +lyP +lyP uif cLf cLf @@ -115782,8 +115782,8 @@ cLf cLf cLf dUc -vxX -vxX +lyP +lyP nbu szc azx @@ -115834,8 +115834,8 @@ mlk dqK wtF kxB -vxX -vxX +lyP +lyP cLf cLf cLf @@ -116000,10 +116000,10 @@ shs shs shs dUc -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe cLf cLf @@ -116012,9 +116012,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP obA lJq jBM @@ -116039,8 +116039,8 @@ cLf cLf cLf dUc -vxX -vxX +lyP +lyP nbu szc szc @@ -116066,7 +116066,7 @@ kUX kUX kUX dUc -vxX +lyP uFC spr xcm @@ -116090,9 +116090,9 @@ mlk mlk mlk wtF -vxX -vxX -vxX +lyP +lyP +lyP cLf cLf cLf @@ -116269,9 +116269,9 @@ cLf cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP obA cLf cPl @@ -116296,8 +116296,8 @@ cLf cLf cLf dUc -vxX -vxX +lyP +lyP nbu nbu nbu @@ -116311,7 +116311,7 @@ nbu nbu nbu nbu -vxX +lyP mUQ cLf dUc @@ -116320,10 +116320,10 @@ cLf cLf dUc cLf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP uFC uFC jnY @@ -116347,9 +116347,9 @@ dqK mlk dqK wtF -vxX -vxX -vxX +lyP +lyP +lyP cLf cLf cLf @@ -116527,8 +116527,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP obA cLf cLf @@ -116554,17 +116554,17 @@ cLf cLf dUc cLf -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe @@ -116578,10 +116578,10 @@ cLf dUc cLf cLf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP dUc cLf mDV @@ -116604,9 +116604,9 @@ dqK dqK dqK wtF -vxX -vxX -vxX +lyP +lyP +lyP cLf cLf cLf @@ -116784,8 +116784,8 @@ tyd cLf cLf cLf -vxX -vxX +lyP +lyP etW cLf cLf @@ -116812,22 +116812,22 @@ cLf dUc cLf cLf -vxX +lyP cLf dUc -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe -vxX +lyP mUQ -vxX +lyP dUc cLf cLf @@ -116836,9 +116836,9 @@ dUc cLf cLf cLf -vxX -vxX -vxX +lyP +lyP +lyP dUc cLf mDV @@ -116861,8 +116861,8 @@ dqK mlk dqK wtF -vxX -vxX +lyP +lyP cLf cLf cLf @@ -117075,16 +117075,16 @@ dUc cLf cLf cLf -vxX -vxX +lyP +lyP cLf cLf cLf -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP dUc cLf cLf @@ -117092,10 +117092,10 @@ cLf dUc cLf cLf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP dUc dUc mDV @@ -117110,7 +117110,7 @@ adc ncv ncm uFC -vxX +lyP cxg cxg xzT @@ -117118,8 +117118,8 @@ tgj tgj tgj rwE -vxX -vxX +lyP +lyP cLf cLf cLf @@ -117340,18 +117340,18 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP dUc iUF iUF iUF dUc -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP cLf cLf cLf @@ -117367,16 +117367,16 @@ uvN wQz kiW uFC -vxX -vxX -vxX +lyP +lyP +lyP cxg cxg cxg cxg -vxX -vxX -vxX +lyP +lyP +lyP cLf cLf cLf @@ -117605,8 +117605,8 @@ cLf cLf cLf cLf -vxX -vxX +lyP +lyP cLf mUQ fYe @@ -117625,15 +117625,15 @@ aQo kEu uFC vaU -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP cLf cLf cLf @@ -117869,7 +117869,7 @@ uVI fYe fYe fYe -vxX +lyP uFC uFC kEu @@ -117881,15 +117881,15 @@ kEu kEu uFC uFC -vxX -vxX -vxX +lyP +lyP +lyP mUQ uVI uVI mUQ -vxX -vxX +lyP +lyP cLf cLf cLf @@ -118126,8 +118126,8 @@ uVI uVI uVI mUQ -vxX -vxX +lyP +lyP uFC uFC uFC @@ -118137,10 +118137,10 @@ uFC uFC uFC uFC -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe fYe fYe @@ -118385,18 +118385,18 @@ cLf cLf cLf cLf -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP cLf cLf fYe @@ -139440,12 +139440,12 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP hhX hhX -vxX -vxX +lyP +lyP hhX hhX hhX @@ -139695,15 +139695,15 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -139950,21 +139950,21 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP mUQ kLL unk -vxX +lyP hhX hhX hhX @@ -140205,24 +140205,24 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe qHE -vxX -vxX -vxX +lyP +lyP +lyP hhX hhX hhX @@ -140462,25 +140462,25 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP vYz aUf vYz vYz vYz -vxX +lyP fYe fYe fYe fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -140719,8 +140719,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP vYz aUf vYz @@ -140732,12 +140732,12 @@ vYz aUf aUf aUf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe -vxX +lyP hhX hhX hhX @@ -140990,9 +140990,9 @@ ory aTE aUf aUf -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe hhX @@ -141247,10 +141247,10 @@ qyq fUv pkA aUf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe hhX hhX @@ -141506,8 +141506,8 @@ wMe wnw fYe fYe -vxX -vxX +lyP +lyP hhX hhX hhX @@ -143560,7 +143560,7 @@ eZo wCR vYz vYz -vxX +lyP fYe fYe hhX @@ -143816,9 +143816,9 @@ eSs iXA vYz vYz -vxX -vxX -vxX +lyP +lyP +lyP fYe hhX hhX @@ -144075,7 +144075,7 @@ iVG eYP gHN gHN -vxX +lyP hhX hhX hhX @@ -145088,7 +145088,7 @@ hhX hhX hhX hhX -vxX +lyP vYz fJV wdI @@ -145344,8 +145344,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP vYz vYz rap @@ -145602,8 +145602,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP vYz aUf aUf @@ -145619,9 +145619,9 @@ hhX hhX jVV hhX -vxX -vxX -vxX +lyP +lyP +lyP hhX hhX fZF @@ -145876,8 +145876,8 @@ hhX fYe fYe fYe -vxX -vxX +lyP +lyP fYe fYe qHE @@ -146110,10 +146110,10 @@ oID jVV hhX hhX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -146365,20 +146365,20 @@ hhX hhX hhX jVV -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX -vxX -vxX +lyP +lyP iJm iJm eYP @@ -146389,14 +146389,14 @@ dvC mUQ fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe @@ -146622,19 +146622,19 @@ hhX hhX hhX hhX -vxX -vxX -vxX +lyP +lyP +lyP qAp fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP mUQ kLL cts @@ -146646,14 +146646,14 @@ iJm mUQ mUQ fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe @@ -146879,19 +146879,19 @@ hhX hhX hhX hhX -vxX -vxX -vxX +lyP +lyP +lyP uif uif -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP iJm iJm foL @@ -146900,31 +146900,31 @@ gZt dPG foL iJm -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fnh fnh fnh fnh fnh fnh -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe fYe fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -147108,9 +147108,9 @@ hhX hhX hhX hhX -vxX -vxX -vxX +lyP +lyP +lyP hhX hhX hhX @@ -147135,20 +147135,20 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe hSF -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP iJm iJm foL @@ -147158,31 +147158,31 @@ plV foL dcl qHE -vxX -vxX -vxX +lyP +lyP +lyP fnh vTt dBK aQD vTt fnh -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -147365,10 +147365,10 @@ fYe fYe fYe hhX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -147392,8 +147392,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP gNV gNV gNV @@ -147402,10 +147402,10 @@ gNV gNV gNV uif -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP iJm iJm foL @@ -147424,22 +147424,22 @@ mlK mlK fSp fnh -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -jjp -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +bGz +lyP +lyP hhX hhX hhX @@ -147619,13 +147619,13 @@ fYe fYe fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -147650,7 +147650,7 @@ aZg aZg aZg aZg -vxX +lyP gNV bMZ tKm @@ -147658,11 +147658,11 @@ lib qmf iSw gNV -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP iJm iJm eYP @@ -147681,22 +147681,22 @@ mlK mlK dBK fnh -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -147873,28 +147873,28 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP lLo sMT lLo @@ -147907,7 +147907,7 @@ umg umg umg umg -vxX +lyP gNV rwu eiI @@ -147915,11 +147915,11 @@ hvV kkK pha gNV -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP iJm iJm iJm @@ -147928,7 +147928,7 @@ wku plV gHN fYe -qoN +apr fnh diz jMW @@ -147938,8 +147938,8 @@ aQD dBK vTt fnh -vxX -vxX +lyP +lyP fnh fnh fnh @@ -147947,12 +147947,12 @@ fnh fnh fnh fnh -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -148130,27 +148130,27 @@ fNW hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP pEH pEH pEH -vxX +lyP iaN iaN aJP @@ -148172,12 +148172,12 @@ tXr qia qtT gNV -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP iJm uKm eYP @@ -148185,7 +148185,7 @@ pmp ldf eYP fnh -qoN +apr fnh fnh jMW @@ -148204,10 +148204,10 @@ fnh wXY whx fnh -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -148387,26 +148387,26 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP pEH pEH -bBo -bBo +wPb +wPb iaN iaN iig @@ -148430,19 +148430,19 @@ gNV gNV gNV dLR -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP fnh mUA iLo lYg oHC fnh -qoN +apr fnh lTj jMW @@ -148461,10 +148461,10 @@ mkc kzS uym fnh -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -148646,20 +148646,20 @@ fYe fYe fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP pEH ixo dcg @@ -148691,8 +148691,8 @@ vLs aCv vLs aCv -qoN -qoN +apr +apr kGS rPT atT @@ -148718,10 +148718,10 @@ fnh qlO guP fnh -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -148903,20 +148903,20 @@ hhX hhX fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP pEH xok ljG @@ -148975,10 +148975,10 @@ fnh fnh fnh fnh -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -149160,20 +149160,20 @@ jVV jVV jVV fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP pEH cbn ljG @@ -149232,10 +149232,10 @@ nFS fnh dxD aRn -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -149415,22 +149415,22 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP pEH nuu ilO @@ -149458,12 +149458,12 @@ fLe xRj xXY kYT -qoN -qoN -qoN +apr +apr +apr aCv wWJ -qoN +apr aCv ygt dXH @@ -149490,10 +149490,10 @@ fnh ibx ibx rFK -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe fYe fYe @@ -149686,9 +149686,9 @@ dOG dOG dOG dOG -vxX -vxX -bBo +lyP +lyP +wPb efm ljG qXY @@ -149718,9 +149718,9 @@ wOU wOU wOU kYT -qoN +apr wWJ -qoN +apr bGk bGk tuL @@ -149747,12 +149747,12 @@ fnh fnh uXS fnh -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe hhX @@ -149943,12 +149943,12 @@ qog gcQ bEn dOG -vxX -vxX -bBo +lyP +lyP +wPb iee bPu -bBo +wPb iaN fON jds @@ -149975,9 +149975,9 @@ dCv fxF fxF kYT -qoN +apr taj -qoN +apr bGk mqc mfw @@ -150004,14 +150004,14 @@ qrg eQI iMT fnh -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -150200,12 +150200,12 @@ dOG dOG mkN dOG -vxX -vxX -vxX -bBo -bBo -bBo +lyP +lyP +lyP +wPb +wPb +wPb iaN iaN dlY @@ -150234,7 +150234,7 @@ fxF kYT wWJ wWJ -qoN +apr bGk sHo mJD @@ -150262,13 +150262,13 @@ eAq lGe fnh fnh -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe -vxX -vxX +lyP +lyP hhX hhX hhX @@ -150457,12 +150457,12 @@ ouF ouF lbr dOG -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP iaN qIa fBm @@ -150490,8 +150490,8 @@ mYd uUP kYT wWJ -qoN -qoN +apr +apr bGk jfq dhj @@ -150519,9 +150519,9 @@ rcy cIi siK fnh -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe fYe @@ -150714,12 +150714,12 @@ gAQ eBa eWJ dOG -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP iaN iaN poi @@ -150776,9 +150776,9 @@ qpR lGe oJJ fnh -vxX -vxX -vxX +lyP +lyP +lyP fYe hhX hhX @@ -150971,14 +150971,14 @@ jqd jmU mKW dOG -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP poi xeh jir @@ -151033,9 +151033,9 @@ fnh fnh fnh fnh -vxX -vxX -vxX +lyP +lyP +lyP fYe hhX hhX @@ -151228,14 +151228,14 @@ dOG dOG dOG dOG -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP poi rEK poi @@ -151257,9 +151257,9 @@ wOU wAm lzu wOU -vxX -vxX -qoN +lyP +lyP +apr wWJ kYT auB @@ -151290,9 +151290,9 @@ vYQ ezM qMn iMq -vxX -vxX -vxX +lyP +lyP +lyP hhX hhX hhX @@ -151484,15 +151484,15 @@ xey egY rai uZc -vxX -vxX +lyP +lyP fYe fYe fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP poi tdq xTb @@ -151514,9 +151514,9 @@ wOU cNr ugI wOU -vxX -vxX -qoN +lyP +lyP +apr wWJ kYT xtb @@ -151547,9 +151547,9 @@ spA spA gBY iMq -vxX -vxX -vxX +lyP +lyP +lyP fYe hhX hhX @@ -151741,8 +151741,8 @@ cJZ rai rai uZc -vxX -vxX +lyP +lyP wkX fYe fYe @@ -151771,9 +151771,9 @@ wOU ntd pZj wOU -vxX -vxX -qoN +lyP +lyP +apr wWJ kYT auB @@ -151804,9 +151804,9 @@ iom tjn aRZ iMq -vxX -vxX -vxX +lyP +lyP +lyP hhX hhX hhX @@ -151998,7 +151998,7 @@ uZc uZc uZc uZc -vxX +lyP hen hen hen @@ -152009,7 +152009,7 @@ fYe fYe fYe fYe -vxX +lyP sdc oZQ oZQ @@ -152029,8 +152029,8 @@ epK epK epK fnh -qoN -qoN +apr +apr taj kYT jEu @@ -152061,9 +152061,9 @@ dpj cUm tve iMq -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe hhX @@ -152225,10 +152225,10 @@ hhX hhX fYe fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP jOV skb wSc @@ -152252,10 +152252,10 @@ xtp oPN bWJ uZc -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hen hen hen @@ -152266,7 +152266,7 @@ hen fYe fYe fYe -vxX +lyP sdc oZQ oZQ @@ -152286,7 +152286,7 @@ pkt xMY aDW fnh -qoN +apr rNJ rNJ kYT @@ -152318,9 +152318,9 @@ niI mnA jKj iMq -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe fYe @@ -152482,10 +152482,10 @@ hhX hhX fYe fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP jOV skb wSc @@ -152509,8 +152509,8 @@ crb iqE mMp hED -vxX -vxX +lyP +lyP fYe fYe hen @@ -152523,7 +152523,7 @@ hen fYe fYe fYe -vxX +lyP sdc oZQ oZQ @@ -152547,7 +152547,7 @@ bgY bgY bgY dog -qoN +apr fnh wnL oFa @@ -152575,9 +152575,9 @@ iMq beR iMq iMq -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe hhX @@ -152739,10 +152739,10 @@ hhX hhX fYe fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP jOV kDb ctL @@ -152752,10 +152752,10 @@ nvR fDi uEX jOV -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP mIW sUM rhc @@ -152767,7 +152767,7 @@ ylZ buu hED hED -vxX +lyP wkX fYe hen @@ -152780,7 +152780,7 @@ hen fYe fYe fYe -vxX +lyP sdc sdc sdc @@ -152800,11 +152800,11 @@ mlh jpx aLE fnh -qoN +apr rNJ koX dog -qoN +apr fnh igq igq @@ -152832,9 +152832,9 @@ iMq avC oEC iMq -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe fYe @@ -152996,7 +152996,7 @@ hhX hhX fYe fYe -vxX +lyP hHw hHw hHw @@ -153009,10 +153009,10 @@ jOV jOV jOV jOV -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP mIW thT thT @@ -153024,7 +153024,7 @@ ccI cPP tTz hED -vxX +lyP fYe fYe hen @@ -153036,9 +153036,9 @@ hen hen fYe fYe -vxX -vxX -vxX +lyP +lyP +lyP bNL xsj lFN @@ -153061,7 +153061,7 @@ aCv cGs vFq dog -qoN +apr fnh evQ evQ @@ -153089,9 +153089,9 @@ iMq lsq iBP iMq -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe hhX @@ -153262,14 +153262,14 @@ wSc rwW wSc jOV -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP mIW sTS thT @@ -153281,7 +153281,7 @@ bZI ipc tME hED -vxX +lyP fYe hen hen @@ -153293,9 +153293,9 @@ hen hen fYe fYe -vxX -vxX -vxX +lyP +lyP +lyP bNL xWQ cVb @@ -153314,11 +153314,11 @@ gnE xeA otY fnh -qoN +apr rNJ blM dog -qoN +apr fnh evQ evQ @@ -153346,9 +153346,9 @@ iMq frv cxP iMq -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe hhX @@ -153519,14 +153519,14 @@ xbr qFS wSc jOV -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP mIW thT thT @@ -153538,21 +153538,21 @@ tGw ipc eQJ hED -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP hen hen fYe fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP bNL exg bcj @@ -153571,11 +153571,11 @@ qBu fIm otY fnh -qoN -qoN +apr +apr rNJ kpx -qoN +apr fnh gWX bAV @@ -153603,9 +153603,9 @@ aOm aOm aOm aOm -vxX -vxX -vxX +lyP +lyP +lyP fYe hhX hhX @@ -153776,14 +153776,14 @@ hHw dAq jOV jOV -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP mIW thT thT @@ -153795,21 +153795,21 @@ rAq xNy iUV hED -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP bNL xgQ oRE @@ -153828,8 +153828,8 @@ vOu vOu vOu fnh -qoN -qoN +apr +apr rNJ kpx qcU @@ -153860,9 +153860,9 @@ fnU udG xzP oZt -vxX -vxX -vxX +lyP +lyP +lyP fYe hhX hhX @@ -154034,13 +154034,13 @@ aCb aCb hHw hHw -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP mIW mIW mIW @@ -154052,21 +154052,21 @@ hED hED hED hED -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP bNL hxg bcj @@ -154079,13 +154079,13 @@ tFD wjC rPt sdc -vxX -vxX -vxX -vxX -vxX -vxX -qoN +lyP +lyP +lyP +lyP +lyP +lyP +apr rNJ rNJ kpx @@ -154105,7 +154105,7 @@ wYo cLD nzb xnq -muE +fCU xhJ oZt fQG @@ -154117,10 +154117,10 @@ aRN nqD hZN oZt -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -154291,39 +154291,39 @@ uRG uRG uRG hHw -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hED npn okF aum hED -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP bNL pNs dpH @@ -154336,8 +154336,8 @@ sdc sdc sdc sdc -vxX -vxX +lyP +lyP fnh fnh fnh @@ -154346,7 +154346,7 @@ fnh qcU kpx kpx -qoN +apr fnh sxa mpp @@ -154374,10 +154374,10 @@ fnU xzP nrW oZt -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -154548,53 +154548,53 @@ uRG uRG uRG hHw -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hED ocl kkC phJ hED -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP bNL bNL bNL bNL bNL bNL -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fnh bmu tMP @@ -154603,7 +154603,7 @@ pSV kpx bzu qcU -qoN +apr fnh igq igq @@ -154631,9 +154631,9 @@ gcy aRN aRN oZt -vxX +lyP fYe -vxX +lyP mUQ jOM hhX @@ -154805,66 +154805,66 @@ hHw hHw hHw hHw -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hED hED hED hED hED -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW gYW gYW gYW -vxX -vxX -vxX +lyP +lyP +lyP fnh bmu bMl uJA fnh -qoN +apr rNJ doZ -qoN -vxX -vxX -vxX -vxX +apr +lyP +lyP +lyP +lyP igq igq igq @@ -154884,11 +154884,11 @@ teV oZt rix ixR -qro -hOh +vXz +pdt vau oZt -vxX +lyP kqj xcq gVN @@ -155061,41 +155061,41 @@ hhX hhX hhX okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW gYW gYW @@ -155106,25 +155106,25 @@ gYW jbP gLD gYW -vxX -vxX -vxX +lyP +lyP +lyP fnh fnh fnh fnh fnh -qoN +apr aCv tBL aCv -lDQ -lDQ -lDQ -lDQ -vxX -vxX -vxX +dQq +dQq +dQq +dQq +lyP +lyP +lyP gvw gvw gvw @@ -155318,41 +155318,41 @@ hhX hhX hhX okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe mEN -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW dTy vsD @@ -155366,25 +155366,25 @@ gYW gYW gYW gYW -lDQ -lDQ -lDQ -lDQ +dQq +dQq +dQq +dQq nev dtt dtt dtt dtt dtt -lDQ -lDQ -lDQ -vxX -vxX -vxX -vxX -vxX -vxX +dQq +dQq +dQq +lyP +lyP +lyP +lyP +lyP +lyP gvw gjt jEf @@ -155392,9 +155392,9 @@ kQV uKv evg gvw -vxX -vxX -vxX +lyP +lyP +lyP oZt jCU tkh @@ -155402,10 +155402,10 @@ cgw fMY uHE oZt -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP jVV hhX hhX @@ -155575,41 +155575,41 @@ fYe hhX hhX okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe unk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW fdQ oMn @@ -155631,17 +155631,17 @@ dtt dtt dtt nev -lDQ +dQq dtt -lDQ -lDQ -lDQ -vxX -vxX -vxX -vxX -vxX -vxX +dQq +dQq +dQq +lyP +lyP +lyP +lyP +lyP +lyP gvw gvw gvw @@ -155649,7 +155649,7 @@ gvw gvw gvw gvw -vxX +lyP unk unk oZt @@ -155659,10 +155659,10 @@ oZt oZt oZt oZt -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -155832,37 +155832,37 @@ pnS hhX hhX okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe iRm fYe -vxX -vxX -vxX +lyP +lyP +lyP gYW gYW gYW @@ -155887,26 +155887,26 @@ dtt dtt dtt dtt -lDQ -lDQ +dQq +dQq dtt dtt nev mGn -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -dGk +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +ibw unk hhX hhX @@ -155914,10 +155914,10 @@ hhX hhX hhX unk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -156089,36 +156089,36 @@ fYe hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe -vxX +lyP unk fYe fYe -vxX +lyP fYe oSk esQ @@ -156137,15 +156137,15 @@ wjI wjI wjI gYW -lDQ -lDQ -lDQ +dQq +dQq +dQq dtt dtt -lDQ +dQq dtt uXD -lDQ +dQq dtt dtt dtt @@ -156157,24 +156157,24 @@ azk azk azk azk -vxX -vxX +lyP +lyP gMk -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP hhX hhX hhX hhX hhX unk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -156346,32 +156346,32 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe -vxX -vxX +lyP +lyP fYe fYe fYe @@ -156396,7 +156396,7 @@ dSl gYW uXD uXD -lDQ +dQq ldo ldo ldo @@ -156412,26 +156412,26 @@ cHs uXD uXD uXD -vxX +lyP azk azk azk azk azk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe hhX hhX hhX hhX unk -tXg -vxX -vxX -vxX +qSf +lyP +lyP +lyP hhX hhX hhX @@ -156603,37 +156603,37 @@ hhX hhX hhX okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe -vxX -vxX +lyP +lyP fYe fYe fYe fYe -vxX +lyP oSk wAv wAv @@ -156669,26 +156669,26 @@ qIf vwL pbn uXD -vxX -vxX +lyP +lyP uet gMk -vxX +lyP azk azk -vxX -vxX -vxX +lyP +lyP +lyP fYe hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -156860,33 +156860,33 @@ hhX fNW hhX okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe -vxX -vxX +lyP +lyP fYe gYW gYW @@ -156928,24 +156928,24 @@ dFc uXD uXD uXD -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP azk -vxX -vxX -vxX +lyP +lyP +lyP fYe hhX hhX hhX hhX unk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -157117,34 +157117,34 @@ hhX hhX hhX okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe -vxX -vxX +lyP +lyP gYW dum hdN @@ -157185,24 +157185,24 @@ sZF pLP kEs uXD -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP azk -vxX -vxX +lyP +lyP unk unk unk -vxX +lyP unk unk unk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -157374,34 +157374,34 @@ hhX hhX hhX okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe -vxX -vxX -vxX +lyP +lyP +lyP gYW kwW tQy @@ -157442,23 +157442,23 @@ sZF pLP pLP uXD -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP azk azk azk azk unk dra -vxX -nuH -vxX -vxX -vxX -bme -vxX +lyP +pzu +lyP +lyP +lyP +hFT +lyP hhX hhX hhX @@ -157631,34 +157631,34 @@ hhX hhX hhX okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe -vxX -vxX +lyP +lyP gYW hbQ saY @@ -157701,17 +157701,17 @@ uXD uXD uKm uKm -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP azk iEl gMk uet uet -vxX +lyP gMk mGM unk @@ -157888,34 +157888,34 @@ hhX hhX okm okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe -vxX -vxX +lyP +lyP gYW gYW gYW @@ -157958,14 +157958,14 @@ gMk dij atB uKm -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP azk azk unk -vxX +lyP gMk gMk gMk @@ -158145,35 +158145,35 @@ hhX hhX okm okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP unk unk gbv any unk unk -vxX -vxX +lyP +lyP gYW kGy mMN @@ -158214,18 +158214,18 @@ uXD uet gMk mZs -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP azk -vxX -vxX -vxX +lyP +lyP +lyP gMk -vxX -vxX +lyP +lyP ent bCg unk @@ -158402,26 +158402,26 @@ hhX hhX okm okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP unk unk fYe @@ -158430,7 +158430,7 @@ fYe fYe unk unk -vxX +lyP gYW kGy mMN @@ -158471,22 +158471,22 @@ rzJ gMk gMk gMk -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP azk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -158659,26 +158659,26 @@ hhX hhX okm okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe dsG fYe fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP unk fYe fYe @@ -158728,22 +158728,22 @@ uXD uXD uXD gMk -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP azk -vxX -vxX -vxX +lyP +lyP +lyP rnk rnk rnk rnk rnk rnk -vxX +lyP hhX hhX hhX @@ -158916,13 +158916,13 @@ hhX hhX okm okm -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe hen @@ -158934,8 +158934,8 @@ fYe fYe dsG dsG -vxX -vxX +lyP +lyP unk fYe ivx @@ -158985,15 +158985,15 @@ pLP kEs uXD gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk azk -vxX -vxX -vxX +lyP +lyP +lyP rnk vGs dwI @@ -159173,13 +159173,13 @@ hhX hhX hhX fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe hen @@ -159243,14 +159243,14 @@ pLP uXD gMk gMk -vxX -vxX -vxX +lyP +lyP +lyP azk azk gMk uet -vxX +lyP rnk iQt noh @@ -159430,13 +159430,13 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe hen @@ -159498,13 +159498,13 @@ wLu uXD uXD uXD -vxX +lyP gMk uet uet -vxX +lyP azk -vxX +lyP gMk gMk gMk @@ -159687,13 +159687,13 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe hen @@ -159715,8 +159715,8 @@ fYe fYe unk unk -vxX -vxX +lyP +lyP jCD jCD jCD @@ -159754,17 +159754,17 @@ lvw xGo oEp ibx -vxX -vxX +lyP +lyP azk azk azk azk azk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP rnk bzj eMq @@ -159944,13 +159944,13 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe @@ -159964,19 +159964,19 @@ hen hen hen fYe -vxX +lyP unk unk unk unk unk unk -vxX -vxX -vxX -vxX -vxX -tAa +lyP +lyP +lyP +lyP +lyP +jsy gYW gYW gYW @@ -160014,13 +160014,13 @@ ibx uet azk azk -vxX -vxX +lyP +lyP pfg -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX rnk rnk @@ -160201,13 +160201,13 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe @@ -160221,21 +160221,21 @@ hen hen hen fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hwW dTe -tAa +jsy gYW gYW gYW @@ -160270,14 +160270,14 @@ ibx ibx ibx azk -vxX -vxX -vxX +lyP +lyP +lyP iDq -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -160458,15 +160458,15 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe hen hen @@ -160478,23 +160478,23 @@ hen hen hen hen -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP oSk qGN dTe -tAa -tAa -tAa +jsy +jsy +jsy gYW gYW wjI @@ -160715,15 +160715,15 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe hen @@ -160735,24 +160735,24 @@ hen hen hen hen -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fAV aIB dTe eyf eyf -tAa -tAa +jsy +jsy gYW wjI wjI @@ -160779,9 +160779,9 @@ qaE klJ lSD jGB -vxX +lyP pfg -vxX +lyP ibx ftX piS @@ -160972,15 +160972,15 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe hen @@ -160991,15 +160991,15 @@ hen hen hen hen -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW gYW gYW @@ -161009,7 +161009,7 @@ pjn aWJ aWJ hwW -tAa +jsy gYW tXp gYW @@ -161038,7 +161038,7 @@ jGB jGB cOD uet -vxX +lyP ibx lgp hzF @@ -161229,15 +161229,15 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe hen @@ -161248,15 +161248,15 @@ hen hen hen hen -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW gnx dTe @@ -161487,14 +161487,14 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe hen @@ -161505,15 +161505,15 @@ hen hen hen hen -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW rLJ srv @@ -161523,7 +161523,7 @@ pLE tXp aWJ aIB -tAa +jsy gYW tXp gYW @@ -161744,14 +161744,14 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe @@ -161762,15 +161762,15 @@ dsG fYe fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW gYW hCT @@ -162002,33 +162002,33 @@ oID jVV jVV jVV -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP dsG -vxX -vxX -vxX +lyP +lyP +lyP fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW gYW gYW @@ -162274,20 +162274,20 @@ ttt oaF ttt ttt -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP nzw aih fne @@ -162535,16 +162535,16 @@ ttt ttt ttt ttt -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP nzw pqB fne @@ -162792,23 +162792,23 @@ bjn bjn rRY ttt -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP nzw aih qCf ycw ksf hmF -tAa +jsy gYW wAv gYW @@ -163049,23 +163049,23 @@ tMp bjn nen ttt -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fne dTe dTe nMj nfj -tAa +jsy gYW wAv wAv @@ -163306,23 +163306,23 @@ wcH fib fDf ttt -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP lIZ dTe fne dTe -tAa +jsy gYW kIB gYW @@ -163579,7 +163579,7 @@ ycN wbT wub uMY -tAa +jsy gYW gYW gYW @@ -163836,9 +163836,9 @@ ycN unk unk unk -vxX -vxX -vxX +lyP +lyP +lyP gYW uSe cjp @@ -164090,12 +164090,12 @@ cHh kNJ vaC ycN -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP gYW uSe cjp @@ -164347,12 +164347,12 @@ hqg ukY vaC ycN -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP gYW gYW gYW @@ -164604,14 +164604,14 @@ kqS rtN jlI ycN -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW wyK tuR @@ -164651,7 +164651,7 @@ hzF hzF hzF hzF -vxX +lyP jVV jVV jVV @@ -164861,14 +164861,14 @@ brV hQA yhW ycN -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gYW kdc jYp @@ -164891,24 +164891,24 @@ mBw qxU fAT apQ -vxX -vxX +lyP +lyP gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -165118,14 +165118,14 @@ daK wad vaC ycN -vxX -vxX -vxX +lyP +lyP +lyP gMk gMk -vxX -vxX -vxX +lyP +lyP +lyP gYW imU mhD @@ -165148,26 +165148,26 @@ hPP rhW kNO apQ -vxX +lyP gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -165375,14 +165375,14 @@ hqg ukY vaC ycN -vxX +lyP gMk gMk gMk gMk uet -vxX -vxX +lyP +lyP gYW gYW gYW @@ -165405,13 +165405,13 @@ apQ kOE rMQ apQ -vxX -vxX +lyP +lyP gMk gMk -vxX -vxX -vxX +lyP +lyP +lyP lAj lAj lAj @@ -165425,7 +165425,7 @@ lAj lAj lAj lAj -vxX +lyP fYe hhX hhX @@ -165639,9 +165639,9 @@ gMk gMk gMk gMk -vxX -vxX -tAa +lyP +lyP +jsy aWJ dTe dTe @@ -165662,13 +165662,13 @@ apQ kOE uDd apQ -vxX -vxX +lyP +lyP gMk gMk gMk -vxX -vxX +lyP +lyP lAj pBg xJT @@ -165682,7 +165682,7 @@ vmB ctv rPC lAj -vxX +lyP fYe hhX hhX @@ -165889,15 +165889,15 @@ vaC vaC vaC ycN -vxX -vxX +lyP +lyP gMk gMk gMk gMk gMk -vxX -vxX +lyP +lyP oSk nlZ dTe @@ -165919,13 +165919,13 @@ apQ kOE rMQ apQ -vxX -vxX +lyP +lyP gMk gMk gMk -vxX -vxX +lyP +lyP lAj ebz sbo @@ -165939,7 +165939,7 @@ uBn rts gdZ lAj -vxX +lyP fYe hhX hhX @@ -166115,7 +166115,7 @@ hhX hhX hhX hhX -vxX +lyP juw prr juw @@ -166146,16 +166146,16 @@ ycN ycN ycN ycN -vxX -vxX -vxX +lyP +lyP +lyP gMk gMk gMk gMk -vxX -vxX -tAa +lyP +lyP +jsy aWJ hUN dTe @@ -166176,9 +166176,9 @@ apQ kOE rMQ apQ -vxX -vxX -vxX +lyP +lyP +lyP gMk gMk lAj @@ -166196,7 +166196,7 @@ ajS ajS gdZ lAj -vxX +lyP fYe hhX hhX @@ -166372,51 +166372,51 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP dsG -vxX -vxX +lyP +lyP dsG dsG -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk -vxX -vxX -vxX -vxX -tAa +lyP +lyP +lyP +lyP +jsy aWJ fAJ qaS -tAa +jsy apQ hCb rwX @@ -166433,9 +166433,9 @@ oNo vRt pXB apQ -vxX -vxX -vxX +lyP +lyP +lyP gMk rcP lAj @@ -166453,7 +166453,7 @@ ajS ajS gdZ lAj -vxX +lyP fYe hhX hhX @@ -166637,43 +166637,43 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP uet xUx -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP oSk lhO oSk oSk -tAa +jsy apQ dzQ vjT @@ -166690,8 +166690,8 @@ anZ jIf eaS apQ -vxX -vxX +lyP +lyP uet gMk obD @@ -166710,8 +166710,8 @@ ajS ajS bag lAj -vxX -vxX +lyP +lyP hhX hhX hhX @@ -166896,41 +166896,41 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP xUx uet -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk gMk gMk gMk -vxX -vxX +lyP +lyP apQ qEn tRl @@ -166947,8 +166947,8 @@ rwU sTl apQ apQ -vxX -vxX +lyP +lyP gMk alx obD @@ -166967,8 +166967,8 @@ ajS ajS gdZ lAj -vxX -vxX +lyP +lyP hhX hhX hhX @@ -167153,41 +167153,41 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP unk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk -vxX -vxX +lyP +lyP gMk gMk gMk gMk uet -vxX -vxX +lyP +lyP apQ apQ apQ @@ -167204,8 +167204,8 @@ apQ apQ apQ apQ -vxX -vxX +lyP +lyP gMk gMk sDP @@ -167224,7 +167224,7 @@ ajS ajS gdZ lAj -vxX +lyP fYe hhX hhX @@ -167412,58 +167412,58 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP gMk his gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk -vxX +lyP gMk gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk vDa rBU @@ -167481,7 +167481,7 @@ ajS ajS gdZ lAj -vxX +lyP fYe hhX hhX @@ -167669,57 +167669,57 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP voq jmp gMk xkI cGl -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP vDa vDa vDa @@ -167738,7 +167738,7 @@ ajS ajS gdZ lAj -vxX +lyP hhX hhX hhX @@ -167926,56 +167926,56 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP syX cGl gMk syX gMk cGl -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk gMk -vxX +lyP gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk vDa gMk @@ -167995,7 +167995,7 @@ ajS ajS gdZ lAj -vxX +lyP hhX hhX hhX @@ -168183,11 +168183,11 @@ hhX umg asZ umg -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP ura syX qIA @@ -168195,22 +168195,22 @@ cGl gMk syX qIA -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk -vxX -vxX +lyP +lyP gMk gMk gMk @@ -168218,25 +168218,25 @@ gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP mUQ gMk gMk -vxX +lyP gMk vDa gMk -vxX +lyP lAj lAj lAj @@ -168252,7 +168252,7 @@ ajS ajS lxR lAj -vxX +lyP hhX hhX hhX @@ -168440,11 +168440,11 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP aHe gMk xkI @@ -168452,39 +168452,39 @@ syX jmp gMk cGl -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk iEl gMk @@ -168492,10 +168492,10 @@ gMk vDa vDa vDa -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP lAj fiI rts @@ -168509,10 +168509,10 @@ mRd sbo gdZ lAj -vxX +lyP fYe fYe -vxX +lyP hhX hhX hhX @@ -168697,50 +168697,50 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP syX cGl gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP uet gMk iEl @@ -168748,11 +168748,11 @@ gMk gMk vDa gMk -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP lAj hXu xQe @@ -168769,7 +168769,7 @@ lAj fYe fYe fYe -vxX +lyP hhX hhX hhX @@ -168954,62 +168954,62 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP pfg pfg pfg -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk -vxX +lyP gMk uet -vxX -vxX +lyP +lyP gMk gMk -vxX +lyP gMk gMk mUQ -vxX -vxX +lyP +lyP vDa uet -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP lAj lAj lAj @@ -169026,7 +169026,7 @@ lAj fYe fYe fYe -vxX +lyP hhX hhX hhX @@ -169211,40 +169211,40 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk gMk @@ -169257,33 +169257,33 @@ gMk gMk gMk gMk -vxX -vxX -vxX +lyP +lyP +lyP vDa -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe fYe fYe -vxX +lyP hhX hhX hhX @@ -169468,38 +169468,38 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP uet gMk gMk gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk gMk gMk @@ -169514,32 +169514,32 @@ gMk gMk gMk gMk -vxX -vxX -vxX +lyP +lyP +lyP vDa vDa -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe -vxX +lyP hhX hhX hhX @@ -169723,11 +169723,11 @@ mxt hhX hhX hhX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP gvF gvF gvF @@ -169737,25 +169737,25 @@ gvF gvF gvF gvF -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP xUx uet -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP gMk nyq gMk uQl gMk gMk -vxX -vxX +lyP +lyP uet gMk gMk @@ -169763,37 +169763,37 @@ gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP gMk gMk gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP vDa -vxX -vxX +lyP +lyP mUQ -vxX +lyP gMk gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -169980,9 +169980,9 @@ mxt hhX hhX hhX -vxX -vxX -vxX +lyP +lyP +lyP gvF gvF gvF @@ -169994,42 +169994,42 @@ tqD mMO fhP gvF -vxX +lyP bKL gMk gMk rZg gMk gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk gMk gqm gMk gMk gMk -vxX -vxX +lyP +lyP gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk -vxX -vxX +lyP +lyP woL woL cMJ @@ -170038,19 +170038,19 @@ stz stz gMk gMk -vxX +lyP gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -170259,55 +170259,55 @@ gMk gMk gMk fVf -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP rBv gMk tbp gMk gMk -vxX +lyP gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP uet -vxX -vxX +lyP +lyP gMk -vxX -vxX +lyP +lyP woL eAk cMJ stz jPq woL -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP uet gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -170508,7 +170508,7 @@ gOc gOc gOc gvF -vxX +lyP xUx gMk gMk @@ -170516,27 +170516,27 @@ gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP gMk gMk -vxX +lyP uet -vxX +lyP mNZ gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP ent gMk gMk @@ -170555,16 +170555,16 @@ ltS ltS ltS ltS -vxX +lyP gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -170765,8 +170765,8 @@ gOc gOc gOc gvF -vxX -vxX +lyP +lyP uet gMk tui @@ -170774,15 +170774,15 @@ gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP mNZ mNZ gMk @@ -170790,17 +170790,17 @@ gMk gMk gMk mNZ -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP gMk gMk gMk gMk gMk -vxX +lyP woL sVT cMJ @@ -170813,15 +170813,15 @@ lQL aoy ltS mpc -vxX +lyP gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -171005,7 +171005,7 @@ mwe dUl bGg sJT -vxX +lyP hhX hhX hhX @@ -171022,8 +171022,8 @@ gOc gOc gOc gvF -vxX -vxX +lyP +lyP hyM gMk cgu @@ -171032,14 +171032,14 @@ gMk gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP mNZ mNZ mNZ @@ -171047,8 +171047,8 @@ gMk gMk gMk gMk -vxX -vxX +lyP +lyP kxB kxB kxB @@ -171059,7 +171059,7 @@ eOx kxB kxB bkk -rPy +jfO cMJ msi ppD @@ -171072,13 +171072,13 @@ lls mpc gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -171262,7 +171262,7 @@ rBZ lPi meH sJT -vxX +lyP hhX hhX hhX @@ -171279,24 +171279,24 @@ gOc gOc gOc gvF -vxX -vxX -vxX +lyP +lyP +lyP gMk cgu yjm -vxX -vxX +lyP +lyP gMk gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP mNZ mNZ mNZ @@ -171304,8 +171304,8 @@ mNZ gMk gMk gMk -vxX -vxX +lyP +lyP kxB hhX hhX @@ -171328,17 +171328,17 @@ pVB pHr cXo tOw -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -171502,7 +171502,7 @@ hhX hhX cxg cxg -vxX +lyP imZ mQE fTj @@ -171519,13 +171519,13 @@ tww jlL sJT ogb -vxX -vxX +lyP +lyP hhX fYe mNZ mNZ -vxX +lyP vfJ fhN obA @@ -171538,22 +171538,22 @@ cMZ cMZ cMZ cMZ -vxX +lyP uet cgu -vxX -vxX +lyP +lyP uet gMk qIA gMk -vxX -vxX -vxX +lyP +lyP +lyP uKm -vxX -vxX -vxX +lyP +lyP +lyP mNZ mNZ gMk @@ -171561,8 +171561,8 @@ mNZ mNZ gMk gMk -vxX -vxX +lyP +lyP kxB hhX xAy @@ -171586,16 +171586,16 @@ mry mpc gMk yeS -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -171759,8 +171759,8 @@ hhX hhX cxg pvT -vxX -vxX +lyP +lyP mQE vNg kWb @@ -171775,9 +171775,9 @@ kWb sae sJT sJT -vxX -vxX -vxX +lyP +lyP +lyP hhX fYe mNZ @@ -171799,18 +171799,18 @@ ipx dVt cdl ipx -vxX -vxX +lyP +lyP gMk gMk gMk gMk -vxX -vxX +lyP +lyP kTV gMk -vxX -vxX +lyP +lyP fJz gMk gMk @@ -171843,16 +171843,16 @@ cuW cuW cuW cuW -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -172015,9 +172015,9 @@ hhX hhX hhX hhX -vxX -vxX -vxX +lyP +lyP +lyP mQE lJv kWb @@ -172032,7 +172032,7 @@ kWb wYj pdo sJT -vxX +lyP uif hhX hhX @@ -172057,22 +172057,22 @@ dOg kqf ipx ipx -vxX +lyP gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP xUx gMk gMk -vxX -vxX -vxX +lyP +lyP +lyP gMk gMk -vxX -vxX +lyP +lyP gMk gMk dtQ @@ -172102,14 +172102,14 @@ gun cuW cuW cuW -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -172272,9 +172272,9 @@ hhX hhX hhX hhX -vxX -vxX -vxX +lyP +lyP +lyP kWb kWb kWb @@ -172289,8 +172289,8 @@ kWb kWb kWb kWb -vxX -vxX +lyP +lyP hhX hhX fYe @@ -172318,19 +172318,19 @@ xCX gMk xUx uet -vxX -vxX +lyP +lyP gMk ceN gMk gMk gMk -vxX +lyP xKx -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk dtQ gMk @@ -172359,14 +172359,14 @@ yhy dlX iUq cuW -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -172529,9 +172529,9 @@ hhX hhX hhX hhX -vxX -vxX -vxX +lyP +lyP +lyP kWb kWb kWb @@ -172545,9 +172545,9 @@ lRk kWb kWb kWb -vxX -vxX -vxX +lyP +lyP +lyP hhX hhX fYe @@ -172575,22 +172575,22 @@ xCX gMk gMk gMk -vxX -vxX -vxX +lyP +lyP +lyP lmn gMk -vxX +lyP gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk -vxX -vxX +lyP +lyP dtQ -vxX +lyP kxB hhX xAy @@ -172616,17 +172616,17 @@ pMw nME iJb cuW -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -172786,8 +172786,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP kWb kWb kWb @@ -172803,8 +172803,8 @@ qWB kWb kWb kWb -vxX -vxX +lyP +lyP hhX hhX hhX @@ -172828,26 +172828,26 @@ dRh xBU xje ipx -vxX +lyP gMk gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP xIP xIP uKm elE -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk vkv -vxX +lyP dtQ -vxX +lyP kxB hhX cLf @@ -172873,18 +172873,18 @@ jGP cYe qbZ cuW -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -173043,8 +173043,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP kWb kWb kWb @@ -173060,8 +173060,8 @@ vAB kWb kWb kWb -vxX -vxX +lyP +lyP hhX hhX hhX @@ -173089,15 +173089,15 @@ uKm mWS gMk ent -vxX +lyP gMk gMk gMk uet cPE gMk -vxX -vxX +lyP +lyP gMk gMk gMk @@ -173136,10 +173136,10 @@ aWD uYG uYG uYG -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP uYG uYG uYG @@ -173301,7 +173301,7 @@ hhX hhX hhX unk -vxX +lyP kWb kWb kWb @@ -173317,8 +173317,8 @@ vAB kWb kWb kWb -vxX -vxX +lyP +lyP hhX hhX hhX @@ -173342,20 +173342,20 @@ fFg fFg dhR ipx -vxX +lyP uet gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk xUx -vxX +lyP dsF gMk -vxX -vxX +lyP +lyP gMk gMk gMk @@ -173574,8 +173574,8 @@ qDl aKU kWb kWb -vxX -vxX +lyP +lyP hhX hhX fYe @@ -173599,22 +173599,22 @@ dVt dVt ipx ipx -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP gMk gMk xUx -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk gMk dtQ @@ -173661,8 +173661,8 @@ tNE cEG cEG uYG -vxX -vxX +lyP +lyP jVV jVV jGa @@ -173815,7 +173815,7 @@ hhX hhX hhX unk -vxX +lyP kWb kWb kWb @@ -173831,8 +173831,8 @@ vAB kWb kWb kWb -vxX -vxX +lyP +lyP hhX hhX fYe @@ -173855,22 +173855,22 @@ vRA vRA vRA ixU -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP uet -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP xKo xKo xKo @@ -173918,8 +173918,8 @@ tNE tNE dYZ uYG -vxX -vxX +lyP +lyP jVV hhX hhX @@ -174071,8 +174071,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP kWb kWb kWb @@ -174088,7 +174088,7 @@ vAB kWb kWb kWb -vxX +lyP hhX hhX hhX @@ -174112,9 +174112,9 @@ vRA vRA vRA ixU -vxX -vxX -vxX +lyP +lyP +lyP kxB uKm uKm @@ -174122,12 +174122,12 @@ uKm uKm uKm uKm -vxX +lyP gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP xKo rhn lWF @@ -174328,8 +174328,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP kWb kWb kWb @@ -174377,14 +174377,14 @@ iHO iHO jZY ouE -vxX +lyP lzE -vxX +lyP gMk gMk uet -vxX -vxX +lyP +lyP xKo ljN eqC @@ -174586,7 +174586,7 @@ hhX hhX hhX hhX -vxX +lyP kWb kWb kWb @@ -174636,12 +174636,12 @@ uKm uKm uKm uKm -vxX -vxX +lyP +lyP gMk gMk -vxX -vxX +lyP +lyP xKo fEQ eeB @@ -174844,7 +174844,7 @@ hhX hhX hhX hhX -vxX +lyP kWb kWb kWb @@ -174893,12 +174893,12 @@ twx twx twx twx -vxX -vxX +lyP +lyP gMk gMk -vxX -vxX +lyP +lyP xKo xKo xKo @@ -175101,8 +175101,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP kWb kWb kWb @@ -175150,12 +175150,12 @@ twx twx twx twx -vxX -vxX +lyP +lyP gMk gMk -vxX -vxX +lyP +lyP xKo tmR xKo @@ -175359,16 +175359,16 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP kWb kWb kWb kWb kWb -vxX +lyP hhX hhX hhX @@ -175407,12 +175407,12 @@ twx twx twx twx -vxX +lyP uKm aXH gMk xUx -vxX +lyP xKo nqu ikD @@ -175458,11 +175458,11 @@ nUy uYG uYG uYG -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP jVV pnS hhX @@ -175617,8 +175617,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP hhX hhX jVV @@ -175665,11 +175665,11 @@ twx twx twx uKm -vxX +lyP gMk -vxX -vxX -vxX +lyP +lyP +lyP xKo xKo xKo @@ -175716,10 +175716,10 @@ uYG hhX hhX hhX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP jVV hhX vUj @@ -175924,9 +175924,9 @@ twx uKm xwA gMk -vxX -vxX -vxX +lyP +lyP +lyP xKo dor lVx @@ -175974,8 +175974,8 @@ hhX hhX hhX hhX -vxX -vxX +lyP +lyP hhX jVV hhX @@ -176181,9 +176181,9 @@ mxq uKm gMk uet -vxX -vxX -vxX +lyP +lyP +lyP xKo lVx bkk @@ -176224,14 +176224,14 @@ vzC aWD wlV aWD -vxX -vxX +lyP +lyP mUQ rGg rGg mUQ -vxX -vxX +lyP +lyP hhX hhX jVV @@ -176431,15 +176431,15 @@ ixU dtQ dtQ gMk -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP xUx -vxX -vxX -vxX +lyP +lyP +lyP ent cIN lVx @@ -176481,13 +176481,13 @@ xwm sCp sCp aWD -vxX -vxX -vxX +lyP +lyP +lyP tOG ufA -vxX -vxX +lyP +lyP uif hhX hhX @@ -176689,14 +176689,14 @@ dtQ gMk gMk gMk -vxX +lyP gMk -vxX +lyP uKm aXH lgL rQP -vxX +lyP gMk vWx dor @@ -176738,13 +176738,13 @@ xwm mog mog aWD -vxX -vxX -vxX +lyP +lyP +lyP uif fYe -vxX -vxX +lyP +lyP hhX hhX hhX @@ -176995,12 +176995,12 @@ muB mog mog aWD -vxX -vxX -vxX +lyP +lyP +lyP fYe fYe -vxX +lyP mUQ jVV hhX @@ -177252,8 +177252,8 @@ mog mog cYw aWD -vxX -vxX +lyP +lyP fYe fYe fYe @@ -177464,9 +177464,9 @@ sqL rlw khP rlw -vxX -vxX -vxX +lyP +lyP +lyP xKo wlR lNe @@ -177509,12 +177509,12 @@ mog mog mog aWD -vxX -vxX -vxX +lyP +lyP +lyP fYe -vxX -vxX +lyP +lyP mUQ eCF hhX @@ -177716,14 +177716,14 @@ ixU gMk gMk gMk -vxX -vxX +lyP +lyP sqL uoY sqL -vxX -vxX -vxX +lyP +lyP +lyP xKo jBG oEN @@ -177766,14 +177766,14 @@ mog mog mog aWD -vxX -vxX -vxX +lyP +lyP +lyP fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -177971,16 +177971,16 @@ xbC cIE ixU gMk -vxX +lyP gMk -vxX -vxX +lyP +lyP sqL uoY sqL gMk -vxX -vPt +lyP +nGi woL iNv xKo @@ -178023,14 +178023,14 @@ bkW bkW bkW aWD -vxX -vxX +lyP +lyP fYe fYe fYe -vxX -vxX -vxX +lyP +lyP +lyP hhX hhX hhX @@ -178227,17 +178227,17 @@ lsx idr lsx hEi -vxX -vxX +lyP +lyP iOE -vxX -vxX +lyP +lyP sqL uoY gbP fWJ -vPt -vPt +nGi +nGi wPU uab qhG @@ -178280,13 +178280,13 @@ tel tel lhg uFC -vxX -vxX +lyP +lyP fYe -vxX +lyP fYe -vxX -vxX +lyP +lyP fYe hhX hhX @@ -178485,10 +178485,10 @@ cHn sAN hEi hEi -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP sqL uoY sqL @@ -178537,13 +178537,13 @@ tGb tGb xlG uFC -vxX -vxX +lyP +lyP fYe -vxX +lyP fYe -vxX -vxX +lyP +lyP fYe hhX hhX @@ -178744,8 +178744,8 @@ uaY iFN iFN iFN -vxX -vxX +lyP +lyP sqL uoY sqL @@ -178775,7 +178775,7 @@ pMG lXi ldl iZa -vxX +lyP uFC xlG tGb @@ -178794,13 +178794,13 @@ tGb tGb xlG uFC -vxX -vxX +lyP +lyP fYe -vxX +lyP fYe -vxX -vxX +lyP +lyP fYe hhX hhX @@ -179002,11 +179002,11 @@ iFN ekR iFN iFN -vxX +lyP rlw eGM rlw -vxX +lyP dsP nQs ohk @@ -179032,7 +179032,7 @@ lRU wZb vxp iZa -vxX +lyP uFC xlG tGb @@ -179051,13 +179051,13 @@ tGb tGb xlG uFC -vxX -vxX +lyP +lyP fYe tOG fYe -vxX -vxX +lyP +lyP uif hhX hhX @@ -179259,12 +179259,12 @@ qJN uHQ szk iFN -vxX +lyP sqL uoY sqL -vxX -vPt +lyP +nGi alu ohk jMN @@ -179289,7 +179289,7 @@ qWT grz grz grz -vxX +lyP uFC xlG tGb @@ -179308,13 +179308,13 @@ tGb tGb xlG uFC -vxX +lyP uKm uKm iDu uKm uKm -vxX +lyP fYe hhX hhX @@ -179516,13 +179516,13 @@ kHf xkL uSX iFN -vxX +lyP sqL uoY sqL -vxX -vPt -vPt +lyP +nGi +nGi hFa tUc qhG @@ -179545,8 +179545,8 @@ uLS uyZ esc grz -vxX -vxX +lyP +lyP uFC xlG tGb @@ -179565,13 +179565,13 @@ tGb tGb xlG uFC -vxX -vxX +lyP +lyP iJm iJm iJm uKm -vxX +lyP fYe hhX hhX @@ -179773,16 +179773,16 @@ aXl fyJ aXl iFN -vxX +lyP sqL uoY sqL -vxX -vxX -vxX +lyP +lyP +lyP dsP -vPt -vPt +nGi +nGi stP tNK vkp @@ -179802,8 +179802,8 @@ urI kdE xjL grz -vxX -vxX +lyP +lyP uFC xlG tGb @@ -179822,7 +179822,7 @@ tGb tGb xlG uFC -vxX +lyP fYe fYe iJm @@ -180030,16 +180030,16 @@ mZn oND iem iFN -vxX +lyP sqL uoY sqL gMk -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP qhG pql qhG @@ -180059,8 +180059,8 @@ rAP odk jDl grz -vxX -vxX +lyP +lyP uFC pFg gsg @@ -180079,13 +180079,13 @@ tGb tGb xlG uFC -vxX +lyP fYe fYe fYe iJm uKm -vxX +lyP fYe hhX hhX @@ -180287,15 +180287,15 @@ rEv vjQ evN iFN -vxX +lyP sqL uoY sqL gMk -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe vnb jCm @@ -180317,7 +180317,7 @@ odk kOU grz fYe -vxX +lyP uFC bMb xlG @@ -180336,13 +180336,13 @@ tGb tGb xgN uFC -vxX -vxX +lyP +lyP fYe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP fYe hhX hhX @@ -180544,7 +180544,7 @@ iFN iFN iFN iFN -vxX +lyP eIO ehY rlw @@ -180593,13 +180593,13 @@ tGb tGb xlG uFC -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hen -vxX -vxX +lyP +lyP hhX hhX hhX @@ -180797,11 +180797,11 @@ wkG wkG rzI moe -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP rlw wvS uCp @@ -180850,13 +180850,13 @@ tGb tGb xlG uFC -vxX +lyP hen hen hen hen -vxX -vxX +lyP +lyP hhX hhX hhX @@ -181054,10 +181054,10 @@ jYT jYT rIJ moe -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX rlw sqL @@ -181112,8 +181112,8 @@ hen hen hen hen -vxX -vxX +lyP +lyP hhX hhX hhX @@ -181311,9 +181311,9 @@ wkG wkG wkG moe -vxX -vxX -vxX +lyP +lyP +lyP hhX hhX jVV @@ -181370,7 +181370,7 @@ hen hen hen kxB -vxX +lyP fYe hhX hhX @@ -181567,9 +181567,9 @@ jYT wkG ivx ivx -vxX -vxX -vxX +lyP +lyP +lyP hhX hhX hhX @@ -181626,8 +181626,8 @@ hen hen hen hen -vxX -vxX +lyP +lyP fYe hhX hhX @@ -181825,8 +181825,8 @@ moe rGg rGg fqD -vxX -vxX +lyP +lyP hhX hhX hhX @@ -181848,18 +181848,18 @@ tAo vbd vbd fYe -vxX -vxX +lyP +lyP hhX nbk smD pBC hhX -vxX -vxX -vxX +lyP +lyP +lyP fYe -vxX +lyP uFC uFC uFC @@ -181883,8 +181883,8 @@ hen hen hen hen -vxX -vxX +lyP +lyP fYe hhX hhX @@ -182105,42 +182105,42 @@ uLR avQ uLR tAo -vxX -vxX +lyP +lyP hhX hHZ mxt eRO hhX -vxX -vxX -vxX +lyP +lyP +lyP fYe -vxX -vxX +lyP +lyP hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hen hen hen hen hen -vxX +lyP fYe uif hhX @@ -182363,41 +182363,41 @@ fYe uLR fYe fYe -vxX -vxX +lyP +lyP hhX mxt hhX hhX -vxX -vxX -vxX +lyP +lyP +lyP fYe -vxX -vxX +lyP +lyP hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hen hen hen hen hen -vxX +lyP fYe hhX hhX @@ -182612,11 +182612,11 @@ rlw uVI uVI mUQ -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP mUQ uVI uVI @@ -182626,35 +182626,35 @@ hhX mxt hhX hhX -vxX -vxX +lyP +lyP fYe fYe -vxX -vxX +lyP +lyP hhX hhX hhX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hen hen hen hen hen hen -vxX +lyP fYe hhX hhX @@ -182868,13 +182868,13 @@ uoY sqL fYe fYe -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP fYe fYe fYe @@ -182887,31 +182887,31 @@ fYe fYe fYe fYe -vxX +lyP hhX hhX hhX hhX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk gMk -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hen hen hen hen -vxX -vxX +lyP +lyP fYe hhX hhX @@ -183128,9 +183128,9 @@ hhX jVV hhX hhX -vxX +lyP hhX -vxX +lyP hhX hhX hhX @@ -183149,25 +183149,25 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP gMk xKx -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hen hen -vxX -vxX +lyP +lyP uif fYe hhX @@ -183405,21 +183405,21 @@ rjp hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP bZr rjp rjp @@ -183662,21 +183662,21 @@ rjp rjp rjp bZr -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -183920,20 +183920,20 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX hhX @@ -184178,18 +184178,18 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP +lyP +lyP hhX hhX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX @@ -184436,10 +184436,10 @@ hhX hhX hhX hhX -vxX -vxX -vxX -vxX +lyP +lyP +lyP +lyP hhX hhX hhX diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm index 9de963acb23..a319559c548 100644 --- a/code/__DEFINES/icon_smoothing.dm +++ b/code/__DEFINES/icon_smoothing.dm @@ -128,19 +128,22 @@ DEFINE_BITFIELD(smoothing_junction, list( #define SMOOTH_GROUP_CARPET_SIMPLE_NEON_VIOLET_NODOTS S_TURF(50) //![turf/open/floor/carpet/neon/simple/violet/nodots] #define SMOOTH_GROUP_CARPET_SIMPLE_NEON_PINK_NODOTS S_TURF(51) //![turf/open/floor/carpet/neon/simple/pink/nodots] #define SMOOTH_GROUP_BAMBOO_FLOOR S_TURF(52) //![/turf/open/floor/bamboo] +#define SMOOTH_GROUP_FLOOR_WATER_LAVALAND S_TURF(53) //![/turf/open/water/lavaland_atmos/basalt] -#define SMOOTH_GROUP_CLOSED_TURFS S_TURF(53) ///turf/closed -#define SMOOTH_GROUP_MATERIAL_WALLS S_TURF(54) ///turf/closed/wall/material -#define SMOOTH_GROUP_SYNDICATE_WALLS S_TURF(55) ///turf/closed/wall/r_wall/plastitanium/syndicate, /turf/closed/indestructible/syndicate -#define SMOOTH_GROUP_HOTEL_WALLS S_TURF(56) ///turf/closed/indestructible/hotelwall -#define SMOOTH_GROUP_MINERAL_WALLS S_TURF(57) ///turf/closed/mineral, /turf/closed/indestructible -#define SMOOTH_GROUP_BOSS_WALLS S_TURF(58) ///turf/closed/indestructible/riveted/boss -#define SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS S_TURF(59) ///turf/closed/wall/mineral/titanium/survival -#define SMOOTH_GROUP_TURF_OPEN_CLIFF S_TURF(60) ///turf/open/cliff -#define SMOOTH_GROUP_HIEROPHANT S_TURF(61) ///turf/closed/indestructible/riveted/hierophant -#define SMOOTH_GROUP_PLASTINUM_WALLS S_TURF(62) ///turf/closed/indestructible/riveted/plastinum +#define SMOOTH_GROUP_CLOSED_TURFS S_TURF(54) ///turf/closed +#define SMOOTH_GROUP_MATERIAL_WALLS S_TURF(55) ///turf/closed/wall/material +#define SMOOTH_GROUP_SYNDICATE_WALLS S_TURF(56) ///turf/closed/wall/r_wall/plastitanium/syndicate, /turf/closed/indestructible/syndicate +#define SMOOTH_GROUP_HOTEL_WALLS S_TURF(57) ///turf/closed/indestructible/hotelwall +#define SMOOTH_GROUP_MINERAL_WALLS S_TURF(58) ///turf/closed/mineral, /turf/closed/indestructible +#define SMOOTH_GROUP_RED_ROCK_WALLS S_TURF(59) ///turf/closed/mineral/asteroid, /turf/closed/mineral/random/stationside/asteroid +#define SMOOTH_GROUP_SHALE_WALLS S_TURF(60) ///turf/closed/mineral/random/volcanic/shale +#define SMOOTH_GROUP_BOSS_WALLS S_TURF(61) ///turf/closed/indestructible/riveted/boss +#define SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS S_TURF(62) ///turf/closed/wall/mineral/titanium/survival +#define SMOOTH_GROUP_TURF_OPEN_CLIFF S_TURF(63) ///turf/open/cliff +#define SMOOTH_GROUP_HIEROPHANT S_TURF(64) ///turf/closed/indestructible/riveted/hierophant +#define SMOOTH_GROUP_PLASTINUM_WALLS S_TURF(65) ///turf/closed/indestructible/riveted/plastinum -#define MAX_S_TURF 62 //Always match this value with the one above it. +#define MAX_S_TURF 65 //Always match this value with the one above it. #define S_OBJ(num) ("-" + #num + ",") /* /obj included */ diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index a32e2907d83..a52deb2eac6 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -255,6 +255,7 @@ #define ABOVE_MOB_LAYER 4.1 #define WALL_OBJ_LAYER 4.25 #define TRAM_SIGNAL_LAYER 4.26 +#define EDGED_TURF_LOWER_LAYER 4.28 #define EDGED_TURF_LAYER 4.3 #define ON_EDGED_TURF_LAYER 4.35 #define SPACEVINE_LAYER 4.4 diff --git a/code/__DEFINES/mining.dm b/code/__DEFINES/mining.dm index 8e7e7d25591..6c660299563 100644 --- a/code/__DEFINES/mining.dm +++ b/code/__DEFINES/mining.dm @@ -34,39 +34,6 @@ /// Duration for wave defense for a large vent. #define WAVE_DURATION_LARGE 150 SECONDS -/// Proximity to a vent that a wall ore needs to be for 5 ore to be mined. -#define VENT_PROX_VERY_HIGH 3 -/// Proximity to a vent that a wall ore needs to be for 4 ore to be mined. -#define VENT_PROX_HIGH 6 -/// Proximity to a vent that a wall ore needs to be for 3 ore to be mined. -#define VENT_PROX_MEDIUM 15 -/// Proximity to a vent that a wall ore needs to be for 2 ore to be mined. -#define VENT_PROX_LOW 32 -/// Proximity to a vent that a wall ore needs to be for 1 ore to be mined. -#define VENT_PROX_FAR 64 - -/// The chance of ore spawning in a wall that is VENT_PROX_VERY_HIGH tiles to a vent. -#define VENT_CHANCE_VERY_HIGH 75 -/// The chance of ore spawning in a wall that is VENT_PROX_HIGH tiles to a vent. -#define VENT_CHANCE_HIGH 18 -/// The chance of ore spawning in a wall that is VENT_PROX_MEDIUM tiles to a vent. -#define VENT_CHANCE_MEDIUM 9 -/// The chance of ore spawning in a wall that is VENT_PROX_LOW tiles to a vent. -#define VENT_CHANCE_LOW 5 -/// The chance of ore spawning in a wall that is VENT_PROX_FAR tiles to a vent. -#define VENT_CHANCE_FAR 1 - -/// The amount of ore that is mined from a wall that is VENT_PROX_VERY_HIGH tiles to a vent. -#define ORE_WALL_VERY_HIGH 5 -/// The amount of ore that is mined from a wall that is VENT_PROX_HIGH tiles to a vent. -#define ORE_WALL_HIGH 4 -/// The amount of ore that is mined from a wall that is VENT_PROX_MEDIUM tiles to a vent. -#define ORE_WALL_MEDIUM 3 -/// The amount of ore that is mined from a wall that is VENT_PROX_LOW tiles to a vent. -#define ORE_WALL_LOW 2 -/// The amount of ore that is mined from a wall that is VENT_PROX_FAR tiles to a vent. -#define ORE_WALL_FAR 1 - /// Lifetime of a boulder platform in seconds when spawned in lava/plasma. #define PLATFORM_LIFE_DEFAULT 10 SECONDS @@ -78,8 +45,21 @@ /// The number of points a miner gets for discovering a vent, multiplied by BOULDER_SIZE when completing a wave defense minus the discovery bonus. #define MINER_POINT_MULTIPLIER 100 /// The multiplier that gets applied for automatically generated mining points. -#define MINING_POINT_MACHINE_MULTIPLIER 0.8 +#define MINING_POINT_MACHINE_MULTIPLIER 0.5 -//String defines to use with CaveGenerator presets for what ore breakdown to use. +// String defines to use with CaveGenerator presets for what ore breakdown to use. #define OREGEN_PRESET_LAVALAND "lavaland" #define OREGEN_PRESET_TRIPLE_Z "triple_z" + +// Ore vein types +/// Round ore cluster +#define ORE_VEIN_CLUSTER "cluster" +/// Randomly scattered ore +#define ORE_VEIN_SCATTER "scatter" +/// A straight or slightly bent uneven line +#define ORE_VEIN_PLAIN "plain" +/// A branching tree-like vein +#define ORE_VEIN_BRANCH "branch" + +/// Maximum precision for ore spawn probabilities +#define ORE_CHANCE_PRECISION 5 diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index 0f1eebb3347..f7e4a4cc0b9 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -145,7 +145,9 @@ GLOBAL_LIST_EMPTY(deathsquadspawn) GLOBAL_LIST_EMPTY(emergencyresponseteamspawn) GLOBAL_LIST_EMPTY(ruin_landmarks) GLOBAL_LIST_EMPTY(bar_areas) +GLOBAL_LIST_EMPTY(river_waypoint_list) // Assoc list of river waypoint markers by z-level GLOBAL_LIST_EMPTY(mining_center) // For determining vent size ranked lists, epicenters for comparison goes here. +GLOBAL_LIST_EMPTY(map_generators_by_z) // Assoc list of shared generators by z by type /// List of all the maps that have been cached for /proc/load_map GLOBAL_LIST_EMPTY(cached_maps) @@ -170,22 +172,6 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list( /mob/living/simple_animal/hostile/megafauna/dragon = 4, )) -/// List of how many minerals spawned based on proximity to an ore vent. -GLOBAL_LIST_INIT(post_ore_random, list( - "[ORE_WALL_FAR]" = 0, - "[ORE_WALL_LOW]" = 0, - "[ORE_WALL_MEDIUM]" = 0, - "[ORE_WALL_HIGH]" = 0, - "[ORE_WALL_VERY_HIGH]" = 0, -)) -/// List of how many minerals spawned randomly off of mining Z-levels, and at what quantity. -GLOBAL_LIST_INIT(post_ore_manual, list( - "[ORE_WALL_FAR]" = 0, - "[ORE_WALL_LOW]" = 0, - "[ORE_WALL_MEDIUM]" = 0, - "[ORE_WALL_HIGH]" = 0, - "[ORE_WALL_VERY_HIGH]" = 0, -)) /// List of how many ore vents spawned, and of what size. GLOBAL_LIST_INIT(ore_vent_sizes, list( LARGE_VENT_TYPE = 0, diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index e83341269cd..b3bcc301ea6 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -156,8 +156,8 @@ SUBSYSTEM_DEF(mapping) loading_ruins = TRUE setup_ruins() loading_ruins = FALSE - #endif + // Run map generation after ruin generation to prevent issues run_map_terrain_generation() // Generate our rivers, we do this here so the map doesn't load on top of them @@ -279,7 +279,7 @@ SUBSYSTEM_DEF(mapping) // Generate mining ruins var/list/lava_ruins = levels_by_trait(ZTRAIT_LAVA_RUINS) for (var/lava_z in lava_ruins) - spawn_rivers(lava_z, 4, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors/unexplored) + spawn_rivers(lava_z, 3, /turf/open/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors/unexplored) // +1 from the mapped in waypoint var/list/ice_ruins = levels_by_trait(ZTRAIT_ICE_RUINS) for (var/ice_z in ice_ruins) diff --git a/code/controllers/subsystem/ore_generation.dm b/code/controllers/subsystem/ore_generation.dm index 7f51c2bcbbe..348a5ec1880 100644 --- a/code/controllers/subsystem/ore_generation.dm +++ b/code/controllers/subsystem/ore_generation.dm @@ -20,6 +20,12 @@ SUBSYSTEM_DEF(ore_generation) * If we call cave_generation more than once, we copy a list from the lists in lists/ores_spawned.dm */ var/list/ore_vent_minerals = list() + /// List of ore turfs that want to be randomized + var/list/turf/closed/mineral/random/ore_turfs = list() + /// Amount of ores by type generated + var/list/ores_generated = list() + /// Probabilities by type and depth to generate ores + var/list/list/list/ore_spread_probabilities = list() /datum/controller/subsystem/ore_generation/Initialize() /// First, lets sort each ore_vent here based on their distance to the landmark, then we'll assign sizes. @@ -64,30 +70,6 @@ SUBSYSTEM_DEF(ore_generation) continue //Ya'll already got your minerals. vent.generate_mineral_breakdown(map_loading = TRUE) - - /// Handles roundstart logging - logger.Log( - LOG_CATEGORY_CAVE_GENERATION, - "Ore Generation spawned the following ores based on vent proximity", - list( - "[ORE_WALL_FAR]" = GLOB.post_ore_random["[ORE_WALL_FAR]"], - "[ORE_WALL_LOW]" = GLOB.post_ore_random["[ORE_WALL_LOW]"], - "[ORE_WALL_MEDIUM]" = GLOB.post_ore_random["[ORE_WALL_MEDIUM]"], - "[ORE_WALL_HIGH]" = GLOB.post_ore_random["[ORE_WALL_HIGH]"], - "[ORE_WALL_VERY_HIGH]" = GLOB.post_ore_random["[ORE_WALL_VERY_HIGH]"], - ), - ) - logger.Log( - LOG_CATEGORY_CAVE_GENERATION, - "Ore Generation spawned the following ores randomly", - list( - "[ORE_WALL_FAR]" = GLOB.post_ore_manual["[ORE_WALL_FAR]"], - "[ORE_WALL_LOW]" = GLOB.post_ore_manual["[ORE_WALL_LOW]"], - "[ORE_WALL_MEDIUM]" = GLOB.post_ore_manual["[ORE_WALL_MEDIUM]"], - "[ORE_WALL_HIGH]" = GLOB.post_ore_manual["[ORE_WALL_HIGH]"], - "[ORE_WALL_VERY_HIGH]" = GLOB.post_ore_manual["[ORE_WALL_VERY_HIGH]"], - ), - ) logger.Log( LOG_CATEGORY_CAVE_GENERATION, "Ore Generation spawned the following vent sizes", @@ -97,8 +79,68 @@ SUBSYSTEM_DEF(ore_generation) "small" = LAZYACCESS(GLOB.ore_vent_sizes, SMALL_VENT_TYPE), ), ) + + calculate_rock_edges() + for (var/turf/closed/mineral/random/rock in ore_turfs) // Typecheck in case they got destroyed + rock.randomize_ore() + + calculate_ore_spread() + return SS_INIT_SUCCESS +/// Generates debug data about ore spread among rock turfs +/datum/controller/subsystem/ore_generation/proc/calculate_ore_spread() + var/list/result = list() + var/list/totals = list("chance" = 0, "raw_sum" = 0) + var/summary_count = 0 + for (var/turf/closed/mineral/random/rock_type as anything in ore_spread_probabilities) + var/list/rock_data = ore_spread_probabilities[rock_type] + var/list/result_rock = list() + var/total_count = 0 + var/total_chance = 0 + for (var/spread_range in rock_data) + var/list/dist_info = rock_data[spread_range] + for (var/ore_type in dist_info - list("chance", "count")) + if (!result_rock[ore_type]) + result_rock[ore_type] = 0 + result_rock[ore_type] += dist_info[ore_type] * dist_info["chance"] / initial(rock_type.mineral_chance) * dist_info["count"] + total_count += dist_info["count"] + total_chance += dist_info["chance"] * dist_info["count"] + + result_rock["chance"] = total_chance / total_count + result_rock["count"] = total_count + totals["chance"] += total_chance + summary_count += total_count + result[rock_type] = result_rock + + for (var/turf/closed/mineral/random/rock_type as anything in result) + var/list/rock_data = result[rock_type] + var/raw_sum = 0 + for (var/ore_type in rock_data) + if (!ispath(ore_type)) + continue + rock_data[ore_type] /= summary_count + raw_sum += rock_data[ore_type] + if (!totals[ore_type]) + totals[ore_type] = 0 + if (ispath(ore_type, /turf/closed/mineral/gibtonite/volcanic)) + totals[/turf/closed/mineral/gibtonite/volcanic] += rock_data[ore_type] + else + totals[ore_type] += rock_data[ore_type] + rock_data["raw_sum"] = raw_sum + totals["raw_sum"] += raw_sum + + for (var/spawn_type in totals) + if (!ispath(spawn_type)) + continue + totals[spawn_type] /= totals["raw_sum"] / 104 + + totals["count"] = summary_count + if (summary_count > 0) + totals["chance"] /= summary_count + result["total"] = totals + ore_spread_probabilities = result + /datum/controller/subsystem/ore_generation/fire(resumed) available_boulders.Cut() // reset upon new fire. for(var/obj/structure/ore_vent/current_vent as anything in processed_vents) diff --git a/code/datums/components/style/style.dm b/code/datums/components/style/style.dm index 37492ef58d7..d4a107e612d 100644 --- a/code/datums/components/style/style.dm +++ b/code/datums/components/style/style.dm @@ -372,10 +372,10 @@ add_action(ACTION_GIBTONITE_BOOM, 50) return - if(rock.mineralType) + if(rock.mineral_type) if(exp_multiplier) add_action(ACTION_ORE_MINED, 40) - rock.mineralAmt = ROUND_UP(rock.mineralAmt * (1 + ((rank * 0.1) - 0.3))) // You start out getting 20% less ore, but it goes up to 20% more at S-tier + rock.mineral_amt = ROUND_UP(rock.mineral_amt * (1 + ((rank * 0.1) - 0.3))) // You start out getting 20% less ore, but it goes up to 20% more at S-tier /datum/component/style/proc/on_resonator_burst(datum/source, mob/creator, mob/living/hit_living) SIGNAL_HANDLER diff --git a/code/datums/mapgen/CaveGenerator.dm b/code/datums/mapgen/CaveGenerator.dm index 3641edb4d93..8d78ce25c47 100644 --- a/code/datums/mapgen/CaveGenerator.dm +++ b/code/datums/mapgen/CaveGenerator.dm @@ -1,5 +1,10 @@ /// The random offset applied to square coordinates, causes intermingling at biome borders #define BIOME_RANDOM_SQUARE_DRIFT 2 +// Categories for spawned things +#define CAVE_SPAWN_MOB "mob" +#define CAVE_SPAWN_FEATURE "feature" +#define CAVE_SPAWN_TENDRIL "tendril" +#define CAVE_SPAWN_MEGAFAUNA "megafauna" /datum/map_generator/cave_generator var/name = "Cave Generator" @@ -31,9 +36,6 @@ var/list/weighted_feature_spawn_list ///Expanded list of extra features that can spawn in the area. Reads from the weighted list var/list/feature_spawn_list - /// The turf types to replace with a biome-related turf, as typecache. - /// Leave empty for all open turfs (but not closed turfs) to be hijacked. - var/list/biome_accepted_turfs = list() /// An associative list of biome type to the list of turfs that were /// generated of that biome specifically. Helps to improve the efficiency /// of biome-related operations. Is populated through @@ -49,6 +51,21 @@ /// result in slower transitions var/perlin_zoom = 65 + /// Should we populate turfs through biome datums if we have such + var/biome_population = TRUE + /// Noise threshold above which a biome is considered high heat + var/high_heat_threshold = -0.1 + /// Noise threshold above which a biome is considered medium heat + var/medium_heat_threshold = -0.3 + /// Noise threshold above which a biome is considered high humidity + var/high_humidity_threshold = -0.1 + /// Noise threshold above which a biome is considered medium humidity + var/medium_humidity_threshold = -0.3 + /// Should all generators on the same z level use the same seeds? + var/shared_seed = TRUE + /// Stamp size for DBP noise, aka frequency + var/biome_stamp_size = 75 + ///Base chance of spawning a mob var/mob_spawn_chance = 6 ///Base chance of spawning flora @@ -58,6 +75,13 @@ ///Unique ID for this spawner var/string_gen + /// Radius around features within which we avoid spawning other features + var/feature_exclusion_radius = 7 + /// Radius around mobs which we avoid spawning other mobs + var/mob_exclusion_radius = 12 + /// Radius around megafauna within which we avoid spawning tendrils + var/megafauna_exclusion_radius = 7 + ///Chance of cells starting closed var/initial_closed_chance = 45 ///Amount of smoothing iterations @@ -101,7 +125,6 @@ open_turf_types = expand_weights(weighted_open_turf_types) closed_turf_types = expand_weights(weighted_closed_turf_types) - /datum/map_generator/cave_generator/generate_terrain(list/turfs, area/generate_in) . = ..() if(!(generate_in.area_flags_mapping & CAVES_ALLOWED)) @@ -114,7 +137,6 @@ string_gen = rustg_cnoise_generate("[initial_closed_chance]", "[smoothing_iterations]", "[birth_limit]", "[death_limit]", "[world.maxx]", "[world.maxy]") //Generate the raw CA data for(var/turf/gen_turf as anything in turfs) //Go through all the turfs and generate them - var/closed = string_gen[world.maxx * (gen_turf.y - 1) + gen_turf.x] != "0" var/turf/new_turf = pick(closed ? closed_turf_types : open_turf_types) @@ -137,31 +159,46 @@ * This should only be called by `generate_terrain()`, if you have to call this, * you're probably doing something wrong. */ -/datum/map_generator/cave_generator/proc/generate_terrain_with_biomes(list/turfs, area/generate_in) +/datum/map_generator/cave_generator/proc/generate_terrain_with_biomes(list/turf/turfs, area/generate_in) if(!(generate_in.area_flags_mapping & CAVES_ALLOWED)) return - var/humidity_seed = rand(0, 50000) - var/heat_seed = rand(0, 50000) + var/humidity_seed = null + var/heat_seed = null + + // Make sure that all caves on the same z level generate smoothly regardless of the area + if (shared_seed) + var/static/list/static_heat = null + var/static/list/static_humi = null + if (!static_heat) + static_heat = list() + static_humi = list() + + var/z_key = "[turfs[1].z]" + if (!static_heat[z_key]) + static_heat[z_key] = rand(0, 50000) + static_humi[z_key] = rand(0, 50000) + + heat_seed = static_heat[z_key] + humidity_seed = static_humi[z_key] + else + humidity_seed = rand(0, 50000) + heat_seed = rand(0, 50000) var/start_time = REALTIMEOFDAY string_gen = rustg_cnoise_generate("[initial_closed_chance]", "[smoothing_iterations]", "[birth_limit]", "[death_limit]", "[world.maxx]", "[world.maxy]") //Generate the raw CA data var/humidity_gen = list() - humidity_gen[BIOME_HIGH_HUMIDITY] = rustg_dbp_generate("[humidity_seed]", "60", "75", "[world.maxx]", "-0.1", "1.1") - humidity_gen[BIOME_MEDIUM_HUMIDITY] = rustg_dbp_generate("[humidity_seed]", "60", "75", "[world.maxx]", "-0.3", "-0.1") + humidity_gen[BIOME_HIGH_HUMIDITY] = rustg_dbp_generate("[humidity_seed]", "60", "[biome_stamp_size]", "[world.maxx]", "[high_heat_threshold]", "1.1") + humidity_gen[BIOME_MEDIUM_HUMIDITY] = rustg_dbp_generate("[humidity_seed]", "60", "[biome_stamp_size]", "[world.maxx]", "[medium_heat_threshold]", "[high_heat_threshold]") var/heat_gen = list() - heat_gen[BIOME_HIGH_HEAT] = rustg_dbp_generate("[heat_seed]", "60", "75", "[world.maxx]", "-0.1", "1.1") - heat_gen[BIOME_MEDIUM_HEAT] = rustg_dbp_generate("[heat_seed]", "60", "75", "[world.maxx]", "-0.3", "-0.1") - - var/list/expanded_closed_turfs = src.closed_turf_types - var/list/expanded_open_turfs = src.open_turf_types + heat_gen[BIOME_HIGH_HEAT] = rustg_dbp_generate("[heat_seed]", "60", "[biome_stamp_size]", "[world.maxx]", "[high_heat_threshold]", "1.1") + heat_gen[BIOME_MEDIUM_HEAT] = rustg_dbp_generate("[heat_seed]", "60", "[biome_stamp_size]", "[world.maxx]", "[medium_heat_threshold]", "[high_heat_threshold]") + var/list/to_generate = list() for(var/turf/gen_turf as anything in turfs) //Go through all the turfs and generate them var/closed = string_gen[world.maxx * (gen_turf.y - 1) + gen_turf.x] != "0" - var/new_turf_type = pick(closed ? expanded_closed_turfs : expanded_open_turfs) - var/datum/biome/selected_biome // Here comes the meat of the biome code. @@ -179,36 +216,20 @@ BIOME_HIGH_HEAT : text2num(heat_gen[BIOME_MEDIUM_HEAT][coordinate]) ? BIOME_MEDIUM_HEAT : BIOME_LOW_HEAT selected_biome = possible_biomes[heat_level][humidity_level] - - // Currently, we only affect open turfs, because biomes don't currently - // have a definition for biome-specific closed turfs. - if((!length(biome_accepted_turfs) && !closed) || biome_accepted_turfs[new_turf_type]) - LAZYADD(generated_turfs_per_biome[selected_biome], gen_turf) - - else - // The assumption is this will be faster then changeturf, and changeturf isn't required since by this point - // The old tile hasn't got the chance to init yet - var/turf/new_turf = new new_turf_type(gen_turf) - - if(gen_turf.turf_flags & NO_RUINS) - new_turf.turf_flags |= NO_RUINS - + LAZYSET(to_generate[selected_biome], gen_turf, closed) CHECK_TICK - for(var/biome in generated_turfs_per_biome) + for(var/biome in to_generate) var/datum/biome/generating_biome = SSmapping.biomes[biome] - - var/list/turf/generated_turfs = generating_biome.generate_turfs_for_terrain(generated_turfs_per_biome[biome]) - + var/list/turf/generated_turfs = generating_biome.generate_turfs_for_terrain(to_generate[biome]) generated_turfs_per_biome[biome] = generated_turfs var/message = "[name] terrain generation finished in [(REALTIMEOFDAY - start_time)/10]s!" to_chat(world, span_boldannounce("[message]"), MESSAGE_TYPE_DEBUG) log_world(message) - /datum/map_generator/cave_generator/populate_terrain(list/turfs, area/generate_in) - if(length(possible_biomes)) + if (biome_population && length(possible_biomes)) return populate_terrain_with_biomes(turfs, generate_in) // Area var pullouts to make accessing in the loop faster @@ -219,87 +240,97 @@ var/start_time = REALTIMEOFDAY - for(var/turf/target_turf as anything in turfs) - if(!(target_turf.type in open_turf_types)) //only put stuff on open turfs we generated, so closed walls and rivers and stuff are skipped + // Assoc list of spawned categories to + var/list/spawn_data = list( + CAVE_SPAWN_FEATURE = list(), + CAVE_SPAWN_TENDRIL = list(), + CAVE_SPAWN_MOB = list(), + CAVE_SPAWN_MEGAFAUNA = list(), + ) + + var/list/open_turf_cache = typecacheof(open_turf_types) + for (var/turf/target_turf as anything in turfs) + // Only put stuff on open turfs we generated, so closed walls and rivers and stuff are skipped + if (!is_type_in_typecache(target_turf, open_turf_cache)) continue - // If we've spawned something yet - var/spawned_something = FALSE + CHECK_TICK - if(!(target_turf.turf_flags & TURF_BLOCKS_POPULATE_TERRAIN_FLORAFEATURES)) - ///Spawning isn't done in procs to save on overhead on the 60k turfs we're going through. - //FLORA SPAWNING HERE - if(flora_allowed && prob(flora_spawn_chance)) + if (!(target_turf.turf_flags & TURF_BLOCKS_POPULATE_TERRAIN_FLORAFEATURES)) + if (flora_allowed && prob(flora_spawn_chance)) var/flora_type = pick(flora_spawn_list) new flora_type(target_turf) - spawned_something = TRUE + continue - //FEATURE SPAWNING HERE - //we may have generated something from the flora list on the target turf, so let's not place - //a feature here if that's the case (because it would look stupid) - if(feature_allowed && !spawned_something && prob(feature_spawn_chance)) + if (feature_allowed && prob(feature_spawn_chance)) var/can_spawn = TRUE - - var/atom/picked_feature = pick(feature_spawn_list) - - for(var/obj/structure/existing_feature in range(7, target_turf)) - if(istype(existing_feature, picked_feature)) + for(var/turf/spawn_turf as anything in spawn_data[CAVE_SPAWN_FEATURE]) + if (get_dist(spawn_turf, target_turf) <= feature_exclusion_radius) can_spawn = FALSE break - if(can_spawn) + if (can_spawn) + var/picked_feature = pick(feature_spawn_list) new picked_feature(target_turf) - spawned_something = TRUE + spawn_data[CAVE_SPAWN_FEATURE] += target_turf + continue - //MOB SPAWNING HERE - if(mobs_allowed && !spawned_something && prob(mob_spawn_chance)) - var/atom/picked_mob = pick(mob_spawn_list) - var/is_megafauna = FALSE + if (!mobs_allowed || !prob(mob_spawn_chance)) + continue - if(picked_mob == SPAWN_MEGAFAUNA) - if(megas_allowed) //this is danger. it's boss time. - picked_mob = pick(megafauna_spawn_list) - is_megafauna = TRUE - else //this is not danger, don't spawn a boss, spawn something else - picked_mob = pick(mob_spawn_no_mega_list) //What if we used 100% of the brain...and did something (slightly) less shit than a while loop? + var/picked_mob = pick(megas_allowed ? mob_spawn_list : mob_spawn_no_mega_list) + var/is_megafauna = FALSE + if (picked_mob == SPAWN_MEGAFAUNA) + picked_mob = pick(megafauna_spawn_list) + is_megafauna = TRUE - var/can_spawn = TRUE - - // prevents tendrils spawning in each other's collapse range - if(ispath(picked_mob, /obj/structure/spawner/lavaland)) - for(var/obj/structure/spawner/lavaland/spawn_blocker in range(2, target_turf)) - can_spawn = FALSE - break - // if the random is not a tendril (hopefully meaning it is a mob), avoid spawning if there's another one within 12 tiles - else - var/list/things_in_range = range(12, target_turf) - for(var/mob/living/mob_blocker in things_in_range) - if(ismining(mob_blocker)) - can_spawn = FALSE - break - // Also block spawns if there's a random lavaland mob spawner nearby and it's not a mega - if(!is_megafauna) - can_spawn = can_spawn && !(locate(/obj/effect/spawner/random/lavaland_mob) in things_in_range) - //if there's a megafauna within standard view don't spawn anything at all (This isn't really consistent, I don't know why we do this. you do you tho) - if(can_spawn) - for(var/mob/living/simple_animal/hostile/megafauna/found_fauna in range(7, target_turf)) + var/can_spawn = TRUE + if(ispath(picked_mob, /obj/structure/spawner/lavaland)) + // Prevents tendrils spawning in each other's collapse range + for(var/turf/spawn_turf as anything in spawn_data[CAVE_SPAWN_TENDRIL]) + if (get_dist(spawn_turf, target_turf) <= 2) can_spawn = FALSE break - if(can_spawn) - if(ispath(picked_mob, /mob/living/simple_animal/hostile/megafauna/bubblegum)) //there can be only one bubblegum, so don't waste spawns on it - weighted_megafauna_spawn_list.Remove(picked_mob) - megafauna_spawn_list = expand_weights(weighted_megafauna_spawn_list) - megas_allowed = megas_allowed && length(megafauna_spawn_list) - new picked_mob(target_turf) - spawned_something = TRUE - CHECK_TICK + // Also avoid spawning them next to megafauna + for(var/turf/spawn_turf as anything in spawn_data[CAVE_SPAWN_MEGAFAUNA]) + if (get_dist(spawn_turf, target_turf) <= megafauna_exclusion_radius) + can_spawn = FALSE + break + else if (is_megafauna) + // Megafauna can spawn wherever it wants as long as its not next to another mega + for(var/turf/spawn_turf as anything in spawn_data[CAVE_SPAWN_MEGAFAUNA]) + if (get_dist(spawn_turf, target_turf) <= megafauna_exclusion_radius) + can_spawn = FALSE + break + else + for(var/turf/spawn_turf as anything in spawn_data[CAVE_SPAWN_MOB]) + if (get_dist(spawn_turf, target_turf) <= mob_exclusion_radius) + can_spawn = FALSE + break + + if (!can_spawn) + continue + + if (ispath(picked_mob, /obj/structure/spawner/lavaland)) + spawn_data[CAVE_SPAWN_TENDRIL] += target_turf + else + if (is_megafauna) + spawn_data[CAVE_SPAWN_MEGAFAUNA] += target_turf + spawn_data[CAVE_SPAWN_MOB] += target_turf + + new picked_mob(target_turf) + + // There can be only one Bubblegum, so don't waste spawns on it + if(ispath(picked_mob, /mob/living/simple_animal/hostile/megafauna/bubblegum)) + weighted_megafauna_spawn_list.Remove(picked_mob) + megafauna_spawn_list = expand_weights(weighted_megafauna_spawn_list) + megas_allowed = megas_allowed && length(megafauna_spawn_list) var/message = "[name] terrain population finished in [(REALTIMEOFDAY - start_time)/10]s!" to_chat(world, span_boldannounce("[message]"), MESSAGE_TYPE_DEBUG) log_world(message) - /** * This handles the population of terrain with biomes. Should only be called by * `populate_terrain()`, if you find yourself calling this, you're probably not @@ -333,7 +364,6 @@ to_chat(world, span_boldannounce("[message]"), MESSAGE_TYPE_DEBUG) log_world(message) - /datum/map_generator/cave_generator/jungle possible_biomes = list( BIOME_LOW_HEAT = list( @@ -355,3 +385,7 @@ #undef BIOME_RANDOM_SQUARE_DRIFT +#undef CAVE_SPAWN_MOB +#undef CAVE_SPAWN_FEATURE +#undef CAVE_SPAWN_TENDRIL +#undef CAVE_SPAWN_MEGAFAUNA diff --git a/code/datums/mapgen/Cavegens/LavalandGenerator.dm b/code/datums/mapgen/Cavegens/LavalandGenerator.dm index be4dc3710f2..e464c62dc33 100644 --- a/code/datums/mapgen/Cavegens/LavalandGenerator.dm +++ b/code/datums/mapgen/Cavegens/LavalandGenerator.dm @@ -2,6 +2,30 @@ weighted_open_turf_types = list(/turf/open/misc/asteroid/basalt/lava_land_surface = 1) weighted_closed_turf_types = list(/turf/closed/mineral/random/volcanic = 1) + possible_biomes = list( + BIOME_LOW_HEAT = list( + BIOME_LOW_HUMIDITY = /datum/biome/lavaland/basalt, + BIOME_MEDIUM_HUMIDITY = /datum/biome/lavaland/basalt, + BIOME_HIGH_HUMIDITY = /datum/biome/lavaland/shale, + ), + BIOME_MEDIUM_HEAT = list( + BIOME_LOW_HUMIDITY = /datum/biome/lavaland/basalt, + BIOME_MEDIUM_HUMIDITY = /datum/biome/lavaland/basalt, + BIOME_HIGH_HUMIDITY = /datum/biome/lavaland/shale, + ), + BIOME_HIGH_HEAT = list( + BIOME_LOW_HUMIDITY = /datum/biome/lavaland/basalt, + BIOME_MEDIUM_HUMIDITY = /datum/biome/lavaland/red_rock, + BIOME_HIGH_HUMIDITY = /datum/biome/lavaland/red_rock, + ), + ) + + biome_population = FALSE + + high_heat_threshold = 0.15 + high_humidity_threshold = 0.15 + biome_stamp_size = 60 + weighted_mob_spawn_list = list( SPAWN_MEGAFAUNA = 2, /obj/effect/spawner/random/lavaland_mob/goliath = 50, @@ -11,7 +35,7 @@ /mob/living/basic/mining/brimdemon = 20, /mob/living/basic/mining/lobstrosity/lava = 20, /obj/effect/spawner/random/lavaland_mob/raptor = 15, - /mob/living/basic/mining/goldgrub = 10, + /mob/living/basic/mining/goldgrub = 15, /obj/structure/spawner/lavaland = 2, /obj/structure/spawner/lavaland/goliath = 3, /obj/structure/spawner/lavaland/legion = 3, @@ -38,10 +62,7 @@ /obj/structure/ore_vent/boss = 1, ) - initial_closed_chance = 45 smoothing_iterations = 50 - birth_limit = 4 - death_limit = 3 /datum/map_generator/cave_generator/lavaland/ruin_version weighted_open_turf_types = list(/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins = 1) diff --git a/code/datums/mapgen/biomes/_biome.dm b/code/datums/mapgen/biomes/_biome.dm index bda1029f431..bb0398259de 100644 --- a/code/datums/mapgen/biomes/_biome.dm +++ b/code/datums/mapgen/biomes/_biome.dm @@ -1,7 +1,9 @@ ///This datum handles the transitioning from a turf to a specific biome, and handles spawning decorative structures and mobs. /datum/biome - ///Type of turf this biome creates - var/turf_type + /// Type of turf this biome creates for open turfs + var/open_turf_type + /// Type of turf this biome creates for closed turfs + var/closed_turf_type /// Chance of having a structure from the flora types list spawn var/flora_density = 0 /// Chance of spawning special features, such as geysers. @@ -32,8 +34,13 @@ ///This proc handles the creation of a turf of a specific biome type -/datum/biome/proc/generate_turf(turf/gen_turf) - gen_turf.ChangeTurf(turf_type, null, CHANGETURF_DEFER_CHANGE) +/datum/biome/proc/generate_turf(turf/gen_turf, closed) + if (closed) + gen_turf.ChangeTurf(closed_turf_type, null, CHANGETURF_DEFER_CHANGE) + return + + gen_turf.ChangeTurf(open_turf_type, null, CHANGETURF_DEFER_CHANGE) + if(length(flora_types) && prob(flora_density)) var/obj/structure/flora = pick(flora_types) new flora(gen_turf) @@ -52,7 +59,8 @@ /// This proc handles the creation of a turf of a specific biome type, assuming /// that the turf has not been initialized yet. Don't call this unless you know /// what you're doing. -/datum/biome/proc/generate_turf_for_terrain(turf/gen_turf) +/datum/biome/proc/generate_turf_for_terrain(turf/gen_turf, closed) + var/turf_type = closed ? closed_turf_type : open_turf_type var/turf/new_turf = new turf_type(gen_turf) return new_turf @@ -70,8 +78,10 @@ var/list/turf/new_turfs = list() for(var/turf/gen_turf as anything in gen_turfs) + var/closed = gen_turfs[gen_turf] + var/turf_type = closed ? closed_turf_type : open_turf_type var/turf/new_turf = new turf_type(gen_turf) - new_turfs += new_turf + new_turfs[new_turf] = turf_type if(gen_turf.turf_flags & NO_RUINS) new_turf.turf_flags |= NO_RUINS @@ -176,56 +186,3 @@ continue new picked_mob(target_turf) - - -/datum/biome/mudlands - turf_type = /turf/open/misc/dirt/jungle/dark - flora_types = list( - /obj/structure/flora/grass/jungle/a/style_random = 1, - /obj/structure/flora/grass/jungle/b/style_random = 1, - /obj/structure/flora/rock/pile/jungle/style_random = 1, - /obj/structure/flora/rock/pile/jungle/large/style_random = 1, - ) - flora_density = 3 - -/datum/biome/plains - turf_type = /turf/open/misc/grass/jungle - flora_types = list( - /obj/structure/flora/grass/jungle/a/style_random = 1, - /obj/structure/flora/grass/jungle/b/style_random = 1, - /obj/structure/flora/tree/jungle/style_random = 1, - /obj/structure/flora/rock/pile/jungle/style_random = 1, - /obj/structure/flora/bush/jungle/a/style_random = 1, - /obj/structure/flora/bush/jungle/b/style_random = 1, - /obj/structure/flora/bush/jungle/c/style_random = 1, - /obj/structure/flora/bush/large/style_random = 1, - /obj/structure/flora/rock/pile/jungle/large/style_random = 1, - ) - flora_density = 15 - -/datum/biome/jungle - turf_type = /turf/open/misc/grass/jungle - flora_types = list( - /obj/structure/flora/grass/jungle/a/style_random = 1, - /obj/structure/flora/grass/jungle/b/style_random = 1, - /obj/structure/flora/tree/jungle/style_random = 1, - /obj/structure/flora/rock/pile/jungle/style_random = 1, - /obj/structure/flora/bush/jungle/a/style_random = 1, - /obj/structure/flora/bush/jungle/b/style_random = 1, - /obj/structure/flora/bush/jungle/c/style_random = 1, - /obj/structure/flora/bush/large/style_random = 1, - /obj/structure/flora/rock/pile/jungle/large/style_random = 1, - ) - flora_density = 40 - -/datum/biome/jungle/deep - flora_density = 65 - -/datum/biome/wasteland - turf_type = /turf/open/misc/dirt/jungle/wasteland - -/datum/biome/water - turf_type = /turf/open/water/jungle - -/datum/biome/mountain - turf_type = /turf/closed/mineral/random/jungle diff --git a/code/datums/mapgen/biomes/jungle.dm b/code/datums/mapgen/biomes/jungle.dm new file mode 100644 index 00000000000..a15bc7fd1f7 --- /dev/null +++ b/code/datums/mapgen/biomes/jungle.dm @@ -0,0 +1,57 @@ +/datum/biome/mudlands + open_turf_type = /turf/open/misc/dirt/jungle/dark + closed_turf_type = /turf/closed/mineral/random/jungle + flora_types = list( + /obj/structure/flora/grass/jungle/a/style_random = 1, + /obj/structure/flora/grass/jungle/b/style_random = 1, + /obj/structure/flora/rock/pile/jungle/style_random = 1, + /obj/structure/flora/rock/pile/jungle/large/style_random = 1, + ) + flora_density = 3 + +/datum/biome/plains + open_turf_type = /turf/open/misc/grass/jungle + closed_turf_type = /turf/closed/mineral/random/jungle + flora_types = list( + /obj/structure/flora/grass/jungle/a/style_random = 1, + /obj/structure/flora/grass/jungle/b/style_random = 1, + /obj/structure/flora/tree/jungle/style_random = 1, + /obj/structure/flora/rock/pile/jungle/style_random = 1, + /obj/structure/flora/bush/jungle/a/style_random = 1, + /obj/structure/flora/bush/jungle/b/style_random = 1, + /obj/structure/flora/bush/jungle/c/style_random = 1, + /obj/structure/flora/bush/large/style_random = 1, + /obj/structure/flora/rock/pile/jungle/large/style_random = 1, + ) + flora_density = 15 + +/datum/biome/jungle + open_turf_type = /turf/open/misc/grass/jungle + closed_turf_type = /turf/closed/mineral/random/jungle + flora_types = list( + /obj/structure/flora/grass/jungle/a/style_random = 1, + /obj/structure/flora/grass/jungle/b/style_random = 1, + /obj/structure/flora/tree/jungle/style_random = 1, + /obj/structure/flora/rock/pile/jungle/style_random = 1, + /obj/structure/flora/bush/jungle/a/style_random = 1, + /obj/structure/flora/bush/jungle/b/style_random = 1, + /obj/structure/flora/bush/jungle/c/style_random = 1, + /obj/structure/flora/bush/large/style_random = 1, + /obj/structure/flora/rock/pile/jungle/large/style_random = 1, + ) + flora_density = 40 + +/datum/biome/jungle/deep + flora_density = 65 + +/datum/biome/wasteland + open_turf_type = /turf/open/misc/dirt/jungle/wasteland + closed_turf_type = /turf/closed/mineral/random/jungle + +/datum/biome/water + open_turf_type = /turf/open/water/jungle + closed_turf_type = /turf/closed/mineral/random/jungle + +/datum/biome/mountain + open_turf_type = /turf/closed/mineral/random/jungle + closed_turf_type = /turf/closed/mineral/random/jungle diff --git a/code/datums/mapgen/biomes/lavaland.dm b/code/datums/mapgen/biomes/lavaland.dm new file mode 100644 index 00000000000..9ebcd2d73eb --- /dev/null +++ b/code/datums/mapgen/biomes/lavaland.dm @@ -0,0 +1,12 @@ +/datum/biome/lavaland + open_turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface + closed_turf_type = /turf/closed/mineral/volcanic + +/datum/biome/lavaland/basalt + closed_turf_type = /turf/closed/mineral/random/volcanic + +/datum/biome/lavaland/shale + closed_turf_type = /turf/closed/mineral/random/volcanic/shale + +/datum/biome/lavaland/red_rock + closed_turf_type = /turf/closed/mineral/random/volcanic/red_rock diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index c9692021a01..87104b8cd47 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -117,8 +117,13 @@ /// Wire assignment for airlocks in this area var/airlock_wires = /datum/wires/airlock - ///This datum, if set, allows terrain generation behavior to be ran on Initialize() + /// Should we actually be running our mapgen if one is set? + /// FALSE here with a set map_generator allows the area to probe from shared generators without actually generating its' turfs + var/use_mapgen = TRUE + /// Datum that would be used in terrain generation behavior var/datum/map_generator/map_generator + /// Should the map_generator be shared with all other willing areas on our z_level? + var/share_map_generator = TRUE ///Used to decide what kind of reverb the area makes sound have var/sound_environment = SOUND_ENVIRONMENT_NONE @@ -220,27 +225,56 @@ GLOBAL_LIST_EMPTY(teleportlocs) /// Generate turfs, including cool cave wall gen /area/proc/RunTerrainGeneration() - if(map_generator) - map_generator = new map_generator() - var/list/turfs = list() - for(var/turf/T in contents) - turfs += T - map_generator.generate_terrain(turfs, src) + if (!use_mapgen || !map_generator) + return + map_generator = get_generator() + var/list/turfs = list() + for(var/turf/T in contents) + turfs += T + map_generator.generate_terrain(turfs, src) /// Populate the previously generated terrain with mobs and objects /area/proc/RunTerrainPopulation() - if(map_generator) - var/list/turfs = list() - for(var/turf/T in contents) - turfs += T - map_generator.populate_terrain(turfs, src) + if (!use_mapgen || !map_generator) + return + map_generator = get_generator() + var/list/turfs = list() + for(var/turf/T in contents) + turfs += T + map_generator.populate_terrain(turfs, src) /area/proc/test_gen() - if(map_generator) - var/list/turfs = list() - for(var/turf/T in contents) - turfs += T - map_generator.generate_terrain(turfs, src) + if (!use_mapgen || !map_generator) + return + map_generator = get_generator() + var/list/turfs = list() + for(var/turf/T in contents) + turfs += T + map_generator.generate_terrain(turfs, src) + +/// Gets own, or shared, map generator +/area/proc/get_generator() + RETURN_TYPE(/datum/map_generator) + if (!map_generator) + return + + if (istype(map_generator)) + return map_generator + + if (!share_map_generator) + map_generator = new map_generator() + return map_generator + + var/list/z_generators = GLOB.map_generators_by_z["[z]"] + if (z_generators && z_generators[map_generator]) + map_generator = z_generators[map_generator] + + if (!istype(map_generator)) + var/new_generator = new map_generator() + LAZYSET(GLOB.map_generators_by_z["[z]"], map_generator, new_generator) + map_generator = new_generator + + return map_generator /// Returns the highest zlevel that this area contains turfs for /area/proc/get_highest_zlevel() diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm index 3d97da72c39..af047a00698 100644 --- a/code/game/area/areas/mining.dm +++ b/code/game/area/areas/mining.dm @@ -137,6 +137,8 @@ sound_environment = SOUND_AREA_LAVALAND ambient_buzz = 'sound/ambience/lavaland/magma.ogg' allow_shuttle_docking = TRUE + map_generator = /datum/map_generator/cave_generator/lavaland + use_mapgen = FALSE /area/lavaland/surface name = "Lavaland" @@ -167,7 +169,7 @@ icon_state = "unexplored" area_flags = VALID_TERRITORY area_flags_mapping = UNIQUE_AREA | CAVES_ALLOWED | FLORA_ALLOWED | MOB_SPAWN_ALLOWED - map_generator = /datum/map_generator/cave_generator/lavaland + use_mapgen = TRUE /area/lavaland/surface/outdoors/unexplored/danger //megafauna will also spawn here icon_state = "danger" diff --git a/code/game/machinery/computer/orders/order_items/mining/order_pka.dm b/code/game/machinery/computer/orders/order_items/mining/order_pka.dm index ceaa83d8ef7..9ebe4b72b8b 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_pka.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_pka.dm @@ -34,7 +34,7 @@ cost_per_order = 150 /datum/orderable_item/accelerator/aoe_mobs - purchase_path = /obj/item/borg/upgrade/modkit/aoe/mobs + purchase_path = /obj/item/borg/upgrade/modkit/cooldown/aoe/mobs cost_per_order = 1500 /datum/orderable_item/accelerator/minebot_passthrough diff --git a/code/game/objects/effects/spawners/random/mining_loot.dm b/code/game/objects/effects/spawners/random/mining_loot.dm index 682c6e4ad23..f5f86dbe5f3 100644 --- a/code/game/objects/effects/spawners/random/mining_loot.dm +++ b/code/game/objects/effects/spawners/random/mining_loot.dm @@ -58,7 +58,7 @@ icon = 'icons/obj/mining.dmi' icon_state = "modkit" loot = list( - /obj/item/borg/upgrade/modkit/aoe/mobs/andturfs = 1, + /obj/item/borg/upgrade/modkit/cooldown/aoe/mobs/andturfs = 1, /obj/item/borg/upgrade/modkit/cooldown/repeater = 1, /obj/item/borg/upgrade/modkit/resonator_blasts = 1, /obj/item/borg/upgrade/modkit/bounty = 1, diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index d7bf67cf730..6de443f9e47 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -13,6 +13,10 @@ refined_type = /obj/item/stack/sheet/bluespace_crystal scan_state = "rock_bscrystal" merge_type = /obj/item/stack/ore/bluespace_crystal + vein_type = ORE_VEIN_SCATTER + vein_distance = 5 + min_vein_size = 1 + max_vein_size = 2 /// The teleport range when crushed/thrown at someone. var/blink_range = 8 diff --git a/code/game/objects/structures/crates_lockers/crates/abandoned_crates/abandoned_crates_loot.dm b/code/game/objects/structures/crates_lockers/crates/abandoned_crates/abandoned_crates_loot.dm index 490b280c66c..943af17cf1f 100644 --- a/code/game/objects/structures/crates_lockers/crates/abandoned_crates/abandoned_crates_loot.dm +++ b/code/game/objects/structures/crates_lockers/crates/abandoned_crates/abandoned_crates_loot.dm @@ -64,7 +64,7 @@ /obj/effect/spawner/abandoned_crate/space_suit loot = list( - /obj/item/borg/upgrade/modkit/aoe/mobs = 1, + /obj/item/borg/upgrade/modkit/cooldown/aoe/mobs = 1, /obj/item/clothing/suit/space = 1, /obj/item/clothing/head/helmet/space = 1 ) diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm index f4ef87a2c09..8a20893d32b 100644 --- a/code/game/objects/structures/lavaland/ore_vent.dm +++ b/code/game/objects/structures/lavaland/ore_vent.dm @@ -221,8 +221,8 @@ * This also means a large boulder can highroll a boulder with a full stack of 50 sheets of material. * @params ore_floor The number of minerals already rolled. Used to scale the logarithmic function. */ -/obj/structure/ore_vent/proc/ore_quantity_function(ore_floor) - return SHEET_MATERIAL_AMOUNT * max(round(boulder_size * (log(rand(1 + ore_floor, 4 + ore_floor)) ** -1)), 1) +/obj/structure/ore_vent/proc/ore_quantity_function(ore_floor, ore_per_size = HALF_SHEET_MATERIAL_AMOUNT) + return ore_per_size * max(round(boulder_size * (log(rand(1 + ore_floor, 4 + ore_floor)) ** -1)), 1) /** * This confirms that the user wants to start the wave defense event, and that they can start it. diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 79b801b678e..d21d2377be4 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -1,4 +1,5 @@ #define MINING_MESSAGE_COOLDOWN 20 +#define DEFAULT_BORDER_DISTANCE -1 /**********************Mineral deposits**************************/ @@ -27,14 +28,14 @@ temperature = TCMB var/turf/turf_type = /turf/open/misc/asteroid/airless /// The path of the ore stack we spawn when we're mined. - var/obj/item/stack/ore/mineralType = null - /// If we spawn a boulder like on the gulag, we use this in lou of mineralType + var/obj/item/stack/ore/mineral_type = null + /// If we spawn a boulder like on the gulag, we use this in lou of mineral_type var/obj/item/boulder/spawned_boulder = null - /// How much ore we spawn when we're mining a mineralType. - var/mineralAmt = 3 + /// How much ore we spawn when we're mining a mineral_type. + var/mineral_amt = 3 /// The icon of the image we display when we're pinged by a mining scanner, to be overridden if you want to use an alternate file for a subtype. var/scan_icon = 'icons/effects/ore_visuals.dmi' - /// Placeholder for the icon_state of the image we display when we're pinged by a mining scanner + /// Placeholder for the image we display when we're pinged by a mining scanner var/scan_state = "" /// If true, this turf will not call AfterChange during change_turf calls. var/defer_change = FALSE @@ -44,7 +45,8 @@ var/tool_mine_speed = 4 SECONDS /// How long it takes to mine this turf without tools, if it's weak. var/hand_mine_speed = 15 SECONDS - + /// Distance to the nearest open turf + var/open_turf_distance = DEFAULT_BORDER_DISTANCE /turf/closed/mineral/Initialize(mapload) . = ..() @@ -74,85 +76,138 @@ else if(held_item.tool_behaviour == TOOL_MINING) attackby(held_item, bumping) -/turf/closed/mineral/proc/Spread_Vein() - var/spreadChance = initial(mineralType.spreadChance) - if(spreadChance) - for(var/dir in GLOB.cardinals) - if(prob(spreadChance)) - var/turf/T = get_step(src, dir) - var/turf/closed/mineral/random/M = T - if(istype(M) && !M.mineralType) - M.Change_Ore(mineralType) +/turf/closed/mineral/proc/spread_vein(ore_type) + if(!ispath(ore_type, /obj/item/stack/ore)) + change_ore(ore_type) + return -/turf/closed/mineral/proc/Change_Ore(ore_type, random = 0) - if(random) - mineralAmt = rand(1, 5) - if(ispath(ore_type, /obj/item/stack/ore)) // If it has a scan_state, switch to it - var/obj/item/stack/ore/the_ore = ore_type - scan_state = initial(the_ore.scan_state) // I SAID. SWITCH. TO. IT. - mineralType = ore_type // Everything else assumes that this is typed correctly so don't set it to non-ores thanks. - if(ispath(ore_type, /obj/item/boulder)) + var/obj/item/stack/ore/ore_path = ore_type + if (!ore_path::vein_type) + change_ore(ore_type) + return + + // No need to recalculate ore vein size lists every time we want to spawn one + var/static/list/vein_sizes = null + if (!vein_sizes) + vein_sizes = list() + + var/min_vein_size = ore_path::min_vein_size + var/max_vein_size = ore_path::max_vein_size + if (!vein_sizes[ore_path]) + var/list/ore_sizes = list() + // Larger veins are rarer by default + for (var/i in min_vein_size to max_vein_size) + ore_sizes["[i]"] = max_vein_size - i + 1 + vein_sizes[ore_path] = ore_sizes + + var/vein_size = text2num(pick_weight(vein_sizes[ore_path])) + + switch (ore_path::vein_type) + if (ORE_VEIN_CLUSTER) + for (var/turf/closed/mineral/rock in range(vein_size, src)) + if (rock.mineral_type) + continue + + var/spread_prob = 100 + // Easiest way to check for different rock types + if (rock.base_icon_state != base_icon_state) + spread_prob = 50 + + if (rock == src || prob(spread_prob * sqrt(max(0, 1 - sqrt((x - rock.x) ** 2 + (y - rock.y) ** 2) / vein_size)))) + rock.change_ore(ore_path) + + if (ORE_VEIN_SCATTER) + var/list/turf/closed/mineral/rocks = list() + for (var/turf/closed/mineral/rock in range(vein_size, src)) + if (rock.base_icon_state != base_icon_state && prob(50)) + continue + if (!rock.mineral_type) + rocks += rock + + for (var/i in 1 to rand(min_vein_size ** 2, max_vein_size ** 2)) + var/turf/closed/mineral/rock = pick_n_take(rocks) + if (istype(rock)) + rock.change_ore(ore_path, FALSE) + rock.mineral_amt = 1 + + if (ORE_VEIN_PLAIN) + var/list/turf/closed/mineral/rocks = list() + for (var/turf/closed/mineral/rock in range(vein_size, src)) + if (rock.base_icon_state != base_icon_state && prob(50)) + continue + if (!rock.mineral_type) + rocks += rock + + if (!length(rocks)) + return + + var/turf/first_end = pick(rocks) + var/first_dist = get_dist(src, first_end) + var/second_dist = vein_size - first_dist + var/turf/second_end = locate(x - round((first_end.x - x) / first_dist * second_dist, 1), y - round((first_end.y - y) / first_dist * second_dist, 1), z) + if (!istype(second_end)) + second_end = src + + rocks.Cut() + for (var/turf/closed/mineral/rock in range(1, second_end)) + if (!rock.mineral_type) + rocks += rock + + if (!length(rocks)) + return + + second_end = pick(rocks) + for (var/turf/closed/mineral/rock in get_line(first_end, src) + get_line(second_end, src)) + rock.change_ore(ore_path) + if (rock == src || prob(100 / get_dist(src, rock))) + var/turf/closed/mineral/other_rock = get_step(rock, pick(GLOB.cardinals)) + if (istype(other_rock) && !other_rock.mineral_type) + other_rock.change_ore(ore_path) + + if (ORE_VEIN_BRANCH) + for (var/branch in 1 to rand(3, 5)) + var/list/turf/closed/mineral/rocks = list() + for (var/turf/closed/mineral/rock in range(vein_size, src)) + if (rock.base_icon_state != base_icon_state && prob(50)) + continue + if (!rock.mineral_type) + rocks += rock + + if (!length(rocks)) + continue + + for (var/turf/closed/mineral/rock in get_line(src, pick(rocks))) + if (!rock.mineral_type) + rock.change_ore(ore_path) + +/turf/closed/mineral/proc/change_ore(ore_type, random = TRUE) + if (ispath(ore_type, /obj/item/boulder)) scan_state = "rock_boulder" // Yes even the lowly boulder has a scan state spawned_boulder = /obj/item/boulder/gulag_expanded + return -/** - * Returns the distance to the nearest ore vent, where ore vents are tracked in SSore_generation's possible vents list. - * Returns 0 if we're not on lavaland, and as we're using get_dist, our range is limited to 127 tiles. - */ -/turf/closed/mineral/proc/prox_to_vent() - if(!is_mining_level(z)) - return 0 + if (random) + mineral_amt = rand(1, 5) - var/distance = 128 // Max distance for a get_dist is 127 - for(var/obj/structure/ore_vent/vent as anything in SSore_generation.possible_vents) - if(vent.z != src.z) - continue //Silly - var/temp_distance = get_dist(src, vent) - if(temp_distance < distance) - distance = temp_distance - return distance + if (!ispath(ore_type, /obj/item/stack/ore)) + return -/** - * Returns the chance of ore spawning in this turf, based on proximity to a vent. - * See mining defines for the chances and distance defines. - */ -/turf/closed/mineral/proc/proximity_ore_chance() - var/distance = prox_to_vent() - if(distance == 0) //We asked for a random chance but we could not successfully find a vent, so 0. - return 0 + var/obj/item/stack/ore/the_ore = ore_type + scan_state = initial(the_ore.scan_state) // If it has a scan_state, switch to it + mineral_type = ore_type // Everything else assumes that this is typed correctly so don't set it to non-ores thanks. - if(distance < VENT_PROX_VERY_HIGH) - return VENT_CHANCE_VERY_HIGH - if(distance < VENT_PROX_HIGH) - return VENT_CHANCE_HIGH - if(distance < VENT_PROX_MEDIUM) - return VENT_CHANCE_MEDIUM - if(distance < VENT_PROX_LOW) - return VENT_CHANCE_LOW - if(distance < VENT_PROX_FAR) - return VENT_CHANCE_FAR - return 0 - -/** - * Returns the amount of ore to spawn in this turf, based on proximity to a vent. - * If for some reason we have a distance of zero (like being off mining Z levels), we return a random amount between 1 and 5 instead. - */ -/turf/closed/mineral/proc/scale_ore_to_vent() - var/distance = prox_to_vent() - if(distance == 0) // We're not on lavaland or similar failure condition - return rand(1,5) - - if(distance < VENT_PROX_VERY_HIGH) - return ORE_WALL_VERY_HIGH - if(distance < VENT_PROX_HIGH) - return ORE_WALL_HIGH - if(distance < VENT_PROX_MEDIUM) - return ORE_WALL_MEDIUM - if(distance < VENT_PROX_LOW) - return ORE_WALL_LOW - if(distance < VENT_PROX_FAR) - return ORE_WALL_FAR - return 0 +/turf/closed/mineral/proc/flash_scan() + var/obj/effect/temp_visual/mining_overlay/scan_overlay = locate(/obj/effect/temp_visual/mining_overlay) in src + if(scan_overlay) + deltimer(scan_overlay.timerid) + scan_overlay.timerid = QDEL_IN_STOPPABLE(scan_overlay, scan_overlay.duration) + animate(scan_overlay, alpha = 0, time = scan_overlay.duration, easing = scan_overlay.easing_style) + return + scan_overlay = new(src) + var/mutable_appearance/scan_state_overlay = mutable_appearance(scan_icon, scan_state) + scan_state_overlay.pixel_x = 224 + scan_state_overlay.pixel_y = 224 + scan_overlay.add_overlay(scan_state_overlay) /turf/closed/mineral/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) if(turf_type) @@ -161,7 +216,6 @@ return TRUE return ..() - /turf/closed/mineral/attackby(obj/item/I, mob/user, list/modifiers, list/attack_modifiers, exp_multiplier = 1) if (!ISADVANCEDTOOLUSER(user)) to_chat(usr, span_warning("You don't have the dexterity to do this!")) @@ -212,22 +266,23 @@ /turf/closed/mineral/proc/gets_drilled(mob/user, exp_multiplier = 0) if(istype(user)) SEND_SIGNAL(user, COMSIG_MOB_MINED, src, exp_multiplier) - if(mineralType && (mineralAmt > 0)) - new mineralType(src, mineralAmt) - SSblackbox.record_feedback("tally", "ore_mined", mineralAmt, mineralType) + if(mineral_type && (mineral_amt > 0)) + new mineral_type(src, mineral_amt) + SSblackbox.record_feedback("tally", "ore_mined", mineral_amt, mineral_type) if(spawned_boulder) var/obj/item/boulder/wall_boulder = new spawned_boulder(src) wall_boulder.platform_lifespan = PLATFORM_LIFE_GULAG if(ishuman(user)) var/mob/living/carbon/human/H = user if(exp_multiplier) - if (mineralType && (mineralAmt > 0)) - H.mind.adjust_experience(/datum/skill/mining, initial(mineralType.mine_experience) * mineralAmt * exp_multiplier) + if (mineral_type && (mineral_amt > 0)) + H.mind.adjust_experience(/datum/skill/mining, initial(mineral_type.mine_experience) * mineral_amt * exp_multiplier) else H.mind.adjust_experience(/datum/skill/mining, 4 * exp_multiplier) for(var/obj/effect/temp_visual/mining_overlay/M in src) qdel(M) + var/flags = NONE var/old_type = type if(defer_change) // TODO: make the defer change var a var for any changeturf flag @@ -237,15 +292,24 @@ playsound(src, 'sound/effects/break_stone.ogg', 50, TRUE) //beautiful destruction mined.update_visuals() +/// When the turf gets drilled from an AOE explosion +/// Has a chance of not being drilled based on own hardness +/turf/closed/mineral/proc/drill_aoe(mob/user, exp_multiplier = 0) + var/speed_change = /turf/closed/mineral::tool_mine_speed / tool_mine_speed + // Probability scaling isn't linear to still mine somewhat reliably in dense rocks + // Rocks with ores always get broken by AOE + if (speed_change >= 1 || mineral_type || spawned_boulder || prob(100 * (1 - (1 - sqrt(speed_change)) * 1.5))) + return gets_drilled(user, exp_multiplier) + /turf/closed/mineral/attack_alien(mob/living/carbon/alien/user, list/modifiers) balloon_alert(user, "digging...") playsound(src, 'sound/effects/break_stone.ogg', 50, TRUE) - if(do_after(user, 4 SECONDS, target = src)) + if(do_after(user, tool_mine_speed, target = src)) gets_drilled(user) /turf/closed/mineral/attack_hulk(mob/living/carbon/human/H) ..() - if(do_after(H, 5 SECONDS, target = src)) + if(do_after(H, tool_mine_speed * 1.25, target = src)) playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE) H.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk") gets_drilled(H) @@ -259,27 +323,69 @@ if(target == src) gets_drilled() return TRUE + + var/hardness = /turf/closed/mineral::tool_mine_speed / tool_mine_speed switch(severity) if(EXPLODE_DEVASTATE) gets_drilled() if(EXPLODE_HEAVY) - if(prob(90)) + if(prob(90 * hardness)) gets_drilled() if(EXPLODE_LIGHT) - if(prob(75)) + if(prob(75 * hardness)) gets_drilled() return TRUE /turf/closed/mineral/blob_act(obj/structure/blob/B) - if(prob(50)) + if(prob(50 * /turf/closed/mineral::tool_mine_speed / tool_mine_speed)) gets_drilled() +/proc/calculate_rock_edges() + var/cardinals = GLOB.cardinals.Copy() // i'm sorry + for(var/mining_z in SSmapping.levels_by_trait(ZTRAIT_MINING)) + var/list/adjacent_minerals = list() + for(var/turf/open/open_turf in Z_TURFS(mining_z)) + for (var/neighbour_dir in cardinals) + var/turf/neighbour = get_step(open_turf, neighbour_dir) + if (!ismineralturf(neighbour)) + continue + + var/turf/closed/mineral/rock = neighbour + if(rock.open_turf_distance != DEFAULT_BORDER_DISTANCE) + continue + + rock.open_turf_distance = 1 + adjacent_minerals |= rock + CHECK_TICK + + var/index = 1 + while(index <= length(adjacent_minerals)) + var/turf/closed/mineral/rock = adjacent_minerals[index] + index += 1 + for (var/neighbour_dir in cardinals) + var/turf/neighbour = get_step(rock, neighbour_dir) + if (!ismineralturf(neighbour)) + continue + + var/turf/closed/mineral/rock_neighbour = neighbour + // Don't need to check if we're closer because we're doing BFS fill + if(rock_neighbour.open_turf_distance == DEFAULT_BORDER_DISTANCE) + rock_neighbour.open_turf_distance = rock.open_turf_distance + 1 + adjacent_minerals += rock_neighbour + CHECK_TICK + /turf/closed/mineral/random /// What are the base odds that this turf spawns a mineral in the wall on initialize? - var/mineralChance = 13 - /// Does this mineral determine its random chance and mineral contents based on proximity to a vent? Overrides mineralChance and mineralAmt. - var/proximity_based = FALSE + var/mineral_chance = 7 + /// Does this turf's chance of spawning ore increase with distance to open air? + var/exposure_based = FALSE + /// Chance of spawning a specific mineral per type, cached for speed + var/static/list/mineral_chances_by_type = list() + /// Chance of spawning a specific mineral per type per depth + var/static/list/mineral_chances_by_depth = list() + /// Sum of ore spawn probabilities per type per depth + var/static/list/spawn_chances_by_depth = list() /// Returns a list of the chances for minerals to spawn. /// Will only run once, and will then be cached. @@ -287,62 +393,124 @@ return list( /obj/item/stack/ore/bananium = check_holidays(APRIL_FOOLS) ? 3 : 0, /obj/item/stack/ore/bluespace_crystal = 1, - /obj/item/stack/ore/diamond = 1, - /obj/item/stack/ore/gold = 10, - /obj/item/stack/ore/iron = 40, - /obj/item/stack/ore/plasma = 20, - /obj/item/stack/ore/silver = 12, - /obj/item/stack/ore/titanium = 11, + /obj/item/stack/ore/diamond = 2, + /obj/item/stack/ore/gold = 8, + /obj/item/stack/ore/iron = 18, // Iron and plasma are this low due to how much they spread into veins + /obj/item/stack/ore/plasma = 12, + /obj/item/stack/ore/silver = 8, + /obj/item/stack/ore/titanium = 8, /obj/item/stack/ore/uranium = 5, /turf/closed/mineral/gibtonite = 4, ) /turf/closed/mineral/random/Initialize(mapload) - var/static/list/mineral_chances_by_type = list() - . = ..() - var/dynamic_prob = mineralChance - var/ore_amount = rand(1,5) - if(proximity_based) - dynamic_prob = proximity_ore_chance() // We assign the chance of ore spawning based on probability. - ore_amount = scale_ore_to_vent() - if (prob(dynamic_prob)) - var/list/spawn_chance_list = mineral_chances_by_type[type] - if (isnull(spawn_chance_list)) - mineral_chances_by_type[type] = expand_weights(mineral_chances()) - spawn_chance_list = mineral_chances_by_type[type] - var/path = pick(spawn_chance_list) - if(ispath(path, /turf)) - var/stored_flags = 0 - if(turf_flags & NO_RUINS) - stored_flags |= NO_RUINS - var/turf/T = ChangeTurf(path,null,CHANGETURF_IGNORE_AIR) - T.flags_1 |= stored_flags + if (exposure_based) + SSore_generation.ore_turfs += src + return - if(ismineralturf(T)) - var/turf/closed/mineral/M = T - M.turf_type = src.turf_type - M.mineralAmt = ore_amount - GLOB.post_ore_random["[M.mineralAmt]"] += 1 - src = M - M.levelupdate() - else - src = T - T.levelupdate() + var/list/spawn_chance_list = mineral_chances_by_type[type] + if (isnull(spawn_chance_list)) + mineral_chances_by_type[type] = expand_weights(mineral_chances()) + spawn_chance_list = mineral_chances_by_type[type] - else - Change_Ore(path, FALSE) - Spread_Vein(path) - mineralAmt = ore_amount - GLOB.post_ore_manual["[mineralAmt]"] += 1 + if (prob(mineral_chance)) + spawn_ore(pick(spawn_chance_list)) - if(mineralType && !mineralAmt) - stack_trace("Mineral turf with mineralAmt being zero initialized at [src.x], [src.y], [src.z] ([get_area(src)])") +/turf/closed/mineral/random/proc/randomize_ore() +#ifdef TESTING + if (open_turf_distance == -1) + color = COLOR_BLUE + else + color = BlendRGB(COLOR_GREEN, COLOR_RED, clamp((open_turf_distance - 1) / 5, 0, 0.99)) + maptext_x = 4 + maptext_y = 4 + maptext = MAPTEXT_TINY_UNICODE("[open_turf_distance]") +#endif + + var/list/spawn_type_list = mineral_chances_by_depth[type] + if (isnull(spawn_type_list)) + spawn_type_list = list() + mineral_chances_by_depth[type] = spawn_type_list + + var/list/ore_depth_chances = spawn_chances_by_depth[type] + if (isnull(ore_depth_chances)) + ore_depth_chances = list() + spawn_chances_by_depth[type] = ore_depth_chances + + var/list/spawn_chance_list = spawn_type_list["[open_turf_distance]"] + var/ore_depth_chance = ore_depth_chances["[open_turf_distance]"] + if (isnull(spawn_chance_list)) + spawn_chance_list = mineral_chances() + var/total_spawn_sum = 0 + var/base_spawn_sum = 0 + var/lowest_factor = 1 + for (var/obj/item/stack/ore/ore_type as anything in spawn_chance_list) + if (!spawn_chance_list[ore_type]) + continue + base_spawn_sum += spawn_chance_list[ore_type] + if (!ispath(ore_type, /obj/item/stack/ore)) + total_spawn_sum += spawn_chance_list[ore_type] + continue + + var/depth_factor = 1 / (1 + abs(ore_type::vein_distance - open_turf_distance)) + lowest_factor = clamp(ceil(1 / (spawn_chance_list[ore_type] * depth_factor)), lowest_factor, ORE_CHANCE_PRECISION) + spawn_chance_list[ore_type] *= depth_factor + total_spawn_sum += spawn_chance_list[ore_type] + + for (var/obj/item/stack/ore/ore_type as anything in spawn_chance_list) + spawn_chance_list[ore_type] = floor(spawn_chance_list[ore_type] * lowest_factor) + + ore_depth_chance = mineral_chance * total_spawn_sum / base_spawn_sum + + LAZYSET(SSore_generation.ore_spread_probabilities[type], "[open_turf_distance]", spawn_chance_list.Copy() + list("chance" = ore_depth_chance, "count" = 0)) + + spawn_chance_list = expand_weights(spawn_chance_list) + + spawn_type_list["[open_turf_distance]"] = spawn_chance_list + ore_depth_chances["[open_turf_distance]"] = ore_depth_chance + + SSore_generation.ore_spread_probabilities[type]["[open_turf_distance]"]["count"] += 1 + if (prob(ore_depth_chance)) + spawn_ore(pick(spawn_chance_list)) + +/turf/closed/mineral/random/proc/spawn_ore(ore_path) + if (!SSore_generation.ores_generated[ore_path]) + SSore_generation.ores_generated[ore_path] = 0 + SSore_generation.ores_generated[ore_path] += 1 + + if(!ispath(ore_path, /turf)) + change_ore(ore_path) + if (!ispath(ore_path, /obj/item/stack/ore)) + return + var/obj/item/stack/ore/ore_type = ore_path + if (prob(ore_type::spread_chance)) + spread_vein(ore_path) + return + + var/stored_flags = 0 + if(turf_flags & NO_RUINS) + stored_flags |= NO_RUINS + var/turf/new_turf = ChangeTurf(ore_path, null, CHANGETURF_IGNORE_AIR) + new_turf.flags_1 |= stored_flags + + if(ismineralturf(new_turf)) + src = new_turf + new_turf.levelupdate() + return + + var/turf/closed/mineral/new_rock = new_turf + new_rock.turf_type = src.turf_type + src = new_rock + new_rock.levelupdate() + + if(mineral_type && !mineral_amt) + stack_trace("Mineral turf with mineral_amt being zero initialized at [src.x], [src.y], [src.z] ([get_area(src)])") /turf/closed/mineral/random/high_chance icon_state = "rock_highchance" - mineralChance = 25 - proximity_based = FALSE + mineral_chance = 14 + exposure_based = FALSE /turf/closed/mineral/random/high_chance/mineral_chances() return list( @@ -356,11 +524,12 @@ ) /turf/closed/mineral/random/high_chance/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS defer_change = TRUE - proximity_based = FALSE + exposure_based = FALSE /turf/closed/mineral/random/high_chance/volcanic/mineral_chances() return list( @@ -375,15 +544,15 @@ /turf/closed/mineral/random/low_chance icon_state = "rock_lowchance" - mineralChance = 6 + mineral_chance = 2 /turf/closed/mineral/random/low_chance/mineral_chances() return list( /obj/item/stack/ore/bluespace_crystal = 1, /obj/item/stack/ore/diamond = 1, /obj/item/stack/ore/gold = 4, - /obj/item/stack/ore/iron = 40, - /obj/item/stack/ore/plasma = 15, + /obj/item/stack/ore/iron = 30, + /obj/item/stack/ore/plasma = 10, /obj/item/stack/ore/silver = 6, /obj/item/stack/ore/titanium = 4, /obj/item/stack/ore/uranium = 2, @@ -393,13 +562,13 @@ //extremely low chance of rare ores, meant mostly for populating stations with large amounts of asteroid /turf/closed/mineral/random/stationside icon_state = "rock_nochance" - mineralChance = 4 + mineral_chance = 1 /turf/closed/mineral/random/stationside/mineral_chances() return list( /obj/item/stack/ore/diamond = 1, /obj/item/stack/ore/gold = 3, - /obj/item/stack/ore/iron = 50, + /obj/item/stack/ore/iron = 30, /obj/item/stack/ore/plasma = 3, /obj/item/stack/ore/silver = 4, /obj/item/stack/ore/titanium = 5, @@ -407,24 +576,76 @@ ) /turf/closed/mineral/random/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS defer_change = TRUE - proximity_based = TRUE - mineralChance = 5 + exposure_based = TRUE + mineral_chance = 7 // N% functionally, 7.17% default, accounts for ~65% turfs /turf/closed/mineral/random/volcanic/mineral_chances() return list( /obj/item/stack/ore/bluespace_crystal = 1, - /obj/item/stack/ore/diamond = 1, - /obj/item/stack/ore/gold = 10, - /obj/item/stack/ore/iron = 40, - /obj/item/stack/ore/plasma = 20, - /obj/item/stack/ore/silver = 12, + /obj/item/stack/ore/diamond = 2, + /obj/item/stack/ore/gold = 8, + /obj/item/stack/ore/iron = 16, + /obj/item/stack/ore/plasma = 10, + /obj/item/stack/ore/silver = 8, /obj/item/stack/ore/titanium = 11, - /obj/item/stack/ore/uranium = 5, - /turf/closed/mineral/gibtonite/volcanic = 4, + /obj/item/stack/ore/uranium = 7, + /turf/closed/mineral/gibtonite/volcanic = 2, + ) + +/turf/closed/mineral/random/volcanic/red_rock + name = "siderite" + icon = MAP_SWITCH('icons/turf/walls/red_rock.dmi', 'icons/turf/mining.dmi') + icon_state = "red_rock" + base_icon_state = "red_rock" + transform = MAP_SWITCH(TRANSLATE_MATRIX(-8, -8), matrix()) + smoothing_groups = SMOOTH_GROUP_CLOSED_TURFS + SMOOTH_GROUP_RED_ROCK_WALLS + canSmoothWith = SMOOTH_GROUP_RED_ROCK_WALLS + tool_mine_speed = 5 SECONDS // 25% harder than basalt + hand_mine_speed = 17 SECONDS + mineral_chance = 8 // N% functionally, 6.67% default, accounts for ~22% turfs + +/turf/closed/mineral/random/volcanic/red_rock/mineral_chances() + return list( + // Cannot spawn these two + // /obj/item/stack/ore/bluespace_crystal = 0, + // /obj/item/stack/ore/diamond = 0, + /obj/item/stack/ore/gold = 2, + /obj/item/stack/ore/iron = 32, // Iron and plasma are this low due to how much they spread into veins + /obj/item/stack/ore/plasma = 6, + /obj/item/stack/ore/silver = 14, + /obj/item/stack/ore/titanium = 25, + /obj/item/stack/ore/uranium = 3, + /turf/closed/mineral/gibtonite/volcanic/red_rock = 1, + ) + +/turf/closed/mineral/random/volcanic/shale + name = "shale" + icon = MAP_SWITCH('icons/turf/walls/shale.dmi', 'icons/turf/mining.dmi') + icon_state = "shale" + base_icon_state = "shale" + transform = MAP_SWITCH(TRANSLATE_MATRIX(-8, -8), matrix()) + smoothing_groups = SMOOTH_GROUP_CLOSED_TURFS + SMOOTH_GROUP_SHALE_WALLS + canSmoothWith = SMOOTH_GROUP_SHALE_WALLS + tool_mine_speed = 7 SECONDS // 75% harder than basalt + hand_mine_speed = 20 SECONDS + mineral_chance = 8 // N% functionally, 7.01% default, accounts for ~13% turfs + +/turf/closed/mineral/random/volcanic/shale/mineral_chances() + return list( + /obj/item/stack/ore/bluespace_crystal = 1.5, + /obj/item/stack/ore/diamond = 3, + /obj/item/stack/ore/gold = 12, + /obj/item/stack/ore/iron = 10, // Iron and plasma are this low due to how much they spread into veins + /obj/item/stack/ore/plasma = 28, + /obj/item/stack/ore/silver = 4, + /obj/item/stack/ore/titanium = 8, + /obj/item/stack/ore/uranium = 14, + /turf/closed/mineral/gibtonite/volcanic/shale = 3, ) /turf/closed/mineral/random/snow @@ -439,11 +660,11 @@ baseturfs = /turf/open/misc/asteroid/snow/icemoon initial_gas_mix = ICEMOON_DEFAULT_ATMOS weak_turf = TRUE - proximity_based = TRUE + exposure_based = TRUE -/turf/closed/mineral/random/snow/Change_Ore(ore_type, random = 0) +/turf/closed/mineral/random/snow/change_ore(ore_type, random = TRUE) . = ..() - if(mineralType) + if(mineral_type) icon = 'icons/turf/walls/icerock_wall.dmi' icon_state = "icerock_wall-0" base_icon_state = "icerock_wall" @@ -452,11 +673,11 @@ /turf/closed/mineral/random/snow/mineral_chances() return list( /obj/item/stack/ore/bluespace_crystal = 1, - /obj/item/stack/ore/diamond = 1, - /obj/item/stack/ore/gold = 10, - /obj/item/stack/ore/iron = 40, - /obj/item/stack/ore/plasma = 20, - /obj/item/stack/ore/silver = 12, + /obj/item/stack/ore/diamond = 2, + /obj/item/stack/ore/gold = 8, + /obj/item/stack/ore/iron = 22, + /obj/item/stack/ore/plasma = 12, + /obj/item/stack/ore/silver = 8, /obj/item/stack/ore/titanium = 11, /obj/item/stack/ore/uranium = 5, /turf/closed/mineral/gibtonite/ice/icemoon = 4, @@ -471,7 +692,7 @@ /turf/closed/mineral/random/snow/underground baseturfs = /turf/open/misc/asteroid/snow/icemoon // abundant ore - mineralChance = 20 + mineral_chance = 11 /turf/closed/mineral/random/snow/underground/mineral_chances() return list( @@ -479,8 +700,8 @@ /obj/item/stack/ore/bluespace_crystal = 2, /obj/item/stack/ore/diamond = 4, /obj/item/stack/ore/gold = 20, - /obj/item/stack/ore/iron = 20, - /obj/item/stack/ore/plasma = 20, + /obj/item/stack/ore/iron = 10, // Iron and plasma are this low due to how much they spread into veins, + /obj/item/stack/ore/plasma = 14, /obj/item/stack/ore/silver = 24, /obj/item/stack/ore/titanium = 22, /obj/item/stack/ore/uranium = 10, @@ -488,7 +709,7 @@ ) /turf/closed/mineral/random/snow/high_chance - proximity_based = FALSE + exposure_based = FALSE /turf/closed/mineral/random/snow/high_chance/mineral_chances() return list( @@ -511,6 +732,7 @@ ) /turf/closed/mineral/random/labormineral/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS @@ -542,19 +764,20 @@ /turf/closed/mineral/gibtonite/ice/icemoon = 2, ) -/turf/closed/mineral/random/labormineral/ice/Change_Ore(ore_type, random = 0) +/turf/closed/mineral/random/labormineral/ice/change_ore(ore_type, random = TRUE) . = ..() - if(mineralType) + if(mineral_type) icon = 'icons/turf/walls/icerock_wall.dmi' icon_state = "icerock_wall-0" base_icon_state = "icerock_wall" smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER /turf/closed/mineral/iron - mineralType = /obj/item/stack/ore/iron + mineral_type = /obj/item/stack/ore/iron scan_state = "rock_iron" /turf/closed/mineral/iron/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS @@ -571,20 +794,22 @@ defer_change = TRUE /turf/closed/mineral/uranium - mineralType = /obj/item/stack/ore/uranium + mineral_type = /obj/item/stack/ore/uranium scan_state = "rock_uranium" /turf/closed/mineral/uranium/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS defer_change = TRUE /turf/closed/mineral/diamond - mineralType = /obj/item/stack/ore/diamond + mineral_type = /obj/item/stack/ore/diamond scan_state = "rock_diamond" /turf/closed/mineral/diamond/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS @@ -601,20 +826,22 @@ defer_change = TRUE /turf/closed/mineral/gold - mineralType = /obj/item/stack/ore/gold + mineral_type = /obj/item/stack/ore/gold scan_state = "rock_gold" /turf/closed/mineral/gold/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS defer_change = TRUE /turf/closed/mineral/silver - mineralType = /obj/item/stack/ore/silver + mineral_type = /obj/item/stack/ore/silver scan_state = "rock_silver" /turf/closed/mineral/silver/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS @@ -626,20 +853,22 @@ initial_gas_mix = ICEMOON_DEFAULT_ATMOS /turf/closed/mineral/titanium - mineralType = /obj/item/stack/ore/titanium + mineral_type = /obj/item/stack/ore/titanium scan_state = "rock_titanium" /turf/closed/mineral/titanium/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS defer_change = TRUE /turf/closed/mineral/plasma - mineralType = /obj/item/stack/ore/plasma + mineral_type = /obj/item/stack/ore/plasma scan_state = "rock_plasma" /turf/closed/mineral/plasma/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS @@ -656,22 +885,24 @@ defer_change = TRUE /turf/closed/mineral/bananium - mineralType = /obj/item/stack/ore/bananium - mineralAmt = 3 + mineral_type = /obj/item/stack/ore/bananium + mineral_amt = 3 scan_state = "rock_bananium" /turf/closed/mineral/bananium/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS defer_change = TRUE /turf/closed/mineral/bscrystal - mineralType = /obj/item/stack/ore/bluespace_crystal - mineralAmt = 1 + mineral_type = /obj/item/stack/ore/bluespace_crystal + mineral_amt = 1 scan_state = "rock_bscrystal" /turf/closed/mineral/bscrystal/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS @@ -688,11 +919,40 @@ initial_gas_mix = AIRLESS_ATMOS /turf/closed/mineral/volcanic/lava_land_surface + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface defer_change = TRUE -/turf/closed/mineral/ash_rock //wall piece +/// Rock type which replaces itself with whichever rock would've been generated by the biome underneath +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace + icon = 'icons/turf/mining.dmi' + icon_state = "volcanic_biome" + smoothing_flags = NONE + +/turf/closed/mineral/volcanic/lava_land_surface/biome_replace/Initialize(mapload) + . = ..() + var/area/cur_area = loc + if (!cur_area) // what + return + + // Just spawn a normal lavaland rock if we fail to get a mapgen, such as being spawned over lava + var/supposed_type = /turf/closed/mineral/volcanic/lava_land_surface + var/datum/map_generator/cave_generator/map_generator = cur_area.get_generator() + if (istype(map_generator)) + for (var/datum/biome/biome as anything in map_generator.generated_turfs_per_biome) + var/list/gen_turfs = map_generator.generated_turfs_per_biome[biome] + if (gen_turfs[src]) + // Ignore what we were supposed to spawn as in favor of the closed turf + supposed_type = biome.closed_turf_type + break + + var/turf/new_turf = new supposed_type(src) + if(turf_flags & NO_RUINS) + new_turf.turf_flags |= NO_RUINS + +/// Wall piece +/turf/closed/mineral/ash_rock name = "rock" icon = 'icons/turf/mining.dmi' icon = MAP_SWITCH('icons/turf/walls/rock_wall.dmi', 'icons/turf/mining.dmi') @@ -753,14 +1013,22 @@ /turf/closed/mineral/asteroid name = "iron rock" - icon_state = "redrock" - icon = MAP_SWITCH('icons/turf/walls/red_wall.dmi', 'icons/turf/mining.dmi') - base_icon_state = "red_wall" + icon = MAP_SWITCH('icons/turf/walls/red_rock.dmi', 'icons/turf/mining.dmi') + icon_state = "red_rock" + base_icon_state = "red_rock" + layer = EDGED_TURF_LOWER_LAYER + transform = MAP_SWITCH(TRANSLATE_MATRIX(-8, -8), matrix()) + smoothing_groups = SMOOTH_GROUP_CLOSED_TURFS + SMOOTH_GROUP_RED_ROCK_WALLS + canSmoothWith = SMOOTH_GROUP_RED_ROCK_WALLS /turf/closed/mineral/random/stationside/asteroid name = "iron rock" - icon = MAP_SWITCH('icons/turf/walls/red_wall.dmi', 'icons/turf/mining.dmi') - base_icon_state = "red_wall" + icon = MAP_SWITCH('icons/turf/walls/red_rock.dmi', 'icons/turf/mining.dmi') + icon_state = "red_rock" + base_icon_state = "red_rock" + transform = MAP_SWITCH(TRANSLATE_MATRIX(-8, -8), matrix()) + smoothing_groups = SMOOTH_GROUP_CLOSED_TURFS + SMOOTH_GROUP_RED_ROCK_WALLS + canSmoothWith = SMOOTH_GROUP_RED_ROCK_WALLS /turf/closed/mineral/random/stationside/asteroid/porus name = "porous iron rock" @@ -775,7 +1043,7 @@ //GIBTONITE /turf/closed/mineral/gibtonite - mineralAmt = 1 + mineral_amt = 1 MAP_SWITCH(, icon_state = "rock_Gibtonite_inactive") scan_state = "rock_gibtonite" var/det_time = 8 //Countdown till explosion, but also rewards the player for how close you were to detonation when you defuse it @@ -803,60 +1071,68 @@ user.visible_message(span_danger("[user] hit gibtonite with [attacking_item.name], launching [user.p_them()] back!"), span_danger("You've struck gibtonite! Your [attacking_item.name] launched you back!")) /turf/closed/mineral/gibtonite/proc/explosive_reaction(mob/user = null) - if(stage == GIBTONITE_UNSTRUCK) - activated_overlay = mutable_appearance('icons/turf/smoothrocks_overlays.dmi', "rock_Gibtonite_inactive", ON_EDGED_TURF_LAYER) //shows in gaps between pulses if there are any - add_overlay(activated_overlay) - name = "gibtonite deposit" - desc = "An active gibtonite reserve. Run!" - stage = GIBTONITE_ACTIVE - visible_message(span_danger("There's gibtonite inside! It's going to explode!")) + if(stage != GIBTONITE_UNSTRUCK) + return - var/notify_admins = !is_mining_level(z) + activated_overlay = mutable_appearance('icons/turf/smoothrocks_overlays.dmi', "rock_Gibtonite_inactive", ON_EDGED_TURF_LAYER) //shows in gaps between pulses if there are any + activated_overlay.pixel_x = 2 + activated_overlay.pixel_y = 2 + add_overlay(activated_overlay) + name = "gibtonite deposit" + desc = "An active gibtonite reserve. Run!" + stage = GIBTONITE_ACTIVE + visible_message(span_danger("There's gibtonite inside! It's going to explode!")) - if(user) - log_bomber(user, "has triggered a gibtonite deposit reaction via", src, null, notify_admins) - else - log_bomber(null, "An explosion has triggered a gibtonite deposit reaction via", src, null, notify_admins) + var/notify_admins = !is_mining_level(z) - countdown(notify_admins) + if(user) + log_bomber(user, "has triggered a gibtonite deposit reaction via", src, null, notify_admins) + else + log_bomber(null, "An explosion has triggered a gibtonite deposit reaction via", src, null, notify_admins) + + countdown(notify_admins) /turf/closed/mineral/gibtonite/proc/countdown(notify_admins = FALSE) set waitfor = FALSE - while(istype(src, /turf/closed/mineral/gibtonite) && stage == GIBTONITE_ACTIVE && det_time > 0 && mineralAmt >= 1) - flick_overlay_view(mutable_appearance('icons/turf/smoothrocks_overlays.dmi', "rock_Gibtonite_active", ON_EDGED_TURF_LAYER + 0.1), 0.5 SECONDS) //makes the animation pulse one time per tick + while(istype(src, /turf/closed/mineral/gibtonite) && stage == GIBTONITE_ACTIVE && det_time > 0 && mineral_amt >= 1) + var/mutable_appearance/boom_overlay = mutable_appearance('icons/turf/smoothrocks_overlays.dmi', "rock_Gibtonite_active", ON_EDGED_TURF_LAYER + 0.1) + boom_overlay.pixel_x = 2 + boom_overlay.pixel_y = 2 + flick_overlay_view(boom_overlay, 0.5 SECONDS) //makes the animation pulse one time per tick det_time-- sleep(0.5 SECONDS) if(istype(src, /turf/closed/mineral/gibtonite)) - if(stage == GIBTONITE_ACTIVE && det_time <= 0 && mineralAmt >= 1) + if(stage == GIBTONITE_ACTIVE && det_time <= 0 && mineral_amt >= 1) var/turf/bombturf = get_turf(src) - mineralAmt = 0 + mineral_amt = 0 stage = GIBTONITE_DETONATE explosion(bombturf, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 5, flame_range = 0, flash_range = 0, adminlog = notify_admins, explosion_cause = src) /turf/closed/mineral/gibtonite/proc/defuse(mob/living/defuser) - if(stage == GIBTONITE_ACTIVE) - cut_overlay(activated_overlay) - activated_overlay.icon_state = "rock_Gibtonite_inactive" - add_overlay(activated_overlay) - desc = "An inactive gibtonite reserve. The ore can be extracted." - stage = GIBTONITE_STABLE - if(det_time < 0) - det_time = 0 - visible_message(span_notice("The chain reaction stopped! The gibtonite had [det_time] reactions left till the explosion!")) - if(defuser) - SEND_SIGNAL(defuser, COMSIG_LIVING_DEFUSED_GIBTONITE, det_time) + if(stage != GIBTONITE_ACTIVE) + return + cut_overlay(activated_overlay) + activated_overlay.icon_state = "rock_Gibtonite_inactive" + add_overlay(activated_overlay) + desc = "An inactive gibtonite reserve. The ore can be extracted." + stage = GIBTONITE_STABLE + if(det_time < 0) + det_time = 0 + visible_message(span_notice("The chain reaction stopped! The gibtonite had [det_time] reactions left till the explosion!")) + if(defuser) + SEND_SIGNAL(defuser, COMSIG_LIVING_DEFUSED_GIBTONITE, det_time) /turf/closed/mineral/gibtonite/gets_drilled(mob/user, exp_multiplier = 0, triggered_by_explosion = FALSE) if(istype(user)) SEND_SIGNAL(user, COMSIG_MOB_MINED, src, exp_multiplier) - if(stage == GIBTONITE_UNSTRUCK && mineralAmt >= 1) //Gibtonite deposit is activated + if(stage == GIBTONITE_UNSTRUCK && mineral_amt >= 1) //Gibtonite deposit is activated playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,TRUE) explosive_reaction(user) return - if(stage == GIBTONITE_ACTIVE && mineralAmt >= 1) //Gibtonite deposit goes kaboom + if(stage == GIBTONITE_ACTIVE && mineral_amt >= 1) //Gibtonite deposit goes kaboom var/turf/bombturf = get_turf(src) - mineralAmt = 0 + mineral_amt = 0 stage = GIBTONITE_DETONATE explosion(bombturf, devastation_range = 1, heavy_impact_range = 2, light_impact_range = 5, flame_range = 0, flash_range = 0, adminlog = FALSE, explosion_cause = src) if(stage == GIBTONITE_STABLE) //Gibtonite deposit is now benign and extractable. Depending on how close you were to it blowing up before defusing, you get better quality ore. @@ -877,11 +1153,34 @@ mined.update_visuals() /turf/closed/mineral/gibtonite/volcanic + name = "basalt" turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface initial_gas_mix = LAVALAND_DEFAULT_ATMOS defer_change = TRUE +/turf/closed/mineral/gibtonite/volcanic/red_rock + name = "siderite" + icon = MAP_SWITCH('icons/turf/walls/red_rock.dmi', 'icons/turf/mining.dmi') + icon_state = "red_rock" + base_icon_state = "red_rock" + transform = MAP_SWITCH(TRANSLATE_MATRIX(-8, -8), matrix()) + smoothing_groups = SMOOTH_GROUP_CLOSED_TURFS + SMOOTH_GROUP_RED_ROCK_WALLS + canSmoothWith = SMOOTH_GROUP_RED_ROCK_WALLS + tool_mine_speed = 5 SECONDS // 25% harder than basalt + hand_mine_speed = 17 SECONDS + +/turf/closed/mineral/gibtonite/volcanic/shale + name = "shale" + icon = MAP_SWITCH('icons/turf/walls/shale.dmi', 'icons/turf/mining.dmi') + icon_state = "shale" + base_icon_state = "shale" + transform = MAP_SWITCH(TRANSLATE_MATRIX(-8, -8), matrix()) + smoothing_groups = SMOOTH_GROUP_CLOSED_TURFS + SMOOTH_GROUP_SHALE_WALLS + canSmoothWith = SMOOTH_GROUP_SHALE_WALLS + tool_mine_speed = 7 SECONDS // 75% harder than basalt + hand_mine_speed = 20 SECONDS + /turf/closed/mineral/gibtonite/volcanic/airless turf_type = /turf/open/misc/asteroid/basalt baseturfs = /turf/open/misc/asteroid/basalt @@ -903,7 +1202,7 @@ initial_gas_mix = ICEMOON_DEFAULT_ATMOS /turf/closed/mineral/strong - name = "Very strong rock" + name = "very strong rock" desc = "Seems to be stronger than the other rocks in the area. Only a master of mining techniques could destroy this." turf_type = /turf/open/misc/asteroid/basalt/lava_land_surface baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface @@ -957,3 +1256,4 @@ return FALSE #undef MINING_MESSAGE_COOLDOWN +#undef DEFAULT_BORDER_DISTANCE diff --git a/code/game/turfs/open/openspace.dm b/code/game/turfs/open/openspace.dm index f72423d1432..68c60752d4e 100644 --- a/code/game/turfs/open/openspace.dm +++ b/code/game/turfs/open/openspace.dm @@ -191,7 +191,7 @@ if(!ismineralturf(T) || !drill_below) return var/turf/closed/mineral/M = T - M.mineralAmt = 0 + M.mineral_amt = 0 M.gets_drilled() baseturfs = /turf/open/openspace/icemoon //This is to ensure that IF random turf generation produces a openturf, there won't be other turfs assigned other than openspace. diff --git a/code/game/turfs/open/river.dm b/code/game/turfs/open/river.dm index 2540699c586..07450383bef 100644 --- a/code/game/turfs/open/river.dm +++ b/code/game/turfs/open/river.dm @@ -5,7 +5,6 @@ #define RANDOM_LOWER_Y 50 /proc/spawn_rivers(target_z, nodes, turf_type, whitelist_area, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y) - var/list/river_nodes = list() var/num_spawned = 0 var/width = max_x - min_x var/height = max_y - min_y @@ -16,19 +15,19 @@ var/area/A = get_area(T) if(!istype(A, whitelist_area) || (T.turf_flags & NO_LAVA_GEN)) possible_locs -= T - else - river_nodes += new /obj/effect/landmark/river_waypoint(T) - num_spawned++ + continue + new /obj/effect/landmark/river_waypoint(T) + num_spawned++ //make some randomly pathing rivers - for(var/obj/effect/landmark/river_waypoint/waypoints as anything in river_nodes) + for(var/obj/effect/landmark/river_waypoint/waypoints as anything in GLOB.river_waypoint_list["[target_z]"]) if (waypoints.z != target_z || waypoints.connected) continue waypoints.connected = TRUE // Workaround around ChangeTurf that's safe because of when this proc is called var/turf/cur_turf = get_turf(waypoints) cur_turf = new turf_type(cur_turf) - var/turf/target_turf = get_turf(pick(river_nodes - waypoints)) + var/turf/target_turf = get_turf(pick(GLOB.river_waypoint_list["[target_z]"] - waypoints)) if(!target_turf) break var/detouring = FALSE @@ -55,20 +54,28 @@ cur_dir = get_dir(cur_turf, target_turf) cur_turf = get_step(cur_turf, cur_dir) continue - else - // Workaround around ChangeTurf that's safe because of when this proc is called - var/turf/river_turf = new turf_type(cur_turf) - river_turf.Spread(25, 11, whitelist_area) - for(var/waypoints_spawned in river_nodes) - qdel(waypoints_spawned) + // Workaround around ChangeTurf that's safe because of when this proc is called + var/turf/river_turf = new turf_type(cur_turf) + river_turf.Spread(25, 11, whitelist_area) + for(var/obj/effect/landmark/river_waypoint/waypoint as anything in GLOB.river_waypoint_list["[target_z]"]) + qdel(waypoint) + + GLOB.river_waypoint_list -= "[target_z]" /obj/effect/landmark/river_waypoint name = "river waypoint" var/connected = FALSE invisibility = INVISIBILITY_ABSTRACT +/obj/effect/landmark/river_waypoint/Initialize(mapload) + . = ..() + LAZYADD(GLOB.river_waypoint_list["[z]"], src) + +/obj/effect/landmark/river_waypoint/Destroy() + LAZYREMOVE(GLOB.river_waypoint_list["[z]"], src) + return ..() /turf/proc/Spread(probability = 30, prob_loss = 25, whitelisted_area) if(probability <= 0) diff --git a/code/game/turfs/open/water.dm b/code/game/turfs/open/water.dm index 35678cc45ad..ecf75011189 100644 --- a/code/game/turfs/open/water.dm +++ b/code/game/turfs/open/water.dm @@ -138,6 +138,20 @@ /turf/open/water/lavaland_atmos initial_gas_mix = LAVALAND_DEFAULT_ATMOS +/turf/open/water/lavaland_atmos/basalt + icon = 'icons/turf/floors/water_lavaland.dmi' + icon_state = "water_lavaland-255" + base_icon_state = "water_lavaland" + smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER + smoothing_groups = SMOOTH_GROUP_TURF_OPEN + SMOOTH_GROUP_FLOOR_WATER_LAVALAND + canSmoothWith = SMOOTH_GROUP_FLOOR_WATER_LAVALAND + fishing_datum = /datum/fish_source/ocean + +/turf/open/water/lavaland_atmos/basalt/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) + underlay_appearance.icon = /turf/open/misc/asteroid/basalt::icon + underlay_appearance.icon_state = /turf/open/misc/asteroid/basalt::icon_state + return TRUE + /turf/open/water/beach/tizira desc = "Shallow water. It somehow reminds you of lizardfolk." icon_state = "tizira_water" diff --git a/code/modules/bitrunning/objects/disks.dm b/code/modules/bitrunning/objects/disks.dm index fbbca9ab8e8..d206f6e96a9 100644 --- a/code/modules/bitrunning/objects/disks.dm +++ b/code/modules/bitrunning/objects/disks.dm @@ -186,7 +186,7 @@ /obj/item/borg/upgrade/modkit/range, /obj/item/borg/upgrade/modkit/damage, /obj/item/borg/upgrade/modkit/cooldown, - /obj/item/borg/upgrade/modkit/aoe/mobs, + /obj/item/borg/upgrade/modkit/cooldown/aoe/mobs, /obj/item/borg/upgrade/modkit/human_passthrough, ) diff --git a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm index 733cd8330bc..cb9bb33a92f 100644 --- a/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/mapfluff/ruins/objects_and_mobs/necropolis_gate.dm @@ -264,7 +264,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) var/static/list/give_turf_traits if(!give_turf_traits) - give_turf_traits = string_list(list(TRAIT_LAVA_STOPPED, TRAIT_CHASM_STOPPED, TRAIT_IMMERSE_STOPPED)) + give_turf_traits = string_list(list(TRAIT_TURF_IGNORE_SLOWDOWN, TRAIT_LAVA_STOPPED, TRAIT_CHASM_STOPPED, TRAIT_IMMERSE_STOPPED)) AddElement(/datum/element/give_turf_traits, give_turf_traits) /obj/structure/stone_tile/singularity_pull(atom/singularity, current_size) diff --git a/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm b/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm index 9b6b6561aff..16290710871 100644 --- a/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm +++ b/code/modules/mining/equipment/kinetic_crusher/trophies_fauna.dm @@ -179,7 +179,7 @@ /obj/item/crusher_trophy/bileworm_spewlet/on_projectile_hit_mineral(turf/closed/mineral, mob/living/user) for(var/turf/closed/mineral/mineral_turf in RANGE_TURFS(1, mineral) - mineral) - mineral_turf.gets_drilled(user, 1) + mineral_turf.drill_aoe(user, 0.2) //yes this is a /mob_cooldown subtype being added to an item. I can't recommend you do what I'm doing /datum/action/cooldown/mob_cooldown/projectile_attack/dir_shots/spewlet diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index 8d763fd2f67..93b0a26a3df 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -27,10 +27,10 @@ /obj/item/mining_scanner/admin /obj/item/mining_scanner/admin/attack_self(mob/user) - for(var/turf/closed/mineral/mineral_turf in world) - if(mineral_turf.scan_state) - mineral_turf.icon = mineral_turf.scan_icon - mineral_turf.icon_state = mineral_turf.scan_state + for(var/turf/closed/mineral/rock in world) + if(rock.scan_state) + var/mutable_appearance/rock_overlay = mutable_appearance(rock.scan_icon, rock.scan_state, FLASH_LAYER, rock, ABOVE_LIGHTING_PLANE, appearance_flags = RESET_TRANSFORM) + rock.add_overlay(rock_overlay) qdel(src) /obj/item/t_scanner/adv_mining_scanner @@ -86,19 +86,8 @@ vent.add_mineral_overlays() for(var/turf/closed/mineral/mineral in RANGE_TURFS(range, start_turf)) - if(!mineral.scan_state) - continue - - var/obj/effect/temp_visual/mining_overlay/scan_overlay = locate(/obj/effect/temp_visual/mining_overlay) in mineral - if(!scan_overlay) - scan_overlay = new(mineral) - scan_overlay.icon = mineral.scan_icon - scan_overlay.icon_state = mineral.scan_state - continue - - deltimer(scan_overlay.timerid) - scan_overlay.timerid = QDEL_IN_STOPPABLE(scan_overlay, scan_overlay.duration) - animate(scan_overlay, alpha = 0, time = scan_overlay.duration, easing = scan_overlay.easing_style) + if(mineral.scan_state) + mineral.flash_scan() if(vents_nearby && scanner) if(undiscovered) @@ -111,7 +100,8 @@ /obj/effect/temp_visual/mining_overlay plane = HIGH_GAME_PLANE layer = FLASH_LAYER - icon = 'icons/effects/ore_visuals.dmi' + icon = 'icons/blanks/480x480.dmi' + icon_state = "nothing" appearance_flags = NONE // to avoid having TILE_BOUND in the flags, so that the 480x480 icon states let you see it no matter where you are duration = 3.5 SECONDS pixel_x = -224 diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 3b8d40d66d6..5857738adfc 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -10,16 +10,29 @@ full_w_class = WEIGHT_CLASS_BULKY singular_name = "ore chunk" material_flags = MATERIAL_EFFECTS - var/points = 0 //How many points this ore gets you from the ore redemption machine - var/refined_type = null //What this ore defaults to being refined into - var/mine_experience = 5 //How much experience do you get for mining this ore? novariants = TRUE // Ore stacks handle their icon updates themselves to keep the illusion that there's more going - var/list/stack_overlays - var/scan_state = "" //Used by mineral turfs for their scan overlay. - var/spreadChance = 0 //Also used by mineral turfs for spreading veins drop_sound = SFX_STONE_DROP pickup_sound = SFX_STONE_PICKUP sound_vary = TRUE + /// How many points this ore gets you from the ore redemption machine + var/points = 0 + /// What this ore defaults to being refined into + var/refined_type = null + /// How much experience do you get for mining this ore? + var/mine_experience = 5 + var/list/stack_overlays + /// Used by mineral turfs for their scan overlay. + var/scan_state = "" + /// Chance that we'll spawn as a vein rather than a sole tile + var/spread_chance = 0 + /// Type of ore vein we spawn, cluster/scatter/plain/branching + var/vein_type = ORE_VEIN_CLUSTER + /// Optimal distance from open turfs for us to spawn, 1 is next to an open tile + var/vein_distance = 1 + /// Minimum distance that a vein can span, radius for cluster/scatter, maximum length for plain/branching + var/min_vein_size = 1 + /// Minimum distance that a vein can span, radius for cluster/scatter, maximum length for plain/branching + var/max_vein_size = 2 /obj/item/stack/ore/update_overlays() . = ..() @@ -52,29 +65,29 @@ return isnull(refined_type) ? null : src /obj/item/stack/ore/welder_act(mob/living/user, obj/item/I) - ..() + . = ..() if(!refined_type) return TRUE - if(I.use_tool(src, user, 0, volume=50)) - new refined_type(drop_location()) - use(1) + if(!I.use_tool(src, user, 0, volume = 50)) + return TRUE + var/sheets_made = values_sum(mats_per_unit) / SHEET_MATERIAL_AMOUNT + new refined_type(drop_location(), max(1, floor(sheets_made))) + use(max(1, ceil(1 / sheets_made))) return TRUE /obj/item/stack/ore/fire_act(exposed_temperature, exposed_volume) . = ..() if(isnull(refined_type)) return - else - var/probability = (rand(0,100))/100 - var/burn_value = probability*amount - var/amountrefined = round(burn_value, 1) - if(amountrefined < 1) - qdel(src) - else - new refined_type(drop_location(),amountrefined) - qdel(src) + + var/probability = rand(0, 100) / 100 + var/burn_value = probability * amount + var/amount_refined = floor(burn_value * values_sum(mats_per_unit) / SHEET_MATERIAL_AMOUNT) + if(amount_refined > 1) + new refined_type(drop_location(), amount_refined) + qdel(src) /obj/item/stack/ore/uranium name = "uranium ore" @@ -82,24 +95,30 @@ singular_name = "uranium ore chunk" points = 30 material_flags = NONE - mats_per_unit = list(/datum/material/uranium=SHEET_MATERIAL_AMOUNT) + mats_per_unit = list(/datum/material/uranium = SHEET_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/uranium mine_experience = 6 scan_state = "rock_uranium" - spreadChance = 5 + spread_chance = 35 merge_type = /obj/item/stack/ore/uranium + vein_type = ORE_VEIN_PLAIN + vein_distance = 3 + min_vein_size = 1 + max_vein_size = 3 /obj/item/stack/ore/iron name = "iron ore" icon_state = "iron" singular_name = "iron ore chunk" points = 1 - mats_per_unit = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT) + mats_per_unit = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/iron mine_experience = 1 scan_state = "rock_iron" - spreadChance = 20 + spread_chance = 65 merge_type = /obj/item/stack/ore/iron + min_vein_size = 1 + max_vein_size = 3 /obj/item/stack/ore/glass name = "sand pile" @@ -142,7 +161,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ C.visible_message(span_danger("[C]'s eye protection blocks the sand!"), span_warning("Your eye protection blocks the sand!")) return C.adjust_eye_blur(12 SECONDS) - C.adjust_stamina_loss(15)//the pain from your eyes burning does stamina damage + C.adjust_stamina_loss(15) //the pain from your eyes burning does stamina damage C.adjust_confusion(5 SECONDS) to_chat(C, span_userdanger("\The [src] gets into your eyes! The pain, it burns!")) qdel(src) @@ -151,7 +170,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ if(severity) qdel(src) return TRUE - return FALSE /obj/item/stack/ore/glass/thirty @@ -169,12 +187,15 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "plasma" singular_name = "plasma ore chunk" points = 15 - mats_per_unit = list(/datum/material/plasma=SHEET_MATERIAL_AMOUNT) + mats_per_unit = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/plasma mine_experience = 5 scan_state = "rock_plasma" - spreadChance = 8 + spread_chance = 45 merge_type = /obj/item/stack/ore/plasma + vein_type = ORE_VEIN_PLAIN + min_vein_size = 2 + max_vein_size = 4 /obj/item/stack/ore/plasma/welder_act(mob/living/user, obj/item/I) to_chat(user, span_warning("You can't hit a high enough temperature to smelt [src] properly!")) @@ -186,11 +207,14 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ singular_name = "silver ore chunk" points = 16 mine_experience = 3 - mats_per_unit = list(/datum/material/silver=SHEET_MATERIAL_AMOUNT) + mats_per_unit = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/silver scan_state = "rock_silver" - spreadChance = 5 + spread_chance = 35 merge_type = /obj/item/stack/ore/silver + vein_type = ORE_VEIN_BRANCH + min_vein_size = 0 + max_vein_size = 2 /obj/item/stack/ore/gold name = "gold ore" @@ -198,22 +222,31 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ singular_name = "gold ore chunk" points = 18 mine_experience = 5 - mats_per_unit = list(/datum/material/gold=SHEET_MATERIAL_AMOUNT) + mats_per_unit = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/gold scan_state = "rock_gold" - spreadChance = 5 + spread_chance = 35 merge_type = /obj/item/stack/ore/gold + vein_type = ORE_VEIN_BRANCH + vein_distance = 2 + min_vein_size = 0 + max_vein_size = 2 /obj/item/stack/ore/diamond name = "diamond ore" icon_state = "diamond" singular_name = "diamond ore chunk" points = 50 - mats_per_unit = list(/datum/material/diamond=SHEET_MATERIAL_AMOUNT) + mats_per_unit = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/diamond mine_experience = 10 scan_state = "rock_diamond" merge_type = /obj/item/stack/ore/diamond + vein_type = ORE_VEIN_SCATTER + spread_chance = 20 + vein_distance = 4 + min_vein_size = 1 + max_vein_size = 2 /obj/item/stack/ore/diamond/Initialize(mapload) . = ..() @@ -227,23 +260,30 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "bananium" singular_name = "bananium ore chunk" points = 60 - mats_per_unit = list(/datum/material/bananium=SHEET_MATERIAL_AMOUNT) + mats_per_unit = list(/datum/material/bananium = SHEET_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/bananium mine_experience = 15 scan_state = "rock_bananium" merge_type = /obj/item/stack/ore/bananium + vein_type = ORE_VEIN_PLAIN + spread_chance = 20 + vein_distance = 4 + min_vein_size = 1 + max_vein_size = 2 /obj/item/stack/ore/titanium name = "titanium ore" icon_state = "titanium" singular_name = "titanium ore chunk" points = 50 - mats_per_unit = list(/datum/material/titanium=SHEET_MATERIAL_AMOUNT) + mats_per_unit = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/titanium mine_experience = 3 scan_state = "rock_titanium" - spreadChance = 5 + spread_chance = 35 merge_type = /obj/item/stack/ore/titanium + min_vein_size = 1 + max_vein_size = 2 /obj/item/stack/ore/slag name = "slag" diff --git a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm index b20f29364bd..b43f2149893 100644 --- a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm +++ b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub.dm @@ -13,8 +13,8 @@ mob_biotypes = MOB_ORGANIC|MOB_BUG|MOB_MINING friendly_verb_continuous = "harmlessly rolls into" friendly_verb_simple = "harmlessly roll into" - maxHealth = 45 - health = 45 + maxHealth = 175 + health = 175 melee_damage_lower = 0 melee_damage_upper = 0 attack_verb_continuous = "barrels into" @@ -49,16 +49,26 @@ else can_lay_eggs = FALSE - var/list/food_types = string_list(list(/obj/item/stack/ore)) + // Rarer ores heal us a bit depending on the rarity + var/static/list/food_types = list( + /obj/item/stack/ore = 0, + /obj/item/stack/ore/gold = 5, + /obj/item/stack/ore/uranium = 5, + /obj/item/stack/ore/diamond = 15, + /obj/item/stack/ore/bluespace_crystal = 20, + /obj/item/stack/ore/bananium = 30, + ) + var/static/list/innate_actions = list( /datum/action/cooldown/mob_cooldown/spit_ore = BB_SPIT_ABILITY, /datum/action/cooldown/mob_cooldown/burrow = BB_BURROW_ABILITY, ) + grant_actions_by_list(innate_actions) AddElement(/datum/element/ore_collecting) AddElement(/datum/element/basic_eating, food_types = food_types, add_to_contents = TRUE) - AddElement(/datum/element/wall_tearer, allow_reinforced = FALSE) + AddComponent(/datum/component/proficient_miner, 0.05, TRUE) // Speedy boi AddComponent(/datum/component/ai_listen_to_weather) AddComponent(\ /datum/component/appearance_on_aggro,\ @@ -81,10 +91,10 @@ SIGNAL_HANDLER if(stat != CONSCIOUS) - return COMPONENT_BULLET_PIERCED + return NONE - /// High penetration bullets should still go through. No goldgrub can save you from the colossus' death bolts. - if(prob(hitting_projectile.armour_penetration)) + /// Reflects PKA/PKC shots and plasma cutter beams, unless they have high armor penetration + if(prob(hitting_projectile.armour_penetration) || (hitting_projectile.armor_flag != BOMB && hitting_projectile.armor_flag != ENERGY)) return NONE visible_message(span_danger("[hitting_projectile] is repelled by [source]'s girth!")) diff --git a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub_abilities.dm b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub_abilities.dm index fe8c8096e2c..f1fcd44ddd4 100644 --- a/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub_abilities.dm +++ b/code/modules/mob/living/basic/lavaland/goldgrub/goldgrub_abilities.dm @@ -44,9 +44,9 @@ /datum/action/cooldown/mob_cooldown/burrow/Activate() var/obj/effect/dummy/phased_mob/grub_burrow/holder = null var/turf/current_loc = get_turf(owner) + var/mob/living/grub = owner - if(!do_after(owner, 3 SECONDS, target = current_loc)) - owner.balloon_alert(owner, "need to stay still!") + if(!do_after(owner, 2.5 SECONDS, target = current_loc, extra_checks = CALLBACK(src, PROC_REF(health_check), grub.health))) return if(get_turf(owner) != current_loc) @@ -72,6 +72,10 @@ StartCooldown() return TRUE +/datum/action/cooldown/mob_cooldown/burrow/proc/health_check(health) + var/mob/living/grub = owner + return grub.health >= health + /obj/effect/dummy/phased_mob/grub_burrow /obj/effect/dummy/phased_mob/grub_burrow/phased_check(mob/living/user, direction) diff --git a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm index fdcb0707cd8..82f8c484bcd 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm @@ -71,7 +71,7 @@ GLOBAL_LIST_EMPTY(raptor_population) /obj/item/food/meat/slab/xeno = -15, /obj/item/food/meat/steak = 50, /obj/item/food/grown/ash_flora = 10, - /obj/item/fish = 15, + /obj/item/fish = 25, /obj/item/organ = 25, ) /// Inheritance datum we store our genetic data in diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index 0ebd99635ae..51a89d29e90 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -194,7 +194,7 @@ if (!istype(giberal_turf) || giberal_turf.stage != GIBTONITE_UNSTRUCK) last_bumpmine_tick = world.time var/turf/closed/mineral/rock = bumped_into - INVOKE_ASYNC(rock, TYPE_PROC_REF(/atom, attackby), src, bumper, null, null, exp_multiplier) + INVOKE_ASYNC(src, PROC_REF(mine_rock), rock, bumper) return if (!COOLDOWN_FINISHED(src, gibtonite_warning_cd)) @@ -204,12 +204,21 @@ playsound(bumper, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) to_chat(bumper, span_warning("[icon2html(src, bumper)] Unstable gibtonite ore deposit detected!")) +/obj/item/mod/module/drill/proc/mine_rock(turf/closed/mineral/rock, mob/living/carbon/human/bumper) + // Even faster if it has ore! + var/has_ore = !isnull(rock.mineral_type) + if (has_ore) + toolspeed /= 1.5 + rock.attackby(src, bumper, null, null, exp_multiplier) + if (has_ore) + toolspeed *= 1.5 + /obj/item/mod/module/drill/proc/on_module_activated(datum/source, obj/item/mod/module/module) SIGNAL_HANDLER if (!istype(module, /obj/item/mod/module/sphere_transform)) return - // In sphere mode we get instamine and halved power drain - toolspeed = 0 + // In sphere mode we get faster mining and halved power drain + toolspeed = 0.075 use_energy_cost *= 0.5 exp_multiplier *= 0.2 if (!active) @@ -750,8 +759,12 @@ /obj/structure/mining_bomb/proc/boom(atom/movable/firer) visible_message(span_danger("[src] explodes!")) playsound(src, 'sound/effects/magic/magic_missile.ogg', 200, vary = TRUE) - for(var/turf/closed/mineral/rock in circle_range_turfs(src, 1)) - rock.gets_drilled() + var/turf/our_turf = get_turf(src) + for(var/turf/closed/mineral/rock in RANGE_TURFS(1, src)) + if (rock == our_turf) + rock.gets_drilled(firer, 0) + else + rock.drill_aoe(firer, 0) for(var/mob/living/victim in range(1, src)) if(HAS_TRAIT(victim, TRAIT_MINING_AOE_IMMUNE)) continue diff --git a/code/modules/procedural_mapping/mapGenerators/lava_river.dm b/code/modules/procedural_mapping/mapGenerators/lava_river.dm index 59e430e1791..f1ab90ddf0a 100644 --- a/code/modules/procedural_mapping/mapGenerators/lava_river.dm +++ b/code/modules/procedural_mapping/mapGenerators/lava_river.dm @@ -18,7 +18,7 @@ /datum/map_generator_module/river var/river_type = /turf/open/lava/smooth - var/river_nodes = 4 + var/river_nodes = 3 // +1 from mapped-in one near the base /datum/map_generator_module/river/generate() var/datum/map_generator/lavaland/L = mother diff --git a/code/modules/projectiles/ammunition/energy/plasma.dm b/code/modules/projectiles/ammunition/energy/plasma.dm index 840244a3d67..ccc0c1c3157 100644 --- a/code/modules/projectiles/ammunition/energy/plasma.dm +++ b/code/modules/projectiles/ammunition/energy/plasma.dm @@ -2,11 +2,11 @@ projectile_type = /obj/projectile/plasma select_name = "plasma burst" fire_sound = 'sound/items/weapons/plasma_cutter.ogg' - delay = 15 - e_cost = LASER_SHOTS(40, STANDARD_CELL_CHARGE) + delay = 12 + e_cost = LASER_SHOTS(30, STANDARD_CELL_CHARGE) /obj/item/ammo_casing/energy/plasma/adv projectile_type = /obj/projectile/plasma/adv - delay = 10 - e_cost = LASER_SHOTS(100, STANDARD_CELL_CHARGE) + delay = 8 + e_cost = LASER_SHOTS(75, STANDARD_CELL_CHARGE) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 35793594c59..80d9aa26d84 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -270,7 +270,7 @@ new /obj/effect/temp_visual/explosion/fast(get_turf(target)) for(var/turf/closed/mineral/mineral_turf in RANGE_TURFS(2, target) - target) - mineral_turf.gets_drilled(firer, 0.1) + mineral_turf.drill_aoe(firer, 0.1) for(var/mob/living/living_mob in range(2, target) - firer - target) if(!ismining(living_mob)) @@ -401,7 +401,6 @@ // Recalculate recharge time after adding or removing cooldown mods. /obj/item/borg/upgrade/modkit/cooldown/proc/get_recharge_time(obj/item/gun/energy/recharge/kinetic_accelerator/KA) - var/new_recharge_time = initial(KA.recharge_time) for(var/obj/item/borg/upgrade/modkit/modkit_upgrade as anything in KA.modkits) if(istype(modkit_upgrade, src)) @@ -409,18 +408,15 @@ return new_recharge_time - /obj/item/borg/upgrade/modkit/cooldown/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user) . = ..() if(.) KA.recharge_time = get_recharge_time(KA) - /obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA) ..() KA.recharge_time = get_recharge_time(KA) - /obj/item/borg/upgrade/modkit/cooldown/minebot name = "minebot cooldown decrease" desc = "Decreases the cooldown of a kinetic accelerator. Only rated for minebot use." @@ -432,73 +428,84 @@ minebot_upgrade = TRUE minebot_exclusive = TRUE - -//AoE blasts -/obj/item/borg/upgrade/modkit/aoe +// AoE blasts +// These are a subtype of cooldown so they can affect firing speed +/obj/item/borg/upgrade/modkit/cooldown/aoe modifier = 0 cost = 10 - denied_type = /obj/item/borg/upgrade/modkit/aoe + denied_type = /obj/item/borg/upgrade/modkit/cooldown/aoe maximum_of_type = 1 + /// Does the AOE mine turfs? var/turf_aoe = FALSE + /// Have we taken another kit's AOE? var/stats_stolen = FALSE + /// Multiplier for mob damage + var/damage_modifier = 0 -/obj/item/borg/upgrade/modkit/aoe/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user) +/obj/item/borg/upgrade/modkit/cooldown/aoe/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user) . = ..() - if(.) - for(var/obj/item/borg/upgrade/modkit/aoe/AOE in KA.modkits) //make sure only one of the aoe modules has values if somebody has multiple - if(AOE.stats_stolen || AOE == src) - continue - modifier += AOE.modifier //take its modifiers - AOE.modifier = 0 - turf_aoe += AOE.turf_aoe - AOE.turf_aoe = FALSE - AOE.stats_stolen = TRUE + if(!.) + return + for(var/obj/item/borg/upgrade/modkit/cooldown/aoe/AOE in KA.modkits) //make sure only one of the aoe modules has values if somebody has multiple + if(AOE.stats_stolen || AOE == src) + continue + modifier += AOE.modifier //take its modifiers + damage_modifier += AOE.damage_modifier + AOE.modifier = 0 + AOE.damage_modifier = 0 + turf_aoe += AOE.turf_aoe + AOE.turf_aoe = FALSE + AOE.stats_stolen = TRUE -/obj/item/borg/upgrade/modkit/aoe/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/cooldown/aoe/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA) ..() modifier = initial(modifier) //get our modifiers back + damage_modifier = initial(damage_modifier) turf_aoe = initial(turf_aoe) stats_stolen = FALSE -/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/projectile/kinetic/K) +/obj/item/borg/upgrade/modkit/cooldown/aoe/modify_projectile(obj/projectile/kinetic/K) K.name = "kinetic explosion" -/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/kinetic_blast, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/cooldown/aoe/projectile_strike(obj/projectile/kinetic/kinetic_blast, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) if(stats_stolen) return new /obj/effect/temp_visual/explosion/fast(target_turf) if(turf_aoe) - for(var/T in RANGE_TURFS(2, target_turf) - target_turf) + for(var/T in RANGE_TURFS(1, target_turf) - target_turf) if(ismineralturf(T)) var/turf/closed/mineral/M = T M.gets_drilled(kinetic_blast.firer, 0.1) - if(modifier) - for(var/mob/living/living_mob in range(2, target) - kinetic_blast.firer - target) + if(!damage_modifier) + return - if(!ismining(living_mob)) - continue + for(var/mob/living/living_mob in range(1, target) - kinetic_blast.firer - target) + if(!ismining(living_mob)) + continue + var/armor = living_mob.run_armor_check(kinetic_blast.def_zone, kinetic_blast.armor_flag, armour_penetration = kinetic_blast.armour_penetration) + living_mob.apply_damage(kinetic_blast.damage * damage_modifier, kinetic_blast.damage_type, kinetic_blast.def_zone, armor) + to_chat(living_mob, span_userdanger("You're struck by a [kinetic_blast.name]!")) - var/armor = living_mob.run_armor_check(kinetic_blast.def_zone, kinetic_blast.armor_flag, armour_penetration = kinetic_blast.armour_penetration) - living_mob.apply_damage(kinetic_blast.damage*modifier, kinetic_blast.damage_type, kinetic_blast.def_zone, armor) - to_chat(living_mob, span_userdanger("You're struck by a [kinetic_blast.name]!")) - -/obj/item/borg/upgrade/modkit/aoe/turfs +/obj/item/borg/upgrade/modkit/cooldown/aoe/turfs name = "mining explosion" desc = "Causes the kinetic accelerator to destroy rock in an AoE." turf_aoe = TRUE + // Negates one CD modifier + modifier = -/obj/item/borg/upgrade/modkit/cooldown::modifier -/obj/item/borg/upgrade/modkit/aoe/mobs +/obj/item/borg/upgrade/modkit/cooldown/aoe/mobs name = "offensive explosion" desc = "Causes the kinetic accelerator to damage mobs in an AoE." - modifier = 1 + damage_modifier = 1 -/obj/item/borg/upgrade/modkit/aoe/mobs/andturfs +/obj/item/borg/upgrade/modkit/cooldown/aoe/mobs/andturfs name = "offensive mining explosion" desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE." turf_aoe = TRUE + modifier = -1 // Slightly better than normal turf AOE as its a rare find -//Minebot passthrough +// Minebot passthrough /obj/item/borg/upgrade/modkit/minebot_passthrough name = "minebot passthrough" desc = "Causes kinetic accelerator shots to pass through minebots." diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index a47d417bce2..3ebfa61db27 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -117,29 +117,40 @@ if(cell) . += span_notice("[src] is [round(cell.percent())]% charged.") -/obj/item/gun/energy/plasmacutter/attackby(obj/item/I, mob/user) - var/charge_multiplier = 0 //2 = Refined stack, 1 = Ore - if(istype(I, /obj/item/stack/sheet/mineral/plasma)) +/obj/item/gun/energy/plasmacutter/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + var/charge_multiplier = 0 + if(istype(tool, /obj/item/stack/sheet/mineral/plasma)) charge_multiplier = 2 - if(istype(I, /obj/item/stack/ore/plasma)) + else if(istype(tool, /obj/item/stack/ore/plasma)) charge_multiplier = 1 - if(charge_multiplier) - if(cell.charge == cell.maxcharge) - balloon_alert(user, "already fully charged!") - return - I.use(1) - cell.give(0.5 * STANDARD_CELL_CHARGE * charge_multiplier) - balloon_alert(user, "cell recharged") - else - ..() + + if(!charge_multiplier) + return NONE + + if(cell.charge == cell.maxcharge) + balloon_alert(user, "already fully charged!") + return ITEM_INTERACT_BLOCKING + + var/obj/item/stack/sheet = tool + if (sheet.use(1)) + return ITEM_INTERACT_BLOCKING + + cell.give(0.2 * STANDARD_CELL_CHARGE * charge_multiplier) + balloon_alert(user, "cell recharged") + return ITEM_INTERACT_SUCCESS /obj/item/gun/energy/plasmacutter/emp_act(severity) . = ..() - if(isliving(loc)) - var/mob/living/user = loc - user.visible_message(span_danger("Concentrated plasma discharges from [src] onto [user], burning them!"), span_userdanger("[src] malfunctions, spewing concentrated plasma onto you! It burns!")) - user.adjust_fire_stacks(4) - user.ignite_mob() + if(. & EMP_PROTECT_CONTENTS) + return + + if(!isliving(loc)) + return + + var/mob/living/user = loc + user.visible_message(span_danger("Concentrated plasma discharges from [src] onto [user], burning them!"), span_userdanger("[src] malfunctions, spewing concentrated plasma onto you! It burns!")) + user.adjust_fire_stacks(4) + user.ignite_mob() // Can we weld? Plasma cutter does not use charge continuously. // Amount cannot be defaulted to 1: most of the code specifies 0 in the call. @@ -163,16 +174,15 @@ return (!QDELETED(cell) && cell.use(used ? used * PLASMA_CUTTER_CHARGE_WELD : PLASMA_CUTTER_CHARGE_WELD)) /obj/item/gun/energy/plasmacutter/use_tool(atom/target, mob/living/user, delay, amount=1, volume=0, datum/callback/extra_checks) + if(!amount) + return ..(amount = 1) - if(amount) - var/mutable_appearance/sparks = mutable_appearance('icons/effects/welding_effect.dmi', "welding_sparks", GASFIRE_LAYER, src, ABOVE_LIGHTING_PLANE) - target.add_overlay(sparks) - LAZYADD(update_overlays_on_z, sparks) - . = ..() - LAZYREMOVE(update_overlays_on_z, sparks) - target.cut_overlay(sparks) - else - . = ..(amount=1) + var/mutable_appearance/sparks = mutable_appearance('icons/effects/welding_effect.dmi', "welding_sparks", GASFIRE_LAYER, src, ABOVE_LIGHTING_PLANE) + target.add_overlay(sparks) + LAZYADD(update_overlays_on_z, sparks) + . = ..() + LAZYREMOVE(update_overlays_on_z, sparks) + target.cut_overlay(sparks) /obj/item/gun/energy/plasmacutter/try_fire_gun(atom/target, mob/living/user, params) return fire_gun(target, user, user.Adjacent(target) && !isturf(target), params) diff --git a/code/modules/projectiles/projectile/special/plasma.dm b/code/modules/projectiles/projectile/special/plasma.dm index adba89e4d88..e3dede48404 100644 --- a/code/modules/projectiles/projectile/special/plasma.dm +++ b/code/modules/projectiles/projectile/special/plasma.dm @@ -2,35 +2,39 @@ name = "plasma blast" icon_state = "plasmacutter" damage_type = BURN + armor_flag = ENERGY damage = 5 - range = 4 + range = 3 dismemberment = 20 impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser - var/mine_range = 3 //mines this many additional tiles of rock tracer_type = /obj/effect/projectile/tracer/plasma_cutter muzzle_type = /obj/effect/projectile/muzzle/plasma_cutter impact_type = /obj/effect/projectile/impact/plasma_cutter + // Mines this many additional tiles of rock, halved if not mining ore + var/mine_range = 4 /obj/projectile/plasma/on_hit(atom/target, blocked = 0, pierce_hit) . = ..() - if(ismineralturf(target)) - var/turf/closed/mineral/M = target - M.gets_drilled(firer) - if(mine_range) - mine_range-- - range++ - if(range > 0) - return BULLET_ACT_FORCE_PIERCE + if (!ismineralturf(target)) + return + var/turf/closed/mineral/rock = target + if (mine_range) + mine_range -= 1 + // Harder rocks give less extra range + range += /turf/closed/mineral::tool_mine_speed / rock.tool_mine_speed * (isnull(rock.mineral_type) ? 0.5 : 1) + rock.gets_drilled(firer) + if (range > 0) + return BULLET_ACT_FORCE_PIERCE /obj/projectile/plasma/adv damage = 7 - range = 5 - mine_range = 5 + range = 4 + mine_range = 6 /obj/projectile/plasma/adv/mech damage = 10 - range = 9 - mine_range = 3 + range = 7 + mine_range = 4 /obj/projectile/plasma/turret //Between normal and advanced for damage, made a beam so not the turret does not destroy glass diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index c2570e56eff..ff40afbc56e 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -226,7 +226,7 @@ /datum/material/gold =SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/borg/upgrade/modkit/aoe/turfs + build_path = /obj/item/borg/upgrade/modkit/cooldown/aoe/turfs category = list( RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PKA_MODS ) @@ -267,7 +267,7 @@ desc = "A device which causes kinetic accelerators to fire AoE blasts that destroy rock and damage creatures." id = "hyperaoemod" materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*3.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*1.5, /datum/material/silver =SHEET_MATERIAL_AMOUNT*1.5, /datum/material/gold =SHEET_MATERIAL_AMOUNT*1.5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT*2) - build_path = /obj/item/borg/upgrade/modkit/aoe/mobs/andturfs + build_path = /obj/item/borg/upgrade/modkit/cooldown/aoe/mobs/andturfs /datum/design/unique_modkit/rapid_repeater name = "Kinetic Accelerator Rapid Repeater Mod" diff --git a/icons/blanks/480x480.dmi b/icons/blanks/480x480.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3f006394a1510bb7581c471f07817a97aa54e8bf GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|=jLbk0cPX7~K#DoQC&cx@fdgsY`%-{h#*!ev zU)e_1!5cyi zE*d|0q;uX!^CUx|PQ#p@D`&p+2x+X}p|Vj$^hDUH)A}b*obe8S^vLI=juu;&L{Z@~ zQPpS5oNk=rT34r+u$Xa8qjZ6g<&7smON~8U978JRygg{h2;?1F@YO$;M}7g2i4#;v X6(uk*R`P9(04ecw^>bP0l+XkK=LAzB literal 0 HcmV?d00001 diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi index d7ee50ebe8d8f0e2a384a0e9e04cec6c73cd1ecb..1a6984cdd90d29d1ecb42716cdee77dd19891307 100644 GIT binary patch literal 26956 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�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 Dwu7HD diff --git a/icons/effects/ore_visuals.dmi b/icons/effects/ore_visuals.dmi index a27dbc30a3b95f7c946ab5786b91ac21082c55cc..855186d7ad9db3546eb76954d8c9e9c8556d7f59 100644 GIT binary patch literal 5305 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 literal 44267 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 literal 0 HcmV?d00001 diff --git a/icons/turf/walls/red_rock.png b/icons/turf/walls/red_rock.png new file mode 100644 index 0000000000000000000000000000000000000000..38432c09431699e079b01336354f5de3f0951046 GIT binary patch literal 2716 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 P)=hw!iIp+l&@K8uh}>}J literal 0 HcmV?d00001 diff --git a/icons/turf/walls/red_rock.png.toml b/icons/turf/walls/red_rock.png.toml new file mode 100644 index 00000000000..dff64064068 --- /dev/null +++ b/icons/turf/walls/red_rock.png.toml @@ -0,0 +1,14 @@ +output_name = "red_rock" +template = "bitmask/diagonal_32x32.toml" + +[icon_size] +x = 48 +y = 48 + +[output_icon_size] +x = 48 +y = 48 + +[cut_pos] +x = 24 +y = 24 diff --git a/icons/turf/walls/red_wall.dmi b/icons/turf/walls/red_wall.dmi deleted file mode 100644 index 8dc959f36cb3357d19d9a854f4535094cbae629d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16894 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 diff --git a/icons/turf/walls/red_wall.png b/icons/turf/walls/red_wall.png deleted file mode 100644 index 312386a53777aa9b2eea56b1a0cb9363f2ba468e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9365 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 RJMnOTW=7YqlwER({2!>9K9B$a literal 12605 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 XUNgKMpiKKe1f8j&<*jo4=WqWD))3lg diff --git a/icons/turf/walls/reinforced_rock.png b/icons/turf/walls/reinforced_rock.png index 544a877ec1a5a2745458d2efc1abff28a0eb866c..3fac4157f2d8ba54d57e2d4d90dbc10c47ee0960 100644 GIT binary patch delta 2904 zcmV-e3#ashKi(FQBYyw^b5ch_0Itp)=>Px=7)eAyRCt`_oK17vHX48*QlA!0S+*71 zvB!-xli5i<+sn5=rNtQ`L7A29`0|^qK75srw(*^<#NeJE+dL zZ2kQo&R}aRWq(&iMAMDSTUGn(;nvfqPi3ps;^N{0-}7+mbpTu;jKsd<7{6U1sMTsr zCljX4Ccf_*ad+kQJ&(gefyR?3Y2)ksovV=cft6M;ZVYH2SgGRq5v#&|5#c&^+8BC% z*Rk1O*@j3Lj|)+kdu+qR5C>ZJ>VFg&+j>`h8B1 zkJI>YG>X&h>`*=RQeBs&fBV4Vx7%r2|LUxqhM!)_mGFU-m3F|FKmN!gA!)jj|K3iK zQA7m%$*CAUeqfKmvUv8@4gk;3d)dPX0t%%qd=U}46Wkym0v_(fo%)Rk0I+SFhu?i? zbU>Z2kAD8`xum|Mjg;*S9!#EVgcM0eJRk7l0Q(znkOu)hbd- z>OnxURO0LQ1B3rY1Xz}Z?UfeteGySB`*@WK7VtP}U;W`NQ-5DX9Bc+eQG`>k8R4tq z>v8ET*sa&O8DDYI+<~Mp9jZM60A8NPBluZ+cYm%TP1mC9SD{qpo3=S)yb%E#wc4Bl zZoSUQ-po*D5x?tObp33GJxR*X8b$G~TzDKe5E%S8e#lAF0cr++KN&c>6x72gRnZsE zbFY_hF+YCY)%hkDe$sZ+U(3`#=2z#!SIdXJW}GkUfI=XoG~iv|N&!mtnsEj1T4?GO z$$vkTz2+ue-=gn0G_>%uvojjwG0!_g9y^tl@|C`NIm_g$fve)zonJUQI{JH~(cr`F zE!%!b=UNgT-%gs&JfoEQ r@`DSbrallHPAa@``P`lG96x>)7dTh-9&u&BD@H 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 diff --git a/icons/turf/walls/shale.dmi b/icons/turf/walls/shale.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8af895c3dbde0ba7e0260eab791636c7d3915454 GIT binary patch literal 12829 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 literal 0 HcmV?d00001 diff --git a/icons/turf/walls/red_wall.png.toml b/icons/turf/walls/shale.png.toml similarity index 56% rename from icons/turf/walls/red_wall.png.toml rename to icons/turf/walls/shale.png.toml index 917dc8ee377..2b6b33e54e2 100644 --- a/icons/turf/walls/red_wall.png.toml +++ b/icons/turf/walls/shale.png.toml @@ -1,14 +1,14 @@ -output_name = "red_wall" +output_name = "shale" template = "bitmask/diagonal_32x32.toml" [icon_size] -x = 40 -y = 40 +x = 48 +y = 48 [output_icon_size] -x = 40 -y = 40 +x = 48 +y = 48 [cut_pos] -x = 20 -y = 20 \ No newline at end of file +x = 24 +y = 24 diff --git a/tgstation.dme b/tgstation.dme index fb4aeb0367e..13f74d2cadb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1805,6 +1805,8 @@ #include "code\datums\mapgen\CaveGenerator.dm" #include "code\datums\mapgen\JungleGenerator.dm" #include "code\datums\mapgen\biomes\_biome.dm" +#include "code\datums\mapgen\biomes\jungle.dm" +#include "code\datums\mapgen\biomes\lavaland.dm" #include "code\datums\mapgen\Cavegens\IcemoonCaves.dm" #include "code\datums\mapgen\Cavegens\LavalandGenerator.dm" #include "code\datums\martial\_martial.dm" diff --git a/tools/UpdatePaths/Scripts/95682_pka_aoe.txt b/tools/UpdatePaths/Scripts/95682_pka_aoe.txt new file mode 100644 index 00000000000..11d08e70dc5 --- /dev/null +++ b/tools/UpdatePaths/Scripts/95682_pka_aoe.txt @@ -0,0 +1 @@ +/obj/item/borg/upgrade/modkit/aoe/@SUBTYPES : /obj/item/borg/upgrade/modkit/cooldown/aoe/@SUBTYPES{@OLD}