diff --git a/.github/workflows/update_tgs_dmapi.yml b/.github/workflows/update_tgs_dmapi.yml new file mode 100644 index 0000000000..6fe53f700c --- /dev/null +++ b/.github/workflows/update_tgs_dmapi.yml @@ -0,0 +1,45 @@ +name: Update TGS DMAPI + +on: + schedule: + - cron: "0 0 * * *" + workflow_dispatch: + +jobs: + update-dmapi: + runs-on: ubuntu-latest + name: Update the TGS DMAPI + steps: + - name: Clone + uses: actions/checkout@v2 + + - name: Branch + run: | + git branch -f tgs-dmapi-update + git checkout tgs-dmapi-update + git reset --hard master + + - name: Apply DMAPI update + uses: tgstation/tgs-dmapi-updater@v2 + with: + header-path: 'code/__DEFINES/tgs.dm' + library-path: 'code/modules/tgs' + + - name: Commit and Push + run: | + git config user.name tgstation-server + git config user.email tgstation-server@users.noreply.github.com + git add . + git commit -m 'Update TGS DMAPI' + git push -f -u origin tgs-dmapi-update + + - name: Create Pull Request + uses: repo-sync/pull-request@v2 + with: + source_branch: "tgs-dmapi-update" + destination_branch: "master" + pr_title: "Automatic TGS DMAPI Update" + pr_body: "This pull request updates the TGS DMAPI to the latest version. Please note any breaking or unimplemented changes before merging." + pr_label: "Tools" + pr_allow_empty: false + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm index c95e0c7539..268c907445 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm @@ -17,10 +17,14 @@ /turf/open/floor/mineral/titanium, /area/ruin/powered) "ag" = ( -/obj/structure/shuttle/engine/propulsion/right{ - dir = 4 +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" }, -/turf/closed/wall/mineral/titanium, +/turf/open/floor/mineral/titanium, /area/ruin/powered) "ah" = ( /obj/structure/table/wood, @@ -70,20 +74,21 @@ /turf/open/floor/mineral/titanium, /area/ruin/powered) "ar" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/turf/open/floor/mineral/titanium, +/turf/closed/wall/mineral/wood, /area/ruin/powered) "as" = ( /obj/machinery/light, /turf/open/floor/mineral/titanium, /area/ruin/powered) "at" = ( -/obj/structure/shuttle/engine/propulsion/left{ - dir = 4 +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 }, -/turf/closed/wall/mineral/titanium, +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/titanium, /area/ruin/powered) "au" = ( /obj/item/seeds/tower, @@ -93,11 +98,15 @@ /area/ruin/powered) "av" = ( /obj/structure/table/wood, -/obj/item/paper/crumpled{ - info = "

So this is it, I guess.. Always thought I'd go out doing something stupid, but.. not like this.
Should anyone find this note, tell Jeremy Clarke he can kiss my ass. Launching the pod unprepared like that..
Well. Now that I'm keeling over here, I guess I should write how I came to be the last one standing here.
Four of us took this pod.. only three of us woke up though.. fourth pod is locked from the inside, we couldn't figure out how to get it open.
Me and the clown set up a farm s'we can survive at least a while.. though, he didn't seem to understand that man cannot live on banana alone.
Had a bunch of circuits on him for some reason when he eventually passed, whispered to me something about a chem dispenser.. I.. don't know what he meant by that. I was never good with machinary. Maybe he wanted space lube?
The assistant that we gave the space suit to go out and find help never came back.. I'm betting he found salvation and left us behind.. never can trust those grubby greytiders." +/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton{ + pixel_x = 6; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton, +/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton{ + pixel_x = -5; + pixel_y = 6 }, -/obj/item/pen, -/obj/item/stock_parts/cell/hyper, /turf/open/floor/plating/asteroid, /area/ruin/powered) "aw" = ( @@ -142,6 +151,17 @@ "aE" = ( /turf/open/floor/plating/asteroid/airless, /area/ruin/powered) +"aF" = ( +/obj/machinery/power/port_gen/pacman{ + active = 1; + anchored = 1; + sheets = 10 + }, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) "aG" = ( /obj/structure/sink/puddle, /turf/open/floor/plating/asteroid, @@ -187,9 +207,7 @@ /turf/open/floor/plating/asteroid, /area/ruin/powered) "aQ" = ( -/obj/item/stack/ore/gold, -/obj/item/stack/ore/gold, -/obj/item/stack/ore/gold, +/obj/item/circuitboard/machine/circuit_imprinter, /turf/open/floor/plating/asteroid, /area/ruin/powered) "aR" = ( @@ -205,8 +223,12 @@ /turf/open/floor/plating/asteroid, /area/ruin/powered) "aU" = ( -/obj/item/flashlight/lamp, /obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/meat/slab/human{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/meat/slab/human, /turf/open/floor/plating/asteroid, /area/ruin/powered) "aV" = ( @@ -238,20 +260,24 @@ /turf/closed/mineral/random/no_caves/earth_like, /area/ruin/powered) "bc" = ( -/obj/item/circuitboard/machine/circuit_imprinter, +/obj/structure/table/wood, +/obj/item/vending_refill/snack, /turf/open/floor/plating/asteroid, /area/ruin/powered) "bd" = ( -/obj/item/grown/bananapeel, -/turf/open/floor/plating/asteroid, +/obj/structure/shuttle/engine/propulsion/right{ + dir = 4 + }, +/turf/closed/wall/mineral/titanium, /area/ruin/powered) "be" = ( -/obj/effect/mob_spawn/human/corpse/cargo_tech, -/obj/structure/fans/tiny/invisible, +/obj/structure/chair/wood/normal{ + dir = 1 + }, /turf/open/floor/plating/asteroid, /area/ruin/powered) "bf" = ( -/obj/item/clothing/glasses/meson, +/obj/machinery/door/airlock/wood, /turf/open/floor/plating/asteroid, /area/ruin/powered) "bg" = ( @@ -275,50 +301,43 @@ /turf/open/floor/plating/asteroid, /area/ruin/powered) "bl" = ( -/obj/machinery/power/floodlight, -/obj/structure/cable{ - icon_state = "0-2" +/obj/machinery/door/airlock/titanium{ + name = "Escape Pod Airlock" }, -/turf/open/floor/plating/asteroid, +/turf/open/floor/mineral/titanium, /area/ruin/powered) "bm" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, +/obj/item/flashlight/lamp, +/obj/structure/table/wood, /turf/open/floor/plating/asteroid, /area/ruin/powered) "bn" = ( -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/table/wood, +/obj/item/paper/crumpled{ + info = "

So this is it, I guess.. Always thought I'd go out doing something stupid, but.. not like this.
Should anyone find this note, tell Jeremy Clarke he can kiss my ass. Launching the pod unprepared like that..
Well. Now that I'm keeling over here, I guess I should write how I came to be the last one standing here.
Four of us took this pod.. only three of us woke up though.. fourth pod is locked from the inside, we couldn't figure out how to get it open.
Me and the clown set up a farm s'we can survive at least a while.. though, he didn't seem to understand that man cannot live on banana alone.
Had a bunch of circuits on him for some reason when he eventually passed, whispered to me something about a chem dispenser.. I.. don't know what he meant by that. I was never good with machinary. Maybe he wanted space lube?
The assistant that we gave the space suit to go out and find help never came back.. I'm betting he found salvation and left us behind.. never can trust those grubby greytiders." }, +/obj/item/pen, +/obj/item/stock_parts/cell/hyper, /turf/open/floor/plating/asteroid, /area/ruin/powered) "bo" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, +/obj/item/grown/bananapeel, /turf/open/floor/plating/asteroid, /area/ruin/powered) "bp" = ( -/obj/item/stack/ore/iron, -/obj/item/stack/ore/iron, -/obj/item/stack/ore/iron, +/obj/effect/mob_spawn/human/corpse/cargo_tech, +/obj/structure/fans/tiny/invisible, /turf/open/floor/plating/asteroid, /area/ruin/powered) "bq" = ( -/obj/structure/cable, -/obj/machinery/power/port_gen/pacman{ - active = 1; - anchored = 1; - sheets = 10 - }, +/obj/item/clothing/glasses/meson, /turf/open/floor/plating/asteroid, /area/ruin/powered) "br" = ( -/obj/item/stack/ore/iron, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/mineral/plasma, -/turf/open/floor/plating/asteroid, +/obj/effect/decal/cleanable/oil{ + icon_state = "floor5" + }, +/turf/open/floor/mineral/titanium, /area/ruin/powered) "bs" = ( /obj/item/flashlight/lamp/bananalamp, @@ -328,18 +347,181 @@ /obj/item/pickaxe/titanium, /turf/open/floor/plating/asteroid, /area/ruin/powered) +"fc" = ( +/obj/item/stack/ore/iron, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/turf/open/floor/plating/asteroid, +/area/ruin/powered) "fp" = ( /turf/closed/mineral/random/high_chance/earth_like, /area/ruin/powered) "jx" = ( /turf/closed/mineral/silver/earth_like, /area/ruin/powered) +"ma" = ( +/obj/item/stack/ore/iron, +/obj/item/stack/ore/iron, +/obj/item/stack/ore/iron, +/turf/open/floor/plating/asteroid, +/area/ruin/powered) +"mr" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/mob_spawn/human/skeleton, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) "nc" = ( /turf/closed/mineral/bscrystal/earth_like, /area/ruin/powered) +"nl" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/bot, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) +"oR" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating/asteroid, +/area/ruin/powered) +"wU" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) +"zs" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) +"CY" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/bot, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) +"DH" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) +"Ft" = ( +/obj/structure/reagent_dispensers/fueltank/high, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) +"HK" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating/asteroid, +/area/ruin/powered) +"HP" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) +"Iy" = ( +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/structure/closet/crate/internals, +/obj/effect/turf_decal/bot, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) "JZ" = ( /turf/closed/mineral/titanium/earth_like, /area/ruin/powered) +"Kj" = ( +/obj/machinery/power/floodlight, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating/asteroid, +/area/ruin/powered) "Lt" = ( /obj/structure/mirror, /turf/closed/wall/mineral/iron, @@ -347,6 +529,19 @@ "PG" = ( /turf/closed/mineral/gold/earth_like, /area/ruin/powered) +"Qi" = ( +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman{ + active = 1; + anchored = 1; + sheets = 10 + }, +/turf/open/floor/plating/asteroid, +/area/ruin/powered) +"Sv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/titanium, +/area/ruin/powered) "Ue" = ( /turf/closed/mineral/diamond/earth_like, /area/ruin/powered) @@ -358,6 +553,24 @@ /obj/item/circuitboard/machine/ore_redemption, /turf/open/floor/plating/asteroid, /area/ruin/powered) +"WP" = ( +/obj/item/stack/ore/gold, +/obj/item/stack/ore/gold, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid, +/area/ruin/powered) +"Xh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/asteroid, +/area/ruin/powered) +"XQ" = ( +/obj/structure/shuttle/engine/propulsion/left{ + dir = 4 + }, +/turf/closed/wall/mineral/titanium, +/area/ruin/powered) (1,1,1) = {" aa @@ -1123,9 +1336,9 @@ bb bb af ak -ao -ao -ao +DH +an +mr ak af am @@ -1175,9 +1388,9 @@ bb aR ae ae -an -an -an +af +bl +af ae ae am @@ -1225,13 +1438,13 @@ ba ba bb aR +ae ag -ag -af -ar -af -at +nl +an +HP at +ae am bb fp @@ -1277,13 +1490,13 @@ aL bb bb aT -am -am -am -am -am -am -am +bl +br +an +an +an +an +bl aR bb bb @@ -1329,13 +1542,13 @@ am ba bb am -am -am -am -am -am -am -am +af +Ft +zs +Sv +CY +wU +af bg bb fp @@ -1381,13 +1594,13 @@ am ba bb bb -am -am -am -am -am -am -am +ae +Iy +aF +br +CY +CY +ae bb bb bb @@ -1432,14 +1645,14 @@ am bb bb bb -aU +am bd -am -am +bd +af bl -bm -am -am +af +XQ +XQ bb bb bb @@ -1484,15 +1697,15 @@ am bb bb ba -av -be am am am -bn -bo -bo -bq +am +am +am +am +am +am bb bb bb @@ -1525,10 +1738,10 @@ bb bb bb bb -ba -am -am -am +ar +ar +ar +ar am am am @@ -1536,15 +1749,15 @@ am bb bb bb -bc -bf am am am am am am -br +am +am +am bb bb bb @@ -1577,10 +1790,10 @@ bb bb bb bb -bb -bb -bb -bb +ar +av +am +ar am am am @@ -1629,10 +1842,10 @@ bb fp bb bb -bb -bb -bb -bb +ar +aU +be +bf am am am @@ -1645,8 +1858,8 @@ am am aR am -am -am +Kj +HK am bb bb @@ -1681,11 +1894,11 @@ bb bb bb bb -bb -bb -bb -bb -ba +ar +bc +am +ar +am am am am @@ -1698,10 +1911,10 @@ am am am am -am -am -am -am +oR +Xh +Xh +Qi ba ba ba @@ -1733,16 +1946,18 @@ bb bb bb bb -bb -bb -bb -bb +ar +ar +ar +ar ba ba ba aK ba ba +bm +bo am am am @@ -1750,9 +1965,7 @@ am am am am -bp -am -am +fc aR ba ba @@ -1795,16 +2008,16 @@ fp ba fp ba +bn +bp +am +am +am +am +am aP am am -am -am -am -am -am -am -am aR ba ba @@ -1848,14 +2061,14 @@ ba ba ba aQ -aP +bq am am aR am am -am -am +WP +aP bb am ba @@ -2009,7 +2222,7 @@ bg am am am -am +ma am aS bb diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index 3e5c80253d..6e0c65f6aa 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -1453,7 +1453,7 @@ /area/ruin/space/has_grav/hotel/guestroom/room_2) "eu" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom/room_2) "ev" = ( diff --git a/_maps/RandomZLevels/away_mission/jungleresort.dmm b/_maps/RandomZLevels/away_mission/jungleresort.dmm new file mode 100644 index 0000000000..d4698fec9a --- /dev/null +++ b/_maps/RandomZLevels/away_mission/jungleresort.dmm @@ -0,0 +1,26564 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ab" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"af" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/toy/plush/random, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"ai" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/closet/crate/secure/loot, +/obj/item/clothing/head/collectable/paper, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"ak" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"an" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"ap" = ( +/obj/structure/stone_tile/surrounding/burnt, +/obj/structure/stone_tile/center/burnt, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"ar" = ( +/obj/structure/flora/ausbushes/fullgrass, +/mob/living/carbon/monkey, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"as" = ( +/obj/structure/flora/junglebush/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"at" = ( +/obj/machinery/jukebox, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"aA" = ( +/obj/machinery/light, +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"aB" = ( +/obj/structure/flora/junglebush/large, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"aG" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/rock, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"aI" = ( +/obj/structure/flora/tree/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"aL" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"aP" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"aY" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"bf" = ( +/obj/structure/sign/barsign, +/turf/closed/wall/mineral/wood, +/area/awaymission/jungleresort) +"bg" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"bn" = ( +/obj/structure/flora/tree/jungle/small, +/obj/structure/flora/rock/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"bp" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"br" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"bv" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"bw" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"by" = ( +/obj/item/kirbyplants/random, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"bG" = ( +/turf/closed/indestructible/riveted, +/area/awaymission/jungleresort) +"bW" = ( +/obj/structure/table/wood, +/obj/machinery/button/door{ + id = "ResortCabin2"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/item/poster/random_official, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"bZ" = ( +/obj/structure/table/wood, +/obj/item/storage/box/donkpockets, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"cg" = ( +/obj/structure/table/wood, +/obj/machinery/reagentgrinder, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/kitchen/knife, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"cn" = ( +/obj/structure/flora/junglebush/c, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"cw" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"cA" = ( +/obj/structure/flora/junglebush/b, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"cD" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"cH" = ( +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"cJ" = ( +/obj/structure/flora/junglebush/c, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"cK" = ( +/obj/structure/closet/crate, +/obj/item/clothing/head/collectable/tophat, +/turf/open/floor/plating/rust, +/area/awaymission/jungleresort) +"cT" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/jungleresort) +"cV" = ( +/obj/structure/flora/junglebush/c, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"cX" = ( +/obj/structure/flora/rock, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"dm" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/beer, +/obj/item/clothing/head/hardhat/cakehat, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"dn" = ( +/obj/structure/chair/comfy/brown, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"dt" = ( +/obj/structure/table/wood, +/mob/living/carbon/monkey/punpun/curiousgorge, +/obj/item/reagent_containers/food/drinks/drinkingglass, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"du" = ( +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"dC" = ( +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"dF" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"dW" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"dY" = ( +/obj/structure/flora/junglebush/large, +/obj/structure/flora/rock/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ef" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/circuit, +/area/awaymission/jungleresort) +"ez" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/obj/structure/stone_tile/center/cracked, +/obj/item/ammo_casing/shotgun/buckshot, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"eB" = ( +/obj/structure/chair/comfy/black, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"eC" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"eD" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/obj/machinery/button/door{ + id = "AbandonedCabinDorm"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/carpet/red, +/area/awaymission/jungleresort) +"eI" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/jungleresort) +"eJ" = ( +/obj/structure/flora/junglebush, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"eK" = ( +/obj/machinery/washing_machine, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"eN" = ( +/obj/item/clothing/suit/hooded/wintercoat/bar, +/obj/structure/table/wood, +/obj/item/clothing/head/that, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"eR" = ( +/obj/structure/bed, +/obj/item/bedsheet/captain, +/obj/machinery/button/door{ + id = "ResortManagerDorm"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"eT" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"fh" = ( +/obj/structure/table/wood, +/obj/machinery/button/door{ + id = "ResortCabin3"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/item/storage/wallet/random, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"fm" = ( +/obj/structure/reagent_dispensers/keg/mead, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"fy" = ( +/obj/structure/stone_tile/surrounding_tile/burnt, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"fz" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"fH" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"fW" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"fX" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"gj" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"go" = ( +/obj/structure/flora/rock, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"gv" = ( +/obj/structure/table/wood, +/obj/item/book/manual/chef_recipes, +/obj/item/toy/figure/chef, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"gK" = ( +/obj/structure/table/wood, +/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot, +/obj/item/ammo_box/magazine/toy/m762/riot, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"gL" = ( +/obj/structure/table/wood, +/obj/item/export/bottle/minikeg, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"gN" = ( +/obj/structure/table/wood/fancy, +/obj/item/candle/infinite, +/obj/item/toy/figure/chaplain, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"gU" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"gV" = ( +/obj/structure/table/wood, +/obj/machinery/button/door{ + id = "ResortCabin1"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/item/lipstick/random, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"gZ" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/under/color/jumpskirt/random, +/obj/item/clothing/under/color/random, +/obj/item/clothing/under/color/random, +/obj/item/clothing/under/color/jumpskirt/random, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"hj" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"hk" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"hl" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"hp" = ( +/obj/structure/flora/tree/jungle/small, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ht" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"hv" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"hw" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"hy" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"hC" = ( +/obj/structure/flora/rock, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"hH" = ( +/obj/structure/flora/rock/jungle, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"hN" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"hU" = ( +/obj/structure/curtain, +/obj/machinery/shower, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"hX" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/burnt, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"ia" = ( +/obj/structure/flora/grass/jungle/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ie" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ih" = ( +/obj/structure/stone_tile/surrounding/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"ii" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/carneburrito, +/obj/item/reagent_containers/food/drinks/soda_cans/starkist, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"im" = ( +/obj/machinery/computer/security/wooden_tv, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"io" = ( +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"is" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/rock/pile, +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"iv" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"iE" = ( +/obj/structure/closet/secure_closet/bar, +/obj/item/clothing/glasses/sunglasses/reagent, +/obj/item/clothing/under/rank/civilian/bartender/skirt, +/obj/item/clothing/accessory/waistcoat, +/obj/item/clothing/under/rank/civilian/bartender, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"iG" = ( +/obj/structure/flora/junglebush/large, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"iH" = ( +/obj/machinery/gibber, +/obj/machinery/light/small, +/turf/open/floor/plasteel/freezer, +/area/awaymission/jungleresort) +"iL" = ( +/obj/structure/bed, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/bedsheet/syndie, +/turf/open/floor/carpet/red, +/area/awaymission/jungleresort) +"iR" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"iU" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"iZ" = ( +/obj/item/storage/toolbox/artistic, +/obj/structure/table/wood/fancy, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"jb" = ( +/obj/structure/flora/rock/pile, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"jh" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"jj" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"js" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"jy" = ( +/obj/structure/flora/grass/jungle/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"jB" = ( +/obj/structure/flora/junglebush/large, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"jF" = ( +/obj/structure/flora/tree/jungle, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"jH" = ( +/obj/structure/flora/junglebush/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"jJ" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"jL" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"jO" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"jQ" = ( +/obj/structure/flora/junglebush/c, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"kf" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/junglebush/c, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"kn" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"kq" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck/syndicate, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"kr" = ( +/obj/structure/flora/junglebush/large, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"kw" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"kz" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"kB" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/fullupgrade, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"kI" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"kJ" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"kQ" = ( +/obj/machinery/processor, +/turf/open/floor/plasteel/freezer, +/area/awaymission/jungleresort) +"kW" = ( +/turf/closed/wall/rust, +/area/awaymission/jungleresort) +"le" = ( +/obj/structure/chair/sofa/corner, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"lf" = ( +/obj/structure/flora/rock/pile, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ll" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"lr" = ( +/obj/structure/flora/junglebush/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"lB" = ( +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"lJ" = ( +/obj/structure/flora/junglebush/c, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"lS" = ( +/obj/structure/toilet/secret/low_loot{ + dir = 1 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"lV" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "ResortManagerDorm"; + name = "Resort Manager's Dorm" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"mg" = ( +/obj/machinery/door/airlock/engineering{ + name = "Resort Power" + }, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"mh" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"mk" = ( +/obj/structure/flora/junglebush/c, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ml" = ( +/obj/structure/table/wood, +/obj/item/toy/figure/captain, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"mt" = ( +/obj/structure/flora/junglebush, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"mu" = ( +/obj/machinery/door/window{ + dir = 1 + }, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"my" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/lightreplacer, +/obj/item/storage/box/lights/mixed, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"mE" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"mY" = ( +/obj/structure/flora/rock, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"mZ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ne" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"nm" = ( +/obj/structure/flora/junglebush/c, +/obj/structure/flora/grass/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"no" = ( +/obj/item/chair, +/obj/item/reagent_containers/food/drinks/beer, +/obj/machinery/light/floor, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"np" = ( +/obj/structure/flora/junglebush/c, +/obj/structure/flora/junglebush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"nq" = ( +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/jungleresort) +"nt" = ( +/obj/structure/flora/rock/jungle, +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/junglebush/c, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"nv" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"nw" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"nD" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"nJ" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"nU" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"od" = ( +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"og" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"oj" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"op" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/jungleresort) +"ot" = ( +/obj/structure/table/wood, +/obj/item/canvas/nineteenXnineteen, +/obj/item/canvas/nineteenXnineteen, +/obj/item/canvas/nineteenXnineteen, +/obj/item/canvas/nineteenXnineteen, +/obj/item/toy/crayon/spraycan, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"ow" = ( +/obj/structure/flora/tree/jungle, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"oW" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/head/collectable/petehat/gang, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"oX" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"oZ" = ( +/turf/closed/indestructible/riveted/boss, +/area/awaymission/jungleresort) +"pm" = ( +/obj/structure/flora/grass/jungle/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"pn" = ( +/obj/structure/toilet/secret/low_loot, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"po" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"px" = ( +/obj/machinery/light, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"pC" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/rock/pile, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"pK" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/rock, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"pN" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"pP" = ( +/obj/structure/sign/warning, +/turf/closed/mineral/random/labormineral/jungle, +/area/awaymission/jungleresort) +"pQ" = ( +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"pT" = ( +/obj/structure/table, +/turf/open/floor/mineral/titanium/white, +/area/awaymission/jungleresort) +"pU" = ( +/obj/structure/flora/junglebush/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"qa" = ( +/turf/open/floor/plating/rust, +/area/awaymission/jungleresort) +"qg" = ( +/turf/closed/wall/mineral/titanium, +/area/awaymission/jungleresort) +"qi" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/closet/crate/secure/loot, +/obj/item/clothing/head/collectable/beret, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"qr" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"qs" = ( +/obj/item/storage/toolbox/syndicate, +/obj/structure/table/wood/fancy, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"qz" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"qC" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"qG" = ( +/obj/item/storage/toolbox/emergency, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/table/wood/fancy, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"rd" = ( +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"rg" = ( +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"rm" = ( +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"ro" = ( +/obj/structure/flora/rock/jungle, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"rt" = ( +/obj/structure/chair/sofa/corner{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"rv" = ( +/obj/item/statuebust, +/obj/structure/table/wood/fancy, +/turf/open/floor/plasteel/dark, +/area/awaymission/jungleresort) +"rx" = ( +/obj/structure/flora/junglebush, +/obj/structure/flora/junglebush/b, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"rF" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"rH" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"rP" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"rQ" = ( +/obj/structure/flora/tree/jungle/small, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"rS" = ( +/obj/structure/table/wood, +/obj/item/toy/plush/beeplushie, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"rT" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"se" = ( +/obj/structure/flora/junglebush/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"sh" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"sn" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"so" = ( +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"sq" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"st" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"sD" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/baguette, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"sQ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"sR" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/flashlight/lamp, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"sS" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/cigarettes/cigpack_robustgold, +/obj/item/clothing/mask/cigarette/robustgold, +/obj/item/lighter, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"td" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/junglebush/c, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ti" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"tn" = ( +/obj/structure/flora/rock/pile, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"tu" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/junglebush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"tx" = ( +/obj/machinery/door/airlock/wood{ + name = "Resort Bar Backroom" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"tC" = ( +/obj/structure/table/wood, +/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/o2, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/toxin, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"tH" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/center, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"tK" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"tS" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "ResortCabin1"; + name = "Resort Cabin 1" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"tT" = ( +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"tZ" = ( +/obj/structure/flora/rock/pile, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"uc" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ue" = ( +/obj/machinery/light, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"uh" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"uj" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "ResortCabin3"; + name = "Resort Cabin 3" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"ur" = ( +/obj/structure/flora/tree/jungle, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"us" = ( +/obj/structure/flora/rock, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"uu" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"uv" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"ux" = ( +/obj/item/stack/sheet/animalhide/monkey, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"uy" = ( +/obj/structure/chair/stool, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"uC" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"uG" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"uO" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"uS" = ( +/obj/structure/flora/rock/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"uT" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"uW" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"uX" = ( +/obj/structure/flora/junglebush/large, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"uZ" = ( +/obj/machinery/vending/boozeomat, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"vc" = ( +/obj/structure/flora/grass/jungle/b, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"vl" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"vq" = ( +/obj/structure/barricade/wooden, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"vs" = ( +/obj/structure/table/wood, +/obj/machinery/button/door{ + id = "ResortCabin4"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/effect/spawner/lootdrop/glowstick, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"vw" = ( +/obj/machinery/door/airlock/wood{ + name = "Abandoned Cabin" + }, +/obj/structure/barricade/wooden, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"vx" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"vy" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"vK" = ( +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"vN" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"vZ" = ( +/obj/machinery/door/airlock/wood{ + name = "Resort Bar" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"wj" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"wm" = ( +/obj/structure/flora/junglebush/c, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"wo" = ( +/obj/structure/table/wood/fancy, +/obj/item/storage/toolbox/gold_fake, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"wq" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen/fountain, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"ws" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"wv" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"ww" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/hooded/wintercoat/captain, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"wF" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"wG" = ( +/obj/structure/flora/rock/jungle, +/obj/structure/flora/grass/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"wH" = ( +/obj/structure/flora/junglebush/b, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"wJ" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"wS" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/center/cracked, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"wV" = ( +/obj/structure/chair/wood, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"wZ" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"xr" = ( +/obj/structure/table/wood, +/obj/structure/bedsheetbin/color, +/obj/item/toy/figure/assistant, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"xD" = ( +/obj/structure/flora/rock/pile, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"xH" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"xL" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"xQ" = ( +/obj/machinery/door/airlock/wood, +/turf/open/floor/carpet/red, +/area/awaymission/jungleresort) +"xS" = ( +/obj/structure/chair/wood, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"xU" = ( +/obj/structure/flora/junglebush/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"xV" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"yb" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"yi" = ( +/obj/item/grown/log/tree, +/obj/item/lighter, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"yr" = ( +/obj/structure/statue/sandstone/venus, +/turf/open/floor/plasteel/dark, +/area/awaymission/jungleresort) +"yu" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"yx" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"yy" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"yz" = ( +/obj/machinery/door/airlock/wood{ + name = "Resort Manager's Office" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"yC" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"yF" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"yJ" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"yK" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"yL" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"yM" = ( +/obj/item/kirbyplants/random, +/obj/machinery/light, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"yQ" = ( +/obj/effect/spawner/lootdrop/cig_packs, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"yS" = ( +/obj/machinery/door/window, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"yW" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/jungleresort) +"yX" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/salad/validsalad, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"yY" = ( +/obj/machinery/door/airlock/shuttle, +/turf/open/floor/mineral/titanium, +/area/awaymission/jungleresort) +"zl" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"zr" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"zx" = ( +/obj/structure/flora/junglebush/b, +/obj/structure/flora/rock, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"zA" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"zC" = ( +/obj/structure/flora/grass/jungle/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"zH" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/awaymission/jungleresort) +"zI" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"zK" = ( +/obj/structure/flora/rock/jungle, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"zP" = ( +/obj/structure/flora/tree/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"zV" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"zY" = ( +/obj/structure/flora/junglebush/c, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Aa" = ( +/obj/structure/flora/junglebush/c, +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Ag" = ( +/obj/machinery/door/airlock/wood{ + name = "Resort Office" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Ah" = ( +/obj/structure/table/wood/poker, +/obj/item/dice/d6, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Ak" = ( +/obj/structure/flora/junglebush/large, +/obj/structure/flora/rock/jungle, +/obj/structure/flora/grass/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"An" = ( +/obj/effect/spawner/lootdrop/bedsheet, +/obj/structure/bed, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Ar" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Az" = ( +/obj/structure/flora/junglebush/b, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"AC" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/center, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"AF" = ( +/obj/structure/flora/junglebush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"AR" = ( +/turf/closed/mineral/random/labormineral/jungle, +/area/awaymission/jungleresort) +"AS" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"AT" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"AU" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/rock, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"AV" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"Bh" = ( +/obj/machinery/light/floor, +/obj/structure/easel, +/obj/item/canvas/nineteenXnineteen, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Bn" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Bp" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/rock/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Bq" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Br" = ( +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"BB" = ( +/obj/machinery/door/window, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"BM" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"BP" = ( +/obj/structure/dresser, +/turf/open/floor/carpet/red, +/area/awaymission/jungleresort) +"BQ" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"BY" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"BZ" = ( +/obj/structure/flora/junglebush/c, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Cc" = ( +/obj/item/mop, +/obj/structure/mopbucket, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"Co" = ( +/obj/structure/chair/wood/wings, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Ct" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Cu" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Cv" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/port_gen/pacman/super, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"CA" = ( +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"CC" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"CH" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"CK" = ( +/obj/structure/flora/rock/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"CN" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"CR" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"CT" = ( +/obj/item/storage/toolbox/greyscale, +/obj/structure/table/wood/fancy, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"CV" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"CY" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Db" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 6 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Di" = ( +/obj/item/storage/toolbox/drone, +/obj/structure/table/wood/fancy, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"Dj" = ( +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"Dr" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Du" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "ResortCabin4"; + name = "Resort Cabin 4" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Dz" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/junglebush/b, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"DF" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"DL" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"DO" = ( +/obj/structure/flora/tree/jungle/small, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"DS" = ( +/obj/structure/flora/junglebush/large, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"DU" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/burger/plain, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Ei" = ( +/obj/structure/table/wood, +/obj/machinery/door/window{ + dir = 8 + }, +/obj/item/paper/crumpled/awaymissions/jungleresort/notice, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"El" = ( +/obj/structure/flora/grass/jungle/b, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Eq" = ( +/obj/structure/frame/computer, +/obj/effect/decal/cleanable/glass, +/obj/item/shard, +/turf/open/floor/mineral/titanium/yellow, +/area/awaymission/jungleresort) +"Et" = ( +/obj/structure/toilet/secret/low_loot{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Eu" = ( +/obj/structure/table/wood, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/toy/plush/random, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Ex" = ( +/obj/structure/table/wood/fancy, +/obj/item/candle/infinite, +/turf/open/floor/plasteel/dark, +/area/awaymission/jungleresort) +"Ey" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"EA" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"EL" = ( +/obj/structure/table/wood, +/obj/item/storage/box/donkpockets, +/obj/item/storage/box/donkpockets, +/obj/item/camera, +/obj/item/camera_film, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"EO" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/jungleresort) +"EP" = ( +/obj/machinery/door/airlock/wood{ + name = "Resort Cafe" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"EQ" = ( +/obj/structure/flora/tree/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"EV" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/junglebush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Fd" = ( +/obj/structure/flora/grass/jungle/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Fl" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/center, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Fq" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Fr" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Fz" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/rock/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"FL" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"FN" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"FO" = ( +/obj/machinery/door/airlock/wood, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"FP" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"FQ" = ( +/obj/structure/flora/ausbushes/reedbush, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"FR" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"FT" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"FV" = ( +/obj/machinery/door/airlock/freezer{ + name = "Freezer" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"FX" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Gd" = ( +/obj/structure/chair/pew{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"Gk" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Gl" = ( +/obj/structure/sign/poster/random, +/turf/closed/wall/mineral/wood, +/area/awaymission/jungleresort) +"Gn" = ( +/obj/machinery/light, +/obj/structure/closet/crate/bin, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Gu" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Gv" = ( +/obj/structure/table/wood, +/obj/item/toy/figure/bartender, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Gz" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"GA" = ( +/obj/structure/flora/tree/jungle/small, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"GD" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"GN" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"GU" = ( +/obj/item/reagent_containers/food/snacks/sausage, +/obj/item/reagent_containers/food/snacks/sausage, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Ha" = ( +/obj/structure/table/wood, +/obj/item/dualsaber/toy, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Hg" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"Hk" = ( +/obj/structure/flora/grass/jungle, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Hm" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Hs" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Hw" = ( +/obj/machinery/door/airlock/wood{ + name = "Resort Arrivals" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Hy" = ( +/obj/structure/flora/rock/pile, +/mob/living/carbon/monkey, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"HC" = ( +/obj/structure/bonfire/dense, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"HD" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"HI" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "ResortCabin2"; + name = "Resort Cabin 2" + }, +/obj/structure/barricade/wooden, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"HQ" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Ih" = ( +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"Ii" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Ij" = ( +/obj/structure/chair/pew/left{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"Ir" = ( +/obj/effect/decal/cleanable/blood/gibs/human/down, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Iw" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/space_cash, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"IC" = ( +/obj/structure/flora/rock/pile, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"IF" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"IK" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/barricade/wooden, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"IO" = ( +/obj/structure/barricade/wooden, +/obj/machinery/door/airlock/wood{ + id_tag = "ResortCabin5"; + name = "Resort Cabin 5" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"IR" = ( +/obj/structure/flora/junglebush/large, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"IW" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Jb" = ( +/obj/structure/flora/tree/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Jc" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Jd" = ( +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Jf" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Jh" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Jj" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Jo" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Jq" = ( +/obj/structure/table/wood, +/obj/machinery/microwave, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Jt" = ( +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Jv" = ( +/obj/structure/filingcabinet, +/obj/structure/window/reinforced, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"Jz" = ( +/obj/effect/decal/cleanable/blood/splats, +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"JF" = ( +/turf/open/floor/plasteel/dark, +/area/awaymission/jungleresort) +"JG" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/gibs/human/up, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"JK" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"JQ" = ( +/obj/item/toy/plush/carpplushie, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"JU" = ( +/obj/structure/stone_tile/slab/burnt, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"JZ" = ( +/obj/structure/flora/tree/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Ka" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Kk" = ( +/obj/machinery/light/floor, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"Kl" = ( +/obj/item/kirbyplants/random, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Ko" = ( +/turf/closed/wall/r_wall, +/area/awaymission/jungleresort) +"Kr" = ( +/obj/structure/flora/junglebush/b, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Kw" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"KC" = ( +/obj/machinery/telecomms/relay/preset/mining, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/awaymission/jungleresort) +"KJ" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"KM" = ( +/mob/living/carbon/monkey, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"KO" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"KR" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"KX" = ( +/obj/structure/flora/rock, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"KY" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"KZ" = ( +/obj/structure/flora/junglebush, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"La" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Ll" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Lp" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating/asteroid, +/area/awaymission/jungleresort) +"Lr" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/stone_tile/center/burnt, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Lt" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Lu" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Lv" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"Ly" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/structure/stone_tile/surrounding/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"LE" = ( +/obj/structure/reagent_dispensers/keg/gargle, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"LK" = ( +/obj/structure/chair/pew/right{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"LL" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/smes{ + charge = 1.5e+006; + input_level = 30000; + inputting = 0; + output_level = 7000 + }, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"LR" = ( +/mob/living/simple_animal/hostile/jungle/leaper/boss, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"LU" = ( +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"LW" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Mc" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"Mf" = ( +/obj/structure/flora/junglebush/large, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Mh" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/applejack/empty, +/obj/item/reagent_containers/food/drinks/drinkingglass, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Mp" = ( +/turf/closed/wall/mineral/wood, +/area/awaymission/jungleresort) +"Mx" = ( +/obj/structure/chair/sofa/right, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"MD" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"MF" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"MJ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"MP" = ( +/turf/open/floor/plasteel/freezer, +/area/awaymission/jungleresort) +"MS" = ( +/obj/structure/flora/rock/pile, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"MW" = ( +/obj/structure/flora/rock/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"MX" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"MY" = ( +/obj/structure/barricade/wooden, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"Nd" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Nf" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 5 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Ni" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Nn" = ( +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"Nx" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/butteredtoast, +/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"NF" = ( +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"NU" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"Oe" = ( +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Ol" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Or" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Ou" = ( +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"Oz" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"OA" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"OB" = ( +/obj/item/storage/book/bible, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"OU" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Pb" = ( +/obj/structure/flora/rock/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Pc" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"Pd" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Pg" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Pp" = ( +/obj/structure/flora/junglebush/c, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Pu" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Pv" = ( +/obj/structure/flora/junglebush/large, +/obj/structure/flora/grass/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"PB" = ( +/obj/structure/flora/junglebush, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"PD" = ( +/obj/structure/flora/rock/jungle, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"PL" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"PM" = ( +/obj/structure/flora/grass/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"PN" = ( +/turf/open/floor/mineral/titanium, +/area/awaymission/jungleresort) +"PP" = ( +/obj/structure/flora/rock, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"PS" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"PT" = ( +/obj/structure/flora/rock/pile, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"PW" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"PY" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Qa" = ( +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/effect/decal/cleanable/blood/gibs/torso, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Qc" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/plasteel/freezer, +/area/awaymission/jungleresort) +"Qp" = ( +/turf/open/floor/plating/asteroid, +/area/awaymission/jungleresort) +"Qr" = ( +/obj/structure/chair/sofa{ + dir = 8 + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Qt" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"Qz" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding/cracked, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"QA" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"QB" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"QC" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"QE" = ( +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"QI" = ( +/obj/machinery/nuclearbomb/beer, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"QO" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"QX" = ( +/obj/structure/flora/junglebush, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Rd" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/storage/toolbox/electrical, +/obj/item/wrench, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/stack/sheet/mineral/uranium, +/obj/item/clothing/glasses/meson/engine, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"Rm" = ( +/obj/structure/flora/tree/jungle/small, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Rn" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/item/folder, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"Ro" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Rp" = ( +/obj/structure/flora/ausbushes/reedbush, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"RD" = ( +/obj/structure/flora/junglebush/c, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"RI" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/condiment/flour, +/obj/item/kitchen/rollingpin, +/obj/item/reagent_containers/food/condiment/saltshaker, +/obj/item/reagent_containers/food/condiment/peppermill, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"RP" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/gibs/torso, +/obj/item/clothing/suit/curator, +/obj/item/clothing/under/rank/civilian/curator/treasure_hunter, +/obj/item/clothing/head/fedora/curator, +/obj/item/clothing/shoes/workboots/mining, +/obj/item/melee/chainofcommand/jungle, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"RW" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"RX" = ( +/obj/structure/flora/junglebush/c, +/obj/structure/flora/rock/pile, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Sc" = ( +/obj/structure/flora/rock, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Se" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/beer, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Sh" = ( +/obj/structure/flora/junglebush/large, +/obj/structure/flora/junglebush/c, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Si" = ( +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/structure/stone_tile/surrounding/burnt, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Sk" = ( +/obj/machinery/door/airlock/wood{ + name = "Resort Kitchen" + }, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Ss" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"St" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"SD" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"SF" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"SL" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"SO" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/stone_tile/surrounding/cracked, +/obj/item/gun/ballistic/shotgun/sc_pump, +/obj/item/clothing/suit/armor/vest, +/obj/item/clothing/head/helmet, +/obj/item/ammo_casing/shotgun/buckshot, +/obj/item/ammo_casing/shotgun/buckshot, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"SV" = ( +/obj/machinery/vending/wardrobe/bar_wardrobe, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"SW" = ( +/obj/structure/flora/rock/jungle, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"SZ" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 5 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Ta" = ( +/obj/machinery/shower, +/obj/structure/curtain, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Tm" = ( +/obj/structure/table/wood/poker, +/obj/effect/spawner/lootdrop/space_cash, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Tv" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Tw" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/grass/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Tx" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Ty" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"TC" = ( +/obj/machinery/deepfryer, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"TD" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"TG" = ( +/obj/structure/flora/rock/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"TI" = ( +/obj/structure/barricade/wooden, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"TM" = ( +/obj/structure/table/wood/fancy, +/obj/item/candle/infinite, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"TR" = ( +/obj/structure/table/wood, +/obj/item/storage/box/donkpockets, +/obj/item/storage/box/donkpockets, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"TT" = ( +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"TU" = ( +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating/asteroid, +/area/awaymission/jungleresort) +"TX" = ( +/obj/structure/table/wood, +/obj/machinery/button/door{ + id = "ResortCabin5"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/item/poster/random_contraband, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Uc" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Ud" = ( +/obj/machinery/light/floor, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Ue" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Uo" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/innards, +/obj/structure/stone_tile/surrounding/cracked, +/obj/item/fireaxe, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/shoes/workboots, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Us" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Uv" = ( +/obj/structure/flora/grass/jungle/b, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"UB" = ( +/obj/structure/flora/junglebush, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"UH" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Vb" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Ve" = ( +/obj/structure/table/wood, +/obj/machinery/door/window{ + dir = 8 + }, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"Vg" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Vh" = ( +/obj/item/storage/toolbox/electrical, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/table/wood/fancy, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"Vm" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"VI" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "AbandonedCabinDorm"; + name = "Abandoned Cabin Dorm" + }, +/turf/open/floor/carpet/red, +/area/awaymission/jungleresort) +"VJ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"VK" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/stamp, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"VL" = ( +/obj/structure/rack, +/obj/item/storage/backpack/satchel/explorer, +/obj/item/gps/mining, +/obj/item/radio, +/obj/item/flashlight, +/obj/item/flashlight/flare, +/obj/item/pickaxe, +/obj/item/mining_scanner, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"VP" = ( +/obj/structure/flora/junglebush/b, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"VU" = ( +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Wa" = ( +/obj/structure/flora/junglebush/c, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Wd" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"Wh" = ( +/obj/structure/flora/junglebush/large, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Wi" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Wj" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Wl" = ( +/obj/structure/flora/grass/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Wo" = ( +/obj/structure/flora/tree/jungle/small, +/obj/structure/flora/grass/jungle, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"WD" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/head/collectable/slime, +/turf/open/floor/plating/rust, +/area/awaymission/jungleresort) +"WE" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"WQ" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/gibs/torso, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"WU" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Xa" = ( +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Xd" = ( +/obj/structure/flora/grass/jungle, +/obj/machinery/light, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Xh" = ( +/obj/structure/flora/rock/jungle, +/obj/structure/flora/junglebush, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Xj" = ( +/turf/closed/wall, +/area/awaymission/jungleresort) +"Xm" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"Xo" = ( +/obj/structure/flora/junglebush/c, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"Xq" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/circuit, +/area/awaymission/jungleresort) +"Xs" = ( +/obj/effect/decal/cleanable/blood/gibs/torso, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Xz" = ( +/turf/open/floor/carpet/red, +/area/awaymission/jungleresort) +"XB" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"XC" = ( +/obj/item/grown/log/tree, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"XK" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"XM" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/salad/jungle, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"XR" = ( +/obj/structure/flora/tree/jungle/small, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"XV" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain, +/turf/open/floor/wood, +/area/awaymission/jungleresort) +"XY" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/item/toy/figure/ian, +/turf/open/floor/carpet/blue, +/area/awaymission/jungleresort) +"XZ" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/power/port_gen/pacman/super, +/turf/open/floor/plating, +/area/awaymission/jungleresort) +"Yb" = ( +/obj/structure/bonfire/dense, +/obj/item/melee/roastingstick, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Yd" = ( +/obj/item/storage/box/marshmallow, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Ye" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/toy/figure/syndie, +/turf/open/floor/carpet/red, +/area/awaymission/jungleresort) +"Yf" = ( +/obj/structure/flora/junglebush/c, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Yg" = ( +/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Yh" = ( +/obj/item/clothing/under/color/grey/glorf, +/obj/item/clothing/gloves/color/fyellow/old, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/mask/gas, +/obj/item/clothing/head/soft/grey, +/obj/effect/decal/remains/human, +/turf/open/floor/carpet, +/area/awaymission/jungleresort) +"Ym" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/rock/pile, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"Yp" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/center, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Yt" = ( +/obj/structure/kitchenspike, +/turf/open/floor/plasteel/freezer, +/area/awaymission/jungleresort) +"YE" = ( +/obj/structure/flora/ausbushes/ppflowers, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"YF" = ( +/obj/machinery/gateway/away, +/turf/open/floor/plating/dirt/dark/jungle, +/area/awaymission/jungleresort) +"YJ" = ( +/obj/structure/flora/rock/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"YK" = ( +/obj/machinery/light/floor, +/turf/open/water/jungle, +/area/awaymission/jungleresort) +"YM" = ( +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"YP" = ( +/obj/structure/flora/rock/jungle, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"YQ" = ( +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"YU" = ( +/obj/structure/flora/grass/jungle/b, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/awaymission/jungleresort) +"YW" = ( +/obj/effect/decal/cleanable/blood/gibs/human/core, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"Zn" = ( +/obj/item/stack/sheet/mineral/wood, +/obj/effect/decal/cleanable/blood/gibs/human/core, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"ZE" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/burnt, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"ZH" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/floor/plating/dirt/jungle, +/area/awaymission/jungleresort) +"ZV" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/grass, +/area/awaymission/jungleresort) + +(1,1,1) = {" +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +"} +(2,1,1) = {" +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +"} +(3,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(4,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(5,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(6,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(7,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(8,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(9,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +oZ +AR +oZ +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(10,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +bv +Ue +tT +oZ +oZ +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(11,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +oZ +oZ +tT +RP +BQ +aL +tT +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(12,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +aL +JU +Gk +DF +SL +po +Jz +JU +oZ +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(13,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +tT +Si +rg +uG +dF +an +hX +ih +aL +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(14,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +aL +tT +po +VJ +LR +FR +Lt +tT +tT +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(15,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +Lr +JU +Yg +jO +Lv +hj +tT +Nf +aL +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +rd +vK +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Pg +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(16,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +oZ +Uo +ZE +ZH +Fl +aL +ez +SO +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Pg +YQ +YQ +ZV +YQ +wH +AR +AR +AR +AR +AR +YQ +YQ +wH +rd +cn +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(17,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +oZ +tT +ap +YW +Db +Ly +oZ +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +CN +cn +YQ +rF +Pg +YQ +rd +YQ +YQ +YQ +CN +YQ +YQ +kr +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(18,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +aL +fy +Dr +JU +oZ +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +YQ +YQ +YQ +vl +YQ +AF +YQ +vK +YQ +YQ +rd +aP +mY +YQ +ZV +Pg +AF +YQ +YQ +Pg +rd +ZV +vK +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +AF +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(19,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AC +GD +oZ +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +CN +rF +aP +YQ +YQ +CN +YQ +YQ +aP +CN +YQ +YQ +AF +YQ +YQ +YQ +MW +br +YQ +YQ +YQ +YQ +CN +YQ +cn +YQ +YQ +YQ +CN +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +rd +YQ +YQ +YQ +CN +YQ +kr +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(20,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +iv +Qz +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +Wl +YQ +YQ +YQ +Pg +ZV +YQ +cV +Pg +YQ +YQ +YM +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +YQ +YQ +MW +aP +YQ +YQ +YQ +AF +YQ +YQ +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +wH +YQ +rd +YQ +YQ +YM +YQ +YQ +YQ +rd +ZV +YQ +rd +MW +Pg +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(21,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +wS +SZ +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rd +AF +YQ +YQ +YQ +CN +rd +AF +YQ +YQ +YQ +YQ +wH +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Wl +cn +YQ +YQ +YM +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +CN +Pg +YQ +YQ +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +wH +YQ +AF +ZV +cn +YQ +YQ +YQ +CN +YQ +AF +aP +ZV +rF +Pv +wH +YQ +YQ +YQ +CN +YQ +aP +Wl +YQ +rd +YQ +AF +YQ +YQ +YQ +Pg +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(22,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +yJ +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Pg +wH +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +Wl +Pg +AF +YQ +YQ +YQ +CN +YQ +aP +YQ +YQ +Pg +Wl +YQ +YQ +ZV +aP +vK +VU +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +vK +wH +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +rd +MW +aP +YM +YQ +XK +YQ +rd +MW +YQ +YQ +Pg +YQ +YQ +YQ +CN +YQ +cn +YQ +YQ +YQ +YQ +vK +YQ +mY +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +ZV +cn +YQ +YQ +vK +AF +ZV +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(23,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +Yp +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YM +cn +YQ +YQ +YM +aG +YQ +YQ +MW +rF +YQ +YQ +YQ +aP +rd +cn +YQ +YQ +wH +YQ +rd +YQ +YQ +YQ +CN +YQ +YQ +rd +YQ +YQ +YQ +YQ +rd +YQ +MW +YQ +YQ +ZV +ZV +YQ +YM +AF +YQ +aP +YQ +AR +AR +AR +AR +AR +AR +AR +rd +Pg +cn +YQ +YQ +YM +YQ +YQ +YQ +YQ +YQ +CN +YQ +Pg +ZV +rd +kr +YQ +YQ +rd +Pg +YQ +YQ +KJ +Pg +Xh +YQ +YQ +CN +AF +YQ +YQ +YQ +wH +YQ +YQ +YQ +YQ +rd +YQ +aP +YQ +Pg +YQ +YQ +cn +YQ +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(24,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +TD +oZ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +aP +Wl +rd +aP +Pg +YQ +YQ +Wl +YQ +rd +YQ +rd +YQ +YQ +YQ +YQ +YM +KM +Pg +ZV +AF +YQ +YQ +rd +YQ +YQ +YM +YQ +YQ +YQ +CN +cn +YQ +YQ +YQ +CN +Wl +rd +wH +YQ +MW +YQ +YQ +YQ +YM +ZV +cn +rd +aP +YQ +wH +AF +YQ +YQ +kr +aP +YQ +YQ +Wl +wH +YQ +YQ +YQ +YQ +YQ +CN +ar +YQ +cn +wH +YQ +YQ +YQ +AF +YQ +YQ +rd +YQ +YQ +Dz +ZV +YQ +rd +YQ +cn +Wl +Pg +YQ +kr +YQ +YQ +wH +YQ +YQ +YQ +YQ +CN +YQ +wH +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(25,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +aL +Xs +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rd +YQ +YQ +YQ +CN +kr +YQ +YQ +YQ +CN +YQ +YQ +KJ +YQ +YQ +YQ +CN +Pg +aP +YQ +YQ +CN +rd +kr +vK +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Pg +rd +aP +YQ +kr +YQ +cn +aP +YQ +YQ +YQ +CN +Pg +YQ +YQ +YQ +YQ +Wl +YQ +kr +cn +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +CN +YQ +MW +YQ +MW +rd +Wl +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +vK +YQ +cn +YQ +YQ +YQ +CN +YQ +YQ +YM +MW +YQ +YQ +YQ +CN +rd +YQ +Wl +YQ +rd +Wl +aP +kr +ZV +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(26,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +oZ +tH +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +ZV +YQ +YQ +YQ +YQ +YQ +cn +YQ +YQ +YQ +YQ +YQ +YQ +YQ +rd +YQ +YQ +YQ +YQ +YQ +cn +YQ +YQ +YQ +CN +cn +aP +wH +YQ +YQ +YQ +wH +YQ +AF +Pg +YQ +YQ +YQ +YQ +YQ +rd +rd +Wl +YQ +YQ +YQ +CN +YQ +YQ +vK +YQ +YQ +YQ +YQ +ZV +Wl +Pg +VU +YQ +kr +rd +YQ +wH +YQ +vK +YQ +YQ +YQ +MW +YQ +MW +YQ +rF +Dz +YQ +YQ +Wl +YQ +YQ +YM +YQ +YQ +YQ +rd +YQ +YQ +wH +YQ +YQ +YQ +YQ +YQ +ZV +YQ +YQ +YQ +YQ +YQ +AF +YQ +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(27,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +ak +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +CN +MW +YQ +YQ +YM +cn +rF +YQ +YQ +YQ +CN +Wl +kr +rd +YQ +AF +YQ +Wl +rd +MW +Pg +aP +YQ +YQ +YQ +YQ +kr +mY +YQ +YQ +YQ +CN +YQ +YQ +YM +YQ +Wl +YQ +CN +YQ +kr +cn +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Fz +Wl +YQ +YQ +YQ +CN +rd +YQ +YQ +aP +YQ +YQ +YQ +YQ +CN +YQ +AF +YQ +rd +Wl +YQ +AF +Pg +Wl +YQ +YQ +rd +YQ +aP +YQ +YQ +pN +YQ +Wl +aP +YQ +YQ +YQ +CN +YQ +AF +YQ +YQ +YM +kr +aP +YQ +YQ +CN +mY +Pg +aP +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(28,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +rd +AF +YQ +YQ +wH +Wl +YQ +wH +YQ +ZV +Pg +vK +YQ +MW +YQ +CN +YQ +YQ +YQ +YM +YQ +AF +YQ +aP +Pg +YQ +YQ +YQ +YQ +YQ +vK +YQ +YQ +YQ +YQ +YQ +YQ +aP +rd +YQ +YQ +YQ +CN +MW +YQ +kr +YQ +Wl +wH +YQ +YQ +YQ +YQ +YQ +rd +YQ +YQ +YQ +CN +cn +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +CN +cn +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +CN +wH +YQ +YQ +YQ +YQ +aP +rd +Wl +YQ +Wl +rF +Pg +wH +YQ +YQ +vK +YQ +YQ +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(29,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +io +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Wl +vK +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +Pg +PB +YQ +cn +YQ +YQ +YQ +YQ +wH +Pg +cn +YQ +YQ +YQ +YQ +CN +YQ +rd +MW +YQ +YQ +CN +YQ +Wl +kr +YQ +YQ +YQ +CN +ZV +YQ +YM +YQ +YQ +wH +Pg +vK +YQ +YQ +AF +Wl +rd +YQ +YQ +YQ +CN +AF +cn +YQ +YQ +YQ +YQ +YQ +ZV +YQ +YM +Wl +YQ +YQ +rd +kr +YQ +YQ +AF +ZV +YQ +MW +YQ +MW +cn +rd +YQ +YQ +YQ +rd +YQ +YQ +YM +rd +AF +YQ +YQ +mY +YQ +cn +YQ +AF +YQ +VU +rd +cn +YQ +YQ +Wl +CN +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(30,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +AT +io +JG +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +kr +YQ +YQ +YQ +aP +YQ +cn +YQ +aP +YQ +YM +YQ +YQ +YQ +CN +aP +YQ +rd +YQ +Wl +YQ +kr +YQ +YQ +YQ +Wl +YQ +YM +YQ +YQ +YQ +YQ +AF +YQ +aP +YQ +YQ +YQ +rd +Pg +YQ +YQ +YQ +AF +YQ +aP +YQ +YQ +YQ +CN +ZV +aP +YQ +YQ +cn +YQ +YQ +MW +CN +AF +Wl +YQ +YQ +CN +YQ +rd +YQ +YQ +AF +wH +YQ +aP +YQ +cn +YQ +YQ +YQ +CN +Pg +np +YQ +wH +rd +kr +YQ +AF +YQ +vK +YQ +kr +YQ +YQ +YQ +CN +vK +YQ +YQ +YQ +CN +YQ +MW +YQ +YQ +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(31,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +VJ +FR +io +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +cn +YQ +YQ +YQ +CN +Pg +rd +YQ +rd +Wl +YQ +kr +YQ +Wl +cn +wH +YQ +YQ +YM +Wl +YQ +YQ +rd +YQ +YQ +YM +Pg +cn +YQ +Wl +YQ +YQ +YQ +YQ +CN +YQ +cn +YQ +AF +YQ +MW +YQ +YQ +YQ +CN +YQ +kr +YQ +YQ +YQ +YQ +YQ +YM +Wl +YQ +rd +AF +YQ +YQ +YQ +YQ +rd +YQ +YQ +wH +aP +YQ +YQ +YQ +CN +vK +rd +YQ +YM +Pg +YQ +YQ +YQ +rd +YQ +YQ +YQ +YQ +CN +ZV +YQ +YQ +YQ +CN +rd +cn +wH +YQ +YQ +wH +rd +aP +YQ +rd +YQ +ZV +YQ +YQ +YQ +aP +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(32,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +io +Qa +io +FL +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rF +YQ +aP +Wl +rd +YQ +YQ +YM +AF +YQ +YQ +rd +YQ +AF +YQ +mY +mY +YQ +Pg +YQ +YQ +YQ +CN +YQ +aP +YQ +YQ +YQ +AF +YQ +kr +ZV +YQ +Pg +YQ +AF +YQ +YQ +YQ +CN +wH +YQ +YQ +YQ +YQ +cn +YQ +YQ +cn +rd +MW +YQ +YQ +YQ +YQ +YM +aP +ZV +YQ +YQ +YQ +CN +Pg +AF +rd +mY +YQ +YQ +YQ +rd +Wl +ZV +AF +YQ +rd +rd +YQ +Wl +Ka +kr +YQ +YQ +AF +cn +Wl +YQ +YQ +YQ +Pg +YQ +Wl +YQ +YQ +Hy +kr +YQ +YQ +YQ +YQ +AF +YQ +YQ +YQ +CN +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(33,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +sq +io +io +LU +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +np +YQ +ZV +YQ +YQ +wH +YQ +YQ +YQ +CN +MW +aP +YQ +YQ +CN +rd +AF +YQ +YQ +ZV +YQ +cn +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +rd +YQ +Wl +rd +YQ +YQ +KM +YQ +aP +rd +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +CN +YQ +wH +rd +Wl +YQ +YQ +rd +YQ +kr +YQ +YQ +Pg +YQ +YQ +YM +YQ +YQ +kr +YQ +YQ +YQ +CN +Ey +du +uO +YQ +mY +YQ +rd +YQ +Pg +cn +MW +YQ +YQ +aP +CN +YQ +YM +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +pU +PT +Fd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(34,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Zn +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +wH +YQ +YQ +YQ +YQ +YQ +Mp +Mp +Mp +Mp +Mp +Mp +Mp +Mp +YQ +YQ +rd +YQ +YQ +YQ +CN +AF +YQ +MW +YQ +Wl +ZV +cn +YQ +Wl +YQ +YQ +rd +YQ +YQ +YQ +mY +YQ +kr +YQ +YQ +vK +YQ +YQ +YQ +CN +Pg +AF +YQ +YQ +CN +MW +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +CN +MW +YQ +YQ +Lu +io +du +io +jy +YQ +MW +YQ +CN +AF +aP +YQ +YQ +YQ +YQ +YQ +YQ +rd +Pg +Wl +YQ +YQ +YQ +rd +IR +FX +du +Ou +cA +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(35,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +st +st +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +wH +YQ +YQ +YQ +VU +aP +Pg +cn +rd +YQ +rd +Pg +ZV +kr +aP +Mp +BP +Xz +eD +Mp +gK +Eu +Mp +aP +YQ +Wl +YQ +YQ +YQ +YQ +YQ +cn +YQ +YQ +YM +Pg +YQ +YQ +YQ +CN +YQ +YQ +YQ +Wl +aP +YQ +AF +Pg +cn +YQ +AF +YQ +YQ +YQ +wH +YQ +YQ +Wo +YQ +AF +YQ +YQ +YQ +YQ +wH +AF +YQ +YQ +YQ +YQ +YQ +YQ +hw +du +io +JQ +du +du +DL +YQ +YQ +YQ +rd +YQ +vK +AF +YQ +kr +ZV +cn +YQ +AF +YQ +cn +rd +YQ +mE +du +Xa +La +uG +QA +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(36,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +st +Ir +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Pg +rd +MW +YQ +Pg +kr +YQ +YQ +rd +kr +YQ +YQ +YQ +Tw +YQ +AF +YQ +Mp +iL +Xz +Xz +VI +Jd +Jd +Mp +YQ +kr +YQ +AF +rd +kr +YQ +YQ +YQ +CN +YQ +YQ +AF +YQ +YQ +YQ +YQ +YQ +YQ +CN +ZV +YQ +wH +vK +Wl +YQ +Wl +YQ +CN +YQ +np +AF +rF +MW +YQ +cn +YQ +YQ +YQ +YM +cn +Xj +Xj +Xj +Xj +Xj +Xj +Xj +YQ +CN +js +du +Lv +io +KO +cn +wH +YQ +YM +YQ +YQ +YQ +CN +aP +Wl +YQ +YQ +aP +CN +vK +MW +Ka +XB +io +FN +uG +QA +pQ +pQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(37,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +LU +st +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +CN +ZV +YQ +YQ +YQ +CN +YQ +cn +YQ +YQ +YQ +YQ +rd +Mp +Xz +Xz +Ye +Mp +Jd +Jd +Mp +cJ +Ka +YQ +Ka +CN +Wl +YQ +YQ +kr +YQ +YQ +YQ +YQ +CN +vK +cn +Wl +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +ZV +YQ +YQ +YQ +CN +YQ +kr +rd +YQ +YQ +YQ +CN +YQ +YQ +Xj +my +Nn +BM +Ih +CA +Xj +YQ +FT +du +io +du +io +se +YQ +YQ +YQ +Pg +YQ +YQ +wH +YQ +wH +cn +YQ +YQ +YQ +Pg +wH +XB +du +io +du +uG +pQ +pQ +AV +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(38,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +AT +io +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +cn +rd +Wl +YQ +YQ +vK +YQ +AF +aP +rd +cn +YQ +YQ +CN +Mp +xQ +Gl +Mp +Mp +Jd +ux +vw +io +io +Fr +io +DL +Ka +AF +YQ +aP +cn +YQ +YQ +YQ +Wl +YQ +YQ +YM +YQ +YQ +YQ +CN +YQ +rF +cn +YQ +YQ +YQ +CN +rd +YQ +YQ +YQ +YQ +CN +Wl +YQ +YQ +YQ +YQ +Wl +rd +Xj +LL +Pc +Ih +Ih +Xq +Xj +YQ +YQ +uS +du +io +jh +YQ +YQ +YQ +CN +Wl +YQ +AF +Pg +rd +YQ +YQ +YQ +YM +AF +Ka +XB +io +bp +uG +QA +pQ +pQ +EA +bp +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(39,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +uG +pQ +dF +io +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +aP +YQ +YM +Pg +kr +YQ +YQ +YM +aP +YQ +YQ +Pg +Mp +Et +Mp +Jq +CH +Jd +Jd +Mp +zC +sQ +YQ +LW +Uv +io +DL +YM +Pg +YQ +Wl +YQ +rF +YQ +YQ +YQ +YQ +YQ +YQ +YQ +kr +YQ +wH +rd +YQ +YQ +YQ +YQ +rF +Wl +YQ +YQ +YQ +Pg +YQ +YM +kr +YQ +Pg +YQ +rF +Xj +XZ +yb +Ih +Ih +KC +Xj +YQ +YQ +CN +eC +Uc +rd +YQ +YQ +YQ +MW +YQ +aP +YM +YQ +YQ +YQ +CN +YQ +Pg +mE +du +io +Pp +uG +pQ +pQ +AV +EA +kJ +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(40,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +uG +pQ +pQ +pQ +dF +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +rd +vK +YQ +Mp +Mp +Gl +TR +Dj +Dj +Jd +Mp +YQ +YQ +YQ +CN +Pg +wm +ZV +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +Wl +YQ +YQ +CN +YQ +YQ +YM +MW +YQ +wH +rd +AF +YQ +YQ +vK +YQ +YQ +YQ +CN +ZV +Xj +Cv +Ih +Ih +Ih +ef +Xj +YQ +YQ +YQ +YQ +YQ +CN +YQ +Wl +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Fd +TG +io +cX +uG +QA +pQ +pQ +EA +FQ +go +NF +jH +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(41,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +uh +pQ +pQ +pQ +Hg +ll +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +AF +wH +YQ +YQ +Wl +hv +wH +vl +YQ +YQ +CN +MW +rd +Mp +Ct +Jd +Jd +Dj +Dj +Jd +IK +YQ +YQ +YQ +YQ +MW +YQ +YQ +YQ +Wl +YQ +mY +AF +cn +YQ +ZV +Wl +YQ +YQ +rd +Pg +AF +YQ +VU +YQ +YQ +YQ +rd +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +Wl +YQ +YQ +YQ +rd +Xj +Rd +Ih +Ih +Ih +Cc +Xj +Pg +YQ +YQ +YQ +kr +YQ +wH +Pg +YQ +YQ +YQ +CN +cn +wH +Wl +PT +zY +Xa +Ou +SW +uG +pQ +pQ +AV +EA +io +io +zP +fX +ZV +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(42,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +uG +pQ +pQ +pQ +pQ +Hg +WQ +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +rd +Pg +YQ +YQ +KM +YQ +Pg +YQ +YQ +YQ +ZV +cn +YQ +Mp +rS +Jd +PW +Dj +Dj +Jd +IK +wH +YQ +rd +kr +Wl +YQ +YQ +Tw +rd +wH +YQ +YQ +MW +kr +Pg +YQ +YQ +wH +vK +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +Wl +YQ +YQ +rd +KM +YQ +YQ +YQ +YQ +ZV +YQ +YQ +YM +YQ +Xj +Xj +Xj +mg +Xj +Xj +Xj +YQ +wH +Wl +YQ +YQ +YQ +YQ +YM +wH +YQ +YQ +YQ +YQ +Ka +FX +iG +du +Rp +uG +QA +pQ +pQ +EA +kJ +du +io +Jh +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(43,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +uh +pQ +pQ +pQ +pQ +pQ +dF +ak +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Fz +mY +aP +MW +cn +rd +YQ +YM +rF +AF +YQ +YQ +wH +Mp +im +Jd +lB +Dj +Dj +aA +Mp +YQ +YQ +YM +rd +AF +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +YQ +CN +kr +YQ +YQ +rF +YQ +YQ +YQ +YQ +YQ +Pg +is +YQ +cn +YQ +YM +kr +YQ +YQ +YQ +CN +YQ +YQ +Wl +rF +YQ +Kr +du +bw +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +cn +AF +vK +kr +YQ +Ka +io +bp +NU +uG +QA +pQ +pQ +AV +EA +io +io +zP +Gz +YQ +kr +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(44,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +uh +pQ +pQ +pQ +pQ +pQ +Hg +io +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +ZV +YQ +YQ +rd +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YM +Mp +Ct +Jd +Jd +Jd +Jd +Ha +Mp +vK +YQ +YQ +YQ +vK +rd +YQ +YM +Wl +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +Wl +YQ +AF +YQ +YQ +YQ +YM +rd +kr +YQ +YQ +YQ +CN +Pg +rd +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +rQ +du +DL +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +rF +MW +YQ +Wl +rT +XB +io +du +uG +QA +pQ +pQ +AV +EA +bp +du +io +RD +YQ +YQ +wH +aP +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(45,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +VJ +pQ +pQ +pQ +pQ +pQ +pQ +dF +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YM +YQ +YQ +YQ +CN +aP +YQ +YQ +YQ +CN +vK +YQ +aP +Mp +Mp +Mp +IK +IK +Mp +Mp +Mp +Wl +YQ +YQ +YQ +CN +YQ +YQ +YQ +Pg +rF +kr +YQ +YQ +YQ +AF +rF +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +rF +wH +YQ +YQ +YQ +YQ +YQ +YQ +rF +YQ +YQ +YQ +CN +YQ +MW +YQ +YQ +YQ +YQ +OU +du +DL +YQ +CN +wH +Wl +YQ +YM +Pg +Wl +YQ +YQ +Ka +EQ +du +cw +Rp +uG +pQ +pQ +AV +EA +io +du +NF +ie +Pb +vK +rd +YQ +YQ +CN +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(46,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +VJ +pQ +pQ +pQ +pQ +AV +AV +AS +dF +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rF +rd +YQ +YQ +YQ +vK +rd +YQ +YQ +YQ +Pg +YQ +cn +YQ +kr +YQ +rd +YQ +Pg +ZV +YQ +kr +aP +cn +YQ +Wl +rd +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +YM +Wl +rd +YQ +YQ +YQ +Pg +YQ +Ka +Ka +Ka +cJ +Ka +Ka +YQ +CN +wH +YQ +YQ +YQ +CN +YQ +rd +YQ +cn +wH +YQ +YQ +YQ +CN +Uv +io +DL +YQ +MW +YQ +YQ +rF +YQ +YQ +YQ +Ka +XB +du +du +Az +uG +QA +pQ +AV +EA +du +mh +cH +RD +LW +YQ +YQ +wH +YQ +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(47,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +uh +pQ +pQ +EA +io +io +io +VJ +dF +io +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Pg +cn +AF +vK +ZV +YQ +YQ +rd +AF +YQ +YM +wH +YQ +YQ +MW +YQ +YM +AF +YQ +YQ +YQ +YQ +AF +kr +Pg +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +vK +kr +YQ +YQ +YM +zY +iG +io +du +io +bp +io +xH +Ka +Rm +Wl +YQ +YQ +YQ +Wl +ZV +Wl +Pg +YQ +rd +YQ +YQ +og +OU +du +zA +Pg +YQ +YQ +YQ +CN +YQ +Ka +XB +FN +du +mh +uG +QA +pQ +AV +EA +rm +io +io +yu +JZ +YQ +kr +YQ +YQ +YQ +CN +cn +ZV +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(48,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +VJ +AV +EA +io +io +AR +AR +io +VJ +dF +od +io +AR +AR +AR +AR +AR +AR +AR +AR +YQ +CN +rd +Wl +YQ +YQ +Fz +wH +YQ +YQ +YQ +VU +aP +YQ +YQ +CN +Pg +YQ +YQ +YQ +YQ +CN +YQ +YM +wH +YQ +YQ +YM +Wl +YQ +YQ +cn +YQ +YQ +YQ +YQ +CN +YQ +YQ +Ka +XB +Ss +cH +uG +QA +QA +dF +Rp +du +io +kJ +lf +YJ +Ka +Ka +YM +YQ +YQ +YQ +CN +YQ +YQ +Xd +Ko +zK +io +io +Mf +YQ +YQ +YQ +Ka +XB +io +du +go +uG +QA +pQ +pQ +EA +kJ +io +Xa +jH +sQ +YQ +wH +YQ +YQ +YQ +YQ +YQ +wH +Wl +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(49,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +io +io +io +AR +AR +AR +AR +io +JK +GN +QA +dF +io +AR +AR +AR +AR +AR +AR +YQ +YQ +wH +YQ +YQ +Pg +YQ +YQ +YQ +YQ +CN +ZV +YQ +YQ +YQ +rd +vK +cn +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +AF +YQ +rd +wH +YQ +YQ +wH +mY +YQ +XB +io +FN +so +uG +pQ +pQ +pQ +pQ +QA +QA +dF +bp +so +mh +io +io +xH +Ka +Ka +Ka +YQ +YQ +YQ +CN +WU +zY +io +io +DL +CN +Ka +XB +Br +io +SW +uG +QA +pQ +pQ +AV +EA +io +io +zP +fX +YQ +YQ +YQ +rd +YQ +YQ +YQ +CN +kr +vK +aP +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(50,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +VJ +pQ +QA +dF +io +AR +AR +AR +AR +AR +YQ +YM +aP +Pv +rd +cn +YQ +YQ +YQ +rd +kr +vl +rd +YQ +AF +wH +YQ +YQ +YM +rd +aP +YQ +AF +Pg +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +ZV +cJ +Ka +rT +XB +io +FQ +uG +QA +pQ +pQ +AV +AV +AV +pQ +pQ +pQ +QA +QA +QA +dF +io +FN +cA +go +ro +Jc +Ka +Ka +Ka +OU +du +io +io +DL +mE +Xo +du +Rp +uG +QA +pQ +pQ +AV +EA +FQ +du +io +yu +kr +rF +YQ +YQ +YQ +CN +YQ +YQ +YQ +rd +MW +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(51,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +uh +pQ +pQ +QA +dF +io +io +AR +AR +YQ +PT +Fd +Ka +YQ +YQ +AF +cn +cn +rd +mY +MW +YQ +YQ +YQ +CN +rd +YQ +ZV +YQ +rd +YQ +CN +YQ +YQ +YQ +YQ +ZV +YQ +cn +YQ +Jf +mE +io +io +du +FN +du +uG +pQ +pQ +pQ +EA +ro +Ou +Az +VJ +AV +AV +AV +AV +pQ +pQ +QA +QA +QA +dF +FQ +TT +io +io +io +Jb +du +du +io +GA +cH +TT +uG +QA +pQ +pQ +pQ +EA +cw +kJ +cH +Jh +zC +YQ +YQ +YQ +Pg +YQ +YQ +aP +Wl +YQ +YQ +YQ +YQ +YQ +YQ +CN +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(52,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +pQ +AV +QA +QA +AR +AR +pP +KZ +io +io +xH +aI +YQ +YQ +Wo +YQ +qC +YQ +YQ +YQ +YQ +rF +YQ +YQ +YQ +CN +YQ +Wl +YQ +YQ +YQ +Tw +kr +rT +Ka +Ka +YU +Xa +UB +du +uG +QA +QA +QA +pQ +pQ +EA +io +bp +Pp +sh +ro +io +du +FN +TT +Rp +VJ +AV +pQ +pQ +pQ +pQ +QA +QA +QA +dF +du +NF +Jd +Jd +Jd +Az +NU +uG +pQ +pQ +pQ +AV +EA +io +io +yu +JZ +MW +YQ +YQ +YQ +CN +wH +AF +vK +rd +mY +YQ +YQ +YQ +CN +YQ +YQ +wH +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(53,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +VJ +AV +pQ +pQ +MY +QA +dF +du +Rp +Xa +xH +Ka +rT +YQ +YQ +YQ +CN +rd +Wl +kr +YQ +YQ +YQ +Pg +wH +YQ +YQ +YQ +Ka +Ka +XB +du +io +du +bp +mh +uG +QA +pQ +pQ +AV +AV +AV +EA +io +io +yu +sQ +CN +sQ +wm +sQ +sQ +Jo +io +Br +du +VJ +AV +AV +AV +pQ +pQ +pQ +pQ +QA +QA +Jd +Jd +Jd +QA +QA +pQ +pQ +AV +EA +io +Br +du +yu +YQ +rF +YQ +YQ +YQ +YQ +cn +AF +YQ +YQ +YQ +cn +MW +YQ +aP +YQ +Wl +cn +YQ +AF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(54,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +io +uh +MY +pQ +pQ +pQ +QA +dF +io +du +io +FN +YP +uW +Ka +YQ +cn +YQ +AF +YQ +wH +cn +rd +MW +YQ +YM +XB +io +du +bp +Rp +uG +QA +QA +QA +pQ +AV +AV +EA +Rp +Pp +du +Xo +Az +yu +YQ +YQ +YQ +kr +AF +YQ +YQ +YQ +JZ +nw +io +io +du +bp +io +VJ +AV +AV +AV +pQ +pQ +Jd +Jd +Jd +pQ +pQ +pQ +EA +io +io +FN +Jh +Pb +ZV +cn +YQ +YQ +YM +rF +Wl +VU +rd +YQ +YQ +YQ +CN +YQ +rd +AF +ZV +Pg +kr +rd +rF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(55,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +pP +pQ +AV +AV +pQ +QA +hN +dF +du +kJ +KZ +io +xH +Ka +aI +Ka +Ka +YQ +CN +YQ +ab +Ka +mE +du +io +uG +QA +QA +pQ +pQ +pQ +pQ +EA +KZ +kJ +Ou +NU +yu +sQ +sQ +JZ +Wl +cn +MW +YQ +YQ +CN +cn +YQ +YQ +AF +wH +sQ +sQ +sQ +uS +io +io +io +FN +FQ +zV +AV +Jd +Jd +Jd +AV +AV +EA +kJ +du +yu +fX +YQ +YQ +YQ +CN +YQ +YQ +kr +YQ +YQ +wH +YQ +YQ +YQ +YQ +wH +YQ +YQ +YQ +YM +YQ +aP +YQ +CN +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(56,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +Xj +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +mh +aB +VJ +pQ +pQ +pQ +QA +QA +dF +io +du +du +Ss +mh +io +xH +Ka +Cu +io +FN +aB +Az +uG +pQ +pQ +pQ +AV +AV +EA +du +Br +io +yu +YQ +JZ +YQ +YQ +Pg +vK +kr +YQ +YQ +YQ +YQ +ZV +Pg +YQ +YQ +YM +YQ +YQ +YQ +CN +ZV +sQ +sQ +sQ +DS +px +Ko +yC +Jd +Jd +Jd +nU +FQ +cH +Az +PP +cn +rF +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +rd +CN +rF +Wl +AF +YQ +YQ +YQ +CN +YQ +aP +YQ +YQ +YQ +cn +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(57,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +JF +Ex +JF +Xj +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +io +cw +VJ +AV +pQ +pQ +pQ +pQ +QA +QA +QA +QA +dF +NF +Mc +du +io +FQ +uG +QA +QA +pQ +pQ +pQ +EA +mh +Ou +io +io +PY +wm +RX +YQ +wH +MW +Wl +AF +ZV +YQ +YQ +Vm +CN +MW +Wl +YQ +YQ +CN +YQ +cn +YQ +Pg +rF +YQ +YM +cn +Wl +YQ +Pb +tn +PS +du +io +xH +sQ +JZ +sQ +sQ +YQ +CN +YQ +kr +cn +AF +YQ +YQ +YQ +YQ +YQ +YQ +cn +YQ +YQ +YQ +YQ +YQ +YQ +aP +vK +rd +cn +Pg +kr +wH +Wl +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(58,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +qG +Di +JF +Ij +JF +Ex +JF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Jo +io +bp +mh +VJ +AV +AV +AV +AV +pQ +pQ +pQ +pQ +QA +QA +QA +QA +QA +pQ +pQ +pQ +AV +EA +io +io +FN +yu +sQ +sQ +CN +YQ +wJ +Wl +kr +YQ +YQ +YQ +CN +YQ +Oe +Ko +wj +YQ +YQ +YQ +YQ +rF +MW +YQ +YQ +Wl +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +OU +io +io +du +BZ +rF +Wl +YQ +YQ +YQ +YQ +YQ +CN +rF +MW +YQ +cn +YQ +YQ +YM +Pg +Wl +YQ +YQ +YQ +CN +YQ +kr +YQ +YQ +MW +YQ +YQ +YQ +YQ +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(59,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +CT +JF +JF +JF +Gd +Dj +Ij +JF +Ex +Xj +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +sQ +nw +ro +UB +Pp +TT +FQ +io +VJ +AV +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +AV +EA +FQ +Ss +io +PM +sQ +YQ +YQ +rF +YQ +YQ +YQ +CN +rF +YQ +YQ +YQ +wH +YQ +YM +nJ +YQ +YQ +YQ +CN +kr +wH +YQ +YQ +YQ +Ii +YQ +YQ +YQ +YQ +YQ +rF +YQ +YQ +Pg +Jo +du +io +kI +rd +YQ +kr +rF +YQ +YQ +wH +YQ +YQ +YQ +YQ +CN +rF +YQ +YQ +rd +YQ +YQ +YQ +YQ +YQ +YQ +YQ +cn +YQ +YQ +CN +YQ +YQ +YQ +CN +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(60,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Ex +JF +JF +Dj +Dj +LK +Dj +LK +Dj +Ij +JF +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rd +wH +sQ +sQ +Wh +fX +Ni +io +Br +du +VJ +AV +AV +AV +AV +AV +AV +EA +io +io +io +zP +lr +MW +YQ +YQ +YQ +CN +YQ +YQ +vK +vK +YQ +YM +rF +AF +Pg +YQ +YQ +Wl +YQ +YQ +YQ +YQ +YQ +YQ +YQ +og +YQ +vK +AF +wH +YQ +YQ +YQ +CN +YQ +Wl +YQ +XB +du +yu +YQ +YQ +YQ +CN +YQ +YQ +YM +rd +Wl +YQ +YQ +YQ +YQ +rd +YQ +YQ +YQ +CN +rd +rF +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +AF +YQ +wH +YQ +rF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(61,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +cT +JF +Dj +Dj +Dj +Dj +TM +Dj +TM +Dj +LK +JF +op +AR +Xj +AR +AR +AR +AR +Qp +Qp +TU +Lp +AR +AR +AR +vq +Ka +Ka +aI +PT +Gz +Jo +NF +Pp +du +Az +io +SW +io +FN +Ss +cH +yu +us +Pg +kf +vK +rF +YQ +Wl +YQ +YQ +YQ +td +Wl +YQ +YQ +ZV +MW +YQ +YQ +YQ +YQ +AF +rd +YQ +YQ +vK +YQ +Xd +Ko +RW +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +YQ +OU +du +io +DL +CN +YQ +wH +Pg +AF +YQ +ZV +vK +YQ +YQ +pN +YQ +YQ +YM +Wl +YQ +YQ +YQ +YQ +cn +rd +YQ +Wl +jL +kr +YQ +YQ +Wl +ZV +YQ +MW +KM +vK +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(62,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +yr +Dj +Yh +gN +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +JF +JF +Qp +JF +Qp +Qp +Qp +Qp +Qp +Lp +AR +AR +TU +Lp +dC +io +io +du +io +qz +Ka +CC +CC +fX +Wh +CC +CC +CC +CC +Wh +sQ +YQ +Rm +YQ +YQ +YQ +CN +wH +rd +YQ +YQ +rF +YQ +YQ +YQ +CN +YQ +rd +YQ +Wl +Jf +YQ +Ka +YQ +YQ +YQ +rd +YQ +YQ +nJ +YQ +YQ +YQ +YQ +YQ +YQ +Wl +YQ +rF +wH +OU +du +io +DL +YQ +Wl +rd +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +ZV +YQ +YQ +rF +YQ +YQ +YM +Wl +YQ +YQ +CN +oj +YQ +Pu +YQ +mY +KJ +YQ +YQ +YQ +CN +rd +Pg +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(63,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +rv +Dj +OB +wo +Dj +Dj +Dj +Dj +Dj +Dj +Dj +Dj +JF +JF +JF +Qp +JF +Qp +Qp +AR +AR +AR +AR +AR +Lp +TU +st +du +du +io +du +du +io +CY +io +xH +ow +io +du +xL +io +xH +CN +XB +du +DL +YQ +Ka +ZV +AF +YQ +YQ +YQ +CN +cn +MW +YQ +Hk +Pg +YQ +YQ +XB +du +WE +du +lf +YQ +YQ +YQ +YQ +rF +YQ +YQ +YQ +rF +YQ +MW +YQ +YQ +YQ +Ka +Ka +Ka +Jo +du +SD +YQ +YQ +CN +YQ +YQ +YQ +Pg +YQ +wH +YQ +YQ +YQ +YQ +CN +kr +YQ +YQ +MW +Pg +wH +YQ +jL +YQ +YQ +YQ +rd +YQ +YQ +rd +YQ +YQ +YQ +aP +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(64,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +cT +JF +Dj +Dj +Dj +Dj +TM +Dj +TM +Dj +Ij +JF +EO +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +TI +Gz +zC +sQ +sQ +sQ +JZ +hl +du +io +MF +du +xV +du +du +io +rP +du +yu +Wl +rH +io +DL +YM +wJ +YQ +ZV +wH +YQ +kr +Hs +Ko +wj +YQ +XB +du +io +io +io +io +Jc +Ka +Ka +Ka +Ka +YQ +Pg +Ka +Ka +AF +Ka +Ka +Ka +Ll +io +du +du +DL +ue +Ko +wj +YQ +YQ +kr +YQ +YQ +YM +Wl +YQ +cn +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +kr +YQ +AF +YQ +YQ +XC +YQ +YQ +CV +YQ +YQ +rF +AF +cn +kr +mY +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(65,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +Xj +Ex +JF +JF +Dj +Dj +Ij +Dj +Ij +Dj +LK +JF +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Pg +YQ +cn +YQ +aP +YQ +YQ +YQ +KM +rd +bg +sQ +YQ +sQ +CN +sQ +sQ +XR +Pg +sQ +wH +rd +AF +sQ +kr +YQ +rF +YQ +Wl +YQ +YQ +YQ +CN +nJ +rF +OU +io +du +io +io +du +du +io +du +io +io +io +xH +XB +du +io +WE +du +io +io +io +du +io +du +DL +YQ +ur +rF +Wl +MW +YQ +YQ +YQ +rF +YQ +rd +MW +vK +Wl +rd +YQ +YQ +YQ +Wl +ZV +rd +YQ +CN +oj +XC +HC +XC +jL +cn +YQ +YQ +CN +wH +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(66,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +iZ +JF +JF +JF +Gd +Dj +LK +JF +Ex +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +vK +rd +YQ +YQ +CN +YQ +YQ +YM +wH +kr +Wl +YQ +aP +YQ +YQ +Wl +YQ +YQ +rd +rd +Wl +YQ +CN +YQ +Wj +vK +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +cn +YQ +OU +du +io +du +YF +io +io +io +io +ia +du +du +io +io +io +io +du +Ty +io +du +du +io +ie +sQ +YQ +YQ +YQ +rd +wH +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +kr +YQ +ZV +Pg +AF +rF +YQ +YQ +mY +YQ +vK +YQ +Yd +XC +YQ +wH +YQ +YQ +YQ +YQ +YQ +rd +vK +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(67,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +Vh +qs +JF +LK +JF +Ex +JF +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Wl +YQ +YQ +vl +ZV +Pg +pK +YQ +YQ +MW +YQ +YQ +YQ +CN +rF +YQ +YQ +YQ +CN +YQ +YQ +vK +ZV +MW +YQ +YQ +CN +YQ +YQ +MW +Pg +cn +YQ +YQ +YQ +CN +YQ +IC +du +io +io +du +io +du +yu +YQ +sQ +Jo +du +yu +nD +sQ +sQ +YQ +sQ +sQ +sQ +sQ +YQ +Wl +rF +YQ +YQ +YQ +CN +YQ +YQ +kr +cn +rd +YQ +YQ +YQ +YQ +YQ +YQ +CN +vK +YQ +YQ +YQ +CN +YQ +YQ +MW +YQ +YQ +YQ +CV +YQ +aP +YQ +YQ +YQ +CN +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(68,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Xj +Xj +Xj +JF +Ex +JF +Xj +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +wH +rd +YQ +Xh +YQ +YQ +YQ +YQ +CN +YQ +ZV +cn +wH +YQ +YQ +YQ +MW +YQ +cn +cn +rd +YQ +Wl +cn +YQ +kr +rF +YQ +YQ +YM +YQ +YQ +YQ +mY +YQ +YQ +Jo +io +io +io +io +yu +YQ +rF +Wl +YQ +IF +YQ +cn +Vm +YQ +YQ +CN +rF +YQ +YQ +YQ +CN +cn +YQ +YQ +YQ +YQ +rF +Wl +rd +vK +YQ +YQ +YQ +YM +YQ +YQ +rF +YQ +rd +YQ +YQ +Wl +wH +YQ +YQ +CN +CV +Pu +rd +YQ +YQ +YQ +YQ +YQ +YQ +Wl +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(69,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +rF +YQ +YQ +YQ +YQ +rd +YQ +Wl +YQ +CN +wH +Wl +YQ +YQ +CN +YQ +YQ +YM +vK +YQ +Wl +Wl +YQ +YQ +CN +Wl +YQ +rd +YQ +Pg +rF +OU +du +io +du +yu +Pg +YQ +YQ +YQ +OU +io +xH +Oe +Ko +wj +YQ +YQ +cn +Pg +YQ +YQ +YQ +YQ +YM +Wl +vK +YQ +YM +AF +YQ +YQ +YQ +CN +vK +rd +Wl +rd +YQ +YQ +cn +ZV +MW +YQ +rd +aP +vK +YQ +ZV +rd +AF +cn +YQ +YQ +CN +YQ +cn +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(70,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +aP +vK +Pg +YQ +YQ +YQ +cn +Wl +YQ +AF +YQ +CN +YQ +AF +YQ +YQ +AF +YQ +YQ +YQ +Wl +AF +rF +YQ +YQ +YQ +YQ +CN +YQ +vK +rF +YQ +AF +vK +YQ +YQ +Wl +OU +io +io +io +DL +YQ +YQ +CN +YQ +Kr +io +du +bw +nJ +wH +YQ +YQ +YQ +Tw +wH +YQ +YQ +YQ +CN +rF +YQ +YQ +YQ +CN +cn +YQ +YQ +wH +cn +YQ +AF +YQ +YQ +YQ +CN +YQ +YQ +rF +Wl +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +vK +YQ +aP +YQ +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(71,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +AF +kr +YQ +rd +AF +rd +wH +kr +YQ +YQ +aP +YQ +YQ +YQ +vK +Pg +YQ +YQ +YQ +CN +rF +YQ +kr +YQ +YQ +MW +YQ +YQ +YQ +wH +YQ +cn +ZV +Mp +Mp +Jj +Jj +Mp +Mp +YQ +PS +du +io +DL +YQ +YQ +rd +YQ +YQ +Jo +io +KX +YQ +AF +YQ +YQ +YQ +YQ +YM +YQ +YQ +YQ +VP +Pg +YQ +YQ +YQ +YQ +YQ +ZV +Wl +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +AF +YQ +YQ +Pg +YQ +YQ +YM +Wl +YQ +YQ +wH +ZV +AF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(72,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YM +cn +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +Tw +wH +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +YQ +CN +Pg +YQ +YQ +YQ +CN +Pg +Wl +YQ +YQ +YQ +jF +Mp +gZ +Jd +Jd +tC +Mp +wj +XB +du +nv +YQ +rF +YQ +qg +qg +yK +yY +yY +qg +qg +Wd +ZV +YQ +YQ +YQ +YQ +Mp +Mp +Mp +Mp +Mp +Mp +Mp +YQ +YQ +YQ +CN +rd +KM +YQ +YQ +YQ +cn +YQ +YQ +YM +YQ +Wl +YQ +YQ +YQ +CN +aP +YQ +YQ +YQ +AF +YQ +YQ +YQ +CN +Pg +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(73,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +rd +YQ +MW +MW +YQ +YQ +YQ +cn +YQ +YQ +Pg +YQ +vK +Wl +YQ +Wl +YQ +Wl +vK +YQ +YQ +YQ +wH +Wl +YQ +YQ +YQ +wH +cn +YQ +YQ +YQ +YQ +YQ +Mp +gZ +Jd +Jd +xr +Mp +XB +io +Ty +io +DL +YM +YQ +qg +pT +nq +PN +zH +qg +zl +Wd +YQ +Wl +YQ +wH +Mp +Gl +TC +cg +RI +Mp +Qc +Mp +Mp +wj +YQ +YQ +YQ +MW +rd +YQ +YQ +YQ +CN +YQ +kr +rF +rd +YQ +YQ +YQ +cn +YQ +YQ +YQ +CN +cn +YQ +YQ +YQ +MW +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(74,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Pg +aP +YQ +YQ +CN +AF +Wl +kr +aP +MW +rd +rd +kr +YQ +YM +rF +YQ +YQ +YQ +YQ +YQ +YM +rd +YQ +mY +YQ +YQ +YQ +YM +YQ +YQ +YQ +CN +Pg +rd +Mp +gZ +Jd +Jd +Jd +Hw +io +du +xH +sQ +YQ +YQ +vK +yK +Eq +eI +PN +yW +qg +zl +Wd +YQ +Oe +Mp +Mp +Mp +Jq +Jd +Jd +Jd +FV +MP +Yt +Mp +Wl +YQ +YQ +YQ +CN +AF +Wl +YQ +rd +rd +YQ +YQ +YQ +YQ +YM +ZV +rd +VU +YQ +YQ +MW +YQ +rF +kr +YQ +cn +YQ +vK +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(75,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Wl +YQ +YQ +YQ +YQ +rd +YQ +YQ +AF +YQ +YQ +YM +YQ +rd +YQ +Wl +YQ +YQ +YQ +CN +rd +rF +YQ +YQ +YQ +CN +ZV +YQ +YQ +YQ +YQ +YQ +YQ +MW +YQ +Mp +eK +Jd +Jd +aY +Mp +ne +du +io +DL +YQ +YQ +YQ +qg +pT +nq +PN +zH +qg +zl +Wd +YQ +kr +Mp +Kl +Mp +gv +Jd +Jd +Kw +Mp +MP +iH +Mp +YQ +YQ +YQ +Pg +YQ +kr +YQ +YQ +rF +YQ +YQ +YQ +CN +rd +Pg +YQ +YQ +YQ +CN +YQ +rd +AF +rd +YQ +vK +YQ +Wl +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(76,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +rd +YQ +kr +Wl +YQ +YQ +YQ +CN +rd +YQ +YQ +YQ +YQ +YQ +CN +cn +YQ +YQ +YQ +AF +YQ +YQ +YQ +rF +YQ +Wl +YQ +YQ +YQ +CN +cn +YQ +YQ +wH +Mp +Gl +hy +Jd +Us +Mp +Ka +wF +du +DL +MW +YQ +kr +qg +qg +yK +yY +yY +qg +qg +Wd +wH +YQ +IK +Jd +Sk +Jd +Jd +Jd +sn +Mp +MP +kQ +Mp +rF +cn +AF +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +Wl +rF +YQ +YQ +YQ +YQ +aP +YQ +YM +YQ +YQ +YQ +CN +AF +rF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(77,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +CN +YQ +YQ +aP +YQ +Wl +YQ +ZV +Wl +YQ +YQ +CN +YQ +VU +YQ +rd +YQ +ZV +MW +YQ +YQ +YQ +CN +YQ +AF +Pg +YQ +YQ +YQ +rF +YQ +YQ +YQ +CN +Mp +VL +Jd +Jd +Jd +Hw +io +du +io +xH +YQ +YQ +YQ +YQ +YQ +hw +du +io +zr +AF +YQ +YQ +Pg +Jj +Jd +Gl +Mp +sD +Nx +Mp +Gl +Mp +Mp +Mp +cn +vK +YQ +YQ +YQ +CN +YQ +YQ +YQ +kr +YQ +YQ +YM +YQ +YQ +YQ +CN +YQ +kr +YQ +YQ +YQ +YQ +aP +wH +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(78,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Tv +YQ +ZV +YQ +YQ +YQ +YQ +CN +cn +YQ +kr +YQ +YQ +YQ +YQ +YQ +ZV +vK +YQ +YQ +YM +Wl +YQ +YQ +YQ +YQ +YQ +YQ +CN +cn +MW +Pg +AF +Wl +YQ +YQ +YQ +Mp +VL +Jd +Jd +EL +Mp +Jo +io +du +xH +YM +rF +YQ +YQ +YQ +ow +io +du +DL +YQ +rd +YQ +rF +Mp +Jd +Jd +Jd +Wi +Wi +CH +Jd +dn +XM +Mp +YQ +YM +YQ +YQ +rd +YQ +YQ +YM +rd +MW +YQ +YQ +AF +cn +YQ +YQ +Wl +YQ +YQ +AF +rd +cn +Pg +Wl +YQ +cn +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(79,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +AF +kr +rd +YQ +YQ +YQ +YQ +MW +AF +YQ +YQ +rd +Pg +aP +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +KM +Wl +YQ +YQ +wH +YQ +YQ +YQ +YQ +CN +YQ +YQ +YM +mt +Mp +VL +Jd +Jd +Jq +Mp +QX +Jo +io +du +DL +YQ +YQ +YQ +kr +YQ +uc +io +FP +YQ +YQ +YQ +cn +Mp +Jd +Jd +Bn +Jd +Jd +Jd +Bn +Jd +iR +Mp +YQ +rF +Wl +wH +mY +YQ +YQ +Pg +YQ +YQ +YQ +CN +ZV +rd +vK +AF +YQ +YQ +YQ +YQ +CN +YQ +aP +YQ +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(80,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Wl +mY +YQ +YQ +YQ +cn +ZV +YQ +YM +rd +aP +YQ +YQ +CN +mY +AF +YQ +YQ +YQ +wH +YQ +YQ +Pg +YQ +YQ +YQ +AF +Wl +YQ +kr +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Mp +Mp +Jj +Jj +Mp +Mp +YQ +rF +Jo +io +DL +YQ +Wl +YQ +Vm +tZ +io +yu +YQ +YQ +YQ +CN +YQ +IK +Jd +dn +DU +fW +Jd +dn +ii +fW +Jd +IK +AF +YQ +YQ +kr +YQ +YQ +YQ +CN +YQ +YQ +rF +Wl +wH +YQ +aP +YQ +kr +YQ +cn +YQ +YQ +wH +vK +MW +ZV +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(81,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +aP +YQ +YQ +YQ +CN +YQ +Wl +YQ +kr +YQ +YQ +YQ +YQ +cn +YQ +YQ +YQ +MW +rd +YQ +YQ +kr +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +AF +YQ +YQ +YQ +CN +vK +YQ +wH +YQ +YQ +ZV +YQ +YQ +wH +XB +du +DL +Pg +YQ +gU +Ko +Ro +du +xH +YQ +aP +Pg +YQ +AF +IK +Bn +Jd +iR +Jd +Jd +Jd +iR +Jd +Jd +IK +YQ +YQ +YQ +CN +YQ +YQ +rF +YQ +rd +wH +AF +rd +YQ +YQ +YQ +CN +YQ +ZV +rd +Wl +YQ +YQ +CN +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(82,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +MW +YQ +YQ +YQ +YQ +rd +aP +YQ +YQ +wH +Wl +YQ +Wo +ZV +YQ +YQ +YQ +CN +YQ +YQ +YQ +Tw +YQ +YQ +YQ +YQ +Wl +YQ +rF +YQ +YQ +Wl +CN +YQ +cn +YQ +YQ +YQ +YQ +YQ +YQ +YQ +aP +YQ +OU +io +UH +jj +Ka +Ka +Ka +nJ +YU +du +io +xH +ZV +YQ +YQ +YQ +Mp +yX +wZ +Jd +Jd +Ct +Xm +Mx +dW +PW +Jj +vK +YQ +kr +YQ +Wl +rd +YQ +YQ +YQ +CN +cn +YQ +YQ +YQ +YQ +YQ +YQ +bn +aP +YQ +YQ +YQ +Wl +AF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(83,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rd +YQ +YM +aP +rd +YQ +Wl +kr +YQ +YQ +YQ +CN +YQ +YQ +rd +vK +YQ +YQ +YQ +YQ +YQ +YQ +Wl +wH +YQ +YQ +YM +vK +YQ +rx +YQ +Wl +YQ +YQ +wH +rd +Pg +YQ +YQ +YQ +CN +YQ +YQ +YQ +rd +Sc +io +du +io +io +du +io +QB +io +io +du +du +xH +Wl +YQ +DO +Mp +IK +Gl +EP +Mp +Jj +Gl +le +Qr +rt +Mp +Pg +rF +YQ +YQ +cn +AF +YQ +YQ +YQ +YQ +YQ +YQ +CN +rF +AF +Pg +YQ +YQ +AF +YQ +YQ +rd +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(84,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YM +kr +YQ +YQ +YQ +wH +vK +Pg +YQ +YQ +YQ +aP +YQ +YQ +CN +wH +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +YQ +YQ +cn +YQ +YQ +CN +cn +YQ +YQ +YM +YQ +YQ +YQ +YQ +YQ +Vm +cn +YQ +YQ +vK +OU +du +io +du +du +hk +io +DL +Jo +du +io +du +du +xH +Ka +Ka +Ka +ZV +XB +io +St +YQ +Mp +Mp +IK +Mp +Mp +vc +YQ +YQ +Vm +CN +MW +YQ +cn +kr +YQ +kr +vK +Pg +YQ +YQ +YQ +Tw +wH +YQ +YQ +YQ +CN +cn +rF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(85,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Pg +YQ +ZV +AF +YQ +YQ +YQ +CN +YQ +Wl +YM +AF +YQ +YQ +YQ +YQ +YQ +YQ +YQ +kr +YQ +cn +YQ +YQ +YQ +YQ +YQ +CN +tu +YQ +YQ +MW +AF +YQ +YQ +Wl +CN +rF +ZV +YQ +IW +Ko +wj +YQ +kr +YQ +Fd +uc +io +yu +jb +YQ +sQ +wH +vK +sQ +Jo +io +io +du +du +io +io +WE +du +io +xH +uW +Ka +Ka +YQ +kr +YQ +YQ +wH +Oe +Ko +Gu +YQ +YQ +Tw +MW +MW +YQ +Wl +rd +MW +YQ +YQ +rd +YQ +cn +kr +YQ +AU +ZV +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(86,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Wl +wH +aP +YQ +YQ +cn +YQ +YQ +YQ +YQ +YQ +YQ +MW +kr +Pg +YQ +aP +YQ +CN +Wl +YQ +YQ +cn +rF +AF +Wl +YQ +YQ +YQ +YQ +rd +YQ +YQ +vK +YQ +YQ +YQ +YQ +YQ +YQ +wH +YQ +nJ +MW +YQ +YQ +OU +du +io +du +DL +YQ +YQ +Wl +YQ +YQ +rF +rd +CR +du +du +mZ +Wa +du +io +io +du +io +du +du +io +Nd +YJ +Ka +uW +YQ +YQ +lJ +YQ +YQ +YQ +wH +YQ +rd +YQ +CN +wH +cn +ZV +YQ +YQ +aP +Wl +YQ +rd +YQ +AF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(87,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +YQ +CN +YQ +YQ +Wl +aP +KM +Ym +cn +YQ +YQ +YM +rF +Wl +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +cn +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +wH +YQ +kr +YQ +YQ +YQ +YQ +YQ +YQ +aP +OU +du +io +yu +Vm +aP +YQ +YQ +YQ +MW +YQ +YQ +YQ +sQ +sQ +YQ +YQ +sQ +sQ +Jo +io +du +hk +io +du +io +du +du +io +lf +YQ +YQ +YQ +kr +aP +fz +YQ +YQ +YQ +YQ +YQ +rF +YQ +YQ +YQ +CN +YQ +YQ +YM +Wl +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(88,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +cn +kr +YQ +YQ +Wl +YQ +YM +wH +kr +YQ +YQ +YQ +CN +YQ +YQ +wH +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +CN +YQ +rF +YQ +YQ +ZV +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +mY +AF +YQ +YQ +YM +YQ +YQ +OU +io +UH +Oe +Ko +wj +kr +YQ +YQ +CV +YQ +YQ +YM +MW +YQ +aP +YQ +YQ +YQ +YQ +sQ +LW +wH +Jo +io +io +io +du +io +io +DL +YM +rd +Mp +Mp +Mp +Mp +Mp +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(89,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +PB +YQ +YQ +Pg +YQ +Wl +YQ +YQ +YQ +AF +YQ +YQ +YQ +mY +AF +Wl +YQ +YQ +CN +YQ +ZV +wH +Pg +YQ +YQ +YQ +ZV +Wl +YQ +kr +YQ +wH +Wl +vK +Hk +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Vm +vK +Wl +YQ +YQ +kw +du +DL +hp +YQ +YQ +YQ +YQ +YQ +Ka +SF +Ka +Ar +YQ +vK +YQ +Vm +YQ +CN +YQ +YQ +YQ +YQ +sQ +sQ +sQ +Jo +du +QC +Ka +Ka +Ka +Mp +Ct +MJ +zI +Mp +cn +YQ +YQ +wH +YQ +kr +AF +YQ +YQ +YQ +CN +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(90,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +CN +MW +aP +YQ +YQ +YQ +CN +YQ +YQ +YM +cn +ZV +pN +YQ +cn +YQ +YQ +YQ +YQ +Aa +YQ +YQ +YQ +YQ +CN +MW +YQ +YQ +YQ +CN +rF +Mp +Mp +Mp +Mp +Mp +IK +Gl +IK +Mp +bf +YQ +YQ +YQ +xU +io +du +DL +ZV +AF +cn +Ka +Ka +EQ +du +du +Ud +io +as +YQ +Oe +Ko +wj +YQ +YQ +YQ +YQ +YM +YQ +YQ +YQ +YM +Jo +du +du +io +du +uj +Jd +Jd +An +Mp +YQ +rd +aP +Wl +YQ +YQ +vK +Wl +YQ +YQ +wH +vK +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(91,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +YQ +YQ +kr +Pg +YQ +YQ +YQ +Wl +MW +wH +aP +Wl +YQ +kr +YQ +YQ +MW +YQ +YQ +YQ +CN +YQ +YQ +YQ +vK +Pg +YQ +YQ +YQ +YQ +ZV +Mp +uZ +Jd +Iw +Wi +Jd +vx +Jd +yM +Mp +AF +YQ +Ol +io +du +io +DL +YQ +cD +ws +io +Kk +io +du +uG +dF +du +io +yy +rd +nJ +YQ +YQ +MW +YQ +YQ +Pg +ZV +YQ +YQ +YQ +OU +io +io +yu +JZ +Mp +fh +Jd +af +Mp +mk +vK +rd +YQ +YQ +YQ +td +YQ +Pg +Bp +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(92,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +rd +AF +YQ +YQ +YQ +cn +rd +YQ +aP +YQ +cn +YQ +YQ +YM +YQ +nm +YQ +CN +YQ +YQ +YQ +YQ +YQ +YM +zx +cn +YQ +YQ +YQ +YM +cn +Pg +Mp +BY +Jd +sS +Wi +Co +dm +tK +Jd +Jj +YQ +YQ +OU +du +io +yu +rd +OU +du +io +du +uG +QA +QA +pQ +pQ +dF +io +du +xH +AF +YQ +YQ +YQ +YQ +YQ +YQ +Vm +cn +YQ +wH +YQ +pm +io +DL +Oe +Mp +Mp +FO +Mp +Mp +YQ +YM +YQ +YQ +YQ +MW +YQ +YQ +YM +rF +Wl +AR +AR +AR +AR +AR +AR +AR +kW +Xj +Xj +AR +kW +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(93,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +CN +YQ +YQ +YQ +CN +Wl +vK +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +aP +YQ +YQ +vK +MW +YQ +YQ +YQ +Wl +YQ +YQ +YQ +CN +YQ +YQ +YQ +rd +Mp +kB +Jd +kz +Wi +Jd +Jt +Jd +Jd +Gl +Ka +Ka +mE +io +io +DL +YQ +hH +du +Ud +uG +pQ +pQ +pQ +pQ +pQ +pQ +dF +io +io +DL +YQ +YQ +YQ +Wl +Mp +Mp +Mp +Mp +Mp +rd +OU +io +du +DL +YQ +Mp +pn +Jd +XV +Mp +YQ +YQ +YQ +YQ +CN +YQ +kr +YQ +rd +ZV +cn +AR +AR +AR +AR +AR +AR +AR +Xj +qa +Ih +ti +qi +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(94,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +aP +YQ +YQ +YQ +YQ +YQ +YQ +aP +AF +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YM +Wl +YQ +YQ +YQ +CN +AF +YQ +YQ +YQ +rd +YQ +Wl +YQ +CN +Mp +fm +Jd +dt +Wi +Jd +Jd +Jd +Jd +vZ +du +io +du +du +io +Mf +YQ +KR +io +uG +pQ +pQ +pQ +pQ +pQ +pQ +pQ +Hg +Kk +io +xH +YQ +YM +YQ +YQ +Mp +zI +MJ +Ct +Mp +Ka +OU +io +io +DL +AF +Mp +Mp +Mp +Mp +Mp +Pg +YQ +YQ +YQ +wH +Wl +YQ +aP +YQ +CN +YQ +AR +AR +AR +AR +AR +AR +AR +AR +ti +Ih +oW +qa +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(95,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +vK +cn +YQ +Wl +kr +YQ +YQ +YM +YQ +dY +YQ +YQ +Wl +wH +YQ +Pg +vK +YQ +YQ +rF +Pg +cn +YQ +YQ +YQ +cn +YQ +wH +YQ +MW +Wl +YQ +YQ +Oe +Mp +Ct +Jd +Mh +Wi +Jd +Jd +Jd +Jd +Gl +oX +sQ +CR +du +io +DL +Kr +du +io +uh +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +dF +io +du +qr +YQ +rd +vK +Mp +wv +Jd +Jd +tS +io +QB +du +UH +YQ +YQ +YQ +YQ +Wl +YQ +MW +YQ +rd +AF +YQ +rF +rd +YQ +YQ +YQ +YQ +AF +AR +AR +AR +AR +AR +AR +AR +Xj +qa +qa +Ih +Ih +kW +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(96,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +mY +YQ +YM +YQ +aP +AF +YQ +rd +Pg +YQ +YQ +YQ +CN +vK +aP +YQ +cn +YQ +YQ +YQ +CN +YQ +YQ +YM +kr +Wl +YQ +YQ +CN +YQ +ZV +Pg +YQ +YM +Mp +Jd +Jd +BB +Jd +Jd +Jd +vx +Jd +IK +wH +YQ +OU +io +io +DL +OU +io +uG +pQ +pQ +pQ +pQ +pQ +YK +pQ +pQ +pQ +pQ +dF +du +xH +CV +YQ +jQ +Mp +af +Jd +gV +Mp +sQ +OU +du +du +YQ +YM +wH +YQ +YQ +YQ +rd +YQ +ZV +YQ +YQ +YQ +CN +YQ +YQ +YM +Wl +Pg +AR +AR +AR +AR +AR +AR +AR +Xj +ti +ai +qa +ti +kW +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(97,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Pg +YQ +YQ +Wl +YQ +YQ +cn +YQ +Wl +YQ +YQ +rd +YQ +AF +Wl +YQ +rd +CN +YQ +YQ +wH +YQ +YQ +YQ +YQ +YQ +YQ +Pg +YQ +YQ +YM +YQ +YQ +YQ +Mp +Jd +Jd +Se +Wi +Jd +Co +bZ +tK +Jj +YQ +MW +YQ +uC +du +DL +jJ +du +VJ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +Hg +ot +io +DL +YQ +ZV +Mp +Gl +FO +Mp +Mp +wj +OU +du +UH +YQ +YQ +cn +rd +ZV +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Pg +cn +YQ +YQ +YQ +vK +AR +AR +AR +AR +AR +AR +AR +AR +Ih +WD +Ih +Ih +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(98,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +YQ +wH +YQ +kr +YQ +YQ +MW +YQ +YQ +YQ +kr +YQ +YQ +YQ +YQ +CN +wH +rd +cn +YQ +YQ +YQ +YQ +CN +wH +Mp +Jd +Jd +Gv +at +Jd +Jd +gj +Gn +Mp +YQ +YQ +OU +du +io +MS +Sc +io +Kk +uh +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +Hg +Bh +Vb +DL +kr +YQ +Mp +Ta +Jd +lS +Mp +vK +YQ +uc +du +zr +YQ +Mp +Mp +Mp +Mp +Mp +YQ +YQ +CN +vK +kr +Wl +YQ +MW +YQ +hv +rd +AR +AR +AR +AR +AR +AR +AR +kW +ti +Ih +cK +ti +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(99,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +aP +YM +Wl +YQ +YQ +aP +CN +ZV +YQ +YM +YQ +MW +YQ +YQ +YQ +YQ +AF +YQ +YQ +YQ +CN +YQ +YQ +YQ +PD +Mp +tx +Gl +Mp +Gl +Mp +Jd +Jd +Gl +Mp +wj +aP +OU +du +io +DL +MD +io +io +uh +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +dF +du +HD +YQ +YQ +Mp +Mp +Mp +Mp +Mp +Wl +OU +io +io +xH +rT +Mp +Ct +MJ +zI +Mp +YQ +YQ +wH +YQ +aP +YQ +rd +YQ +YQ +VU +YQ +AR +AR +AR +AR +AR +AR +AR +Xj +Xj +kW +AR +Xj +Xj +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(100,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AF +rd +kr +cn +YQ +YQ +YM +kr +cn +YQ +rF +YQ +YQ +YQ +YQ +Wl +YQ +YQ +rF +YQ +YQ +XC +YQ +YQ +rF +ZV +YQ +YQ +YQ +YQ +kr +Wl +AF +YQ +Mp +Jd +Jd +eN +Mp +by +Jd +Jd +by +Mp +AF +YQ +OU +io +UH +YQ +ow +du +uG +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +EA +io +DL +YQ +YQ +YQ +YQ +aP +YQ +rd +wH +OU +du +io +io +du +Du +Jd +Jd +An +Mp +YQ +cn +rd +YQ +YQ +YQ +CN +YQ +kr +rd +wH +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(101,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +aP +YQ +Wl +YQ +Wl +YQ +YQ +AF +YQ +YQ +YM +rd +AF +YQ +YQ +YQ +CN +rd +yi +HC +XC +YQ +YQ +YQ +CN +YQ +YQ +YM +YQ +YQ +YQ +pC +Mp +QI +Jd +LE +Mp +Jd +vx +vx +Jd +Jj +YQ +cn +OU +io +du +DL +OU +du +VJ +pQ +pQ +pQ +pQ +pQ +YK +pQ +pQ +pQ +pQ +Hg +du +io +bw +YQ +YQ +YQ +CN +YQ +MW +YQ +YQ +OU +io +io +yu +sQ +Mp +vs +Jd +af +Mp +Pd +YQ +YQ +YQ +YQ +YQ +KM +YQ +YQ +YQ +CN +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(102,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +Fz +rd +vK +YQ +YQ +YQ +CN +YQ +Wl +cn +aP +YQ +YQ +AF +Pg +YQ +yQ +XC +YQ +YQ +YQ +YQ +YQ +YQ +cn +mY +MW +YQ +YQ +YQ +Mp +SV +Jd +kn +Gl +xS +kq +Tm +tK +IK +ZV +YQ +OU +du +io +DL +hw +io +Ud +VJ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +EA +io +Hm +YQ +YQ +YQ +YQ +YQ +Pg +YQ +YQ +kr +OU +io +sQ +CN +Oe +Mp +Gl +FO +Mp +Mp +YQ +YQ +YQ +YQ +CN +ZV +kr +rF +YQ +YQ +YQ +Pg +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(103,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Pg +YQ +YQ +YQ +YQ +aP +YQ +YQ +YQ +YQ +Pg +ZV +YQ +YQ +YQ +CN +YQ +YQ +CV +Ka +Ka +Ka +YQ +kr +YQ +YQ +YQ +CN +Wl +YQ +Wl +AF +rF +Mp +iE +eT +gL +Mp +wV +Ah +Tm +vN +Mp +YQ +YQ +Kr +io +io +DL +YQ +QO +du +io +uh +pQ +pQ +pQ +pQ +pQ +pQ +pQ +Hg +Kk +io +DL +rd +YQ +vK +Mp +Mp +Mp +Mp +Mp +YQ +OU +io +zA +YQ +YQ +Mp +pn +Jd +XV +Mp +Pg +YQ +YQ +MW +mY +YQ +rd +YQ +AF +YQ +cn +YQ +wH +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(104,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Wl +YQ +kr +ZV +rd +wH +Wl +YQ +YQ +rd +MW +YQ +YQ +YQ +YQ +YQ +YQ +mE +io +du +io +PL +YQ +Pg +YQ +rd +YQ +YQ +YQ +YQ +CN +cn +Mp +Mp +Mp +Mp +Mp +Mp +Jj +IK +Mp +Mp +YQ +YM +YQ +uc +du +DL +VU +OU +io +du +VJ +pQ +pQ +pQ +pQ +pQ +pQ +pQ +Hg +du +io +DL +mY +Wl +YQ +Mp +zI +MJ +Ct +Mp +Ka +XB +io +du +DL +MW +Mp +Mp +Mp +Mp +Mp +rd +YQ +rF +cn +aP +YQ +YQ +CN +YQ +Wl +YQ +aP +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(105,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +AF +YQ +YQ +YQ +rd +AF +YQ +YQ +YQ +CN +YQ +mY +kr +rd +oj +YQ +ws +du +du +AT +du +du +yy +YQ +Wl +YQ +MW +YQ +YQ +YQ +YQ +YQ +nJ +vK +YQ +Wl +YQ +YQ +YQ +rd +YQ +nJ +YQ +YQ +OU +io +Vg +YQ +YQ +YQ +iU +du +Kk +uh +pQ +EA +no +VJ +pQ +pQ +EA +io +YE +AF +YQ +YQ +YQ +Mp +wv +Jd +Jd +HI +du +io +du +io +DL +YQ +YQ +YQ +AF +YQ +YQ +YQ +rd +YQ +Wl +YQ +YQ +YQ +YQ +YQ +YQ +CN +vK +ZV +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(106,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +CN +aP +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +Wl +vK +YQ +YQ +YQ +OU +io +io +uG +pQ +dF +io +io +HQ +YQ +kr +YQ +YQ +YQ +CN +Wl +YQ +YQ +YQ +CN +rF +YQ +YQ +YQ +YQ +kr +YQ +YQ +YQ +OU +io +du +DL +Pg +vK +MD +io +io +VJ +EA +du +io +du +VJ +EA +Ud +du +DL +YQ +YQ +YQ +El +Mp +af +Jd +bW +Mp +sQ +Jo +io +du +DL +YQ +aP +YQ +YM +YQ +YQ +YQ +YQ +CN +YQ +YQ +rd +Wl +YQ +YQ +YQ +YQ +YQ +cn +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(107,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +ZV +cn +rd +YQ +YQ +rd +YQ +cn +YQ +YQ +YQ +YQ +CN +YQ +YQ +YM +vy +du +uG +pQ +pQ +Hg +du +io +DL +rF +wH +YQ +YQ +YQ +wH +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YM +YQ +YQ +YQ +YQ +aP +OU +du +io +xH +YQ +YQ +jB +Fq +io +du +io +io +io +io +du +du +io +Hm +CV +YQ +YQ +wH +YQ +Mp +Mp +FO +Mp +Mp +wj +Pg +uc +io +MS +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +Pg +wH +rd +YQ +YQ +YQ +CN +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(108,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +wH +YQ +YQ +YM +Pg +aP +YQ +YQ +YQ +YQ +YQ +AF +YQ +YQ +OU +io +uh +pQ +pQ +pQ +dF +du +uv +YQ +YQ +YQ +YQ +cn +YQ +YQ +YQ +CN +cn +YQ +kr +YQ +YQ +rF +YQ +AF +YQ +ZV +YQ +OU +du +io +du +DL +gU +Ko +wj +lr +sQ +nw +du +io +io +KO +sQ +sQ +YQ +CN +YQ +YQ +YQ +YQ +Mp +hU +Jd +lS +Mp +YQ +Yf +du +UH +YQ +rd +Mp +Mp +Mp +Mp +Mp +YQ +cn +YQ +YQ +ZV +YQ +cn +YQ +YM +YQ +YQ +YQ +YQ +AF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(109,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +hv +YQ +vK +YQ +Wl +YQ +YQ +YQ +CN +YQ +Wl +YQ +cn +aP +OU +du +VJ +pQ +pQ +pQ +EA +io +DL +YQ +YQ +YQ +CN +rd +ZV +YQ +YQ +YQ +YQ +YQ +YQ +YQ +wH +YQ +vK +YQ +Pg +YQ +Wl +YQ +Jo +io +yu +Ka +Ka +nJ +cn +YQ +CV +YQ +IC +io +yu +YQ +Wl +YQ +YQ +YQ +YQ +YQ +YM +YQ +Mp +Mp +Mp +Mp +Mp +YQ +OU +io +io +xH +wH +Mp +Ct +MJ +zI +Mp +wH +YQ +rF +YQ +rd +YQ +YQ +AF +ZV +kr +MW +YQ +Pg +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(110,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Wl +MW +YQ +cn +rd +YQ +VU +YQ +Pg +YQ +YQ +Dz +YQ +YQ +OU +du +io +VJ +pQ +Hg +io +du +DL +YQ +YQ +YQ +AF +Wl +YQ +YQ +kr +YQ +YQ +YQ +Tw +YQ +YQ +MW +Vm +cn +YQ +YQ +YQ +YQ +YQ +sQ +hw +io +du +xH +YQ +CN +YQ +MW +XB +io +yx +YQ +vK +YQ +kr +YQ +YQ +YQ +YQ +YQ +YQ +YQ +nJ +rd +ZV +YQ +OU +du +io +du +DL +IO +Jd +Jd +An +Mp +YQ +AF +YQ +YQ +YQ +Tw +cn +aP +YQ +YQ +YQ +YQ +CN +cn +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(111,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rd +YQ +YQ +YQ +CN +YQ +wH +YQ +rd +kr +Wl +YQ +YQ +CN +YQ +Wl +iU +du +io +VJ +EA +du +io +CK +YQ +YQ +YQ +AF +YQ +YQ +YQ +CN +YQ +Wl +YQ +wH +ZV +YQ +Oe +Ko +wj +YQ +YQ +YQ +kr +YQ +YQ +OU +du +io +du +DL +Ka +Ka +XB +du +io +io +xH +YQ +YQ +YQ +YQ +rd +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +rQ +du +io +yu +YQ +Mp +TX +Jd +af +Mp +wj +YQ +YQ +YQ +YQ +MW +YQ +YQ +YM +rd +YQ +YQ +YQ +Wl +mY +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(112,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +kr +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +MW +YQ +YQ +ZV +YQ +YQ +YQ +YQ +QO +du +du +io +io +Hm +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +MW +rd +Wl +YQ +YQ +YQ +CN +YQ +nJ +YQ +YQ +CN +YQ +YQ +Pg +rd +wH +Jo +io +du +WE +du +du +io +io +du +io +du +Nd +rd +wH +YQ +ZV +YQ +MW +YQ +aP +YQ +Ka +Ka +Ka +YQ +XB +io +io +DL +mt +Mp +Mp +FO +Mp +Mp +YQ +YQ +YQ +CN +YQ +kr +YQ +YQ +vK +kr +Wl +YQ +YQ +YQ +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(113,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +ZV +AF +YQ +rd +YQ +YQ +ZV +AF +YQ +YQ +vK +YQ +rd +kr +YQ +YM +wH +YQ +sQ +sQ +uu +sQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Wl +AF +vK +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +MW +YQ +Jo +io +io +hk +io +du +io +yu +CR +io +io +xH +Ka +cn +Ka +Ka +Ka +YQ +Ka +hC +du +io +io +MX +du +io +yu +YQ +YQ +Mp +pn +Jd +XV +Mp +YQ +YQ +YQ +YQ +wH +YQ +YQ +YQ +CN +YQ +YQ +YQ +aP +CN +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(114,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +aP +YQ +kr +Pg +mY +YQ +YQ +YQ +CN +cn +Pg +YQ +YQ +YQ +kr +Pg +rd +rF +YQ +YQ +YQ +YQ +CN +MW +YQ +kr +Wl +YQ +YM +YQ +YQ +YQ +CN +YQ +YQ +YM +YQ +Wl +YQ +mY +rF +Mp +Mp +Mp +Mp +Mp +YQ +Wl +Jo +du +ht +Jo +io +yu +YQ +OU +du +du +io +du +WE +io +io +du +WE +io +io +io +du +io +du +hk +io +DL +YQ +Wl +Mp +Mp +Mp +Mp +Mp +wH +AF +YQ +MW +kf +YQ +YQ +YQ +Pg +cn +YQ +Wl +YQ +YQ +ZV +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(115,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +CN +YQ +YQ +YQ +Wl +YQ +rd +aP +YQ +Wl +rd +YQ +YQ +YQ +CN +Wl +YQ +YQ +AF +YQ +YQ +YQ +YQ +YQ +YM +ZV +YQ +YQ +rd +YQ +YQ +YQ +ZV +AF +YQ +YQ +wH +YQ +YQ +cn +El +Mp +ml +Qt +ww +Mp +ZV +YQ +Tx +io +DL +uX +du +eJ +Wl +YQ +Jo +io +io +io +du +hk +du +io +io +du +du +io +yu +sQ +sQ +YQ +sQ +YQ +YQ +YQ +mY +YQ +nJ +YQ +vK +rd +YQ +YQ +YQ +td +YQ +YQ +cn +rd +YQ +wH +rd +AF +YQ +cV +Pg +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(116,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Wl +YQ +YQ +YQ +CN +cn +ZV +YQ +YQ +YM +AF +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +Wl +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +Pg +YQ +YM +cn +YQ +YQ +YQ +CN +vK +YQ +Pg +YQ +Mp +QE +QE +eR +Mp +Mp +Jj +Mp +Ag +IK +Jj +Ag +Gl +IK +Mp +wj +sQ +sQ +JZ +sQ +YQ +sQ +sQ +sQ +sQ +sQ +sQ +wH +YQ +rd +YQ +YQ +ZV +kr +YQ +wH +YQ +YQ +YQ +CN +cn +aP +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +MW +CN +YQ +YQ +YQ +CN +Wl +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(117,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AF +cn +YQ +YQ +YQ +YQ +YQ +kr +YQ +YQ +YQ +YQ +Wl +YQ +nt +ZV +YQ +YQ +YQ +Wl +YQ +YQ +YQ +YQ +YQ +cn +Pg +YQ +YQ +YQ +AF +YQ +YQ +YQ +YQ +YQ +YQ +YQ +rF +MW +YQ +YQ +Mp +lV +Mp +Mp +Gl +Mp +Xm +CH +Jd +Jd +Jd +Jd +CH +Or +Mp +YQ +rd +YQ +YQ +YQ +og +YQ +rd +YQ +YQ +cn +YQ +Wl +YQ +YQ +YQ +Pg +YQ +YQ +aP +YQ +YQ +YQ +YQ +YQ +YQ +Pg +YQ +rd +YQ +YQ +YQ +YQ +aP +YQ +YQ +YQ +YQ +YQ +YQ +YQ +rF +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(118,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +vK +YQ +MW +AF +YQ +YQ +cn +Wl +YQ +kr +YQ +aP +YQ +YQ +CN +YQ +cn +YQ +YQ +YQ +YQ +CN +YQ +YQ +rd +YQ +YQ +YM +cn +Wl +YQ +YQ +CN +MW +YQ +YQ +YQ +YQ +Wl +wH +Mp +Jd +QE +OA +Ct +Mp +Jd +Jd +Jd +Jd +Jd +Jd +Jd +yF +Jj +AF +YQ +YQ +YM +Oe +Ko +wj +YQ +XC +aP +YQ +YQ +YQ +CN +MW +vK +YQ +rd +YQ +YQ +YQ +Wl +YQ +YQ +YQ +CN +Wl +YQ +YQ +CN +YQ +kr +rd +YQ +Wl +YQ +YQ +YM +wH +YQ +cn +YQ +ZV +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(119,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +hv +rd +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +rF +YQ +Pg +YQ +YQ +YM +rd +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +kr +YQ +YQ +YQ +Pg +YQ +YQ +YQ +CN +ZV +YQ +kr +Mp +hy +eB +uT +uy +yz +Jd +Jd +sR +Ei +Ve +Rn +Jd +yL +IK +YQ +YQ +YQ +YQ +Wl +nJ +YQ +kr +Yb +GU +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Vm +YQ +YQ +CN +wH +YQ +AF +YQ +rd +YQ +YQ +cn +wH +aP +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +aP +YQ +CN +YQ +kr +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(120,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Pg +YQ +YQ +YQ +YQ +YQ +Wl +YQ +YQ +YQ +rd +YQ +YQ +AF +YQ +Wl +YQ +YQ +YQ +CN +YQ +YM +aP +YQ +YQ +YQ +YQ +YQ +CN +MW +YQ +rd +kr +YQ +YQ +Wl +YQ +YQ +YQ +YQ +Mp +Jd +QE +wq +Jd +Gl +Jd +Jd +VK +XY +QE +Jv +Jd +Bq +IK +aP +YQ +wH +YQ +YQ +ZV +YQ +YQ +XC +YQ +YQ +YQ +Pg +YQ +rd +YQ +mt +Ko +wj +YQ +YQ +MW +YQ +YQ +cn +YQ +ZV +rd +YQ +YQ +mY +Wl +ZV +YQ +YQ +YQ +rF +kr +YQ +YQ +YQ +YQ +vK +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(121,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +rd +YQ +YQ +Wo +rd +MW +YQ +Wl +Pg +cn +YQ +YQ +YQ +CN +cn +cn +YQ +YQ +YQ +YQ +YQ +YQ +Pg +YQ +kr +YQ +YQ +YQ +YQ +vK +YQ +YQ +YQ +CN +YQ +cn +YQ +kr +YQ +jF +Mp +Mp +Jd +BB +Jd +Mp +KY +Jd +mu +QE +QE +yS +Jd +KY +Mp +YQ +Pg +mY +YQ +cn +YQ +rd +YQ +wH +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +nJ +rd +YQ +YQ +Wl +YQ +CN +YQ +YQ +YQ +CN +Wl +YQ +MW +CN +YQ +Pg +cn +rd +YQ +YQ +rd +YQ +YQ +Wl +rd +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(122,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +CN +vK +YQ +YQ +YQ +YQ +CN +AF +ZV +YQ +YQ +Wl +YQ +YQ +YQ +CN +cn +YQ +kr +YQ +YQ +YQ +CN +KM +cn +YQ +YQ +YQ +CN +VU +YQ +YQ +YQ +YQ +fH +rF +YQ +MW +AF +YQ +Mp +Mp +Mp +Mp +Mp +Mp +IK +IK +Mp +Mp +IK +Jj +Mp +Mp +mk +rd +YQ +YQ +ZV +YQ +vK +YQ +YQ +cn +YQ +YQ +YQ +MW +YQ +YQ +YQ +YQ +YM +Wl +aP +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +YQ +aP +YM +vK +MW +YQ +YQ +CN +YQ +MW +YQ +CN +AF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(123,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +vK +YQ +YQ +cn +YQ +kr +YQ +YQ +YQ +YQ +YQ +YQ +YM +cn +vK +YQ +YQ +YQ +AF +vK +aP +YQ +VU +YQ +YQ +YQ +AF +mY +ZV +YQ +YQ +YQ +YQ +AF +aP +YQ +YQ +YQ +YQ +YQ +vK +cn +aP +YQ +nJ +YQ +CN +YQ +Pg +YQ +YQ +xD +YQ +cn +YQ +nJ +YQ +YQ +YQ +YQ +YQ +CN +YQ +kr +YQ +AF +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +CN +YQ +kr +YQ +cn +YQ +YQ +YM +wH +YQ +Sh +wH +wH +YQ +kr +YQ +Wl +YQ +YQ +YQ +cn +ZV +YQ +YQ +YQ +rF +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(124,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +Wl +ZV +YQ +YQ +AF +YQ +cn +rd +YQ +aP +YQ +AF +YQ +kr +MW +rd +Wl +YQ +YQ +cn +Wl +YQ +rd +YQ +YQ +YQ +cn +vK +YQ +wH +MW +ZV +YQ +rd +YQ +YQ +YQ +CN +rd +YQ +Pg +YQ +YQ +wH +YQ +AF +YQ +YQ +CN +YQ +kr +YQ +MW +YQ +YQ +CN +YQ +YQ +YQ +YQ +MW +YQ +rd +aP +YQ +YQ +YQ +YQ +wH +aP +YQ +YQ +YQ +wH +YQ +rd +vK +ZV +Wl +YQ +aP +vK +VU +rd +YQ +YM +YQ +YQ +rd +YQ +CN +YQ +rF +wH +rd +YQ +Pg +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(125,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rF +rd +EV +YQ +YQ +YQ +YQ +CN +Wl +YQ +YQ +YQ +YQ +YQ +Tw +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +YQ +YQ +hv +rd +YQ +YQ +YQ +CN +YQ +kr +YQ +YQ +cn +YQ +YQ +YQ +YM +cn +ZV +rd +cn +YQ +YQ +YQ +wH +aP +YQ +rd +AF +YQ +YQ +cn +vK +wH +rd +YQ +YQ +Wl +YQ +rd +YQ +YQ +Wl +rd +YQ +ZV +YQ +rd +Wl +YQ +YQ +YQ +CN +YQ +YQ +YQ +KM +Pg +AF +ZV +YQ +YQ +cn +YQ +YQ +YQ +Pg +Wl +kr +YQ +YQ +aP +CN +rd +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(126,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Wl +YQ +Pg +cn +YQ +YQ +YQ +YQ +YQ +CN +wH +YQ +YQ +aP +YQ +YQ +YQ +CN +YQ +YQ +YQ +wH +MW +YQ +YQ +YQ +YQ +YQ +Wl +Pg +YQ +YQ +YQ +YQ +cn +YQ +Pg +ZV +YQ +mY +wH +YQ +AF +YQ +kr +YQ +Wl +MW +YQ +kr +YQ +YQ +YQ +YQ +wH +YQ +Wl +rF +AF +kr +YQ +YQ +YQ +CN +YQ +YQ +YQ +CN +AF +YQ +YQ +YQ +CN +YQ +YM +Pg +YQ +YQ +YQ +YQ +YQ +YQ +Oz +YQ +YQ +MW +CN +rd +aP +YQ +YQ +AF +YQ +YQ +YM +YQ +YQ +cn +wH +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(127,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +CN +rd +KM +kr +YQ +YQ +YQ +YQ +YQ +YQ +mY +AF +YQ +YQ +YQ +ZV +YQ +kr +cn +YQ +Pg +Wl +YQ +kr +ZV +rd +YQ +AF +Wl +YQ +kr +YQ +PB +YQ +Wl +YQ +YQ +YQ +CN +aP +YQ +YQ +YQ +YQ +CN +YQ +YQ +ZV +AF +YQ +aP +YQ +CN +Pg +YQ +rd +YQ +cn +YQ +YQ +Pg +YQ +YQ +YQ +cn +ZV +YQ +aP +YQ +YQ +YQ +YQ +Pg +AF +MW +kr +wH +YQ +YQ +YQ +YQ +YQ +YQ +YQ +Wl +YQ +YQ +YQ +YQ +CN +YQ +wH +rd +YQ +YQ +YQ +Wl +vK +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(128,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +Wl +YQ +YQ +YQ +rd +YQ +YQ +YQ +YQ +CN +cn +YQ +Wl +YQ +kr +YQ +AF +YQ +YQ +YQ +YQ +CN +YQ +YQ +MW +YQ +YQ +YQ +CN +YQ +YQ +YQ +YQ +YQ +hv +YQ +MW +rF +YQ +vK +Wl +YQ +YQ +KM +YQ +YQ +YQ +CN +rF +YQ +YQ +YQ +YQ +YQ +YQ +YQ +CN +YQ +AF +rd +YQ +wH +kr +YQ +YQ +mY +vl +Pg +YQ +YQ +aP +CN +cn +YQ +YQ +YQ +CN +AF +YQ +YQ +YQ +CN +YQ +Pg +YQ +wH +YQ +AF +YQ +YQ +aP +cn +YQ +YQ +MW +CN +YQ +rF +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(129,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rd +wH +ZV +mY +YQ +YQ +YQ +CN +Wl +YQ +YQ +YQ +MW +vK +YQ +YQ +rd +YQ +wH +kf +rd +YQ +aP +Wl +YQ +YQ +YQ +CN +Wl +YQ +vK +YQ +YQ +YM +wH +YQ +YQ +YQ +AF +YQ +YQ +rd +YQ +YQ +Pg +AF +vK +rd +YQ +wH +Pg +rd +YQ +YQ +YM +AF +YQ +YQ +YQ +wH +YQ +YQ +YQ +CN +Wl +aP +YQ +YQ +CN +VU +dY +YQ +YQ +aP +YQ +Wl +YQ +YQ +YQ +YQ +rd +YQ +MW +YQ +Wl +YQ +YQ +YQ +Oz +YQ +YQ +vK +YQ +YQ +YM +Wl +YQ +YQ +rd +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(130,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +kr +MW +rd +YQ +vK +YQ +YQ +YM +Pg +kr +YQ +YQ +YQ +YQ +CN +Pg +YQ +YQ +YQ +CN +Pg +rd +YQ +YQ +cn +YQ +YQ +rd +YQ +YQ +YQ +MW +YQ +YQ +YQ +cn +YQ +YQ +YM +YQ +YQ +YQ +CN +YQ +aP +YQ +aP +cn +YQ +Wl +YQ +YQ +vK +YQ +kr +cn +aP +MW +YQ +YQ +YQ +rF +ZV +PB +YQ +YQ +YQ +vK +YQ +rd +wH +cn +kr +YQ +aP +YQ +rd +kf +YQ +Wl +YQ +cn +YQ +YQ +YQ +YQ +YQ +Wl +YQ +YQ +CN +YQ +YQ +AF +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(131,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +CN +YQ +Xh +Pg +YQ +aP +YQ +YQ +YQ +YQ +ZV +rd +YQ +YQ +YQ +rd +YQ +YQ +YQ +vK +YQ +kr +YQ +AF +wH +YQ +kr +YQ +YQ +YQ +CN +rd +aP +YQ +YQ +CN +YQ +YQ +Pg +YQ +YQ +YQ +ZV +MW +YQ +YQ +YM +YQ +kr +YQ +YQ +YQ +CN +ZV +YQ +Wl +YQ +YQ +YQ +YM +cn +rd +YQ +vK +YQ +YQ +YM +aP +YQ +YQ +CN +ZV +YQ +YQ +YQ +CN +ZV +YQ +YQ +YQ +CN +YQ +YQ +YM +wH +YQ +Ak +YQ +cn +YQ +YQ +wH +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(132,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +YQ +YQ +YQ +CN +cn +wH +YQ +YQ +YQ +CN +wH +YQ +YQ +aP +YM +YQ +kr +AF +cn +YQ +YQ +YQ +YQ +YQ +CN +YQ +AF +YQ +YQ +YQ +YQ +YQ +kr +YQ +rd +wH +ZV +aP +vK +kr +wH +YQ +YQ +YQ +AF +Pg +YQ +YQ +YQ +YQ +rd +YQ +cn +YQ +YQ +YQ +CN +AF +YQ +YQ +kr +YQ +YQ +CN +wH +AF +YQ +YQ +YQ +YQ +Wl +wG +YQ +YQ +YQ +wH +YQ +YQ +YQ +YQ +kr +vK +aP +rd +YQ +YQ +YQ +rd +Pg +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(133,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +Pg +vl +YQ +YQ +YQ +YQ +YQ +rd +AF +YQ +YQ +YQ +YQ +kr +YQ +Wl +YQ +cn +MW +ZV +YQ +YQ +YQ +CN +YQ +YQ +MW +YQ +YQ +aP +YQ +YQ +YM +YQ +cn +Pg +YQ +Wl +YQ +AF +YQ +cn +YQ +YQ +YQ +CN +rd +YQ +YQ +YQ +CN +rF +wH +MW +Pg +YQ +YQ +YQ +YQ +Wl +mY +aP +YQ +YQ +YQ +YQ +YQ +cn +Pg +YQ +YQ +YM +YQ +AF +rd +AR +AR +AR +AR +AR +AR +Pg +YQ +mY +Wl +YQ +YQ +CN +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(134,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +CN +vK +YQ +YQ +YQ +CN +YQ +Pg +YQ +aP +AF +YQ +YQ +AR +AR +AR +AR +AR +YQ +Pg +YQ +YQ +EV +cn +YQ +YQ +YQ +CN +ZV +YQ +Wl +YQ +AF +YQ +AR +AR +AR +AR +AR +AR +rF +YQ +YQ +YQ +YQ +Wl +YQ +YQ +YQ +YQ +YQ +YQ +YM +YQ +aP +rd +YQ +YQ +YQ +CN +YQ +YQ +YM +MW +YQ +YQ +YQ +CN +wH +rd +Pg +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(135,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +cn +cn +Pv +YQ +YQ +Wl +YM +vK +cn +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +vK +YQ +kr +YQ +YQ +YQ +YQ +cn +rd +Pg +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +ZV +rF +wH +cn +mY +Pv +YQ +YQ +YQ +YQ +AF +vK +YQ +YQ +YQ +KM +AF +YQ +Pg +rd +YQ +YQ +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(136,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +wH +rd +YQ +AF +ZV +YQ +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +rd +Wl +YQ +wH +mY +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +YQ +CN +cn +YQ +kr +YQ +wH +Wl +YQ +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(137,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +ZV +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +YQ +YQ +YQ +ZV +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(138,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(139,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(140,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(141,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(142,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(143,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(144,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(145,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(146,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(147,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(148,1,1) = {" +bG +bG +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +bG +bG +"} +(149,1,1) = {" +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +"} +(150,1,1) = {" +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +"} diff --git a/_maps/RandomZLevels/away_mission/research.dmm b/_maps/RandomZLevels/away_mission/research.dmm index 4710d9829b..f1c0f989df 100644 --- a/_maps/RandomZLevels/away_mission/research.dmm +++ b/_maps/RandomZLevels/away_mission/research.dmm @@ -5371,7 +5371,7 @@ /area/awaymission/research/interior/dorm) "kS" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/plasteel, /area/awaymission/research/interior/dorm) "kT" = ( diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index ce5539cee7..df4ab2bc72 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -350,7 +350,7 @@ /area/security/prison) "aaV" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/plasteel, /area/security/prison) "aaW" = ( @@ -1491,6 +1491,10 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/fore) +"adu" = ( +/obj/effect/landmark/barthpot, +/turf/open/floor/wood, +/area/library) "adw" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -9502,6 +9506,9 @@ name = "Medbay"; req_access_txt = "5" }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "asV" = ( @@ -9529,6 +9536,9 @@ name = "Medbay"; req_access_txt = "5" }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "asY" = ( @@ -26752,7 +26762,6 @@ /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, -/obj/item/cigbutt, /turf/open/floor/plating, /area/maintenance/starboard) "blS" = ( @@ -28539,8 +28548,9 @@ /turf/open/floor/plasteel/white, /area/science/lab) "bqg" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 1 + }, /turf/open/floor/plating, /area/maintenance/starboard) "bqh" = ( @@ -29181,18 +29191,16 @@ /turf/open/floor/plating, /area/maintenance/starboard) "brH" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, +/obj/item/cigbutt/cigarbutt, /turf/open/floor/plating, /area/maintenance/starboard) "brI" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, /obj/machinery/light/small{ dir = 4 }, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 1 + }, /turf/open/floor/plating, /area/maintenance/starboard) "brJ" = ( @@ -29840,15 +29848,17 @@ /turf/open/floor/plasteel/white, /area/medical/genetics) "btp" = ( +/obj/item/cigbutt, /turf/open/floor/plating, /area/maintenance/starboard) "btq" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Space Loop Out" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" }, -/turf/open/floor/plating, /area/maintenance/starboard) "btr" = ( /obj/machinery/camera{ @@ -30971,15 +30981,13 @@ /turf/open/floor/plasteel/white, /area/science/explab) "bvQ" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, /turf/open/floor/plating, /area/maintenance/starboard) "bvR" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 8 +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 }, +/obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/maintenance/starboard) "bvS" = ( @@ -31632,11 +31640,12 @@ /turf/open/floor/plasteel/white, /area/science/explab) "bxt" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/general/visible, /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, /turf/open/floor/plating, /area/maintenance/starboard) "bxu" = ( @@ -38663,8 +38672,8 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "bNC" = ( -/obj/structure/closet/wardrobe/grey, -/turf/open/floor/plating, +/obj/machinery/vending/cigarette, +/turf/open/floor/wood, /area/maintenance/starboard/aft) "bND" = ( /obj/structure/chair{ @@ -39605,8 +39614,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "bPP" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, +/turf/open/floor/wood, /area/maintenance/starboard/aft) "bPQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -42662,16 +42670,20 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "bYr" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" +/obj/machinery/light{ + dir = 8; + light_color = "#e8eaff" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, /area/maintenance/starboard/aft) "bYs" = ( -/obj/structure/closet/crate, -/obj/item/clothing/under/color/lightpurple, -/obj/item/stack/spacecash/c200, +/obj/machinery/vending/boozeomat, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/aft) "bYt" = ( @@ -42935,6 +42947,9 @@ /area/science/circuit) "bZi" = ( /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 1 + }, /turf/open/floor/plating, /area/maintenance/starboard) "bZj" = ( @@ -43304,13 +43319,23 @@ /turf/open/floor/plasteel, /area/science/misc_lab) "cac" = ( -/obj/structure/chair/stool, -/turf/open/floor/plating, +/obj/structure/cable/white{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/wood, /area/maintenance/starboard/aft) "cad" = ( -/obj/structure/table, -/obj/item/flashlight/lamp, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, /area/maintenance/starboard/aft) "cae" = ( /turf/open/floor/plating{ @@ -43743,18 +43768,12 @@ }, /area/maintenance/starboard/aft) "cbh" = ( -/obj/structure/table, -/obj/item/folder/white, -/obj/item/folder/white, -/obj/item/pen, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) +/turf/closed/wall/rust, +/area/science/mixing) "cbi" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 5 - }, +/obj/structure/barricade/wooden, +/obj/structure/girder, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/aft) "cbj" = ( @@ -44476,14 +44495,17 @@ /turf/closed/wall, /area/maintenance/starboard/aft) "ccV" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, /turf/open/floor/plating, /area/maintenance/starboard/aft) "ccW" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, /turf/open/floor/plating, /area/maintenance/starboard/aft) "ccX" = ( @@ -44647,9 +44669,7 @@ /area/engine/break_room) "cdu" = ( /obj/structure/closet/emcloset, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/starboard/aft) "cdv" = ( @@ -44811,8 +44831,10 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) "cdV" = ( -/obj/structure/table, -/turf/open/floor/plating, +/obj/structure/cable/white{ + icon_state = "2-4" + }, +/turf/open/floor/wood, /area/maintenance/starboard/aft) "cdW" = ( /obj/machinery/power/apc{ @@ -45152,8 +45174,8 @@ /area/maintenance/starboard/aft) "ceT" = ( /obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 +/obj/structure/sign/poster/ripped{ + pixel_y = 32 }, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -45372,11 +45394,8 @@ /turf/closed/wall/r_wall, /area/science/misc_lab) "cfv" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - name = "Firefighting equipment"; - req_access_txt = "12" - }, -/turf/open/floor/plating, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/carpet/royalblue, /area/maintenance/starboard/aft) "cfw" = ( /turf/closed/wall/r_wall, @@ -45760,11 +45779,8 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cgy" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/chair/stool, -/turf/open/floor/plating, +/obj/machinery/light/floor, +/turf/open/floor/carpet/royalblue, /area/maintenance/starboard/aft) "cgz" = ( /obj/structure/cable, @@ -46255,8 +46271,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "chH" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating, +/turf/open/floor/light/colour_cycle/dancefloor_b, /area/maintenance/starboard/aft) "chI" = ( /obj/structure/cable{ @@ -52756,6 +52771,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/starboard) "cNS" = ( @@ -52768,15 +52786,19 @@ /obj/structure/cable{ icon_state = "0-8" }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, /turf/open/floor/plating, /area/maintenance/starboard) "cNT" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/starboard) "cNU" = ( @@ -53332,6 +53354,14 @@ /obj/machinery/vending/coffee, /turf/open/floor/wood, /area/bridge/meeting_room) +"cVw" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/seeds/tower, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "cVK" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/white, @@ -53386,6 +53416,14 @@ /obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"ddM" = ( +/obj/structure/sign/poster/official/the_owl{ + pixel_x = 32 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/starboard/aft) "dev" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -53550,8 +53588,18 @@ /turf/open/floor/plasteel, /area/engine/atmos) "dBm" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating, +/obj/machinery/light/floor, +/obj/structure/table, +/obj/item/clothing/glasses/sunglasses/reagent, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -5; + pixel_y = 13 + }, +/obj/item/storage/fancy/cigarettes/cigpack_uplift{ + pixel_x = 10; + pixel_y = 7 + }, +/turf/open/floor/carpet/royalblue, /area/maintenance/starboard/aft) "dCr" = ( /obj/structure/pool/Rboard, @@ -53576,6 +53624,10 @@ }, /turf/open/floor/plasteel, /area/security/range) +"dEh" = ( +/obj/machinery/jukebox/disco/indestructible, +/turf/open/floor/light/colour_cycle/dancefloor_b, +/area/maintenance/starboard/aft) "dEX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/machinery/requests_console{ @@ -53589,6 +53641,10 @@ "dFX" = ( /turf/closed/wall, /area/crew_quarters/fitness/pool) +"dHp" = ( +/mob/living/simple_animal/bot/secbot/grievous/toy, +/turf/open/floor/light/colour_cycle/dancefloor_a, +/area/maintenance/starboard/aft) "dJL" = ( /obj/structure/cable{ icon_state = "1-2" @@ -53757,6 +53813,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/security/execution/transfer) +"eoD" = ( +/obj/structure/table/wood/poker, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "epD" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/machinery/light{ @@ -53835,6 +53895,15 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness) +"ewN" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/seeds/watermelon, +/obj/item/seeds/cannabis, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "exP" = ( /obj/item/kirbyplants{ icon_state = "plant-14" @@ -53914,6 +53983,14 @@ }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) +"eDz" = ( +/obj/structure/cable/white{ + icon_state = "2-8" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard/aft) "eEe" = ( /obj/machinery/door/airlock{ name = "Theatre Backstage"; @@ -54024,6 +54101,13 @@ }, /turf/open/floor/plasteel, /area/security/processing) +"eXL" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "fbp" = ( /obj/structure/tank_dispenser, /obj/effect/turf_decal/bot, @@ -54097,6 +54181,16 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) +"fkW" = ( +/obj/structure/cable/white, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "flc" = ( /obj/structure/table/reinforced, /obj/item/storage/fancy/donut_box, @@ -54112,6 +54206,14 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"flP" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/seeds/carrot, +/obj/item/seeds/cannabis/white, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "fne" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -54272,6 +54374,28 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) +"fxk" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/machinery/door/window/northright, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable/white{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/blood/innards, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "fxx" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall, @@ -54372,6 +54496,13 @@ /obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/plasteel, /area/engine/atmos) +"fLN" = ( +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 1 + }, +/obj/structure/table/wood/poker, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "fMp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, @@ -54657,6 +54788,14 @@ }, /turf/open/floor/plasteel, /area/security/processing) +"gDZ" = ( +/obj/structure/chair/stool/bar, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/maintenance/starboard/aft) +"gGK" = ( +/turf/open/floor/carpet/royalblue, +/area/maintenance/starboard/aft) "gIU" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -54667,6 +54806,16 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +"gKl" = ( +/obj/structure/cable/white, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "gLz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -54753,6 +54902,11 @@ }, /turf/open/floor/mineral/titanium/blue, /area/crew_quarters/toilet/locker) +"gRV" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/starboard/aft) "gRZ" = ( /obj/structure/bookcase{ name = "Forbidden Knowledge" @@ -54813,6 +54967,20 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"hbi" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/seeds/glowshroom, +/obj/item/seeds/cannabis/ultimate, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/starboard/aft) "hcb" = ( /turf/open/floor/carpet, /area/crew_quarters/theatre) @@ -54835,7 +55003,7 @@ /area/engine/atmos) "hgO" = ( /obj/structure/table, -/obj/item/storage/box/dice{ +/obj/item/storage/dice{ pixel_x = 4; pixel_y = 4 }, @@ -54846,6 +55014,18 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/department/electrical) +"hke" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 1 + }, +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "hlT" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -55020,6 +55200,21 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) +"hTt" = ( +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/hollow/reinforced/directional, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"hUJ" = ( +/obj/structure/reagent_dispensers/beerkeg, +/obj/machinery/light/floor, +/turf/open/floor/carpet/royalblue, +/area/maintenance/starboard/aft) "hWd" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -55044,6 +55239,16 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, /area/security/range) +"ifJ" = ( +/obj/machinery/biogenerator, +/obj/structure/sign/poster/contraband/have_a_puff{ + pixel_y = -32 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "iiW" = ( /turf/open/floor/wood, /area/maintenance/bar) @@ -55076,6 +55281,14 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"iky" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "imk" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/orange/visible{ @@ -55087,6 +55300,14 @@ /obj/structure/falsewall, /turf/open/floor/plating, /area/maintenance/bar) +"imZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/starboard/aft) "inq" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, @@ -55177,6 +55398,20 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"ixd" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/beer, +/turf/open/floor/carpet/royalblue, +/area/maintenance/starboard/aft) +"iyG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "izg" = ( /obj/item/cigbutt/cigarbutt, /turf/open/floor/plating, @@ -55213,6 +55448,20 @@ }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) +"iIs" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/gibs/ipc/limb, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "iIS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ @@ -55259,6 +55508,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/fore) +"iQc" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "iRj" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -55425,6 +55679,15 @@ /obj/item/beacon, /turf/open/floor/plasteel/white, /area/science/circuit) +"jsO" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/seeds/glowshroom, +/obj/item/seeds/corn, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "jtj" = ( /obj/machinery/space_heater, /obj/effect/turf_decal/stripes/line{ @@ -55558,6 +55821,14 @@ }, /turf/open/floor/plasteel, /area/engine/gravity_generator) +"jGw" = ( +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard/aft) "jGI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -55594,6 +55865,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/maintenance/starboard/aft) "jIj" = ( @@ -55608,6 +55882,13 @@ }, /turf/open/space, /area/solar/starboard/fore) +"jIy" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "jJF" = ( /obj/machinery/door/airlock/maintenance, /obj/structure/cable{ @@ -55774,12 +56055,20 @@ }, /turf/open/floor/plating, /area/storage/tech) +"kfS" = ( +/turf/closed/wall/rust, +/area/maintenance/starboard/aft) "kfX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/closed/wall/r_wall, /area/engine/engine_smes) +"kgk" = ( +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard) "kgr" = ( /obj/machinery/light/small{ brightness = 3; @@ -55953,7 +56242,10 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "kAJ" = ( -/obj/machinery/portable_atmospherics/pump, +/obj/structure/table/wood/poker, +/obj/item/reagent_containers/food/drinks/shaker, +/obj/item/reagent_containers/glass/beaker/cryoxadone, +/obj/item/reagent_containers/dropper, /turf/open/floor/plating, /area/maintenance/starboard/aft) "kAO" = ( @@ -56036,6 +56328,14 @@ }, /turf/open/floor/plasteel, /area/security/processing) +"kIN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair/wood/normal, +/obj/machinery/light/small/broken{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/maintenance/starboard/aft) "kJE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ @@ -56076,6 +56376,15 @@ /obj/structure/disposalpipe/junction/flip, /turf/open/floor/plasteel, /area/hallway/primary/central) +"kQe" = ( +/obj/structure/table/wood/poker, +/obj/item/storage/fancy/cigarettes/dromedaryco, +/obj/item/storage/fancy/cigarettes/dromedaryco{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "kQk" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -56158,6 +56467,21 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/range) +"leE" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/human/body, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "lfV" = ( /obj/structure/cable{ icon_state = "4-8" @@ -56229,6 +56553,14 @@ icon_state = "wood-broken6" }, /area/maintenance/bar) +"lre" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck/syndicate{ + pixel_y = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "lsk" = ( /obj/machinery/vending/kink, /turf/open/floor/plasteel, @@ -56261,6 +56593,10 @@ }, /turf/open/floor/plasteel, /area/security/brig) +"lxP" = ( +/mob/living/simple_animal/opossum, +/turf/closed/wall, +/area/science/xenobiology) "lzt" = ( /obj/machinery/portable_atmospherics/pump, /obj/effect/turf_decal/stripes/line, @@ -56369,12 +56705,25 @@ }, /turf/open/floor/carpet, /area/crew_quarters/theatre) +"lUP" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "lUS" = ( /obj/structure/table/wood/fancy/black, /obj/machinery/light/small, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/carpet, /area/crew_quarters/dorms) +"lXy" = ( +/obj/machinery/light, +/obj/item/light/tube/broken, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "lZl" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -56560,6 +56909,13 @@ /obj/effect/spawner/lootdrop/keg, /turf/open/floor/wood, /area/maintenance/bar) +"mug" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/mob/living/simple_animal/bot/mulebot, +/turf/open/floor/carpet/royalblue, +/area/maintenance/starboard/aft) "mvt" = ( /obj/machinery/airalarm{ dir = 1; @@ -56596,6 +56952,21 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"mDZ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/slime/limb, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "mGw" = ( /obj/machinery/door/airlock/security{ name = "Labor Shuttle"; @@ -56608,6 +56979,26 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/security/range) +"mHA" = ( +/obj/item/reagent_containers/food/snacks/grown/banana, +/obj/item/reagent_containers/food/snacks/grown/banana, +/obj/item/reagent_containers/food/snacks/grown/wheat, +/obj/item/reagent_containers/food/snacks/grown/watermelon, +/obj/item/reagent_containers/food/snacks/grown/watermelon, +/obj/item/reagent_containers/food/snacks/grown/watermelon, +/obj/item/reagent_containers/food/snacks/grown/citrus/orange, +/obj/item/reagent_containers/food/snacks/grown/grapes, +/obj/item/reagent_containers/food/snacks/grown/cocoapod, +/obj/structure/rack, +/obj/item/seeds/wheat, +/obj/item/seeds/watermelon, +/obj/item/seeds/watermelon, +/obj/item/seeds/grape, +/obj/item/seeds/glowshroom, +/obj/item/seeds/cannabis/rainbow, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "mHU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/light_construct{ @@ -56631,6 +57022,12 @@ }, /turf/open/floor/wood, /area/crew_quarters/theatre) +"mLS" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard/aft) "mNi" = ( /obj/machinery/light_switch{ pixel_x = -20 @@ -56834,6 +57231,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/fore) +"nnM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"noa" = ( +/obj/machinery/door/airlock/maintenance/abandoned, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "noy" = ( /obj/structure/sign/poster/contraband/smoke{ desc = "This poster reminds us all that the Detective is a parasite. Year after year, they must get replacement lungs because of their addiction. "; @@ -56847,6 +57255,23 @@ }, /turf/open/floor/plasteel/dark, /area/maintenance/starboard/fore) +"noT" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/maintenance/starboard/aft) +"nsf" = ( +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "nss" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -56884,6 +57309,14 @@ }, /turf/open/floor/plating, /area/construction) +"nzB" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/seeds/grass, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "nzR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -56930,6 +57363,13 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"nJP" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "nJQ" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/dark/visible, @@ -56969,10 +57409,13 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "nRG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 +/obj/structure/cable/white{ + icon_state = "4-8" }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/wood, /area/maintenance/starboard/aft) "nSt" = ( /obj/effect/turf_decal/tile/neutral{ @@ -57027,6 +57470,16 @@ /obj/item/gun/ballistic/revolver/nagant, /turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) +"nYK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/table/wood/poker, +/obj/item/clothing/glasses/sunglasses/big, +/obj/item/stack/spacecash/c10{ + pixel_x = 8; + pixel_y = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/maintenance/starboard/aft) "nYT" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/yellow/visible{ @@ -57154,6 +57607,21 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/fore) +"olh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/gibs/human/core, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "olr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, @@ -57305,6 +57773,12 @@ }, /turf/open/floor/carpet, /area/crew_quarters/dorms) +"oBQ" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Space Loop In" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "oDm" = ( /obj/machinery/gulag_teleporter, /turf/open/floor/plasteel, @@ -57363,12 +57837,20 @@ }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) +"oMT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "oNz" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/hallway/primary/central) +"oQP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/grimy, +/area/maintenance/starboard/aft) "oSl" = ( /obj/machinery/door/airlock/security{ name = "Firing Range"; @@ -57413,6 +57895,11 @@ }, /turf/closed/wall/r_wall, /area/engine/atmos) +"oYQ" = ( +/obj/structure/chair/stool, +/mob/living/simple_animal/bot/medbot, +/turf/open/floor/carpet/royalblue, +/area/maintenance/starboard/aft) "oZl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/closet/wardrobe/pjs, @@ -57422,6 +57909,33 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) +"paJ" = ( +/obj/machinery/light{ + dir = 4; + light_color = "#c1caff" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"pcK" = ( +/mob/living/simple_animal/bot/cleanbot{ + name = "C.L.E.A.N." + }, +/turf/open/floor/light/colour_cycle/dancefloor_a, +/area/maintenance/starboard/aft) +"pcQ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "pem" = ( /obj/machinery/button/door{ desc = "Bolts the doors to the Private Study."; @@ -57456,6 +57970,21 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/pool) +"pkS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "plC" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -57614,6 +58143,12 @@ /obj/item/target/syndicate, /turf/open/floor/plating, /area/security/range) +"pDG" = ( +/obj/structure/closet, +/obj/item/clothing/glasses/science, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ @@ -57750,6 +58285,14 @@ }, /turf/open/floor/plating, /area/engine/atmos) +"pYQ" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/reagent_containers/glass/bucket, +/obj/structure/sign/poster/official/hydro_ad{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "qaY" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/bar, @@ -57828,6 +58371,12 @@ }, /turf/closed/wall, /area/quartermaster/miningdock) +"qlY" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard/aft) "qmn" = ( /obj/machinery/computer/libraryconsole/bookmanagement, /obj/structure/table, @@ -57842,6 +58391,13 @@ }, /turf/open/floor/mineral/titanium/blue, /area/crew_quarters/toilet) +"qtH" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "qus" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -57877,12 +58433,35 @@ /obj/structure/lattice, /turf/closed/wall/r_wall, /area/crew_quarters/heads/captain) +"qEB" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/seeds/berry, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"qFf" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "qIw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/carpet, /area/crew_quarters/cryopod) +"qIO" = ( +/turf/open/floor/plating/rust, +/area/maintenance/starboard/aft) "qJr" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -57907,6 +58486,25 @@ }, /turf/open/floor/mineral/titanium/blue, /area/crew_quarters/dorms) +"qMv" = ( +/obj/structure/cable/white{ + icon_state = "1-2" + }, +/obj/machinery/door/window/eastleft, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/gibs/core, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "qOc" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -57927,6 +58525,13 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/captain) +"qSF" = ( +/obj/item/seeds/bee_balm/honey_balm, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "qTG" = ( /obj/machinery/light{ dir = 8 @@ -57956,6 +58561,23 @@ /obj/structure/chair/sofa/left, /turf/open/floor/plasteel, /area/security/prison) +"qXJ" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"rba" = ( +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/structure/cable/white, +/obj/effect/spawner/structure/window/hollow/reinforced/end{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "rcD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -58019,6 +58641,16 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) +"rgW" = ( +/obj/structure/cable/white, +/obj/structure/cable/white{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "rhX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, @@ -58042,9 +58674,16 @@ /turf/open/floor/plasteel, /area/engine/atmos) "rmX" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/beer, -/turf/open/floor/plating, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/obj/item/light/bulb/broken, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, /area/maintenance/starboard/aft) "rnt" = ( /obj/structure/chair/comfy/black{ @@ -58299,6 +58938,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/fore) +"rSf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "rTo" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -58321,6 +58974,21 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, /area/hallway/primary/central) +"rVy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "rVN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/orange/visible{ @@ -58443,6 +59111,9 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/captain) +"srk" = ( +/turf/open/floor/light/colour_cycle/dancefloor_a, +/area/maintenance/starboard/aft) "srG" = ( /obj/machinery/airalarm{ dir = 1; @@ -58512,6 +59183,21 @@ }, /turf/open/floor/plasteel, /area/security/brig) +"sAH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "sAM" = ( /turf/open/floor/wood{ icon_state = "wood-broken6" @@ -58626,6 +59312,14 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"sMG" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) "sNK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/structure/cable{ @@ -58638,6 +59332,9 @@ dir = 4 }, /obj/machinery/door/airlock/maintenance/abandoned, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/maintenance/starboard/aft) "sOA" = ( @@ -58677,6 +59374,14 @@ /obj/structure/chair/office/light, /turf/open/floor/plasteel/white, /area/science/circuit) +"sVD" = ( +/obj/structure/table/wood/poker, +/obj/item/storage/box/matches{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "sWR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -58787,6 +59492,18 @@ }, /turf/open/floor/plasteel, /area/security/courtroom) +"tsq" = ( +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 9 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "ttL" = ( /obj/structure/sign/poster/contraband/random{ pixel_y = 32 @@ -58990,6 +59707,18 @@ }, /turf/open/space/basic, /area/space/nearstation) +"tTc" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"tTw" = ( +/obj/structure/girder, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "tWj" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -59102,6 +59831,20 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"uhq" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/gibs/human/lizard/body, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "ujv" = ( /obj/structure/sign/departments/restroom, /turf/closed/wall, @@ -59156,6 +59899,14 @@ }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) +"uqu" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/cultivator, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "usE" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/structure/rack, @@ -59191,6 +59942,11 @@ /obj/structure/mineral_door/wood, /turf/open/floor/wood, /area/maintenance/bar) +"uwN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair/stool/bar, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "uxY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable{ @@ -59203,6 +59959,33 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"uys" = ( +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/structure/cable/white{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"uzm" = ( +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/landmark/blobstart, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/aft) "uzs" = ( /turf/open/floor/plasteel/yellowsiding{ dir = 4 @@ -59379,6 +60162,11 @@ /obj/machinery/power/terminal, /turf/closed/wall/r_wall, /area/engine/gravity_generator) +"uRn" = ( +/mob/living/simple_animal/opossum, +/obj/structure/chair/stool, +/turf/open/floor/carpet/royalblue, +/area/maintenance/starboard/aft) "uRS" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -59404,6 +60192,16 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/fore) +"uUP" = ( +/obj/structure/cable/white, +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/hollow/reinforced/directional{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "uVS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -59468,6 +60266,11 @@ }, /turf/open/floor/plating, /area/security/range) +"vdo" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "vdu" = ( /obj/structure/table/wood, /obj/machinery/airalarm{ @@ -59583,11 +60386,22 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/fore) +"vsr" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/starboard/aft) "vsM" = ( /obj/machinery/power/apc/auto_name/south, /obj/structure/cable, /turf/open/floor/carpet, /area/crew_quarters/cryopod) +"vsO" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood{ + icon_state = "wood-broken2" + }, +/area/maintenance/starboard/aft) "vsT" = ( /obj/structure/closet/crate, /obj/item/book/manual/wiki/telescience, @@ -59616,12 +60430,9 @@ /turf/open/floor/wood, /area/library) "vxh" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 8; - name = "8maintenance loot spawner" +/turf/open/floor/plating{ + icon_state = "platingdmg1" }, -/turf/open/floor/plating, /area/maintenance/starboard/aft) "vxX" = ( /obj/machinery/door/airlock/external{ @@ -59980,9 +60791,26 @@ /obj/item/instrument/recorder, /turf/open/floor/plating, /area/maintenance/fore) +"wkc" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "wkN" = ( /turf/closed/wall, /area/science/circuit) +"wly" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "wlI" = ( /obj/machinery/holopad, /turf/open/floor/plasteel/showroomfloor, @@ -60041,6 +60869,14 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"wqW" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/starboard) "wrp" = ( /obj/machinery/light{ dir = 8 @@ -60050,6 +60886,16 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/service) +"wuO" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "wvg" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -60156,6 +61002,19 @@ /obj/item/hand_labeler, /turf/open/floor/plasteel, /area/hallway/secondary/service) +"wVg" = ( +/obj/item/kirbyplants/random, +/obj/item/storage/firstaid/regular{ + pixel_y = 5 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) +"wVN" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "wWi" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -60245,6 +61104,19 @@ }, /turf/open/space, /area/space/nearstation) +"xcz" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/seeds/onion, +/obj/structure/sign/poster/contraband/ambrosia_vulgaris{ + pixel_x = 32 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "xgk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -60257,6 +61129,10 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"xgs" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/carpet/royalblue, +/area/maintenance/starboard/aft) "xgC" = ( /obj/structure/cable{ icon_state = "0-4" @@ -60506,9 +61382,8 @@ /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "xIa" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/grille_or_trash, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, /area/maintenance/starboard/aft) "xJC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -60658,6 +61533,13 @@ }, /turf/open/floor/plating, /area/security/processing) +"xWs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/maintenance/starboard/aft) "xXi" = ( /obj/machinery/vending/clothing, /turf/open/floor/plasteel, @@ -60683,6 +61565,13 @@ }, /turf/open/floor/plating, /area/maintenance/disposal/incinerator) +"yaW" = ( +/obj/machinery/hydroponics/soil{ + pixel_y = 8 + }, +/obj/item/seeds/ambrosia, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "ycd" = ( /obj/structure/toilet/secret/low_loot{ dir = 4 @@ -93272,9 +94161,9 @@ aZV aZV aZV aZV -bmx -bmx -bmx +aZV +aZV +aZV bqH bqH btM @@ -104567,7 +105456,7 @@ aIt aPd aIt aPb -aIt +adu aXu aYW bat @@ -106401,7 +107290,7 @@ bLe bMr bNr bIT -bJN +lxP bJN bJN bJN @@ -111301,9 +112190,9 @@ cNW cNW clt cNW +wVN cNW -cNW -cNW +cQw cjD cjD cjD @@ -111541,30 +112430,30 @@ bLk bEs bNC nRG -cbf -cbf -cbf -cbf -cbf -cbf -cbf +kIN +nYK +xWs +uwN +lre +oQP +oQP bYr -cbf -clr +fLN +cNW cad cbi -cNW +iyG ccW -cdV +cNW clt cNW -cgy -ccV +cfv cNW -aaa -aaa -aaf -aaf +mug +hUJ +ixd +cNW +ktS aaf aaf aaf @@ -111796,31 +112685,31 @@ bIU bKe bLj bEs -bNB +cdV cac bPP -cNW -cNW -cNW -cNW -cNW -cNW -cNW +cOe +gRV +gDZ +eoD +sVD +kQe +imZ kAJ -clt -cac -cbh cNW +rSf +cNW +wly ccV -cOe -clt -cfv -cBL -cOe +noa +clu +cNW +xgs +srk +srk +srk +oYQ cNW -aaf -aaa -aaa aaa aaf aaa @@ -112032,14 +112921,14 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa +gXs +jIy +nJP +jIy +nJP +gXs bky -btp +kgk brH bvQ bxt @@ -112056,29 +112945,29 @@ bEs rmX xIa vxh -cNW -aaa -aaa -aaf -aaa -aaf -cNW +cOe +bPP +bPP +bPP +vsO +iQc +sMG bYs -nRG -ciJ -cbf -cbf -cbf -cbf +ccU +nnM +cNW +wuO +pDG +cNW ceT cNW -dBm +gGK chH +dEh +srk +gGK cNW -aaf -aaf -aaa -aaf +ktS aaf aaf aaf @@ -112290,15 +113179,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +qtH +eXL +qXJ +eXL +vdo bZi bqg -brG -brG +oBQ +wqW cNR brG brG @@ -112310,31 +113199,31 @@ rNc bEs bLm bEs -cOT -cOT -cOT -cNW -aaa -aaa -aaf -aaa -aaf +jGw +hke +fkW +fkW +fkW +fkW +uUP +noT cNW cNW -cOT -cOT -cOT +cNW +cNW +tTw +cNW cNW cNW cNW cPH cNW +gGK +pcK +srk +dHp +uRn cNW -cNW -cNW -aaf -aaf -aaa aaa aaf aaa @@ -112547,18 +113436,18 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +eXL +vdo +vdo +vdo +vdo bZi btq brI bvR cNS byx -brI +wkc bky bky bEs @@ -112566,32 +113455,32 @@ bGc bGc bEs bLl -bEs -aaf -aaa -aaa -aaf -aaa -aaa -aaf -aaa -aaa -aag -aaf -aaa -aaa -aaa -aaf -aaf +cbh +eDz +fxk +iIs +qFf +pcQ +leE +hTt +vsr +cNW +hbi +uqu +yaW +iky +cNW +mHA +ifJ cNW ceU cNW -aaa -aaa -aaa -aaf -aaa -aaa +cgy +gGK +gGK +uRn +dBm +cNW aaa aaf aaa @@ -112808,7 +113697,7 @@ aaa aaa aaa aaa -aaa +gXs bky bky bky @@ -112823,33 +113712,33 @@ gXs gXs aaf aaa -aaf -gXs -aaa -aaa -aaf -aaa -aaa -aaf -aaa -aaa -aag -aaf -aaa -aaa -aaa -aaa -aaf +cNW +bPP +tsq +pkS +olh +cOe +rVy +hTt +cOe +wVN +pYQ +mLS +qIO +qSF +lUP +tTc +vxh cNW cOe cNW -aaf -aaf -aaf -aaf -aaf -aaf -aaf +cNW +cNW +cNW +cNW +cNW +cNW +ktS aaf aaf aaf @@ -113080,30 +113969,30 @@ aaa aaa aaf aaa -aaf -aaa -aaa -aaa -aaf -aaa -aaa -aaa -aaa -aaa -aaf -aaf -aaa -aaa -aaa -aaa -aaf +cOT +bPP +uys +qFf +sAH +uzm +uhq +hTt +lXy +kfS +ewN +qEB +nzB +xcz +cVw +jsO +flP cNW cPI cNW -aaf +gXs aaa aaa -aaf +gXs aaa aaa aaa @@ -113337,24 +114226,24 @@ aaa aaa aaf aaa -aaf -aaa -aaa -aaa -aag -aaa -aaa -aaa -aaa -aaa -aaf -aaa -aaa -aaa -aaa -aaa -gXs -aag +cOT +bPP +uys +mDZ +oMT +qFf +qFf +hTt +qIO +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW +cNW aag aag gXs @@ -113594,19 +114483,19 @@ aaa aaa aaf aaa -aaf +cNW +bPP +nsf +rgW +rgW +gKl +qMv +rba +cae +cOT aaa aaa aaa -aag -aaa -aaa -aaa -aaa -aaa -aaf -aaa -aaa aaa aaa aaa @@ -113851,19 +114740,19 @@ aaa aaa aaf aaa -aaf +cNW +qlY +paJ +bPP +bPP +bPP +bPP +ddM +wVg +cOT aaa aaa aaa -aag -aaa -aaa -aaa -aaa -aaa -aaf -aaa -aaa aaa aaa aaa @@ -114108,16 +114997,16 @@ aaa aaa aaf aaa -aaf -aaa -aaa -aaa -aag -aaa -aaa -aaa -aaa -aaa +cNW +cNW +cNW +cOT +cOT +cOT +cOT +cNW +cNW +cNW aaa aaa aaa @@ -114365,11 +115254,11 @@ aaa aaa aaf aaa -aaf +gXs aaa aaa aaa -aag +gXs aaa aaa aaa @@ -114626,7 +115515,7 @@ aaf aaa aaa aaa -aag +aaa aaa aaa aaa @@ -114883,7 +115772,7 @@ aaf aaa aaa aaa -aaf +aaa aaa aaa aaa diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm index 9b260f0133..70abbc1477 100644 --- a/_maps/map_files/CogStation/CogStation.dmm +++ b/_maps/map_files/CogStation/CogStation.dmm @@ -8535,7 +8535,7 @@ /obj/effect/turf_decal/tile/bar{ dir = 1 }, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/item/toy/cards/deck, /turf/open/floor/plasteel, /area/crew_quarters/bar) @@ -16727,7 +16727,7 @@ /area/bridge) "aKw" = ( /obj/structure/table, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/item/toy/cards/deck, /obj/structure/disposalpipe/segment{ dir = 4 @@ -31929,7 +31929,7 @@ /obj/effect/turf_decal/tile/green{ dir = 4 }, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/item/toy/cards/deck, /turf/open/floor/plasteel/white/corner{ dir = 1 diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 943aa85efd..891b238f11 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -20277,7 +20277,7 @@ /area/security/prison) "aND" = ( /obj/structure/table, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -20973,7 +20973,7 @@ /area/crew_quarters/bar/atrium) "aOJ" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -73299,7 +73299,7 @@ /area/library) "ctL" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/machinery/computer/security/telescreen/entertainment{ pixel_y = -32 }, @@ -95302,7 +95302,7 @@ /area/medical/medbay/central) "deG" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/structure/sign/poster/official/help_others{ pixel_x = -32 }, @@ -110277,9 +110277,6 @@ /turf/open/floor/plasteel/airless/solarpanel, /area/solar/starboard/aft) "dFz" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, /obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; @@ -110288,12 +110285,19 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/machinery/computer/security/telescreen/toxins{ + dir = 4 + }, +/obj/structure/table/reinforced, /turf/open/floor/plasteel, /area/science/mixing) "dFA" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/structure/chair/office/dark{ + dir = 8 + }, /turf/open/floor/plasteel, /area/science/mixing) "dFB" = ( @@ -110311,25 +110315,28 @@ network = list("ss13","rd") }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/mixing) "dFC" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/science/mixing) -"dFD" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/light{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/mixing) +"dFD" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Space Loop Out"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "dFE" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/newscaster{ pixel_y = 32 }, @@ -110337,9 +110344,10 @@ dir = 8; pixel_x = 24 }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/mixing) "dFF" = ( @@ -111237,20 +111245,16 @@ /turf/open/floor/plating, /area/science/test_area) "dGY" = ( -/obj/structure/table/reinforced, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/computer/security/telescreen/toxins{ - dir = 4 +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 }, /turf/open/floor/plasteel, /area/science/mixing) "dGZ" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /turf/open/floor/plasteel, /area/science/mixing) "dHa" = ( @@ -111267,9 +111271,6 @@ }, /area/science/mixing) "dHb" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -111279,22 +111280,7 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"dHc" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/mixing) "dHd" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -111995,16 +111981,12 @@ /turf/open/floor/plasteel, /area/science/mixing) "dIk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, /turf/open/floor/plasteel, /area/science/mixing) "dIl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/mixing) "dIm" = ( @@ -112012,14 +111994,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/mixing) "dIn" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/mixing) "dIo" = ( @@ -112030,7 +112010,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/mixing) "dIp" = ( @@ -112918,6 +112897,9 @@ dir = 4 }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/mixing) "dJM" = ( @@ -112930,6 +112912,9 @@ dir = 4 }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/mixing) "dJN" = ( @@ -112938,6 +112923,9 @@ }, /obj/effect/turf_decal/bot, /obj/machinery/suit_storage_unit/rd, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/mixing) "dJO" = ( @@ -112950,6 +112938,9 @@ dir = 4 }, /obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/mixing) "dJP" = ( @@ -116736,7 +116727,7 @@ /area/library/abandoned) "dQx" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/carpet, /area/library/abandoned) "dQy" = ( @@ -122966,7 +122957,7 @@ /area/hallway/secondary/exit/departure_lounge) "ecH" = ( /obj/structure/table, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) @@ -125274,6 +125265,12 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hydroponics/garden/abandoned) +"esD" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) "etO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -125737,6 +125734,13 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"hLf" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 + }, +/turf/open/floor/plating, +/area/science/mixing) "hNZ" = ( /obj/structure/chair/office/light{ dir = 8 @@ -125956,6 +125960,12 @@ }, /turf/open/floor/plasteel/white, /area/science/research) +"jdR" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) "jeu" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -126547,6 +126557,13 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/gravity_generator) +"mtj" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 1 + }, +/turf/open/floor/plating, +/area/science/mixing) "mvm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -126642,6 +126659,17 @@ /obj/machinery/vending/kink, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) +"nMo" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/space/basic, +/area/space/nearstation) +"nNN" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) "nOz" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -126911,6 +126939,13 @@ }, /turf/open/floor/plating, /area/science/research/abandoned) +"pwx" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) "pxR" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -127233,6 +127268,13 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"tzM" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) "tCh" = ( /turf/closed/wall, /area/science/misc_lab) @@ -127712,6 +127754,13 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) +"xmL" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space, +/area/space/nearstation) "xok" = ( /obj/machinery/light{ dir = 1 @@ -155077,8 +155126,8 @@ dmy dAt djs dhQ -aad -aaa +atI +jdR aaa aaa aad @@ -155334,8 +155383,8 @@ dAt dBX dDl dhQ -aad -aad +pwx +pwx aad aad abj @@ -155591,8 +155640,8 @@ dhQ dhQ dhQ dhQ -aad -aaa +pwx +esD aaa aaa aad @@ -155846,10 +155895,10 @@ djw fRT dAu caE -aaa -aad -aad -aad +nMo +nNN +xmL +pwx aad aad abj @@ -156103,10 +156152,10 @@ drH dzn cLt caE -aad +pwx drP dEn -dEn +hLf drP dEn drP @@ -156360,7 +156409,7 @@ djA cJT cLx cOj -aaa +esD dEn dFz dGY @@ -156617,7 +156666,7 @@ djA cJS cLu cOj -aad +pwx dEn dFA dGZ @@ -156874,7 +156923,7 @@ djA dzo cLt caE -aaa +esD drP dFB dHa @@ -157131,8 +157180,8 @@ djA dzp cLy cOj -aad -dEn +tzM +mtj dFC dHb dIm @@ -157391,7 +157440,7 @@ cOj aaa dEn dFD -dHc +dHd dIn dJN dEn diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 51bfe5038e..245f67833e 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -19127,7 +19127,7 @@ /area/maintenance/disposal/incinerator) "aFL" = ( /obj/machinery/atmospherics/pipe/layer_manifold, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "aFM" = ( /obj/structure/grille, @@ -19140,7 +19140,7 @@ /area/maintenance/disposal/incinerator) "aFO" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "aFP" = ( /obj/machinery/door/firedoor, @@ -19196,7 +19196,7 @@ "aFU" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/machinery/meter, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "aFV" = ( /obj/structure/cable{ @@ -20074,6 +20074,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ dir = 8 }, +/obj/effect/spawner/structure/window/reinforced, /turf/closed/wall, /area/engine/atmos) "aHy" = ( @@ -20930,7 +20931,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "aIM" = ( /obj/effect/turf_decal/bot, @@ -20949,13 +20950,14 @@ /turf/closed/wall, /area/maintenance/central) "aIO" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ dir = 8 }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/layer_manifold, /turf/closed/wall, /area/engine/atmos) "aIP" = ( @@ -21204,7 +21206,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "aJm" = ( /obj/effect/decal/cleanable/dirt, @@ -21443,6 +21445,7 @@ /area/engine/atmos) "aJI" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/effect/spawner/structure/window/reinforced, /turf/closed/wall, /area/engine/atmos) "aJJ" = ( @@ -21839,13 +21842,6 @@ dir = 1 }, /area/hallway/primary/fore) -"aKm" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/closed/wall, -/area/engine/atmos) "aKn" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -27414,10 +27410,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating{ icon_state = "platingdmg1" }, @@ -27448,11 +27442,10 @@ /turf/open/floor/plasteel/showroomfloor, /area/medical/medbay/central) "aSZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -52343,6 +52336,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, /turf/closed/wall, /area/engine/atmos) "bGp" = ( @@ -53445,6 +53439,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, +/obj/effect/spawner/structure/window/reinforced, /turf/closed/wall, /area/engine/atmos) "bIc" = ( @@ -53458,10 +53453,11 @@ }, /area/engine/atmos) "bIe" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible, /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/layer_manifold, /turf/closed/wall, /area/engine/atmos) "bIf" = ( @@ -61570,10 +61566,11 @@ /turf/open/space/basic, /area/space/nearstation) "bUM" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/engine/atmos) "bUN" = ( @@ -63746,9 +63743,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"bYf" = ( -/turf/closed/mineral/random/labormineral, -/area/maintenance/starboard/aft) "bYg" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -67202,7 +67196,6 @@ /area/maintenance/port/aft) "cdS" = ( /obj/structure/sign/warning/securearea, -/obj/item/multitool, /turf/closed/wall/r_wall, /area/security/nuke_storage) "cdT" = ( @@ -73372,6 +73365,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/blobstart, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -75352,7 +75346,9 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, -/obj/machinery/airalarm, +/obj/machinery/airalarm{ + pixel_y = 22 + }, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating{ @@ -78585,6 +78581,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, /turf/closed/wall, /area/engine/atmos) "cxU" = ( @@ -80397,7 +80394,7 @@ /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/space, -/area/engine/atmos) +/area/space/nearstation) "cCY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -84288,7 +84285,9 @@ /area/maintenance/starboard) "cOo" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/blobstart, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/starboard) "cOx" = ( @@ -84748,6 +84747,13 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"gwE" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space/basic, +/area/space/nearstation) "gxY" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -84854,6 +84860,13 @@ }, /turf/open/floor/engine, /area/science/xenobiology) +"iPI" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) "iSg" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -84863,6 +84876,13 @@ /mob/living/simple_animal/hostile/retaliate/ghost, /turf/open/floor/plasteel/dark, /area/maintenance/starboard/fore) +"iXU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "iZo" = ( /turf/closed/wall/r_wall/rust, /area/medical/virology) @@ -84930,7 +84950,7 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "jOz" = ( /obj/structure/sign/warning/electricshock, @@ -85117,6 +85137,10 @@ /obj/structure/sign/nanotrasen, /turf/closed/wall, /area/maintenance/port/fore) +"kWO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall, +/area/maintenance/starboard) "kXo" = ( /obj/structure/table/wood/poker, /obj/item/toy/cards/deck, @@ -85128,6 +85152,10 @@ icon_state = "wood-broken4" }, /area/maintenance/port/fore) +"lht" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space/basic, +/area/space/nearstation) "llm" = ( /obj/structure/sign/poster/ripped, /turf/closed/wall, @@ -85154,6 +85182,14 @@ /obj/machinery/status_display/evac, /turf/closed/wall, /area/security/warden) +"lVT" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space/basic, +/area/space/nearstation) "mbs" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/item/pickaxe, @@ -85217,6 +85253,12 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/mineral/random/labormineral, /area/space/nearstation) +"nHl" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/turf/open/space/basic, +/area/space/nearstation) "nJw" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -85274,6 +85316,12 @@ /obj/structure/table/wood, /turf/open/floor/wood, /area/security/vacantoffice) +"oXQ" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/space/basic, +/area/space/nearstation) "ppP" = ( /turf/open/floor/wood{ icon_state = "wood-broken7" @@ -85309,6 +85357,13 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/prison) +"qlK" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "qvS" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=W CPH"; @@ -85375,6 +85430,13 @@ /mob/living/carbon/monkey, /turf/open/floor/grass, /area/medical/virology) +"rnD" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "ruL" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -85382,6 +85444,20 @@ }, /turf/open/floor/plating, /area/security/prison) +"rvN" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"rwy" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "rNm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/lattice/catwalk, @@ -85416,12 +85492,28 @@ /obj/structure/sign/warning, /turf/closed/wall/rust, /area/space/nearstation) +"tog" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space/basic, +/area/space/nearstation) "tCi" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/wood{ icon_state = "wood-broken3" }, /area/maintenance/port/fore) +"tJC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Space Loop Out"; + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard) "uda" = ( /turf/closed/wall/rust, /area/security/warden) @@ -85430,6 +85522,13 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plating, /area/maintenance/port/fore) +"uhv" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) "ukP" = ( /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/bot/cleanbot{ @@ -85478,6 +85577,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/security/vacantoffice) +"uOT" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space/basic, +/area/space/nearstation) "uRM" = ( /turf/open/floor/wood, /area/security/vacantoffice) @@ -85595,6 +85701,14 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel/dark, /area/security/prison) +"ygZ" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) "ykB" = ( /obj/structure/chair/stool, /turf/open/floor/wood, @@ -112779,9 +112893,9 @@ cvg aMP aFL aIL -aFI +aEh aFW -aFI +aEh cko cko aaa @@ -113038,9 +113152,9 @@ aFO cwc aFO cwA -aFI -aFI -aFI +aEh +aEh +aEh aaa aaa aaa @@ -113552,9 +113666,9 @@ aFU cwd jHJ cwH -aFI -aFI -aFI +aEh +aEh +aEh aaa aaa aaa @@ -113807,9 +113921,9 @@ cFF cFF cFF aJl -aFI -aFI -aFI +aEh +aEh +aEh cko cko aaa @@ -114062,7 +114176,7 @@ cBz aHd aMZ aFc -cFF +aFM acm aaa aaQ @@ -114576,7 +114690,7 @@ cBB aHf bDR aFc -cFF +aFM acm aaa cow @@ -115090,7 +115204,7 @@ cBz aHg aNa aFd -cFF +aFM acm aaa cow @@ -115604,7 +115718,7 @@ cBB aHi bFG aFd -cFF +aFM acm aaa acm @@ -116118,7 +116232,7 @@ cBz aHj aNb aVG -cFF +aFM acm aaa cow @@ -116626,13 +116740,13 @@ cpK cqL cph bwy -aKm +bIe clu cBB aHl bId aFe -cFF +aFM acm aaa aaQ @@ -124321,7 +124435,7 @@ koc dbY dlg bWx -bYf +bPJ ceU cgI cDp @@ -128901,9 +129015,9 @@ ava bkd bkd bkd -avA -avA -bkd +tJC +iXU +kWO bBX bkd cwC @@ -129157,10 +129271,10 @@ avA bkd aeu aeu -aeu -acm -aaa -acm +bkd +rvN +rvN +bkd aaa bkd cwD @@ -129415,8 +129529,8 @@ bkd aeu alm acm -aaQ -aeo +iPI +ygZ aeo acm bkd @@ -129672,9 +129786,9 @@ bkd aeu aeU aaa -acm -aaa -acm +iPI +rwy +uhv aaa acm acK @@ -129928,10 +130042,10 @@ aaa bhq aeu aUz -aaa -aaQ -aaa -acm +oXQ +lVT +rnD +gwE aaa acm aaa @@ -130185,10 +130299,10 @@ aaa akA aeu aeU -aaa +qlK aeo -aaa -acm +rwy +uhv aaa acm aaa @@ -130442,10 +130556,10 @@ aaa cko aeu aeu -aeU -acm -aaa -acK +nHl +tog +lht +uOT acm acK aaa diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm index a0d54edb91..b87c755979 100644 --- a/_maps/map_files/LambdaStation/lambda.dmm +++ b/_maps/map_files/LambdaStation/lambda.dmm @@ -391,8 +391,12 @@ /turf/open/space, /area/solar/port/fore) "abk" = ( -/turf/closed/wall/r_wall, -/area/asteroid/nearstation) +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) "abl" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -720,9 +724,6 @@ /obj/machinery/doppler_array/research/science{ dir = 1 }, -/obj/machinery/status_display/ai{ - pixel_y = 32 - }, /obj/item/radio/intercom{ dir = 8; pixel_x = -28 @@ -742,14 +743,17 @@ /turf/open/floor/plasteel, /area/science/mixing) "acf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, /obj/machinery/button/massdriver{ id = "toxinsdriver"; pixel_x = 24; pixel_y = 24 }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/mixing) "acg" = ( @@ -1137,13 +1141,13 @@ /turf/open/floor/plasteel, /area/science/mixing) "adb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/plasteel, /area/science/mixing) "adc" = ( @@ -1153,13 +1157,9 @@ "add" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/mixing) "ade" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, /obj/machinery/light, /turf/open/floor/plasteel, /area/science/mixing) @@ -4424,7 +4424,6 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "ajC" = ( -/obj/effect/turf_decal/stripes/line, /obj/machinery/camera/autoname{ dir = 1 }, @@ -10504,6 +10503,10 @@ "atH" = ( /turf/closed/wall/r_wall, /area/science/server) +"atI" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/turf/open/floor/plating/asteroid/airless, +/area/asteroid/nearstation) "atJ" = ( /obj/effect/turf_decal/tile/purple{ dir = 4 @@ -63631,10 +63634,26 @@ }, /turf/open/space/basic, /area/solar/starboard/aft) +"egV" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) "ehl" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/medical/paramedic) +"ehs" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "eia" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -64004,6 +64023,12 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"eLb" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "eMH" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -64435,6 +64460,9 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"fvD" = ( +/turf/open/floor/plasteel, +/area/science/mixing) "fvI" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/binary/pump{ @@ -65459,6 +65487,15 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"hbf" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fore) "hbS" = ( /obj/machinery/button/door{ id = "engstorage"; @@ -66197,6 +66234,13 @@ icon_state = "platingdmg2" }, /area/maintenance/aft) +"iIs" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) "iJd" = ( /obj/structure/table/reinforced, /obj/machinery/light_switch{ @@ -66614,6 +66658,12 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/atmos) +"jwN" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/airless, +/area/asteroid/nearstation) "jEf" = ( /obj/effect/landmark/carpspawn, /turf/open/space/basic, @@ -67109,6 +67159,11 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) +"krP" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) "krZ" = ( /obj/structure/cable{ icon_state = "2-8" @@ -67214,6 +67269,15 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/command) +"kFO" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "kJN" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /obj/structure/table, @@ -68138,6 +68202,15 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/fore) +"mkV" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "mmA" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -70166,6 +70239,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/electrical) +"qPP" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) "qSJ" = ( /obj/effect/turf_decal/delivery, /obj/structure/cable{ @@ -70410,6 +70490,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) +"rsU" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) "rtC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ dir = 4 @@ -71613,6 +71700,12 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plating, /area/maintenance/aft) +"ucV" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/airless, +/area/asteroid/nearstation) "ufs" = ( /obj/machinery/light/small{ dir = 8 @@ -72684,6 +72777,15 @@ }, /turf/open/space, /area/space/nearstation) +"wgn" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Space Loop In" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "wgU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output, /turf/open/floor/engine/vacuum, @@ -72988,6 +73090,15 @@ "wPh" = ( /turf/closed/wall, /area/hallway/secondary/entry) +"wPU" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "wQP" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -73270,6 +73381,11 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) +"xzG" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/turf/open/floor/plating, +/area/science/mixing) "xAN" = ( /turf/closed/wall, /area/maintenance/department/electrical) @@ -99141,7 +99257,7 @@ aaA aaA aaA abY -aUL +hbf afP afB acw @@ -100418,11 +100534,11 @@ aaA aaA aaA aaA -abk -abk -abk -abk -abk +aaQ +aaQ +aaQ +aaQ +aaQ aaA aaA abY @@ -103763,8 +103879,8 @@ aAY aAY aAY aAY -aAY -aAY +aaA +aaA abJ acb acF @@ -104009,20 +104125,20 @@ aab aab aab aab -aab -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY +aaa +aaa +aaa +abk +krP +krP +krP +qPP +atI +ucV aAY abK +abK +abJ acc acG adb @@ -104268,19 +104384,19 @@ aab aab aab aaa -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -abK -ace +aaa +rsU +krP +krP +krP +iIs +aac +jwN +atI +xzG +kFO +mkV +eLb acH ajC abJ @@ -104525,19 +104641,19 @@ aab aab aab aaa -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY +aac +abk +krP +krP +krP +egV +aac aAY aAY abK -ace +wPU +fvD +fvD acI add adv @@ -104781,19 +104897,19 @@ aab aab aab aab -aaa -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -aAY -abK +aac +aac +rsU +krP +krP +krP +qPP +atI +atI +atI +xzG +wgn +ehs acf adH ade @@ -105048,8 +105164,8 @@ aaA aaA aaA aaA -aaA -aaA +abJ +abJ abJ abK abK diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 218044c6c2..be1b5ba779 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -928,7 +928,7 @@ /area/security/prison) "acb" = ( /obj/structure/table, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/plasteel, /area/security/prison) "acc" = ( @@ -15807,7 +15807,7 @@ /area/crew_quarters/dorms) "aDZ" = ( /obj/structure/table, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "aEa" = ( @@ -21386,7 +21386,7 @@ /area/crew_quarters/locker) "aPI" = ( /obj/structure/table, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aPJ" = ( @@ -42546,7 +42546,7 @@ dir = 10 }, /obj/structure/table/wood/poker, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/wood, /area/crew_quarters/bar) "bFt" = ( @@ -76185,6 +76185,14 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"cYI" = ( +/obj/machinery/camera{ + c_tag = "Research Division Circuitry Lab"; + dir = 1; + network = list("ss13","rd") + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) "cYJ" = ( /obj/docking_port/stationary{ dir = 2; @@ -79847,12 +79855,12 @@ /turf/open/floor/plating, /area/chapel/main) "dka" = ( -/obj/structure/noticeboard{ - dir = 1; - pixel_y = -32 +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 }, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/turf/open/space, +/area/space/nearstation) "dlI" = ( /turf/closed/wall/r_wall, /area/engine/supermatter) @@ -81295,6 +81303,14 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"etb" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "etr" = ( /obj/machinery/vr_sleeper, /turf/open/floor/plasteel, @@ -81335,6 +81351,11 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"faU" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space/basic, +/area/space/nearstation) "fdr" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -81515,6 +81536,11 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"idz" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "ioI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -81532,6 +81558,12 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/cryopod) +"izh" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) "izu" = ( /obj/machinery/autolathe{ name = "public autolathe" @@ -81674,6 +81706,13 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/port) +"jDS" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "jKK" = ( /obj/machinery/door/airlock/external{ req_access_txt = "13" @@ -81907,6 +81946,16 @@ /obj/effect/landmark/start/roboticist, /turf/open/floor/plasteel, /area/science/robotics/lab) +"lUv" = ( +/obj/structure/noticeboard{ + dir = 1; + pixel_y = -32 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) "lWL" = ( /obj/machinery/smartfridge/organ/preloaded, /turf/closed/wall, @@ -82010,6 +82059,13 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"mIJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/turf/open/space, +/area/space/nearstation) "mSd" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -82105,6 +82161,13 @@ }, /turf/open/floor/plasteel, /area/construction/storage/wing) +"nKU" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 4 + }, +/turf/open/floor/plating, +/area/science/circuit) "nLT" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -82325,6 +82388,13 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"pDn" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/turf/open/space/basic, +/area/space/nearstation) "pEv" = ( /obj/machinery/airalarm{ dir = 8; @@ -82397,6 +82467,12 @@ }, /turf/open/floor/wood, /area/security/vacantoffice) +"qaK" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) "qhe" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -82442,6 +82518,11 @@ "qBq" = ( /turf/closed/wall/mineral/plastitanium, /area/hallway/secondary/entry) +"qEc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction, +/turf/open/floor/plating, +/area/science/circuit) "qJZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -82459,13 +82540,12 @@ /turf/open/floor/plating, /area/crew_quarters/cryopod) "qRM" = ( -/obj/machinery/camera{ - c_tag = "Research Division Circuitry Lab"; - dir = 1; - network = list("ss13","rd") +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/turf/open/space, +/area/space/nearstation) "qVR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -82623,6 +82703,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"sqe" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space/basic, +/area/space/nearstation) "stP" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "Port to Fuel Pipe" @@ -82708,6 +82792,13 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/cryopod) +"tfs" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) "tre" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -82756,6 +82847,13 @@ }, /turf/open/floor/plasteel/dark, /area/medical/morgue) +"tID" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Space Loop Out"; + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) "tUa" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -82871,6 +82969,13 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"vda" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space, +/area/space/nearstation) "vgd" = ( /obj/item/taperecorder, /obj/item/camera, @@ -82935,6 +83040,11 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space) +"vYs" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space, +/area/space/nearstation) "wdu" = ( /obj/structure/grille, /obj/structure/lattice, @@ -83006,6 +83116,13 @@ /obj/effect/turf_decal/stripes/line, /turf/closed/wall, /area/science/circuit) +"wNQ" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "wOE" = ( /obj/machinery/door/airlock/external{ name = "Atmospherics External Airlock"; @@ -83135,6 +83252,13 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"xHA" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Space Loop In"; + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) "xIi" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -83161,6 +83285,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/security/vacantoffice) +"xUO" = ( +/turf/open/space, +/area/space/nearstation) "xVl" = ( /turf/closed/wall, /area/hallway/secondary/service) @@ -83186,6 +83313,13 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"yfk" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "yfW" = ( /obj/structure/cable{ icon_state = "1-2" @@ -83209,9 +83343,12 @@ /turf/open/floor/plasteel, /area/science/circuit) "ykE" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/white, -/area/science/circuit) +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/turf/open/space, +/area/space/nearstation) (1,1,1) = {" oRp @@ -120387,11 +120524,11 @@ kOt gRS oUA cxO -qRM +cxO +cYI krD aaf aaf -aaf anS anS anS @@ -120644,9 +120781,9 @@ oLW gGT wPk dGH -dka +cxO +lUv krD -aaf aaa aaf aaf @@ -120901,12 +121038,12 @@ ocT xkG uTS cxO -ykE +cxO +tfs krD aaa aaa aaa -aaa aaf aaa aaf @@ -121159,9 +121296,9 @@ llb uTS cxO cxO -krD -aaa -aaa +tID +noG +lMJ aaa aaa aaf @@ -121415,13 +121552,13 @@ lsv txj eEe cxO -cxO -krD -aaa -aaa -aaa -aaf -aaf +izh +qaK +qEc +idz +idz +vYs +mIJ aaa anT aaf @@ -121672,13 +121809,13 @@ jyv ohj nnK cxO +xHA cxO krD aaa aaa aaa -aaa -aaf +qRM aaa anT aaf @@ -121929,13 +122066,13 @@ krD noG krD noG +nKU krD krD -aaa -aaa -aaa -aaa -aaf +yfk +idz +idz +vda aaa aqB aaa @@ -122181,18 +122318,18 @@ dvY dvY dvY aaf -aaf -aaf +dka +vYs +idz +idz +idz +jDS aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaf -aaf +wNQ +idz +vYs +mIJ aaf anT aaa @@ -122438,18 +122575,18 @@ crc aaf ctl aaa -aaf -aaf +qRM +xUO anT anT anT -aaf -aaf -aaf -lMJ -lMJ -aaf -aaa +ake +ake +ake +pDn +faU +vYs +jDS aaf anT aaf @@ -122695,17 +122832,17 @@ crd ack ack aaf -aaf +ykE +idz +sqe +sqe +idz +idz +idz +idz +etb aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaf +ake aaf aaf anT diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 5149033cb4..af94512e0f 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -1741,7 +1741,7 @@ pixel_x = 12 }, /obj/machinery/shower{ - pixel_y = 26 + pixel_y = 16 }, /turf/open/floor/plasteel/freezer, /area/security/prison) @@ -22551,7 +22551,7 @@ /area/hallway/primary/starboard) "aJa" = ( /obj/structure/table, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/machinery/firealarm{ dir = 4; pixel_x = -24 @@ -22871,7 +22871,7 @@ /obj/machinery/requests_console{ department = "Genetics"; name = "Genetics RC"; - pixel_x = 28 + pixel_x = 28 }, /turf/open/floor/plasteel/white, /area/medical/genetics) @@ -28655,7 +28655,7 @@ "aTf" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -39574,10 +39574,21 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit) +"boE" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "bpj" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/machinery/camera{ + c_tag = "Toxins Launch Room Access"; + dir = 4 + }, /turf/open/floor/plasteel, /area/science/mixing) "bpn" = ( @@ -39586,6 +39597,12 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"bpo" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "bpB" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 10 @@ -40604,10 +40621,6 @@ }, /area/engine/atmos) "bOJ" = ( -/obj/machinery/camera{ - c_tag = "Toxins Launch Room Access"; - dir = 1 - }, /obj/effect/turf_decal/stripes/corner{ dir = 8 }, @@ -41121,6 +41134,12 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/closed/wall/r_wall, /area/science/mixing) +"eXV" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/asteroid/nearstation) "eYe" = ( /obj/effect/mapping_helpers/airlock/locked, /obj/machinery/door/airlock/public/glass{ @@ -41233,6 +41252,10 @@ /obj/item/wrench, /turf/open/space, /area/space/nearstation) +"foz" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel, +/area/science/mixing) "fsl" = ( /obj/docking_port/stationary{ dir = 2; @@ -41526,6 +41549,12 @@ }, /turf/open/floor/plasteel/dark, /area/engine/atmos) +"gZk" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/airless, +/area/asteroid/nearstation) "heQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/navbeacon{ @@ -41580,6 +41609,13 @@ }, /turf/closed/wall/r_wall/rust, /area/engine/atmos) +"hyX" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "hAy" = ( /obj/machinery/power/apc{ areastring = "/area/science/mixing"; @@ -41820,6 +41856,13 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) +"iOL" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "iUq" = ( /obj/machinery/status_display, /turf/closed/wall, @@ -42031,6 +42074,13 @@ }, /turf/closed/wall/r_wall/rust, /area/engine/atmos) +"jEK" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "jFP" = ( /turf/open/space/basic, /area/space/station_ruins) @@ -42045,6 +42095,11 @@ /obj/structure/table/reinforced, /turf/open/floor/plasteel, /area/science/mixing) +"jIu" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/turf/open/floor/plasteel, +/area/science/mixing) "jLF" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -42065,8 +42120,16 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/machinery/portable_atmospherics/canister, /turf/open/floor/plasteel, /area/science/mixing) +"jYq" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "kaA" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -42078,6 +42141,12 @@ }, /turf/open/floor/plasteel/cafeteria, /area/engine/atmos) +"kcN" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/asteroid/nearstation) "kit" = ( /obj/machinery/portable_atmospherics/canister/toxins, /obj/machinery/light/small{ @@ -42096,6 +42165,11 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"kpi" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "kqH" = ( /obj/machinery/atmospherics/components/binary/valve{ dir = 4; @@ -42107,6 +42181,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/science/mixing) +"kuK" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/science/mixing) "kwF" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -42209,7 +42287,7 @@ /turf/closed/wall/r_wall/rust, /area/science/storage) "lmq" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/plating, /area/science/storage) "low" = ( @@ -42379,6 +42457,13 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"mdx" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "meo" = ( /turf/closed/wall/r_wall/rust, /area/science/mixing) @@ -42513,10 +42598,27 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"nbT" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Space Loop Out" + }, +/turf/open/floor/plasteel, +/area/science/mixing) "ndg" = ( /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/hallway/primary/fore) +"nfS" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/open/floor/plating, +/area/science/storage) +"ngY" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "nhU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -42708,6 +42810,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) +"oys" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel, +/area/science/mixing) "oyD" = ( /turf/closed/wall, /area/crew_quarters/toilet/restrooms) @@ -42785,6 +42891,12 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"oXz" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "pbT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -42976,6 +43088,12 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"pMh" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "pNE" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ @@ -44007,6 +44125,13 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit) +"sIm" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "sIu" = ( /turf/closed/wall/r_wall/rust, /area/engine/gravity_generator) @@ -46249,6 +46374,9 @@ /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/mixing) "ujg" = ( @@ -46377,6 +46505,19 @@ }, /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) +"uDp" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/airless, +/area/asteroid/nearstation) +"uEu" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "uGq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/red{ @@ -46635,6 +46776,10 @@ dir = 1 }, /area/engine/atmos) +"vKE" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction, +/turf/open/floor/plating/asteroid/airless, +/area/asteroid/nearstation) "vMb" = ( /turf/open/floor/engine/n2o, /area/engine/atmos) @@ -46779,6 +46924,13 @@ /obj/structure/table/reinforced, /turf/open/floor/plasteel, /area/science/mixing) +"wRY" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "wUF" = ( /obj/machinery/door/airlock/atmos/glass/critical{ heat_proof = 1; @@ -97368,7 +97520,7 @@ meo sVt sVt sVt -aad +iio aad aad aad @@ -97620,13 +97772,13 @@ meo uiT bfq bpj +oys +oys +oys +oys +fjN iio aad -aad -aad -aad -aad -aad aaa aaa aaa @@ -97877,12 +98029,12 @@ sVt kQn lFm fjN -iio -aad -aad -aad -aad -aad +hVE +hVE +hVE +hVE +pMh +kuK aac aaa aaa @@ -98134,15 +98286,15 @@ ucd vZb iiW bOJ -iio -aad -aad -aad -aad -aad -aac -aaa -aaa +foz +nbT +ngY +oXz +bpo +jIu +vKE +kpi +mdx aaa aaa aaa @@ -98386,20 +98538,20 @@ aac aad eGm lmq -lmq +nfS sVt iio upN iio iio iio -aad -aad -aad +iio +sIm +boE +iio aac -aac -aaa -aaa +sdX +jEK aaa aaa aaa @@ -98651,12 +98803,12 @@ uTF gGq iio aad -aad -aad aac -aaa -aaa -aaa +gZk +uDp +uEu +hyX +jEK jFP jFP jFP @@ -98908,12 +99060,12 @@ msG ogL iio aad -aad -aad aac -aaa -aaa -aaa +aac +eXV +wRY +wRY +jEK jFP jFP jFP @@ -99165,12 +99317,12 @@ msG diQ iio aad -aad aac aac -aaa -aaa -aaa +kcN +wRY +wRY +jEK jFP jFP jFP @@ -99424,10 +99576,10 @@ iio aac aac aac -aaa -aaa -aaa -aaa +jEK +wRY +wRY +jEK jFP jFP jFP @@ -99681,10 +99833,10 @@ sdX aac aac aac -aaa -aaa -aaa -aaa +jEK +wRY +wRY +jEK jFP jFP jFP @@ -99938,10 +100090,10 @@ sdX aaa aac aaa -aaa -aaa -aaa -aaa +jEK +wRY +wRY +jEK jFP jFP jFP @@ -100195,10 +100347,10 @@ sdX aaa aaa aaa -aaa -aaa -aaa -aaa +jYq +iOL +jYq +iOL jFP jFP jFP diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 3e79030b78..ed7abba3d6 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2180,7 +2180,7 @@ /turf/open/floor/plasteel/dark, /area/security/prison) "afp" = ( -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/structure/table, /turf/open/floor/plasteel/dark, /area/security/prison) @@ -10645,7 +10645,7 @@ /area/crew_quarters/dorms) "ayo" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/carpet, /area/crew_quarters/dorms) "ayq" = ( @@ -34077,9 +34077,13 @@ /turf/closed/wall, /area/science/mixing) "bAG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/science/mixing) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/science) "bAH" = ( /obj/structure/disposaloutlet, /obj/structure/disposalpipe/trunk{ @@ -37242,12 +37246,15 @@ req_access_txt = "8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 + dir = 4 }, /turf/open/floor/plating, /area/science/mixing) "bGB" = ( /obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/department/science) "bGD" = ( @@ -37753,13 +37760,13 @@ /turf/open/floor/plasteel, /area/science/mixing) "bHD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, /turf/open/floor/plasteel, /area/science/mixing) "bHE" = ( @@ -38317,11 +38324,12 @@ /turf/open/floor/plasteel, /area/science/mixing) "bIP" = ( -/obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, /area/maintenance/department/science) "bIQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -38331,11 +38339,9 @@ /area/maintenance/department/science) "bIR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg3" + dir = 10 }, +/turf/open/floor/plating, /area/maintenance/department/science) "bIT" = ( /obj/structure/window/reinforced{ @@ -39403,7 +39409,7 @@ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 + dir = 8 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -40359,11 +40365,12 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bNq" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1 +/obj/machinery/door/airlock/maintenance{ + name = "Toxins Launch Maintenance"; + req_access_txt = "8" }, -/turf/open/floor/plating/airless, -/area/science/mixing) +/turf/open/floor/plating, +/area/maintenance/department/science) "bNr" = ( /obj/structure/window/reinforced{ dir = 4 @@ -40798,11 +40805,10 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bOu" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 4 }, -/turf/open/space, +/turf/open/floor/plating/airless, /area/science/mixing) "bOv" = ( /obj/structure/window/reinforced{ @@ -54165,11 +54171,10 @@ /turf/open/floor/plasteel, /area/quartermaster/sorting) "fwr" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/closed/wall, -/area/science/mixing) +/obj/machinery/door/airlock/maintenance/abandoned, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/science) "fwI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ @@ -54258,6 +54263,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, /area/science/mixing) "fBZ" = ( @@ -54461,6 +54467,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"gjv" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Space Loop In"; + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) "gjN" = ( /obj/item/weldingtool, /obj/effect/spawner/lootdrop/maintenance, @@ -54810,10 +54823,11 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit/departure_lounge) "gMm" = ( +/obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 + dir = 5 }, -/turf/closed/wall, +/turf/open/floor/plating, /area/science/mixing) "gMO" = ( /obj/structure/plasticflaps/opaque, @@ -55085,6 +55099,13 @@ /obj/item/clothing/glasses/regular, /turf/open/floor/plating, /area/maintenance/department/science) +"hxI" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) "hyh" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 9 @@ -55189,6 +55210,12 @@ /obj/machinery/power/rad_collector/anchored, /turf/open/floor/engine, /area/engine/supermatter) +"hMx" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/science) "hOx" = ( /obj/structure/cable{ icon_state = "2-4" @@ -55450,6 +55477,13 @@ /obj/machinery/processor/slime, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"ilE" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "imE" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ @@ -57131,6 +57165,11 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) +"mhK" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/turf/open/space/basic, +/area/space/nearstation) "miw" = ( /obj/machinery/atmospherics/pipe/manifold/cyan/visible, /obj/structure/cable/yellow{ @@ -57383,6 +57422,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) +"mJp" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/turf/open/space/basic, +/area/space/nearstation) "mKc" = ( /obj/structure/bookcase/random/nonfiction, /turf/open/floor/plasteel/dark, @@ -59579,12 +59625,10 @@ /turf/open/floor/plating, /area/chapel/asteroid/monastery) "rBh" = ( -/obj/structure/mopbucket, -/obj/item/mop, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating{ + icon_state = "platingdmg1" }, -/turf/open/floor/plating, /area/maintenance/department/science) "rEh" = ( /obj/structure/table/glass, @@ -60153,6 +60197,12 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) +"tfx" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/science) "tfP" = ( /obj/item/beacon, /turf/open/floor/engine, @@ -60207,6 +60257,13 @@ /obj/structure/table, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"tlp" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "tlw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, @@ -61929,6 +61986,11 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"xlg" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction, +/turf/open/floor/plating, +/area/maintenance/department/science) "xlA" = ( /obj/machinery/door/airlock/maintenance/abandoned, /turf/open/floor/plating, @@ -62181,6 +62243,13 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plasteel/freezer, /area/storage/emergency/port) +"xQk" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space/nearstation) "xSd" = ( /obj/machinery/light/small, /turf/open/floor/plating, @@ -105349,7 +105418,7 @@ bHy bHy bHy bOs -aht +mZE aaa aaa aaa @@ -105606,7 +105675,7 @@ bCV bCV bCV bOu -bNq +aht aaa aaa aaa @@ -106115,7 +106184,7 @@ bFt bGy bHD fBz -bCV +gMm bCV bCV bCV @@ -106627,17 +106696,17 @@ bwm bAF bAF bGA -bAG -fwr -gMm bAF bAF -aht -aht -abI -abI -abI -abI +bAF +bAF +bAF +uaO +dsz +xQk +hxI +xQk +hxI abI abI abI @@ -106883,18 +106952,18 @@ cDB lWy tSL lWy -cDB +bAG bwm rBh -bwm -aht -aht -aht -aaa -aht -aaa -aaa -aaa +gjv +tfx +xlg +mJp +nqu +mJp +nqu +tlp +ilE aaa aaa aaa @@ -107140,18 +107209,18 @@ cDB hxn uvq bFx -tSL -bwm bIP -bwm -aht -aaa -aht -aaa -aht -aht -aht -aht +bNq +tSL +hMx +tfx +xlg +mhK +wIo +mhK +mhK +mhK +hyh aht aaa aaa @@ -107399,16 +107468,16 @@ obP bFy bGB bwm -bIQ bwm -aht +bwm +rNB bwm bwm rNB bwm rNB bwm -aaa +cdm aby aaa aaa @@ -107654,9 +107723,9 @@ rKL lWy lWy bFz -lWy -xlA bIR +fwr +eMC bwm aht bwm diff --git a/_maps/map_files/Snaxi/Snaxi.dmm b/_maps/map_files/Snaxi/Snaxi.dmm index 5cf7c43a3e..69b0fd9981 100644 --- a/_maps/map_files/Snaxi/Snaxi.dmm +++ b/_maps/map_files/Snaxi/Snaxi.dmm @@ -4095,7 +4095,7 @@ /area/engine/supermatter) "aOP" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/plasteel/dark, /area/security/prison) "aPw" = ( @@ -27914,7 +27914,7 @@ "nIM" = ( /obj/structure/table/wood/poker, /obj/item/toy/cards/deck, -/obj/item/storage/box/dice{ +/obj/item/storage/dice{ pixel_x = 8 }, /obj/structure/sign/poster/contraband/random{ @@ -33380,7 +33380,7 @@ /area/bridge) "qMN" = ( /obj/structure/table, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/plasteel/grimy, /area/crew_quarters/fitness/recreation) "qNB" = ( diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 020017c3fe..4582400c1a 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -8429,7 +8429,7 @@ /area/centcom/ferry) "tx" = ( /obj/structure/table/wood, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /turf/open/floor/plasteel/grimy, /area/centcom/ferry) "ty" = ( @@ -10217,7 +10217,7 @@ /area/wizard_station) "xy" = ( /obj/structure/table/wood/fancy, -/obj/item/storage/box/dice{ +/obj/item/storage/dice{ icon_state = "magicdicebag" }, /turf/open/floor/carpet, diff --git a/_maps/shuttles/arrival_delta.dmm b/_maps/shuttles/arrival_delta.dmm index c7d331e368..da5205fe66 100644 --- a/_maps/shuttles/arrival_delta.dmm +++ b/_maps/shuttles/arrival_delta.dmm @@ -307,7 +307,7 @@ "D" = ( /obj/structure/table/reinforced, /obj/item/folder, -/obj/item/storage/box/dice, +/obj/item/storage/dice, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/shuttle/arrival) diff --git a/_maps/shuttles/arrival_omega.dmm b/_maps/shuttles/arrival_omega.dmm index 9285a4a716..47673e98b7 100644 --- a/_maps/shuttles/arrival_omega.dmm +++ b/_maps/shuttles/arrival_omega.dmm @@ -237,7 +237,7 @@ /area/shuttle/arrival) "C" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/dice{ +/obj/item/storage/dice{ pixel_x = -2; pixel_y = 8 }, diff --git a/_maps/shuttles/snow_taxi.dmm b/_maps/shuttles/snow_taxi.dmm index 55259fa1fe..bc6b8761e0 100644 --- a/_maps/shuttles/snow_taxi.dmm +++ b/_maps/shuttles/snow_taxi.dmm @@ -39,6 +39,7 @@ name = "Mining Shuttle Airlock" }, /obj/docking_port/mobile{ + callTime = 5; dwidth = 3; height = 4; id = "snow_taxi"; diff --git a/code/__DEFINES/dynamic.dm b/code/__DEFINES/dynamic.dm index da8a76e71e..6a15834ed8 100644 --- a/code/__DEFINES/dynamic.dm +++ b/code/__DEFINES/dynamic.dm @@ -1,7 +1,7 @@ #define CURRENT_LIVING_PLAYERS 1 #define CURRENT_LIVING_ANTAGS 2 #define CURRENT_DEAD_PLAYERS 3 -#define CURRENT_OBSERVERS 4 +#define CURRENT_OBSERVERS 4 #define NO_ASSASSIN (1<<0) #define WAROPS_ALWAYS_ALLOWED (1<<1) @@ -9,9 +9,11 @@ #define FORCE_IF_WON (1<<3) #define USE_PREV_ROUND_WEIGHTS (1<<4) -#define ONLY_RULESET (1<<0) -#define HIGHLANDER_RULESET (1<<1) -#define TRAITOR_RULESET (1<<2) -#define MINOR_RULESET (1<<3) +#define ONLY_RULESET (1<<0) +#define HIGHLANDER_RULESET (1<<1) +#define TRAITOR_RULESET (1<<2) +#define MINOR_RULESET (1<<3) +#define FAKE_ANTAG_RULESET (1<<4) +#define ALWAYS_MAX_WEIGHT_RULESET (1<<5) #define RULESET_STOP_PROCESSING 1 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 3407b3342b..ffcb5ac231 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -125,7 +125,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define isbot(A) (istype(A, /mob/living/simple_animal/bot)) -#define isshade(A) (istype(A, /mob/living/simple_animal/shade)) +#define isshade(A) (istype(A, /mob/living/simple_animal/hostile/construct/shade)) #define ismouse(A) (istype(A, /mob/living/simple_animal/mouse)) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index aef77e7b57..cd13510366 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -78,7 +78,9 @@ #define EXP_TYPE_ADMIN "Admin" //Flags in the players table in the db -#define DB_FLAG_EXEMPT 1 +#define DB_FLAG_EXEMPT (1<<0) +#define DB_FLAG_AGE_CONFIRMATION_INCOMPLETE (1<<1) +#define DB_FLAG_AGE_CONFIRMATION_COMPLETE (1<<2) #define DEFAULT_CYBORG_NAME "Default Cyborg Name" diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 5775e128f8..57484ae85b 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -76,8 +76,14 @@ #define LINGHIVE_LINK 3 //whether the emote is visible or audible. +// Requires sight #define EMOTE_VISIBLE 1 +// Requires hearing #define EMOTE_AUDIBLE 2 +// Requires sight or hearing +#define EMOTE_BOTH 3 +// Always able to be seen +#define EMOTE_OMNI 4 //Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam #define MAX_MESSAGE_LEN 2048 //Citadel edit: What's the WORST that could happen? @@ -89,4 +95,4 @@ // Audio/Visual Flags. Used to determine what sense are required to notice a message. #define MSG_VISUAL (1<<0) -#define MSG_AUDIBLE (1<<1) \ No newline at end of file +#define MSG_AUDIBLE (1<<1) diff --git a/code/__DEFINES/species.dm b/code/__DEFINES/species.dm index c6cc6a5037..efd715b85a 100644 --- a/code/__DEFINES/species.dm +++ b/code/__DEFINES/species.dm @@ -5,6 +5,7 @@ #define SPECIES_ANDROID "android" #define SPECIES_ANGEL "angel" #define SPECIES_MAMMAL "mammal" +#define SPECIES_ARACHNID "arachnid" #define SPECIES_INSECT "insect" #define SPECIES_DULLAHAN "dullahan" #define SPECIES_DWARF "dwarf" @@ -33,7 +34,9 @@ #define SPECIES_SYNTH "synth" #define SPECIES_SYNTH_MIL "military_synth" #define SPECIES_VAMPIRE "vampire" + #define SPECIES_VAMPIRE_WEAK "vampire_roundstart" #define SPECIES_XENOHYBRID "xeno" +#define SPECIES_ZOMBIE "zombie" // Species Category Defines --------------------- @@ -45,6 +48,7 @@ #define SPECIES_CATEGORY_PLANT "plant" #define SPECIES_CATEGORY_ROBOT "robotic" #define SPECIES_CATEGORY_JELLY "jelly" +#define SPECIES_CATEGORY_LIZARD "lizard" #define SPECIES_CATEGORY_SHADOW "shadow" #define SPECIES_CATEGORY_SKELETON "skeleton" #define SPECIES_CATEGORY_UNDEAD "undead" diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index 7c0811ec59..a0a5df4290 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "5.2.1" +#define TGS_DMAPI_VERSION "5.2.7" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -95,6 +95,8 @@ #define TGS_EVENT_WATCHDOG_SHUTDOWN 15 /// Before the watchdog detaches for a TGS update/restart. No parameters. #define TGS_EVENT_WATCHDOG_DETACH 16 +// We don't actually implement this value as the DMAPI can never receive it +// #define TGS_EVENT_WATCHDOG_LAUNCH 17 // OTHER ENUMS @@ -127,6 +129,7 @@ * Call this when your initializations are complete and your game is ready to play before any player interactions happen. * * This may use [/world/var/sleep_offline] to make this happen so ensure no changes are made to it while this call is running. + * Afterwards, consider explicitly setting it to what you want to avoid this BYOND bug: http://www.byond.com/forum/post/2575184 * Before this point, note that any static files or directories may be in use by another server. Your code should account for this. * This function should not be called before ..() in [/world/proc/New]. */ diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 520f205381..8e14c7a58e 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -208,10 +208,9 @@ #define TRAIT_FAST_PUMP "fast_pump" #define TRAIT_NO_PROCESS_FOOD "no-process-food" // You don't get benefits from nutriment, nor nutrition from reagent consumables #define TRAIT_NICE_SHOT "nice_shot" //hnnnnnnnggggg..... you're pretty good... -/// Prevents stamina buffer regeneration -#define TRAIT_NO_STAMINA_BUFFER_REGENERATION "block_stamina_buffer_regen" -/// Prevents stamina regeneration -#define TRAIT_NO_STAMINA_REGENERATION "block_stamina_regen" +#define TRAIT_NO_STAMINA_BUFFER_REGENERATION "block_stamina_buffer_regen" /// Prevents stamina buffer regeneration +#define TRAIT_NO_STAMINA_REGENERATION "block_stamina_regen" /// Prevents stamina regeneration +#define TRAIT_ARMOR_BROKEN "armor_broken" //acts as if you are wearing no clothing when taking damage, does not affect non-clothing sources of protection // mobility flag traits // IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it) @@ -324,3 +323,4 @@ /// This trait is added by the parry system. #define ACTIVE_PARRY_TRAIT "active_parry" #define STICKY_NODROP "sticky-nodrop" //sticky nodrop sounds like a bad soundcloud rapper's name +#define TRAIT_SACRIFICED "sacrificed" //Makes sure that people cant be cult sacrificed twice. diff --git a/code/__DEFINES/vote.dm b/code/__DEFINES/vote.dm index 175cce3dc4..a3617e21d0 100644 --- a/code/__DEFINES/vote.dm +++ b/code/__DEFINES/vote.dm @@ -1,9 +1,9 @@ -#define PLURALITY_VOTING 0 -#define APPROVAL_VOTING 1 -#define SCHULZE_VOTING 2 -#define SCORE_VOTING 3 -#define MAJORITY_JUDGEMENT_VOTING 4 -#define INSTANT_RUNOFF_VOTING 5 +#define PLURALITY_VOTING "PLURALITY" +#define APPROVAL_VOTING "APPROVAL" +#define SCHULZE_VOTING "SCHULZE" +#define SCORE_VOTING "SCORE" +#define MAJORITY_JUDGEMENT_VOTING "MAJORITY_JUDGEMENT" +#define INSTANT_RUNOFF_VOTING "IRV" #define SHOW_RESULTS (1<<0) #define SHOW_VOTES (1<<1) @@ -26,4 +26,4 @@ GLOBAL_LIST_INIT(display_vote_settings, list(\ "Ongoing Votes" = SHOW_VOTES, "Winner" = SHOW_WINNER, "Abstainers" = SHOW_ABSTENTION -)) \ No newline at end of file +)) diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 605b20a4f3..e30f0e260d 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -13,6 +13,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NEARSIGHT" = TRAIT_NEARSIGHT, "TRAIT_FAT" = TRAIT_FAT, "TRAIT_HUSK" = TRAIT_HUSK, + "TRAIT_SACRIFICED" = TRAIT_SACRIFICED, "TRAIT_NOCLONE" = TRAIT_NOCLONE, "TRAIT_CLUMSY" = TRAIT_CLUMSY, "TRAIT_CHUNKYFINGERS" = TRAIT_CHUNKYFINGERS, diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index fdf7ffd663..67e4a97894 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -509,21 +509,21 @@ //Body size configs, the feature will be disabled if both min and max have the same value. /datum/config_entry/number/body_size_min - config_entry_value = RESIZE_DEFAULT_SIZE + config_entry_value = 0.9 min_val = 0.1 //to avoid issues with zeros and negative values. max_val = RESIZE_DEFAULT_SIZE integer = FALSE /datum/config_entry/number/body_size_max - config_entry_value = RESIZE_DEFAULT_SIZE + config_entry_value = 1.25 min_val = RESIZE_DEFAULT_SIZE integer = FALSE -//Pun-Pun movement slowdown given to characters with a body size smaller than this value, +//Penalties given to characters with a body size smaller than this value, //to compensate for their smaller hitbox. //To disable, just make sure the value is lower than 'body_size_min' -/datum/config_entry/number/threshold_body_size_slowdown - config_entry_value = RESIZE_DEFAULT_SIZE * 0.85 +/datum/config_entry/number/threshold_body_size_penalty + config_entry_value = RESIZE_DEFAULT_SIZE min_val = 0 max_val = RESIZE_DEFAULT_SIZE integer = FALSE @@ -531,8 +531,8 @@ //multiplicative slowdown multiplier. See 'dna.update_body_size' for the operation. //doesn't apply to floating or crawling mobs /datum/config_entry/number/body_size_slowdown_multiplier - config_entry_value = 0.25 - min_val = 0.1 //To encourage folks to disable the slowdown through the above config instead. + config_entry_value = 0 + min_val = 0 integer = FALSE //Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones. diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index b3e00af458..90ec3bc289 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -290,7 +290,7 @@ /datum/config_entry/flag/tgstyle_maprotation /datum/config_entry/string/map_vote_type - config_entry_value = "SCORE" + config_entry_value = APPROVAL_VOTING /datum/config_entry/number/maprotatechancedelta config_entry_value = 0.75 @@ -327,6 +327,9 @@ /datum/config_entry/number/notify_new_player_account_age // how long do we notify admins of a new byond account min_val = 0 +/datum/config_entry/flag/age_verification //are we using the automated age verification which asks users if they're 18+? + config_entry_value = TRUE + /datum/config_entry/flag/irc_first_connection_alert // do we notify the irc channel when somebody is connecting for the first time? /datum/config_entry/flag/check_randomizer diff --git a/code/controllers/subsystem/processing/circuit.dm b/code/controllers/subsystem/processing/circuit.dm index ac720a7fb4..880e7a16a8 100644 --- a/code/controllers/subsystem/processing/circuit.dm +++ b/code/controllers/subsystem/processing/circuit.dm @@ -50,17 +50,20 @@ PROCESSING_SUBSYSTEM_DEF(circuit) /obj/item/electronic_assembly/simple, /obj/item/electronic_assembly/hook, /obj/item/electronic_assembly/pda, + /obj/item/electronic_assembly/dildo, /obj/item/electronic_assembly/small/default, /obj/item/electronic_assembly/small/cylinder, /obj/item/electronic_assembly/small/scanner, /obj/item/electronic_assembly/small/hook, /obj/item/electronic_assembly/small/box, + /obj/item/electronic_assembly/small/dildo, /obj/item/electronic_assembly/medium/default, /obj/item/electronic_assembly/medium/box, /obj/item/electronic_assembly/medium/clam, /obj/item/electronic_assembly/medium/medical, /obj/item/electronic_assembly/medium/gun, /obj/item/electronic_assembly/medium/radio, + /obj/item/electronic_assembly/medium/dildo, /obj/item/electronic_assembly/large/default, /obj/item/electronic_assembly/large/scope, /obj/item/electronic_assembly/large/terminal, diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index 161fd92f77..13e9ff50a2 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -45,22 +45,29 @@ SUBSYSTEM_DEF(statpanels) var/list/vote_arry = list( list("Vote active!", "There is currently a vote running. Question: [SSvote.question]") ) //see the MC on how this works. - if(!(SSvote.vote_system in list(PLURALITY_VOTING, APPROVAL_VOTING))) + if(!(SSvote.vote_system in list(PLURALITY_VOTING, APPROVAL_VOTING, SCHULZE_VOTING, INSTANT_RUNOFF_VOTING))) vote_arry[++vote_arry.len] += list("STATPANEL VOTING DISABLED!", "The current vote system is not supported by statpanel rendering. Please vote manually by opening the vote popup using the action button or chat link.", "disabled") //does not return. else - vote_arry[++vote_arry.len] += list("Time Left:", " [round(SSvote.end_time - world.time)] seconds") + vote_arry[++vote_arry.len] += list("Time Left:", " [DisplayTimeText(SSvote.end_time - world.time)] seconds") vote_arry[++vote_arry.len] += list("Choices:", "") for(var/choice in SSvote.choice_statclicks) var/choice_id = SSvote.choice_statclicks[choice] - var/ivotedforthis = FALSE if(target.ckey) switch(SSvote.vote_system) - if(APPROVAL_VOTING) - ivotedforthis = SSvote.voted[target.ckey] && (text2num(choice_id) in SSvote.voted[usr.ckey]) - if(PLURALITY_VOTING) - ivotedforthis = (SSvote.voted[target.ckey] == text2num(choice_id)) - vote_arry[++vote_arry.len] += list(ivotedforthis ? "\[X\]" : "\[ \]", choice, "[REF(SSvote)];vote=[choice_id];statpannel=1") + if(PLURALITY_VOTING, APPROVAL_VOTING) + var/ivotedforthis = FALSE + if(SSvote.vote_system == APPROVAL_VOTING) + ivotedforthis = SSvote.voted[target.ckey] && (text2num(choice_id) in SSvote.voted[target.ckey]) + else + ivotedforthis = (SSvote.voted[target.ckey] == text2num(choice_id)) + vote_arry[++vote_arry.len] += list(ivotedforthis ? "\[X\]" : "\[ \]", choice, "[REF(SSvote)];vote=[choice_id];statpannel=1") + if(SCHULZE_VOTING, INSTANT_RUNOFF_VOTING) + var/list/vote = SSvote.voted[target.ckey] + var/vote_position = " " + if(vote) + vote_position = vote.Find(text2num(choice_id)) + vote_arry[++vote_arry.len] += list("\[[vote_position]\]", choice, "[REF(SSvote)];vote=[choice_id];statpannel=1") var/vote_str = url_encode(json_encode(vote_arry)) target << output("[vote_str]", "statbrowser:update_voting") else diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 19f19f05ac..95d8928368 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -482,18 +482,7 @@ SUBSYSTEM_DEF(ticker) INVOKE_ASYNC(SSmapping, /datum/controller/subsystem/mapping/.proc/maprotate) else var/vote_type = CONFIG_GET(string/map_vote_type) - switch(vote_type) - if("PLURALITY") - SSvote.initiate_vote("map","server", display = SHOW_RESULTS) - if("APPROVAL") - SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = APPROVAL_VOTING) - if("IRV") - SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = INSTANT_RUNOFF_VOTING) - if("SCORE") - SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = MAJORITY_JUDGEMENT_VOTING) - else - SSvote.initiate_vote("map","server", display = SHOW_RESULTS) - // fallback + SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = vote_type) /datum/controller/subsystem/ticker/proc/HasRoundStarted() return current_state >= GAME_STATE_PLAYING diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 1dea40a802..9a0665e91f 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -52,7 +52,7 @@ SUBSYSTEM_DEF(traumas) "doctors" = typecacheof(list(/mob/living/simple_animal/bot/medbot)), "the supernatural" = typecacheof(list(/mob/living/simple_animal/hostile/construct, /mob/living/simple_animal/hostile/clockwork, /mob/living/simple_animal/drone/cogscarab, - /mob/living/simple_animal/revenant, /mob/living/simple_animal/shade)), + /mob/living/simple_animal/revenant, /mob/living/simple_animal/hostile/construct/shade)), "aliens" = typecacheof(list(/mob/living/carbon/alien, /mob/living/simple_animal/slime)), "conspiracies" = typecacheof(list(/mob/living/simple_animal/bot/secbot, /mob/living/simple_animal/bot/ed209, /mob/living/simple_animal/drone, /mob/living/simple_animal/pet/penguin)), @@ -158,8 +158,8 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/head/frenchberet, /obj/item/clothing/suit/suspenders, /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, /obj/item/storage/backpack/mime, /obj/item/reagent_containers/food/snacks/grown/banana/mime, /obj/item/grown/bananapeel/mimanapeel, /obj/item/cartridge/virus/mime, /obj/item/clothing/shoes/sneakers/mime, - /obj/item/bedsheet/mime, /obj/item/reagent_containers/food/snacks/burger/mime, /obj/item/clothing/head/beret, /obj/item/clothing/mask/gas/sexymime, - /obj/item/clothing/under/rank/civilian/mime/sexy, /obj/item/toy/figure/mime, /obj/item/toy/crayon/mime, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced, /obj/mecha/combat/reticence)), + /obj/item/bedsheet/mime, /obj/item/reagent_containers/food/snacks/burger/mime, /obj/item/clothing/head/beret, + /obj/item/toy/figure/mime, /obj/item/toy/crayon/mime, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced, /obj/mecha/combat/reticence)), "cats" = typecacheof(list(/obj/item/organ/ears/cat, /obj/item/organ/tail/cat, /obj/item/laser_pointer, /obj/item/toy/cattoy, /obj/item/clothing/head/kitty, /obj/item/clothing/head/collectable/kitty, /obj/item/melee/chainofcommand/tailwhip/kitty, /obj/item/stack/sheet/animalhide/cat)), diff --git a/code/datums/accents.dm b/code/datums/accents.dm index ce32aa0884..d9e073b729 100644 --- a/code/datums/accents.dm +++ b/code/datums/accents.dm @@ -25,18 +25,15 @@ /datum/accent/abductor/modify_speech(list/speech_args, datum/source) var/message = speech_args[SPEECH_MESSAGE] - var/mob/living/carbon/human/user = source + var/mob/living/carbon/user = source + var/obj/item/organ/tongue/abductor/A = user.getorgan(/obj/item/organ/tongue/abductor) var/rendered = "[user.name]: [message]" user.log_talk(message, LOG_SAY, tag="abductor") - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - var/obj/item/organ/tongue/T = H.getorganslot(ORGAN_SLOT_TONGUE) - if(!T || T.type != type) + for(var/mob/living/carbon/C in GLOB.alive_mob_list) + var/obj/item/organ/tongue/abductor/T = C.getorgan(/obj/item/organ/tongue/abductor) + if(!T || T.mothership != A.mothership) continue - if(H.dna && H.dna.species.id == "abductor" && user.dna && user.dna.species.id == "abductor") - var/datum/antagonist/abductor/A = user.mind.has_antag_datum(/datum/antagonist/abductor) - if(!A || !(H.mind in A.team.members)) - continue - to_chat(H, rendered) + to_chat(C, rendered) for(var/mob/M in GLOB.dead_mob_list) var/link = FOLLOW_LINK(M, user) to_chat(M, "[link] [rendered]") diff --git a/code/datums/action.dm b/code/datums/action.dm index fbf7487e4d..284df6adda 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -174,7 +174,7 @@ M.ghostize(can_reenter_corpse = TRUE, voluntary = TRUE) /datum/action/proc/OnUpdatedIcon() - UpdateButtonIcon() + addtimer(CALLBACK(src, .proc/UpdateButtonIcon), 1) //Hopefully runs after new icon overlays have been compiled. //Presets for item actions /datum/action/item_action @@ -273,6 +273,13 @@ if(istype(H)) H.toggle_welding_screen(owner) +/datum/action/item_action/toggle_welding_screen/plasmaman + +/datum/action/item_action/toggle_welding_screen/plasmaman/Trigger() + var/obj/item/clothing/head/helmet/space/plasmaman/H = target + if(istype(H)) + H.toggle_welding_screen(owner) + /datum/action/item_action/toggle_headphones name = "Toggle Headphones" desc = "UNTZ UNTZ UNTZ" diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index ec8ea86d24..753adf7ff4 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -248,7 +248,7 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/ishotgun // smaller and more versatile gun requires some better materials +/datum/crafting_recipe/ishotgun name = "Improvised Shotgun" result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised reqs = list(/obj/item/pipe = 2, // putting a large amount of meaningless timegates by forcing people to turn base resources into upgraded resources kinda sucks @@ -408,7 +408,7 @@ /datum/crafting_recipe/rifle_receiver name = "Improvised Rifle Receiver" result = /obj/item/weaponcrafting/improvised_parts/rifle_receiver - reqs = list(/obj/item/stack/sheet/metal = 15) // you can carry multiple shotguns + reqs = list(/obj/item/stack/sheet/metal = 15) tools = list(TOOL_SCREWDRIVER, TOOL_WELDER) time = 25 category = CAT_WEAPONRY @@ -417,10 +417,9 @@ /datum/crafting_recipe/shotgun_receiver name = "Improvised Shotgun Receiver" result = /obj/item/weaponcrafting/improvised_parts/shotgun_receiver - reqs = list(/obj/item/stack/sheet/metal = 15, - /obj/item/stack/sheet/plasteel = 1) // requires access or hacking since shotgun is better + reqs = list(/obj/item/stack/sheet/metal = 10) // shotgun does less damage than the rifle and can't 1shot but is more portable tools = list(TOOL_SCREWDRIVER, TOOL_WELDER) - time = 25 + time = 20 category = CAT_WEAPONRY subcategory = CAT_PARTS @@ -432,6 +431,6 @@ reqs = list(/obj/item/stack/sheet/metal = 3, /obj/item/assembly/igniter = 1) tools = list(TOOL_SCREWDRIVER, TOOL_WELDER) - time = 25 + time = 20 category = CAT_WEAPONRY subcategory = CAT_PARTS diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index 36faba256e..0552a791ea 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -25,7 +25,7 @@ RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak) if(ismovable(parent)) RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak) - RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED, COMSIG_MOVABLE_CROSS), .proc/play_squeak_crossed) + RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED), .proc/play_squeak_crossed) RegisterSignal(parent, COMSIG_CROSS_SQUEAKED, .proc/delay_squeak) RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react) if(isitem(parent)) @@ -46,6 +46,21 @@ if(isnum(use_delay_override)) use_delay = use_delay_override +/datum/component/squeak/UnregisterFromParent() + if(!isatom(parent)) + return + UnregisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY)) + if(ismovable(parent)) + UnregisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT, + COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED, COMSIG_MOVABLE_CROSS, + COMSIG_CROSS_SQUEAKED, COMSIG_MOVABLE_DISPOSING)) + if(isitem(parent)) + UnregisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT, COMSIG_ITEM_ATTACK_SELF, + COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) + if(istype(parent, /obj/item/clothing/shoes)) + UnregisterSignal(parent, COMSIG_SHOES_STEP_ACTION) + return ..() + /datum/component/squeak/proc/play_squeak() do_play_squeak() diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index f952307685..44775ed031 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -236,12 +236,12 @@ switch(stage) if(1) if(ishuman(affected_mob) && affected_mob.dna) - if(affected_mob.dna.species.id == "slime" || affected_mob.dna.species.id == "stargazer" || affected_mob.dna.species.id == "slimelumi") + if(affected_mob.dna.species.id == SPECIES_SLIME_LUMI || affected_mob.dna.species.id == SPECIES_STARGAZER || affected_mob.dna.species.id == SPECIES_SLIME_LUMI) stage = 5 if(3) if(ishuman(affected_mob)) var/mob/living/carbon/human/human = affected_mob - if(human.dna.species.id != "slime" && affected_mob.dna.species.id != "stargazer" && affected_mob.dna.species.id != "slimelumi") + if(human.dna.species.id != SPECIES_SLIME_LUMI && affected_mob.dna.species.id != SPECIES_STARGAZER && affected_mob.dna.species.id != SPECIES_SLIME_LUMI) human.set_species(/datum/species/jelly/slime) /datum/disease/transformation/corgi diff --git a/code/datums/dna.dm b/code/datums/dna.dm index cd90b554ac..fe041c41ff 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -5,7 +5,7 @@ var/uni_identity var/blood_type var/datum/species/species = new /datum/species/human //The type of mutant race the player is if applicable (i.e. potato-man) - var/list/features = list("FFF") //first value is mutant color + var/list/features = list("FFF", "body_size" = RESIZE_DEFAULT_SIZE) //first value is mutant color var/real_name //Stores the real name of the person who originally got this dna datum. Used primarely for changelings, var/nameless = FALSE var/custom_species //siiiiigh I guess this is important @@ -696,11 +696,19 @@ /datum/dna/proc/update_body_size(old_size) if(!holder || features["body_size"] == old_size) return + //new size detected holder.resize = features["body_size"] / old_size holder.update_transform() - var/danger = CONFIG_GET(number/threshold_body_size_slowdown) - if(features["body_size"] < danger) - var/slowdown = (1 - round(features["body_size"] / danger, 0.1)) * CONFIG_GET(number/body_size_slowdown_multiplier) - holder.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/small_stride, TRUE, slowdown) - else if(old_size < danger) - holder.remove_movespeed_modifier(/datum/movespeed_modifier/small_stride) + if(iscarbon(holder)) + var/mob/living/carbon/C = holder + var/penalty_threshold = CONFIG_GET(number/threshold_body_size_penalty) + if(features["body_size"] < penalty_threshold && old_size >= penalty_threshold) + C.maxHealth -= 10 //reduce the maxhealth + var/slowdown = (1 - round(features["body_size"] / penalty_threshold, 0.1)) * CONFIG_GET(number/body_size_slowdown_multiplier) + holder.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/small_stride, TRUE, slowdown) + else + if(old_size < penalty_threshold && features["body_size"] >= penalty_threshold) + C.maxHealth += 10 //give the maxhealth back + holder.remove_movespeed_modifier(/datum/movespeed_modifier/small_stride) //remove the slowdown + + diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index e1147df225..14f3eae689 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -66,8 +66,12 @@ if(emote_type == EMOTE_AUDIBLE) user.audible_message(msg) - else + else if(emote_type == EMOTE_VISIBLE) user.visible_message(msg) + else if(emote_type == EMOTE_BOTH) + user.visible_message(msg, blind_message = msg) + else if(emote_type == EMOTE_OMNI) + user.visible_message(msg, omni = TRUE) /datum/emote/proc/replace_pronoun(mob/user, message) if(findtext(message, "their")) diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index 3bddfdaa63..b72874c329 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -150,7 +150,6 @@ overlays_standing[CM.layer_used] = mut_overlay apply_overlay(CM.layer_used) - /datum/mutation/human/proc/modify() //called when a genome is applied so we can properly update some stats without having to remove and reapply the mutation from someone if(modified || !power || !owner) return diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index fbc433a8a0..836b00250f 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -72,6 +72,8 @@ GLOBAL_VAR_INIT(dynamic_forced_storyteller, null) var/list/threat_log_verbose = list() /// List of roundstart rules used for selecting the rules. var/list/roundstart_rules = list() + /// List of minor roundstart rules used for selecting the rules. + var/list/minor_rules = list() /// List of latejoin rules used for selecting the rules. var/list/latejoin_rules = list() /// List of midround rules used for selecting the rules. @@ -121,10 +123,12 @@ GLOBAL_VAR_INIT(dynamic_forced_storyteller, null) var/pop_last_updated = 0 /// How many percent of the rounds are more peaceful. var/peaceful_percentage = 50 - /// If a highlander executed. + /// If a highlander executed. No other highlander rulesets will be run. var/highlander_executed = FALSE - /// If a only ruleset has been executed. + /// If a only ruleset has been executed. No other rulesets will be run. var/only_ruleset_executed = FALSE + /// If the first picked ruleset was a minor ruleset. Minor antagonists will be weighted higher. + var/minor_ruleset_start = FALSE /// Antags rolled by rules so far, to keep track of and discourage scaling past a certain ratio of crew/antags especially on lowpop. var/antags_rolled = 0 // Arbitrary threat addition, for fudging purposes. @@ -372,6 +376,8 @@ GLOBAL_VAR_INIT(dynamic_forced_storyteller, null) if(ruleset.name == "") continue switch(ruleset.ruletype) + if("Minor") + minor_rules += ruleset if("Roundstart") roundstart_rules += ruleset if ("Latejoin") @@ -396,21 +402,47 @@ GLOBAL_VAR_INIT(dynamic_forced_storyteller, null) rigged_roundstart() else roundstart() - - var/starting_rulesets = "" - for (var/datum/dynamic_ruleset/roundstart/DR in executed_rules) - starting_rulesets += "[DR.name], " - log_game("DYNAMIC: Picked the following roundstart rules: [starting_rulesets]") + if(minor_ruleset_start) + log_game("DYNAMIC: Starting a minor ruleset round.") + else + var/starting_rulesets = "" + for (var/datum/dynamic_ruleset/roundstart/DR in executed_rules) + starting_rulesets += "[DR.name], " + log_game("DYNAMIC: Picked the following roundstart rules: [starting_rulesets]") candidates.Cut() return TRUE /datum/game_mode/dynamic/post_setup(report) update_playercounts() - - for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules) - addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_roundstart_rule, rule), rule.delay) + if(minor_ruleset_start) + addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/minor_roundstart),rand(1 MINUTES,5 MINUTES)) + else + for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules) + addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_roundstart_rule, rule), rule.delay) ..() +/datum/game_mode/dynamic/proc/minor_roundstart() + message_admins("Dynamic beginning minor antag roundstart rolls.") + var/list/potential_minor_rulesets = storyteller.minor_rule_draft() + var/iterations = 0 + var/num_rulesets_executed = 0 + while(threat < threat_level && potential_minor_rulesets.len && (!CHECK_TICK || iterations < 100)) + var/datum/dynamic_ruleset/minor/rule = pickweight(potential_minor_rulesets) + rule.candidates = current_players[CURRENT_LIVING_PLAYERS].Copy() + rule.trim_candidates() + if(!check_blocking(rule.blocking_rules, executed_rules) && rule.ready()) + rule.execute() + executed_rules |= rule + log_threat("[rule.ruletype] - [rule.name] [rule.cost] threat", verbose = TRUE) + num_rulesets_executed++ + else + potential_minor_rulesets -= rule + update_playercounts() + iterations++ + message_admins("Minor antag roundstart rolls completed, with [num_rulesets_executed] antags or antag teams made.") + log_game("DYNAMIC: Minor antag roundstart made [num_rulesets_executed] antags or antag teams.") + + /// A simple roundstart proc used when dynamic_forced_roundstart_ruleset has rules in it. /datum/game_mode/dynamic/proc/rigged_roundstart() message_admins("[GLOB.dynamic_forced_roundstart_ruleset.len] rulesets being forced. Will now attempt to draft players for them.") @@ -429,12 +461,17 @@ GLOBAL_VAR_INIT(dynamic_forced_storyteller, null) if (GLOB.dynamic_forced_extended) log_game("DYNAMIC: Starting a round of forced extended.") return TRUE + if(prob(storyteller.minor_start_chance())) + minor_ruleset_start = TRUE + message_admins("Dynamic has initialized a minor antag start. Antags will be assigned in 1-5 minutes.") + log_game("DYNAMIC: Minor start initialized.") + return TRUE var/list/drafted_rules = storyteller.roundstart_draft() if(!drafted_rules.len) - message_admins("Not enough threat level for roundstart antags!") - log_game("DYNAMIC: Not enough threat level for roundstart antags!") - midround_injection_cooldown = round((midround_injection_cooldown + world.time) / 2, 1) - latejoin_injection_cooldown = round((latejoin_injection_cooldown + world.time) / 2, 1) + message_admins("No roundstart antags drafted! Falling back to minor ruleset start.") + log_game("DYNAMIC: No roundstart antags drafted! Falling back to minor ruleset start.") + minor_ruleset_start = TRUE + return FALSE var/indice_pop = min(10,round(roundstart_pop_ready/pop_per_requirement)+1) extra_rulesets_amount = 0 if (GLOB.dynamic_classic_secret) @@ -468,8 +505,9 @@ GLOBAL_VAR_INIT(dynamic_forced_storyteller, null) else if(threat_level >= 50) - message_admins("DYNAMIC: Picking first roundstart ruleset failed. You should report this.") + message_admins("DYNAMIC: Picking first roundstart ruleset failed. You should report this. Falling back to minor antag start.") log_game("DYNAMIC: Picking first roundstart ruleset failed. drafted_rules.len = [drafted_rules.len] and threat = [threat]/[threat_level]") + minor_ruleset_start = TRUE return FALSE return TRUE @@ -513,7 +551,6 @@ GLOBAL_VAR_INIT(dynamic_forced_storyteller, null) drafted_rules -= starting_rule starting_rule.trim_candidates() - starting_rule.scale_up(extra_rulesets_amount, threat_level-added_threat) if (starting_rule.pre_execute()) log_threat("[starting_rule.ruletype] - [starting_rule.name] [starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat", verbose = TRUE) if(starting_rule.flags & HIGHLANDER_RULESET) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index eb7da2144f..3e7e504130 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -50,8 +50,12 @@ /// Used for the roundend report var/total_cost = 0 /// A flag that determines how the ruleset is handled + /// ONLY_RULESET are rulesets that prevent ALL other rulesets from rolling. /// HIGHLANDER_RULESET are rulesets can end the round. - /// TRAITOR_RULESET and MINOR_RULESET can't end the round and have no difference right now. + /// TRAITOR_RULESET are the "default" ruleset--they should always be addable to a round, if the round type allows antags and dynamic thinks there should be another. + /// MINOR_RULESET is for rulesets whose antags can have multiple instances without causing too much issue. As roundstarts, they have their weights reduced based on the storyteller's minor-antag-round chance. + /// FAKE_ANTAG_RULESET is for rulesets whose antags aren't actually antagonistic--essentially just flavor meant to spice the round up. + /// ALWAYS_MAX_WEIGHT_RULESET means that the ruleset doesn't have its weight reduced based on recency. var/flags = 0 /// Pop range per requirement. If zero defaults to mode's pop_per_requirement. var/pop_per_requirement = 0 @@ -82,9 +86,6 @@ var/delay = 0 /// List of tags for use in storytellers. var/list/property_weights = list() - /// Whether or not recent-round weight values are taken into account for this ruleset. - /// Weight reduction uses the same values as secret's recent-round mode weight reduction. - var/always_max_weight = FALSE /// Weight reduction by recent-rounds. Saved on new. var/weight_mult = 1 @@ -100,7 +101,7 @@ var/high_population_requirements = CONFIG_GET(keyed_list/dynamic_high_population_requirement) var/list/repeated_mode_adjust = CONFIG_GET(number_list/repeated_mode_adjust) if(config_tag in weights) - if(!always_max_weight && SSpersistence.saved_dynamic_rules.len == 3 && repeated_mode_adjust.len == 3) + if(!(flags & ALWAYS_MAX_WEIGHT_RULESET) && SSpersistence.saved_dynamic_rules.len == 3 && repeated_mode_adjust.len == 3) var/saved_dynamic_rules = SSpersistence.saved_dynamic_rules for(var/i in 1 to 3) if(config_tag in saved_dynamic_rules[i]) @@ -119,6 +120,9 @@ /datum/dynamic_ruleset/roundstart // One or more of those drafted at roundstart ruletype = "Roundstart" +/datum/dynamic_ruleset/minor // drafted at roundstart in minor rounds, one antag at a time, for a "mixed" round + ruletype = "Minor" + // Can be drafted when a player joins the server /datum/dynamic_ruleset/latejoin ruletype = "Latejoin" @@ -175,7 +179,7 @@ /// This is called if persistent variable is true everytime SSTicker ticks. /datum/dynamic_ruleset/proc/rule_process() return TRUE - + /// Called on game mode pre_setup for roundstart rulesets. /// Do everything you need to do before job is assigned here. /// IMPORTANT: ASSIGN special_role HERE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index d2fa8bcc70..7842c6e0f7 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -70,9 +70,8 @@ requirements = list(40,30,20,15,15,15,15,15,15,15) high_population_requirement = 15 repeatable = TRUE - flags = TRAITOR_RULESET + flags = TRAITOR_RULESET | MINOR_RULESET | ALWAYS_MAX_WEIGHT_RULESET property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1) - always_max_weight = TRUE ////////////////////////////////////////////// // // @@ -207,6 +206,7 @@ weight = 4 cost = 25 requirements = list(60,60,60,55,50,50,50,50,50,50) + flags = MINOR_RULESET high_population_requirement = 50 property_weights = list("story_potential" = 1, "trust" = -1, "chaos" = 2, "extended" = -1, "valid" = 2) repeatable = TRUE @@ -229,6 +229,7 @@ cost = 10 property_weights = list("story_potential" = 2, "extended" = 2, "trust" = -2, "valid" = 1) requirements = list(70,65,60,55,50,45,40,35,30,30) + flags = MINOR_RULESET high_population_requirement = 30 repeatable = TRUE @@ -258,6 +259,7 @@ required_candidates = 1 weight = 3 cost = 15 + flags = MINOR_RULESET requirements = list(101,101,101,101,101,101,101,101,101,101) property_weights = list("trust" = -2, "valid" = 2) high_population_requirement = 101 @@ -281,5 +283,5 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE - flags = TRAITOR_RULESET | MINOR_RULESET - property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 2) + flags = TRAITOR_RULESET | MINOR_RULESET | FAKE_ANTAG_RULESET + property_weights = list("story_potential" = 1, "trust" = -1, "extended" = 2) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index b29584aa58..416721702b 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -207,9 +207,8 @@ requirements = list(30,25,20,15,15,15,15,15,15,15) repeatable = TRUE high_population_requirement = 15 - flags = TRAITOR_RULESET + flags = TRAITOR_RULESET | MINOR_RULESET | ALWAYS_MAX_WEIGHT_RULESET property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1) - always_max_weight = TRUE /datum/dynamic_ruleset/midround/autotraitor/acceptable(population = 0, threat = 0) var/player_count = mode.current_players[CURRENT_LIVING_PLAYERS].len @@ -494,6 +493,7 @@ required_candidates = 1 weight = 3 cost = 10 + flags = MINOR_RULESET requirements = list(101,101,101,70,50,40,20,15,15,15) high_population_requirement = 50 repeatable_weight_decrease = 2 @@ -630,6 +630,7 @@ required_candidates = 1 weight = 4 cost = 15 + flags = MINOR_RULESET requirements = list(101,101,101,90,80,70,60,50,40,30) high_population_requirement = 30 property_weights = list("story_potential" = 1, "extended" = -2, "valid" = 2) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_minor.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_minor.dm new file mode 100644 index 0000000000..618befbaa7 --- /dev/null +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_minor.dm @@ -0,0 +1,212 @@ + +////////////////////////////////////////////// +// // +// SYNDICATE TRAITORS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/minor/traitor + name = "Traitors" + config_tag = "traitor" // these having identical config tags to the roundstart modes is 100% intentional, so that config edits are simpler + persistent = TRUE + antag_flag = ROLE_TRAITOR + antag_datum = /datum/antagonist/traitor/ + minimum_required_age = 0 + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Cyborg") + restricted_roles = list("Cyborg", "AI") + required_candidates = 1 + weight = 5 + flags = TRAITOR_RULESET | ALWAYS_MAX_WEIGHT_RULESET + cost = 10 // Avoid raising traitor threat above 10, as it is the default low cost ruleset. + requirements = list(50,50,50,50,50,50,50,50,50,50) + high_population_requirement = 40 + property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1, "valid" = 1) + +/datum/dynamic_ruleset/minor/traitor/execute() + var/mob/M = pick_n_take(candidates) + assigned += M + var/datum/antagonist/traitor/newTraitor = new + M.mind.add_antag_datum(newTraitor) + log_admin("[M] was made into a traitor by dynamic.") + message_admins("[M] was made into a traitor by dynamic.") + return TRUE + +////////////////////////////////////////// +// // +// BLOOD BROTHERS // +// // +////////////////////////////////////////// + +/datum/dynamic_ruleset/minor/traitorbro + name = "Blood Brothers" + config_tag = "traitorbro" + antag_flag = ROLE_BROTHER + antag_datum = /datum/antagonist/brother + restricted_roles = list("AI", "Cyborg") + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + required_candidates = 2 + weight = 4 + cost = 10 + requirements = list(101,101,101,101,101,101,101,101,101,101) + high_population_requirement = 101 + antag_cap = list(2,2,2,2,2,2,2,2,2,2) // Can pick 3 per team, but rare enough it doesn't matter. + property_weights = list("story_potential" = 1, "trust" = -1, "extended" = 1, "valid" = 1) + var/list/datum/team/brother_team/pre_brother_teams = list() + var/const/min_team_size = 2 + +/datum/dynamic_ruleset/minor/traitorbro/execute() + if(candidates.len < min_team_size || candidates.len < required_candidates) + return FALSE + var/datum/team/brother_team/team = new + var/team_size = prob(10) ? min(3, candidates.len) : 2 + for(var/k = 1 to team_size) + var/mob/bro = pick_n_take(candidates) + assigned += bro.mind + team.add_member(bro.mind) + bro.mind.special_role = "brother" + bro.mind.restricted_roles = restricted_roles + team.pick_meeting_area() + team.forge_brother_objectives() + for(var/datum/mind/M in team.members) + M.add_antag_datum(/datum/antagonist/brother, team) + team.update_name() + mode.brother_teams += team + +////////////////////////////////////////////// +// // +// CHANGELINGS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/minor/changeling + name = "Changelings" + config_tag = "changeling" + antag_flag = ROLE_CHANGELING + antag_datum = /datum/antagonist/changeling + restricted_roles = list("AI", "Cyborg") + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + required_candidates = 1 + weight = 3 + cost = 15 + scaling_cost = 15 + requirements = list(101,101,101,101,101,101,101,101,101,101) + property_weights = list("trust" = -2, "valid" = 2) + high_population_requirement = 10 + antag_cap = list(1,1,1,1,1,2,2,2,2,3) + var/team_mode_probability = 30 + +/datum/dynamic_ruleset/minor/changeling/execute() + var/mob/M = pick_n_take(candidates) + assigned += M.mind + M.mind.restricted_roles = restricted_roles + M.mind.special_role = ROLE_CHANGELING + var/datum/antagonist/changeling/new_antag = new antag_datum() + M.mind.add_antag_datum(new_antag) + return TRUE + +////////////////////////////////////////////// +// // +// ELDRITCH CULT // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/minor/heretics + name = "Heretic" + antag_flag = "heretic" + antag_datum = /datum/antagonist/heretic + protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain") + restricted_roles = list("AI", "Cyborg") + required_candidates = 1 + weight = 3 + cost = 25 + scaling_cost = 15 + requirements = list(60,60,60,55,50,50,50,50,50,50) + property_weights = list("story_potential" = 1, "trust" = -1, "chaos" = 2, "extended" = -1, "valid" = 2) + antag_cap = list(1,1,1,1,2,2,2,2,3,3) + high_population_requirement = 50 + + +/datum/dynamic_ruleset/minor/heretics/pre_execute() + var/mob/picked_candidate = pick_n_take(candidates) + assigned += picked_candidate.mind + picked_candidate.mind.restricted_roles = restricted_roles + picked_candidate.mind.special_role = ROLE_HERETIC + var/datum/antagonist/heretic/new_antag = new antag_datum() + picked_candidate.mind.add_antag_datum(new_antag) + return TRUE + +////////////////////////////////////////////// +// // +// DEVIL // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/minor/devil + name = "Devil" + config_tag = "devil" + antag_flag = ROLE_DEVIL + antag_datum = /datum/antagonist/devil + restricted_roles = list("Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") + required_candidates = 1 + weight = 3 + cost = 0 + requirements = list(101,101,101,101,101,101,101,101,101,101) + high_population_requirement = 101 + antag_cap = list(1,1,1,2,2,2,3,3,3,4) + property_weights = list("extended" = 1) + +/datum/dynamic_ruleset/minor/devil/pre_execute() + var/mob/devil = pick_n_take(candidates) + assigned += devil.mind + devil.mind.special_role = ROLE_DEVIL + devil.mind.restricted_roles = restricted_roles + + log_game("[key_name(devil)] has been selected as a devil") + add_devil(devil, ascendable = TRUE) + add_devil_objectives(devil.mind,2) + return TRUE + +/datum/dynamic_ruleset/minor/devil/proc/add_devil_objectives(datum/mind/devil_mind, quantity) + var/list/validtypes = list(/datum/objective/devil/soulquantity, /datum/objective/devil/soulquality, /datum/objective/devil/sintouch, /datum/objective/devil/buy_target) + var/datum/antagonist/devil/D = devil_mind.has_antag_datum(/datum/antagonist/devil) + for(var/i = 1 to quantity) + var/type = pick(validtypes) + var/datum/objective/devil/objective = new type(null) + objective.owner = devil_mind + D.objectives += objective + if(!istype(objective, /datum/objective/devil/buy_target)) + validtypes -= type + else + objective.find_target() + +////////////////////////////////////////////// +// // +// BLOODSUCKERS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/minor/bloodsucker + name = "Bloodsuckers" + config_tag = "bloodsucker" + antag_flag = ROLE_BLOODSUCKER + antag_datum = ANTAG_DATUM_BLOODSUCKER + minimum_required_age = 0 + protected_roles = list("Chaplain", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + restricted_roles = list("Cyborg", "AI") + required_candidates = 1 + weight = 2 + cost = 15 + scaling_cost = 10 + property_weights = list("story_potential" = 1, "extended" = 1, "trust" = -2, "valid" = 1) + requirements = list(70,65,60,55,50,50,50,50,50,50) + high_population_requirement = 50 + +/datum/dynamic_ruleset/minor/bloodsucker/execute() + var/mob/M = pick_n_take(candidates) + assigned += M.mind + M.mind.special_role = ROLE_BLOODSUCKER + M.mind.restricted_roles = restricted_roles + mode.check_start_sunlight() + if(mode.make_bloodsucker(M.mind)) + mode.bloodsuckers += M.mind + return TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index db4ec99558..c5e0857461 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -15,6 +15,7 @@ protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster", "Cyborg") restricted_roles = list("Cyborg", "AI") required_candidates = 1 + flags = TRAITOR_RULESET | MINOR_RULESET | ALWAYS_MAX_WEIGHT_RULESET weight = 5 cost = 10 // Avoid raising traitor threat above 10, as it is the default low cost ruleset. scaling_cost = 10 @@ -22,7 +23,6 @@ high_population_requirement = 40 antag_cap = list(1,1,1,1,2,2,2,2,3,3) property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1, "valid" = 1) - always_max_weight = TRUE var/autotraitor_cooldown = 450 // 15 minutes (ticks once per 2 sec) /datum/dynamic_ruleset/roundstart/traitor/pre_execute() @@ -57,6 +57,7 @@ restricted_roles = list("AI", "Cyborg") protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") required_candidates = 2 + flags = MINOR_RULESET weight = 4 cost = 10 requirements = list(101,101,101,101,101,101,101,101,101,101) @@ -106,6 +107,7 @@ restricted_roles = list("AI", "Cyborg") protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") required_candidates = 1 + flags = MINOR_RULESET weight = 3 cost = 15 scaling_cost = 15 @@ -156,6 +158,7 @@ protected_roles = list("Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain") restricted_roles = list("AI", "Cyborg") required_candidates = 1 + flags = MINOR_RULESET weight = 3 cost = 25 scaling_cost = 15 @@ -694,6 +697,7 @@ antag_datum = /datum/antagonist/devil restricted_roles = list("Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") required_candidates = 1 + flags = MINOR_RULESET weight = 3 cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) @@ -850,6 +854,7 @@ protected_roles = list("Chaplain", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") restricted_roles = list("Cyborg", "AI") required_candidates = 1 + flags = MINOR_RULESET weight = 2 cost = 15 scaling_cost = 10 diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index 04e295356a..d5766b287e 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -32,6 +32,9 @@ Property weights are added to the config weight of the ruleset. They are: "conversion" -- Basically a bool. Conversion antags, well, convert. It's in its own class 'cause people kinda hate conversion. */ +/datum/dynamic_storyteller/proc/minor_start_chance() + return clamp(60 - mode.threat_level,0,100) // by default higher threat = lower chance of minor round + /datum/dynamic_storyteller/proc/start_injection_cooldowns() var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_first_latejoin_delay_max + GLOB.dynamic_first_latejoin_delay_min) mode.latejoin_injection_cooldown = round(clamp(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_first_latejoin_delay_min, GLOB.dynamic_first_latejoin_delay_max)) + world.time @@ -104,8 +107,27 @@ Property weights are added to the config weight of the ruleset. They are: /datum/dynamic_storyteller/proc/roundstart_draft() var/list/drafted_rules = list() + var/minor_round_weight_mult = (100-minor_start_chance()) / 100 for (var/datum/dynamic_ruleset/roundstart/rule in mode.roundstart_rules) if (rule.acceptable(mode.roundstart_pop_ready, mode.threat_level)) // If we got the population and threat required + rule.candidates = mode.candidates.Copy() + rule.trim_candidates() + if (rule.ready() && rule.candidates.len > 0) + var/property_weight = 0 + for(var/property in property_weights) + if(property in rule.property_weights) // just treat it as 0 if it's not in there + property_weight += rule.property_weights[property] * property_weights[property] + var/calced_weight = (rule.get_weight() + property_weight) * rule.weight_mult + if(CHECK_BITFIELD(rule.flags, MINOR_RULESET)) + calced_weight *= minor_round_weight_mult + if(calced_weight > 0) // negatives in the list might cause problems + drafted_rules[rule] = calced_weight + return drafted_rules + +/datum/dynamic_storyteller/proc/minor_rule_draft() + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/minor/rule in mode.minor_rules) + if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level)) rule.candidates = mode.candidates.Copy() rule.trim_candidates() if (rule.ready() && rule.candidates.len > 0) @@ -124,7 +146,7 @@ Property weights are added to the config weight of the ruleset. They are: // if there are antags OR the rule is an antag rule, antag_acceptable will be true. if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level)) // Classic secret : only autotraitor/minor roles - if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET))) continue rule.trim_candidates() if (rule.ready()) @@ -133,7 +155,7 @@ Property weights are added to the config weight of the ruleset. They are: if(property in rule.property_weights) // just treat it as 0 if it's not in there property_weight += rule.property_weights[property] * property_weights[property] var/threat_weight = 1 - if(!(rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET)) // makes the traitor rulesets always possible anyway + if(!(rule.flags & TRAITOR_RULESET)) // makes the traitor rulesets always possible anyway var/cost_difference = rule.cost-(mode.threat_level-mode.threat) /* Basically, the closer the cost is to the current threat-level-away-from-threat, the more likely it is to pick this particular ruleset. @@ -157,7 +179,7 @@ Property weights are added to the config weight of the ruleset. They are: for (var/datum/dynamic_ruleset/latejoin/rule in mode.latejoin_rules) if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level - mode.threat)) // Classic secret : only autotraitor/minor roles - if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET))) continue // No stacking : only one round-ender, unless threat level > stacking_limit. if (mode.threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) @@ -172,7 +194,7 @@ Property weights are added to the config weight of the ruleset. They are: if(property in rule.property_weights) property_weight += rule.property_weights[property] * property_weights[property] var/threat_weight = 1 - if(!(rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET)) + if(!(rule.flags & TRAITOR_RULESET)) var/cost_difference = rule.cost-(mode.threat_level-mode.threat) threat_weight = 1-abs(1-(LOGISTIC_FUNCTION(2,0.05,abs(cost_difference),0))) if(cost_difference > 0) @@ -195,6 +217,9 @@ Property weights are added to the config weight of the ruleset. They are: min_players = 30 var/refund_cooldown = 0 +/datum/dynamic_storyteller/chaotic/minor_start_chance() + return 0 + /datum/dynamic_storyteller/chaotic/do_process() if(refund_cooldown < world.time) mode.create_threat(20) @@ -215,6 +240,9 @@ Property weights are added to the config weight of the ruleset. They are: flags = WAROPS_ALWAYS_ALLOWED | USE_PREV_ROUND_WEIGHTS property_weights = list("valid" = 3, "trust" = 5) +/datum/dynamic_storyteller/chaotic/minor_start_chance() + return 0 + /datum/dynamic_storyteller/team/should_inject_antag(dry_run = FALSE) return (mode.current_players[CURRENT_LIVING_ANTAGS].len ? FALSE : ..()) @@ -228,6 +256,9 @@ Property weights are added to the config weight of the ruleset. They are: flags = WAROPS_ALWAYS_ALLOWED property_weights = list("valid" = 1, "conversion" = 20) +/datum/dynamic_storyteller/chaotic/minor_start_chance() + return 0 + /datum/dynamic_storyteller/random name = "Random" config_tag = "random" @@ -244,6 +275,9 @@ Property weights are added to the config weight of the ruleset. They are: /datum/dynamic_storyteller/random/should_inject_antag() return prob(50) +/datum/dynamic_storyteller/chaotic/minor_start_chance() + return 20 + /datum/dynamic_storyteller/random/roundstart_draft() var/list/drafted_rules = list() for (var/datum/dynamic_ruleset/roundstart/rule in mode.roundstart_rules) @@ -254,12 +288,22 @@ Property weights are added to the config weight of the ruleset. They are: drafted_rules[rule] = 1 return drafted_rules +/datum/dynamic_storyteller/random/minor_rule_draft() + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/minor/rule in mode.minor_rules) + if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level)) + rule.candidates = mode.candidates.Copy() + rule.trim_candidates() + if (rule.ready() && rule.candidates.len > 0) + drafted_rules[rule] = 1 + return drafted_rules + /datum/dynamic_storyteller/random/midround_draft() var/list/drafted_rules = list() for (var/datum/dynamic_ruleset/midround/rule in mode.midround_rules) if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level)) // Classic secret : only autotraitor/minor roles - if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET))) continue rule.trim_candidates() if (rule.ready()) @@ -271,7 +315,7 @@ Property weights are added to the config weight of the ruleset. They are: for (var/datum/dynamic_ruleset/latejoin/rule in mode.latejoin_rules) if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level)) // Classic secret : only autotraitor/minor roles - if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET))) continue // No stacking : only one round-ender, unless threat level > stacking_limit. if (mode.threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) @@ -286,7 +330,7 @@ Property weights are added to the config weight of the ruleset. They are: /datum/dynamic_storyteller/story name = "Story" config_tag = "story" - desc = "Antags with options for loadouts and gimmicks. Traitor, wizard, nukies. Has a buildup-climax-falling action threat curve." + desc = "Antags with options for loadouts and gimmicks. Traitor, wizard, nukies." weight = 2 curve_width = 2 flags = USE_PREV_ROUND_WEIGHTS @@ -308,6 +352,19 @@ Property weights are added to the config weight of the ruleset. They are: flags = USE_PREV_ROUND_WEIGHTS property_weights = list("trust" = -2) +/datum/dynamic_storyteller/intrigue/minor_start_chance() + return 100 - mode.threat_level + +/datum/dynamic_storyteller/grabbag + name = "Grab Bag" + config_tag = "grabbag" + desc = "Crew antags (e.g. traitor, changeling, bloodsucker, heretic) only, all mixed together." + weight = 2 + flags = USE_PREF_WEIGHTS | USE_PREV_ROUND_WEIGHTS + +/datum/dynamic_storyteller/grabbag/minor_start_chance() + return 100 + /datum/dynamic_storyteller/liteextended name = "Calm" config_tag = "calm" @@ -319,6 +376,9 @@ Property weights are added to the config weight of the ruleset. They are: dead_player_weight = 5 property_weights = list("extended" = 2, "chaos" = -1, "valid" = -1, "conversion" = -10) +/datum/dynamic_storyteller/liteextended/minor_start_chance() + return 100 + /datum/dynamic_storyteller/no_antag name = "Extended" config_tag = "semiextended" diff --git a/code/game/gamemodes/gangs/gang.dm b/code/game/gamemodes/gangs/gang.dm index a766dda57c..a4483ca3b8 100644 --- a/code/game/gamemodes/gangs/gang.dm +++ b/code/game/gamemodes/gangs/gang.dm @@ -197,7 +197,7 @@ if(gangtool)//Here is where all of the text occurs when a gang boss first spawns in. var/obj/item/device/gangtool/G = new() - var/where = H.equip_in_one_of_slots(G, slots) + var/where = H.equip_in_one_of_slots(G, slots, critical = TRUE) if (!where) to_chat(H, "Your Syndicate benefactors were unfortunately unable to get you a Gangtool.") else @@ -207,7 +207,7 @@ if(pen) var/obj/item/pen/gang/T = new() - var/where2 = H.equip_in_one_of_slots(T, slots) + var/where2 = H.equip_in_one_of_slots(T, slots, critical = TRUE) if (!where2) to_chat(H, "Your Syndicate benefactors were unfortunately unable to get you a recruitment pen to start.") else @@ -215,7 +215,7 @@ if(spraycan) var/obj/item/toy/crayon/spraycan/gang/SC = new(null,gang) - var/where3 = H.equip_in_one_of_slots(SC, slots) + var/where3 = H.equip_in_one_of_slots(SC, slots, critical = TRUE) if (!where3) to_chat(H, "Your Syndicate benefactors were unfortunately unable to get you a territory spraycan to start.") else @@ -223,7 +223,7 @@ if(hud) var/obj/item/clothing/glasses/hud/security/chameleon/C = new(null,gang) - var/where4 = H.equip_in_one_of_slots(C, slots) + var/where4 = H.equip_in_one_of_slots(C, slots, critical = TRUE) if (!where4) to_chat(H, "Your Syndicate benefactors were unfortunately unable to get you a chameleon security HUD.") else diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index a8ed4611eb..d8617e0b48 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -166,7 +166,7 @@ If not set, defaults to check_completion instead. Set it. It's used by cryo. var/list/slots = list("backpack" = SLOT_IN_BACKPACK) for(var/eq_path in special_equipment) var/obj/O = new eq_path - H.equip_in_one_of_slots(O, slots) + H.equip_in_one_of_slots(O, slots, critical = TRUE) /datum/objective/assassinate name = "assasinate" @@ -1152,7 +1152,7 @@ GLOBAL_LIST_EMPTY(cult_contraband) I.forceMove(get_turf(owner)) if(ishuman(owner)) var/mob/living/carbon/human/H = owner - H.equip_in_one_of_slots(I, list("backpack" = SLOT_IN_BACKPACK)) + H.equip_in_one_of_slots(I, list("backpack" = SLOT_IN_BACKPACK), critical = TRUE) hoarded_item = I diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index da82b0afc7..f46169f72e 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -114,7 +114,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) . = ..() if(.) return - if(!usr.canUseTopic(src, !issilicon(usr))) + if(!usr.canUseTopic(src, !hasSiliconAccessInArea(usr))) return if(stat & BROKEN) visible_message("[src] buzzes.", "You hear a faint buzz.") @@ -147,7 +147,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) . = attack_ai(user) /obj/machinery/announcement_system/attack_ai(mob/user) - if(!user.canUseTopic(src, !issilicon(user))) + if(!user.canUseTopic(src, !hasSiliconAccessInArea(user))) return if(stat & BROKEN) to_chat(user, "[src]'s firmware appears to be malfunctioning!") @@ -167,7 +167,9 @@ GLOBAL_LIST_EMPTY(announcement_systems) act_up() /obj/machinery/announcement_system/emag_act() + . = ..() if(obj_flags & EMAGGED) return obj_flags |= EMAGGED act_up() + return TRUE diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 401d05da12..9b911e9c15 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -21,6 +21,9 @@ return if(R.scrambledcodes) return + if(hasSiliconAccessInArea(user) && !issilicon(user)) + if(!Adjacent(user)) + return return TRUE /obj/machinery/computer/robotics/ui_interact(mob/user, datum/tgui/ui) @@ -40,6 +43,10 @@ else if(IsAdminGhost(user)) data["can_hack"] = TRUE + data["can_convert"] = FALSE + if(isAI(user) && is_servant_of_ratvar(user)) + data["can_convert"] = TRUE + data["cyborgs"] = list() for(var/mob/living/silicon/robot/R in GLOB.silicon_mobs) if(!can_control(user, R)) @@ -54,6 +61,7 @@ module = R.module ? "[R.module.name] Module" : "No Module Detected", synchronization = R.connected_ai, emagged = R.emagged, + servant = is_servant_of_ratvar(R), ref = REF(R) ) data["cyborgs"] += list(cyborg_data) @@ -110,6 +118,13 @@ log_game("[key_name(usr)] emagged [key_name(R)] using robotic console!") message_admins("[ADMIN_LOOKUPFLW(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") R.SetEmagged(TRUE) + if("convert") + if(isAI(usr) && is_servant_of_ratvar(usr)) + var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs + if(istype(R) && !is_servant_of_ratvar(R) && R.connected_ai == usr) + log_game("[key_name(usr)] converted [key_name(R)] using robotic console!") + message_admins("[ADMIN_LOOKUPFLW(usr)] converted cyborg [key_name_admin(R)] using robotic console!") + add_servant_of_ratvar(R) if("killdrone") if(allowed(usr)) var/mob/living/simple_animal/drone/D = locate(params["ref"]) in GLOB.mob_list diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index e721e986d2..0dcb0e7235 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -32,6 +32,8 @@ . = ..() if(in_range(user, src) || isobserver(user)) . += "The status display reads: Radiation pulse accuracy increased by factor [precision_coeff**2].
Radiation pulse damage decreased by factor [damage_coeff**2].
" + if(scan_level >= 3) + . += "Scanner has been upgraded to support autoprocessing." /obj/machinery/dna_scannernew/update_icon_state() //no power or maintenance @@ -94,6 +96,13 @@ ..(user) +// search for ghosts, if the corpse is empty and the scanner is connected to a cloner + var/mob/living/mob_occupant = get_mob_or_brainmob(occupant) + if(istype(mob_occupant)) + if(locate_computer(/obj/machinery/computer/cloning)) + if(!mob_occupant.suiciding && !(HAS_TRAIT(mob_occupant, TRAIT_NOCLONE)) && !mob_occupant.hellbound) + mob_occupant.notify_ghost_cloning("Your corpse has been placed into a cloning scanner. Re-enter your corpse if you want to be cloned!", source = src) + // DNA manipulators cannot operate on severed heads or brains if(iscarbon(occupant)) if(linked_console) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 515a4672a5..9ef34390f6 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1457,6 +1457,16 @@ ui.open() return TRUE +/obj/machinery/door/airlock/ui_status(mob/user) + . = ..() + if (!issilicon(user) && hasSiliconAccessInArea(user)) + . = UI_INTERACTIVE + +/obj/machinery/door/airlock/can_interact(mob/user) + . = ..() + if (!issilicon(user) && hasSiliconAccessInArea(user)) + return TRUE + /obj/machinery/door/airlock/ui_data() var/list/data = list() diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index fe2bdf90b1..8941c540ae 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -508,7 +508,7 @@ /obj/machinery/door/airlock/cult/allowed(mob/living/L) if(!density) return 1 - if(friendly || iscultist(L) || istype(L, /mob/living/simple_animal/shade) || isconstruct(L)) + if(friendly || iscultist(L) || isshade(L) || isconstruct(L)) if(!stealthy) new openingoverlaytype(loc) return 1 diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 04fd5f6af5..a0440001c3 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -28,10 +28,10 @@ if(!do_after(user, 30 SECONDS, TRUE, src)) to_chat(user, "Your fingers slip as you fail to pry the [stored] from the [src], clicking it right back into the slot!") return - if(user.put_in_hands(stored)) - stored.forceMove(user.drop_location()) + user.put_in_hands(stored) + to_chat(user, "You successfully pry the [stored] from the [src]\ + [user.is_holding(stored) ? "" : ", and send its overwhelming weight tumbling onto the ground"]! The tapes on the [src] stop spinning...") stored = null - to_chat(user, "You successfully pry the [stored] from the [src], and send its overwhelming weight tumbling onto the ground! The tapes on the [src] stop spinning...") update_icon() return else @@ -41,7 +41,7 @@ /obj/machinery/blackbox_recorder/attackby(obj/item/I, mob/living/user, params) . = ..() if(istype(I, /obj/item/blackbox)) - if(HAS_TRAIT(I, TRAIT_NODROP) || !user.transferItemToLoc(I, src)) + if(!user.transferItemToLoc(I, src)) to_chat(user, "[I] is stuck to your hand!") return user.visible_message("[user] clicks the [I] into the [src]!", \ diff --git a/code/game/objects/effects/spawners/bundle.dm b/code/game/objects/effects/spawners/bundle.dm index b75df644eb..4304fc3c9c 100644 --- a/code/game/objects/effects/spawners/bundle.dm +++ b/code/game/objects/effects/spawners/bundle.dm @@ -160,13 +160,13 @@ /obj/effect/spawner/bundle/costume/sexyclown name = "sexy clown costume spawner" items = list( - /obj/item/clothing/mask/gas/sexyclown, + /obj/item/clothing/mask/gas/clown_hat/sexy, /obj/item/clothing/under/rank/civilian/clown/sexy) /obj/effect/spawner/bundle/costume/sexymime name = "sexy mime costume spawner" items = list( - /obj/item/clothing/mask/gas/sexymime, + /obj/item/clothing/mask/gas/mime/sexy, /obj/item/clothing/under/rank/civilian/mime/sexy) /obj/effect/spawner/bundle/crate/Initialize(mapload) diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 6564a83729..bacbf3c388 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -464,7 +464,7 @@ /obj/effect/spawner/lootdrop/cigars_cases/no_turf = 2, /obj/effect/spawner/lootdrop/space_cash/no_turf = 5, /obj/item/reagent_containers/food/snacks/grown/cannabis = 5, - /obj/item/storage/box/dice = 5, + /obj/item/storage/dice = 5, /obj/item/toy/cards/deck = 5, /obj/effect/spawner/lootdrop/druggie_pill/no_turf = 5 ) @@ -483,7 +483,7 @@ /obj/effect/spawner/lootdrop/cig_packs/no_turf = 10, /obj/effect/spawner/lootdrop/cigars_cases/no_turf = 5, /obj/item/reagent_containers/food/snacks/grown/cannabis = 5, - /obj/item/storage/box/dice = 5, + /obj/item/storage/dice = 5, /obj/item/toy/cards/deck = 5, /obj/effect/spawner/lootdrop/druggie_pill/no_turf = 5, /obj/item/kitchen/knife = 5, diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index 8fd2ed2377..da5ab1a5a5 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -93,7 +93,7 @@ RSF use_matter(50, user) if(4) to_chat(user, "Dispensing Dice Pack...") - new /obj/item/storage/box/dice(T) + new /obj/item/storage/dice(T) use_matter(200, user) if(5) to_chat(user, "Dispensing Cigarette...") diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 4777796331..ecc8f9187a 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -616,7 +616,7 @@ if(defib.healdisk) H.heal_overall_damage(25, 25) var/list/policies = CONFIG_GET(keyed_list/policyconfig) - var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) + var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) * 10 //the config is in seconds, not deciseconds var/late = timelimit && (tplus > timelimit) var/policy = late? policies[POLICYCONFIG_ON_DEFIB_LATE] : policies[POLICYCONFIG_ON_DEFIB_INTACT] if(policy) diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index 2fe4c67362..bbc493672f 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -1,39 +1,38 @@ -/obj/item/storage/box/dice +/*****************************Dice Bags********************************/ + +/obj/item/storage/dice name = "bag of dice" desc = "Contains all the luck you'll ever need." icon = 'icons/obj/dice.dmi' icon_state = "dicebag" + w_class = WEIGHT_CLASS_SMALL + var/list/special_die = list( + /obj/item/dice/d1, + /obj/item/dice/d2, + /obj/item/dice/fudge, + /obj/item/dice/d6/space, + /obj/item/dice/d00, + /obj/item/dice/eightbd20, + /obj/item/dice/fourdd6, + /obj/item/dice/d100 + ) -/obj/item/storage/box/dice/Initialize() - . = ..() - var/special_die = pick("1","2","fudge","space","00","8bd20","4dd6","100") - if(special_die == "1") - new /obj/item/dice/d1(src) - if(special_die == "2") - new /obj/item/dice/d2(src) +/obj/item/storage/dice/PopulateContents() new /obj/item/dice/d4(src) new /obj/item/dice/d6(src) - if(special_die == "fudge") - new /obj/item/dice/fudge(src) - if(special_die == "space") - new /obj/item/dice/d6/space(src) new /obj/item/dice/d8(src) new /obj/item/dice/d10(src) - if(special_die == "00") - new /obj/item/dice/d00(src) new /obj/item/dice/d12(src) new /obj/item/dice/d20(src) - if(special_die == "8bd20") - new /obj/item/dice/eightbd20(src) - if(special_die == "4dd6") - new /obj/item/dice/fourdd6(src) - if(special_die == "100") - new /obj/item/dice/d100(src) + var/picked = pick(special_die) + new picked(src) -/obj/item/storage/box/dice/suicide_act(mob/user) +/obj/item/storage/dice/suicide_act(mob/user) user.visible_message("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!") return (OXYLOSS) +/*****************************Dice********************************/ + /obj/item/dice //depreciated d6, use /obj/item/dice/d6 if you actually want a d6 name = "die" desc = "A die with six sides. Basic and serviceable." diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index 8054d8c6a4..35a68cecc6 100644 --- a/code/game/objects/items/gift.dm +++ b/code/game/objects/items/gift.dm @@ -8,6 +8,14 @@ * Gifts */ +/var/static/blacklisted_items = typecacheof(list( + /obj/effect, + /obj/belly, + /obj/mafia_game_board, + /obj/docking_port, + /obj/shapeshift_holder, + /obj/screen)) + GLOBAL_LIST_EMPTY(possible_gifts) /obj/item/a_gift @@ -95,7 +103,7 @@ GLOBAL_LIST_EMPTY(possible_gifts) var/list/gift_types_list = subtypesof(/obj/item) for(var/V in gift_types_list) var/obj/item/I = V - if((!initial(I.icon_state)) || (!initial(I.item_state)) || (initial(I.item_flags) & ABSTRACT)) + if((!initial(I.icon_state)) || (!initial(I.item_state)) || (initial(I.item_flags) & ABSTRACT) || (is_type_in_typecache(I, blacklisted_items))) gift_types_list -= V GLOB.possible_gifts = gift_types_list var/gift_type = pick(GLOB.possible_gifts) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 58146be20f..a15e1368d8 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -492,7 +492,7 @@ var/possessed = FALSE /obj/item/nullrod/scythe/talking/process() - for(var/mob/living/simple_animal/shade/S in contents) + for(var/mob/living/simple_animal/hostile/construct/shade/S in contents) if(S.mind) return else @@ -516,7 +516,7 @@ if(LAZYLEN(candidates)) var/mob/C = pick(candidates) - var/mob/living/simple_animal/shade/S = new(src) + var/mob/living/simple_animal/hostile/construct/shade/S = new(src) S.real_name = name S.name = name S.ckey = C.ckey @@ -537,7 +537,7 @@ possessed = FALSE /obj/item/nullrod/scythe/talking/Destroy() - for(var/mob/living/simple_animal/shade/S in contents) + for(var/mob/living/simple_animal/hostile/construct/shade/S in contents) to_chat(S, "You were destroyed!") qdel(S) return ..() diff --git a/code/game/objects/items/implants/implant_hijack.dm b/code/game/objects/items/implants/implant_hijack.dm index 36e58d8887..06d2df9272 100644 --- a/code/game/objects/items/implants/implant_hijack.dm +++ b/code/game/objects/items/implants/implant_hijack.dm @@ -92,10 +92,17 @@ /obj/item/implant/hijack/proc/hijack_remotely(obj/machinery/power/apc/apc) if (apc.hijacker || hijacking) return FALSE //can't remotely hijack an already hijacked APC + + if(apc.being_hijacked) + to_chat(imp_in, "This APC is already being hijacked!") + return FALSE + + apc.being_hijacked = TRUE hijacking = TRUE to_chat(imp_in, "Establishing remote connection with APC.") if (!do_after(imp_in, 4 SECONDS,target=apc)) to_chat(imp_in, "Aborting.") + apc.being_hijacked = FALSE hijacking = FALSE return TRUE if (LAZYLEN(imp_in.siliconaccessareas) >= HIJACK_APC_MAX_AMOUNT) @@ -118,6 +125,7 @@ toggle_eyes() else to_chat(imp_in, "Aborting.") + apc.being_hijacked = FALSE hijacking = FALSE imp_in.light_power = 0 imp_in.light_range = 0 diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index e2e0779b53..f15a4d00e1 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -150,8 +150,8 @@ item_state = "knife" desc = "A military combat utility survival knife." embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) - force = 20 - throwforce = 20 + force = 16 + throwforce = 16 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") bayonet = TRUE diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 244b8c804b..476f35fe4c 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -198,7 +198,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", if(istype(A, /obj/item/cult_bastard)) for(var/obj/item/soulstone/SS in A.contents) SS.usability = TRUE - for(var/mob/living/simple_animal/shade/EX in SS) + for(var/mob/living/simple_animal/hostile/construct/shade/EX in SS) SSticker.mode.remove_cultist(EX.mind, 1, 0) EX.icon_state = "ghost1" EX.name = "Purified [EX.name]" @@ -217,7 +217,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", if(do_after(user, 40, target = SS)) playsound(src,'sound/effects/pray_chaplain.ogg',60,1) SS.usability = TRUE - for(var/mob/living/simple_animal/shade/EX in SS) + for(var/mob/living/simple_animal/hostile/construct/shade/EX in SS) SSticker.mode.remove_cultist(EX.mind, 1, 0) EX.icon_state = "ghost1" EX.name = "Purified [EX.name]" diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index d35dad9f08..8e4fb05d71 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -21,6 +21,9 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) resistance_flags = FIRE_PROOF + var/self_fueling = FALSE //Do we refill ourselves or not + var/nextrefueltick = 0 // How long it takes before we get a new fuel unit + custom_materials = list(/datum/material/iron=70, /datum/material/glass=30) var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) var/status = TRUE //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) @@ -82,12 +85,18 @@ //This is to start fires. process() is only called if the welder is on. open_flame() + //This handles refueling. Its looking at how much fuel the tool has and comparing that to how much it holds + //This then looks if the refuel tick has come based on world time. + //Then looks if we refuel ourselves or not. + + if(get_fuel() < max_fuel && nextrefueltick < world.time && self_fueling) + nextrefueltick = world.time + 10 + reagents.add_reagent(/datum/reagent/fuel, 1) /obj/item/weldingtool/suicide_act(mob/user) user.visible_message("[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) - /obj/item/weldingtool/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver)) flamethrower_screwdriver(I, user) @@ -318,7 +327,6 @@ /obj/item/weldingtool/largetank/flamethrower_screwdriver() return - /obj/item/weldingtool/mini name = "emergency welding tool" desc = "A miniature welder used during emergencies." @@ -331,20 +339,6 @@ /obj/item/weldingtool/mini/flamethrower_screwdriver() return -/obj/item/weldingtool/abductor - name = "alien welding tool" - desc = "An alien welding tool. Whatever fuel it uses, it never runs out." - icon = 'icons/obj/abductor.dmi' - icon_state = "welder" - toolspeed = 0.1 - light_intensity = 0 - change_icons = 0 - -/obj/item/weldingtool/abductor/process() - if(get_fuel() <= max_fuel) - reagents.add_reagent(/datum/reagent/fuel, 1) - ..() - /obj/item/weldingtool/hugetank name = "upgraded industrial welding tool" desc = "An upgraded welder based of the industrial welder." @@ -353,27 +347,6 @@ max_fuel = 80 custom_materials = list(/datum/material/iron=70, /datum/material/glass=120) -/obj/item/weldingtool/experimental - name = "experimental welding tool" - desc = "An experimental welder capable of self-fuel generation and less harmful to the eyes." - icon_state = "exwelder" - item_state = "exwelder" - max_fuel = 40 - custom_materials = list(/datum/material/iron=70, /datum/material/glass=120) - var/last_gen = 0 - change_icons = 0 - can_off_process = 1 - light_intensity = 1 - toolspeed = 0.5 - var/nextrefueltick = 0 - -/obj/item/weldingtool/experimental/brass - name = "brass welding tool" - desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch." - resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "clockwelder" - item_state = "brasswelder" - /obj/item/weldingtool/bronze name = "bronze plated welding tool" desc = "A bronze plated welder." @@ -382,24 +355,46 @@ icon_state = "brasswelder" item_state = "brasswelder" -/obj/item/weldingtool/experimental/process() - ..() - if(get_fuel() < max_fuel && nextrefueltick < world.time) - nextrefueltick = world.time + 10 - reagents.add_reagent(/datum/reagent/fuel, 1) +//Self filling welders below + +/obj/item/weldingtool/experimental + name = "experimental welding tool" + desc = "An experimental welder capable of self-fuel generation and less harmful to the eyes." + icon_state = "exwelder" + item_state = "exwelder" + max_fuel = 40 + custom_materials = list(/datum/material/iron=70, /datum/material/glass=120) + change_icons = 0 + self_fueling = TRUE + can_off_process = 1 + light_intensity = 1 + toolspeed = 0.5 + +/obj/item/weldingtool/experimental/brass + name = "brass welding tool" + desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch." + resistance_flags = FIRE_PROOF | ACID_PROOF + icon_state = "clockwelder" + item_state = "brasswelder" + +/obj/item/weldingtool/abductor + name = "alien welding tool" + desc = "An alien welding tool. Whatever fuel it uses, it never runs out." + icon = 'icons/obj/abductor.dmi' + icon_state = "welder" + self_fueling = TRUE + toolspeed = 0.1 + light_intensity = 0 + change_icons = 0 /obj/item/weldingtool/advanced name = "advanced welding tool" desc = "A modern welding tool combined with an alien welding tool, it never runs out of fuel and works almost as fast." icon = 'icons/obj/advancedtools.dmi' icon_state = "welder" + self_fueling = TRUE toolspeed = 0.2 light_intensity = 0 change_icons = 0 -/obj/item/weldingtool/advanced/process() - if(get_fuel() <= max_fuel) - reagents.add_reagent(/datum/reagent/fuel, 1) - ..() - #undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 6aab698a4a..0679d9ffac 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -33,7 +33,9 @@ H.saved_socks = H.socks // Mutant randomizing, doesn't affect the mob appearance unless it's the specific mutant. - H.dna.features["mcolor"] = random_short_color() + H.dna.features["mcolor"] = sanitize_hexcolor(random_short_color(), 6) + H.dna.features["mcolor2"] = sanitize_hexcolor(random_short_color(), 6) + H.dna.features["mcolor3"] = sanitize_hexcolor(random_short_color(), 6) H.dna.features["tail_lizard"] = pick(GLOB.tails_list_lizard) H.dna.features["snout"] = pick(GLOB.snouts_list) H.dna.features["horns"] = pick(GLOB.horns_list) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 03376df905..ad8dd168eb 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -508,7 +508,7 @@ if("constructwraith") M.change_mob_type( /mob/living/simple_animal/hostile/construct/wraith , null, null, delmob ) if("shade") - M.change_mob_type( /mob/living/simple_animal/shade , null, null, delmob ) + M.change_mob_type( /mob/living/simple_animal/hostile/construct/shade , null, null, delmob ) /////////////////////////////////////new ban stuff diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 05c265bc15..7a227ebc4e 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -684,10 +684,10 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 35, "bio" = 35, "rad" = 35, "fire" = 0, "acid" = 0) - enhancement = 9 // first, do harm. all of it. all of the harm. just fuck em up. - wound_enhancement = 9 - var/fast_enhancement = 9 - var/fast_wound_enhancement = 9 + enhancement = 6 // first, do harm. all of it. all of the harm. just fuck em up. + wound_enhancement = 6 + var/fast_enhancement = 6 + var/fast_wound_enhancement = 6 var/slow_enhancement = 20 var/slow_wound_enhancement = 20 silent = TRUE diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm index 454870d1e1..ebb6ff5b83 100644 --- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm @@ -216,6 +216,14 @@ else if(get_clockwork_power()) to_chat(L, "You feel a slight, static shock.") +/obj/effect/clockwork/sigil/transmission/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/effect/clockwork/sigil/transmission/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + /obj/effect/clockwork/sigil/transmission/process() var/power_drained = 0 var/power_mod = 0.005 diff --git a/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm b/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm index 1d65cf9209..76738ab1de 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm @@ -1,41 +1,57 @@ -//horrifying power drain proc made for clockcult's power drain in lieu of six istypes or six for(x in view) loops -/atom/movable/proc/power_drain(clockcult_user, drain_weapons = FALSE) //This proc as of now is only in use for void volt +/* +horrifying power drain proc made for clockcult's power drain in lieu of six istypes or six for(x in view) loops +args: +clockcult_user: If the user / source has to do with clockcult stuff +drain_weapons: If this drains weaponry, such as batons and guns +recursive: If this recurses through mob / storage contents. ONLY USE THIS IF IT'S NOT CALLED TOO FREQUENTLY, or I'm not liable for any lag / functional issues caused +drain_amount: How much is drained by default; Influenced by a multiplier on most things depending on how much power they usually hold. +*/ +/atom/movable/proc/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) //This proc as of now is only in use for void volt and transmission sigils + if(recursive) + var/succ = 0 + for(var/V in contents) + var/atom/movable/target = V + succ += target.power_drain(clockcult_user, drain_weapons, recursive, drain_amount) + return succ var/obj/item/stock_parts/cell/cell = get_cell() if(cell) - return cell.power_drain(clockcult_user) + return cell.power_drain(clockcult_user, drain_weapons, recursive, drain_amount) return 0 //Returns 0 instead of FALSE to symbolise it returning the power amount in other cases, not TRUE aka 1 -/obj/item/melee/baton/power_drain(clockcult_user, drain_weapons = FALSE) //balance memes +/obj/item/melee/baton/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) //balance memes if(!drain_weapons) return 0 - return ..() + var/obj/item/stock_parts/cell/cell = get_cell() + if(cell) + return cell.power_drain(clockcult_user, drain_weapons, recursive, drain_amount) + return 0 //No need to recurse further in batons -/obj/item/gun/power_drain(clockcult_user, drain_weapons = FALSE) //balance memes +/obj/item/gun/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) //balance memes if(!drain_weapons) return 0 var/obj/item/stock_parts/cell/cell = get_cell() if(!cell) return 0 if(cell.charge) - . = min(cell.charge, MIN_CLOCKCULT_POWER*4) //Done snowflakey because guns have far smaller cells than batons / other equipment + . = min(cell.charge, drain_amount*4) //Done snowflakey because guns have far smaller cells than batons / other equipment, also no need to recurse further in guns cell.use(.) update_icon() -/obj/machinery/power/apc/power_drain(clockcult_user, drain_weapons = FALSE) +/obj/machinery/power/apc/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) if(cell && cell.charge) playsound(src, "sparks", 50, 1) flick("apc-spark", src) - . = min(cell.charge, MIN_CLOCKCULT_POWER*4) - cell.use(.) //Better than a power sink! + . = min(cell.charge, drain_amount*4) + cell.use(min(cell.charge, . * 4)) //Better than a power sink! if(!cell.charge && !shorted) shorted = 1 visible_message("The [name]'s screen blurs with static.") update() update_icon() -/obj/machinery/power/smes/power_drain(clockcult_user, drain_weapons = FALSE) +/obj/machinery/power/smes/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) if(charge) - . = min(charge, MIN_CLOCKCULT_POWER*4) + . = min(charge, drain_amount*4) charge -= . * 50 if(!charge && !panel_open) panel_open = TRUE @@ -44,20 +60,26 @@ visible_message("[src]'s panel flies open with a flurry of sparks!") update_icon() -/obj/item/stock_parts/cell/power_drain(clockcult_user, drain_weapons = FALSE) +/obj/item/stock_parts/cell/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) if(charge) - . = min(charge, MIN_CLOCKCULT_POWER * 4) //Done like this because normal cells are usually quite a bit bigger than the ones used in guns / APCs + . = min(charge, drain_amount * 4) //Done like this because normal cells are usually quite a bit bigger than the ones used in guns / APCs use(min(charge, . * 10)) //Usually cell-powered equipment that is not a gun has at least ten times the capacity of a gun / 5 times the amount of an APC. This adjusts the drain to account for that. update_icon() -/mob/living/silicon/robot/power_drain(clockcult_user, drain_weapons = FALSE) +/mob/living/silicon/robot/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) if((!clockcult_user || !is_servant_of_ratvar(src)) && cell && cell.charge) - . = min(cell.charge, MIN_CLOCKCULT_POWER*4) + . = min(cell.charge, drain_amount*8) //Silicons are very susceptible to Ratvar's might cell.use(.) spark_system.start() -/obj/mecha/power_drain(clockcult_user, drain_weapons = FALSE) - if((!clockcult_user || (occupant && !is_servant_of_ratvar(occupant))) && cell && cell.charge) - . = min(cell.charge, MIN_CLOCKCULT_POWER*4) - cell.use(.) - spark_system.start() +/obj/mecha/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) + if(!clockcult_user || (occupant && !is_servant_of_ratvar(occupant))) + if(recursive) + var/succ = 0 + for(var/atom/movable/target in contents) //Hiding in your mech won't save you. + succ += target.power_drain(clockcult_user, drain_weapons, recursive, drain_amount) + . = succ + else if(cell && cell.charge) + . = min(cell.charge, drain_amount*4) + cell.use(.) + spark_system.start() diff --git a/code/modules/antagonists/clockcult/clock_scripture.dm b/code/modules/antagonists/clockcult/clock_scripture.dm index a85245e9d0..aa0f7f03fa 100644 --- a/code/modules/antagonists/clockcult/clock_scripture.dm +++ b/code/modules/antagonists/clockcult/clock_scripture.dm @@ -167,7 +167,7 @@ Judgement 5 converts set waitfor = FALSE chanting = TRUE for(var/invocation in invocations) - sleep(channel_time / invocations.len) + sleep(channel_time / (invocations.len + 1)) //So it always finishes the invocation if(QDELETED(src) || QDELETED(slab) || !chanting) return if(multiple_invokers_used) diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm index eaec652f68..b559b34d5e 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm @@ -393,45 +393,49 @@ Left-click a target to fire, quickly!" timeout_time = 20 -/datum/clockwork_scripture/channeled/void_volt - descname = "Channeled, Power Drain" +/datum/clockwork_scripture/void_volt + descname = "Pulse, Power Drain" name = "Void Volt" - desc = "A channeled spell that quickly drains any powercells in a radius of eight tiles, but burns the invoker. \ - Can be channeled with more cultists to increase range and split the caused damage evenly over all invokers. \ + desc = "A spell that releases a pulse which drains the power of anything in a radius of eight tiles, but burns the invoker. \ + Can be used with more servants to increase range and split the caused damage evenly among all invokers. \ Also charges clockwork power by a small percentage of the drained power amount, which can help offset this scriptures powercost." - invocations = list("Channel their energy through my body... ", "... so it may fuel Engine!") - chant_invocations = list("Make their lights fall dark!", "They shall be powerless!", "Rob them of their power!") - chant_amount = 20 - chant_interval = 10 //100KW drain per pulse for guns / APCs / 1MW for other cells = 10 chants / 100ds / 10s to drain a charged weapon or a baton with a nonupgraded cell - channel_time = 50 - power_cost = 300 + invocations = list("Take the energy...", "...of their inventions...", "...and grant it to Engine...", "...for they already live in utter darkness!") + channel_time = 130 //You need alot of time, but it pays off. - ten times as powerful as a regular drain (done by transmission sigils) and recurses + affects weapons - incredibly useful if you can pull this off before a big fight. + power_cost = 500 //Relatively medium powercost, but can be offset due to it adding a part of drained power to the power pool. multiple_invokers_used = TRUE multiple_invokers_optional = TRUE - usage_tip = "It may be useful to end channelling early if the burning becomes too much to handle.." + usage_tip = "Be sure to not be injured when using this, or the power channeled through you may overwhelm your body." tier = SCRIPTURE_SCRIPT primary_component = GEIS_CAPACITOR sort_priority = 11 quickbind = TRUE - quickbind_desc = "Quickly drains power in an area around the invoker, causing burns proportional to the amount of energy drained.
Maximum of 20 chants." + quickbind_desc = "Quickly drains power in an area around the invoker, causing burns proportional to the amount of energy drained." -/datum/clockwork_scripture/channeled/void_volt/scripture_effects() +/datum/clockwork_scripture/void_volt/chant() invoker.visible_message("[invoker] glows in a brilliant golden light!") invoker.add_atom_colour("#FFD700", ADMIN_COLOUR_PRIORITY) invoker.light_power = 2 invoker.light_range = 4 invoker.light_color = LIGHT_COLOR_FIRE invoker.update_light() - return ..() + addtimer(CALLBACK(invoker, /mob.proc/stop_void_volt_glow), channel_time) + ..()//Do the timer & Chant +/mob/proc/stop_void_volt_glow() //Needed so the scripture being qdel()d doesn't prevent it. + visible_message("[src] stops glowing...") + remove_atom_colour(ADMIN_COLOUR_PRIORITY) + light_power = 0 + light_range = 0 + update_light() -/datum/clockwork_scripture/channeled/void_volt/chant_effects(chant_number) +/datum/clockwork_scripture/void_volt/scripture_effects() var/power_drained = 0 var/power_mod = 0.005 //Amount of power drained (generally) is multiplied with this, and subsequently dealt in damage to the invoker, then 15 times that is added to the clockwork cult's power reserves. - var/drain_range = 8 + var/drain_range = 12 var/additional_chanters = 0 var/list/chanters = list() chanters += invoker - for(var/mob/living/L in range(1, invoker)) + for(var/mob/living/L in orange(1, invoker)) if(!L.stat && is_servant_of_ratvar(L)) additional_chanters++ chanters += L @@ -440,22 +444,14 @@ var/turf/T = t for(var/M in T) var/atom/movable/A = M - power_drained += A.power_drain(TRUE, TRUE) //Yes, this absolutely does drain weaponry. 10 pulses to drain guns / batons, though of course they can just be recharged. + power_drained += A.power_drain(TRUE, TRUE, TRUE, MIN_CLOCKCULT_POWER * 10) //Yes, this absolutely does drain weaponry, aswell as recurse through objects. No more hiding in lockers / mechs to avoid it. new /obj/effect/temp_visual/ratvar/sigil/transgression(invoker.loc, 1 + (power_drained * power_mod)) var/datum/effect_system/spark_spread/S = new S.set_up(round(1 + (power_drained * power_mod), 1), 0, get_turf(invoker)) S.start() adjust_clockwork_power(power_drained * power_mod * 15) for(var/mob/living/L in chanters) - L.adjustFireLoss(round(clamp(power_drained * power_mod / (1 + additional_chanters), 0, 20), 0.1)) //No you won't just immediately melt if you do this in a very power-rich area + L.adjustFireLoss(round(clamp(power_drained * power_mod / (1 + additional_chanters), 0, 70), 0.1)) //No you won't just immediately melt if you do this in a very power-rich area, but it'll be close. return TRUE - -/datum/clockwork_scripture/channeled/void_volt/chant_end_effects() - invoker.visible_message("[invoker] stops glowing...") - invoker.remove_atom_colour(ADMIN_COLOUR_PRIORITY) - invoker.light_power = 0 - invoker.light_range = 0 - invoker.update_light() - return ..() diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 61f6ec9998..a2ec4a47a4 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -100,7 +100,7 @@ var/T = new item_path(mob) var/item_name = initial(item_path.name) - var/where = mob.equip_in_one_of_slots(T, slots) + var/where = mob.equip_in_one_of_slots(T, slots, critical = TRUE) if(!where) to_chat(mob, "Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).") return 0 @@ -295,6 +295,8 @@ ++cultplayers else ++alive + if(!alive) + return var/ratio = cultplayers/alive if(ratio > CULT_RISEN && !cult_risen) for(var/datum/mind/B in members) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 6cc2fb94b8..276729b359 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -82,7 +82,7 @@ Runes can either be invoked by one's self or with many different cultists. Each fail_invoke() /obj/effect/rune/attack_animal(mob/living/simple_animal/M) - if(istype(M, /mob/living/simple_animal/shade) || istype(M, /mob/living/simple_animal/hostile/construct)) + if(isshade(M) || istype(M, /mob/living/simple_animal/hostile/construct)) if(construct_invoke || !iscultist(M)) //if you're not a cult construct we want the normal fail message attack_hand(M) else @@ -191,7 +191,7 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/convert/do_invoke_glow() return -/obj/effect/rune/convert/invoke(var/list/invokers) +/obj/effect/rune/convert/invoke(list/invokers) if(rune_in_use) return var/list/myriad_targets = list() @@ -203,11 +203,16 @@ structure_check() searches for nearby cultist structures required for the invoca fail_invoke() log_game("Offer rune failed - no eligible targets") return + var/mob/living/L = pick(myriad_targets) + if(HAS_TRAIT(L, TRAIT_SACRIFICED)) + fail_invoke() + log_game("Offer rune failed - target has already been sacrificed") + to_chat(invokers, "[L] has already been sacrificed!") + return rune_in_use = TRUE visible_message("[src] pulses blood red!") var/oldcolor = color color = RUNE_COLOR_DARKRED - var/mob/living/L = pick(myriad_targets) var/is_clock = is_servant_of_ratvar(L) var/mob/living/F = invokers[1] @@ -264,7 +269,7 @@ structure_check() searches for nearby cultist structures required for the invoca H.uncuff() H.stuttering = 0 H.cultslurring = 0 - return 1 + return TRUE /obj/effect/rune/convert/proc/do_sacrifice(mob/living/sacrificial, list/invokers) var/mob/living/first_invoker = invokers[1] @@ -308,12 +313,16 @@ structure_check() searches for nearby cultist structures required for the invoca stone.invisibility = 0 if(sacrificial) + ADD_TRAIT(sacrificial, TRAIT_SACRIFICED, "sacrificed") if(iscyborg(sacrificial)) - playsound(sacrificial, 'sound/magic/disable_tech.ogg', 100, 1) - sacrificial.dust() //To prevent the MMI from remaining - else - playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, 1) - sacrificial.gib() + var/mob/living/silicon/robot/bot = sacrificial + playsound(sacrificial, 'sound/magic/disable_tech.ogg', 100, TRUE) + bot.deconstruct() + + else if(ishuman(sacrificial)) + playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE) + var/mob/living/carbon/human/H = sacrificial + H.spew_organ(2, 6) return TRUE /obj/effect/rune/empower diff --git a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm index 81bc090460..25602c8588 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm @@ -75,7 +75,7 @@ var/T = new item_path(H) var/item_name = initial(item_path.name) - var/where = H.equip_in_one_of_slots(T, slots) + var/where = H.equip_in_one_of_slots(T, slots, critical = TRUE) if(!where) to_chat(H, "Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).") return FALSE diff --git a/code/modules/antagonists/overthrow/overthrow.dm b/code/modules/antagonists/overthrow/overthrow.dm index 0e8c4a35e0..8fa5517b4f 100644 --- a/code/modules/antagonists/overthrow/overthrow.dm +++ b/code/modules/antagonists/overthrow/overthrow.dm @@ -131,14 +131,14 @@ "left pocket" = SLOT_L_STORE, "right pocket" = SLOT_R_STORE ) - var/where = H.equip_in_one_of_slots(O, slots) + var/where = H.equip_in_one_of_slots(O, slots, critical = TRUE) if (!where) to_chat(H, "The Syndicate were unfortunately unable to get you the AI module.") else to_chat(H, "Use the AI board in your [where] to take control of the AI, as requested by the Syndicate.") // Give the implant converter var/obj/item/overthrow_converter/I = new(H) - where = H.equip_in_one_of_slots(I, slots) + where = H.equip_in_one_of_slots(I, slots, critical = TRUE) if (!where) to_chat(H, "The Syndicate were unfortunately unable to get you a converter implant.") else diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index 4f308cc4c0..c23523cc6b 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -251,7 +251,7 @@ "left pocket" = SLOT_L_STORE, "right pocket" = SLOT_R_STORE ) - var/where = H.equip_in_one_of_slots(T, slots) + var/where = H.equip_in_one_of_slots(T, slots, critical = TRUE) if (!where) to_chat(H, "The Syndicate were unfortunately unable to get you a flash.") else diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 0309b7e826..47a9c59274 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -212,7 +212,7 @@ ) var/where = "At your feet" - var/equipped_slot = mob.equip_in_one_of_slots(folder, slots) + var/equipped_slot = mob.equip_in_one_of_slots(folder, slots, critical = TRUE) if (equipped_slot) where = "In your [equipped_slot]" to_chat(mob, "

[where] is a folder containing secret documents that another Syndicate group wants. We have set up a meeting with one of their agents on station to make an exchange. Exercise extreme caution as they cannot be trusted and may be hostile.
") diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index 46961c0caf..abef18ade0 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -36,7 +36,7 @@ /obj/item/soulstone/examine(mob/user) . = ..() - if(usability || iscultist(user, TRUE) || iswizard(user) || isobserver(user)) + if(usability || iscultist(user) || iswizard(user) || isobserver(user)) if (old_shard) . += "A soulstone, used to capture a soul, either from dead humans or from freed shades." else @@ -46,7 +46,7 @@ . += "This shard is spent; it is now just a creepy rock." /obj/item/soulstone/Destroy() //Stops the shade from being qdel'd immediately and their ghost being sent back to the arrival shuttle. - for(var/mob/living/simple_animal/shade/A in src) + for(var/mob/living/simple_animal/hostile/construct/shade/A in src) A.death() return ..() @@ -58,7 +58,7 @@ to_chat(user, "Your body is wracked with debilitating pain!") return if(spent) - to_chat(user, "There is no power left in the shard.") + to_chat(user, "There is no power left in [src].") return if(!ishuman(M))//If target is not a human. return ..() @@ -81,7 +81,7 @@ release_shades(user) /obj/item/soulstone/proc/release_shades(mob/user) - for(var/mob/living/simple_animal/shade/A in src) + for(var/mob/living/simple_animal/hostile/construct/shade/A in src) A.status_flags &= ~GODMODE A.forceMove(get_turf(user)) A.mobility_flags = MOBILITY_FLAGS_DEFAULT @@ -103,12 +103,12 @@ /obj/structure/constructshell/examine(mob/user) . = ..() - if(iscultist(user, TRUE) || iswizard(user) || user.stat == DEAD) - . += "A construct shell, used to house bound souls from a soulstone." - . += "Placing a soulstone with a soul into this shell allows you to produce your choice of the following:" - . += "An Artificer, which can produce more shells and soulstones, as well as fortifications." - . += "A Wraith, which does high damage and can jaunt through walls, though it is quite fragile." - . += "A Juggernaut, which is very hard to kill and can produce temporary walls, but is slow." + if(iscultist(user) || iswizard(user) || user.stat == DEAD) + . += {"A construct shell, used to house bound souls from a soulstone.\n + Placing a soulstone with a soul into this shell allows you to produce your choice of the following:\n + An Artificer, which can produce more shells and soulstones, as well as fortifications.\n + A Wraith, which does high damage and can jaunt through walls, though it is quite fragile.\n + A Juggernaut, which is very hard to kill and can produce temporary walls, but is slow."} /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/soulstone)) @@ -145,14 +145,14 @@ if("VICTIM") var/mob/living/carbon/human/T = target var/datum/antagonist/cult/C = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(C && C.cult_team?.is_sacrifice_target(T.mind)) + if(C?.cult_team.is_sacrifice_target(T.mind)) if(iscultist(user)) to_chat(user, "\"This soul is mine. SACRIFICE THEM!\"") else - to_chat(user, "The soulstone seems to reject this soul.") + to_chat(user, "[src] seems to reject this soul.") return FALSE if(contents.len) - to_chat(user, "Capture failed!: The soulstone is full! Free an existing soul to make room.") + to_chat(user, "Capture failed!: [src] is full! Free an existing soul to make room.") else if((!old_shard && T.stat != CONSCIOUS) || (old_shard && T.stat == DEAD)) if(T.client == null) @@ -167,7 +167,7 @@ to_chat(user, "Capture failed!: Kill or maim the victim first!") if("SHADE") - var/mob/living/simple_animal/shade/T = target + var/mob/living/simple_animal/hostile/construct/shade/T = target if(contents.len) to_chat(user, "Capture failed!: The soulstone is full! Free an existing soul to make room.") else @@ -177,13 +177,13 @@ T.health = T.maxHealth icon_state = "soulstone2" name = "soulstone: Shade of [T.real_name]" - to_chat(T, "Your soul has been captured by the soulstone. Its arcane energies are reknitting your ethereal form.") + to_chat(T, "Your soul has been captured by [src]. Its arcane energies are reknitting your ethereal form.") if(user != T) - to_chat(user, "Capture successful!: [T.real_name]'s soul has been captured and stored within the soulstone.") + to_chat(user, "Capture successful!: [T.real_name]'s soul has been captured and stored within [src].") if("CONSTRUCT") var/obj/structure/constructshell/T = target - var/mob/living/simple_animal/shade/A = locate() in src + var/mob/living/simple_animal/hostile/construct/shade/A = locate() in src if(A) var/construct_class = alert(user, "Please choose which type of construct you wish to create.",,"Juggernaut","Wraith","Artificer") if(!T || !T.loc) @@ -199,8 +199,8 @@ if(iscultist(user) || iswizard(user)) makeNewConstruct(/mob/living/simple_animal/hostile/construct/builder, A, user, 0, T.loc) - else - makeNewConstruct(/mob/living/simple_animal/hostile/construct/builder/noncult, A, user, 0, T.loc) + else + return for(var/datum/mind/B in SSticker.mode.cult) if(B == A.mind) SSticker.mode.cult -= A.mind @@ -208,19 +208,24 @@ qdel(T) qdel(src) else - to_chat(user, "Creation failed!: The soul stone is empty! Go kill someone!") + to_chat(user, "Creation failed!: [src] is empty! Go kill someone!") /proc/makeNewConstruct(mob/living/simple_animal/hostile/construct/ctype, mob/target, mob/stoner = null, cultoverride = 0, loc_override = null) + if(QDELETED(target)) + return var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target))) if(stoner) newstruct.faction |= "[REF(stoner)]" newstruct.master = stoner var/datum/action/innate/seek_master/SM = new() SM.Grant(newstruct) - target.transfer_ckey(newstruct) + newstruct.key = target.key + if(target.type == /mob/living/simple_animal/hostile/construct/shade) //Make sure we remember which body belonged to the shade + var/mob/living/simple_animal/hostile/construct/shade/shade = target + newstruct.original_mind = shade.original_mind var/obj/screen/alert/bloodsense/BS - if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker && SSticker.mode) + if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker?.mode) SSticker.mode.add_cultist(newstruct.mind, 0) if(iscultist(stoner) || cultoverride) to_chat(newstruct, "You are still bound to serve the cult[stoner ? " and [stoner]":""], follow [stoner ? stoner.p_their() : "their"] orders and help [stoner ? stoner.p_them() : "them"] complete [stoner ? stoner.p_their() : "their"] goals at all costs.") @@ -234,19 +239,18 @@ /obj/item/soulstone/proc/init_shade(mob/living/carbon/human/T, mob/user, vic = 0) - new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton + if(HAS_TRAIT_FROM(T, TRAIT_SACRIFICED, "sacrificed")) + if(user) + to_chat(user, "This body has already been harvested!") + return + ADD_TRAIT(T, TRAIT_SACRIFICED, "sacrificed") T.stop_sound_channel(CHANNEL_HEARTBEAT) - T.invisibility = INVISIBILITY_ABSTRACT - T.dust_animation() - QDEL_IN(T, 5) - var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade(src) - S.status_flags |= GODMODE //So they won't die inside the stone somehow - S.mobility_flags = NONE //Can't move out of the soul stone + var/mob/living/simple_animal/hostile/construct/shade/S = new /mob/living/simple_animal/hostile/construct/shade(src) S.name = "Shade of [T.real_name]" S.real_name = "Shade of [T.real_name]" T.transfer_ckey(S) + S.original_mind = T.mind.current S.copy_languages(T, LANGUAGE_MIND)//Copies the old mobs languages into the new mob holder. - S.copy_languages(user, LANGUAGE_MASTER) S.update_atom_languages() grant_all_languages(FALSE, FALSE, TRUE) //Grants omnitongue if(user) @@ -264,7 +268,7 @@ to_chat(user, "Capture successful!: [T.real_name]'s soul has been ripped from [T.p_their()] body and stored within the soul stone.") -/obj/item/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/U) +/obj/item/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/user) var/mob/dead/observer/chosen_ghost for(var/mob/dead/observer/ghost in GLOB.player_list) //We put them back in their body @@ -279,13 +283,12 @@ if(!T) return FALSE if(!chosen_ghost) - to_chat(U, "There were no spirits willing to become a shade.") + to_chat(user, "There were no spirits willing to become a shade.") return FALSE if(contents.len) //If they used the soulstone on someone else in the meantime return FALSE T.ckey = chosen_ghost.ckey for(var/obj/item/W in T) T.dropItemToGround(W) - init_shade(T, U) - qdel(T) + init_shade(T, user) return TRUE diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index a2a55ee6b1..6049ee965e 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -237,12 +237,21 @@ . += "Alt-click to [locked ? "unlock" : "lock"] the interface." /obj/machinery/airalarm/ui_status(mob/user) - if(hasSiliconAccessInArea(user) && aidisabled) - to_chat(user, "AI control has been disabled.") - else if(!shorted) + if(hasSiliconAccessInArea(user)) + if(aidisabled) + to_chat(user, "AI control has been disabled") + return UI_CLOSE + else if(!issilicon(user)) //True sillycones use ..() + return UI_INTERACTIVE + if(!shorted) return ..() return UI_CLOSE +/obj/machinery/airalarm/can_interact(mob/user) + . = ..() + if (!issilicon(user) && hasSiliconAccessInArea(user)) + return TRUE + /obj/machinery/airalarm/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index a07f131d62..9aa3c8c16d 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -196,8 +196,8 @@ icon_state = "inje_map-1" /obj/machinery/atmospherics/components/unary/outlet_injector/layer3 - piping_layer = 2 - icon_state = "inje_map-2" + piping_layer = 3 + icon_state = "inje_map-3" /obj/machinery/atmospherics/components/unary/outlet_injector/on on = TRUE @@ -207,8 +207,8 @@ icon_state = "inje_map-1" /obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3 - piping_layer = 2 - icon_state = "inje_map-2" + piping_layer = 3 + icon_state = "inje_map-3" /obj/machinery/atmospherics/components/unary/outlet_injector/atmos frequency = FREQ_ATMOS_STORAGE diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index 6c732e3ee1..350a08dce6 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -208,7 +208,11 @@ stack_trace("[src]([REF(src)]) has one or more null gas mixtures, which may cause bugs. Null mixtures will not be considered in reconcile_air().") return listclearnulls(.) -/datum/pipeline/proc/reconcile_air() +/datum/pipeline/proc/empty() + for(var/datum/gas_mixture/GM in get_all_connected_airs()) + GM.clear() + +/datum/pipeline/proc/get_all_connected_airs() var/list/datum/gas_mixture/GL = list() var/list/datum/pipeline/PL = list() PL += src @@ -233,6 +237,10 @@ var/obj/machinery/atmospherics/components/unary/portables_connector/C = atmosmch if(C.connected_device) GL += C.portableConnectorReturnAir() + return GL + +/datum/pipeline/proc/reconcile_air() + var/list/datum/gas_mixture/GL = get_all_connected_airs() var/total_thermal_energy = 0 var/total_heat_capacity = 0 diff --git a/code/modules/awaymissions/mission_code/jungleresort.dm b/code/modules/awaymissions/mission_code/jungleresort.dm new file mode 100644 index 0000000000..6f66f1135a --- /dev/null +++ b/code/modules/awaymissions/mission_code/jungleresort.dm @@ -0,0 +1,44 @@ +// welcome to the jungle, we got fun and games + +//areas + +/area/awaymission/jungleresort + name = "Jungle Resort" + icon_state = "awaycontent30" + +//objects + +/obj/item/paper/crumpled/awaymissions/jungleresort/notice + name = "Resort Notice" + info = "Due to unforeseen circumstances and the disappearance of several resort employees and visitors, the resort shall be closed to the public until further notice. - Resort Manager Joe Lawrence" + +/obj/item/melee/chainofcommand/jungle + name = "treasure hunter's whip" + desc = "The tool of a fallen treasure hunter, old and outdated, it still stings like hell to be hit by." + hitsound = 'sound/weapons/whip.ogg' + icon_state = "whip" + +//turfs + +/turf/open/water/jungle + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + +/turf/open/floor/plating/dirt/jungle + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + +/turf/open/floor/plating/dirt/dark/jungle + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + +/turf/closed/mineral/random/labormineral/jungle + baseturfs = /turf/open/floor/plating/asteroid + turf_type = /turf/open/floor/plating/asteroid + +//mobs + +/mob/living/carbon/monkey/punpun/curiousgorge + name = "Curious Gorge" + pet_monkey_names = list("Curious Gorge", "Jungle Gorge", "Jungah Joe", "Mr. Monke") + rare_pet_monkey_names = list("Sun Mukong", "Monkey Kong") + +/mob/living/simple_animal/hostile/jungle/leaper/boss + health = 450 \ No newline at end of file diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 7d33a87111..c581e402a6 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -268,7 +268,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( else prefs = new /datum/preferences(src) GLOB.preferences_datums[ckey] = prefs - + addtimer(CALLBACK(src, .proc/ensure_keys_set), 10) //prevents possible race conditions prefs.last_ip = address //these are gonna be used for banning @@ -561,36 +561,49 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if(!query_client_in_db.Execute()) qdel(query_client_in_db) return - if(!query_client_in_db.NextRow()) - if (CONFIG_GET(flag/panic_bunker) && !holder && !GLOB.deadmins[ckey] && !(ckey in GLOB.bunker_passthrough)) - log_access("Failed Login: [key] - New account attempting to connect during panic bunker") - message_admins("Failed Login: [key] - New account attempting to connect during panic bunker") - to_chat(src, "You must first join the Discord to verify your account before joining this server.
To do so, read the rules and post a request in the #station-access-requests channel under the \"Main server\" category in the Discord server linked here: https://discord.gg/E6SQuhz
If you have already done so, wait a few minutes then try again; sometimes the server needs to fully load before you can join.
") //CIT CHANGE - makes the panic bunker disconnect message point to the discord - var/list/connectiontopic_a = params2list(connectiontopic) - var/list/panic_addr = CONFIG_GET(string/panic_server_address) - if(panic_addr && !connectiontopic_a["redirect"]) - var/panic_name = CONFIG_GET(string/panic_server_name) - to_chat(src, "Sending you to [panic_name ? panic_name : panic_addr].") - winset(src, null, "command=.options") - src << link("[panic_addr]?redirect=1") - qdel(query_client_in_db) - qdel(src) - return + if(!query_client_in_db.NextRow()) //new user detected + if(!holder && !GLOB.deadmins[ckey]) + if(CONFIG_GET(flag/panic_bunker) && !(ckey in GLOB.bunker_passthrough)) + log_access("Failed Login: [key] - New account attempting to connect during panic bunker") + message_admins("Failed Login: [key] - New account attempting to connect during panic bunker") + to_chat(src, "You must first join the Discord to verify your account before joining this server.
To do so, read the rules and post a request in the #station-access-requests channel under the \"Main server\" category in the Discord server linked here: https://discord.gg/E6SQuhz
If you have already done so, wait a few minutes then try again; sometimes the server needs to fully load before you can join.
") //CIT CHANGE - makes the panic bunker disconnect message point to the discord + var/list/connectiontopic_a = params2list(connectiontopic) + var/list/panic_addr = CONFIG_GET(string/panic_server_address) + if(panic_addr && !connectiontopic_a["redirect"]) + var/panic_name = CONFIG_GET(string/panic_server_name) + to_chat(src, "Sending you to [panic_name ? panic_name : panic_addr].") + winset(src, null, "command=.options") + src << link("[panic_addr]?redirect=1") + qdel(query_client_in_db) + qdel(src) + return - new_player = 1 - account_join_date = sanitizeSQL(findJoinDate()) - var/sql_key = sanitizeSQL(key) - var/datum/DBQuery/query_add_player = SSdbcore.NewQuery("INSERT INTO [format_table_name("player")] (`ckey`, `byond_key`, `firstseen`, `firstseen_round_id`, `lastseen`, `lastseen_round_id`, `ip`, `computerid`, `lastadminrank`, `accountjoindate`) VALUES ('[sql_ckey]', '[sql_key]', Now(), '[GLOB.round_id]', Now(), '[GLOB.round_id]', INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]', [account_join_date ? "'[account_join_date]'" : "NULL"])") - if(!query_add_player.Execute()) - qdel(query_client_in_db) + new_player = 1 + account_join_date = sanitizeSQL(findJoinDate()) + var/sql_key = sanitizeSQL(key) + var/datum/DBQuery/query_add_player = SSdbcore.NewQuery("INSERT INTO [format_table_name("player")] (`ckey`, `byond_key`, `firstseen`, `firstseen_round_id`, `lastseen`, `lastseen_round_id`, `ip`, `computerid`, `lastadminrank`, `accountjoindate`) VALUES ('[sql_ckey]', '[sql_key]', Now(), '[GLOB.round_id]', Now(), '[GLOB.round_id]', INET_ATON('[sql_ip]'), '[sql_computerid]', '[sql_admin_rank]', [account_join_date ? "'[account_join_date]'" : "NULL"])") + if(!query_add_player.Execute()) + qdel(query_client_in_db) + qdel(query_add_player) + return qdel(query_add_player) - return - qdel(query_add_player) - if(!account_join_date) - account_join_date = "Error" - account_age = -1 - else if(ckey in GLOB.bunker_passthrough) - GLOB.bunker_passthrough -= ckey + if(!account_join_date) + account_join_date = "Error" + account_age = -1 + else if(ckey in GLOB.bunker_passthrough) + GLOB.bunker_passthrough -= ckey + if(CONFIG_GET(flag/age_verification)) //setup age verification + if(!set_db_player_flags()) + message_admins(usr, "ERROR: Unable to read player flags from database. Please check logs.") + return + else + var/dbflags = prefs.db_flags + if(!(dbflags & DB_FLAG_AGE_CONFIRMATION_COMPLETE)) //they have not completed age verification + if((ckey in GLOB.bunker_passthrough)) //they're verified in the panic bunker though + update_flag_db(DB_FLAG_AGE_CONFIRMATION_COMPLETE, TRUE) + else + update_flag_db(DB_FLAG_AGE_CONFIRMATION_INCOMPLETE, TRUE) + qdel(query_client_in_db) var/datum/DBQuery/query_get_client_age = SSdbcore.NewQuery("SELECT firstseen, DATEDIFF(Now(),firstseen), accountjoindate, DATEDIFF(Now(),accountjoindate) FROM [format_table_name("player")] WHERE ckey = '[sql_ckey]'") if(!query_get_client_age.Execute()) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d817cc3a53..196c1ce0ed 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -482,7 +482,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "    Change
" mutant_colors = TRUE - if (CONFIG_GET(number/body_size_min) != CONFIG_GET(number/body_size_max)) dat += "Sprite Size: [features["body_size"]*100]%
" if(!(NOEYES in pref_species.species_traits)) @@ -2245,21 +2244,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) gender = chosengender if("body_size") - var/min = CONFIG_GET(number/body_size_min) - var/max = CONFIG_GET(number/body_size_max) - var/danger = CONFIG_GET(number/threshold_body_size_slowdown) - var/new_body_size = input(user, "Choose your desired sprite size: ([min*100]%-[max*100]%)\nWarning: This may make your character look distorted[danger > min ? "! Additionally, a proportional movement speed penalty will be applied to characters smaller than [danger*100]%." : "!"]", "Character Preference", features["body_size"]*100) as num|null - if (new_body_size) - new_body_size = clamp(new_body_size * 0.01, min, max) - var/dorfy - if((new_body_size + 0.01) < danger) // Adding 0.01 as a dumb fix to prevent the warning message from appearing when exactly at threshold... Not sure why that happens in the first place. - dorfy = alert(user, "You have chosen a size below the slowdown threshold of [danger*100]%. For balancing purposes, the further you go below this percentage, the slower your character will be. Do you wish to keep this size?", "Speed Penalty Alert", "Yes", "Move it to the threshold", "No") - if(dorfy == "Move it to the threshold") - new_body_size = danger - if(!dorfy) //Aborts if this var is somehow empty - return - if(dorfy != "No") - features["body_size"] = new_body_size + var/new_body_size = input(user, "Choose your desired sprite size: (90-125%)\nWarning: This may make your character look distorted. Additionally, any size under 100% takes a 10% maximum health penalty", "Character Preference", features["body_size"]*100) as num|null + if(new_body_size) + features["body_size"] = clamp(new_body_size * 0.01, CONFIG_GET(number/body_size_min), CONFIG_GET(number/body_size_max)) + if("tongue") var/selected_custom_tongue = input(user, "Choose your desired tongue (none means your species tongue)", "Character Preference") as null|anything in GLOB.roundstart_tongues if(selected_custom_tongue) @@ -2653,6 +2641,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) else if(firstspace == name_length) real_name += "[pick(GLOB.last_names)]" + //reset size if applicable + if(character.dna.features["body_size"]) + var/initial_old_size = character.dna.features["body_size"] + character.dna.features["body_size"] = RESIZE_DEFAULT_SIZE + character.dna.update_body_size(initial_old_size) + character.real_name = nameless ? "[real_name] #[rand(10000, 99999)]" : real_name character.name = character.real_name character.nameless = nameless @@ -2695,8 +2689,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) pref_species = new /datum/species/human save_character() - var/old_size = character.dna.features["body_size"] - character.dna.features = features.Copy() character.set_species(chosen_species, icon_update = FALSE, pref_load = TRUE) character.dna.species.eye_type = eye_type @@ -2706,6 +2698,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.dna.nameless = character.nameless character.dna.custom_species = character.custom_species + var/old_size = RESIZE_DEFAULT_SIZE + if(isdwarf(character)) + character.dna.features["body_size"] = RESIZE_DEFAULT_SIZE + if((parent && parent.can_have_part("meat_type")) || pref_species.mutant_bodyparts["meat_type"]) character.type_of_meat = GLOB.meat_types[features["meat_type"]] diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 3bad31a919..64e49fea8d 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -232,14 +232,15 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car path = "data/player_saves/[ckey[1]]/[ckey]/[filename]" vr_path = "data/player_saves/[ckey[1]]/[ckey]/vore" -/datum/preferences/proc/load_preferences() +/datum/preferences/proc/load_preferences(bypass_cooldown = FALSE) if(!path) return FALSE - if(world.time < loadprefcooldown) - if(istype(parent)) - to_chat(parent, "You're attempting to load your preferences a little too fast. Wait half a second, then try again.") - return FALSE - loadprefcooldown = world.time + PREF_SAVELOAD_COOLDOWN + if(!bypass_cooldown) + if(world.time < loadprefcooldown) + if(istype(parent)) + to_chat(parent, "You're attempting to load your preferences a little too fast. Wait half a second, then try again.") + return FALSE + loadprefcooldown = world.time + PREF_SAVELOAD_COOLDOWN if(!fexists(path)) return FALSE @@ -324,8 +325,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car fcopy(S, bacpath) //byond helpfully lets you use a savefile for the first arg. update_preferences(needs_update, S) //needs_update = savefile_version if we need an update (positive integer) - - //Sanitize ooccolor = sanitize_ooccolor(sanitize_hexcolor(ooccolor, 6, 1, initial(ooccolor))) lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog)) @@ -381,11 +380,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car continue max_save_slots = max(max_save_slots, slotnum) //so we can still update byond member slots after they lose memeber status default_slot = slotnum - if (load_character()) // this updtates char slots - save_character() + if (load_character(null, TRUE)) // this updtates char slots + save_character(TRUE) default_slot = old_default_slot max_save_slots = old_max_save_slots - save_preferences() + save_preferences(TRUE) return TRUE @@ -407,14 +406,15 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(!GLOB.keybindings_by_name[bindname]) modless_key_bindings -= key -/datum/preferences/proc/save_preferences() +/datum/preferences/proc/save_preferences(bypass_cooldown = FALSE) if(!path) return 0 - if(world.time < saveprefcooldown) - if(istype(parent)) - to_chat(parent, "You're attempting to save your preferences a little too fast. Wait half a second, then try again.") - return 0 - saveprefcooldown = world.time + PREF_SAVELOAD_COOLDOWN + if(!bypass_cooldown) + if(world.time < saveprefcooldown) + if(istype(parent)) + to_chat(parent, "You're attempting to save your preferences a little too fast. Wait half a second, then try again.") + return 0 + saveprefcooldown = world.time + PREF_SAVELOAD_COOLDOWN var/savefile/S = new /savefile(path) if(!S) return 0 @@ -475,14 +475,15 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car return 1 -/datum/preferences/proc/load_character(slot) +/datum/preferences/proc/load_character(slot, bypass_cooldown = FALSE) if(!path) return FALSE - if(world.time < loadcharcooldown) //This is before the check to see if the filepath exists to ensure that BYOND can't get hung up on read attempts when the hard drive is a little slow - if(istype(parent)) - to_chat(parent, "You're attempting to load your character a little too fast. Wait half a second, then try again.") - return "SLOW THE FUCK DOWN" //the reason this isn't null is to make sure that people don't have their character slots overridden by random chars if they accidentally double-click a slot - loadcharcooldown = world.time + PREF_SAVELOAD_COOLDOWN + if(!bypass_cooldown) + if(world.time < loadcharcooldown) //This is before the check to see if the filepath exists to ensure that BYOND can't get hung up on read attempts when the hard drive is a little slow + if(istype(parent)) + to_chat(parent, "You're attempting to load your character a little too fast. Wait half a second, then try again.") + return "SLOW THE FUCK DOWN" //the reason this isn't null is to make sure that people don't have their character slots overridden by random chars if they accidentally double-click a slot + loadcharcooldown = world.time + PREF_SAVELOAD_COOLDOWN if(!fexists(path)) return FALSE var/savefile/S = new /savefile(path) @@ -825,14 +826,15 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car return 1 -/datum/preferences/proc/save_character() +/datum/preferences/proc/save_character(bypass_cooldown = FALSE) if(!path) return 0 - if(world.time < savecharcooldown) - if(istype(parent)) - to_chat(parent, "You're attempting to save your character a little too fast. Wait half a second, then try again.") - return 0 - savecharcooldown = world.time + PREF_SAVELOAD_COOLDOWN + if(!bypass_cooldown) + if(world.time < savecharcooldown) + if(istype(parent)) + to_chat(parent, "You're attempting to save your character a little too fast. Wait half a second, then try again.") + return 0 + savecharcooldown = world.time + PREF_SAVELOAD_COOLDOWN var/savefile/S = new /savefile(path) if(!S) return 0 diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index 94f7ee179a..c4063108db 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -44,30 +44,38 @@ var/mob/M = loc M.update_inv_wear_mask() -//Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption -/obj/item/clothing/mask/proc/adjustmask(mob/living/user) +/** + * Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption + * The flavor_details variable is for masks that use this function only to toggle HIDEFACE for identity. + */ +/obj/item/clothing/mask/proc/adjustmask(mob/living/user, just_flavor = FALSE) if(user && user.incapacitated()) - return + return FALSE mask_adjusted = !mask_adjusted if(!mask_adjusted) - src.icon_state = initial(icon_state) - gas_transfer_coefficient = initial(gas_transfer_coefficient) - permeability_coefficient = initial(permeability_coefficient) - clothing_flags |= visor_flags + if(!just_flavor) + src.icon_state = initial(icon_state) + gas_transfer_coefficient = initial(gas_transfer_coefficient) + permeability_coefficient = initial(permeability_coefficient) + slot_flags = initial(slot_flags) + flags_cover |= visor_flags_cover + clothing_flags |= visor_flags flags_inv |= visor_flags_inv - flags_cover |= visor_flags_cover - to_chat(user, "You push \the [src] back into place.") - slot_flags = initial(slot_flags) else - icon_state += "_up" - to_chat(user, "You push \the [src] out of the way.") - gas_transfer_coefficient = null - permeability_coefficient = null - clothing_flags &= ~visor_flags + if(!just_flavor) + icon_state += "_up" + gas_transfer_coefficient = null + permeability_coefficient = null + clothing_flags &= ~visor_flags + flags_cover &= ~visor_flags_cover + if(adjusted_flags) + slot_flags = adjusted_flags flags_inv &= ~visor_flags_inv - flags_cover &= ~visor_flags_cover - if(adjusted_flags) - slot_flags = adjusted_flags if(user) - user.wear_mask_update(src, toggle_off = mask_adjusted) - user.update_action_buttons_icon() //when mask is adjusted out, we update all buttons icon so the user's potential internal tank correctly shows as off. + if(!just_flavor) + to_chat(user, "You push \the [src] [mask_adjusted ? "out of the way" : "back into place"].") + user.wear_mask_update(src, toggle_off = mask_adjusted) + user.update_action_buttons_icon() //when mask is adjusted out, we update all buttons icon so the user's potential internal tank correctly shows as off. + else + to_chat(usr, "You adjust [src], it will now [mask_adjusted ? "not" : ""] obscure your identity while worn.") + return TRUE diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 4c26a0863e..66d4b46c60 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -72,18 +72,29 @@ flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE actions_types = list(/datum/action/item_action/adjust) + visor_flags_inv = HIDEFACE dog_fashion = /datum/dog_fashion/head/clown - var/list/clownmask_designs = list() + var/static/list/clownmask_designs /obj/item/clothing/mask/gas/clown_hat/Initialize(mapload) .=..() - clownmask_designs = list( - "True Form" = image(icon = src.icon, icon_state = "clown"), - "The Feminist" = image(icon = src.icon, icon_state = "sexyclown"), - "The Jester" = image(icon = src.icon, icon_state = "chaos"), - "The Madman" = image(icon = src.icon, icon_state = "joker"), - "The Rainbow Color" = image(icon = src.icon, icon_state = "rainbow") - ) + if(!clownmask_designs) + clownmask_designs = list( + "True Form" = image(icon = src.icon, icon_state = "clown"), + "The Feminist" = image(icon = src.icon, icon_state = "sexyclown"), + "The Jester" = image(icon = src.icon, icon_state = "chaos"), + "The Madman" = image(icon = src.icon, icon_state = "joker"), + "The Rainbow Color" = image(icon = src.icon, icon_state = "rainbow") + ) + +/obj/item/clothing/mask/gas/clown_hat/examine(mob/user) + . = ..() + . += "Alt-click to toggle identity concealment. it's currently [flags_inv & HIDEFACE ? "on" : "off"]." + +/obj/item/clothing/mask/gas/clown_hat/AltClick(mob/user) + . = ..() + if(adjustmask(user, TRUE)) + return TRUE /obj/item/clothing/mask/gas/clown_hat/ui_action_click(mob/user) if(!istype(user) || user.incapacitated()) @@ -103,14 +114,12 @@ to_chat(user, "Your Clown Mask has now morphed into [choice], all praise the Honkmother!") return TRUE -/obj/item/clothing/mask/gas/sexyclown +/obj/item/clothing/mask/gas/clown_hat/sexy name = "sexy-clown wig and mask" desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." - clothing_flags = ALLOWINTERNALS icon_state = "sexyclown" item_state = "sexyclown" - flags_cover = MASKCOVERSEYES - resistance_flags = FLAMMABLE + actions_types = list() /obj/item/clothing/mask/gas/mime name = "mime mask" @@ -121,18 +130,27 @@ flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE actions_types = list(/datum/action/item_action/adjust) - var/list/mimemask_designs = list() + visor_flags_inv = HIDEFACE + var/static/list/mimemask_designs +/obj/item/clothing/mask/gas/mime/examine(mob/user) + . = ..() + . += "Alt-click to toggle identity concealment. it's currently [flags_inv & HIDEFACE ? "on" : "off"]." + +/obj/item/clothing/mask/gas/mime/AltClick(mob/user) + . = ..() + if(adjustmask(user, TRUE)) + return TRUE /obj/item/clothing/mask/gas/mime/Initialize(mapload) .=..() - mimemask_designs = list( - "Blanc" = image(icon = src.icon, icon_state = "mime"), - "Excité" = image(icon = src.icon, icon_state = "sexymime"), - "Triste" = image(icon = src.icon, icon_state = "sadmime"), - "Effrayé" = image(icon = src.icon, icon_state = "scaredmime") - ) - + if(!mimemask_designs) + mimemask_designs = list( + "Blanc" = image(icon = src.icon, icon_state = "mime"), + "Excité" = image(icon = src.icon, icon_state = "sexymime"), + "Triste" = image(icon = src.icon, icon_state = "sadmime"), + "Effrayé" = image(icon = src.icon, icon_state = "scaredmime") + ) /obj/item/clothing/mask/gas/mime/ui_action_click(mob/user) if(!istype(user) || user.incapacitated()) @@ -151,6 +169,13 @@ to_chat(user, "Your Mime Mask has now morphed into [choice]!") return TRUE +/obj/item/clothing/mask/gas/mime/sexy + name = "sexy mime mask" + desc = "A traditional female mime's mask." + icon_state = "sexymime" + item_state = "sexymime" + actions_types = list() + /obj/item/clothing/mask/gas/monkeymask name = "monkey mask" desc = "A mask used when acting as a monkey." @@ -160,15 +185,6 @@ flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE -/obj/item/clothing/mask/gas/sexymime - name = "sexy mime mask" - desc = "A traditional female mime's mask." - clothing_flags = ALLOWINTERNALS - icon_state = "sexymime" - item_state = "sexymime" - flags_cover = MASKCOVERSEYES - resistance_flags = FLAMMABLE - /obj/item/clothing/mask/gas/death_commando name = "Death Commando Mask" icon_state = "death_commando_mask" diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 5128f77433..b50c2b45db 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -40,37 +40,115 @@ icon_state = "plasmaman-helm" item_state = "plasmaman-helm" strip_delay = 80 + flash_protect = 2 + tint = 2 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 100, "acid" = 75, "wound" = 10) resistance_flags = FIRE_PROOF var/brightness_on = 4 //luminosity when the light is on - var/on = FALSE + var/helmet_on = FALSE + var/smile = FALSE + var/smile_color = "#FF0000" var/light_overlay = "envirohelm-light" - actions_types = list(/datum/action/item_action/toggle_helmet_light) + var/visor_icon = "envisor" + var/smile_state = "envirohelm_smile" + actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/toggle_welding_screen/plasmaman) + visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + flags_cover = HEADCOVERSMOUTH|HEADCOVERSEYES + visor_flags_inv = HIDEEYES|HIDEFACE|HIDEFACIALHAIR mutantrace_variation = NONE +/obj/item/clothing/head/helmet/space/plasmaman/Initialize() + . = ..() + visor_toggling() + update_icon() + +/obj/item/clothing/head/helmet/space/plasmaman/ComponentInitialize() + . = ..() + RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, .proc/wipe_that_smile_off_your_face) + AddElement(/datum/element/update_icon_updates_onmob) + +/obj/item/clothing/head/helmet/space/plasmaman/AltClick(mob/user) + . = ..() + if(user.canUseTopic(src, BE_CLOSE)) + toggle_welding_screen(user) + return TRUE + +/obj/item/clothing/head/helmet/space/plasmaman/proc/toggle_welding_screen(mob/living/user) + if(weldingvisortoggle(user)) + if(helmet_on) + to_chat(user, "Your helmet's torch can't pass through your welding visor!") + helmet_on = FALSE + set_light(0) + playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing + update_icon() + +/obj/item/clothing/head/helmet/space/plasmaman/update_overlays() + . = ..() + if(!up) + . += visor_icon + if(helmet_on) + . += light_overlay + if(smile) + var/mutable_appearance/M = mutable_appearance(icon, smile_state) + M.color = smile_color + . += M + +/obj/item/clothing/head/helmet/space/plasmaman/attackby(obj/item/C, mob/living/user) + . = ..() + if(istype(C, /obj/item/toy/crayon)) + if(!smile) + var/obj/item/toy/crayon/CR = C + to_chat(user, "You start drawing a smiley face on the helmet's visor..") + if(do_after(user, 25, target = src)) + smile = TRUE + smile_color = CR.paint_color + to_chat(user, "You draw a smiley on the helmet visor.") + update_icon() + else + to_chat(user, "Seems like someone already drew something on this helmet's visor!") + +///gets called when receiving the CLEAN_ACT signal from something, i.e soap or a shower. exists to remove any smiley faces drawn on the helmet. +/obj/item/clothing/head/helmet/space/plasmaman/proc/wipe_that_smile_off_your_face() + if(smile) + smile = FALSE + update_icon() + /obj/item/clothing/head/helmet/space/plasmaman/attack_self(mob/user) if(!light_overlay) return - on = !on - if(!on) - cut_overlay(light_overlay) - else - add_overlay(light_overlay) - user.update_inv_head() //So the mob overlay updates + if(!up) + to_chat(user, "Your helmet's torch can't pass through your welding visor!") + return + helmet_on = !helmet_on - if(on) + if(helmet_on) set_light(brightness_on, 0.8, "#FFCC66") else set_light(0) - for(var/X in actions) - var/datum/action/A=X - A.UpdateButtonIcon() + update_icon() + +/obj/item/clothing/head/helmet/space/plasmaman/visor_toggling() //handles all the actual toggling of flags + up = !up + clothing_flags ^= visor_flags + flags_inv ^= visor_flags_inv + if(visor_vars_to_toggle & VISOR_FLASHPROTECT) + flash_protect ^= initial(flash_protect) + if(visor_vars_to_toggle & VISOR_TINT) + tint ^= initial(tint) /obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE) . = ..() - if(!isinhands && on) - . += mutable_appearance(icon_file, light_overlay) + if(!isinhands) + if(smile) + var/mutable_appearance/M = mutable_appearance(icon_file, smile_state) + M.color = smile_color + . += M + if(!up) + . += mutable_appearance(icon_file, visor_icon) + if(helmet_on) + . += mutable_appearance(icon_file, light_overlay) /obj/item/clothing/head/helmet/space/plasmaman/security name = "security plasma envirosuit helmet" @@ -170,6 +248,7 @@ desc = "A khaki helmet given to plasmamen miners operating on lavaland." icon_state = "explorer_envirohelm" item_state = "explorer_envirohelm" + visor_icon = "explorer_envisor" /obj/item/clothing/head/helmet/space/plasmaman/chaplain name = "chaplain's plasma envirosuit helmet" @@ -202,7 +281,9 @@ icon_state = "prototype_envirohelm" item_state = "prototype_envirohelm" light_overlay = null - actions_types = list() + actions_types = list(/datum/action/item_action/toggle_welding_screen/plasmaman) + smile_state = "prototype_smile" + visor_icon = "prototype_envisor" /obj/item/clothing/head/helmet/space/plasmaman/botany name = "botany plasma envirosuit helmet" @@ -222,6 +303,7 @@ icon_state = "mime_envirohelm" item_state = "mime_envirohelm" light_overlay = "mime_envirohelm-light" + visor_icon = "mime_envisor" /obj/item/clothing/head/helmet/space/plasmaman/clown name = "clown envirosuit helmet" @@ -229,3 +311,6 @@ icon_state = "clown_envirohelm" item_state = "clown_envirohelm" light_overlay = "clown_envirohelm-light" + item_state = "clown_envirohelm" + visor_icon = "clown_envisor" + smile_state = "clown_smile" diff --git a/code/modules/clothing/under/jobs/civilian/civilian.dm b/code/modules/clothing/under/jobs/civilian/civilian.dm index 9bfac2a81c..505aa91775 100644 --- a/code/modules/clothing/under/jobs/civilian/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian/civilian.dm @@ -199,6 +199,15 @@ can_adjust = FALSE mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON +/obj/item/clothing/under/rank/civilian/janitor/maid/polychromic + icon_state = "polymaid" + item_state = "polymaid" + var/list/poly_colors = list("#FFFFFF", "#000000") + +/obj/item/clothing/under/rank/civilian/janitor/maid/polychromic/ComponentInitialize() + . = ..() + AddElement(/datum/element/polychromic, poly_colors, 2) + /obj/item/clothing/under/rank/civilian/lawyer desc = "Slick threads." name = "Lawyer suit" diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index b88bef1c87..40ce543d31 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -68,8 +68,8 @@ triggering = TRUE if (alert_observers) - message_admins("Random Event triggering in 10 seconds: [name] (CANCEL)") - sleep(100) + message_admins("Random Event triggering in 30 seconds: [name] (CANCEL)") + sleep(300) var/gamemode = SSticker.mode.config_tag var/players_amt = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE) if(!canSpawnEvent(players_amt, gamemode)) diff --git a/code/modules/events/anomaly.dm b/code/modules/events/anomaly.dm index 394294db37..1b0c19274b 100644 --- a/code/modules/events/anomaly.dm +++ b/code/modules/events/anomaly.dm @@ -44,7 +44,13 @@ priority_announce("Localized energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert") /datum/round_event/anomaly/start() - var/turf/T = pick(get_area_turfs(impact_area)) + var/list/turf/valid = list() + for(var/i in get_area_turfs(impact_area)) + var/turf/T = i + if(T.density) + continue + valid += T + var/turf/T = pick(valid) var/newAnomaly if(T) newAnomaly = new anomaly_path(T) diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 3bcec9f471..8bada6da77 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -219,7 +219,7 @@ suit_type = /obj/item/clothing/suit/space helmet_type = /obj/item/clothing/head/helmet/space mask_type = /obj/item/clothing/mask/breath - storage_type = /obj/item/tank/internals/oxygen + storage_type = /obj/item/tank/jetpack/void /obj/machinery/loot_locator @@ -275,6 +275,7 @@ /obj/machinery/computer/piratepad_control name = "cargo hold control terminal" + resistance_flags = INDESTRUCTIBLE ui_x = 600 ui_y = 230 var/status_report = "Ready for delivery." diff --git a/code/modules/events/travelling_trader.dm b/code/modules/events/travelling_trader.dm index c7b982eda8..eeb1acdba5 100644 --- a/code/modules/events/travelling_trader.dm +++ b/code/modules/events/travelling_trader.dm @@ -321,6 +321,7 @@ mob/living/carbon/human/dummy/travelling_trader/animal_hunter/Initialize() var/new_implant = new chosen_implant var/obj/item/autosurgeon/reward = new(get_turf(src)) reward.insert_organ(new_implant) + reward.uses = 1 /datum/outfit/otherworldly_surgeon name = "Otherworldly Surgeon" diff --git a/code/modules/holiday/halloween/halloween.dm b/code/modules/holiday/halloween/halloween.dm index d3b9b92b4f..d44b94aaf3 100644 --- a/code/modules/holiday/halloween/halloween.dm +++ b/code/modules/holiday/halloween/halloween.dm @@ -86,7 +86,7 @@ else if(trapped == HOWLING_GHOST) visible_message("[pick("OooOOooooOOOoOoOOooooOOOOO", "BooOOooOooooOOOO", "BOO!", "WoOOoOoooOooo")]") playsound(loc, 'sound/spookoween/ghosty_wind.ogg', 300, 1) - new /mob/living/simple_animal/shade/howling_ghost(loc) + new /mob/living/simple_animal/hostile/construct/shade/howling_ghost(loc) trapped = 0 else if(trapped == SCARY_BATS) @@ -123,7 +123,7 @@ //Spookoween Ghost// //////////////////// -/mob/living/simple_animal/shade/howling_ghost +/mob/living/simple_animal/hostile/construct/shade/howling_ghost name = "ghost" real_name = "ghost" icon = 'icons/mob/mob.dmi' @@ -137,13 +137,13 @@ layer = 4 var/timer = 0 -/mob/living/simple_animal/shade/howling_ghost/Initialize() +/mob/living/simple_animal/hostile/construct/shade/howling_ghost/Initialize() . = ..() icon_state = pick("ghost","ghostian","ghostian2","ghostking","ghost1","ghost2") icon_living = icon_state timer = rand(1,15) -/mob/living/simple_animal/shade/howling_ghost/Life() +/mob/living/simple_animal/hostile/construct/shade/howling_ghost/Life() ..() timer-- if(prob(20)) @@ -152,16 +152,16 @@ spooky_ghosty() timer = rand(1,15) -/mob/living/simple_animal/shade/howling_ghost/proc/EtherealMove(direction) +/mob/living/simple_animal/hostile/construct/shade/howling_ghost/proc/EtherealMove(direction) forceMove(get_step(src, direction)) setDir(direction) -/mob/living/simple_animal/shade/howling_ghost/proc/roam() +/mob/living/simple_animal/hostile/construct/shade/howling_ghost/proc/roam() if(prob(80)) var/direction = pick(NORTH,SOUTH,EAST,WEST,NORTHEAST,NORTHWEST,SOUTHEAST,SOUTHWEST) EtherealMove(direction) -/mob/living/simple_animal/shade/howling_ghost/proc/spooky_ghosty() +/mob/living/simple_animal/hostile/construct/shade/howling_ghost/proc/spooky_ghosty() if(prob(20)) //haunt playsound(loc, pick('sound/spookoween/ghosty_wind.ogg','sound/spookoween/ghost_whisper.ogg','sound/spookoween/chain_rattling.ogg'), 300, 1) if(prob(10)) //flickers @@ -175,7 +175,7 @@ step(I,direction) return -/mob/living/simple_animal/shade/howling_ghost/CanPass(atom/movable/mover, turf/target) +/mob/living/simple_animal/hostile/construct/shade/howling_ghost/CanPass(atom/movable/mover, turf/target) return 1 /////////////////////////// diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index 16151c4191..90016954fc 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -50,6 +50,13 @@ var/cached_z /// I'm busy, don't move. var/busy = FALSE + var/static/blacklisted_items = typecacheof(list( + /obj/effect, + /obj/belly, + /obj/mafia_game_board, + /obj/docking_port, + /obj/shapeshift_holder, + /obj/screen)) /mob/living/simple_animal/jacq/Initialize() ..() @@ -112,7 +119,7 @@ /mob/living/simple_animal/jacq/proc/jacqrunes(message, mob/living/carbon/C) //Displays speechtext over Jacq for the user only. var/atom/hearer = C - var/list/spans = list("spooky") + var/list/spans = list("spooky") new /datum/chatmessage(message, src, hearer, spans) @@ -228,10 +235,13 @@ return var/new_obj = pick(subtypesof(/obj)) - //for(var/item in blacklist) - // if(new_obj == item) - // panic() + for(var/item in blacklisted_items) + if(is_type_in_typecache(new_obj, blacklisted_items)) + new_obj = /obj/item/reagent_containers/food/snacks/special_candy var/reward = new new_obj(C.loc) + if(new_obj == /obj/item/reagent_containers/food/snacks/special_candy) + new new_obj(C.loc) + new new_obj(C.loc) //Giving them back their candies in case it's something from the blacklist or if the game literally rolled candies. What rotten luck. C.put_in_hands(reward) visible_message("[src] waves her hands, magicking up a [reward] from thin air, \"There ye are [gender], enjoy! \"") jacqrunes("There ye are [gender], enjoy!", C) diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 903ff13fa8..7c9f811c34 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -651,6 +651,11 @@ icon_state = "setup_small_pda" desc = "It's a case, for building small electronics with. This one resembles a PDA." +/obj/item/electronic_assembly/dildo + name = "type-g electronic assembly" + icon_state = "setup_dildo_medium" + desc = "It's a case, for building small electronics with. This one has a phallic design." + /obj/item/electronic_assembly/small name = "electronic device" icon_state = "setup_device" @@ -682,6 +687,11 @@ icon_state = "setup_device_box" desc = "It's a case, for building tiny-sized electronics with. This one has a boxy design." +/obj/item/electronic_assembly/small/dildo + name = "type-f electronic device" + icon_state = "setup_dildo_small" + desc = "It's a case, for building tiny-sized electronics with. This one has a phallic design." + /obj/item/electronic_assembly/medium name = "electronic mechanism" icon_state = "setup_medium" @@ -722,6 +732,12 @@ icon_state = "setup_medium_radio" desc = "It's a case, for building medium-sized electronics with. This one resembles an old radio." +/obj/item/electronic_assembly/medium/dildo + name = "type-g electronic mechanism" + icon_state = "setup_dildo_large" + desc = "It's a case, for building medium-sized electronics with. This one has a phallic design." + + /obj/item/electronic_assembly/large name = "electronic machine" icon_state = "setup_large" diff --git a/code/modules/integrated_electronics/subtypes/atmospherics.dm b/code/modules/integrated_electronics/subtypes/atmospherics.dm index d9a18bc509..26ac3080de 100644 --- a/code/modules/integrated_electronics/subtypes/atmospherics.dm +++ b/code/modules/integrated_electronics/subtypes/atmospherics.dm @@ -115,10 +115,10 @@ source_air = air_contents // Move gas from one place to another - move_gas(source_air, target_air) + move_gas(source_air, target_air, (istype(target, /obj/item/tank) ? target : null)) air_update_turf() -/obj/item/integrated_circuit/atmospherics/pump/proc/move_gas(datum/gas_mixture/source_air, datum/gas_mixture/target_air) +/obj/item/integrated_circuit/atmospherics/pump/proc/move_gas(datum/gas_mixture/source_air, datum/gas_mixture/target_air, obj/item/tank/snowflake) // No moles = nothing to pump if(source_air.total_moles() <= 0 || target_air.return_pressure() >= PUMP_MAX_PRESSURE) @@ -132,7 +132,10 @@ if(pressure_delta > 0.1) var/transfer_moles = (pressure_delta*target_air.return_volume()/(source_air.return_temperature() * R_IDEAL_GAS_EQUATION))*PUMP_EFFICIENCY var/datum/gas_mixture/removed = source_air.remove(transfer_moles) - target_air.merge(removed) + if(istype(snowflake)) //Snowflake check for tanks specifically, because tank ruptures are handled in a very snowflakey way that expects all tank interactions to be handled via the tank's procs + snowflake.assume_air(removed) + else + target_air.merge(removed) // - volume pump - // **Works** @@ -165,7 +168,7 @@ direction = SOURCE_TO_TARGET target_pressure = min(PUMP_MAX_VOLUME,abs(new_amount)) -/obj/item/integrated_circuit/atmospherics/pump/volume/move_gas(datum/gas_mixture/source_air, datum/gas_mixture/target_air) +/obj/item/integrated_circuit/atmospherics/pump/volume/move_gas(datum/gas_mixture/source_air, datum/gas_mixture/target_air, obj/item/tank/snowflake) // No moles = nothing to pump if(source_air.total_moles() <= 0) return @@ -182,7 +185,10 @@ var/datum/gas_mixture/removed = source_air.remove_ratio(transfer_ratio * PUMP_EFFICIENCY) - target_air.merge(removed) + if(istype(snowflake)) + snowflake.assume_air(removed) + else + target_air.merge(removed) // - gas vent - // **works** @@ -379,9 +385,20 @@ obj/item/integrated_circuit/atmospherics/connector/portableConnectorReturnAir() removed.set_moles(filtered_gas, 0) //Check if the pressure is high enough to put stuff in filtered, or else just put it back in the source - var/datum/gas_mixture/target = (filtered_air.return_pressure() < target_pressure ? filtered_air : source_air) - target.merge(filtered_out) - contaminated_air.merge(removed) + if(filtered_air.return_pressure() < target_pressure) + if(istype(filtered, /obj/item/tank)) + filtered.assume_air(filtered_out) + else + filtered_air.merge(filtered_out) + else + if(istype(source, /obj/item/tank)) + source.assume_air(filtered_out) + else + source_air.merge(filtered_out) + if(istype(contaminants, /obj/item/tank)) + contaminants.assume_air(removed) + else + contaminated_air.merge(removed) /obj/item/integrated_circuit/atmospherics/pump/filter/Initialize() @@ -449,10 +466,18 @@ obj/item/integrated_circuit/atmospherics/connector/portableConnectorReturnAir() if(transfer_moles <= 0) return + var/snowflakecheck = istype(gas_output, /obj/item/tank) + var/datum/gas_mixture/mix = source_1_gases.remove(transfer_moles * gas_percentage) - output_gases.merge(mix) + if(snowflakecheck) + gas_output.assume_air(mix) + else + output_gases.merge(mix) mix = source_2_gases.remove(transfer_moles * (1-gas_percentage)) - output_gases.merge(mix) + if(snowflakecheck) + gas_output.assume_air(mix) + else + output_gases.merge(mix) // - integrated tank - // **works** diff --git a/code/modules/keybindings/keybind/human.dm b/code/modules/keybindings/keybind/human.dm index 43f5653472..8ae6ac1e94 100644 --- a/code/modules/keybindings/keybind/human.dm +++ b/code/modules/keybindings/keybind/human.dm @@ -5,17 +5,6 @@ /datum/keybinding/human/can_use(client/user) return ishuman(user.mob) -/datum/keybinding/human/quick_equip - hotkey_keys = list("E") - name = "quick_equip" - full_name = "Quick Equip" - description = "Quickly puts an item in the best slot available" - -/datum/keybinding/human/quick_equip/down(client/user) - var/mob/living/carbon/human/H = user.mob - H.quick_equip() - return TRUE - /datum/keybinding/human/quick_equipbelt hotkey_keys = list("ShiftE") name = "quick_equipbelt" diff --git a/code/modules/keybindings/keybind/living.dm b/code/modules/keybindings/keybind/living.dm index b5921b378a..f76c86691f 100644 --- a/code/modules/keybindings/keybind/living.dm +++ b/code/modules/keybindings/keybind/living.dm @@ -5,6 +5,17 @@ /datum/keybinding/living/can_use(client/user) return isliving(user.mob) +/datum/keybinding/living/quick_equip + hotkey_keys = list("E") + name = "quick_equip" + full_name = "Quick Equip" + description = "Quickly puts an item in the best slot available" + +/datum/keybinding/living/quick_equip/down(client/user) + var/mob/living/carbon/human/H = user.mob + H.quick_equip() + return TRUE + /datum/keybinding/living/resist hotkey_keys = list("B") name = "resist" diff --git a/code/modules/keybindings/keybind/robot.dm b/code/modules/keybindings/keybind/robot.dm index 4f249cf243..b9f6ce83eb 100644 --- a/code/modules/keybindings/keybind/robot.dm +++ b/code/modules/keybindings/keybind/robot.dm @@ -59,17 +59,3 @@ var/mob/living/silicon/robot/R = user.mob R.uneq_active() return TRUE - -/datum/keybinding/robot/drone/can_use(client/user) - return isdrone(user.mob) - -/datum/keybinding/robot/drone/quick_equip_drone // QOL: Drone quickequip - hotkey_keys = list("E") - name = "quick_equip_drone" - full_name = "Quick Equip (Drone)" - description = "Quickly puts an item in the best slot available" - -/datum/keybinding/robot/drone/quick_equip_drone/down(client/user) - var/mob/living/simple_animal/drone/D = user.mob - D.quick_equip() - return TRUE \ No newline at end of file diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 30a933db39..462e283300 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -202,7 +202,7 @@ var/obj/item/reagent_containers/food/snacks/donkpocket/warm/W = new(src) load(W) if(prob(50)) - var/obj/item/storage/box/dice/D = new(src) + var/obj/item/storage/dice/D = new(src) load(D) else var/obj/item/instrument/guitar/G = new(src) diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 429dc98e8a..2ca4d5fd2e 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -109,9 +109,12 @@ GLOBAL_LIST(labor_sheet_values) qdel(src) /obj/machinery/mineral/labor_claim_console/emag_act(mob/user) - if(!(obj_flags & EMAGGED)) - obj_flags |= EMAGGED - to_chat(user, "PZZTTPFFFT") + . = ..() + if((obj_flags & EMAGGED)) + return + obj_flags |= EMAGGED + to_chat(user, "PZZTTPFFFT") + return TRUE /**********************Prisoner Collection Unit**************************/ diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index a967fea75a..0953ea138d 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -760,6 +760,7 @@ /obj/item/melee/transforming/cleaving_saw name = "cleaving saw" desc = "This saw, effective at drawing the blood of beasts, transforms into a long cleaver that makes use of centrifugal force." + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF force = 12 force_on = 20 //force when active throwforce = 20 @@ -1177,6 +1178,7 @@ /obj/item/gun/ballistic/revolver/doublebarrel/super name = "super combat shotgun" desc = "From the belly of the beast - or rather, demon. Twice as lethal as a less-than-super shotgun, but a tad bulkier." + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF icon_state = "heckgun" slot_flags = null mag_type = /obj/item/ammo_box/magazine/internal/shot/dual/heck @@ -1207,6 +1209,7 @@ /obj/item/hierophant_club name = "hierophant club" desc = "The strange technology of this large club allows various nigh-magical feats. It used to beat you, but now you can set the beat." + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF icon_state = "hierophant_club_ready_beacon" item_state = "hierophant_club_ready_beacon" icon = 'icons/obj/lavaland/artefacts.dmi' diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 1fdf3102a9..91123c0c7f 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -78,6 +78,28 @@ popup.set_content(output) popup.open(FALSE) +/mob/dead/new_player/proc/age_verify() + if(CONFIG_GET(flag/age_verification) && !check_rights_for(client, R_ADMIN) && !(client.ckey in GLOB.bunker_passthrough)) //make sure they are verified + if(!client.set_db_player_flags()) + message_admins("Blocked [src] from new player panel because age gate could not access player database flags.") + return FALSE + else + var/dbflags = client.prefs.db_flags + if(dbflags & DB_FLAG_AGE_CONFIRMATION_INCOMPLETE) //they have not completed age gate + var/age_verification = askuser(src, "Are you 18+", "Age Gate", "I am 18+", "I am not 18+", null, TRUE, null) + if(age_verification != 1) + client.add_system_note("Automated-Age-Gate", "Failed automatic age gate process") + qdel(client) //kick the user + return FALSE + else + //they claim to be of age, so allow them to continue and update their flags + client.update_flag_db(DB_FLAG_AGE_CONFIRMATION_COMPLETE, TRUE) + client.update_flag_db(DB_FLAG_AGE_CONFIRMATION_INCOMPLETE, FALSE) + //log this + message_admins("[ckey] has joined through the automated age gate process.") + return TRUE + return TRUE + /mob/dead/new_player/Topic(href, href_list[]) if(src != usr) return 0 @@ -85,6 +107,9 @@ if(!client) return 0 + if(!age_verify()) + return + //Determines Relevent Population Cap var/relevant_cap var/hpc = CONFIG_GET(number/hard_popcap) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm index d9e2de1525..f7b73c3b30 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm @@ -651,11 +651,11 @@ name = "Fennec" icon_state = "fennec" -/datum/sprite_accessory/tails/mam_tails/human/fish +/datum/sprite_accessory/tails/mam_tails/fish name = "Fish" icon_state = "fish" -/datum/sprite_accessory/tails_animated/mam_tails_animated/human/fish +/datum/sprite_accessory/tails_animated/mam_tails_animated/fish name = "Fish" icon_state = "fish" diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 9ac270bf34..9cf3f44cb8 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -100,6 +100,14 @@ return held_items.Find(I) +///Find number of held items, multihand compatible +/mob/proc/get_num_held_items() + . = 0 + for(var/i in 1 to held_items.len) + if(held_items[i]) + .++ + + //Sad that this will cause some overhead, but the alias seems necessary //*I* may be happy with a million and one references to "indexes" but others won't be /mob/proc/is_holding(obj/item/I) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 26486f255a..ebe5372e63 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -611,7 +611,7 @@ update_mobility() UpdateStaminaBuffer() update_health_hud() - + /mob/living/carbon/update_sight() if(!client) return diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index eefd422727..a22f0054e8 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -453,14 +453,14 @@ /mob/living/carbon/getBruteLoss_nonProsthetic() var/amount = 0 for(var/obj/item/bodypart/BP in bodyparts) - if (BP.status < 2) + if (BP.is_organic_limb()) amount += BP.brute_dam return amount /mob/living/carbon/getFireLoss_nonProsthetic() var/amount = 0 for(var/obj/item/bodypart/BP in bodyparts) - if (BP.status < 2) + if (BP.is_organic_limb()) amount += BP.burn_dam return amount diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 710d49c075..3aa26de5cf 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -212,6 +212,7 @@ // called when something steps onto a human // this could be made more general, but for now just handle mulebot /mob/living/carbon/human/Crossed(atom/movable/AM) + SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM) var/mob/living/simple_animal/bot/mulebot/MB = AM if(istype(MB)) MB.RunOver(src) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 76a9c00ed1..10295a7de4 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -1,4 +1,6 @@ /mob/living/carbon/human/getarmor(def_zone, type) + if(HAS_TRAIT(src, TRAIT_ARMOR_BROKEN)) //trait that makes it act as if you have no armor at all, you take natural damage from all sources + return 0 var/armorval = 0 var/organnum = 0 @@ -18,7 +20,6 @@ organnum++ return (armorval/max(organnum, 1)) - /mob/living/carbon/human/proc/checkarmor(obj/item/bodypart/def_zone, d_type) if(!d_type || !def_zone) return 0 diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 126d4401e0..74675a03f0 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -668,7 +668,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) H.remove_overlay(BODY_FRONT_LAYER) H.remove_overlay(HORNS_LAYER) - if(!mutant_bodyparts) + if(!length(mutant_bodyparts)) return var/tauric = mutant_bodyparts["taur"] && H.dna.features["taur"] && H.dna.features["taur"] != "None" @@ -1451,9 +1451,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) target.apply_damage(damage*1.5, attack_type, affecting, armor_block, wound_bonus = punchwoundbonus) target.apply_damage(damage*0.5, STAMINA, affecting, armor_block) log_combat(user, target, "kicked") - else if(HAS_TRAIT(user, TRAIT_MAULER)) // mauler punches deal 1.3x raw damage + 1x stam damage, and have some armor pierce - target.apply_damage(damage*1.3, attack_type, affecting, armor_block, wound_bonus = punchwoundbonus) - target.apply_damage(damage, STAMINA, affecting, armor_block) + else if(HAS_TRAIT(user, TRAIT_MAULER)) // mauler punches deal 1.1x raw damage + 1.3x stam damage, and have some armor pierce + target.apply_damage(damage*1.1, attack_type, affecting, armor_block, wound_bonus = punchwoundbonus) + target.apply_damage(damage*1.3, STAMINA, affecting, armor_block) log_combat(user, target, "punched (mauler)") else //other attacks deal full raw damage + 2x in stamina damage target.apply_damage(damage, attack_type, affecting, armor_block, wound_bonus = punchwoundbonus) diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm index 492f3d58e0..bfa3073f64 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -10,5 +10,5 @@ damage_overlay_type = "synth" mutanttongue = /obj/item/organ/tongue/robot species_language_holder = /datum/language_holder/synthetic - limbs_id = "synth" + limbs_id = SPECIES_SYNTH species_category = SPECIES_CATEGORY_ROBOT diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 9c87f3ad5d..977e8aaab3 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -7,7 +7,7 @@ use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM no_equip = list(SLOT_BACK) blacklisted = 1 - limbs_id = "human" + limbs_id = SPECIES_HUMAN skinned_type = /obj/item/stack/sheet/animalhide/human species_category = SPECIES_CATEGORY_BASIC //they're a kind of human @@ -130,7 +130,7 @@ /datum/species/angel/proc/ToggleFlight(mob/living/carbon/human/H,flight) if(flight && CanFly(H)) stunmod = 2 - speedmod = -0.35 + speedmod = -0.1 H.setMovetype(H.movement_type | FLYING) override_float = TRUE H.pass_flags |= PASSTABLE diff --git a/code/modules/mob/living/carbon/human/species_types/arachnid.dm b/code/modules/mob/living/carbon/human/species_types/arachnid.dm index 2072883c54..4a8c872400 100644 --- a/code/modules/mob/living/carbon/human/species_types/arachnid.dm +++ b/code/modules/mob/living/carbon/human/species_types/arachnid.dm @@ -1,6 +1,6 @@ /datum/species/arachnid name = "Arachnid" - id = "arachnid" + id = SPECIES_ARACHNID override_bp_icon = 'icons/mob/arachnid_parts.dmi' say_mod = "chitters" default_color = "00FF00" @@ -59,10 +59,10 @@ SW?.Remove(H) /datum/action/innate/spin_web - name = "Spin Web" - check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS - icon_icon = 'icons/mob/actions/actions_animal.dmi' - button_icon_state = "lay_web" + name = "Spin Web" + check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS + icon_icon = 'icons/mob/actions/actions_animal.dmi' + button_icon_state = "lay_web" /datum/action/innate/spin_cocoon name = "Spin Cocoon" @@ -152,4 +152,4 @@ else A.forceMove(C) H.visible_message("[H] wraps [A] into a cocoon!") - return \ No newline at end of file + return diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index f756fd8816..7faa08b52c 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -11,7 +11,7 @@ mutanttongue = /obj/item/organ/tongue/dullahan mutantears = /obj/item/organ/ears/dullahan blacklisted = TRUE - limbs_id = "human" + limbs_id = SPECIES_HUMAN skinned_type = /obj/item/stack/sheet/animalhide/human has_field_of_vision = FALSE //Too much of a trouble, their vision is already bound to their severed head. species_category = SPECIES_CATEGORY_UNDEAD diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 011b6b7642..3fcefbe2cc 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -2,7 +2,7 @@ /datum/species/human/felinid name = "Felinid" id = SPECIES_FELINID - limbs_id = "human" + limbs_id = SPECIES_HUMAN mutant_bodyparts = list("mam_tail" = "Cat", "mam_ears" = "Cat", "deco_wings" = "None") diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 58a10fb08e..ecac5fda10 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -468,7 +468,7 @@ /datum/species/jelly/roundstartslime name = "Xenobiological Slime Hybrid" id = SPECIES_SLIME_HYBRID - limbs_id = "slime" + limbs_id = SPECIES_SLIME default_color = "00FFFF" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) inherent_traits = list(TRAIT_TOXINLOVER) @@ -480,7 +480,7 @@ heatmod = 1 burnmod = 1 - allowed_limb_ids = list("slime","stargazer","lum") + allowed_limb_ids = list(SPECIES_SLIME,SPECIES_STARGAZER,SPECIES_SLIME_LUMI) /datum/action/innate/slime_change name = "Alter Form" @@ -714,18 +714,25 @@ return FALSE /datum/action/innate/slime_puddle/Activate() + var/mob/living/carbon/human/H = owner + //if they have anything stuck to their hands, we immediately say 'no' and return + for(var/obj/item/I in H.held_items) + if(HAS_TRAIT(I, TRAIT_NODROP)) + to_chat(owner, "There's something stuck to your hand, stopping you from transforming!") + return if(isjellyperson(owner) && IsAvailable()) transforming = TRUE UpdateButtonIcon() - var/mob/living/carbon/human/H = owner var/mutcolor = "#" + H.dna.features["mcolor"] if(!is_puddle) - if(CHECK_MOBILITY(H, MOBILITY_USE)) - is_puddle = TRUE - owner.cut_overlays() + if(CHECK_MOBILITY(H, MOBILITY_USE)) //if we can use items, we can turn into a puddle + is_puddle = TRUE //so we know which transformation to use when its used + owner.cut_overlays() //we dont show our normal sprite, we show a puddle sprite var/obj/effect/puddle_effect = new puddle_into_effect(get_turf(owner), owner.dir) puddle_effect.color = mutcolor - H.Stun(in_transformation_duration, ignore_canstun = TRUE) + H.Stun(in_transformation_duration, ignore_canstun = TRUE) //cant move while transforming + + //series of traits that make up the puddle behaviour ADD_TRAIT(H, TRAIT_PARALYSIS_L_ARM, SLIMEPUDDLE_TRAIT) ADD_TRAIT(H, TRAIT_PARALYSIS_R_ARM, SLIMEPUDDLE_TRAIT) ADD_TRAIT(H, TRAIT_MOBILITY_NOPICKUP, SLIMEPUDDLE_TRAIT) @@ -733,19 +740,30 @@ ADD_TRAIT(H, TRAIT_SPRINT_LOCKED, SLIMEPUDDLE_TRAIT) ADD_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, SLIMEPUDDLE_TRAIT) ADD_TRAIT(H, TRAIT_MOBILITY_NOREST, SLIMEPUDDLE_TRAIT) + ADD_TRAIT(H, TRAIT_ARMOR_BROKEN, SLIMEPUDDLE_TRAIT) + H.update_disabled_bodyparts(silent = TRUE) //silently update arms to be paralysed + H.add_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) - H.update_disabled_bodyparts(silent = TRUE) + H.layer -= 1 //go one layer down so people go over you - ENABLE_BITFIELD(H.pass_flags, PASSMOB) - squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) - sleep(in_transformation_duration) + ENABLE_BITFIELD(H.pass_flags, PASSMOB) //this actually lets people pass over you + squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) //blorble noise when people step on you + + //if the user is a changeling, retract their sting + H.unset_sting() + + sleep(in_transformation_duration) //wait for animation to end + + //set the puddle overlay up var/mutable_appearance/puddle_overlay = mutable_appearance(icon = puddle_icon, icon_state = puddle_state) puddle_overlay.color = mutcolor tracked_overlay = puddle_overlay owner.add_overlay(puddle_overlay) + transforming = FALSE UpdateButtonIcon() else + //like the above, but reverse everything done! owner.cut_overlay(tracked_overlay) var/obj/effect/puddle_effect = new puddle_from_effect(get_turf(owner), owner.dir) puddle_effect.color = mutcolor @@ -758,6 +776,7 @@ REMOVE_TRAIT(H, TRAIT_SPRINT_LOCKED, SLIMEPUDDLE_TRAIT) REMOVE_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, SLIMEPUDDLE_TRAIT) REMOVE_TRAIT(H, TRAIT_MOBILITY_NOREST, SLIMEPUDDLE_TRAIT) + REMOVE_TRAIT(H, TRAIT_ARMOR_BROKEN, SLIMEPUDDLE_TRAIT) H.update_disabled_bodyparts(silent = TRUE) H.remove_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) H.layer += 1 //go one layer back above! diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index c37a24a93a..e02d15303f 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -28,7 +28,7 @@ tail_type = "tail_lizard" wagging_type = "waggingtail_lizard" - species_category = "lizard" + species_category = SPECIES_CATEGORY_LIZARD /datum/species/lizard/random_name(gender,unique,lastname) if(unique) @@ -47,7 +47,7 @@ /datum/species/lizard/ashwalker name = "Ash Walker" id = SPECIES_ASHWALKER - limbs_id = "lizard" + limbs_id = SPECIES_LIZARD species_traits = list(MUTCOLORS,EYECOLOR,LIPS,DIGITIGRADE) inherent_traits = list(TRAIT_CHUNKYFINGERS) mutantlungs = /obj/item/organ/lungs/ashwalker diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index fae8ebfb0d..3d79e13685 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -69,7 +69,7 @@ id = SPECIES_POD_WEAK species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS) mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs") - limbs_id = "pod" + limbs_id = SPECIES_POD light_nutrition_gain_factor = 3 light_bruteheal = -0.2 light_burnheal = -0.2 diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 7dc8083264..4806813c04 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -33,7 +33,7 @@ /datum/species/shadow/nightmare name = "Nightmare" id = SPECIES_NIGHTMARE - limbs_id = "shadow" + limbs_id = SPECIES_SHADOW burnmod = 1.5 blacklisted = TRUE no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM, SLOT_S_STORE) @@ -141,7 +141,7 @@ playsound(owner,'sound/effects/singlebeat.ogg',40,1) if(respawn_progress >= HEART_RESPAWN_THRESHHOLD) owner.revive(full_heal = TRUE) - if(!(owner.dna.species.id == "shadow" || owner.dna.species.id == "nightmare")) + if(!(owner.dna.species.id == SPECIES_SHADOW || owner.dna.species.id == SPECIES_NIGHTMARE)) var/mob/living/carbon/old_owner = owner Remove(HEART_SPECIAL_SHADOWIFY) old_owner.set_species(/datum/species/shadow) diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index b0673a7df4..8175f505fa 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -32,7 +32,7 @@ /datum/species/skeleton/space name = "Spooky Spacey Skeleton" id = SPECIES_SKELETON_SPACE - limbs_id = "skeleton" + limbs_id = SPECIES_SKELETON blacklisted = 1 inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT, TRAIT_FAKEDEATH, TRAIT_CALCIUM_HEALER) diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 5d2b6f4c77..91711b5c39 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -11,7 +11,7 @@ meat = null gib_types = /obj/effect/gibspawner/robot damage_overlay_type = "synth" - limbs_id = "synth" + limbs_id = SPECIES_SYNTH var/list/initial_species_traits = list(NOTRANSSTING) //for getting these values back for assume_disguise() var/list/initial_inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOLIMBDISABLE,TRAIT_NOHUNGER,TRAIT_NOBREATH) var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off @@ -80,7 +80,7 @@ qdel(fake_species) fake_species = null meat = initial(meat) - limbs_id = "synth" + limbs_id = SPECIES_SYNTH use_skintones = FALSE sexes = 0 fixed_mut_color = "" diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 4125d3beab..558fdc6594 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -11,12 +11,17 @@ mutant_heart = /obj/item/organ/heart/vampire mutanttongue = /obj/item/organ/tongue/vampire blacklisted = TRUE - limbs_id = "human" + limbs_id = SPECIES_HUMAN skinned_type = /obj/item/stack/sheet/animalhide/human var/info_text = "You are a Vampire. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability." species_category = SPECIES_CATEGORY_UNDEAD + var/batform_enabled = TRUE -/datum/species/vampire/check_roundstart_eligible() +/datum/species/vampire/roundstart + id = SPECIES_VAMPIRE_WEAK + batform_enabled = FALSE + +/datum/species/vampire/roundstart/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) return TRUE return FALSE @@ -27,8 +32,9 @@ if(!C.dna.skin_tone_override) C.skin_tone = "albino" C.update_body(0) - var/obj/effect/proc_holder/spell/targeted/shapeshift/bat/B = new - C.AddSpell(B) + if(batform_enabled) + var/obj/effect/proc_holder/spell/targeted/shapeshift/bat/B = new + C.AddSpell(B) /datum/species/vampire/on_species_loss(mob/living/carbon/C) . = ..() @@ -153,16 +159,33 @@ to_chat(caster, "You're already shapeshifted!") return + if(!ishuman(caster)) + to_chat(caster, "You need to be humanoid to be able to do this!") + return + + var/mob/living/carbon/human/human_caster = caster var/mob/living/shape = new shapeshift_type(caster.loc) - H = new(shape,src,caster) + H = new(shape,src,human_caster) if(istype(H, /mob/living/simple_animal)) var/mob/living/simple_animal/SA = H - if((caster.blood_volume >= (BLOOD_VOLUME_BAD*caster.blood_ratio)) || (ventcrawl_nude_only && length(caster.get_equipped_items(include_pockets = TRUE)))) + if((human_caster.blood_volume <= (BLOOD_VOLUME_BAD*human_caster.blood_ratio)) || (ventcrawl_nude_only && length(human_caster.get_equipped_items(include_pockets = TRUE)))) SA.ventcrawler = FALSE if(transfer_name) - H.name = caster.name + H.name = human_caster.name clothes_req = NONE mobs_whitelist = null mobs_blacklist = null + +/obj/effect/proc_holder/spell/targeted/shapeshift/bat/cast(list/targets, mob/user = usr) + if(!(locate(/obj/shapeshift_holder) in targets[1])) + if(!ishuman(user)) + to_chat(user, "You need to be humanoid to be able to do this!") + return + + var/mob/living/carbon/human/human_user = user + if(!(human_user.dna?.species?.id == SPECIES_VAMPIRE)) + to_chat(user, "You don't seem to be able to shapeshift..") + return + return ..() diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index f1c0b8e7c0..385dd94f04 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -3,7 +3,7 @@ /datum/species/zombie // 1spooky name = "High-Functioning Zombie" - id = "zombie" + id = SPECIES_ZOMBIE say_mod = "moans" sexes = 0 blacklisted = 1 @@ -19,7 +19,7 @@ /datum/species/zombie/notspaceproof id = "notspaceproofzombie" - limbs_id = "zombie" + limbs_id = SPECIES_ZOMBIE blacklisted = 0 inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH,TRAIT_NODEATH,TRAIT_FAKEDEATH) @@ -31,7 +31,7 @@ /datum/species/zombie/infectious name = "Infectious Zombie" id = "memezombies" - limbs_id = "zombie" + limbs_id = SPECIES_ZOMBIE inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH,TRAIT_NODEATH,TRAIT_NOSOFTCRIT, TRAIT_FAKEDEATH) mutanthands = /obj/item/zombie_hand armor = 20 // 120 damage to KO a zombie, which kills it @@ -100,7 +100,7 @@ /datum/species/krokodil_addict name = SPECIES_HUMAN id = "goofzombies" - limbs_id = "zombie" //They look like zombies + limbs_id = SPECIES_ZOMBIE //They look like zombies sexes = 0 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie mutanttongue = /obj/item/organ/tongue/zombie diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index 50801e1c0d..96dab9e95d 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -14,10 +14,29 @@ return legcuffed return null -/mob/living/carbon/proc/equip_in_one_of_slots(obj/item/I, list/slots, qdel_on_fail = 1) +/mob/living/carbon/proc/equip_in_one_of_slots(obj/item/I, list/slots, qdel_on_fail = 1, critical = FALSE) for(var/slot in slots) if(equip_to_slot_if_possible(I, slots[slot], qdel_on_fail = 0, disable_warning = TRUE)) return slot + if(critical) //it is CRITICAL they get this item, no matter what + //do they have a backpack? + var/obj/item/backpack = get_item_by_slot(SLOT_BACK) + if(!backpack) + //nothing on their back + backpack = new /obj/item/storage/backpack(get_turf(src)) + if(equip_to_slot(backpack, SLOT_BACK)) //worst-case-scenario, something that shouldnt wear a backpack gets one + I.forceMove(backpack) + return SLOT_BACK + else if(istype(backpack) && SEND_SIGNAL(backpack, COMSIG_CONTAINS_STORAGE)) + //place it in here, regardless of storage capacity + I.forceMove(backpack) + return SLOT_BACK + else + //this should NEVER happen, but if it does, report it with the appropriate information + var/conclusion = qdel_on_fail ? "deleted" : "not moved, staying at current position [I.x], [I.y], [I.z]" + message_admins("User [src] failed to get item of critical importance: [I]. Result: item is [conclusion]") + //it's not dropped at their turf as this is generally un-safe for midround antags and we don't know their status + if(qdel_on_fail) qdel(I) return null diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 4ee52a08a6..ce8bbc5dab 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -443,6 +443,7 @@ key = "me" key_third_person = "custom" message = null + emote_type = EMOTE_BOTH /datum/emote/living/custom/proc/check_invalid(mob/user, input) if(stop_bad_mime.Find(input, 1, 1)) @@ -462,24 +463,12 @@ else if(!params) var/custom_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Custom Emote", null, MAX_MESSAGE_LEN) if(custom_emote && !check_invalid(user, custom_emote)) - var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable") - switch(type) - if("Visible") - emote_type = EMOTE_VISIBLE - if("Hearable") - emote_type = EMOTE_AUDIBLE - else - alert("Unable to use this emote, must be either hearable or visible.") - return message = custom_emote else message = params - if(type_override) - emote_type = type_override message = user.say_emphasis(message) . = ..() message = null - emote_type = EMOTE_VISIBLE /datum/emote/living/custom/replace_pronoun(mob/user, message) return message diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 95bd8d8991..af8382a82b 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -44,6 +44,7 @@ var/can_repair_constructs = FALSE var/can_repair_self = FALSE var/runetype + var/original_mind /mob/living/simple_animal/hostile/construct/Initialize() . = ..() @@ -66,6 +67,11 @@ CR.button.screen_loc = "6:[pos],4:-2" CR.button.moved = "6:[pos],4:-2" +/mob/living/simple_animal/hostile/construct/death() + if(original_mind) + transfer_ckey(original_mind) + ..() + /mob/living/simple_animal/hostile/construct/Login() ..() to_chat(src, playstyle_string) @@ -107,7 +113,7 @@ return /mob/living/simple_animal/hostile/construct/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE) - return 0 + return FALSE /mob/living/simple_animal/hostile/construct/adjustHealth(amount, updating_health = TRUE, forced = FALSE) . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index f0ab3fba4c..477483862b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -87,7 +87,7 @@ Difficulty: Medium return FALSE return ..() -/mob/living/simple_animal/hostile/megafauna/dragon/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, mob/target, target_message) +/mob/living/simple_animal/hostile/megafauna/dragon/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, mob/target, target_message, omni = FALSE) if(swooping & SWOOP_INVULNERABLE) //to suppress attack messages without overriding every single proc that could send a message saying we got hit return return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index 3c6857b54e..174883650d 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -263,6 +263,7 @@ SHITCODE AHEAD. BE ADVISED. Also comment extravaganza /obj/item/staff/storm name = "staff of storms" desc = "An ancient staff retrieved from the remains of Legion. The wind stirs as you move it." + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF icon_state = "staffofstorms" item_state = "staffofstorms" icon = 'icons/obj/guns/magic.dmi' diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index 75182b85e5..b46b56f472 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -1,53 +1,33 @@ -/mob/living/simple_animal/shade +/mob/living/simple_animal/hostile/construct/shade name = "Shade" real_name = "Shade" desc = "A bound spirit." - gender = PLURAL - icon = 'icons/mob/mob.dmi' icon_state = "shade" icon_living = "shade" mob_biotypes = MOB_SPIRIT maxHealth = 40 health = 40 - spacewalk = TRUE - healable = 0 - speak_emote = list("hisses") emote_hear = list("wails.","screeches.") response_help_continuous = "puts their hand through" response_help_simple = "put your hand through" - response_disarm_continuous = "flails at" - response_disarm_simple = "flail at" - response_harm_continuous = "punches" - response_harm_simple = "punch" - speak_chance = 1 melee_damage_lower = 5 melee_damage_upper = 12 attack_verb_continuous = "metaphysically strikes" attack_verb_simple = "metaphysically strike" - minbodytemp = 0 - maxbodytemp = INFINITY - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - stop_automated_movement = 1 - status_flags = 0 - faction = list("cult") - status_flags = CANPUSH - movement_type = FLYING + speed = -1 //they don't have to lug a body made of runed metal around loot = list(/obj/item/ectoplasm) - del_on_death = TRUE - initial_language_holder = /datum/language_holder/construct - blood_volume = 0 - has_field_of_vision = FALSE //we are a spoopy ghost + playstyle_string = "You are a shade! Your job is to survive until you are granted a shell, and help out cultists with casting runes!" -/mob/living/simple_animal/shade/death() +/mob/living/simple_animal/hostile/construct/shade/death() deathmessage = "lets out a contented sigh as [p_their()] form unwinds." ..() -/mob/living/simple_animal/shade/canSuicide() +/mob/living/simple_animal/hostile/construct/shade/canSuicide() if(istype(loc, /obj/item/soulstone)) //do not suicide inside the soulstone - return 0 + return FALSE return ..() -/mob/living/simple_animal/shade/attack_animal(mob/living/simple_animal/M) +/mob/living/simple_animal/hostile/construct/shade/attack_animal(mob/living/simple_animal/M) if(isconstruct(M)) var/mob/living/simple_animal/hostile/construct/C = M if(!C.can_repair_constructs) @@ -62,7 +42,7 @@ else if(src != M) return ..() -/mob/living/simple_animal/shade/attackby(obj/item/O, mob/user, params) //Marker -Agouri +/mob/living/simple_animal/hostile/construct/shade/attackby(obj/item/O, mob/user, params) //Marker -Agouri if(istype(O, /obj/item/soulstone)) var/obj/item/soulstone/SS = O SS.transfer_soul("SHADE", src, user) diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index 6661d0ccea..4c00fd0033 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -59,15 +59,8 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, typecacheof(list( if(!client) return - if(iscarbon(src) && ventcrawler < 2)//It must have atleast been 1 to get this far - var/failed = 0 - var/list/items_list = get_equipped_items(include_pockets = TRUE) - if(items_list.len) - failed = 1 - for(var/obj/item/I in held_items) - failed = 1 - break - if(failed) + if(iscarbon(src) && ventcrawler == VENTCRAWLER_NUDE) + if(length(get_equipped_items(include_pockets = TRUE)) || get_num_held_items()) to_chat(src, "You can't crawl around in the ventilation ducts with items!") return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ab2556abb5..3416a8b337 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -127,8 +127,9 @@ * * ignored_mobs (optional) doesn't show any message to any given mob in the list. * * target (optional) is the other mob involved with the visible message. For example, the attacker in many combat messages. * * target_message (optional) is what the target mob will see e.g. "[src] does something to you!" + * * omni (optional) if TRUE, will show to users no matter what. */ -/atom/proc/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, ignored_mobs, mob/target, target_message) +/atom/proc/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, ignored_mobs, mob/target, target_message, omni = FALSE) var/turf/T = get_turf(src) if(!T) return @@ -139,20 +140,26 @@ if(target_message && target && istype(target) && target.client) hearers -= target - //This entire if/else chain could be in two lines but isn't for readibilties sake. - var/msg = target_message - if(target.see_invisible[user.say_emphasis(message)]
" - if(emote_type == EMOTE_AUDIBLE) - user.audible_message(message=message,hearing_distance=1, ignored_mobs = GLOB.dead_mob_list) - else - user.visible_message(message=message,self_message=message,vision_distance=1, ignored_mobs = GLOB.dead_mob_list) + user.visible_message(message = message, self_message = message, vision_distance = 1, ignored_mobs = GLOB.dead_mob_list, omni = TRUE) ///////////////// VERB CODE /mob/living/verb/subtle() diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 7de30a7095..3a7e270567 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -617,7 +617,7 @@ return 1 if(ispath(MP, /mob/living/simple_animal/hostile/mushroom)) return 1 - if(ispath(MP, /mob/living/simple_animal/shade)) + if(ispath(MP, /mob/living/simple_animal/hostile/construct/shade)) return 1 if(ispath(MP, /mob/living/simple_animal/hostile/killertomato)) return 1 diff --git a/code/modules/movespeed/modifiers/innate.dm b/code/modules/movespeed/modifiers/innate.dm index 946d93e96b..f5a599f940 100644 --- a/code/modules/movespeed/modifiers/innate.dm +++ b/code/modules/movespeed/modifiers/innate.dm @@ -20,5 +20,6 @@ flags = IGNORE_NOSLOW /datum/movespeed_modifier/slime_puddle - multiplicative_slowdown = 2 + multiplicative_slowdown = 4.5 flags = IGNORE_NOSLOW + variable = TRUE diff --git a/code/modules/movespeed/modifiers/items.dm b/code/modules/movespeed/modifiers/items.dm index a8510ecd86..8694bbb69d 100644 --- a/code/modules/movespeed/modifiers/items.dm +++ b/code/modules/movespeed/modifiers/items.dm @@ -1,13 +1,13 @@ /datum/movespeed_modifier/jetpack conflicts_with = MOVE_CONFLICT_JETPACK movetypes = FLOATING - multiplicative_slowdown = -1 + multiplicative_slowdown = -0.2 /datum/movespeed_modifier/jetpack/cybernetic - multiplicative_slowdown = -1.25 + multiplicative_slowdown = -0.27 /datum/movespeed_modifier/jetpack/fullspeed - multiplicative_slowdown = -1.5 + multiplicative_slowdown = -0.27 /datum/movespeed_modifier/die_of_fate multiplicative_slowdown = 1 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 3bfcd0a921..7f7c02f457 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -111,6 +111,7 @@ var/obj/machinery/computer/apc_control/remote_control = null var/mob/living/carbon/hijacker var/hijackerlast = TRUE + var/being_hijacked = FALSE /obj/machinery/power/apc/unlocked locked = FALSE @@ -897,8 +898,12 @@ ui.open() /obj/machinery/power/apc/ui_data(mob/user) + var/obj/item/implant/hijack/H = user.getImplant(/obj/item/implant/hijack) + var/abilitiesavail = FALSE + if(H && !H.stealthmode && H.toggled) + abilitiesavail = TRUE var/list/data = list( - "locked" = locked, + "locked" = locked && !(integration_cog && is_servant_of_ratvar(user)) && !area.hasSiliconAccessInArea(user, PRIVILEDGES_SILICON|PRIVILEDGES_DRONE), "failTime" = failure_timer, "isOperating" = operating, "externalPower" = main_status, @@ -911,7 +916,11 @@ "malfStatus" = get_malf_status(user), "emergencyLights" = !emergency_lights, "nightshiftLights" = nightshift_lights, - + "hijackable" = HAS_TRAIT(user, TRAIT_HIJACKER), + "hijacked" = hijacker && hasSiliconAccessInArea(hijacker), + "hijacker" = hijacker == user ? TRUE : FALSE, + "drainavail" = cell && cell.percent() >= 85 && abilitiesavail, + "lockdownavail" = cell && cell.percent() >= 35 && abilitiesavail, "powerChannels" = list( list( "title" = "Equipment", @@ -1009,7 +1018,12 @@ . = UI_INTERACTIVE /obj/machinery/power/apc/ui_act(action, params) - if(..() || !can_use(usr, 1) || (locked && !area.hasSiliconAccessInArea(usr, PRIVILEDGES_SILICON|PRIVILEDGES_DRONE) && !failure_timer && action != "toggle_nightshift" && (!integration_cog || !(is_servant_of_ratvar(usr))))) + if(..() || !can_use(usr, 1)) + return + if(action == "hijack" && can_use(usr, 1)) //don't need auth for hijack button + hijack(usr) + return + if(locked && !area.hasSiliconAccessInArea(usr, PRIVILEDGES_SILICON|PRIVILEDGES_DRONE) && !failure_timer && action != "toggle_nightshift" && (!integration_cog || !(is_servant_of_ratvar(usr)))) return switch(action) if("lock") @@ -1056,6 +1070,25 @@ if("hack") if(get_malf_status(usr)) malfhack(usr) + if("drain") + cell.use(cell.charge) + hijacker.toggleSiliconAccessArea(area) + hijacker = null + set_hijacked_lighting() + update_icon() + var/obj/item/implant/hijack/H = usr.getImplant(/obj/item/implant/hijack) + H.stealthcooldown = world.time + 2 MINUTES + energy_fail(30 SECONDS * (cell.charge / cell.maxcharge)) + if("lockdown") + var/celluse = rand(20,35) + celluse = celluse /100 + for (var/obj/machinery/door/D in GLOB.airlocks) + if (get_area(D) == area) + INVOKE_ASYNC(D,/obj/machinery/door.proc/hostile_lockdown,usr, FALSE) + addtimer(CALLBACK(D,/obj/machinery/door.proc/disable_lockdown, FALSE), 30 SECONDS) + cell.charge -= cell.maxcharge*celluse + var/obj/item/implant/hijack/H = usr.getImplant(/obj/item/implant/hijack) + H.stealthcooldown = world.time + 3 MINUTES if("occupy") if(get_malf_status(usr)) malfoccupy(usr) @@ -1087,10 +1120,14 @@ /obj/machinery/power/apc/proc/hijack(mob/living/L) if (!istype(L)) return + if(being_hijacked) + to_chat(L, "This APC is already being hijacked!") + return if (hijacker && hijacker != L) var/obj/item/implant/hijack/H = L.getImplant(/obj/item/implant/hijack) to_chat(L, "Someone already has control of this APC. Beginning counter-hijack.") H.hijacking = TRUE + being_hijacked = TRUE if (do_after(L,20 SECONDS,target=src)) hijacker.toggleSiliconAccessArea(area) if (L.toggleSiliconAccessArea(area)) @@ -1098,23 +1135,28 @@ update_icon() set_hijacked_lighting() H.hijacking = FALSE + being_hijacked = FALSE return else to_chat(L, "Aborting.") H.hijacking = FALSE + being_hijacked = FALSE return to_chat(L, "Beginning hijack of APC.") var/obj/item/implant/hijack/H = L.getImplant(/obj/item/implant/hijack) H.hijacking = TRUE + being_hijacked = TRUE if (do_after(L,H.stealthmode ? 12 SECONDS : 5 SECONDS,target=src)) if (L.toggleSiliconAccessArea(area)) hijacker = L update_icon() set_hijacked_lighting() H.hijacking = FALSE + being_hijacked = FALSE else to_chat(L, "Aborting.") H.hijacking = FALSE + being_hijacked = FALSE return /obj/machinery/power/apc/proc/malfhack(mob/living/silicon/ai/malf) diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index e775fdc05a..9ed9630f2f 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -54,11 +54,10 @@ /obj/item/gun/ballistic/automatic/pistol/m1911 name = "\improper M1911" - desc = "A classic .45 handgun with a small magazine capacity." + desc = "A classic .45 handgun with a small magazine capacity. Has a threaded barrel for suppressors." icon_state = "m1911" w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/m45 - can_suppress = FALSE /obj/item/gun/ballistic/automatic/pistol/m1911/no_mag spawnwithmagazine = FALSE @@ -67,6 +66,7 @@ name = "\improper Kitchen Gun (TM)" desc = "Say goodbye to dirt with Kitchen Gun (TM)! Laser sight and night vision accessories sold separately." icon_state = "kitchengun" + can_suppress = FALSE mag_type = /obj/item/ammo_box/magazine/m45/kitchengun /obj/item/gun/ballistic/automatic/pistol/deagle @@ -98,11 +98,10 @@ /obj/item/gun/ballistic/automatic/pistol/APS name = "stechkin APS pistol" - desc = "The original Russian version of a widely used Syndicate sidearm. Uses 9mm ammo." + desc = "The original Russian version of a widely used Syndicate sidearm. Uses 9mm ammo. Has a threaded barrel for suppressors." icon_state = "aps" w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/pistolm9mm - can_suppress = FALSE burst_size = 3 fire_delay = 2 actions_types = list(/datum/action/item_action/toggle_firemode) @@ -136,7 +135,7 @@ mag_type = /obj/item/ammo_box/magazine/sniper_rounds fire_delay = 50 burst_size = 1 - can_suppress = 0 + can_suppress = FALSE w_class = WEIGHT_CLASS_NORMAL actions_types = list() fire_sound = 'sound/weapons/blastcannon.ogg' diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 0026a612e0..37b23402f1 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -329,7 +329,7 @@ /obj/item/gun/ballistic/revolver/doublebarrel/improvised name = "improvised shotgun" - desc = "A shoddy break-action breechloaded shotgun. Its lacklustre construction shows in its lesser effectiveness." + desc = "A shoddy break-action breechloaded shotgun. Less ammo-efficient than an actual shotgun, but still packs a punch." icon_state = "ishotgun" item_state = "shotgun" w_class = WEIGHT_CLASS_BULKY @@ -339,7 +339,6 @@ mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised sawn_desc = "I'm just here for the gasoline." unique_reskin = null - projectile_damage_multiplier = 0.9 var/slung = FALSE /obj/item/gun/ballistic/revolver/doublebarrel/improvised/attackby(obj/item/A, mob/user, params) diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 99c1cf97a6..8c3b9c7f99 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -83,6 +83,16 @@ updateUsrDialog() update_icon() return + + if(beaker) + if(istype(I, /obj/item/reagent_containers/dropper)) + var/obj/item/reagent_containers/dropper/D = I + D.afterattack(beaker, user, 1) + return + if(istype(I, /obj/item/reagent_containers/syringe)) + var/obj/item/reagent_containers/syringe/S = I + S.afterattack(beaker, user, 1) + return return ..() /obj/machinery/chem_heater/on_deconstruction() diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index bbc44730b6..a8d5c3d277 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2279,15 +2279,16 @@ All effects don't start immediately, but rather get worse over time; the rate is //////////////////// /datum/reagent/consumable/ethanol/species_drink var/species_required - var/disgust = 25 + var/disgust = 26 boozepwr = 50 -/datum/reagent/consumable/ethanol/species_drink/on_mob_life(mob/living/carbon/C) - if(C.dna.species && C.dna.species.species_category == species_required) //species have a species_category variable that refers to one of the drinks - quality = RACE_DRINK - else - C.adjust_disgust(disgust) - return ..() +/datum/reagent/consumable/ethanol/species_drink/reaction_mob(mob/living/carbon/C, method=TOUCH) + if(method == INGEST) + if(C?.dna?.species?.species_category == species_required) //species have a species_category variable that refers to one of the drinks + quality = RACE_DRINK + else + C.adjust_disgust(disgust) + return ..() /datum/reagent/consumable/ethanol/species_drink/coldscales name = "Coldscales" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index f3d299cce5..0d91e37ca0 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -970,7 +970,7 @@ M.emote("gasp") log_combat(M, M, "revived", src) var/list/policies = CONFIG_GET(keyed_list/policyconfig) - var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) + var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) * 10 //the config is in seconds, not deciseconds var/late = timelimit && (tplus > timelimit) var/policy = late? policies[POLICYCONFIG_ON_DEFIB_LATE] : policies[POLICYCONFIG_ON_DEFIB_INTACT] if(policy) @@ -1321,7 +1321,7 @@ pH = 11 value = REAGENT_VALUE_COMMON //not any higher. Ambrosia is a milestone for hydroponics already. - + //Earthsblood is still a wonderdrug. Just... don't expect to be able to mutate something that makes plants so healthy. /datum/reagent/medicine/earthsblood/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) . = ..() @@ -1335,7 +1335,7 @@ myseed.adjust_yield(round(chems.get_reagent_amount(src.type) * 1)) myseed.adjust_endurance(round(chems.get_reagent_amount(src.type) * 0.5)) myseed.adjust_production(-round(chems.get_reagent_amount(src.type) * 0.5)) - + /datum/reagent/medicine/earthsblood/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-3 * REM, FALSE) M.adjustFireLoss(-3 * REM, FALSE) diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index f963114e38..351318c2af 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -11,7 +11,7 @@ return FALSE if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = BODYPART_ORGANIC) + var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = list(BODYPART_ORGANIC)) if(!parts.len) return FALSE return ..() @@ -19,7 +19,7 @@ /datum/nanite_program/regenerative/active_effect() if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = BODYPART_ORGANIC) + var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = list(BODYPART_ORGANIC)) if(!parts.len) return for(var/obj/item/bodypart/L in parts) @@ -121,7 +121,7 @@ if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE, TRUE, status = BODYPART_ROBOTIC | BODYPART_HYBRID) + var/list/parts = C.get_damaged_bodyparts(TRUE, TRUE, status = list(BODYPART_ROBOTIC, BODYPART_HYBRID)) if(!parts.len) return FALSE else @@ -132,7 +132,7 @@ /datum/nanite_program/repairing/active_effect(mob/living/M) if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE, TRUE, status = BODYPART_ROBOTIC | BODYPART_HYBRID) + var/list/parts = C.get_damaged_bodyparts(TRUE, TRUE, status = list(BODYPART_ROBOTIC, BODYPART_HYBRID)) if(!parts.len) return var/update = FALSE @@ -176,7 +176,7 @@ /datum/nanite_program/regenerative_advanced/active_effect() if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = BODYPART_ORGANIC) + var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = list(BODYPART_ORGANIC)) if(!parts.len) return var/update = FALSE diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm index 11518b236f..3d54c7130c 100644 --- a/code/modules/spells/spell_types/lichdom.dm +++ b/code/modules/spells/spell_types/lichdom.dm @@ -132,7 +132,7 @@ lich.real_name = mind.name mind.transfer_to(lich) mind.grab_ghost(force=TRUE) - lich.hardset_dna(null,null,null,lich.real_name,null, new /datum/species/skeleton) + lich.hardset_dna(null,null,null,lich.real_name,null, new /datum/species/skeleton/space) to_chat(lich, "Your bones clatter and shudder as you are pulled back into this world!") var/turf/body_turf = get_turf(old_body) lich.DefaultCombatKnockdown(200 + 200*resurrections) diff --git a/code/modules/surgery/advanced/revival.dm b/code/modules/surgery/advanced/revival.dm index c61ee330e6..0b864958a0 100644 --- a/code/modules/surgery/advanced/revival.dm +++ b/code/modules/surgery/advanced/revival.dm @@ -70,7 +70,7 @@ if(O.organ_flags & ORGAN_FAILING) O.applyOrganDamage(-5) var/list/policies = CONFIG_GET(keyed_list/policyconfig) - var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) + var/timelimit = CONFIG_GET(number/defib_cmd_time_limit) * 10 //the config is in seconds, not deciseconds var/late = timelimit && (tplus > timelimit) var/policy = late? policies[POLICYCONFIG_ON_DEFIB_LATE] : policies[POLICYCONFIG_ON_DEFIB_INTACT] if(policy) diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index ef6d3a4fe5..4d37ed662d 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -50,7 +50,7 @@ TGS_PROTECT_DATUM(/datum/tgs_api) /datum/tgs_api/proc/ChatTargetedBroadcast(message, admin_only) return TGS_UNIMPLEMENTED -/datum/tgs_api/proc/ChatPrivateMessage(message, admin_only) +/datum/tgs_api/proc/ChatPrivateMessage(message, datum/tgs_chat_user/user) return TGS_UNIMPLEMENTED /datum/tgs_api/proc/SecurityLevel() diff --git a/code/modules/tgs/v3210/api.dm b/code/modules/tgs/v3210/api.dm index e0d00ad15d..5b41e6a89d 100644 --- a/code/modules/tgs/v3210/api.dm +++ b/code/modules/tgs/v3210/api.dm @@ -39,7 +39,7 @@ var/warned_custom_commands = FALSE /datum/tgs_api/v3210/ApiVersion() - return new /datum/tgs_version("3.2.1.0") + return new /datum/tgs_version("3.2.1.3") /datum/tgs_api/v3210/proc/trim_left(text) for (var/i = 1 to length(text)) @@ -180,7 +180,7 @@ ExportService(SERVICE_REQUEST_KILL_PROCESS) /datum/tgs_api/v3210/ChatChannelInfo() - return list() + return list() // :omegalul: /datum/tgs_api/v3210/ChatBroadcast(message, list/channels) if(channels) diff --git a/code/modules/tgs/v3210/commands.dm b/code/modules/tgs/v3210/commands.dm index a1949da444..4ccfc1a8a6 100644 --- a/code/modules/tgs/v3210/commands.dm +++ b/code/modules/tgs/v3210/commands.dm @@ -42,5 +42,11 @@ var/datum/tgs_chat_command/stc = new command_type var/datum/tgs_chat_user/user = new user.friendly_name = sender + + // Discord hack, fix the mention if it's only numbers (fuck you IRC trolls) + var/regex/discord_id_regex = regex(@"^[0-9]+$") + if(findtext(sender, discord_id_regex)) + sender = "<@[sender]>" + user.mention = sender return stc.Run(user, params) || TRUE diff --git a/code/modules/tgs/v4/api.dm b/code/modules/tgs/v4/api.dm index 1dc98f811e..081543828e 100644 --- a/code/modules/tgs/v4/api.dm +++ b/code/modules/tgs/v4/api.dm @@ -114,13 +114,6 @@ /datum/tgs_api/v4/OnInitializationComplete() Export(TGS4_COMM_SERVER_PRIMED) - var/tgs4_secret_sleep_offline_sauce = 24051994 - var/old_sleep_offline = world.sleep_offline - world.sleep_offline = tgs4_secret_sleep_offline_sauce - sleep(1) - if(world.sleep_offline == tgs4_secret_sleep_offline_sauce) //if not someone changed it - world.sleep_offline = old_sleep_offline - /datum/tgs_api/v4/OnTopic(T) var/list/params = params2list(T) var/their_sCK = params[TGS4_INTEROP_ACCESS_IDENTIFIER] @@ -255,7 +248,7 @@ return instance_name /datum/tgs_api/v4/TestMerges() - return cached_test_merges + return cached_test_merges.Copy() /datum/tgs_api/v4/EndProcess() Export(TGS4_COMM_END_PROCESS) diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 8ca85faf05..466a986237 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -15,8 +15,10 @@ var/datum/tgs_revision_information/revision var/list/chat_channels + var/initialized = FALSE + /datum/tgs_api/v5/ApiVersion() - return new /datum/tgs_version("5.2.1") + return new /datum/tgs_version(TGS_DMAPI_VERSION) /datum/tgs_api/v5/OnWorldNew(minimum_required_security_level) server_port = world.params[DMAPI5_PARAM_SERVER_PORT] @@ -79,6 +81,7 @@ chat_channels = list() DecodeChannels(runtime_information) + initialized = TRUE return TRUE /datum/tgs_api/v5/proc/RequireInitialBridgeResponse() @@ -88,13 +91,6 @@ /datum/tgs_api/v5/OnInitializationComplete() Bridge(DMAPI5_BRIDGE_COMMAND_PRIME) - var/tgs4_secret_sleep_offline_sauce = 29051994 - var/old_sleep_offline = world.sleep_offline - world.sleep_offline = tgs4_secret_sleep_offline_sauce - sleep(1) - if(world.sleep_offline == tgs4_secret_sleep_offline_sauce) //if not someone changed it - world.sleep_offline = old_sleep_offline - /datum/tgs_api/v5/proc/TopicResponse(error_message = null) var/list/response = list() response[DMAPI5_RESPONSE_ERROR_MESSAGE] = error_message @@ -102,10 +98,13 @@ return json_encode(response) /datum/tgs_api/v5/OnTopic(T) + if(!initialized) + return FALSE //continue world/Topic + var/list/params = params2list(T) var/json = params[DMAPI5_TOPIC_DATA] if(!json) - return FALSE //continue world/Topic + return FALSE var/list/topic_parameters = json_decode(json) if(!topic_parameters) @@ -282,7 +281,7 @@ /datum/tgs_api/v5/TestMerges() RequireInitialBridgeResponse() - return test_merges + return test_merges.Copy() /datum/tgs_api/v5/EndProcess() Bridge(DMAPI5_BRIDGE_COMMAND_KILL) @@ -327,7 +326,7 @@ /datum/tgs_api/v5/ChatChannelInfo() RequireInitialBridgeResponse() - return chat_channels + return chat_channels.Copy() /datum/tgs_api/v5/proc/DecodeChannels(chat_update_json) var/list/chat_channels_json = chat_update_json[DMAPI5_CHAT_UPDATE_CHANNELS] diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 14cdd30931..b4490f715b 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -74,9 +74,9 @@ /obj/item/staff = 3, /obj/item/clothing/under/rank/civilian/mime/skirt = 1, /obj/item/clothing/under/rank/captain/suit/skirt = 1, - /obj/item/clothing/mask/gas/sexyclown = 1, + /obj/item/clothing/mask/gas/clown_hat/sexy = 1, /obj/item/clothing/under/rank/civilian/clown/sexy = 1, - /obj/item/clothing/mask/gas/sexymime = 1, + /obj/item/clothing/mask/gas/mime/sexy = 1, /obj/item/clothing/under/rank/civilian/mime/sexy = 1, /obj/item/clothing/mask/rat/bat = 1, /obj/item/clothing/mask/rat/bee = 1, diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index bd821d80e3..462d4b5cb5 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -181,6 +181,7 @@ /obj/item/clothing/under/pants/mustangjeans = 3, /obj/item/clothing/neck/necklace/dope = 5, /obj/item/clothing/suit/jacket/letterman_nanotrasen = 5, + /obj/item/clothing/under/misc/corporateuniform = 5, /obj/item/clothing/suit/hooded/wintercoat/polychromic = 5) refill_canister = /obj/item/vending_refill/clothing default_price = PRICE_CHEAP diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index 7fd8246dd6..6c29b412e7 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -4,7 +4,7 @@ product_ads = "Escape to a fantasy world!;Fuel your gambling addiction!;Ruin your friendships!;Roll for initiative!;Elves and dwarves!;Paranoid computers!;Totally not satanic!;Fun times forever!" icon_state = "games" products = list(/obj/item/toy/cards/deck = 5, - /obj/item/storage/box/dice = 10, + /obj/item/storage/dice = 10, /obj/item/toy/cards/deck/cas = 3, /obj/item/toy/cards/deck/cas/black = 3, /obj/item/toy/cards/deck/unum = 3) diff --git a/config/awaymissionconfig.txt b/config/awaymissionconfig.txt index 768942c434..2663a206da 100644 --- a/config/awaymissionconfig.txt +++ b/config/awaymissionconfig.txt @@ -11,6 +11,7 @@ #_maps/RandomZLevels/away_mission/Academy.dmm #_maps/RandomZLevels/away_mission/wildwest.dmm #_maps/RandomZLevels/away_mission/challenge.dmm +_maps/RandomZLevels/away_mission/jungleresort.dmm #_maps/RandomZLevels/away_mission/moonoutpost19.dmm #_maps/RandomZLevels/away_mission/undergroundoutpost45.dmm #_maps/RandomZLevels/away_mission/caves.dmm diff --git a/config/config.txt b/config/config.txt index a550e6bf8a..5be76972ab 100644 --- a/config/config.txt +++ b/config/config.txt @@ -375,6 +375,9 @@ NOTIFY_NEW_PLAYER_ACCOUNT_AGE 1 ##Name of the place to send people rejected by the bunker #PANIC_SERVER_NAME [Put the name here] +##Automated age verification, comment this out to not ask new users if they are 18+ +AGE_VERIFICATION + ## Uncomment to have the changelog file automatically open when a user connects and hasn't seen the latest changelog #AGGRESSIVE_CHANGELOG @@ -408,7 +411,7 @@ ALLOW_MAP_VOTING 1 ## APPROVAL (can vote for as many as you want), I ## IRV (vote by ranked choice, winner determined by instant runoff algorithm) ## SCORE (give individual rankings of each choice, winner determined by majority judgement algorithm) -MAP_VOTE_TYPE SCORE +MAP_VOTE_TYPE APPROVAL ## Map rotate chance delta ## This is the chance of map rotation factored to the round length. @@ -519,7 +522,7 @@ DEFAULT_VIEW 21x15 ### NOTE FOR LINUX HOSTS: This requires manual setup of iptables. Beware that improper configuration of this can and will irreversibly fuck up a server, so please don't tinker with it if you don't know what you're doing. ## Enabled #FAIL2TOPIC_ENABLED -## Minimum wait time in deciseconds between valid requests +## Minimum wait time in deciseconds between valid requests FAIL2TOPIC_RATE_LIMIT 10 ## Number of requests after breaching rate limit that triggers a ban FAIL2TOPIC_MAX_FAILS 5 diff --git a/config/game_options.txt b/config/game_options.txt index bb6c5d8f01..bc5fdf940e 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -651,17 +651,17 @@ PENIS_MIN_INCHES_PREFS 1 PENIS_MAX_INCHES_PREFS 20 ## Body size configs, the feature will be disabled if both min and max have the same value. -BODY_SIZE_MIN 1 -BODY_SIZE_MAX 1 +BODY_SIZE_MIN 0.9 +BODY_SIZE_MAX 1.25 ## Pun-Pun movement slowdown given to characters with a body size smaller than this value, ## to compensate for their smaller hitbox. ## To disable, just make sure the value is lower than 'body_size_min' -THRESHOLD_BODY_SIZE_SLOWDOWN 0.85 +THRESHOLD_BODY_SIZE_PENALTY 1 ## Multiplier used in the smaller strides slowdown calculation. ## Doesn't apply to floating or crawling mobs. -BODY_SIZE_SLOWDOWN_MULTIPLIER 0.25 +BODY_SIZE_SLOWDOWN_MULTIPLIER 0 ## Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones. ALLOW_CUSTOM_SKINTONES diff --git a/html/changelogs/AutoChangeLog-pr-13521.yml b/html/changelogs/AutoChangeLog-pr-13521.yml new file mode 100644 index 0000000000..77aca8c363 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13521.yml @@ -0,0 +1,5 @@ +author: "DeltaFire15" +delete-after: True +changes: + - balance: "zeolites are now actual fermichems instead of being incredibly easy to make." + - bugfix: "Using syringes / droppers on chem heaters with beakers in them works again." diff --git a/html/changelogs/AutoChangeLog-pr-13558.yml b/html/changelogs/AutoChangeLog-pr-13558.yml new file mode 100644 index 0000000000..2a5b2dc576 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13558.yml @@ -0,0 +1,5 @@ +author: "Zandario" +delete-after: True +changes: + - bugfix: "lum slime sprites work again" + - code_imp: "Slapped the Species Defines where relevant" diff --git a/html/changelogs/AutoChangeLog-pr-13562.yml b/html/changelogs/AutoChangeLog-pr-13562.yml new file mode 100644 index 0000000000..7fabc05c7b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13562.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "Vampire shapeshifting should now behave as intended" diff --git a/html/changelogs/AutoChangeLog-pr-13567.yml b/html/changelogs/AutoChangeLog-pr-13567.yml new file mode 100644 index 0000000000..d51db8e3b8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13567.yml @@ -0,0 +1,8 @@ +author: "timothyteakettle" +delete-after: True +changes: + - tweak: "changeling stings retract upon turning into a slime puddle" + - tweak: "you cannot transform into a slime puddle with a no drop item in your hands" + - tweak: "slime puddles are now transparent and their colour looks more natural in comparison to the user" + - tweak: "slime puddles are now even slower" + - tweak: "slime puddles now get no protection from worn clothing" diff --git a/html/changelogs/AutoChangeLog-pr-13570.yml b/html/changelogs/AutoChangeLog-pr-13570.yml new file mode 100644 index 0000000000..6a4fb6af66 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13570.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "Fixed a runtime in every healing nanite program." diff --git a/html/changelogs/AutoChangeLog-pr-13571.yml b/html/changelogs/AutoChangeLog-pr-13571.yml new file mode 100644 index 0000000000..864967dffc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13571.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - bugfix: "Code improvement on ventcrawling" diff --git a/html/changelogs/AutoChangeLog-pr-13581.yml b/html/changelogs/AutoChangeLog-pr-13581.yml new file mode 100644 index 0000000000..42db54450b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13581.yml @@ -0,0 +1,6 @@ +author: "Ghommie, porting PRs by MMMiracles and pireamaineach, credits to BlueWildrose too." +delete-after: True +changes: + - rscadd: "You can now draw on plasmaman helmets with a crayon to turn their frown upside-down." + - balance: "Plasmaman helmets no longer hide your identity when worn by themselves." + - balance: "Plasmaman helmets now have welding visors, which can't stack with their torches in the helmet and are visible." diff --git a/html/changelogs/AutoChangeLog-pr-13585.yml b/html/changelogs/AutoChangeLog-pr-13585.yml new file mode 100644 index 0000000000..0369e0827f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13585.yml @@ -0,0 +1,4 @@ +author: "BlueWildrose" +delete-after: True +changes: + - bugfix: "Fixed species-specific drinks not giving a mood boost if you are that species." diff --git a/html/changelogs/AutoChangeLog-pr-13586.yml b/html/changelogs/AutoChangeLog-pr-13586.yml new file mode 100644 index 0000000000..5f61b1dc54 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13586.yml @@ -0,0 +1,4 @@ +author: "KeRSedChaplain" +delete-after: True +changes: + - imageadd: "Resprited the brass claw" diff --git a/html/changelogs/AutoChangeLog-pr-13587.yml b/html/changelogs/AutoChangeLog-pr-13587.yml new file mode 100644 index 0000000000..ea3f4c5efa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13587.yml @@ -0,0 +1,4 @@ +author: "Detective-Google" +delete-after: True +changes: + - tweak: "the snow taxi is no longer the slow taxi" diff --git a/html/changelogs/AutoChangeLog-pr-13588.yml b/html/changelogs/AutoChangeLog-pr-13588.yml new file mode 100644 index 0000000000..7ab9d67bab --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13588.yml @@ -0,0 +1,5 @@ +author: "Delams-The-SM" +delete-after: True +changes: + - rscadd: "Added 3 new emotes *hiss *purr *meow" + - soundadd: "ported sounds from Citadel RP for *purr and *meow" diff --git a/html/changelogs/AutoChangeLog-pr-13589.yml b/html/changelogs/AutoChangeLog-pr-13589.yml new file mode 100644 index 0000000000..877012914e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13589.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - tweak: "autosurgeons from travelling trader rewards now only have one use" diff --git a/html/changelogs/AutoChangeLog-pr-13592.yml b/html/changelogs/AutoChangeLog-pr-13592.yml new file mode 100644 index 0000000000..76e12e8c89 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13592.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - rscadd: "Stat panel UI for ranked choice votes" diff --git a/html/changelogs/AutoChangeLog-pr-13593.yml b/html/changelogs/AutoChangeLog-pr-13593.yml new file mode 100644 index 0000000000..08310f6013 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13593.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - code_imp: "Vote system #defines are now strings" diff --git a/html/changelogs/AutoChangeLog-pr-13598.yml b/html/changelogs/AutoChangeLog-pr-13598.yml new file mode 100644 index 0000000000..7bef81fa1a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13598.yml @@ -0,0 +1,4 @@ +author: "Arturlang" +delete-after: True +changes: + - bugfix: "Fixes hijack implant APC UI, again" diff --git a/html/changelogs/AutoChangeLog-pr-13599.yml b/html/changelogs/AutoChangeLog-pr-13599.yml new file mode 100644 index 0000000000..3deea2b2be --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13599.yml @@ -0,0 +1,4 @@ +author: "Delams-The-SM" +delete-after: True +changes: + - bugfix: "fixed randomization of colors for things like mulligan and Stabilized green slime extract for matrixed body parts" diff --git a/html/changelogs/AutoChangeLog-pr-13601.yml b/html/changelogs/AutoChangeLog-pr-13601.yml new file mode 100644 index 0000000000..0cfb64b48b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13601.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - tweak: "antag items are now of critical importance and wont fail to be placed on the character" diff --git a/html/changelogs/AutoChangeLog-pr-13602.yml b/html/changelogs/AutoChangeLog-pr-13602.yml new file mode 100644 index 0000000000..24185b1792 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13602.yml @@ -0,0 +1,5 @@ +author: "Putnam3145" +delete-after: True +changes: + - rscadd: "A fallback for dynamic antag rolling that allows for it to just try between traitor, blood brothers, heretics, changeling, bloodsucker and devil until there are enough roundstart antags. This can also happen randomly anyway. Blood brothers and devil are disabled for now, but the code is there to enable them." + - rscadd: "A new storyteller, \"Grab Bag\", that forces the above round type." diff --git a/html/changelogs/AutoChangeLog-pr-13603.yml b/html/changelogs/AutoChangeLog-pr-13603.yml new file mode 100644 index 0000000000..4fcff30da0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13603.yml @@ -0,0 +1,5 @@ +author: "kappa-sama" +delete-after: True +changes: + - tweak: "ishotgun crafting recipe no longer requires plasteel and is slightly more convenient" + - balance: "ishotgun does 45 damage now instead of 40.5" diff --git a/html/changelogs/AutoChangeLog-pr-13604.yml b/html/changelogs/AutoChangeLog-pr-13604.yml new file mode 100644 index 0000000000..2ac141215b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13604.yml @@ -0,0 +1,5 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - balance: "Brass welders are 50% faster at refueling" + - code_imp: "redoes self fueling welders in the code to be less speggie" diff --git a/html/changelogs/AutoChangeLog-pr-13605.yml b/html/changelogs/AutoChangeLog-pr-13605.yml new file mode 100644 index 0000000000..707de17870 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13605.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "the corporate unifoms can now be gotton in the clothing mate vender" diff --git a/html/changelogs/AutoChangeLog-pr-13606.yml b/html/changelogs/AutoChangeLog-pr-13606.yml new file mode 100644 index 0000000000..568f8cf7e6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13606.yml @@ -0,0 +1,5 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "adminhelping no longer removes entire admin tab" + - bugfix: "end of round no longer removes entire admin tab" diff --git a/html/changelogs/AutoChangeLog-pr-13607.yml b/html/changelogs/AutoChangeLog-pr-13607.yml new file mode 100644 index 0000000000..0ed47b1d44 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13607.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - rscadd: "polychromic maid outfit" diff --git a/html/changelogs/AutoChangeLog-pr-13608.yml b/html/changelogs/AutoChangeLog-pr-13608.yml new file mode 100644 index 0000000000..b7c0201cab --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13608.yml @@ -0,0 +1,4 @@ +author: "SpaceManiac" +delete-after: True +changes: + - bugfix: "Fixed the maphook" diff --git a/html/changelogs/AutoChangeLog-pr-13611.yml b/html/changelogs/AutoChangeLog-pr-13611.yml new file mode 100644 index 0000000000..d7e6e8f9a1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13611.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - rscadd: "Adds a space loop to every map in toxins" diff --git a/html/changelogs/AutoChangeLog-pr-13612.yml b/html/changelogs/AutoChangeLog-pr-13612.yml new file mode 100644 index 0000000000..9a67ec5aa3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13612.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - rscadd: "Expanded space hermit base" diff --git a/html/changelogs/AutoChangeLog-pr-13616.yml b/html/changelogs/AutoChangeLog-pr-13616.yml new file mode 100644 index 0000000000..3032d0331f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13616.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "You can access the mime / clown mask skins radial menu once again." diff --git a/html/changelogs/AutoChangeLog-pr-13618.yml b/html/changelogs/AutoChangeLog-pr-13618.yml new file mode 100644 index 0000000000..b301c39e6b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13618.yml @@ -0,0 +1,5 @@ +author: "Vynzill" +delete-after: True +changes: + - rscadd: "new gateway mission +mapadd: jungleresort map" diff --git a/html/changelogs/AutoChangeLog-pr-13626.yml b/html/changelogs/AutoChangeLog-pr-13626.yml new file mode 100644 index 0000000000..fa5331e005 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13626.yml @@ -0,0 +1,4 @@ +author: "zeroisthebiggay" +delete-after: True +changes: + - balance: "MEGAFAUNA DROPS ARE LAVAPROOF" diff --git a/html/changelogs/AutoChangeLog-pr-13627.yml b/html/changelogs/AutoChangeLog-pr-13627.yml new file mode 100644 index 0000000000..087cbde3ae --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13627.yml @@ -0,0 +1,8 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Dice bags no longer act like cardboard boxes." + - bugfix: "Abductors should be no longer mute." + - bugfix: "Item action buttons should now properly show the item current overlays, most times." + - bugfix: "The blackbox should now go into your hand slot when pried out, rather than tumbling on the ground everytime." + - tweak: "The Quick Equip hotkey is now usable by all living mobs (so long they have hands and equipment slots)" diff --git a/html/changelogs/AutoChangeLog-pr-13629.yml b/html/changelogs/AutoChangeLog-pr-13629.yml new file mode 100644 index 0000000000..954f6972ec --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13629.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - rscdel: "anomalies no longer spawn in walls" diff --git a/html/changelogs/AutoChangeLog-pr-13630.yml b/html/changelogs/AutoChangeLog-pr-13630.yml new file mode 100644 index 0000000000..f7e80aaf9e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13630.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - rscadd: "you can now customize your size from 90% to 130%, going below 100% makes you have 10 less max health" diff --git a/html/changelogs/AutoChangeLog-pr-13632.yml b/html/changelogs/AutoChangeLog-pr-13632.yml new file mode 100644 index 0000000000..bf478ec97c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13632.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - bugfix: "time for memory loss message to show up when being revived is now correctly 300 seconds, instead of 30" diff --git a/html/changelogs/AutoChangeLog-pr-13633.yml b/html/changelogs/AutoChangeLog-pr-13633.yml new file mode 100644 index 0000000000..d9246cfff6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13633.yml @@ -0,0 +1,4 @@ +author: "ArchieBeepBoop" +delete-after: True +changes: + - bugfix: "Outlet Injector Mapping Asset Layer Fix" diff --git a/html/changelogs/AutoChangeLog-pr-13635.yml b/html/changelogs/AutoChangeLog-pr-13635.yml new file mode 100644 index 0000000000..21730d4cf5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13635.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - balance: "The bone gauntlets should be slightly less murderously punchy on the fast punches mode." diff --git a/html/changelogs/AutoChangeLog-pr-13636.yml b/html/changelogs/AutoChangeLog-pr-13636.yml new file mode 100644 index 0000000000..75124f759f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13636.yml @@ -0,0 +1,4 @@ +author: "SiliconMain" +delete-after: True +changes: + - tweak: "Engi department has gas masks in loadout" diff --git a/html/changelogs/AutoChangeLog-pr-13639.yml b/html/changelogs/AutoChangeLog-pr-13639.yml new file mode 100644 index 0000000000..a511d0a909 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13639.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - tweak: "ASP 9mm and M1911 can now have suppressers added" diff --git a/html/changelogs/AutoChangeLog-pr-13641.yml b/html/changelogs/AutoChangeLog-pr-13641.yml new file mode 100644 index 0000000000..b0c429da75 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13641.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - balance: "Nerf combat knife damage" diff --git a/html/changelogs/AutoChangeLog-pr-13647.yml b/html/changelogs/AutoChangeLog-pr-13647.yml new file mode 100644 index 0000000000..b3211ee759 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13647.yml @@ -0,0 +1,4 @@ +author: "zeroisthebiggay" +delete-after: True +changes: + - bugfix: "jacqueline spawns on boxstation" diff --git a/html/changelogs/AutoChangeLog-pr-13648.yml b/html/changelogs/AutoChangeLog-pr-13648.yml new file mode 100644 index 0000000000..4148230385 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13648.yml @@ -0,0 +1,13 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "The 'Your body is in a cloner' notification works again" + - bugfix: "Hijack implants should work properly again (or, at least better)" + - bugfix: "Liches are now good skeletons again instead of weak ones" + - bugfix: "The piratepad control cannot be destroyed again." + - bugfix: "Pirates have received new supplies of jetpacks instead of useless oxygen tanks" + - bugfix: "Ratvarian AIs are once again able to show their linked borgs Ratvar's light" + - bugfix: "Hijackers are once again unable to detonate borgs without being adjacent to the console" + - bugfix: "Automated annoucement systems and gulag ore consoles no longer waste emag charges" + - bugfix: "Automated announcement systems once again can be remote controlled by non-AIs with silicon access" + - bugfix: "APCs being hijacked multiple times at once is no longer possible, preventing some issues" diff --git a/html/changelogs/AutoChangeLog-pr-13653.yml b/html/changelogs/AutoChangeLog-pr-13653.yml new file mode 100644 index 0000000000..2f920da353 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13653.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - tweak: "Minor fixes to kilo" diff --git a/html/changelogs/AutoChangeLog-pr-13654.yml b/html/changelogs/AutoChangeLog-pr-13654.yml new file mode 100644 index 0000000000..cb67c6e6be --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13654.yml @@ -0,0 +1,4 @@ +author: "ArchieBeepBoop" +delete-after: True +changes: + - bugfix: "Jacqueen and the Christmas tree should no longer spawn abstract things that can cause shittons of runtimes." diff --git a/html/changelogs/AutoChangeLog-pr-13655.yml b/html/changelogs/AutoChangeLog-pr-13655.yml new file mode 100644 index 0000000000..6e48c84054 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13655.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - bugfix: "fixes held items proccing crossed when passing someone" diff --git a/html/changelogs/AutoChangeLog-pr-13656.yml b/html/changelogs/AutoChangeLog-pr-13656.yml new file mode 100644 index 0000000000..017f0d99c2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13656.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - admin: "Canceling events gives more time to stop from 10 to 30" diff --git a/html/changelogs/AutoChangeLog-pr-13657.yml b/html/changelogs/AutoChangeLog-pr-13657.yml new file mode 100644 index 0000000000..6f445f6b71 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13657.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "The transmission sigil power drain works now" diff --git a/html/changelogs/AutoChangeLog-pr-13658.yml b/html/changelogs/AutoChangeLog-pr-13658.yml new file mode 100644 index 0000000000..09b22d38ad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13658.yml @@ -0,0 +1,6 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "Scripture no longer sometimes eats part of its invocation." + - balance: "APCs and silicons are now more susceptible to powerdrains (by the power_drain() proc, which is rare)" + - balance: "Void Volt has been modified from a chant to a singular pulse." diff --git a/html/changelogs/AutoChangeLog-pr-13659.yml b/html/changelogs/AutoChangeLog-pr-13659.yml new file mode 100644 index 0000000000..85eee3b78d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13659.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - bugfix: "the load away mission verb won't crash the server now" diff --git a/html/changelogs/AutoChangeLog-pr-13661.yml b/html/changelogs/AutoChangeLog-pr-13661.yml new file mode 100644 index 0000000000..81b5a735dc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13661.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - rscadd: "added in-game age verification as an alternative to access requests" diff --git a/html/changelogs/AutoChangeLog-pr-13669.yml b/html/changelogs/AutoChangeLog-pr-13669.yml new file mode 100644 index 0000000000..c682500501 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13669.yml @@ -0,0 +1,4 @@ +author: "Arturlang" +delete-after: True +changes: + - tweak: "Being sacrificed by the cult no longer removes all hope of rescue." diff --git a/html/statbrowser.html b/html/statbrowser.html index 0920081fd2..346a198746 100644 --- a/html/statbrowser.html +++ b/html/statbrowser.html @@ -412,8 +412,8 @@ function verbs_cat_check(cat) { } for(var v = 0; v < verbs.length; v++){ var part = verbs[v]; - verbcat = part[0].indexOf(".") != -1 ? part[0].split(".") : part[0]; - if(verbcat != cat || verbcat.trim() == ""){ + verbcat = part[0].indexOf(".") != -1 ? part[0].split(".")[0] : part[0]; + if(verbcat != tabCat || verbcat.trim() == ""){ continue; } else{ @@ -446,9 +446,9 @@ function add_verb_list(v) { to_add.sort(); // sort what we're adding for(var i = 0; i < to_add.length; i++) { var part = to_add[i]; - if (!part[0]) + if(!part[0]) continue; - var category = part[0].indexOf(".") == -1 ? part[0] : part[0].split(".")[0] + var category = part[0].indexOf(".") == -1 ? part[0] : part[0].split(".")[0]; if(findVerbindex(part[1], verbs)) continue; if(verb_tabs.includes(category)){ diff --git a/icons/mob/clothing/custom_w.dmi b/icons/mob/clothing/custom_w.dmi index 18e07f41ed..10f7c5080a 100644 Binary files a/icons/mob/clothing/custom_w.dmi and b/icons/mob/clothing/custom_w.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 16571a4aa1..889888ef0a 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/uniform.dmi b/icons/mob/clothing/uniform.dmi index ffbb8b8b5b..7bd7de82c7 100644 Binary files a/icons/mob/clothing/uniform.dmi and b/icons/mob/clothing/uniform.dmi differ diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi index 814ac9a396..fb864385c7 100644 Binary files a/icons/mob/human_parts_greyscale.dmi and b/icons/mob/human_parts_greyscale.dmi differ diff --git a/icons/mob/inhands/antag/clockwork_lefthand.dmi b/icons/mob/inhands/antag/clockwork_lefthand.dmi index 080d7fdc83..8945a573a0 100644 Binary files a/icons/mob/inhands/antag/clockwork_lefthand.dmi and b/icons/mob/inhands/antag/clockwork_lefthand.dmi differ diff --git a/icons/mob/inhands/antag/clockwork_righthand.dmi b/icons/mob/inhands/antag/clockwork_righthand.dmi index 42715d6e92..64ee6199a7 100644 Binary files a/icons/mob/inhands/antag/clockwork_righthand.dmi and b/icons/mob/inhands/antag/clockwork_righthand.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 10b733bae4..3d1cbfa273 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/obj/clockwork_objects.dmi b/icons/obj/clockwork_objects.dmi index 156d4fa0c6..52d9b88dcc 100644 Binary files a/icons/obj/clockwork_objects.dmi and b/icons/obj/clockwork_objects.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 4f650f8561..95a31f8b9f 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index a566a05591..17e52b60c9 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index 50f536d1d3..77b2d114b9 100644 Binary files a/icons/obj/custom.dmi and b/icons/obj/custom.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 939ee0e009..d697c4619d 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index bb9162789e..4a21fb41fd 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -522,3 +522,17 @@ slot = SLOT_HEAD path = /obj/item/clothing/head/halo ckeywhitelist = list("hisakaki") + +/datum/gear/donator/vest + name = "vest and shirt" + slot = SLOT_W_UNIFORM + path = /obj/item/clothing/under/custom/vest + ckeywhitelist = list("maylowfox") + +/datum/gear/donator/exo + name = "exo frame" + slot = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/custom/exo + ckeywhitelist = list("jesterz7") + + diff --git a/modular_citadel/code/modules/client/loadout/hands.dm b/modular_citadel/code/modules/client/loadout/hands.dm index db57fb466b..eb496ed78c 100644 --- a/modular_citadel/code/modules/client/loadout/hands.dm +++ b/modular_citadel/code/modules/client/loadout/hands.dm @@ -12,7 +12,7 @@ /datum/gear/hands/dice name = "Dice bag" - path = /obj/item/storage/box/dice + path = /obj/item/storage/dice /datum/gear/hands/eightball name = "Magic eightball" diff --git a/modular_citadel/code/modules/client/loadout/mask.dm b/modular_citadel/code/modules/client/loadout/mask.dm index 0d7e32552e..9468c9303d 100644 --- a/modular_citadel/code/modules/client/loadout/mask.dm +++ b/modular_citadel/code/modules/client/loadout/mask.dm @@ -14,3 +14,9 @@ name = "Joy mask" path = /obj/item/clothing/mask/joy cost = 3 + +/datum/gear/mask/gas + name = "Gas Mask" + path = /obj/item/clothing/mask/gas + cost = 2 + restricted_roles = list("Chief Engineer", "Atmospheric Technician", "Station Engineer") //*shrug diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm index 45d8fc1ef1..76389e2015 100644 --- a/modular_citadel/code/modules/client/loadout/uniform.dm +++ b/modular_citadel/code/modules/client/loadout/uniform.dm @@ -44,6 +44,10 @@ name = "Maid costume" path = /obj/item/clothing/under/costume/maid +/datum/gear/uniform/maidcostume/polychromic + name = "Polychromic maid costume" + path = /obj/item/clothing/under/rank/civilian/janitor/maid/polychromic + /datum/gear/uniform/mailmanuniform name = "Mailman's jumpsuit" path = /obj/item/clothing/under/misc/mailman diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index bc9f8bce49..4ef5a91a92 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -567,4 +567,21 @@ icon = 'icons/mob/clothing/custom_w.dmi' mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi' dynamic_hair_suffix = "" - + +/obj/item/clothing/under/custom/vest + name = "vest" + desc = "A vest with a shirt underlining it." + icon_state = "vest" + item_state = "vest" + icon = 'icons/obj/custom.dmi' + mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi' + mutantrace_variation = STYLE_DIGITIGRADE + +/obj/item/clothing/suit/custom/exo + name = "Full ExoFrame" + desc = "A suit specially designed for those who live and breath hardware with custom tooled robotic manipulators for working with precision even on the most hazardous of jobs." + icon_state = "frame" + item_state = "frame" + icon = 'icons/obj/custom.dmi' + mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi' + mutantrace_variation = NONE diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index 28c3f7ea99..f7911def84 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -132,6 +132,54 @@ user.nextsoundemote = world.time + 7 playsound(user, 'modular_citadel/sound/voice/awoo.ogg', 50, 1, -1) +/datum/emote/living/hiss + key = "hiss" + key_third_person = "hisses" + message = "hisses!" + emote_type = EMOTE_AUDIBLE + muzzle_ignore = FALSE + restraint_check = FALSE + +/datum/emote/living/hiss/run_emote(mob/living/user, params) + if(!(. = ..())) + return + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/hiss.ogg', 50, 1, -1) + +/datum/emote/living/meow + key = "meow" + key_third_person = "mrowls" + message = "mrowls!" + emote_type = EMOTE_AUDIBLE + muzzle_ignore = FALSE + restraint_check = FALSE + +/datum/emote/living/meow/run_emote(mob/living/user, params) + if(!(. = ..())) + return + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/meow1.ogg', 50, 1, -1) + +/datum/emote/living/purr + key = "purr" + key_third_person = "purrs softly" + message = "purrs softly." + emote_type = EMOTE_AUDIBLE + muzzle_ignore = FALSE + restraint_check = FALSE + +/datum/emote/living/purr/run_emote(mob/living/user, params) + if(!(. = ..())) + return + if(user.nextsoundemote >= world.time) + return + user.nextsoundemote = world.time + 7 + playsound(user, 'modular_citadel/sound/voice/purr.ogg', 50, 1, -1) + /datum/emote/living/nya key = "nya" key_third_person = "lets out a nya" diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index a6a9d7a85f..de27723508 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -200,22 +200,23 @@ /datum/reagent/fermi/zeolites name = "Artificial Zeolites" - description = "Lab made Zeolite, used to clear radiation from people and items alike! Splashing just a small amount(5u) onto any item can clear away large amounts of contamination." + description = "Lab made Zeolite, used to clear radiation from people and items alike! Splashing just a small amount(5u) onto any item can clear away large amounts of contamination, as long as its purity is at least 0.7." pH = 8 color = "#FFDADA" - metabolization_rate = 8 * REAGENTS_METABOLISM //Metabolizes fast but heals a lot! - value = REAGENT_VALUE_COMMON + metabolization_rate = 8 * REAGENTS_METABOLISM //Metabolizes fast but heals a lot! Lasts far longer if more pure. + value = REAGENT_VALUE_RARE //Relatively hard to make now, might be fine with VERY_RARE instead depending on feedback. /datum/reagent/fermi/zeolites/on_mob_life(mob/living/carbon/M) + metabolization_rate = (4 / purity) * REAGENTS_METABOLISM //Metab rate directly influenced by purity. Linear. var/datum/component/radioactive/contamination = M.GetComponent(/datum/component/radioactive) - if(M.radiation > 0) - M.radiation -= min(M.radiation, 60) + if(M.radiation > 0) //hey so apparently pentetic literally purges 1/50 (2%) of the rad amount on someone per tick no matter the 'true' amount, sooo uhh time to tweak this some more.. + M.radiation -= clamp(round((M.radiation / 150) * (25 ** purity), 0.1), 0, M.radiation) //Purges between ~3% and ~16% of total rad amount, per tick, depending on purity. Exponential. if(contamination && contamination.strength > 0) - contamination.strength -= min(contamination.strength, 100) + contamination.strength -= min(contamination.strength, round(25 ** (0.5 + purity), 0.1)) //25 per tick at minimum purity; Tops out at ~125 per tick if purity is 1. Exponential. ..() /datum/reagent/fermi/zeolites/reaction_obj(obj/O, reac_volume) var/datum/component/radioactive/contamination = O.GetComponent(/datum/component/radioactive) - if(contamination && reac_volume >= 5) + if(contamination && reac_volume >= 5 && purity >= 0.7) //you need at least 0.7 purity to instantly purge all contam on an object. qdel(contamination) return diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index da9fd34cd6..f4b8850f55 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -591,19 +591,21 @@ /datum/chemical_reaction/fermi/zeolites name = "Zeolites" id = /datum/reagent/fermi/zeolites - results = list(/datum/reagent/fermi/zeolites = 5) //We make a lot! + results = list(/datum/reagent/fermi/zeolites = 5) //We make a lot! - But it's now somewhat dangerous, and needs a bit of uranium to catalyze the reaction required_reagents = list(/datum/reagent/medicine/potass_iodide = 1, /datum/reagent/aluminium = 1, /datum/reagent/silicon = 1, /datum/reagent/oxygen = 1) + required_catalysts = list(/datum/reagent/uranium = 5) //FermiChem vars: - OptimalTempMin = 300 - OptimalTempMax = 900 - ExplodeTemp = 1000 //check to see overflow doesn't happen! - OptimalpHMin = 4.0 - OptimalpHMax = 6.0 + OptimalTempMin = 500 + OptimalTempMax = 750 + ExplodeTemp = 850 + OptimalpHMin = 2.8 + OptimalpHMax = 5 //2.2 ph levels of optimal ph zone - centered at 3.9 - ph of ingredients mixed at equal values is 9.55; ph of result is 8. ReactpHLim = 4 //CatalystFact = 0 - CurveSharpT = 4 - CurveSharppH = 0 - ThermicConstant = 0 - HIonRelease = 0.01 - RateUpLim = 15 + CurveSharpT = 1.5 + CurveSharppH = 3 + ThermicConstant = 7 + HIonRelease = -0.15 + RateUpLim = 4 + PurityMin = 0.5 //Good luck. FermiChem = TRUE diff --git a/modular_citadel/sound/voice/hiss.ogg b/modular_citadel/sound/voice/hiss.ogg index cd9fa22c37..3508f47f13 100644 Binary files a/modular_citadel/sound/voice/hiss.ogg and b/modular_citadel/sound/voice/hiss.ogg differ diff --git a/modular_citadel/sound/voice/meow1.ogg b/modular_citadel/sound/voice/meow1.ogg new file mode 100644 index 0000000000..be9393d7d6 Binary files /dev/null and b/modular_citadel/sound/voice/meow1.ogg differ diff --git a/modular_citadel/sound/voice/purr.ogg b/modular_citadel/sound/voice/purr.ogg new file mode 100644 index 0000000000..d0ea06d9a0 Binary files /dev/null and b/modular_citadel/sound/voice/purr.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 14a6a7cd10..2008f39c3d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -751,6 +751,7 @@ #include "code\game\gamemodes\dynamic\dynamic_rulesets.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_latejoin.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets_minor.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" #include "code\game\gamemodes\dynamic\dynamic_storytellers.dm" #include "code\game\gamemodes\eldritch_cult\eldritch_cult.dm" @@ -1804,6 +1805,7 @@ #include "code\modules\awaymissions\mission_code\caves.dm" #include "code\modules\awaymissions\mission_code\centcomAway.dm" #include "code\modules\awaymissions\mission_code\challenge.dm" +#include "code\modules\awaymissions\mission_code\jungleresort.dm" #include "code\modules\awaymissions\mission_code\moonoutpost19.dm" #include "code\modules\awaymissions\mission_code\murderdome.dm" #include "code\modules\awaymissions\mission_code\research.dm" diff --git a/tgui/packages/tgui/interfaces/Apc.js b/tgui/packages/tgui/interfaces/Apc.js index 60a11789bc..face676282 100644 --- a/tgui/packages/tgui/interfaces/Apc.js +++ b/tgui/packages/tgui/interfaces/Apc.js @@ -211,6 +211,29 @@ const ApcContent = (props, context) => { content={data.nightshiftLights ? 'Enabled' : 'Disabled'} onClick={() => act('toggle_nightshift')} /> )} /> + {data.hijackable === 1 && ( + +