From 2de976296660d27f9319946ca8162242b3f4d56a Mon Sep 17 00:00:00 2001 From: Segrain Date: Sun, 22 Sep 2013 13:50:16 +0300 Subject: [PATCH 1/6] EVA update. --- maps/tgstation2.dmm | 63 ++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 3e574f3a7d..842c36631e 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -886,7 +886,7 @@ "arb" = (/obj/machinery/door/airlock/glass_engineering{icon_state = "door_locked"; locked = 1; name = "Abandoned Office (KEEP OUT)"; req_access_txt = "32"; req_one_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/security/vacantoffice2) "arc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/barricade/wooden,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/vacantoffice2) "ard" = (/turf/simulated/wall,/area/lawoffice) -"are" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Internal Affairs Desk"; req_access_txt = "38"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/turf/simulated/floor/plating,/area/lawoffice) +"are" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Internal Affairs Desk"; req_access_txt = "38"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/lawoffice) "arf" = (/obj/machinery/door/airlock{name = "Internal Affairs"; req_access_txt = "38"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/lawoffice) "arg" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "arh" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/hallway/primary/fore) @@ -1216,7 +1216,7 @@ "axt" = (/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) "axu" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) "axv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) -"axw" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "E.V.A. Maintenance"; req_access_txt = "18;11;24;5;1"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"axw" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;5;11;18;24"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "axx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) "axy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "axz" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/fore) @@ -1317,7 +1317,7 @@ "azq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/clothing/head/welding,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "azr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/ai_monitored/storage/eva) "azs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"azt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"azt" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "azu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/ai_monitored/storage/eva) "azv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "azw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) @@ -1405,13 +1405,13 @@ "aBa" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/gateway) "aBb" = (/obj/machinery/gateway,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway) "aBc" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/gateway) -"aBd" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) +"aBd" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/ai_monitored/storage/eva) "aBe" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aBf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera/motion{c_tag = "EVA Motion Sensor"; dir = 4},/obj/structure/table/reinforced,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aBg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/ai_monitored/storage/eva) -"aBh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aBh" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aBi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera{c_tag = "EVA East"; dir = 8},/obj/structure/table/reinforced,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aBj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"aBj" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aBk" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aBl" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "aBm" = (/obj/machinery/door/airlock{id_tag = "Dorm1"; name = "Dorm 1"},/turf/simulated/floor/carpet{icon_state = "carpet8-0"},/area/crew_quarters/sleep) @@ -1482,7 +1482,7 @@ "aCz" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aCA" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aCB" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aCC" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aCC" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "E.V.A. Maintenance"; req_one_access_txt = "1;5;11;18;24"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aCD" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep) "aCE" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) "aCF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) @@ -1549,7 +1549,7 @@ "aDO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/structure/sign/biohazard{pixel_x = 32},/turf/simulated/floor,/area/gateway) "aDP" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aDQ" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aDR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aDR" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aDS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aDT" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aDU" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/unathi/rig_cheap,/obj/item/clothing/head/helmet/space/unathi/helmet_cheap,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) @@ -1627,9 +1627,9 @@ "aFo" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aFp" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aFq" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aFr" = (/obj/machinery/light/small{dir = 4},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/head/helmet/space/skrell/black,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/skrell/black,/obj/item/clothing/head/helmet/space/skrell/white,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/skrell/white,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aFs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aFt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aFr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aFs" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"aFt" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aFu" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aFv" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/fore) "aFw" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -1719,11 +1719,11 @@ "aHc" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aHd" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aHe" = (/obj/machinery/light/small{dir = 8},/obj/structure/dispenser/oxygen,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aHf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "18;11;24;5;1"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aHg" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aHf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/modkit/tajaran,/obj/item/device/modkit/tajaran,/obj/item/device/modkit/tajaran,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) +"aHg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aHh" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "aHi" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/hallway/primary/central) -"aHj" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central) +"aHj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aHk" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "aHl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/maintenance/fsmaint) "aHm" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitory"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) @@ -1800,13 +1800,13 @@ "aIF" = (/obj/machinery/light{dir = 4},/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/gateway) "aIG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aIH" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aII" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aIJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/ai_monitored/storage/eva) +"aII" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central) +"aIJ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/head/helmet/space/skrell/black,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/skrell/black,/obj/item/clothing/head/helmet/space/skrell/white,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/skrell/white,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aIK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aIL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/camera{c_tag = "EVA South"; dir = 1},/turf/simulated/floor,/area/ai_monitored/storage/eva) "aIM" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aIN" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aIO" = (/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/hallway/primary/central) +"aIN" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"aIO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aIP" = (/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Central Hallway North"; dir = 2},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central) "aIQ" = (/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central) "aIR" = (/turf/simulated/floor,/area/hallway/primary/central) @@ -1887,7 +1887,7 @@ "aKo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable,/obj/structure/sign/securearea,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aKp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable,/obj/structure/sign/securearea,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aKq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) -"aKr" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central) +"aKr" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aKs" = (/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central) "aKt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central) "aKu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central) @@ -5922,8 +5922,8 @@ "cjT" = (/obj/machinery/door/airlock/engineering{name = "Aft Port Solar Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cjU" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft) "cjV" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/aft) -"cjW" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/table,/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 3; pixel_y = 3},/obj/item/weapon/book/manual/engineering_construction,/turf/simulated/floor,/area/engine/engineering) -"cjX" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_y = 30},/obj/structure/table,/obj/item/weapon/book/manual/engineering_guide,/obj/item/weapon/book/manual/engineering_particle_accelerator{pixel_y = 6},/obj/item/weapon/book/manual/engineering_singularity_safety,/turf/simulated/floor,/area/engine/engineering) +"cjW" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_y = 30},/obj/structure/table,/obj/item/weapon/book/manual/engineering_guide,/obj/item/weapon/book/manual/engineering_particle_accelerator{pixel_y = 6},/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 3; pixel_y = 3},/obj/item/weapon/book/manual/engineering_construction,/turf/simulated/floor,/area/engine/engineering) +"cjX" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/table,/obj/item/device/modkit/tajaran,/turf/simulated/floor,/area/engine/engineering) "cjY" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engine/engineering) "cjZ" = (/obj/structure/table,/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/glasses/welding,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/turf/simulated/floor,/area/engine/engineering) "cka" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/engine/engineering) @@ -9215,7 +9215,6 @@ "dvk" = (/obj/structure/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/machinery/light/small{dir = 4},/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/latex,/obj/machinery/camera{c_tag = "Research Outpost Hallway Starboard"; dir = 8; network = list("Research","SS13")},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) "dvl" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dvm" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"dvn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/device/modkit/tajaran,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "dvo" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/power/emitter{anchored = 1; state = 2},/obj/structure/cable,/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/anomaly) "dvp" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction,/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/research_outpost/anomaly) "dvq" = (/obj/machinery/door/window/westleft{dir = 1; name = "Spectroscopy"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) @@ -10277,17 +10276,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatEauxauyauzatEauAauBauCatEaqWaqWauDauEauFauGauHauIatHaaaaaaamnaaaapuapuapuapuapuaafaoUaafapuapuapuapuapuaaaalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagapvauJaoYapvauKapvauLauMauNauOauPauQaqZauRauSauTauTauUauVauWauXauYauZavaavbavcaueatlatmatnavdauhatnatnaveatnatnatnavfatnasMavgavhaviaviavjavkavlavmavnasOasOasOasOasOavoavpavqavraaaaaaalOaaaaafaaaaafaafaaaaaaaoNaaaaaaaafaaaaaaaafaaaalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatEavsavtavuatEavsavtavuatEavvavwavxavxavxavxavyavzarvaaaaaaalNaaaaafaaaaafaafaaaaaaavAaaaaaaaafaaaaaaaafaaaalNaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagapvapvapvapvauKapvavBavCavCavDavCavEavCavFavGavGavGavGavHavIavJapCavKalLavLasCavMatlavNavOavdavPavQavRavSavSavTavUavSavVavWavXavYavZawaawaawbawcawdaweasOasOasOasOasOaweawfawgawhaaaaaaalOalOalNaaaaaaaafaaaaaaaoNaaaaafaafaafaafalNalNalNaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasPatEawiawjasPatEawiawjasPatHawkatHatHatHatHatHawlasoaaaaaaalNalNalNaaaaaaaafaaaawmawnawmaafaafaafaafalNalNalNaafapvapvapvapvawoawpawpawpawpawpawpawpawqapvapvawrawsawtapvawuawvawwawxawyawzawzawzawAawzawBawzawCawDawEawEawFawFawGawHawIawJaqtawKawLawMawNawOatnavdawPawPawPawQawQawRawSawPawPawTawUawVavZawaawaawbawcawWawXasOasOasOasOasOawXawYawgawhaaaaaaaaaaaaaafaafaaaaafaaaaaaawZaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxaaxbaxbaxbaxcaxbaxbaxbaxdaxeaxfaxdaxdaxdaxgatHaxhasoaaaaafaafaaaaaaaaaaaaaafaaaaxiaxjaxkaafaaaaafaaaaaaaaaaaaaaaapvaoYaoYaxlaoYaoYaoYaoYaoYaoYaoYaoYaxmaxnaxoaxpaxpaxpaxpaxpaxpaxqaxraxsaxtaxtaxtaxtaxuaxvaxtaxwaxxaxuaxtaxtaxtaxtaxyaxzaxAaxBaxCavcatnatnatnatnaugaxDawPawSawQaxEawQaxFaxGaxHaxIaxJaxKaxLaxMaxMaxNawcaxOaxPasOasOasOasOasOaxQaxRaxSaxTaaaaaaaaaaaaaaaaafaaaaafaaaaxUaxVaxUaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxaaxbaxbaxbaxcaxbaxbaxbaxdaxeaxfaxdaxdaxdaxgatHaxhasoaaaaafaafaaaaaaaaaaaaaafaaaaxiaxjaxkaafaaaaafaaaaaaaaaaaaaaaapvaoYaoYaxlaoYaoYaoYaoYaoYaoYaoYaoYaxmaxnaxoaxpaxpaxpaxpaxpaxpaxqaxraxsaxtaxtaxtaxtaxuaxvaxtaCCaxxaxuaxtaxtaxtaxtaxyaxzaxAaxBaxCavcatnatnatnatnaugaxDawPawSawQaxEawQaxFaxGaxHaxIaxJaxKaxLaxMaxMaxNawcaxOaxPasOasOasOasOasOaxQaxRaxSaxTaaaaaaaaaaaaaaaaafaaaaafaaaaxUaxVaxUaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxWaxXaxYaxZayaaxYaxYaybaxZaxYaycaydayeayeayfatHaxhatIaafaafaaaaaaaaaaaaaaaaafaygayhayiayjaykaaaaafaaaaaaaaaaaaaaaapvaoYapvaylaymaynaynaynaynaynaynaynayoaylaypayqayqayqayqayqayqayqayraysaxtaytayuayvaywayxayyayzayAayBayCayuayDaxtayEapCayFalLayGatjatkatlatmatnavdayHayIaxHaxHayJayKayLayMayNavWayOayPayQayRayRaySayTayUayVasOasOasOasOasOayWasMasMasMaaaaaaaaaaaaaafaafaafaafaaaayXayYayXaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatEaxaayZaxaazaaxYaxYazbaxaayZaxaazcaxXayaazdatHaxhatHatHazeatLatLatLatLatMatHazfazgazhaziazfapvapvawrawsawtapvapvapvaoYarxaylaaaaafaaaaafaaaaafaaaaafaaaaylaypayqazjazkazlazmaznayqayraoYaxtazoazoazpazqazrazsaztazuazvazwazxazxaxtayEapCazyalLayGatjaueatlatmatnaugazzazAazBazCazDazEazFazFazGazFasMazHazIazJazKazLazMasMazNasOasOasOasOasOazNasMaafaaaaaaaaaaaaaaaaafaafaaaaafazOazPazQazRazSaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatEaxaayZaxaazaaxYaxYazbaxaayZaxaazcaxXayaazdatHaxhatHatHazeatLatLatLatLatMatHazfazgazhaziazfapvapvawrawsawtapvapvapvaoYarxaylaaaaafaaaaafaaaaafaaaaafaaaaylaypayqazjazkazlazmaznayqayraoYaxtazoazoazpazqazrazsaIOazuazvazwazxazxaxtayEapCazyalLayGatjaueatlatmatnaugazzazAazBazCazDazEazFazFazGazFasMazHazIazJazKazLazMasMazNasOasOasOasOasOazNasMaafaaaaaaaaaaaaaaaaafaafaaaaafazOazPazQazRazSaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazTasPazUavtazVazWazXazYazZazVavtaAaaAbasPaAcaAdatHaAeaAfaAfaAfaAfaAfaAfavzaAgaAhazfaAiaAjaAkazfaAlaoYaoYaoYaoYaoYaoYaoYaoYaAmaylaafaAnaAnaAnaAnaAnaAnaAnaafaylaypayqaAoaApaAqaAraAoayqayraAsaxtaxtaxtaxtaAtaAuayuaAvaAuaAwaxtaxtaxtaxtayEapCaAxalLayGatjaueatlatmatnavdaAyazFazFazFazFazFazFaAzaAAaABazFasMasMasMasMaACasMasMazNasOasOasOasOasOazNasMaaaaaaaaaaaaaaeaaaaaaaaaaaaaafaADaAEaAFaAGaADaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxWayZaAHaAIaAIaAIaAIaAJayZaxWaAKasPaALaAMaANaANaANaANaANaANaANaANawlaAOaAhazfaAPaAQaARazfaASaATaASaASaASaASaASaASaASaASaAUaaaaAnaAVaAWaAXaAYaAZaAnaaaaylaypayqaAoaBaaBbaBcaAoayqayrapvaxtaBdaBeazpaBfaBgazsaBhaBgaBiaBjaBkaBkaxtayEapCayFalLaBlasCavMatlavNaBmavdaAyazFaBnaAAaBoaBoazFaAzaBpaABazFaBqaBraBsaBtaBuaBvaafaBwaBxaBxaBxaBxaBxaByaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaADaBzaBAaBBaADaafaaaaaaaBCaBDaBDaBDaBDaBEaBFaBDaBDaBDaBDaBGaBGaBDaBHaBIaBJaBKaBLaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBMaBNaBOaBNaBNaBPaBQaBNaBNaBOaBRaBSasPazaaBTaBUaBVaBWaBXaBYaBZaCaaANawlaCbatHazfazfaCcaCdaAUaCeaCfaCgaChaCiaCjaCkaClaCmaCnaAUaafaAnaCoaCpaCqaCraCsaAnaafaylaypayqaCtaCuaCvaCuaCwayqayraCxaxtayuayuaCyaCzaAuaCAaAvaAuaCBaCCayuaFraxtayEapCayFalLayGawLawMaCDawOatnaCEaCFazFaCGaAAaAAaAAazGaCHaCIaCJazFaCKaCLaCMaCNaCOaBvaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaADaCPaCQaCRaADaBvaCSaCTaCUaCVaCWaCWaCWaCWaCWaCWaCXaCYaCYaCZaDaaDbaCYaCYaDcaDdaDeaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBMaBRaBNaDfaDgaDgaDhaDiaDjaDkaDlaDgaDgaDmaDnaxaazaaDoaANaDpaDqaDraDsaDraDtaDuaDvaDwaqWaDxaDyaDzaAfaDAaDBaDCaDDaDDaDDaDEaDDaDDaDFaCfaAUaaaaAnaDGaDHaDIaCraDJaAnaaaaylaypayqaDKaDLaDMaDNaDOayqayraDPaxtaxtaxtaxtaDQaAuayuaDRaBgaDSazwaDTaDUaxtaDVaszaDWalLayGaDXaDYaDYaDYaDYaDZaEaaEbaEcaEdaEeaEeaEeaEfaEeaEgaEhaEiaEjaEkaElaEmaBvaBvaBvaBvaBvaBvaBvaBvaBvaBvaCSaCTaBvaBvaBvaCSaEnaEoaBvaBvaADaADaEpaEqaADaEraEsaEtaEuaEvaEwaEwaEwaEwaEwaEraExaEyaEyaEzaEAaEBaEyaECaEDaEEaECaECaECaECaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDmaEFaEGaEHaDgaEIaDgaEIaDgaEIaDgaEIaDgaEJaEKazVazaaELaANaEMaENaEOaEPaEQaERaANaESaETaAfaEUaAfaEVaqWaASaEWaDFaDDaDDaDDaDDaDDaDDaEXaEYaEZaFaaFbaFcaFdaFeaFfaFgaAnaafaylaFhaFiaFjaFkaFlaFmaFnaFiaFoaFpaxtaFqayuazpdvnaBgazsaFsaAuaFtaxtaxtaxtaxtaFuaFvaFwalLaFxarrarrarraFyaFzaFAaFBaFCaFDaFEaFCaFFaFCaFGaFCaFHaFIaFJaFKaFLaBtaFMaFNaFOaFPaFPaFNaFQaFRaFRaFRaFRaFRaFSaFTaFRaFUaFVaFWaFXaFYaFZaGaaGbaGcaGdaGdaGdaGeaGfaGgaGhaEwaGiaGjaGkaEwaEyaGlaEyaGmaGnaGoaGpaGqaGraGsaGtaGuaGvaGwaGxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGyaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGzaDgaDgaBOaDgaEIaDgaEIaGAaEIaDgaEIaDgaEJaEKazVazaaGBaANaGCaGDaGEaGFaGEaBUaBUaGGaGHaGIaGJaGKaGJaGJaGLaGMaGNaGOaGOaGOaGPaGOaGOaGQaGRaAUaaaaGSaAnaGTaGUaGTaAnaAnaaaaylaGVayqaGWaGXaGYaGZaHaaHbaHcaHdaxtaHeayuaHfaCzaAuayuaAvaAuaCBaHgaxtaxtaxtaHhaHiaHjalLaHkalLalLalLaHlalLaHmaHnazFaHoaAAazFaHpazFaHqazFaHraHsaHtaHuaHvaHwaHxaHyaHzaHAaHBaHCaHDaHBaHBaHEaBDaHyaHFaHyaHGaHyaHyaHHaHIaHJaHKaHKaHLaHMaHNaHOaHKaHPaHQaHRaHSaHTaHUaHVaHWaEwaHXaHYaEyaHZaIaaIbaIcaGqaIdaIeaGtaIfaECaECaECaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDmaIgaEGaEHaDgaEIaDgaEIaDgaEIaDgaEIaDgaEJaEKazVaIhaIiaIjaIkaIlaIlaIlaIiaImaInaIiaIoaIpaIqaIrauIauIaASaGRaIsaCfaItaGRaGRaIuaIvaIwaIxaAUaaaaIyaaaaIzaIAaIzaaaaafaaaaylaGVayqaIBaICaIDaIEaIFayqaIGaoYaxtaIHayuazpaIIaIJazsaIKaILaIMaINaxtaIOaIPaIQaIRaISaITaIUaIVaaaaaaaIWaIXaIYaIZazFaJaaAAaAAaAAaCIaAAaAAaAAaJbaBtaJcaBtaJdaJeaBtaJfaBtaJgaJhaJiaJjaJkaJlaJmaJnaJoaJmaJpaJmaJmaJmaJmaJqaJmaJmaJraJmaJmaJmaJmaJsaJtaHSaJuaJvaJwaJxaJyaEwaJzaJAaJBaJCaJDaJEaIcaJFaIdaIeaGtaIeaJGaJHaJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJJaJJaJJaJJaJJaJJaJJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJKaJLaBNaDfaDgaDgaDgaJMaDgaDgaJNaDgaDgaDmaJOaxWazaaxYaJPaJQaJQaJQaJQaJQaJQaJQaJRaJSatHatHaJTatHatHaASaJUaJVaJWaJXaJXaJXaJXaJYaJZaKaaAUaKbaKcaKdaKeaKfaKgaKdaKdaKhaylaKiayqayqayqaKjaKkayqayqaKlaKmaxtaxtaxtaxtaKnaKoaHfaHfaKpaKqaxtaxtaKraIRaIRaIRaIRaIRaKsaKtaKuaKvaIWaKwaIYaKxazFazFazFazFazFazFazFazFazFaJbaKyaKzaKAaKBaKCaKDaKEaKFaJgaKGaKHaKIaKJaKKaJmaKLaKMaKNaKOaKNaKPaKQaKRaKSaKTaKUaKVaKWaKXaKYaJmaKZaLaaLbaJuaLcaJwaJxaLdaEwaLeaLfaLgaLhaLiaIcaIcaEyaECaLjaGtaIeaLkaLlaLmaaaaaaaaaaaaaaaaaaaaaaaaaaaaJJaJJaJJaJJaJJaJJaJJaJJaJJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxWayZaAHaAIaAIaAIaAIaAJayZaxWaAKasPaALaAMaANaANaANaANaANaANaANaANawlaAOaAhazfaAPaAQaARazfaASaATaASaASaASaASaASaASaASaASaAUaaaaAnaAVaAWaAXaAYaAZaAnaaaaylaypayqaAoaBaaBbaBcaAoayqayrapvaxtaKraBeazpaBfaBgazsaIOaBgaBiazwaBkaBkaxtayEapCayFalLaBlasCavMatlavNaBmavdaAyazFaBnaAAaBoaBoazFaAzaBpaABazFaBqaBraBsaBtaBuaBvaafaBwaBxaBxaBxaBxaBxaByaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaADaBzaBAaBBaADaafaaaaaaaBCaBDaBDaBDaBDaBEaBFaBDaBDaBDaBDaBGaBGaBDaBHaBIaBJaBKaBLaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBMaBNaBOaBNaBNaBPaBQaBNaBNaBOaBRaBSasPazaaBTaBUaBVaBWaBXaBYaBZaCaaANawlaCbatHazfazfaCcaCdaAUaCeaCfaCgaChaCiaCjaCkaClaCmaCnaAUaafaAnaCoaCpaCqaCraCsaAnaafaylaypayqaCtaCuaCvaCuaCwayqayraCxaxtaytayuaCyaCzaAuaCAaAvaAuaCBaxwayuaDRaxtayEapCayFalLayGawLawMaCDawOatnaCEaCFazFaCGaAAaAAaAAazGaCHaCIaCJazFaCKaCLaCMaCNaCOaBvaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaADaCPaCQaCRaADaBvaCSaCTaCUaCVaCWaCWaCWaCWaCWaCWaCXaCYaCYaCZaDaaDbaCYaCYaDcaDdaDeaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBMaBRaBNaDfaDgaDgaDhaDiaDjaDkaDlaDgaDgaDmaDnaxaazaaDoaANaDpaDqaDraDsaDraDtaDuaDvaDwaqWaDxaDyaDzaAfaDAaDBaDCaDDaDDaDDaDEaDDaDDaDFaCfaAUaaaaAnaDGaDHaDIaCraDJaAnaaaaylaypayqaDKaDLaDMaDNaDOayqayraDPaxtaxtaxtaxtaDQaAuayuaFraBgaDSaFsayuaDTaxtaDVaszaDWalLayGaDXaDYaDYaDYaDYaDZaEaaEbaEcaEdaEeaEeaEeaEfaEeaEgaEhaEiaEjaEkaElaEmaBvaBvaBvaBvaBvaBvaBvaBvaBvaBvaCSaCTaBvaBvaBvaCSaEnaEoaBvaBvaADaADaEpaEqaADaEraEsaEtaEuaEvaEwaEwaEwaEwaEwaEraExaEyaEyaEzaEAaEBaEyaECaEDaEEaECaECaECaECaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDmaEFaEGaEHaDgaEIaDgaEIaDgaEIaDgaEIaDgaEJaEKazVazaaELaANaEMaENaEOaEPaEQaERaANaESaETaAfaEUaAfaEVaqWaASaEWaDFaDDaDDaDDaDDaDDaDDaEXaEYaEZaFaaFbaFcaFdaFeaFfaFgaAnaafaylaFhaFiaFjaFkaFlaFmaFnaFiaFoaFpaxtaFqayuazpaHjaBgazsaHgaAuaCBaFtayuaHfaxtaFuaFvaFwalLaFxarrarrarraFyaFzaFAaFBaFCaFDaFEaFCaFFaFCaFGaFCaFHaFIaFJaFKaFLaBtaFMaFNaFOaFPaFPaFNaFQaFRaFRaFRaFRaFRaFSaFTaFRaFUaFVaFWaFXaFYaFZaGaaGbaGcaGdaGdaGdaGeaGfaGgaGhaEwaGiaGjaGkaEwaEyaGlaEyaGmaGnaGoaGpaGqaGraGsaGtaGuaGvaGwaGxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGyaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGzaDgaDgaBOaDgaEIaDgaEIaGAaEIaDgaEIaDgaEJaEKazVazaaGBaANaGCaGDaGEaGFaGEaBUaBUaGGaGHaGIaGJaGKaGJaGJaGLaGMaGNaGOaGOaGOaGPaGOaGOaGQaGRaAUaaaaGSaAnaGTaGUaGTaAnaAnaaaaylaGVayqaGWaGXaGYaGZaHaaHbaHcaHdaxtaHeayuaxwaCzaAuayuaAvaAuaCBaINayuaIJaxtaHhaHiaIIalLaHkalLalLalLaHlalLaHmaHnazFaHoaAAazFaHpazFaHqazFaHraHsaHtaHuaHvaHwaHxaHyaHzaHAaHBaHCaHDaHBaHBaHEaBDaHyaHFaHyaHGaHyaHyaHHaHIaHJaHKaHKaHLaHMaHNaHOaHKaHPaHQaHRaHSaHTaHUaHVaHWaEwaHXaHYaEyaHZaIaaIbaIcaGqaIdaIeaGtaIfaECaECaECaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDmaIgaEGaEHaDgaEIaDgaEIaDgaEIaDgaEIaDgaEJaEKazVaIhaIiaIjaIkaIlaIlaIlaIiaImaInaIiaIoaIpaIqaIrauIauIaASaGRaIsaCfaItaGRaGRaIuaIvaIwaIxaAUaaaaIyaaaaIzaIAaIzaaaaafaaaaylaGVayqaIBaICaIDaIEaIFayqaIGaoYaxtaIHayuazpaztaBdazsaIKaILaIMaBhaBjaDUaxtaIQaIRaISaIPaIUaIVaaaaaaaIWaIXaIYaIZazFaJaaAAaAAaAAaCIaAAaAAaAAaJbaBtaJcaBtaJdaJeaBtaJfaBtaJgaJhaJiaJjaJkaJlaJmaJnaJoaJmaJpaJmaJmaJmaJmaJqaJmaJmaJraJmaJmaJmaJmaJsaJtaHSaJuaJvaJwaJxaJyaEwaJzaJAaJBaJCaJDaJEaIcaJFaIdaIeaGtaIeaJGaJHaJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJJaJJaJJaJJaJJaJJaJJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJKaJLaBNaDfaDgaDgaDgaJMaDgaDgaJNaDgaDgaDmaJOaxWazaaxYaJPaJQaJQaJQaJQaJQaJQaJQaJRaJSatHatHaJTatHatHaASaJUaJVaJWaJXaJXaJXaJXaJYaJZaKaaAUaKbaKcaKdaKeaKfaKgaKdaKdaKhaylaKiayqayqayqaKjaKkayqayqaKlaKmaxtaxtaxtaxtaKnaKoaxwaxwaKpaKqaxtaxtaxtaxtaIRaIRaIRaIRaKsaKtaKuaKvaIWaKwaIYaKxazFazFazFazFazFazFazFazFazFaJbaKyaKzaKAaKBaKCaKDaKEaKFaJgaKGaKHaKIaKJaKKaJmaKLaKMaKNaKOaKNaKPaKQaKRaKSaKTaKUaKVaKWaKXaKYaJmaKZaLaaLbaJuaLcaJwaJxaLdaEwaLeaLfaLgaLhaLiaIcaIcaEyaECaLjaGtaIeaLkaLlaLmaaaaaaaaaaaaaaaaaaaaaaaaaaaaJJaJJaJJaJJaJJaJJaJJaJJaJJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJKaBNaBOaBNaBNaLnaBQaBNaBNaBOaJLaLoasPaLpaxYaxaaLqaLqaLraLqaLsatEaLtaLuaJSaLvaLwaLxaLyaLzaLAaLBaLCaLBaLBaLBaLBaLBaLBaLBaLDaLEaLFaLGaLHaLHaLIaLJaLHaLHaLHaLKaLLaLMaLNaLHaLOaLPaLQaLRaLSaIRaLTaLUaIRaISaITaITaITaITaITaITaLVaLWaLXaLYaLZaMaaMbaMcaMdaIRaIRaIRaMeaMfaMgaMfaMhaMiaMjaMkaIRaMlaIRaBtaMmaMnaMoaMpaMqaMqaMraMsaMtaMuaJgaMvaMwaMxaMxaMyaJmaMzaMAaMBaMCaMBaMBaMDaMEaMFaMEaMGaMHaMIaMJaMEaJmaJsaMKaMLaMLaMMaMNaMLaMOaEwaMPaMQaEyaMRaMSaIcaIcaEyaMTaMUaMVaIeaECaECaECaaaaafaaaaaaaaaaaaaaaaaaaaaaJJaJJaJJaJJaJJaJJaJJaJJaJJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxaayZaMWaAIaAIaAIaAIaMXayZaxaaAKasPaALaMYazVaMZaNaaNbaNbaNcatEaNdaLuaNeaNfaLwaNgaNhaNiaNjaNkaNlaLBaLBaLBaLBaLBaLBaLBaLDaNmaNnaLBaLBaLBaNoaNpaLBaLBaLBaLBaNqaLBaLBaLBaNraNmaLwaLRaIRaIRaIRaIRaIRaIRaIRaIRaIRaIRaIRaIRaNsaNtaNuaNvaNwaNxaNyaNzaNAaIRaIRaIRaLRaIRaIRaIRaIRaIRaIRaIRaIRaNBaIRaBtaNCaNDaMqaNEaMqaMqaNFaNGaMtaNHaJgaNIaNJaNKaNLaNMaJmaNNaNOaNPaNQaNRaNSaJmaNTaNUaNTaJmaJmaJmaJraJmaJmaJsaJtaNVaHSaHSaNWaHSaNXaEwaEyaEyaEyaEyaEyaEyaNYaEyaIeaIeaGtaIeaNZaOaaECaaaaafaaaaaaaaaaaaaaaaaaaaaaJJaJJaJJaJJaJJaJJaJJaJJaJJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafazTasPazVavtazVaObaOcaOdaOeazVavtaOfaOgasPazaaxYazVaOhaOiaNbaNbaNcatEaOjaLuaJSaNfaLwaOkaOlaOmaOmaOmaOnaOoaOpaOmaOqaOmaOmaOraOsaOtaOuaOmaOvaOwaOxaOyaOzaOAaOBaOCaODaOEaOEaOFaOGaNmaLwaLRaIRaOHaIRaOIaOIaOIaOIaOIaOIaOIaOIaOJaOKaOIaOIaOIaOIaOLaOIaOIaOIaOIaOIaOMaONaOIaOIaOIaOIaOIaOIaOIaIRaIRaIRaBtaOOaOPaOQaOQaOQaORaOSaNGaMtaOTaJgaJgaJgaJgaJgaOUaJmaOVaOWaOXaOYaNPaNPaJmaOZaPaaPbaPcaPbaPbaPdaPeaJmaJsaJtaPfaPfaPgaPhaPiaPiaPjaEwaPkaPlaPmaECaPnaPoaPpaIeaIeaPqaPraECaPsaECaPtaPtaPtaaaaaaaaaaaaaaaaaaaJJaJJaJJaJJaJJaJJaJJaJJaJJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10349,7 +10348,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacfjcfWcflaafcfjcfWcflaaacfjcfWcflaaaaaaaaaaaaaaaaafaaaaafaaaaafaafaaaaaabGrccrcbEchvchwchwchxcbEcbEcbEcbEcbEcbEcbEcbEcbEcbEcbEcbEcbEbGrchybGrchzbGrbQdchAchBchCchDchEchFchGchHbQichIchJchKchLchMchNchMchLchOchLchPcfDchQaafaafaafaafaafaafaafaaaaaaaaaaaaaaabUPbUPchRchSchTbUPbUPchUbUPbUPbUPchUbZfaaaaaaaaaaaaaaaaaaaaabXpceeceeceecgychVcdhchWchXchYchZciaciacibciccidbXpaafaafcfUaafciecifcifcifcifcigchucihciiciiciiciicijaafcfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalNaafaaacfjcfWcflaafcfjcfWcflaaacfjcfWcflaafaaaaaaaaaaaaaafaafcikcilcilcilcilbGrbGrccrcbEcimcincinciocipciqcircircircircircirciscircircitcitcirciucivciwcixbQdciycizciAciBciCciDbRfciEcahbTnciFciGciHciIciJciKciLbSxciMciNciObSuaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafbUPcchcePciPbUPaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaabXpcdjcdjcdjcdjciQbZmchociRciSchrbZmbZmciTbZmciUbXpaaaaaacfUaafciVciVciVciVciVaaachuaaaciVciVciVciVciVaafcfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOaaaaafaaaaafaafciWaafaafaafciWaafaaaaafciWaafaaaaaaaaaaaaaaaciXciYciZcjacjbcjccjdcjecbCcjfcbEcbEcjgcjhcbEcbEbPUcjicjicjicjicjicjicjjcjicjicjicjkcjkcjlcjmcjkcjkcjncjocizciAbRfbRfbRfbRfcjpcjqcjrcjscjtcjucjvcjwcjvcjucjvcjxcjvcjxcjyaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaacjzaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaabXpcdccddcdecjAcgzcdhcjBbZocjCcjDcjDcjEcjFcjGcjHbXpaaaaaacfUaaaaafaaaaafaafaafaaachuaaaaafaaaaafaaaaafaaacfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalNaafcjIcjJcjJcjKcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjMcjNcjOcjPcjQcjRcjScjTcjUbIXccrcjVcbEcbEcbEcbEbIXbPUcjicjWcjXcjYcjZckackbckcckdckeckfckgckhckickjckkcklckmcknciAbRfbRfbRfbRfckobQdaafckpaafckqaafckpaafckqaafckraafckraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacksaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaabXpceecefceecktcehbZmbZnbZockubZmbZmckvcdjcdjcdjbXpaaaaaacfUaaachtchtchtchtchtaafchuaafchtchtchtchtchtaafcfUaaaaaaaaaaaaaaaaaaaaaaaackwaaaaaaaaackwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalNaafcjIcjJcjJcjKcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjLcjMcjNcjOcjPcjQcjRcjScjTcjUbIXccrcjVcbEcbEcbEcbEbIXbPUcjicjXcjWcjYcjZckackbckcckdckeckfckgckhckickjckkcklckmcknciAbRfbRfbRfbRfckobQdaafckpaafckqaafckpaafckqaafckraafckraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacksaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaabXpceecefceecktcehbZmbZnbZockubZmbZmckvcdjcdjcdjbXpaaaaaacfUaaachtchtchtchtchtaafchuaafchtchtchtchtchtaafcfUaaaaaaaaaaaaaaaaaaaaaaaackwaaaaaaaaackwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOaaaaafaaaaafaafckxaafaaaaafckxaafaaaaafckxaafaaaaaaaaaaaaaaaciXciYckyckzckAckBcilckCbIXckDcbCcbCcbCcbCcbCcbCckEcjickFckGckHckHckIckJckKckLckMckNckOckPckQckRckSckTckmcizciAckUckVbRfbRfckWbQdbSCckXbUKckXbSCckXbUKckXbSCckYbUKckZbSCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXpceeceeceecjAclaclbclccldclebZmbZmclfbZmclgbZmbYmaafaafcfUaafciecifcifcifcifcigchucihciiciiciiciicijaafcfUaaaaaaaaaaaaaaaaaaaaaaaackwckwckwckwckwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalNaafaafcfjclhcflaaacfjclhcflaaacfjclhcflaafaaaaaaaaaaaaaafaafclicilcilcilcilbGrcaRcbHbIXcljbIXbIXbIXclkbTbcjicllckHckHckHckHclmckKckHckHclncloclpclqclrclscltckmcluclvclwclxclybRfclzbQdbSCclAclBclCbSCclDclEclFbSCclGclHclIbSCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaAbXpclJclKclKclLclMclNclMclOclPclQclRclScdhclTclUaaaaaacfUaafciVciVciVciVciVaaachuaafciVciVciVciVciVaaacfUaaackwaaaaaackwaaaaaackwckwckwckwckwckwckwaaaaaackwaaaaaackwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfjclhcflaafcfjclhcflaaacfjclhcflaaaaaaaaaaafaaaaafaafaafaaaaaaaaaaaabGrclVclWclWclXbGrbGrbGrbGrclYclZcmackHckHcmbckHclmckKckHcmccmdcmecmfcmgcmhcmicmdcmjbRfciAcmkcmlcmmcmnbRfbQdbSCcmocmpcmobSCcmqcmrcmqbSCcmscmtcmubSCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjzaaabXpcmvcmwcmxcmycmzcmwcmAcmBcmzcmwcmCbXpaaaaaacfVaaaaafaaaaafaaaaafaaacmDaaaaafaaaaafaafaafaafcfUaaackwckwckwckwaaackwckwckwckwckwckwckwckwckwaaackwckwckwckwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGyaaaaaaaaaaaaaaaaaaaaa From cffa100caa5eca85f06f5cb9c814a95c2693a148 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 5 Oct 2013 00:29:25 -0700 Subject: [PATCH 2/6] Reverted both LordBraindead and my own work on firecode back to when it was stable. Fixed some issue with phantom-fires-in-pipes. Removed some useless things left over from FEA. --- code/ZAS/FEA_gas_mixture.dm | 11 +- code/ZAS/Fire.dm | 365 ++++++++++++++++------------------ code/ZAS/Variable Settings.dm | 5 +- code/setup.dm | 6 +- 4 files changed, 190 insertions(+), 197 deletions(-) diff --git a/code/ZAS/FEA_gas_mixture.dm b/code/ZAS/FEA_gas_mixture.dm index 89259c281b..a4bdb02206 100644 --- a/code/ZAS/FEA_gas_mixture.dm +++ b/code/ZAS/FEA_gas_mixture.dm @@ -57,6 +57,8 @@ What are the archived variables for? var/tmp/graphic_archived = 0 var/tmp/fuel_burnt = 0 + var/reacting = 0 + //FOR THE LOVE OF GOD PLEASE USE THIS PROC //Call it with negative numbers to remove gases. @@ -207,14 +209,13 @@ What are the archived variables for? //Inputs: None //Outputs: If a fire occured - var/reacting = 0 //set to 1 if a notable reaction occured (used by pipe_network) + //set to 1 if a notable reaction occured (used by pipe_network) - if(temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) - if(zburn(null) > 0) - reacting = 1 + zburn(null) return reacting +/* /datum/gas_mixture/proc/fire() //Purpose: Calculating any fire reactions. //Called by: react() (See above) @@ -223,7 +224,7 @@ What are the archived variables for? return zburn(null) - /*var/energy_released = 0 + var/energy_released = 0 var/old_heat_capacity = heat_capacity() var/datum/gas/volatile_fuel/fuel_store = locate(/datum/gas/volatile_fuel) in trace_gases diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index d057bad4c3..8370e717ba 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -11,6 +11,8 @@ Attach to transfer valve and open. BOOM. */ + + //Some legacy definitions so fires can be started. atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) return null @@ -19,145 +21,160 @@ atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0) + turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) - if(fire_protection > world.time-300) + if(fire_protection > world.time-300) return + var/datum/gas_mixture/air_contents = return_air(1) + if(!air_contents) return 0 + + /*if(active_hotspot) + if(soh) + if(air_contents.toxins > 0.5 && air_contents.oxygen > 0.5) + if(active_hotspot.temperature < exposed_temperature) + active_hotspot.temperature = exposed_temperature + if(active_hotspot.volume < exposed_volume) + active_hotspot.volume = exposed_volume + return 1*/ + var/igniting = 0 if(locate(/obj/fire) in src) return 1 - var/datum/gas_mixture/air_contents = return_air() - if(!air_contents || exposed_temperature < PLASMA_MINIMUM_BURN_TEMPERATURE) - return 0 - - var/igniting = 0 + var/datum/gas/volatile_fuel/fuel = locate() in air_contents.trace_gases var/obj/effect/decal/cleanable/liquid_fuel/liquid = locate() in src - - if(air_contents.check_combustability(liquid)) + if(air_contents.calculate_firelevel(liquid) > vsc.IgnitionLevel && (fuel || liquid || air_contents.toxins > 0.5)) igniting = 1 + if(air_contents.oxygen < 0.5) + return 0 if(! (locate(/obj/fire) in src)) - - new /obj/fire(src,1000) + var/obj/fire/F = new(src,1000) + F.temperature = exposed_temperature + F.volume = CELL_VOLUME //active_hotspot.just_spawned = (current_cycle < air_master.current_cycle) //remove just_spawned protection if no longer processing this cell return igniting -/obj/fire - //Icon for fire on turfs. +obj + fire + //Icon for fire on turfs. - anchored = 1 - mouse_opacity = 0 + anchored = 1 + mouse_opacity = 0 - //luminosity = 3 + //luminosity = 3 - icon = 'icons/effects/fire.dmi' - icon_state = "1" - - layer = TURF_LAYER - - var/firelevel = 10000 //Calculated by gas_mixture.calculate_firelevel() - -/obj/fire/process() - . = 1 - - //get location and check if it is in a proper ZAS zone - var/turf/simulated/floor/S = loc - if(!S.zone) - del src - - if(!istype(S)) - del src - - var/datum/gas_mixture/air_contents = S.return_air() - //get liquid fuels on the ground. - var/obj/effect/decal/cleanable/liquid_fuel/liquid = locate() in S - //and the volatile stuff from the air - //var/datum/gas/volatile_fuel/fuel = locate() in air_contents.trace_gases - - //check if there is something to combust - if(!air_contents.check_combustability(liquid)) - del src - - //get a firelevel and set the icon - firelevel = air_contents.calculate_firelevel(liquid) - - if(firelevel > 6) - icon_state = "3" - SetLuminosity(7) - else if(firelevel > 2.5) - icon_state = "2" - SetLuminosity(5) - else + icon = 'icons/effects/fire.dmi' icon_state = "1" - SetLuminosity(3) - //im not sure how to implement a version that works for every creature so for now monkeys are firesafe - for(var/mob/living/carbon/human/M in loc) - M.FireBurn(firelevel, air_contents.temperature, air_contents.return_pressure() ) //Burn the humans! + var + volume = CELL_VOLUME + temperature = PLASMA_MINIMUM_BURN_TEMPERATURE + firelevel = 10000 //Calculated by gas_mixture.calculate_firelevel() + archived_firelevel = 0 + + process() + . = 1 + + if(firelevel > vsc.IgnitionLevel) + + var/turf/simulated/floor/S = loc + if(!S.zone) del src //Cannot exist where zones are broken. + + if(istype(S)) + var + datum/gas_mixture/air_contents = S.return_air() + //Get whatever trace fuels are in the area + datum/gas/volatile_fuel/fuel = locate() in air_contents.trace_gases + //Also get liquid fuels on the ground. + obj/effect/decal/cleanable/liquid_fuel/liquid = locate() in S + + var/datum/gas_mixture/flow = air_contents.remove_ratio(0.25) + //The reason we're taking a part of the air instead of all of it is so that it doesn't jump to + //the fire's max temperature instantaneously. + + firelevel = air_contents.calculate_firelevel(liquid) + + //Ensure that there is an appropriate amount of fuel and O2 here. + if(firelevel > 0.25 && flow.oxygen > 0.3 && (air_contents.toxins || fuel || liquid)) + + for(var/direction in cardinal) + if(S.air_check_directions&direction) //Grab all valid bordering tiles + + var/turf/simulated/enemy_tile = get_step(S, direction) + + if(istype(enemy_tile)) + //If extinguisher mist passed over the turf it's trying to spread to, don't spread and + //reduce firelevel. + if(enemy_tile.fire_protection > world.time-30) + firelevel -= 1.5 + continue + + //Spread the fire. + if(!(locate(/obj/fire) in enemy_tile)) + if( prob( firelevel*10 ) && S.CanPass(null, enemy_tile, 0,0) && enemy_tile.CanPass(null, S, 0,0)) + new/obj/fire(enemy_tile,firelevel) + + if(flow) + + //Ensure adequate oxygen and fuel. + if(flow.oxygen > 0.3 && (flow.toxins || fuel || liquid)) + + //Change icon depending on the fuel, and thus temperature. + if(firelevel > 6) + icon_state = "3" + else if(firelevel > 2.5) + icon_state = "2" + else + icon_state = "1" + + //Ensure flow temperature is higher than minimum fire temperatures. + flow.temperature = max(PLASMA_MINIMUM_BURN_TEMPERATURE+0.1,flow.temperature) + + //Burn the gas mixture. + flow.zburn(liquid) + if(fuel && fuel.moles <= 0.00001) + del fuel + + else + + del src - //spread! - for(var/direction in cardinal) - if(S.air_check_directions&direction) //Grab all valid bordering tiles + S.assume_air(flow) //Then put it back where you found it. - var/turf/simulated/enemy_tile = get_step(S, direction) - - if(istype(enemy_tile)) - //If extinguisher mist passed over the turf it's trying to spread to, don't spread and - //reduce firelevel. - if(enemy_tile.fire_protection > world.time-30) - firelevel -= 1.5 - continue - - //Spread the fire. - if(!(locate(/obj/fire) in enemy_tile)) - if( prob( 50 + 50 * (firelevel/vsc.fire_firelevel_multiplier) ) && S.CanPass(null, enemy_tile, 0,0) && enemy_tile.CanPass(null, S, 0,0)) - new/obj/fire(enemy_tile,firelevel) - - //seperate part of the present gas - //this is done to prevent the fire burning all gases in a single pass - var/datum/gas_mixture/flow = air_contents.remove_ratio(vsc.fire_consuption_rate) - -///////////////////////////////// FLOW HAS BEEN CREATED /// DONT DELETE THE FIRE UNTIL IT IS MERGED BACK OR YOU WILL DELETE AIR /////////////////////////////////////////////// - - if(flow) - if(flow.check_combustability(liquid)) - //Ensure flow temperature is higher than minimum fire temperatures. - //this creates some energy ex nihilo but is necessary to get a fire started - //lets just pretend this energy comes from the ignition source and dont mention this again - //flow.temperature = max(PLASMA_MINIMUM_BURN_TEMPERATURE+0.1,flow.temperature) - - //burn baby burn! - flow.zburn(liquid,1) - - //merge the air back - S.assume_air(flow) - -///////////////////////////////// FLOW HAS BEEN REMERGED /// feel free to delete the fire again from here on ////////////////////////////////////////////////////////////////// + else + del src + else + del src + else + del src -/obj/fire/New(newLoc,fl) - ..() - - if(!istype(loc, /turf)) - del src - - dir = pick(cardinal) - SetLuminosity(3) - firelevel = fl - air_master.active_hotspots.Add(src) + for(var/mob/living/carbon/human/M in loc) + M.FireBurn(temperature, min(max(0.1,firelevel / 20),10)) //Burn the humans! -/obj/fire/Del() - if (istype(loc, /turf/simulated)) - SetLuminosity(0) + New(newLoc,fl) + ..() - loc = null - air_master.active_hotspots.Remove(src) + if(!istype(loc, /turf)) + del src - ..() + dir = pick(cardinal) + //sd_SetLuminosity(3,2,0) + firelevel = fl + air_master.active_hotspots.Add(src) + Del() + if (istype(loc, /turf/simulated)) + //sd_SetLuminosity(0) + + loc = null + air_master.active_hotspots.Remove(src) + + ..() turf/simulated/var/fire_protection = 0 //Protects newly extinguished tiles from being overrun again. @@ -165,19 +182,22 @@ turf/proc/apply_fire_protection() turf/simulated/apply_fire_protection() fire_protection = world.time +datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid) + //This proc is similar to fire(), but uses a simple logarithm to calculate temp, and is thus more stable with ZAS. -datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid,force_burn) - var/value = 0 + if(temperature > PLASMA_FLASHPOINT && !reacting) + reacting = 1 - if((temperature > PLASMA_MINIMUM_BURN_TEMPERATURE || force_burn) && check_combustability(liquid) ) - var/total_fuel = 0 - var/datum/gas/volatile_fuel/fuel = locate() in trace_gases - - total_fuel += toxins + if(temperature > PLASMA_MINIMUM_BURN_TEMPERATURE && reacting) + var + total_fuel = toxins + fuel_sources = 0 //We'll divide by this later so that fuel is consumed evenly. + datum/gas/volatile_fuel/fuel = locate() in trace_gases if(fuel) //Volatile Fuel total_fuel += fuel.moles + fuel_sources++ if(liquid) //Liquid Fuel @@ -185,94 +205,65 @@ datum/gas_mixture/proc/zburn(obj/effect/decal/cleanable/liquid_fuel/liquid,force del liquid else total_fuel += liquid.amount + fuel_sources++ - //Calculate the firelevel. - var/firelevel = calculate_firelevel(liquid) + //Toxins + if(toxins > 0.3) fuel_sources++ - //get the current inner energy of the gas mix - //this must be taken here to prevent the addition or deletion of energy by a changing heat capacity - var/starting_energy = temperature * heat_capacity() + if(!fuel_sources) return 0 //If there's no fuel, there's no burn. Can't divide by zero anyway. - //determine the amount of oxygen used - var/total_oxygen = min(oxygen, 2 * total_fuel) + if(oxygen > 0.3) - //determine the amount of fuel actually used - var/used_fuel_ratio = min(oxygen / 2 , total_fuel) / total_fuel - total_fuel = total_fuel * used_fuel_ratio + //Calculate the firelevel. + var/firelevel = calculate_firelevel(liquid) - var/total_reactants = total_fuel + total_oxygen + //Reaches a maximum practical temperature of around 4500. - //determine the amount of reactants actually reacting - var/used_reactants_ratio = min( max(total_reactants * firelevel / vsc.fire_firelevel_multiplier, 0.2), total_reactants) / total_reactants + //Increase temperature. + temperature = max( 1700*log(0.4*firelevel + 1.23) , temperature ) - //remove and add gasses as calculated - oxygen -= min(oxygen, total_oxygen * used_reactants_ratio ) + //Consume some gas. + var/consumed_gas = min(oxygen,0.05*firelevel,total_fuel) / fuel_sources - toxins -= min(toxins, toxins * used_fuel_ratio * used_reactants_ratio ) + oxygen = max(0,oxygen-consumed_gas) - carbon_dioxide += max(2 * total_fuel, 0) + toxins = max(0,toxins-consumed_gas) - if(fuel) - fuel.moles -= fuel.moles * used_fuel_ratio * used_reactants_ratio - if(fuel.moles <= 0) del fuel + carbon_dioxide += consumed_gas*2 - if(liquid) - liquid.amount -= liquid.amount * used_fuel_ratio * used_reactants_ratio - if(liquid.amount <= 0) del liquid + if(fuel) + fuel.moles -= consumed_gas + if(fuel.moles <= 0) del fuel - //calculate the energy produced by the reaction and then set the new temperature of the mix - temperature = (starting_energy + vsc.fire_fuel_energy_release * total_fuel) / heat_capacity() + if(liquid) + liquid.amount -= consumed_gas + if(liquid.amount <= 0) del liquid - update_values() - value = total_reactants * used_reactants_ratio - return value + update_values() + return consumed_gas*fuel_sources -datum/gas_mixture/proc/check_combustability(obj/effect/decal/cleanable/liquid_fuel/liquid) - //this check comes up very often and is thus centralized here to ease adding stuff + else + reacting = 0 - var/datum/gas/volatile_fuel/fuel = locate() in trace_gases - var/value = 0 + return 0 - if(oxygen > 0.01 && (toxins > 0.01 || (fuel && fuel.moles > 0.01) || liquid)) - value = 1 - - return value datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fuel/liquid) - //Calculates the firelevel based on one equation instead of having to do this multiple times in different areas. + //Calculates the firelevel based on one equation instead of having to do this multiple times in different areas. + var + datum/gas/volatile_fuel/fuel = locate() in trace_gases + liquid_concentration = 0 - var/datum/gas/volatile_fuel/fuel = locate() in trace_gases - var/total_fuel = 0 - var/firelevel = 0 + oxy_concentration = oxygen / volume + tox_concentration = toxins / volume + fuel_concentration = 0 - if(check_combustability(liquid)) + if(fuel) fuel_concentration = (fuel.moles) / volume + if(liquid) liquid_concentration = (liquid.amount*15) / volume + return (oxy_concentration + tox_concentration + liquid_concentration + fuel_concentration)*100 - total_fuel += toxins - - if(liquid) - total_fuel += liquid.amount - - if(fuel) - total_fuel += fuel.moles - - var/total_combustables = (total_fuel + oxygen) - - if(total_fuel > 0 && oxygen > 0) - - //slows down the burning when the concentration of the reactants is low - var/dampening_multiplier = total_combustables / (total_combustables + nitrogen + carbon_dioxide) - //calculates how close the mixture of the reactants is to the optimum - var/mix_multiplier = 1 / (1 + (5 * ((oxygen / total_combustables) ** 2))) - //toss everything together - firelevel = vsc.fire_firelevel_multiplier * mix_multiplier * dampening_multiplier - - return max( 0, firelevel) - - -/mob/living/carbon/human/proc/FireBurn(var/firelevel, var/last_temperature, var/pressure) -// mostly using the old proc from Sky until I can think of something better +/mob/living/carbon/human/proc/FireBurn(last_temperature, mx as num) //Burns mobs due to fire. Respects heat transfer coefficients on various body parts. - //Due to TG reworking how fireprotection works, this is kinda less meaningful. var head_exposure = 1 @@ -281,12 +272,8 @@ datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fue legs_exposure = 1 arms_exposure = 1 - //determine the multiplier - //minimize this for low-pressure enviroments - var/mx = 5 * firelevel/vsc.fire_firelevel_multiplier * min(pressure / ONE_ATMOSPHERE, 1) - //Get heat transfer coefficients for clothing. - //skytodo: kill anyone who breaks things then orders me to fix them + for(var/obj/item/clothing/C in src) if(l_hand == C || r_hand == C) continue @@ -313,4 +300,4 @@ datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fue apply_damage(0.4*mx*arms_exposure, BURN, "l_arm", 0, 0, "Fire") apply_damage(0.4*mx*arms_exposure, BURN, "r_arm", 0, 0, "Fire") - //flash_pain() + //flash_pain() \ No newline at end of file diff --git a/code/ZAS/Variable Settings.dm b/code/ZAS/Variable Settings.dm index 743eadd317..e73d989aff 100644 --- a/code/ZAS/Variable Settings.dm +++ b/code/ZAS/Variable Settings.dm @@ -1,7 +1,7 @@ var/global/vs_control/vsc = new /vs_control - var/fire_consuption_rate = 0.25 +/* var/fire_consuption_rate = 0.25 var/fire_consuption_rate_NAME = "Fire - Air Consumption Ratio" var/fire_consuption_rate_DESC = "Ratio of air removed and combusted per tick." @@ -12,7 +12,10 @@ var/global/vs_control/vsc = new var/fire_fuel_energy_release = 397000 var/fire_fuel_energy_release_NAME = "Fire - Fuel energy release" var/fire_fuel_energy_release_DESC = "The energy in joule released when burning one mol of a burnable substance" +*/ + var/IgnitionLevel = 0.5 + var/IgnitionLevel_DESC = "Determines point at which fire can ignite" var/airflow_lightest_pressure = 20 var/airflow_lightest_pressure_NAME = "Airflow - Small Movement Threshold %" diff --git a/code/setup.dm b/code/setup.dm index da3ff22273..06c4711b45 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -107,6 +107,7 @@ //Must be between 0 and 1. Values closer to 1 equalize temperature faster //Should not exceed 0.4 else strange heat flow occur +/* #define FIRE_MINIMUM_TEMPERATURE_TO_SPREAD 150+T0C #define FIRE_MINIMUM_TEMPERATURE_TO_EXIST 100+T0C #define FIRE_SPREAD_RADIOSITY_SCALE 0.85 @@ -114,7 +115,7 @@ #define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile #define FIRE_GROWTH_RATE 40000 //For small fires -//#define WATER_BOIL_TEMP 393 +#define WATER_BOIL_TEMP 393 */ // Fire Damage #define CARBON_LIFEFORM_FIRE_RESISTANCE 200+T0C @@ -132,7 +133,8 @@ #define T20C 293.15 // 20degC #define TCMB 2.7 // -270.3degC -var/turf/space/Space_Tile = locate(/turf/space) // A space tile to reference when atmos wants to remove excess heat. +//Used to be used by FEA +//var/turf/space/Space_Tile = locate(/turf/space) // A space tile to reference when atmos wants to remove excess heat. #define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) // Tank starts leaking #define TANK_RUPTURE_PRESSURE (40.*ONE_ATMOSPHERE) // Tank spills all contents into atmosphere From 8111178b6edd7035e47542ecea0e67c357a0fd6e Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 5 Oct 2013 12:34:39 -0700 Subject: [PATCH 3/6] Updates the zone-sleeping code to account for turf changes. --- code/ZAS/Connection.dm | 3 --- code/ZAS/FEA_system.dm | 4 ---- code/ZAS/ZAS_Zones.dm | 3 +++ code/game/turfs/turf.dm | 31 +++++++++++++++++++------------ code/setup.dm | 4 ++++ 5 files changed, 26 insertions(+), 19 deletions(-) diff --git a/code/ZAS/Connection.dm b/code/ZAS/Connection.dm index 41dfd027f5..1bb8f9ca54 100644 --- a/code/ZAS/Connection.dm +++ b/code/ZAS/Connection.dm @@ -6,9 +6,6 @@ Indirect connections will not merge the two zones after they reach equilibrium. #define CONNECTION_INDIRECT 1 #define CONNECTION_CLOSED 0 -#define ZONE_ACTIVE 1 -#define ZONE_SLEEPING 0 - /connection var/turf/simulated/A var/turf/simulated/B diff --git a/code/ZAS/FEA_system.dm b/code/ZAS/FEA_system.dm index 004de68358..5a386d5959 100644 --- a/code/ZAS/FEA_system.dm +++ b/code/ZAS/FEA_system.dm @@ -50,12 +50,8 @@ Important Procedures air_master.process() This first processes the air_master update/rebuild lists then processes all groups and tiles for air calculations - */ -#define ZONE_ACTIVE 1 -#define ZONE_SLEEPING 0 - var/tick_multiplier = 2 atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) diff --git a/code/ZAS/ZAS_Zones.dm b/code/ZAS/ZAS_Zones.dm index 7bb8abd6b4..371be846a9 100644 --- a/code/ZAS/ZAS_Zones.dm +++ b/code/ZAS/ZAS_Zones.dm @@ -326,6 +326,9 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs archived_air.copy_from(air) +/zone/proc/CheckStatus() + return status + /zone/proc/assume_air(var/datum/gas_mixture/giver) if(status == ZONE_ACTIVE) return air.merge(giver) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 1a5675609c..2021027a3f 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -215,7 +215,7 @@ if(ispath(N, /turf/simulated/floor)) var/turf/simulated/W = new N( locate(src.x, src.y, src.z) ) - W.Assimilate_Air() + //W.Assimilate_Air() W.lighting_lumcount += old_lumcount if(old_lumcount != W.lighting_lumcount) @@ -226,30 +226,29 @@ W.RemoveLattice() //if the old turf had a zone, connect the new turf to it as well - Cael - if(src.zone) - src.zone.RemoveTurf(src) - W.zone = src.zone - W.zone.AddTurf(W) + //Adjusted by SkyMarshal 5/10/13 - The air master will handle the addition of the new turf. + if(zone) + zone.RemoveTurf(src) + if(!zone.CheckStatus()) + zone.SetStatus(ZONE_ACTIVE) if(air_master) air_master.AddTurfToUpdate(src) W.levelupdate() return W - else - /*if(istype(src, /turf/simulated) && src.zone) - src.zone.rebuild = 1*/ + else var/turf/W = new N( locate(src.x, src.y, src.z) ) W.lighting_lumcount += old_lumcount if(old_lumcount != W.lighting_lumcount) W.lighting_changed = 1 lighting_controller.changed_turfs += W - if(src.zone) - src.zone.RemoveTurf(src) - W.zone = src.zone - W.zone.AddTurf(W) + if(zone) + zone.RemoveTurf(src) + if(!zone.CheckStatus()) + zone.SetStatus(ZONE_ACTIVE) if(air_master) air_master.AddTurfToUpdate(src) @@ -257,7 +256,13 @@ W.levelupdate() return W + +//Commented out by SkyMarshal 5/10/13 - If you are patching up space, it should be vacuum. +// If you are replacing a wall, you have increased the volume of the room without increasing the amount of gas in it. +// As such, this will no longer be used. + //////Assimilate Air////// +/* /turf/simulated/proc/Assimilate_Air() var/aoxy = 0//Holders to assimilate air from nearby turfs var/anitro = 0 @@ -301,6 +306,8 @@ S.air.toxins = air.toxins S.air.temperature = air.temperature S.air.update_values() +*/ + /turf/proc/ReplaceWithLattice() src.ChangeTurf(/turf/space) diff --git a/code/setup.dm b/code/setup.dm index 06c4711b45..641c4d4816 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -728,3 +728,7 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse //Language flags. #define WHITELISTED 1 // Language is available if the speaker is whitelisted. #define RESTRICTED 2 // Language can only be accquired by spawning or an admin. + +//Flags for zone sleeping +#define ZONE_ACTIVE 1 +#define ZONE_SLEEPING 0 \ No newline at end of file From 6466d177365acd36df5a57badc10ec74e7f963ac Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 9 Oct 2013 12:49:50 +0100 Subject: [PATCH 4/6] Fix for ChangeTurf and update_air_properties not handling geometry changes correctly. Signed-off-by: Mloc --- code/ZAS/ZAS_Turfs.dm | 7 ++----- code/game/turfs/turf.dm | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/code/ZAS/ZAS_Turfs.dm b/code/ZAS/ZAS_Turfs.dm index 5280c57250..b023d33001 100644 --- a/code/ZAS/ZAS_Turfs.dm +++ b/code/ZAS/ZAS_Turfs.dm @@ -125,7 +125,6 @@ return ..() /turf/simulated/proc/update_air_properties() - var/air_directions_archived = air_check_directions air_check_directions = 0 for(var/direction in cardinal) @@ -165,14 +164,12 @@ var/turf/T = get_step(src,direction) if(!istype(T)) continue - //I can connect to air in this direction - if(air_check_directions & direction && !(air_directions_archived & direction)) - + if(air_check_directions & direction) ZConnect(src,T) //Something like a wall was built, changing the geometry. - else if(!(air_check_directions & direction) && air_directions_archived & direction) + else if(!(air_check_directions & direction)) var/turf/NT = get_step(T, direction) //If the tile is in our own zone, and we cannot connect to it, better rebuild. diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 2021027a3f..0b75e21646 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -214,6 +214,13 @@ var/old_lumcount = lighting_lumcount - initial(lighting_lumcount) if(ispath(N, /turf/simulated/floor)) + //if the old turf had a zone, connect the new turf to it as well - Cael + //Adjusted by SkyMarshal 5/10/13 - The air master will handle the addition of the new turf. + if(zone) + zone.RemoveTurf(src) + if(!zone.CheckStatus()) + zone.SetStatus(ZONE_ACTIVE) + var/turf/simulated/W = new N( locate(src.x, src.y, src.z) ) //W.Assimilate_Air() @@ -225,13 +232,6 @@ if (istype(W,/turf/simulated/floor)) W.RemoveLattice() - //if the old turf had a zone, connect the new turf to it as well - Cael - //Adjusted by SkyMarshal 5/10/13 - The air master will handle the addition of the new turf. - if(zone) - zone.RemoveTurf(src) - if(!zone.CheckStatus()) - zone.SetStatus(ZONE_ACTIVE) - if(air_master) air_master.AddTurfToUpdate(src) @@ -239,17 +239,17 @@ return W else + if(zone) + zone.RemoveTurf(src) + if(!zone.CheckStatus()) + zone.SetStatus(ZONE_ACTIVE) + var/turf/W = new N( locate(src.x, src.y, src.z) ) W.lighting_lumcount += old_lumcount if(old_lumcount != W.lighting_lumcount) W.lighting_changed = 1 lighting_controller.changed_turfs += W - if(zone) - zone.RemoveTurf(src) - if(!zone.CheckStatus()) - zone.SetStatus(ZONE_ACTIVE) - if(air_master) air_master.AddTurfToUpdate(src) From c35261f0fdf9c14afc4aecd19d1230e2815da68f Mon Sep 17 00:00:00 2001 From: Mloc Date: Thu, 10 Oct 2013 10:25:20 +0100 Subject: [PATCH 5/6] Much better solution to the zone geometry bug. Adds a unsim_check_directions var to simulated turfs, which is similar in use to air_check_directions but points to unsimulated or space tiles instead of open air tiles. Signed-off-by: Mloc --- code/ZAS/ZAS_Turfs.dm | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/code/ZAS/ZAS_Turfs.dm b/code/ZAS/ZAS_Turfs.dm index b023d33001..7ba40ef715 100644 --- a/code/ZAS/ZAS_Turfs.dm +++ b/code/ZAS/ZAS_Turfs.dm @@ -43,6 +43,8 @@ /turf/simulated/var/tmp/air_check_directions = 0 //Do not modify this, just add turf to air_master.tiles_to_update +/turf/simulated/var/tmp/unsim_check_directions = 0 //See above. + /turf/simulated/var/tmp/obj/fire/active_hotspot /turf/simulated/proc/update_visuals() @@ -125,11 +127,19 @@ return ..() /turf/simulated/proc/update_air_properties() + var/air_directions_archived = air_check_directions air_check_directions = 0 + var/unsim_directions_archived = unsim_check_directions + unsim_check_directions = 0 + for(var/direction in cardinal) - if(ZAirPass(get_step(src,direction))) - air_check_directions |= direction + var/turf/check_turf = get_step(src, direction) + if(ZAirPass(check_turf)) + if(istype(check_turf, /turf/simulated)) + air_check_directions |= direction + else if(istype(check_turf, /turf/space) || istype(check_turf, /turf/unsimulated)) + unsim_check_directions |= direction if(!zone && !blocks_air) //No zone, but not a wall. for(var/direction in DoorDirections) //Check door directions first. @@ -164,12 +174,15 @@ var/turf/T = get_step(src,direction) if(!istype(T)) continue - //I can connect to air in this direction - if(air_check_directions & direction) + + //I can connect to air or space in this direction + if((air_check_directions & direction && !(air_directions_archived & direction)) || \ + (unsim_check_directions & direction && !(unsim_directions_archived & direction))) ZConnect(src,T) //Something like a wall was built, changing the geometry. - else if(!(air_check_directions & direction)) + else if((!(air_check_directions & direction) && air_directions_archived & direction) || \ + (!(unsim_check_directions & direction) && unsim_directions_archived & direction)) var/turf/NT = get_step(T, direction) //If the tile is in our own zone, and we cannot connect to it, better rebuild. From 6e07981e67a3828f5ba2a84fdf70e0d9bd77ca8c Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 10 Oct 2013 14:14:48 +0400 Subject: [PATCH 6/6] Applied Arancalos fix for firedoors, no more process for them --- code/game/machinery/doors/firedoor.dm | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index e22b1ce804..b4ba1064e1 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -70,6 +70,7 @@ power_change() if(powered(ENVIRON)) stat &= ~NOPOWER + latetoggle() else stat |= NOPOWER return @@ -197,19 +198,27 @@ nextstate = CLOSED - process() + latetoggle() if(operating || stat & NOPOWER || !nextstate) return switch(nextstate) if(OPEN) - spawn() - open() + nextstate = null + open() if(CLOSED) - spawn() - close() - nextstate = null + nextstate = null + close() return + open() + ..() + latetoggle() + return + + close() + ..() + latetoggle() + return do_animate(animation) switch(animation)