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 00000000000..3f006394a15 Binary files /dev/null and b/icons/blanks/480x480.dmi differ diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi index d7ee50ebe8d..1a6984cdd90 100644 Binary files a/icons/effects/mapping_helpers.dmi and b/icons/effects/mapping_helpers.dmi differ diff --git a/icons/effects/ore_visuals.dmi b/icons/effects/ore_visuals.dmi index a27dbc30a3b..855186d7ad9 100644 Binary files a/icons/effects/ore_visuals.dmi and b/icons/effects/ore_visuals.dmi differ diff --git a/icons/turf/floors/water_lavaland.dmi b/icons/turf/floors/water_lavaland.dmi new file mode 100644 index 00000000000..9e206b8e471 Binary files /dev/null and b/icons/turf/floors/water_lavaland.dmi differ diff --git a/icons/turf/floors/water_lavaland.png b/icons/turf/floors/water_lavaland.png new file mode 100644 index 00000000000..ee89d32d717 Binary files /dev/null and b/icons/turf/floors/water_lavaland.png differ diff --git a/icons/turf/floors/water_lavaland.png.toml b/icons/turf/floors/water_lavaland.png.toml new file mode 100644 index 00000000000..2b77ebfc7ec --- /dev/null +++ b/icons/turf/floors/water_lavaland.png.toml @@ -0,0 +1,2 @@ +output_name = "water_lavaland" +template = "bitmask/diagonal_32x32.toml" diff --git a/icons/turf/mining.dmi b/icons/turf/mining.dmi index 4138f08a6bf..5a3a5af61f3 100644 Binary files a/icons/turf/mining.dmi and b/icons/turf/mining.dmi differ diff --git a/icons/turf/walls/red_rock.dmi b/icons/turf/walls/red_rock.dmi new file mode 100644 index 00000000000..1496a01b4d6 Binary files /dev/null and b/icons/turf/walls/red_rock.dmi differ diff --git a/icons/turf/walls/red_rock.png b/icons/turf/walls/red_rock.png new file mode 100644 index 00000000000..38432c09431 Binary files /dev/null and b/icons/turf/walls/red_rock.png differ 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 8dc959f36cb..00000000000 Binary files a/icons/turf/walls/red_wall.dmi and /dev/null differ diff --git a/icons/turf/walls/red_wall.png b/icons/turf/walls/red_wall.png deleted file mode 100644 index 312386a5377..00000000000 Binary files a/icons/turf/walls/red_wall.png and /dev/null differ diff --git a/icons/turf/walls/reinforced_rock.dmi b/icons/turf/walls/reinforced_rock.dmi index e00e5148204..dcfeef557cd 100644 Binary files a/icons/turf/walls/reinforced_rock.dmi and b/icons/turf/walls/reinforced_rock.dmi differ diff --git a/icons/turf/walls/reinforced_rock.png b/icons/turf/walls/reinforced_rock.png index 544a877ec1a..3fac4157f2d 100644 Binary files a/icons/turf/walls/reinforced_rock.png and b/icons/turf/walls/reinforced_rock.png differ diff --git a/icons/turf/walls/shale.dmi b/icons/turf/walls/shale.dmi new file mode 100644 index 00000000000..8af895c3dbd Binary files /dev/null and b/icons/turf/walls/shale.dmi differ diff --git a/icons/turf/walls/shale.png b/icons/turf/walls/shale.png new file mode 100644 index 00000000000..05f3331b224 Binary files /dev/null and b/icons/turf/walls/shale.png differ 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}