From 4aa1d55abbf33a1468d45c946681d73253d37062 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 27 Oct 2019 16:32:32 +0100 Subject: [PATCH] Porting multi-z support updates. --- _maps/map_files/debug/multiz.dmm | 10142 ++++++++++++++++ _maps/multiz_debug.dm | 1 + _maps/multiz_debug.json | 6 + code/__DEFINES/atmospherics.dm | 2 + code/__DEFINES/components.dm | 1 + code/__DEFINES/is_helpers.dm | 10 + code/__DEFINES/layers.dm | 38 +- code/__DEFINES/maps.dm | 9 +- code/__DEFINES/obj_flags.dm | 1 + code/_globalvars/lists/mapping.dm | 12 +- code/_onclick/hud/plane_master.dm | 22 + code/controllers/subsystem/mapping.dm | 42 +- code/controllers/subsystem/throwing.dm | 5 + code/game/atoms.dm | 11 +- code/game/atoms_movable.dm | 45 + code/game/objects/effects/decals/decal.dm | 2 +- code/game/objects/effects/effects.dm | 3 + code/game/objects/structures/lattice.dm | 1 + code/game/objects/structures/stairs.dm | 125 + code/game/turfs/open.dm | 51 +- code/game/turfs/openspace/openspace.dm | 134 + code/game/turfs/turf.dm | 68 +- .../environmental/LINDA_system.dm | 59 +- .../environmental/LINDA_turf_tile.dm | 3 +- code/modules/atmospherics/multiz.dm | 29 + code/modules/mapping/ruins.dm | 82 +- .../space_management/multiz_helpers.dm | 47 + code/modules/mob/dead/observer/observer.dm | 1 + .../mob/dead/observer/observer_movement.dm | 2 + code/modules/mob/living/living.dm | 10 + code/modules/mob/living/living_movement.dm | 5 +- code/modules/mob/mob_movement.dm | 32 + code/modules/power/gravitygenerator.dm | 44 +- code/modules/power/multiz.dm | 80 + code/modules/power/supermatter/supermatter.dm | 3 + .../chemistry/reagents/food_reagents.dm | 2 +- code/modules/recycling/disposal/multiz.dm | 49 + code/modules/shuttle/shuttle.dm | 3 + config/maps.txt | 3 + icons/obj/atmos.dmi | Bin 29454 -> 29801 bytes icons/obj/atmospherics/pipes/disposal.dmi | Bin 119069 -> 125653 bytes icons/obj/power.dmi | Bin 30865 -> 33196 bytes icons/obj/stairs.dmi | Bin 0 -> 4929 bytes tgstation.dme | 7 + 44 files changed, 11050 insertions(+), 142 deletions(-) create mode 100644 _maps/map_files/debug/multiz.dmm create mode 100644 _maps/multiz_debug.dm create mode 100644 _maps/multiz_debug.json create mode 100644 code/game/objects/structures/stairs.dm create mode 100644 code/game/turfs/openspace/openspace.dm create mode 100644 code/modules/atmospherics/multiz.dm create mode 100644 code/modules/mapping/space_management/multiz_helpers.dm create mode 100644 code/modules/mob/dead/observer/observer_movement.dm create mode 100644 code/modules/power/multiz.dm create mode 100644 code/modules/recycling/disposal/multiz.dm create mode 100644 icons/obj/stairs.dmi diff --git a/_maps/map_files/debug/multiz.dmm b/_maps/map_files/debug/multiz.dmm new file mode 100644 index 0000000000..43d06e57e1 --- /dev/null +++ b/_maps/map_files/debug/multiz.dmm @@ -0,0 +1,10142 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/open/space/basic, +/area/space) +"ab" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) +"ac" = ( +/turf/open/space, +/area/space/nearstation) +"ad" = ( +/turf/closed/wall/r_wall, +/area/maintenance/department/bridge) +"ae" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) +"af" = ( +/turf/open/floor/plating, +/area/maintenance/department/bridge) +"ag" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"ah" = ( +/turf/closed/wall/r_wall, +/area/engine/atmos) +"ai" = ( +/obj/machinery/power/rtg/advanced, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aj" = ( +/turf/closed/wall/r_wall, +/area/engine/engineering) +"ak" = ( +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"al" = ( +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/obj/structure/closet/secure_closet/atmospherics, +/turf/open/floor/plating, +/area/engine/atmos) +"am" = ( +/obj/machinery/atmospherics/components/unary/tank/air, +/turf/open/floor/plating, +/area/engine/atmos) +"an" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/space, +/area/space/nearstation) +"ao" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/space, +/area/space/nearstation) +"ap" = ( +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aq" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ar" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/plasteel, +/area/engine/engineering) +"as" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"at" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Gravity Generator APC"; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"au" = ( +/turf/open/openspace, +/area/security) +"av" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/openspace, +/area/security) +"aw" = ( +/turf/open/floor/plating, +/area/engine/atmos) +"ax" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"ay" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/engine/atmos) +"az" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/engine/atmos) +"aA" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/space, +/area/space/nearstation) +"aB" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/space, +/area/space/nearstation) +"aC" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/openspace, +/area/security) +"aD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aG" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aI" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"aJ" = ( +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/engine/gravity_generator) +"aK" = ( +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/engine/gravity_generator) +"aL" = ( +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/engine/gravity_generator) +"aM" = ( +/obj/machinery/suit_storage_unit/ce, +/turf/open/floor/plating, +/area/engine/atmos) +"aN" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/engine/atmos) +"aO" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"aP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"aQ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/space, +/area/space/nearstation) +"aR" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/space/nearstation) +"aS" = ( +/obj/structure/table, +/obj/item/flashlight{ + pixel_y = 5 + }, +/obj/item/airlock_painter, +/turf/open/floor/plating, +/area/engine/engineering) +"aT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aW" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aX" = ( +/obj/machinery/gravity_generator/main/station, +/turf/open/openspace, +/area/security) +"aY" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aZ" = ( +/obj/structure/tank_dispenser{ + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"ba" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plating, +/area/engine/atmos) +"bb" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/engine/atmos) +"bc" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bd" = ( +/obj/structure/table, +/obj/item/weldingtool/experimental, +/turf/open/floor/plating, +/area/engine/engineering) +"be" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bf" = ( +/obj/structure/closet/secure_closet/engineering_chief, +/turf/open/floor/plating, +/area/engine/engineering) +"bg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bi" = ( +/obj/machinery/gravity_generator/main/station, +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/engine/gravity_generator) +"bj" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light, +/obj/structure/table, +/obj/item/analyzer, +/obj/item/wrench, +/turf/open/floor/plating, +/area/engine/atmos) +"bk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"bl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/engine/atmos) +"bm" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"bn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/light, +/turf/open/floor/plating, +/area/engine/atmos) +"bo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/table, +/obj/item/screwdriver/power, +/obj/item/wirecutters/power, +/turf/open/floor/plating, +/area/engine/engineering) +"bp" = ( +/obj/machinery/light, +/obj/item/storage/box/lights/mixed, +/obj/item/lightreplacer, +/turf/open/floor/plating, +/area/engine/engineering) +"bq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"br" = ( +/obj/structure/closet/radiation, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"bs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/hallway/primary/central) +"bt" = ( +/obj/machinery/door/airlock, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bu" = ( +/turf/closed/wall/r_wall, +/area/bridge) +"bv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/bridge) +"bw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"bx" = ( +/obj/machinery/door/airlock, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"by" = ( +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"bz" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/bridge) +"bA" = ( +/turf/closed/wall/r_wall, +/area/hallway/primary/central) +"bB" = ( +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/obj/structure/closet/jcloset, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bE" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bF" = ( +/obj/structure/closet/secure_closet/CMO, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bG" = ( +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/closet/secure_closet/captains, +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/bridge) +"bH" = ( +/obj/structure/table, +/obj/item/ammo_box/c10mm, +/obj/item/gun/ballistic, +/turf/open/floor/plasteel, +/area/bridge) +"bI" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/bridge) +"bJ" = ( +/obj/structure/table, +/obj/item/card/id/captains_spare, +/turf/open/floor/plasteel, +/area/bridge) +"bK" = ( +/obj/structure/table, +/obj/item/storage/backpack/holding, +/turf/open/floor/plasteel, +/area/bridge) +"bL" = ( +/obj/structure/table, +/obj/item/rcd_ammo/large, +/obj/item/rcd_ammo/large, +/obj/item/rcd_ammo/large, +/obj/item/construction/rcd, +/turf/open/floor/plasteel, +/area/bridge) +"bM" = ( +/obj/structure/closet/secure_closet/hop, +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/bridge) +"bN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bP" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bQ" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bR" = ( +/obj/machinery/vending/cola, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bS" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bT" = ( +/obj/machinery/computer/arcade, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"bU" = ( +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/closet/firecloset/full, +/turf/open/floor/plasteel{ + dir = 9 + }, +/area/hallway/secondary/entry) +"bV" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/hallway/secondary/entry) +"bW" = ( +/obj/structure/closet/secure_closet/hos, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/hallway/secondary/entry) +"bX" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/hallway/secondary/entry) +"bY" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/department/bridge) +"bZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/central) +"ca" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cd" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/bridge) +"ce" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/bridge) +"cf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/bridge) +"cg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/bridge) +"ch" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/bridge) +"ci" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"ck" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"cl" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/hallway/secondary/entry) +"cn" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"co" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cp" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel{ + dir = 10 + }, +/area/bridge) +"cr" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 6 + }, +/area/bridge) +"cs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/bridge) +"ct" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/bridge) +"cw" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plasteel, +/area/bridge) +"cx" = ( +/obj/machinery/door/airlock/glass, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"cy" = ( +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/hallway/secondary/entry) +"cz" = ( +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"cA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/hallway/primary/central) +"cC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central) +"cD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central) +"cE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central) +"cF" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"cH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/hallway/secondary/entry) +"cI" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/hallway/secondary/entry) +"cJ" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/plasteel{ + dir = 10 + }, +/area/hallway/secondary/entry) +"cK" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/rods/fifty, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"cL" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"cM" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/regular, +/obj/item/healthanalyzer, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"cN" = ( +/turf/closed/wall/r_wall, +/area/construction) +"cO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/construction) +"cP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/construction) +"cQ" = ( +/obj/machinery/door/airlock/glass, +/turf/open/floor/plasteel, +/area/construction) +"cR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/construction) +"cS" = ( +/turf/closed/wall/r_wall, +/area/storage/primary) +"cT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/storage/primary) +"cU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/storage/primary) +"cV" = ( +/obj/machinery/door/airlock/glass, +/turf/open/floor/plasteel, +/area/storage/primary) +"cW" = ( +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel, +/area/construction) +"cX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/construction) +"cY" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/construction) +"cZ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/ladder, +/turf/open/floor/plasteel, +/area/construction) +"da" = ( +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/obj/machinery/power/apc{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"db" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dd" = ( +/turf/open/floor/plasteel{ + icon_state = "L1" + }, +/area/storage/primary) +"de" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"df" = ( +/turf/open/floor/plasteel{ + icon_state = "L5" + }, +/area/storage/primary) +"dg" = ( +/turf/open/floor/plasteel{ + icon_state = "L7" + }, +/area/storage/primary) +"dh" = ( +/turf/open/floor/plasteel{ + icon_state = "L9" + }, +/area/storage/primary) +"dj" = ( +/turf/open/floor/plasteel{ + icon_state = "L13" + }, +/area/storage/primary) +"dk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dl" = ( +/turf/open/floor/plating, +/area/storage/primary) +"dm" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"dn" = ( +/turf/open/floor/plating, +/area/construction) +"do" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction) +"dp" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/storage/primary) +"dq" = ( +/turf/open/floor/plasteel{ + icon_state = "L2" + }, +/area/storage/primary) +"dr" = ( +/turf/open/floor/plasteel{ + icon_state = "L4" + }, +/area/storage/primary) +"ds" = ( +/turf/open/floor/plasteel{ + icon_state = "L6" + }, +/area/storage/primary) +"dt" = ( +/turf/open/floor/plasteel{ + icon_state = "L8" + }, +/area/storage/primary) +"du" = ( +/turf/open/floor/plasteel{ + icon_state = "L10" + }, +/area/storage/primary) +"dv" = ( +/turf/open/floor/plasteel{ + icon_state = "L12" + }, +/area/storage/primary) +"dw" = ( +/turf/open/floor/plasteel{ + icon_state = "L14" + }, +/area/storage/primary) +"dx" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/primary) +"dy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"dz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction) +"dA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dB" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/storage/primary) +"dC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dG" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"dH" = ( +/obj/effect/landmark/start, +/turf/open/floor/plasteel, +/area/storage/primary) +"dI" = ( +/obj/effect/landmark/latejoin, +/turf/open/floor/plasteel, +/area/storage/primary) +"dJ" = ( +/turf/open/floor/plasteel, +/area/storage/primary) +"dK" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction) +"dL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction) +"dM" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"dN" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/storage/primary) +"dO" = ( +/obj/structure/table, +/obj/machinery/light, +/obj/item/twohanded/fireaxe, +/obj/item/extinguisher, +/turf/open/floor/plasteel, +/area/storage/primary) +"dP" = ( +/obj/structure/table, +/obj/item/lightreplacer, +/turf/open/floor/plasteel, +/area/storage/primary) +"dQ" = ( +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/obj/item/storage/box/lights/tubes, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/storage/primary) +"dR" = ( +/obj/structure/table, +/obj/item/flashlight{ + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"dS" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"dV" = ( +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"dW" = ( +/turf/open/floor/plasteel, +/area/engine/engineering) +"dX" = ( +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/engine/atmos) +"dY" = ( +/turf/open/floor/plasteel, +/area/engine/atmos) +"dZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ea" = ( +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/bridge) +"eb" = ( +/turf/open/floor/plasteel, +/area/bridge) +"ec" = ( +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/bridge) +"ed" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/engine/atmos) +"ee" = ( +/turf/open/floor/plasteel{ + dir = 9 + }, +/area/hallway/secondary/entry) +"ef" = ( +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/hallway/secondary/entry) +"eg" = ( +/turf/open/floor/plating, +/area/hallway/primary/central) +"eh" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 10 + }, +/area/bridge) +"ei" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6 + }, +/area/bridge) +"ej" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"ek" = ( +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/hallway/primary/central) +"em" = ( +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/hallway/primary/central) +"en" = ( +/turf/open/floor/plasteel{ + dir = 10 + }, +/area/hallway/secondary/entry) +"eo" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"ep" = ( +/turf/open/floor/plasteel, +/area/construction) +"eq" = ( +/turf/open/floor/plasteel{ + icon_state = "L3" + }, +/area/storage/primary) +"er" = ( +/turf/open/floor/plasteel{ + icon_state = "L11" + }, +/area/storage/primary) +"es" = ( +/obj/effect/turf_decal/stripes/asteroid/corner, +/turf/open/floor/plasteel, +/area/construction) +"et" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"eu" = ( +/obj/effect/turf_decal/stripes/asteroid/line, +/turf/open/floor/plasteel, +/area/construction) +"ev" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"ew" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"ex" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/primary) +"ey" = ( +/obj/effect/turf_decal/stripes/asteroid/corner{ + dir = 1 + }, +/obj/structure/ladder, +/turf/open/floor/plasteel, +/area/construction) +"ez" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8 + }, +/area/hallway/secondary/entry) +"eC" = ( +/turf/open/openspace, +/area/maintenance/department/bridge) +"eD" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/engine/engineering) +"eE" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/atmos) +"eF" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"eG" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"eH" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction) +"eI" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"eJ" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction) +"eK" = ( +/obj/effect/turf_decal/stripes/asteroid/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/construction) +"eL" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction) +"eM" = ( +/obj/effect/turf_decal/stripes/asteroid/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction) +"eN" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"eO" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/bridge) +"eP" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eQ" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eR" = ( +/obj/effect/turf_decal/stripes/asteroid/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/asteroid/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eS" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eT" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eU" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eV" = ( +/obj/structure/ladder, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eW" = ( +/obj/effect/turf_decal/stripes/asteroid/line, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eX" = ( +/obj/effect/turf_decal/stripes/asteroid/line, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eY" = ( +/obj/effect/turf_decal/stripes/asteroid/line, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"fk" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction) +"fn" = ( +/turf/closed/wall/r_wall, +/area/space) +"fo" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/obj/machinery/door/airlock/external/glass, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"og" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/ladder, +/turf/open/floor/plasteel, +/area/construction) +"oh" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"on" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"oA" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/bridge) +"oJ" = ( +/obj/effect/turf_decal/stripes/asteroid/line, +/turf/open/floor/plating, +/area/maintenance/department/bridge) +"ux" = ( +/obj/structure/ladder, +/turf/open/floor/plasteel, +/area/security) +"yl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"Bm" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary) +"CA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"Dm" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/department/bridge) +"Fz" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/asteroid/line, +/turf/open/floor/plasteel, +/area/security) +"Hn" = ( +/obj/effect/turf_decal/stripes/asteroid/line, +/obj/structure/ladder, +/turf/open/floor/plasteel, +/area/construction) +"Jz" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security) +"Kd" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"Kq" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security) +"KL" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security) +"KM" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/bridge) +"LW" = ( +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"ME" = ( +/obj/machinery/light, +/turf/open/floor/plating, +/area/maintenance/department/bridge) +"Pl" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/asteroid/line, +/turf/open/floor/plasteel, +/area/security) +"Uc" = ( +/obj/effect/turf_decal/stripes/asteroid/line, +/turf/open/floor/plasteel, +/area/security) +"WC" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security) +"YD" = ( +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(8,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(10,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(11,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bY +bY +bY +bY +bY +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(12,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +af +af +af +af +af +af +af +bz +af +af +af +af +af +bz +af +af +af +af +af +bz +af +af +af +af +af +af +af +bz +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(13,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ah +ah +ah +ah +ah +ah +ah +bA +bZ +bZ +bZ +bZ +bZ +bA +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(14,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ah +al +aw +aM +aZ +bj +bs +bB +ca +bO +bO +bO +bO +bO +cO +cW +dm +dy +dy +dy +dy +dy +dy +dy +dy +dm +dK +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(15,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +Dm +ah +am +ax +aw +ba +bk +bt +bC +cb +bN +bN +bC +bN +bN +cP +cX +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ah +am +ay +aN +bb +bl +ah +bD +cc +bE +bE +cA +bE +bE +cQ +cY +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(17,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ah +am +ay +aO +bc +bm +ah +bE +cc +bE +bE +cA +bE +bE +cQ +cY +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ah +am +az +aP +aP +bn +ah +bF +cc +co +bE +cA +bE +bE +cN +cY +dn +dn +dn +dn +cN +cN +cN +dn +dn +dn +dL +cN +ME +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +ad +ah +ah +ah +ah +ah +ah +bu +bu +cd +bu +bu +cB +bE +bE +cR +cY +dn +dn +dn +dn +cN +fk +cN +dn +dn +dn +dL +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ae +ag +ag +ag +ag +ag +ag +ag +bu +bG +ce +cp +cv +cC +bE +bE +cR +og +dn +dn +dn +dn +cN +dn +cN +dn +dn +dn +dL +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ae +ag +ai +an +ai +aQ +ai +ag +bv +bH +cf +eb +bv +cD +bE +bE +cR +cY +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ae +ag +ai +ao +aA +aR +ai +ag +bv +bI +cf +eb +bu +cD +bE +bE +cN +cY +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ae +ag +ag +ag +aB +ag +ag +ag +bv +bJ +cf +eb +cw +cD +bE +bE +cQ +cY +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ae +ac +ac +ag +aB +ag +ac +ac +bv +bK +cf +eb +bu +cD +bE +bE +cQ +cY +dn +dn +dn +dn +dn +dn +dn +dn +dn +dn +dL +cN +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ae +ac +ac +aj +dZ +aj +ac +ac +bv +bL +cf +eb +bv +cD +bE +bE +cN +cZ +do +dz +dz +dz +dz +dz +dz +dz +dz +do +dM +cN +ME +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(26,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ae +ac +ac +aj +aD +aj +ac +ac +bu +bM +cg +cr +bu +cD +bE +bE +cS +cS +cS +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +cS +cS +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(27,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +ad +aj +aj +CA +aj +aj +aj +bu +bu +ch +cs +cs +cE +bO +bO +cT +da +on +dA +dl +dl +dl +dl +dl +dl +dl +dp +dl +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +aj +ap +yl +aS +bd +bo +bw +bN +ci +ct +bN +cF +bN +bN +cU +db +dJ +dB +dl +dl +dl +dl +dl +dl +dl +dl +dl +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +aj +aq +aE +aT +be +be +bx +bO +cj +bE +bE +cA +bE +bE +cS +dJ +dJ +dB +dl +dD +dc +dc +dA +dl +dD +dc +dc +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +aj +ar +dW +yl +bf +bp +aj +bP +cc +bE +bE +cA +bE +bE +cS +dJ +dJ +dB +dl +dE +dH +dI +dB +dl +dE +dJ +dN +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(31,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +Dm +ak +ak +ak +aU +ak +ak +ak +bQ +cc +bE +bE +cA +bE +bE +cS +de +dJ +dB +dl +dE +dH +dI +dB +dl +dE +dJ +dO +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(32,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ak +as +aG +aV +bg +bq +ak +bR +cc +bE +bE +cA +bE +bE +cV +dJ +dJ +dB +dl +dE +dH +dI +dB +dl +dE +dJ +dN +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(33,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ak +at +aH +aW +bh +br +ak +bS +cc +bE +bE +cA +bE +bE +cV +dJ +dJ +dB +dl +dE +dH +dI +dB +dl +dE +dJ +dN +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(34,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ak +aI +aI +dV +aI +aI +ak +bT +cc +co +bE +cA +bE +bE +cV +dJ +dJ +dB +dl +dE +dH +dI +dB +dl +dE +dJ +dP +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(35,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ak +dV +dV +dV +dV +dV +by +by +ck +by +cx +cG +by +by +by +de +dJ +dB +dl +dE +dH +dI +dB +cS +dE +dJ +dQ +cS +ME +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(36,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ak +dV +aJ +aK +aL +dV +by +bU +cl +cy +cy +cH +cI +cJ +by +dJ +dJ +dB +dl +dE +dH +dI +dB +dl +dE +dJ +dR +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(37,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +Dm +ak +dV +aK +dV +bi +dV +by +bV +eo +eo +eo +eo +eo +cK +by +dJ +dJ +dB +dl +dF +dk +dk +dC +dl +dF +dk +dk +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(38,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ak +dV +aL +aK +aJ +dV +by +bW +eo +eo +eo +eo +eo +cL +by +dJ +dJ +dB +dl +dl +dl +dl +dl +dl +dl +dl +dl +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(39,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ak +dV +dV +aY +dV +dV +by +bX +eo +eo +cy +eo +eo +cM +by +dk +Bm +dC +dl +dl +dl +dl +dl +dl +dl +dx +dl +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(40,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +ak +ak +ak +ak +ak +ak +by +by +cn +by +oh +by +cn +by +by +cS +cS +cS +cS +cS +cS +cS +cS +cS +cS +cS +cS +cS +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(41,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +af +oA +af +af +af +af +oA +af +af +af +by +LW +by +af +af +af +oA +af +af +af +af +oA +af +af +af +af +oA +af +af +af +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(42,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +by +Kd +by +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(43,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(44,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(45,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(46,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(47,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(48,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(49,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(50,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(51,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(52,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} + +(1,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(4,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(7,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(8,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(9,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(10,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(11,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bY +bY +bY +bY +bY +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(12,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +af +af +af +af +af +af +af +bz +af +af +af +af +af +bz +af +af +af +af +bz +af +af +af +af +bz +af +af +af +af +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(13,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ah +ah +ah +ah +ah +ah +ah +bA +eg +eg +eg +eg +eg +bA +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(14,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +Dm +ah +aw +aw +eE +aw +dY +bA +bE +bE +bE +bE +bE +bE +bE +cN +es +eI +eI +eI +eI +eI +eI +eI +eI +eI +eI +eK +cN +ME +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(15,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ah +aw +aw +aw +dY +dY +dY +bE +bE +bE +bE +bE +bE +bE +cN +eu +au +au +au +au +au +au +au +au +au +au +eL +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(16,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ah +aw +aw +dX +dX +dY +dY +bE +bE +bE +bE +bE +bE +bE +ep +eu +au +au +au +au +au +au +au +au +au +au +eL +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(17,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ah +aw +dY +dY +dY +dY +dY +bE +bE +bE +bE +bE +bE +bE +ep +eu +au +au +au +au +au +au +au +au +au +au +eL +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(18,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ah +dY +dY +dY +dY +dY +ah +bE +bE +co +bE +bE +bE +bE +ep +eu +au +au +au +au +cN +cN +cN +au +au +au +eL +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(19,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +ad +ah +eF +ed +ed +eF +ah +bu +bu +bv +bu +bu +ek +bE +bE +ep +eu +au +au +au +au +au +av +au +au +au +au +eL +cN +ME +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(20,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +bu +ea +ea +eh +bu +em +bE +bE +ep +Hn +au +au +au +au +au +au +au +au +au +au +eL +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(21,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +bv +eb +eb +eb +bv +em +bE +bE +ep +eu +au +au +au +au +au +au +au +au +au +au +eL +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(22,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +eO +eb +eb +eb +eb +em +bE +bE +ep +eu +au +au +au +au +au +au +au +au +au +au +eL +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(23,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +eO +eb +eb +eb +eb +em +bE +bE +ep +eu +au +au +au +au +au +au +au +au +au +au +eL +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(24,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +eO +eb +eb +eb +eb +em +bE +bE +ep +eu +au +au +au +au +au +au +au +au +au +au +eL +cN +ME +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(25,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +bv +eb +eb +eb +bv +em +bE +bE +et +ey +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eJ +eH +eM +cN +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(26,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +bu +ec +ec +ei +bu +em +bE +bE +cS +dJ +dJ +dJ +dJ +dJ +dJ +dJ +cS +cS +cS +cS +cS +cS +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(27,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +ad +aj +eG +eD +eD +eG +aj +bu +bu +bv +bu +bu +em +bE +bE +ev +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +ev +dJ +cS +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(28,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +aj +dW +dW +dW +dW +dW +aj +bE +bE +ej +bE +bE +bE +bE +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +cS +af +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(29,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +aj +dW +dW +dW +dW +dW +dW +bE +bE +bE +bE +bE +bE +bE +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +dJ +cS +ME +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(30,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +aj +dW +eN +dW +dW +dW +dW +bE +bE +bE +bE +bE +bE +bE +dJ +dd +dq +dJ +ex +ex +ex +ex +ex +ex +ex +ex +ex +cS +KM +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(31,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ak +dV +ak +dV +dV +dV +dV +bE +bE +bE +bE +bE +bE +bE +dJ +eq +dr +dJ +ex +au +au +au +au +au +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(32,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +Dm +ak +dV +dV +dV +dV +dV +dV +bE +bE +bE +bE +bE +bE +bE +dJ +df +ds +dJ +ex +au +au +au +au +au +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(33,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ak +dV +dV +dV +dV +dV +ak +bE +bE +bE +bE +bE +bE +bE +dJ +dg +dt +dJ +ex +au +au +au +au +au +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(34,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ak +dV +dV +dV +dV +dV +ak +bE +bE +co +bE +bE +bE +bE +dJ +dh +du +dJ +ex +au +au +au +au +au +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(35,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ak +dV +dV +dV +dV +dV +by +by +by +by +eo +by +by +by +by +er +dv +dJ +ex +au +au +au +aC +cS +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(36,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ak +dV +aJ +aK +aL +dV +by +ee +cy +ez +cy +cy +cy +en +by +dj +dw +dJ +ex +au +au +au +au +au +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(37,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ak +dV +aK +dV +bi +dV +by +ef +eo +eo +eo +eo +eo +eo +by +dJ +dJ +dJ +ex +au +au +au +au +au +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(38,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +Dm +ak +dV +aL +aK +aJ +dV +by +ef +eo +eo +eo +eo +eo +eo +by +dJ +dJ +dJ +ex +au +au +au +au +au +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(39,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ak +dV +dV +aY +dV +dV +by +ef +eo +eo +cy +eo +eo +eo +by +dJ +ew +dJ +ex +au +au +au +au +au +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(40,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +ak +ak +ak +ak +ak +ak +by +by +cz +by +by +by +cz +by +by +cS +cS +cS +cS +au +au +au +au +au +au +au +au +au +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(41,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +af +oA +af +af +af +af +oA +af +af +af +by +cz +by +oA +af +af +af +oA +af +oJ +eC +eC +eC +eC +eC +eC +eC +eC +eC +eC +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(42,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +by +by +by +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(43,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(44,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(45,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(46,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(47,1,2) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(48,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(49,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(50,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(51,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(52,1,2) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} + +(1,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(4,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(7,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(8,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(9,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(10,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(11,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(12,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(13,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(14,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(15,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(16,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(17,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(18,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(19,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +fn +fn +fn +fn +fn +fn +fn +fn +au +au +au +au +au +au +au +Kq +YD +Fz +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(20,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +fn +au +au +au +au +au +au +au +Jz +ux +Uc +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(21,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +fn +au +au +au +au +au +au +au +KL +WC +Pl +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(22,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(23,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +fn +au +au +au +au +eP +eT +eT +eT +eT +eT +eW +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(24,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +fn +au +au +au +au +eQ +bE +bE +bE +bE +bE +eX +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(25,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +fn +au +au +au +au +eQ +bE +bE +co +eV +bE +eX +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(26,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +dG +fo +dS +dS +dS +dS +eR +bE +bE +bA +bE +bE +eX +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(27,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +fn +fn +fn +fn +fn +fn +fn +fn +au +au +au +au +eQ +bE +bE +ej +bE +bE +eX +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(28,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +eQ +bE +bE +bE +bE +bE +eX +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(29,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +eS +eU +eU +eU +eU +eU +eY +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(30,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(31,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(32,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(33,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(34,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(35,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(36,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(37,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(38,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(39,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(40,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(41,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(42,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +fn +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(43,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(44,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(45,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +aX +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(46,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(47,1,3) = {" +aa +aa +aa +aa +aa +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +au +aa +aa +aa +aa +aa +"} +(48,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(49,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(50,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(51,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(52,1,3) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/multiz_debug.dm b/_maps/multiz_debug.dm new file mode 100644 index 0000000000..0521fef59d --- /dev/null +++ b/_maps/multiz_debug.dm @@ -0,0 +1 @@ +#define FORCE_MAP "_maps/multiz_debug.json" \ No newline at end of file diff --git a/_maps/multiz_debug.json b/_maps/multiz_debug.json new file mode 100644 index 0000000000..7e39981e23 --- /dev/null +++ b/_maps/multiz_debug.json @@ -0,0 +1,6 @@ +{ + "map_name": "MultiZ Debug", + "map_path": "map_files/debug", + "map_file": "multiz.dmm", + "traits": [{"Up": 1}, {"Up": 1, "Down": -1}, {"Down": -1}] + } diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 928837979c..f73a74ab19 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -143,7 +143,9 @@ #define ATMOS_PASS_NO 0 #define ATMOS_PASS_PROC -1 //ask CanAtmosPass() #define ATMOS_PASS_DENSITY -2 //just check density + #define CANATMOSPASS(A, O) ( A.CanAtmosPass == ATMOS_PASS_PROC ? A.CanAtmosPass(O) : ( A.CanAtmosPass == ATMOS_PASS_DENSITY ? !A.density : A.CanAtmosPass ) ) +#define CANVERTICALATMOSPASS(A, O) ( A.CanAtmosPassVertical == ATMOS_PASS_PROC ? A.CanAtmosPass(O, TRUE) : ( A.CanAtmosPassVertical == ATMOS_PASS_DENSITY ? !A.density : A.CanAtmosPassVertical ) ) //LAVALAND #define LAVALAND_EQUIPMENT_EFFECT_PRESSURE 50 //what pressure you have to be under to increase the effect of equipment meant for lavaland diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index e33d42df64..e054ec44f3 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -98,6 +98,7 @@ // /turf signals #define COMSIG_TURF_CHANGE "turf_change" //from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps) #define COMSIG_TURF_HAS_GRAVITY "turf_has_gravity" //from base of atom/has_gravity(): (atom/asker, list/forced_gravities) +#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new" //from base of turf/New(): (turf/source, direction) // /atom/movable signals #define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 9f69da0154..5683ee52ea 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -13,6 +13,16 @@ //Turfs //#define isturf(A) (istype(A, /turf)) This is actually a byond built-in. Added here for completeness sake. +GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( + /turf/open/space, + /turf/open/chasm, + /turf/open/lava, + /turf/open/water, + /turf/open/openspace + ))) + +#define isgroundlessturf(A) (is_type_in_typecache(A, GLOB.turfs_without_ground)) + #define isopenturf(A) (istype(A, /turf/open)) #define isindestructiblefloor(A) (istype(A, /turf/open/indestructible)) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 5e903997e4..e0a22667ac 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -9,6 +9,7 @@ #define FLOOR_PLANE -2 #define GAME_PLANE -1 #define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals + #define SPACE_LAYER 1.8 //#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define #define MID_TURF_LAYER 2.02 @@ -83,25 +84,28 @@ #define ABOVE_LIGHTING_PLANE 16 #define ABOVE_LIGHTING_LAYER 16 -#define BYOND_LIGHTING_PLANE 17 -#define BYOND_LIGHTING_LAYER 17 +#define FLOOR_OPENSPACE_PLANE 17 +#define OPENSPACE_LAYER 17 -#define CAMERA_STATIC_PLANE 18 -#define CAMERA_STATIC_LAYER 18 +#define BYOND_LIGHTING_PLANE 18 +#define BYOND_LIGHTING_LAYER 18 + +#define CAMERA_STATIC_PLANE 19 +#define CAMERA_STATIC_LAYER 19 //HUD layer defines -#define FULLSCREEN_PLANE 19 -#define FLASH_LAYER 19 -#define FULLSCREEN_LAYER 19.1 -#define UI_DAMAGE_LAYER 19.2 -#define BLIND_LAYER 19.3 -#define CRIT_LAYER 19.4 -#define CURSE_LAYER 19.5 +#define FULLSCREEN_PLANE 20 +#define FLASH_LAYER 20 +#define FULLSCREEN_LAYER 20.1 +#define UI_DAMAGE_LAYER 20.2 +#define BLIND_LAYER 20.3 +#define CRIT_LAYER 20.4 +#define CURSE_LAYER 20.5 -#define HUD_PLANE 20 -#define HUD_LAYER 20 -#define ABOVE_HUD_PLANE 21 -#define ABOVE_HUD_LAYER 21 +#define HUD_PLANE 21 +#define HUD_LAYER 21 +#define ABOVE_HUD_PLANE 22 +#define ABOVE_HUD_LAYER 22 -#define SPLASHSCREEN_LAYER 22 -#define SPLASHSCREEN_PLANE 22 +#define SPLASHSCREEN_LAYER 23 +#define SPLASHSCREEN_PLANE 23 diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 179f501fd1..096b3c19f7 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -37,6 +37,7 @@ require only minor tweaks. #define ZTRAIT_AWAY "Away Mission" #define ZTRAIT_SPACE_RUINS "Space Ruins" #define ZTRAIT_LAVA_RUINS "Lava Ruins" +#define ZTRAIT_ISOLATED_RUINS "Isolated Ruins" //Placing ruins on z levels with this trait will use turf reservation instead of usual placement. // prevents certain turfs from being stripped by a singularity #define ZTRAIT_PLANET "Planet" @@ -89,6 +90,8 @@ require only minor tweaks. #define PLACEMENT_TRIES 100 //How many times we try to fit the ruin somewhere until giving up (really should just swap to some packing algo) #define PLACE_DEFAULT "random" -#define PLACE_SAME_Z "same" -#define PLACE_SPACE_RUIN "space" -#define PLACE_LAVA_RUIN "lavaland" +#define PLACE_SAME_Z "same" //On same z level as original ruin +#define PLACE_SPACE_RUIN "space" //On space ruin z level(s) +#define PLACE_LAVA_RUIN "lavaland" //On lavaland ruin z levels(s) +#define PLACE_BELOW "below" //On z levl below - centered on same tile +#define PLACE_ISOLATED "isolated" //On isolated ruin z level diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 1917d73a1b..8d00836345 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -11,6 +11,7 @@ #define USES_TGUI (1<<7) //put on things that use tgui on ui_interact instead of custom/old UI. #define FROZEN (1<<8) #define SHOVABLE_ONTO (1<<9) //called on turf.shove_act() to consider whether an object should have a niche effect (defined in their own shove_act()) when someone is pushed onto it, or do a sanity CanPass() check. +#define BLOCK_Z_FALL (1<<10) // If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index 0cb61949a0..f0479cd8aa 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -1,6 +1,16 @@ GLOBAL_LIST_INIT(cardinals, list(NORTH, SOUTH, EAST, WEST)) -GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) +GLOBAL_LIST_INIT(cardinals_multiz, list(NORTH, SOUTH, EAST, WEST, UP, DOWN)) GLOBAL_LIST_INIT(diagonals, list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) +GLOBAL_LIST_INIT(corners_multiz, list(UP|NORTHEAST, UP|NORTHWEST, UP|SOUTHEAST, UP|SOUTHWEST, DOWN|NORTHEAST, DOWN|NORTHWEST, DOWN|SOUTHEAST, DOWN|SOUTHWEST)) +GLOBAL_LIST_INIT(diagonals_multiz, list( + NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST, + UP|NORTH, UP|SOUTH, UP|EAST, UP|WEST, UP|NORTHEAST, UP|NORTHWEST, UP|SOUTHEAST, UP|SOUTHWEST, + DOWN|NORTH, DOWN|SOUTH, DOWN|EAST, DOWN|WEST, DOWN|NORTHEAST, DOWN|NORTHWEST, DOWN|SOUTHEAST, DOWN|SOUTHWEST)) +GLOBAL_LIST_INIT(alldirs_multiz, list( + NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST, + UP, UP|NORTH, UP|SOUTH, UP|EAST, UP|WEST, UP|NORTHEAST, UP|NORTHWEST, UP|SOUTHEAST, UP|SOUTHWEST, + DOWN, DOWN|NORTH, DOWN|SOUTH, DOWN|EAST, DOWN|WEST, DOWN|NORTHEAST, DOWN|NORTHWEST, DOWN|SOUTHEAST, DOWN|SOUTHWEST)) +GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) GLOBAL_LIST_EMPTY(landmarks_list) //list of all landmarks created GLOBAL_LIST_EMPTY(start_landmarks_list) //list of all spawn points created diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm index 8ee837a202..9dc23a5861 100644 --- a/code/_onclick/hud/plane_master.dm +++ b/code/_onclick/hud/plane_master.dm @@ -16,6 +16,28 @@ //Trust me, you need one. Period. If you don't think you do, you're doing something extremely wrong. /obj/screen/plane_master/proc/backdrop(mob/mymob) +/obj/screen/plane_master/openspace + name = "open space plane master" + plane = FLOOR_OPENSPACE_PLANE + appearance_flags = PLANE_MASTER + blend_mode = BLEND_MULTIPLY + alpha = 255 + +/obj/screen/plane_master/openspace/backdrop(mob/mymob) + filters = list() + filters += filter(type = "drop_shadow", color = "#04080FAA", border = 5, size = -10) + filters += filter(type = "drop_shadow", color = "#04080FAA", border = 5, size = -15) + filters += filter(type = "drop_shadow", color = "#04080FAA", border = 5, size = -20) + +/obj/screen/plane_master/proc/outline(_size, _color) + filters += filter(type = "outline", size = _size, color = _color) + +/obj/screen/plane_master/proc/shadow(_size, _border, _offset = 0, _x = 0, _y = 0, _color = "#04080FAA") + filters += filter(type = "drop_shadow", x = _x, y = _y, color = _color, size = _size, offset = _offset, border = _border) + +/obj/screen/plane_master/proc/clear_filters() + filters = list() + /obj/screen/plane_master/floor name = "floor plane master" plane = FLOOR_PLANE diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 345e3bb44c..dc30d54d24 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -14,6 +14,7 @@ SUBSYSTEM_DEF(mapping) var/list/ruins_templates = list() var/list/space_ruins_templates = list() var/list/lava_ruins_templates = list() + var/datum/space_level/isolated_ruins_z //Created on demand during ruin loading. var/list/shuttle_templates = list() var/list/shelter_templates = list() @@ -25,6 +26,7 @@ SUBSYSTEM_DEF(mapping) var/list/datum/turf_reservations //list of turf reservations var/list/used_turfs = list() //list of turf = datum/turf_reservation + var/list/reservation_ready = list() var/clearing_reserved_turfs = FALSE // Z-manager stuff @@ -93,7 +95,7 @@ SUBSYSTEM_DEF(mapping) // Set up Z-level transitions. setup_map_transitions() generate_station_area_list() - initialize_reserved_level() + initialize_reserved_level(transit.z_value) return ..() /* Nuke threats, for making the blue tiles on the station go RED @@ -440,7 +442,7 @@ GLOBAL_LIST_EMPTY(the_station_areas) GLOB.the_gateway.wait = world.time /datum/controller/subsystem/mapping/proc/RequestBlockReservation(width, height, z, type = /datum/turf_reservation, turf_type_override, border_type_override) - UNTIL(initialized && !clearing_reserved_turfs) + UNTIL(reservation_ready["[z]"] && !clearing_reserved_turfs) var/datum/turf_reservation/reserve = new type if(turf_type_override) reserve.turf_type = turf_type_override @@ -452,8 +454,9 @@ GLOBAL_LIST_EMPTY(the_station_areas) return reserve //If we didn't return at this point, theres a good chance we ran out of room on the exisiting reserved z levels, so lets try a new one num_of_res_levels += 1 - var/newReserved = add_new_zlevel("Transit/Reserved [num_of_res_levels]", list(ZTRAIT_RESERVED = TRUE)) - if(reserve.Reserve(width, height, newReserved)) + var/datum/space_level/newReserved = add_new_zlevel("Transit/Reserved [num_of_res_levels]", list(ZTRAIT_RESERVED = TRUE)) + initialize_reserved_level(newReserved.z_value) + if(reserve.Reserve(width, height, newReserved.z_value)) return reserve else if(!level_trait(z, ZTRAIT_RESERVED)) @@ -465,19 +468,22 @@ GLOBAL_LIST_EMPTY(the_station_areas) QDEL_NULL(reserve) //This is not for wiping reserved levels, use wipe_reservations() for that. -/datum/controller/subsystem/mapping/proc/initialize_reserved_level() +/datum/controller/subsystem/mapping/proc/initialize_reserved_level(z) UNTIL(!clearing_reserved_turfs) //regardless, lets add a check just in case. clearing_reserved_turfs = TRUE //This operation will likely clear any existing reservations, so lets make sure nothing tries to make one while we're doing it. - for(var/i in levels_by_trait(ZTRAIT_RESERVED)) - var/turf/A = get_turf(locate(SHUTTLE_TRANSIT_BORDER,SHUTTLE_TRANSIT_BORDER,i)) - var/turf/B = get_turf(locate(world.maxx - SHUTTLE_TRANSIT_BORDER,world.maxy - SHUTTLE_TRANSIT_BORDER,i)) - var/block = block(A, B) - for(var/t in block) - // No need to empty() these, because it's world init and they're - // already /turf/open/space/basic. - var/turf/T = t - T.flags_1 |= UNUSED_RESERVATION_TURF_1 - unused_turfs["[i]"] = block + if(!level_trait(z,ZTRAIT_RESERVED)) + clearing_reserved_turfs = FALSE + CRASH("Invalid z level prepared for reservations.") + var/turf/A = get_turf(locate(SHUTTLE_TRANSIT_BORDER,SHUTTLE_TRANSIT_BORDER,z)) + var/turf/B = get_turf(locate(world.maxx - SHUTTLE_TRANSIT_BORDER,world.maxy - SHUTTLE_TRANSIT_BORDER,z)) + var/block = block(A, B) + for(var/t in block) + // No need to empty() these, because it's world init and they're + // already /turf/open/space/basic. + var/turf/T = t + T.flags_1 |= UNUSED_RESERVATION_TURF_1 + unused_turfs["[z]"] = block + reservation_ready["[z]"] = TRUE clearing_reserved_turfs = FALSE /datum/controller/subsystem/mapping/proc/reserve_turfs(list/turfs) @@ -511,3 +517,9 @@ GLOBAL_LIST_EMPTY(the_station_areas) for(var/B in areas) var/area/A = B A.reg_in_areas_in_z() + +/datum/controller/subsystem/mapping/proc/get_isolated_ruin_z() + if(!isolated_ruins_z) + isolated_ruins_z = add_new_zlevel("Isolated Ruins/Reserved", list(ZTRAIT_RESERVED = TRUE, ZTRAIT_ISOLATED_RUINS = TRUE)) + initialize_reserved_level(isolated_ruins_z.z_value) + return isolated_ruins_z.z_value \ No newline at end of file diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index 77ad712b99..a660ac5437 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -146,6 +146,11 @@ SUBSYSTEM_DEF(throwing) if (callback) callback.Invoke() + if(!thrownthing.zfalling) // I don't think you can zfall while thrown but hey, just in case. + var/turf/T = get_turf(thrownthing) + if(T && thrownthing.has_gravity(T)) + T.zFall(thrownthing) + qdel(src) /datum/thrownthing/proc/hit_atom(atom/A) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 2a47d6d015..fc8edc17cc 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -186,6 +186,10 @@ else M.forceMove(src) +//common name +/atom/proc/update_multiz(prune_on_fail = FALSE) + return FALSE + /atom/proc/assume_air(datum/gas_mixture/giver) qdel(giver) return null @@ -266,7 +270,7 @@ if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED) should_override = TRUE - + if(blood_DNA && !istype(src, /obj/effect/decal)) override[EXAMINE_POSITION_BEFORE] = " blood-stained " should_override = TRUE @@ -832,4 +836,7 @@ Proc for attack log creation, because really why not if(filter_data[name]) filter_data -= name update_filters() - return TRUE \ No newline at end of file + return TRUE + +/atom/proc/intercept_zImpact(atom/movable/AM, levels = 1) + return FALSE \ No newline at end of file diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 83762240bc..bdc50571f8 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -35,6 +35,51 @@ var/datum/component/orbiter/orbiting var/can_be_z_moved = TRUE + var/zfalling = FALSE + +/atom/movable/proc/can_zFall(turf/source, levels = 1, turf/target, direction) + if(!direction) + direction = DOWN + if(!source) + source = get_turf(src) + if(!source) + return FALSE + if(!target) + target = get_step_multiz(source, direction) + if(!target) + return FALSE + return !(movement_type & FLYING) && has_gravity(source) && !throwing + +/atom/movable/proc/onZImpact(turf/T, levels) + var/atom/highest = T + for(var/i in T.contents) + var/atom/A = i + if(!A.density) + continue + if(isobj(A) || ismob(A)) + if(A.layer > highest.layer) + highest = A + INVOKE_ASYNC(src, .proc/SpinAnimation, 5, 2) + throw_impact(highest) + return TRUE + +//For physical constraints to travelling up/down. +/atom/movable/proc/can_zTravel(turf/destination, direction) + var/turf/T = get_turf(src) + if(!T) + return FALSE + if(!direction) + if(!destination) + return FALSE + direction = get_dir(T, destination) + if(direction != UP && direction != DOWN) + return FALSE + if(!destination) + destination = get_step_multiz(src, direction) + if(!destination) + return FALSE + return T.zPassOut(src, direction, destination) && destination.zPassIn(src, direction, T) + /atom/movable/vv_edit_var(var_name, var_value) var/static/list/banned_edits = list("step_x", "step_y", "step_size") var/static/list/careful_edits = list("bound_x", "bound_y", "bound_width", "bound_height") diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index b6a3c7cfef..2fa7277d8b 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -15,7 +15,7 @@ qdel(src) /obj/effect/decal/proc/NeverShouldHaveComeHere(turf/T) - return isspaceturf(T) || isclosedturf(T) || islava(T) || istype(T, /turf/open/water) || ischasm(T) + return isclosedturf(T) || isgroundlessturf(T) /obj/effect/decal/ex_act(severity, target) qdel(src) diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 410923fe25..d48013d472 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -57,6 +57,9 @@ /obj/effect/abstract/singularity_act() return +/obj/effect/abstract/has_gravity(turf/T) + return FALSE + /obj/effect/dummy/singularity_pull() return diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index d6f304653d..a6ba6424b1 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -100,6 +100,7 @@ number_of_rods = 2 smooth = SMOOTH_TRUE canSmoothWith = null + obj_flags = CAN_BE_HIT | BLOCK_Z_FALL /obj/structure/lattice/catwalk/deconstruction_hints(mob/user) to_chat(user, "The supporting rods look like they could be cut.") diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm new file mode 100644 index 0000000000..89ea95ce4d --- /dev/null +++ b/code/game/objects/structures/stairs.dm @@ -0,0 +1,125 @@ +#define STAIR_TERMINATOR_AUTOMATIC 0 +#define STAIR_TERMINATOR_NO 1 +#define STAIR_TERMINATOR_YES 2 + +/obj/structure/stairs + name = "stairs" + icon = 'icons/obj/stairs.dmi' + icon_state = "stairs" + anchored = TRUE + //dir = direction of travel to go upwards + + var/force_open_above = FALSE + var/terminator_mode = STAIR_TERMINATOR_AUTOMATIC + var/turf/listeningTo + +/obj/structure/stairs/Initialize(mapload) + if(force_open_above) + force_open_above() + build_signal_listener() + update_surrounding() + return ..() + +/obj/structure/stairs/Destroy() + listeningTo = null + return ..() + +/obj/structure/stairs/Move() //Look this should never happen but... + . = ..() + if(force_open_above) + build_signal_listener() + update_surrounding() + +/obj/structure/stairs/proc/update_surrounding() + update_icon() + for(var/i in GLOB.cardinals) + var/turf/T = get_step(get_turf(src), i) + var/obj/structure/stairs/S = locate() in T + if(S) + S.update_icon() + +/obj/structure/stairs/Uncross(atom/movable/AM, turf/newloc) + if(!newloc || !AM) + return ..() + if(!isobserver(AM) && isTerminator() && (get_dir(src, newloc) == dir)) + stair_ascend(AM) + return FALSE + return ..() + +/obj/structure/stairs/Cross(atom/movable/AM) + if(isTerminator() && (get_dir(src, AM) == dir)) + return FALSE + return ..() + +/obj/structure/stairs/update_icon() + if(isTerminator()) + icon_state = "stairs_t" + else + icon_state = "stairs" + +/obj/structure/stairs/proc/stair_ascend(atom/movable/AM) + var/turf/checking = get_step_multiz(get_turf(src), UP) + if(!istype(checking)) + return + if(!checking.zPassIn(AM, UP, get_turf(src))) + return + var/turf/target = get_step_multiz(get_turf(src), (dir|UP)) + if(istype(target) && !target.can_zFall(AM, null, get_step_multiz(target, DOWN))) //Don't throw them into a tile that will just dump them back down. + if(isliving(AM)) + var/mob/living/L = AM + var/pulling = L.pulling + if(pulling) + L.pulling.forceMove(target) + L.forceMove(target) + L.start_pulling(pulling) + else + AM.forceMove(target) + +/obj/structure/stairs/vv_edit_var(var_name, var_value) + . = ..() + if(!.) + return + if(var_name != NAMEOF(src, force_open_above)) + return + if(!var_value) + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_TURF_MULTIZ_NEW) + listeningTo = null + else + build_signal_listener() + force_open_above() + +/obj/structure/stairs/proc/build_signal_listener() + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_TURF_MULTIZ_NEW) + var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) + RegisterSignal(T, COMSIG_TURF_MULTIZ_NEW, .proc/on_multiz_new) + listeningTo = T + +/obj/structure/stairs/proc/force_open_above() + var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) + if(T && !istype(T)) + T.ChangeTurf(/turf/open/openspace) + +/obj/structure/stairs/proc/on_multiz_new(turf/source, dir) + if(dir == UP) + var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) + if(T && !istype(T)) + T.ChangeTurf(/turf/open/openspace) + +/obj/structure/stairs/intercept_zImpact(atom/movable/AM, levels = 1) + return isTerminator() + +/obj/structure/stairs/proc/isTerminator() //If this is the last stair in a chain and should move mobs up + if(terminator_mode != STAIR_TERMINATOR_AUTOMATIC) + return (terminator_mode == STAIR_TERMINATOR_YES) + var/turf/T = get_turf(src) + if(!T) + return FALSE + var/turf/them = get_step(T, dir) + if(!them) + return FALSE + for(var/obj/structure/stairs/S in them) + if(S.dir == dir) + return FALSE + return TRUE diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index bd24e0ff93..833a07c9c3 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -16,6 +16,22 @@ if(wet) AddComponent(/datum/component/wet_floor, wet, INFINITY, 0, INFINITY, TRUE) +//direction is direction of travel of A +/turf/open/zPassIn(atom/movable/A, direction, turf/source) + return (direction == DOWN) + +//direction is direction of travel of A +/turf/open/zPassOut(atom/movable/A, direction, turf/destination) + return (direction == UP) + +//direction is direction of travel of air +/turf/open/zAirIn(direction, turf/source) + return (direction == DOWN) + +//direction is direction of travel of air +/turf/open/zAirOut(direction, turf/source) + return (direction == UP) + /turf/open/MouseDrop_T(atom/dropping, mob/user) . = ..() if(dropping == user && isliving(user)) @@ -184,43 +200,14 @@ update_visuals() current_cycle = times_fired - - //cache some vars - var/list/atmos_adjacent_turfs = src.atmos_adjacent_turfs - - for(var/direction in GLOB.cardinals) - var/turf/open/enemy_tile = get_step(src, direction) - if(!istype(enemy_tile)) - if (atmos_adjacent_turfs) - atmos_adjacent_turfs -= enemy_tile - continue + CalculateAdjacentTurfs() + for(var/i in atmos_adjacent_turfs) + var/turf/open/enemy_tile = i var/datum/gas_mixture/enemy_air = enemy_tile.return_air() - - //only check this turf, if it didn't check us when it was initalized - if(enemy_tile.current_cycle < times_fired) - if(CANATMOSPASS(src, enemy_tile)) - LAZYINITLIST(atmos_adjacent_turfs) - LAZYINITLIST(enemy_tile.atmos_adjacent_turfs) - atmos_adjacent_turfs[enemy_tile] = TRUE - enemy_tile.atmos_adjacent_turfs[src] = TRUE - else - if (atmos_adjacent_turfs) - atmos_adjacent_turfs -= enemy_tile - if (enemy_tile.atmos_adjacent_turfs) - enemy_tile.atmos_adjacent_turfs -= src - UNSETEMPTY(enemy_tile.atmos_adjacent_turfs) - continue - else - if (!atmos_adjacent_turfs || !atmos_adjacent_turfs[enemy_tile]) - continue - if(!excited && air.compare(enemy_air)) //testing("Active turf found. Return value of compare(): [is_active]") excited = TRUE SSair.active_turfs |= src - UNSETEMPTY(atmos_adjacent_turfs) - if (atmos_adjacent_turfs) - src.atmos_adjacent_turfs = atmos_adjacent_turfs /turf/open/proc/GetHeatCapacity() . = air.heat_capacity() diff --git a/code/game/turfs/openspace/openspace.dm b/code/game/turfs/openspace/openspace.dm new file mode 100644 index 0000000000..7fc9173f65 --- /dev/null +++ b/code/game/turfs/openspace/openspace.dm @@ -0,0 +1,134 @@ +/turf/open/openspace + name = "open space" + desc = "Watch your step!" + icon_state = "grey" + baseturfs = /turf/open/openspace + CanAtmosPassVertical = ATMOS_PASS_YES + plane = FLOOR_OPENSPACE_PLANE + layer = OPENSPACE_LAYER + //mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/can_cover_up = TRUE + var/can_build_on = TRUE + +/turf/open/openspace/debug/update_multiz() + ..() + return TRUE + +/turf/open/openspace/Initialize() + . = ..() + return INITIALIZE_HINT_LATELOAD + +/turf/open/openspace/LateInitialize() + update_multiz(TRUE, TRUE) + +/turf/open/openspace/Destroy() + vis_contents.len = 0 + return ..() + +/turf/open/openspace/update_multiz(prune_on_fail = FALSE, init = FALSE) + . = ..() + var/turf/T = below() + if(!T) + vis_contents.len = 0 + if(prune_on_fail) + ChangeTurf(/turf/open/floor/plating) + return FALSE + if(init) + vis_contents += T + return TRUE + +/turf/open/openspace/multiz_turf_del(turf/T, dir) + if(dir != DOWN) + return + update_multiz() + +/turf/open/openspace/multiz_turf_new(turf/T, dir) + if(dir != DOWN) + return + update_multiz() + +/turf/open/openspace/zAirIn() + return TRUE + +/turf/open/openspace/zAirOut() + return TRUE + +/turf/open/openspace/zPassIn(atom/movable/A, direction, turf/source) + return TRUE + +/turf/open/openspace/zPassOut(atom/movable/A, direction, turf/destination) + if(A.anchored) + return FALSE + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_FALL) + return FALSE + return TRUE + +/turf/open/openspace/proc/CanCoverUp() + return can_cover_up + +/turf/open/openspace/proc/CanBuildHere() + return can_build_on + +/turf/open/openspace/attackby(obj/item/C, mob/user, params) + ..() + if(!CanBuildHere()) + return + if(istype(C, /obj/item/stack/rods)) + var/obj/item/stack/rods/R = C + var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) + var/obj/structure/lattice/catwalk/W = locate(/obj/structure/lattice/catwalk, src) + if(W) + to_chat(user, "There is already a catwalk here!") + return + if(L) + if(R.use(1)) + to_chat(user, "You construct a catwalk.") + playsound(src, 'sound/weapons/genhit.ogg', 50, 1) + new/obj/structure/lattice/catwalk(src) + else + to_chat(user, "You need two rods to build a catwalk!") + return + if(R.use(1)) + to_chat(user, "You construct a lattice.") + playsound(src, 'sound/weapons/genhit.ogg', 50, 1) + ReplaceWithLattice() + else + to_chat(user, "You need one rod to build a lattice.") + return + if(istype(C, /obj/item/stack/tile/plasteel)) + if(!CanCoverUp()) + return + var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) + if(L) + var/obj/item/stack/tile/plasteel/S = C + if(S.use(1)) + qdel(L) + playsound(src, 'sound/weapons/genhit.ogg', 50, 1) + to_chat(user, "You build a floor.") + PlaceOnTop(/turf/open/floor/plating) + else + to_chat(user, "You need one floor tile to build a floor!") + else + to_chat(user, "The plating is going to need some support! Place metal rods first.") + +/turf/open/openspace/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) + if(!CanBuildHere()) + return FALSE + + switch(the_rcd.mode) + if(RCD_FLOORWALL) + var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) + if(L) + return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 1) + else + return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 3) + return FALSE + +/turf/open/openspace/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_FLOORWALL) + to_chat(user, "You build a floor.") + PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + return TRUE + return FALSE diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index ebf6f6626c..7fe48365ef 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -39,7 +39,7 @@ return FALSE . = ..() -/turf/Initialize() +/turf/Initialize(mapload) if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") flags_1 |= INITIALIZED_1 @@ -68,6 +68,15 @@ if (light_power && light_range) update_light() + var/turf/T = SSmapping.get_turf_above(src) + if(T) + T.multiz_turf_new(src, DOWN) + SEND_SIGNAL(T, COMSIG_TURF_MULTIZ_NEW, src, DOWN) + T = SSmapping.get_turf_below(src) + if(T) + T.multiz_turf_new(src, UP) + SEND_SIGNAL(T, COMSIG_TURF_MULTIZ_NEW, src, UP) + if (opacity) has_opaque_atom = TRUE @@ -83,6 +92,12 @@ if(!changing_turf) stack_trace("Incorrect turf deletion") changing_turf = FALSE + var/turf/T = SSmapping.get_turf_above(src) + if(T) + T.multiz_turf_del(src, DOWN) + T = SSmapping.get_turf_below(src) + if(T) + T.multiz_turf_del(src, UP) if(force) ..() //this will completely wipe turf state @@ -105,6 +120,54 @@ return user.Move_Pulled(src) +/turf/proc/multiz_turf_del(turf/T, dir) + +/turf/proc/multiz_turf_new(turf/T, dir) + +//zPassIn doesn't necessarily pass an atom! +//direction is direction of travel of air +/turf/proc/zPassIn(atom/movable/A, direction, turf/source) + return FALSE + +//direction is direction of travel of air +/turf/proc/zPassOut(atom/movable/A, direction, turf/destination) + return FALSE + +//direction is direction of travel of air +/turf/proc/zAirIn(direction, turf/source) + return FALSE + +//direction is direction of travel of air +/turf/proc/zAirOut(direction, turf/source) + return FALSE + +/turf/proc/zImpact(atom/movable/A, levels = 1) + for(var/i in contents) + var/atom/thing = i + if(thing.intercept_zImpact(A, levels)) + return FALSE + if(zFall(A, ++levels)) + return FALSE + A.visible_message("[A] crashes into [src]!") + A.onZImpact(src, levels) + return TRUE + +/turf/proc/can_zFall(atom/movable/A, levels = 1, turf/target) + return zPassOut(A, DOWN, target) && target.zPassIn(A, DOWN, src) + +/turf/proc/zFall(atom/movable/A, levels = 1, force = FALSE) + var/turf/target = get_step_multiz(src, DOWN) + if(!target || (!isobj(A) && !ismob(A))) + return FALSE + if(!force && (!can_zFall(A, levels, target) || !A.can_zFall(src, levels, target, DOWN))) + return FALSE + A.visible_message("[A] falls through [src]!") + A.zfalling = TRUE + A.forceMove(target) + A.zfalling = FALSE + target.zImpact(A, levels) + return TRUE + /turf/proc/handleRCL(obj/item/twohanded/rcl/C, mob/user) if(C.loaded) for(var/obj/structure/cable/LC in src) @@ -196,6 +259,9 @@ if(O.obj_flags & FROZEN) O.make_unfrozen() + if(!AM.zfalling) + zFall(AM) + /turf/proc/is_plasteel_floor() return FALSE diff --git a/code/modules/atmospherics/environmental/LINDA_system.dm b/code/modules/atmospherics/environmental/LINDA_system.dm index 084c35684c..1ad899920a 100644 --- a/code/modules/atmospherics/environmental/LINDA_system.dm +++ b/code/modules/atmospherics/environmental/LINDA_system.dm @@ -1,4 +1,6 @@ /atom/var/CanAtmosPass = ATMOS_PASS_YES +/atom/var/CanAtmosPassVertical = ATMOS_PASS_YES + /atom/proc/CanAtmosPass(turf/T) switch (CanAtmosPass) if (ATMOS_PASS_PROC) @@ -8,42 +10,47 @@ else return CanAtmosPass -/turf/closed/CanAtmosPass = ATMOS_PASS_NO +/turf/CanAtmosPass = ATMOS_PASS_NO +/turf/CanAtmosPassVertical = ATMOS_PASS_NO /turf/open/CanAtmosPass = ATMOS_PASS_PROC -/turf/open/CanAtmosPass(turf/T) - var/R - if(blocks_air || T.blocks_air) - R = 1 +/turf/open/CanAtmosPassVertical = ATMOS_PASS_PROC +/turf/open/CanAtmosPass(turf/T, vertical = FALSE) + var/dir = vertical? get_dir_multiz(src, T) : get_dir(src, T) + var/opp = dir_inverse_multiz(dir) + var/R = FALSE + if(vertical && !(zAirOut(dir, T) && T.zAirIn(dir, src))) + R = TRUE + if(blocks_air || T.blocks_air) + R = TRUE + if (T == src) + return !R for(var/obj/O in contents+T.contents) var/turf/other = (O.loc == src ? T : src) - if(!CANATMOSPASS(O, other)) - R = 1 + if(!(vertical? (CANVERTICALATMOSPASS(O, other)) : (CANATMOSPASS(O, other)))) + R = TRUE if(O.BlockSuperconductivity()) //the direction and open/closed are already checked on CanAtmosPass() so there are no arguments - var/D = get_dir(src, T) - atmos_supeconductivity |= D - D = get_dir(T, src) - T.atmos_supeconductivity |= D - return 0 //no need to keep going, we got all we asked + atmos_supeconductivity |= dir + T.atmos_supeconductivity |= opp + return FALSE //no need to keep going, we got all we asked - atmos_supeconductivity &= ~get_dir(src, T) - T.atmos_supeconductivity &= ~get_dir(T, src) + atmos_supeconductivity &= ~dir + T.atmos_supeconductivity &= ~opp return !R - - /atom/movable/proc/BlockSuperconductivity() // objects that block air and don't let superconductivity act. Only firelocks atm. - return 0 + return FALSE /turf/proc/CalculateAdjacentTurfs() - var/list/atmos_adjacent_turfs = src.atmos_adjacent_turfs - for(var/direction in GLOB.cardinals) - var/turf/T = get_step(src, direction) - if(!T) + var/canpass = CANATMOSPASS(src, src) + var/canvpass = CANVERTICALATMOSPASS(src, src) + for(var/direction in GLOB.cardinals_multiz) + var/turf/T = get_step_multiz(src, direction) + if(!isopenturf(T)) continue - if( !(blocks_air || T.blocks_air) && CANATMOSPASS(T, src) ) + if(!(blocks_air || T.blocks_air) && ((direction & (UP|DOWN))? (canvpass && CANVERTICALATMOSPASS(T, src)) : (canpass && CANATMOSPASS(T, src))) ) LAZYINITLIST(atmos_adjacent_turfs) LAZYINITLIST(T.atmos_adjacent_turfs) atmos_adjacent_turfs[T] = TRUE @@ -72,11 +79,13 @@ var/turf/curloc = src - for (var/direction in GLOB.diagonals) + for (var/direction in GLOB.diagonals_multiz) var/matchingDirections = 0 - var/turf/S = get_step(curloc, direction) + var/turf/S = get_step_multiz(curloc, direction) + if(!S) + continue - for (var/checkDirection in GLOB.cardinals) + for (var/checkDirection in GLOB.cardinals_multiz) var/turf/checkTurf = get_step(S, checkDirection) if(!S.atmos_adjacent_turfs || !S.atmos_adjacent_turfs[checkTurf]) continue diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index ea555c9489..9dba780b3f 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -42,8 +42,7 @@ /turf/open/Destroy() if(active_hotspot) - qdel(active_hotspot) - active_hotspot = null + QDEL_NULL(active_hotspot) // Adds the adjacent turfs to the current atmos processing for(var/T in atmos_adjacent_turfs) SSair.add_to_active(T) diff --git a/code/modules/atmospherics/multiz.dm b/code/modules/atmospherics/multiz.dm new file mode 100644 index 0000000000..2b3a9af1c7 --- /dev/null +++ b/code/modules/atmospherics/multiz.dm @@ -0,0 +1,29 @@ +obj/machinery/atmospherics/pipe/simple/multiz ///This is an atmospherics pipe which can relay air up a deck (Z+1). It currently only supports being on pipe layer 1 + name = "multi deck pipe adapter" + desc = "An adapter which allows pipes to connect to other pipenets on different decks." + icon_state = "multiz_pipe" + icon = 'icons/obj/atmos.dmi' + +/obj/machinery/atmospherics/pipe/simple/multiz/update_icon() + . = ..() + cut_overlays() //This adds the overlay showing it's a multiz pipe. This should go above turfs and such + var/image/multiz_overlay_node = new(src) //If we have a firing state, light em up! + multiz_overlay_node.icon = 'icons/obj/atmos.dmi' + multiz_overlay_node.icon_state = "multiz_pipe" + multiz_overlay_node.layer = HIGH_OBJ_LAYER + add_overlay(multiz_overlay_node) + +///Attempts to locate a multiz pipe that's above us, if it finds one it merges us into its pipenet +/obj/machinery/atmospherics/pipe/simple/multiz/pipeline_expansion() + icon = 'icons/obj/atmos.dmi' //Just to refresh. + var/turf/T = get_turf(src) + var/obj/machinery/atmospherics/pipe/simple/multiz/above = locate(/obj/machinery/atmospherics/pipe/simple/multiz) in(SSmapping.get_turf_above(T)) + var/obj/machinery/atmospherics/pipe/simple/multiz/below = locate(/obj/machinery/atmospherics/pipe/simple/multiz) in(SSmapping.get_turf_below(T)) + if(below) + below.pipeline_expansion() //If we've got one below us, force it to add us on facebook + if(above) + nodes += above + above.nodes += src //Two way travel :) + return ..() + else + return ..() \ No newline at end of file diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm index 416e2bc0c9..d88c7543f0 100644 --- a/code/modules/mapping/ruins.dm +++ b/code/modules/mapping/ruins.dm @@ -1,10 +1,12 @@ -/datum/map_template/ruin/proc/try_to_place(z,allowed_areas) - var/sanity = PLACEMENT_TRIES +/datum/map_template/ruin/proc/try_to_place(z,allowed_areas,turf/forced_turf) + var/sanity = forced_turf ? 1 : PLACEMENT_TRIES + if(SSmapping.level_trait(z,ZTRAIT_ISOLATED_RUINS)) + return place_on_isolated_level(z) while(sanity > 0) sanity-- var/width_border = TRANSITIONEDGE + SPACERUIN_MAP_EDGE_PAD + round(width / 2) var/height_border = TRANSITIONEDGE + SPACERUIN_MAP_EDGE_PAD + round(height / 2) - var/turf/central_turf = locate(rand(width_border, world.maxx - width_border), rand(height_border, world.maxy - height_border), z) + var/turf/central_turf = forced_turf ? forced_turf : locate(rand(width_border, world.maxx - width_border), rand(height_border, world.maxy - height_border), z) var/valid = TRUE for(var/turf/check in get_affected_turfs(central_turf,1)) @@ -24,7 +26,7 @@ qdel(monster) for(var/obj/structure/flora/ash/plant in T) qdel(plant) - + load(central_turf,centered = TRUE) loaded++ @@ -32,9 +34,20 @@ T.flags_1 |= NO_RUINS_1 new /obj/effect/landmark/ruin(central_turf, src) - return TRUE - return FALSE + return central_turf +/datum/map_template/ruin/proc/place_on_isolated_level(z) + var/datum/turf_reservation/reservation = SSmapping.RequestBlockReservation(width, height, z) //Make the new level creation work with different traits. + if(!reservation) + return + var/turf/placement = locate(reservation.bottom_left_coords[1],reservation.bottom_left_coords[2],reservation.bottom_left_coords[3]) + load(placement) + loaded++ + for(var/turf/T in get_affected_turfs(placement)) + T.flags_1 |= NO_RUINS_1 + var/turf/center = locate(placement.x + round(width/2),placement.y + round(height/2),placement.z) + new /obj/effect/landmark/ruin(center, src) + return center /proc/seedRuins(list/z_levels = null, budget = 0, whitelist = /area/space, list/potentialRuins) if(!z_levels || !z_levels.len) @@ -49,9 +62,8 @@ var/list/ruins = potentialRuins.Copy() - var/list/forced_ruins = list() //These go first on the z level associated (same random one by default) + var/list/forced_ruins = list() //These go first on the z level associated (same random one by default) or if the assoc value is a turf to the specified turf. var/list/ruins_availible = list() //we can try these in the current pass - var/forced_z //If set we won't pick z level and use this one instead. //Set up the starting ruin list for(var/key in ruins) @@ -67,34 +79,55 @@ while(budget > 0 && (ruins_availible.len || forced_ruins.len)) var/datum/map_template/ruin/current_pick var/forced = FALSE + var/forced_z //If set we won't pick z level and use this one instead. + var/forced_turf //If set we place the ruin centered on the given turf if(forced_ruins.len) //We have something we need to load right now, so just pick it for(var/ruin in forced_ruins) current_pick = ruin - if(forced_ruins[ruin] > 0) //Load into designated z + if(isturf(forced_ruins[ruin])) + var/turf/T = forced_ruins[ruin] + forced_z = T.z //In case of chained ruins + forced_turf = T + else if(forced_ruins[ruin] > 0) //Load into designated z forced_z = forced_ruins[ruin] forced = TRUE break else //Otherwise just pick random one current_pick = pickweight(ruins_availible) - var/placement_tries = PLACEMENT_TRIES + var/placement_tries = forced_turf ? 1 : PLACEMENT_TRIES //Only try once if we target specific turf var/failed_to_place = TRUE - var/z_placed = 0 - while(placement_tries > 0) - placement_tries-- - z_placed = pick(z_levels) - if(!current_pick.try_to_place(forced_z ? forced_z : z_placed,whitelist)) - continue - else - failed_to_place = FALSE - break + var/target_z = 0 + var/turf/placed_turf //Where the ruin ended up if we succeeded + outer: + while(placement_tries > 0) + placement_tries-- + target_z = pick(z_levels) + if(forced_z) + target_z = forced_z + if(current_pick.always_spawn_with) //If the ruin has part below, make sure that z exists. + for(var/v in current_pick.always_spawn_with) + if(current_pick.always_spawn_with[v] == PLACE_BELOW) + var/turf/T = locate(1,1,target_z) + if(!SSmapping.get_turf_below(T)) + if(forced_z) + continue outer + else + break outer + + placed_turf = current_pick.try_to_place(target_z,whitelist,forced_turf) + if(!placed_turf) + continue + else + failed_to_place = FALSE + break //That's done remove from priority even if it failed if(forced) //TODO : handle forced ruins with multiple variants forced_ruins -= current_pick forced = FALSE - + if(failed_to_place) for(var/datum/map_template/ruin/R in ruins_availible) if(R.id == current_pick.id) @@ -118,18 +151,21 @@ if(istype(linked,v)) switch(current_pick.always_spawn_with[v]) if(PLACE_SAME_Z) - forced_ruins[linked] = forced_z ? forced_z : z_placed //I guess you might want a chain somehow + forced_ruins[linked] = target_z //I guess you might want a chain somehow if(PLACE_LAVA_RUIN) forced_ruins[linked] = pick(SSmapping.levels_by_trait(ZTRAIT_LAVA_RUINS)) if(PLACE_SPACE_RUIN) forced_ruins[linked] = pick(SSmapping.levels_by_trait(ZTRAIT_SPACE_RUINS)) if(PLACE_DEFAULT) forced_ruins[linked] = -1 - forced_z = 0 + if(PLACE_BELOW) + forced_ruins[linked] = SSmapping.get_turf_below(placed_turf) + if(PLACE_ISOLATED) + forced_ruins[linked] = SSmapping.get_isolated_ruin_z() //Update the availible list for(var/datum/map_template/ruin/R in ruins_availible) if(R.cost > budget) ruins_availible -= R - + log_world("Ruin loader finished with [budget] left to spend.") diff --git a/code/modules/mapping/space_management/multiz_helpers.dm b/code/modules/mapping/space_management/multiz_helpers.dm new file mode 100644 index 0000000000..f6db12420a --- /dev/null +++ b/code/modules/mapping/space_management/multiz_helpers.dm @@ -0,0 +1,47 @@ +/proc/get_step_multiz(ref, dir) + if(dir & UP) + dir &= ~UP + return get_step(SSmapping.get_turf_above(get_turf(ref)), dir) + if(dir & DOWN) + dir &= ~DOWN + return get_step(SSmapping.get_turf_below(get_turf(ref)), dir) + return get_step(ref, dir) + +/proc/get_dir_multiz(turf/us, turf/them) + us = get_turf(us) + them = get_turf(them) + if(!us || !them) + return NONE + if(us.z == them.z) + return get_dir(us, them) + else + var/turf/T = us.above() + var/dir = NONE + if(T && (T.z == them.z)) + dir = UP + else + T = us.below() + if(T && (T.z == them.z)) + dir = DOWN + else + return get_dir(us, them) + return (dir | get_dir(us, them)) + +/turf/proc/above() + return get_step_multiz(src, UP) + +/turf/proc/below() + return get_step_multiz(src, DOWN) + +/proc/dir_inverse_multiz(dir) + var/holder = dir & (UP|DOWN) + if((holder == NONE) || (holder == (UP|DOWN))) + return turn(dir, 180) + dir &= ~(UP|DOWN) + dir = turn(dir, 180) + if(holder == UP) + holder = DOWN + else + holder = UP + dir |= holder + return dir \ No newline at end of file diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d599d55886..4c2f55a3c0 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -17,6 +17,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) see_in_dark = 100 invisibility = INVISIBILITY_OBSERVER hud_type = /datum/hud/ghost + movement_type = GROUND | FLYING var/can_reenter_corpse var/can_reenter_round = TRUE var/datum/hud/living/carbon/hud = null // hud diff --git a/code/modules/mob/dead/observer/observer_movement.dm b/code/modules/mob/dead/observer/observer_movement.dm new file mode 100644 index 0000000000..b84bed2a3f --- /dev/null +++ b/code/modules/mob/dead/observer/observer_movement.dm @@ -0,0 +1,2 @@ +/mob/dead/observer/canZMove(direction, turf/target) + return TRUE \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d249cd1a61..d03664a277 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -40,6 +40,16 @@ QDEL_LIST(diseases) return ..() +/mob/living/onZImpact(turf/T, levels) + if(!isgroundlessturf(T)) + ZImpactDamage(T, levels) + return ..() + +/mob/living/proc/ZImpactDamage(turf/T, levels) + visible_message("[src] crashes into [T] with a sickening noise!") + adjustBruteLoss((levels * 5) ** 1.5) + Knockdown(levels * 50) + /mob/living/proc/OpenCraftingMenu() return diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 1ee563bc1f..93bb9d1f8d 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -32,4 +32,7 @@ if(drag_slowdown && L.lying && !L.buckled && grab_state < GRAB_AGGRESSIVE) add_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING, multiplicative_slowdown = PULL_PRONE_SLOWDOWN) return - remove_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING) \ No newline at end of file + remove_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING) + +/mob/living/canZMove(dir, turf/target) + return can_zTravel(target, dir) && (movement_type & FLYING) \ No newline at end of file diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 82e2b11f8e..2c8935c786 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -370,3 +370,35 @@ if(hud_used && hud_used.static_inventory) for(var/obj/screen/mov_intent/selector in hud_used.static_inventory) selector.update_icon(src) + +/mob/verb/up() + set name = "Move Upwards" + set category = "IC" + + if(zMove(UP, TRUE)) + to_chat(src, "You move upwards.") + +/mob/verb/down() + set name = "Move Down" + set category = "IC" + + if(zMove(DOWN, TRUE)) + to_chat(src, "You move down.") + +/mob/proc/zMove(dir, feedback = FALSE) + if(dir != UP && dir != DOWN) + return FALSE + var/turf/target = get_step_multiz(src, dir) + if(!target) + if(feedback) + to_chat(src, "There's nothing in that direction!") + return FALSE + if(!canZMove(dir, target)) + if(feedback) + to_chat(src, "You couldn't move there!") + return FALSE + forceMove(target) + return TRUE + +/mob/proc/canZMove(direction, turf/target) + return FALSE \ No newline at end of file diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 4d8cdaa778..f2d95c2bd0 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -117,7 +117,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne use_power = IDLE_POWER_USE interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE var/on = TRUE - var/breaker = 1 + var/breaker = TRUE var/list/parts = list() var/obj/middle = null var/charging_state = POWER_IDLE @@ -166,7 +166,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne M.set_broken() middle.cut_overlays() charge_count = 0 - breaker = 0 + breaker = FALSE set_power() set_state(0) investigate_log("has broken down.", INVESTIGATE_GRAVITY) @@ -176,7 +176,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne for(var/obj/machinery/gravity_generator/M in parts) if(M.stat & BROKEN) M.set_fix() - broken_state = 0 + broken_state = FALSE update_icon() set_power() @@ -273,11 +273,11 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne // Set the charging state based on power/breaker. /obj/machinery/gravity_generator/main/proc/set_power() - var/new_state = 0 + var/new_state = FALSE if(stat & (NOPOWER|BROKEN) || !breaker) - new_state = 0 + new_state = FALSE else if(breaker) - new_state = 1 + new_state = TRUE charging_state = new_state ? POWER_UP : POWER_DOWN // Startup sequence animation. investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", INVESTIGATE_GRAVITY) @@ -292,13 +292,13 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne var/alert = FALSE if(SSticker.IsRoundInProgress()) if(on) // If we turned on and the game is live. - if(gravity_in_level() == 0) - alert = 1 + if(gravity_in_level() == FALSE) + alert = TRUE investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY) message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]") else - if(gravity_in_level() == 1) - alert = 1 + if(gravity_in_level() == TRUE) + alert = TRUE investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY) message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]") @@ -361,7 +361,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne var/sound/alert_sound = sound('sound/effects/alert.ogg') for(var/i in GLOB.mob_list) var/mob/M = i - if(M.z != z) + if(M.z != z && !(SSmapping.level_trait(z, ZTRAITS_STATION) && SSmapping.level_trait(M.z, ZTRAITS_STATION))) continue M.update_gravity(M.mob_has_gravity()) if(M.client) @@ -371,20 +371,28 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne /obj/machinery/gravity_generator/main/proc/gravity_in_level() var/turf/T = get_turf(src) if(!T) - return 0 + return FALSE if(GLOB.gravity_generators["[T.z]"]) return length(GLOB.gravity_generators["[T.z]"]) - return 0 + return FALSE /obj/machinery/gravity_generator/main/proc/update_list() var/turf/T = get_turf(src.loc) if(T) - if(!GLOB.gravity_generators["[T.z]"]) - GLOB.gravity_generators["[T.z]"] = list() - if(on) - GLOB.gravity_generators["[T.z]"] |= src + var/list/z_list = list() + // Multi-Z, station gravity generator generates gravity on all ZTRAIT_STATION z-levels. + if(SSmapping.level_trait(T.z, ZTRAIT_STATION)) + for(var/z in SSmapping.levels_by_trait(ZTRAIT_STATION)) + z_list += z else - GLOB.gravity_generators["[T.z]"] -= src + z_list += T.z + for(var/z in z_list) + if(!GLOB.gravity_generators["[z]"]) + GLOB.gravity_generators["[z]"] = list() + if(on) + GLOB.gravity_generators["[z]"] |= src + else + GLOB.gravity_generators["[z]"] -= src /obj/machinery/gravity_generator/main/proc/change_setting(value) if(value != setting) diff --git a/code/modules/power/multiz.dm b/code/modules/power/multiz.dm new file mode 100644 index 0000000000..9d8abf9066 --- /dev/null +++ b/code/modules/power/multiz.dm @@ -0,0 +1,80 @@ +/obj/machinery/power/deck_relay //This bridges powernets + name = "Multi-deck power adapter" + desc = "A huge bundle of double insulated cabling which seems to run up into the ceiling." + icon = 'icons/obj/power.dmi' + icon_state = "cablerelay-off" + var/obj/machinery/power/deck_relay/below ///The relay that's below us (for bridging powernets) + var/obj/machinery/power/deck_relay/above ///The relay that's above us (for bridging powernets) + anchored = TRUE + density = FALSE + +/obj/machinery/power/deck_relay/attackby(obj/item/I,mob/user) + if(default_unfasten_wrench(user, I)) + return FALSE + . = ..() + +/obj/machinery/power/deck_relay/process() + if(!anchored) + icon_state = "cablerelay-off" + if(above) //Lose connections + above.below = null + if(below) + below.above = null + return + refresh() //Sometimes the powernets get lost, so we need to keep checking. + if(powernet && (powernet.avail <= 0)) // is it powered? + icon_state = "cablerelay-off" + else + icon_state = "cablerelay-on" + if(!below || QDELETED(below) || !above || QDELETED(above)) + icon_state = "cablerelay-off" + find_relays() + +///Allows you to scan the relay with a multitool to see stats. +/obj/machinery/power/deck_relay/multitool_act(mob/user, obj/item/I) + if(powernet && (powernet.avail > 0)) // is it powered? + to_chat(user, "Total power: [DisplayPower(powernet.avail)]\nLoad: [DisplayPower(powernet.load)]\nExcess power: [DisplayPower(surplus())]") + if(!powernet || below.powernet != powernet) + icon_state = "cablerelay-off" + to_chat(user, "Powernet connection lost. Attempting to re-establish. Ensure the relays below this one are connected too.") + find_relays() + addtimer(CALLBACK(src, .proc/refresh), 20) //Wait a bit so we can find the one below, then get powering + return TRUE + +/obj/machinery/power/deck_relay/Initialize() + . = ..() + addtimer(CALLBACK(src, .proc/find_relays), 30) + addtimer(CALLBACK(src, .proc/refresh), 50) //Wait a bit so we can find the one below, then get powering + +///Handles re-acquiring + merging powernets found by find_relays() +/obj/machinery/power/deck_relay/proc/refresh() + if(above) + above.merge(src) + if(below) + below.merge(src) + +/obj/machinery/power/deck_relay/proc/merge(var/obj/machinery/power/deck_relay/DR) + if(!DR) + return + var/turf/merge_from = get_turf(DR) + var/turf/merge_to = get_turf(src) + var/obj/structure/cable/C = merge_from.get_cable_node() + var/obj/structure/cable/XR = merge_to.get_cable_node() + if(C && XR) + merge_powernets(XR.powernet,C.powernet)//Bridge the powernets. + +///Locates relays that are above and below this object +/obj/machinery/power/deck_relay/proc/find_relays() + var/turf/T = get_turf(src) + if(!T || !istype(T)) + return FALSE + below = null //in case we're re-establishing + var/obj/structure/cable/C = T.get_cable_node() //check if we have a node cable on the machine turf, the first found is picked + if(C && C.powernet) + C.powernet.add_machine(src) //Nice we're in. + powernet = C.powernet + below = locate(/obj/machinery/power/deck_relay) in(SSmapping.get_turf_below(T)) + above = locate(/obj/machinery/power/deck_relay) in(SSmapping.get_turf_above(T)) + if(below || above) + icon_state = "cablerelay-on" + return TRUE \ No newline at end of file diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index e6fa1e0ee4..1b3a2a716c 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -650,6 +650,9 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) Consume(AM) +/obj/machinery/power/supermatter_crystal/intercept_zImpact(atom/movable/AM, levels) + Bumped(AM) + /obj/machinery/power/supermatter_crystal/proc/Consume(atom/movable/AM) if(isliving(AM)) var/mob/living/user = AM diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 056c5b1901..094c20b8ff 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -138,7 +138,7 @@ return TRUE /datum/reagent/consumable/cooking_oil/reaction_turf(turf/open/T, reac_volume) - if(!istype(T)) + if(!istype(T) || isgroundlessturf(T)) return if(reac_volume >= 5) T.MakeSlippery(TURF_WET_LUBE, min_wet_time = 10 SECONDS, wet_time_to_add = reac_volume * 1.5 SECONDS) diff --git a/code/modules/recycling/disposal/multiz.dm b/code/modules/recycling/disposal/multiz.dm new file mode 100644 index 0000000000..3dcab94ca5 --- /dev/null +++ b/code/modules/recycling/disposal/multiz.dm @@ -0,0 +1,49 @@ +#define MULTIZ_PIPE_UP 1 ///Defines for determining which way a multiz disposal element should travel +#define MULTIZ_PIPE_DOWN 2 ///Defines for determining which way a multiz disposal element should travel + + +/obj/structure/disposalpipe/trunk/multiz + name = "Disposal trunk that goes up" + icon_state = "pipe-up" + var/multiz_dir = MULTIZ_PIPE_UP ///Set the multiz direction of your trunk. 1 = up, 2 = down + +/obj/structure/disposalpipe/trunk/multiz/down + name = "Disposal trunk that goes down" + icon_state = "pipe-down" + multiz_dir = MULTIZ_PIPE_DOWN + +/obj/structure/disposalpipe/trunk/multiz/transfer(obj/structure/disposalholder/H) + if(H.dir == DOWN) //Since we're a trunk, you can still place a chute / bin over us. If theyve entered from there, treat this as a normal trunk + return ..() + // otherwise, go to the linked object + if(multiz_dir) //Are we a trunk that goes up? Or down? + var/turf/T = null + if(multiz_dir == MULTIZ_PIPE_UP) + T = SSmapping.get_turf_above(get_turf(src)) //Get the turf above us + if(multiz_dir == MULTIZ_PIPE_DOWN) + T = SSmapping.get_turf_below(get_turf(src)) + if(!T) + expel(H) + return //Nothing located. + var/obj/structure/disposalpipe/trunk/multiz/pipe = locate(/obj/structure/disposalpipe/trunk/multiz) in T + if(pipe) + var/obj/structure/disposalholder/destination = new(pipe) //For future reference, the disposal holder is the thing that carries mobs + destination.init(pipe) //This instantiates it + destination.merge(H) //This takes the contents of H (Our disposal holder that's travelling into us) and puts them into the destination holder + destination.active = TRUE //Active allows it to process and move + destination.setDir(DOWN) //This tells the trunk above us NOT to loop it back down to us, or else you get an infinite loop + destination.move() + return null //Which removes the disposalholder + else + var/obj/structure/disposaloutlet/O = linked + if(istype(O)) + O.expel(H) // expel at outlet + else + var/obj/machinery/disposal/D = linked + D.expel(H) // expel at disposal + + // Returning null without expelling holder makes the holder expell itself + return null + +#undef MULTIZ_PIPE_UP +#undef MULTIZ_PIPE_DOWN \ No newline at end of file diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 307e714316..225ca1f824 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -33,6 +33,9 @@ else return QDEL_HINT_LETMELIVE +/obj/docking_port/has_gravity(turf/T) + return FALSE + /obj/docking_port/take_damage() return diff --git a/config/maps.txt b/config/maps.txt index 99a4543853..372f062260 100644 --- a/config/maps.txt +++ b/config/maps.txt @@ -35,4 +35,7 @@ map deltastation endmap map runtimestation +endmap + +map multiz_debug endmap \ No newline at end of file diff --git a/icons/obj/atmos.dmi b/icons/obj/atmos.dmi index ee42e95dd21b63db75bd91f6cabfbf20e12afcfb..644c32fe30a5a3cd02a5a69c208b8118c4cfb222 100644 GIT binary patch delta 8539 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�);Bs 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 literal 30865 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

B_%73AnXBFiXo>Rs`Xb7nn4d30krjTw~W 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 diff --git a/icons/obj/stairs.dmi b/icons/obj/stairs.dmi new file mode 100644 index 0000000000000000000000000000000000000000..615e88f68455f72b4a2f59e35dbfd5123a90fdbd GIT binary patch literal 4929 zcmV-H6Ta+;P)V=-0C=2T%CQQAFc1ddIrkJlx|dpAZz&PUpsyeSqq(6iih%I6J6ce|52WU&lJ`yiK-Y}vk0izPC9`YP2?q!5Sj>+_xc+cG0~r3f&>gBf)itRVw`A9BqGL^rtjch?&~!U9MN6X z6kh2%XYY4#&f4|tRl6Fv3dKq~)qU!m{joluwe~t~{`S9r3#&h_;`s67VDjF>S_=R$ z#w6c`5aM-X463Sv_a5H+cu!FjFvh@In~deXM^#n0a^(tMeDOu>-MbgxefJ#>9z2+g zsmXhfx~}6r&bc^lUDt73`OaFKtkYVX?C09GYk2k5SMl?|e}=K99izG5xuV^JgL4Hs zoldfrx~>sIfVBpl&J@bBjPuoXjk>N;6a~t%gmVr6aQN_HEH5u7>+s&gy!YOFVSaud zro9-vhYtaDRmBOdwUIH#n7A=vv@oEqYE*R6KxEH5vku4{by>8Ds)T8aYP+S)?D-vGL|r1NVGmj@~l{o(Bk4ER#sMU{P=MgYhhZ3%Xr;x7i(*4IDPtbT>Iwc zX0-Hfw~Jf1ZeeL@34_4^Aq3pLdpC~X>-Dg@x{B9de?7Y{*|YOLpsFhL`+a!tQ4~dF zxGY+m4Kq|oz88VY7_8B3Mbp#MBaD2K#L5A*mfx-$Xf2PvXRFh0Ql1n3iM2fpIRMz& z+KP)}Z4)1>C+AJbMzltJ}!kacS9XT_9j3_OHi+VwFRV-Ou@x7&>x$r2Q%@&dGgv;_rtd)4>Lk9JS22%2Pk z*XeX3&Xonr!i0&!U>;Nk7Oi0|k!OV}$|+=lr%s*1+S(chg8}yJ*@FWI4kYnLqYVyn zIxgw_M7uuGSY8t+b?jz!9>V+A0a&j?LvH5fSOGj}AQl1wnjfTE%>v>Ch;syX6U-pV z9Cz*76`$cxVM_1;KKMicBRL2OPjZo*QpkR~-EJZTo{xDT_lqKFS7)t_d;!p`^#QJ2 z_~7J^&CSgOx$wqha@G`fOEQ_H->kK~0k)#uyLZQweP(861Vu@5rL925U`^6KR|i3M z39JMg8ykt@u~69pj4?n+1;xa1sjlm&DDr%cMDZNZWNq5S^z;282{+PgXt=bjIB=Wb0m2B>uHETc40+9k9TLil?G41FI(8Ap?L@PpCBiW6}eKNK% zM>KF8T-1O=#?=Xz)Ti`*b7)Nqz!(E314$kr6XlSHeChzD^9KDXjMQ;}HB|dyW`Z#W z#u@~qf|nn0kGwIl%3N@++fRn2xd03xDuW1}1uy#$A!wfEJOIz?OIm?v7y z?(^csi+JUgS4Nnw;|FU$`+s)1xfryQ_RBrqd$>+#3g3VKJ(iZ1;)FcO<7UA2_I=FH z&*RdiONqdrgaT}DZ^w1&;L8>zu1dQxG02<;co?$Q!j)x-GiT0VFc_pJpMhnJQZx+B zxd0C4vQTR+YVUFS^l7ZGuVZ_A8#6Pz@X|{!J#iOU*EOoDN|c8aD{F>9TRz1dh0wra z`HuO-us9cAWbJib!!cu7$~p)N3===hTKS+LD862pP_(C5;=7G8*t2KP69)kTKDdmW zBwS{g1#>WGE79(UgYUQi4-CCX48nKs-i?Ec1i7{$gYTqu{JVyMa*bi2xTx9L*(A@< z2!geY8KG-3qBtxZUYk5C<8-^-MiZ+#y9drY*i}7@o6)f(_kC4WLl_DmnIH$F;^~=M zY%U0C#%qhYd-rZ+;LOa-NFvB)ZA^3S%;U-2j7+roYox`@otc>#T0>pMlRQ~JlPF4A zmf4`2b9?eRPFTWcSJyRqyu0L-WE7k%{1W*{mGy za2(OtoddHFE0?x<&FCE9V7JG6cpwZF>GpcP5hmu`fDX7UX^pqF#_GzT_RYD)C(Oer z^O#|b%$WF^j!m3(i~H39m60Kj(;%(%AV#lYTs2h2bY)q_(|aa1*&HI#zEBH?ugm?q z91H;4+uOKs;Q~&cJQ<(iGPe9J!T^B5V33r<1(k79#I9+la=0*#*D25P80=Puys-)M zS&7E^e$5-_oWqS9H<)4N?+_ zbAEkXOpwp2s**Ep4zj>#hS~&4hoa!X>JqD9*vdi_0o2~3u){{S=#C!1TVo6?&@_tj z#hf410a7!hswxZy18i?^#{j2Mk#i1ZS)werYig9>%+aplUDnBcKhc<(VcH;2oYFGq&Tp^+RW&Ck!{;>C+VYpL?R%(d{^ zYq);>dY19a%geZS?HbJc@4p`=-5x&4_W0&r7aN5Q3BN2$OifL}ITzjG&}}vQ>~uQl zbUG0!Zp`8~gqD-&>8p5AV~GgHU4) zHR`ryy{e?y*WlS_pT*Dr{u%3kU&k-M{DPY|Z$^LL>2zYxy-tcGW=Y*@YHBJf!1nfb zoLdxx5B4P&DT)HW{`xDXrl#=KS6@AR0sk?OdHe0R!@+|GW4pBUu$N_tvuDrZz<~pJ z=9ytYg$-Xz>OO> zVzDlSfID~Y;Qsyl7z_qDapDAi_~D1xH(ym1Ha9l`H0E{k zwr_Q4BA8si+`$>G2tl82@jbchm&*k*J|}*YB=?~DhmhW|hOeA;CaA-wja$Z;1ZsxR zyw;LRz(g9E6g^&b4t${^R;J4p?!%si`l+39G`>^z|&ph|s za}Pb{F;s0$DpzX(Qtd9wGD-af zT1rx8Rqz+ZY2E=gxO(*}o`3%N|Bh>aBJC&uK@4(_4to3vFP)y>}4R^!V}n*Ca@NXaYU$gNgB}g}*dnZHnzUlMfyxGq zwph!ns)Dc6t~HocKyrUoSMg*`PN{gklO`vHu^cYW1!vB7b^OrfVBIDtWAc2ibSRxe zSDM2j0}=gwqqFT=S^)$fQ2QEIPO?nqw9J~saz(%)h|A3P>^w<&U=SWxs?hauU^Lj~ z61JpHWDE-1ys7_x|N2)J@yPQ!@oLr`<958xYu1Sv-?wkyJ|vNQLi9*SlFYogDfRA@ zln`=|l>=eK@6O?$|M&;qdFLGfY&oI%w>AI_0%^L5NQ-j{YYlwe;(uG9C@hM?!u!y~ z7VjJ25SkG``Q#JqYY${5NiJ926iPIe+PAH>!&9h`zMQ88U`^`N?xhYv17;L z{NfTDsu2R4x9=cc3+ zDD6gAaJdc!U5a2KFl}vZjnr=#QE6AAk1NGJ4WBoVH|XR(&h|O6oHRMn+#Kl_7-W+Y zlp6+&X3`vNb(vbag;`+M+NhBl(i&qC;9=V68GxjN+6c3a)Tq*O2Aa1D+L}^G+}YDW z?qU49#_?PNHfB_-7?SdjJkMveow9@9|MMT*zI{6xC+F%SirHbw<1%|4%l7Ww`*g$r zApcq@fTVMP-I1Udu7-|FqJ+k|j83P-`uaLfojQf88lbA`M#GIkT#^YxO~{+(gJ1}p92GtwMvjo4RD|=Gpa!iU}ItSNcbNwzU&wjNt^WOqyigiJzI;o6PaJ`<@t3i;x)@>uiJZi&I5KL>2cQ@Uz0X5vw+buMZ>gV z$FyX>0!g`@5g0{X%=8?FXQ6A?CZAeao(2R20PfngYpALUi;IgRLGt?b>+!z}$|mGr zjRC;Lix)9JKOcjx_Z~AdGXNTaUA}x7b8~a?yAXzNrUV~w<;oT8dto1}HQ3l_gkX(y z&NauHO?A`28h!!1U0@50h8AXHn>iryra@D=vWj^M%F*V74?YN5gBKSU@x>Qk#Bu@) zK#F(HIc#rlCog2^B(18d*vKo_Wv;sRsOt*W7Vy5t+S=N1QN{qFNuU7rCVG1g5G45u zZE{9#s43WmA%o2@eF)9N?Rfz3@y8!eR0{tOLciv7bpEMM00000NkvXXu0mjfh;oLC literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 3daee9d346..99689784f4 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1022,6 +1022,7 @@ #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\showcase.dm" #include "code\game\objects\structures\spirit_board.dm" +#include "code\game\objects\structures\stairs.dm" #include "code\game\objects\structures\statues.dm" #include "code\game\objects\structures\table_frames.dm" #include "code\game\objects\structures\tables_racks.dm" @@ -1076,6 +1077,7 @@ #include "code\game\turfs\closed.dm" #include "code\game\turfs\open.dm" #include "code\game\turfs\turf.dm" +#include "code\game\turfs\openspace\openspace.dm" #include "code\game\turfs\simulated\chasm.dm" #include "code\game\turfs\simulated\dirtystation.dm" #include "code\game\turfs\simulated\floor.dm" @@ -1355,6 +1357,7 @@ #include "code\modules\assembly\signaler.dm" #include "code\modules\assembly\timer.dm" #include "code\modules\assembly\voice.dm" +#include "code\modules\atmospherics\multiz.dm" #include "code\modules\atmospherics\environmental\LINDA_fire.dm" #include "code\modules\atmospherics\environmental\LINDA_system.dm" #include "code\modules\atmospherics\environmental\LINDA_turf_tile.dm" @@ -1909,6 +1912,7 @@ #include "code\modules\mapping\reader.dm" #include "code\modules\mapping\ruins.dm" #include "code\modules\mapping\verify.dm" +#include "code\modules\mapping\space_management\multiz_helpers.dm" #include "code\modules\mapping\space_management\space_level.dm" #include "code\modules\mapping\space_management\space_reservation.dm" #include "code\modules\mapping\space_management\space_transition.dm" @@ -1994,6 +1998,7 @@ #include "code\modules\mob\dead\observer\logout.dm" #include "code\modules\mob\dead\observer\notificationprefs.dm" #include "code\modules\mob\dead\observer\observer.dm" +#include "code\modules\mob\dead\observer\observer_movement.dm" #include "code\modules\mob\dead\observer\say.dm" #include "code\modules\mob\living\blood.dm" #include "code\modules\mob\living\bloodcrawl.dm" @@ -2390,6 +2395,7 @@ #include "code\modules\power\gravitygenerator.dm" #include "code\modules\power\lighting.dm" #include "code\modules\power\monitor.dm" +#include "code\modules\power\multiz.dm" #include "code\modules\power\port_gen.dm" #include "code\modules\power\power.dm" #include "code\modules\power\powernet.dm" @@ -2597,6 +2603,7 @@ #include "code\modules\recycling\disposal\construction.dm" #include "code\modules\recycling\disposal\eject.dm" #include "code\modules\recycling\disposal\holder.dm" +#include "code\modules\recycling\disposal\multiz.dm" #include "code\modules\recycling\disposal\outlet.dm" #include "code\modules\recycling\disposal\pipe.dm" #include "code\modules\recycling\disposal\pipe_sorting.dm"