Merge pull request #4780 from Crazylemon64/space_ruins

Crazypilot's Space Ruins Port
This commit is contained in:
Fox McCloud
2016-07-15 22:55:51 -04:00
committed by GitHub
108 changed files with 3107 additions and 569 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
#ignore any files in config/, except those in subdirectories.
/config/*
!/config/*/*
!config/**/*/
#ignore other, specific files and folers
data/
@@ -0,0 +1,124 @@
"aa" = (/turf/space,/area/space)
"ab" = (/obj/machinery/shieldwallgen{active = 2; anchored = 1; power = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/ruin/unpowered)
"ac" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plating,/area/ruin/unpowered)
"ad" = (/obj/machinery/shieldwallgen{active = 2; anchored = 1; power = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"ae" = (/obj/machinery/shieldwallgen{active = 2; anchored = 1; power = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/ruin/unpowered)
"af" = (/obj/machinery/shieldwallgen{active = 2; anchored = 1; power = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"ag" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/unpowered)
"ah" = (/turf/simulated/mineral,/area/ruin/unpowered)
"ai" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"aj" = (/obj/structure/flora/rock,/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"ak" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/ruin/unpowered)
"al" = (/obj/structure/flora/ausbushes/genericbush,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"am" = (/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/poison/bees,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"an" = (/mob/living/simple_animal/hostile/poison/bees,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"ao" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"ap" = (/mob/living/simple_animal/hostile/asteroid/goldgrub{will_burrow = 0},/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"aq" = (/obj/structure/flora/ausbushes/grassybush,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"ar" = (/obj/structure/flora/rock/pile,/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"as" = (/mob/living/simple_animal/hostile/asteroid/basilisk,/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"at" = (/turf/simulated/wall/r_wall,/area/ruin/unpowered)
"au" = (/obj/structure/flora/ausbushes/leafybush,/mob/living/simple_animal/hostile/poison/bees,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"av" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"aw" = (/obj/structure/flora/rock,/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"ax" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/clothing/mask/surgical,/obj/item/weapon/razor,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"ay" = (/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"az" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/beakers,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aA" = (/obj/structure/flora/ausbushes/ywflowers,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"aB" = (/obj/machinery/light,/mob/living/simple_animal/hostile/poison/bees,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"aC" = (/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor/grass,/area/ruin/unpowered)
"aD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/highsecurity{name = "Bio Containment"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aE" = (/obj/machinery/shieldwallgen{active = 2; anchored = 1; power = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/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"; tag = ""},/turf/simulated/floor/plating,/area/ruin/unpowered)
"aF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/ruin/unpowered)
"aG" = (/obj/structure/table/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/item/weapon/gun/energy/floragun,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aI" = (/obj/structure/table/reinforced,/obj/machinery/computer/med_data/laptop,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aJ" = (/obj/machinery/shieldwallgen{active = 2; anchored = 1; power = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"aK" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space)
"aL" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/ruin/unpowered)
"aN" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aO" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aP" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aQ" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area/space)
"aR" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aS" = (/obj/machinery/power/apc/worn_out{dir = 8; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/rack,/obj/item/weapon/melee/baton/cattleprod,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aT" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/rack,/obj/item/clothing/suit/space/rig/medical,/obj/item/weapon/tank/emergency_oxygen/double,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aU" = (/obj/structure/rack,/obj/item/weapon/crowbar,/obj/item/weapon/shield/riot,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aV" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aW" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/syringe,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aX" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/chem_grenade/antiweed{pixel_x = 3; pixel_y = 5},/obj/item/weapon/grenade/chem_grenade/antiweed{pixel_x = 4},/obj/item/weapon/grenade/chem_grenade/antiweed{pixel_x = -3; pixel_y = -1},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aY" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/temperature,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"aZ" = (/obj/structure/table/reinforced,/obj/item/weapon/minihoe,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"ba" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bb" = (/obj/machinery/door/airlock/hatch{name = "Bio-Research Station"},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bd" = (/obj/machinery/power/terminal,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"be" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bf" = (/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit"},/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bg" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bh" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bi" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack,/obj/item/weapon/reagent_containers/glass/bottle/mutagen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bj" = (/obj/structure/table/reinforced,/obj/item/weapon/surgicaldrill,/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/obj/item/weapon/surgical_drapes,/obj/item/weapon/retractor,/obj/item/weapon/cautery,/obj/item/weapon/circular_saw,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bk" = (/obj/machinery/optable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bl" = (/obj/machinery/computer/operating,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bm" = (/obj/structure/closet/wardrobe/toxins_white,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bn" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/carrotfries,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bo" = (/obj/machinery/shieldwallgen{active = 2; anchored = 1; power = 1},/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"; tag = ""},/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"bp" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bq" = (/obj/item/stack/cable_coil/cut,/obj/item/stack/tile/plasteel{pixel_x = 3; pixel_y = -4},/obj/item/weapon/wirecutters,/turf/simulated/floor/plating,/area/ruin/unpowered)
"br" = (/obj/structure/table/reinforced,/obj/machinery/microwave,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/shieldwallgen,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bt" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/shieldwallgen,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bu" = (/obj/structure/flora/ausbushes/sunnybush,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bv" = (/turf/simulated/floor/plating,/area/ruin/unpowered)
"bw" = (/obj/machinery/light{dir = 1},/mob/living/simple_animal/hostile/carp,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bx" = (/obj/structure/flora/ausbushes/palebush,/turf/simulated/floor/plating,/area/ruin/unpowered)
"by" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/ruin/unpowered)
"bz" = (/obj/machinery/space_heater,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bA" = (/obj/structure/table/reinforced,/obj/machinery/juicer,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"bB" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bC" = (/obj/structure/alien/weeds/node,/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/ruin/unpowered)
"bD" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/plating,/area/ruin/unpowered)
"bE" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bF" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/ruin/unpowered)
"bG" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bH" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bI" = (/obj/structure/flora/ausbushes/reedbush,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bJ" = (/mob/living/simple_animal/crab{faction = list("carp")},/turf/simulated/floor/plating,/area/ruin/unpowered)
"bK" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/space)
"bL" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bM" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bN" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"bO" = (/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bP" = (/obj/structure/lattice,/turf/space,/area/space)
"bQ" = (/obj/machinery/shieldwallgen{active = 2; anchored = 1; power = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bR" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating,/area/space)
"bS" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable,/obj/machinery/shieldwallgen,/turf/simulated/floor/plating,/area/ruin/unpowered)
"bT" = (/obj/structure/grille,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"bU" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"bV" = (/obj/machinery/shieldwallgen,/turf/space,/area/space)
"bW" = (/obj/item/weapon/shard,/turf/space,/area/space)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
abacacacacadaaaaaaaaaaaaaeacacacacafaaaa
agahahaiajakaaaaaaaaaaaaakalamanaoakaaaa
agaiapahaiakaaaaaaaaaaaaakanamaqanakaaaa
agaraiaiasakatagagagagatakanaoauavakaaaa
agahaiawarakataxayayazatakaAaBamaCakaaaa
abacaDacacaEaFaGaHaHaIaFaJacacaDacafaaaa
aaaKaLatataMataNaOayaPatatatataLaQaaaaaa
aaaKaRataSaTaUaVayayaWaXaYaZatbaaQaaaaaa
aaaKaLbbaybcayayayayayayayaybbaLaQaaaaaa
aaaKaLbbaybdayayayayayayayaybbaLaQaaaaaa
aaaKaRatbebfbgbhayaybibjbkblatbaaQaaaaaa
aaaKaLatataMatbmayaybnatatatataLaQaaaaaa
abacaDacacboaFbpaHbqbraFbsacacaDacbtaaaa
agbubvbwbxakbybzayaybAatakbBbCbDbBagaaaa
agbvbvbvbEakbFatbGbGatatakbBbHbBbBagaaaa
agbIbJbvbvakbKatbLbMataaakbDbHbvbvbNaaaa
agbvbvbvbvakbKatbGbGataaakbHbvbObvbPaaaa
abacacacacbQbRaaaaaaaaaabSacbTbUbPaabVaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWaaaaaaaa
"}
@@ -0,0 +1,26 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"c" = (/turf/simulated/mineral/random/high_chance,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaabaa
aaaabbaaaaaaaaaaaaaa
aaaabbbaaaaaaaaaaaaa
aaaaaaaaabbcbaaaaaaa
aaaaaaaaaabbaaaaaaaa
aaaaaaaaaabaaaaaaaaa
aaaaaaabaaaaaaaaaaaa
aaaaabbcbaaaaabbbaaa
aaaaabccbaaaaabcbaaa
aaaaccccaaabbccbbaaa
aaabcccbaaabbccaaaaa
aaabccaaaaaabbaaaaaa
aaabbbaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaabcaaaaaaa
aaaabaaaaaabbaaaaaaa
aaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,27 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"c" = (/turf/simulated/mineral,/area/ruin/unpowered)
"d" = (/turf/simulated/mineral/random/high_chance,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaabbbbaaaaaaaaaab
aaabbbbbbbbaaaaabbaa
aabbbbbcbbbbbbaaabaa
abbbbbcccbbbbbaaaaaa
abbbcccccccddbbaaaaa
abbbcccccccddbbaaaaa
abbbcccdddccdbbbbaaa
aaabcccccdddcccbbaaa
aabbbddcccddccdbbbba
aabbbddcccddccccbbba
aabbbddccdddccccbbba
aabbbddcdddcccddbbba
aaabbddcdcccccddbbba
aaaabbbbdccccdddbbba
aaaaaabbcccdcccbbbba
aaabaabbbbbccccbbaaa
baaaaaaabbbbbccbaaaa
aaaaaaaaaaaabbbbaaaa
"}
@@ -0,0 +1,29 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"c" = (/turf/simulated/mineral,/area/ruin/unpowered)
"d" = (/turf/simulated/mineral/random/high_chance,/area/ruin/unpowered)
"e" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"f" = (/obj/item/weapon/pickaxe/diamond,/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aabbbaaaaaaaaabaaaaa
aabbbbabbbbaaaaaaaaa
baabccbbbbbbbbbbaaba
aabbccbccccdddcbbaaa
aabccccccccdddcbbaaa
aabcccdccbcccccccaaa
aaabcccccbccccccccaa
abbbcccbbbccccccddaa
bbbcccbbbbbcdcccddaa
cdddccbbebbccccccaaa
cdddcbbfbbcccccccaaa
ccccccbbbbcccccbbaaa
cccccccbbccccccbbaba
bcdddccccccccbbaaaaa
acdddcccccddcbaaaaaa
acdddccbccddbbaaaaaa
aabbcbbbbcbbbaaaaaba
aaaaaaabbbbbaabaaaaa
"}
@@ -0,0 +1,37 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/mineral,/area/ruin/unpowered)
"c" = (/turf/simulated/mineral/random/high_chance,/area/ruin/unpowered)
"d" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"e" = (/turf/simulated/mineral/clown,/area/ruin/unpowered)
"f" = (/turf/simulated/floor/plating,/area/ruin/unpowered)
"g" = (/obj/item/weapon/shard,/obj/item/weapon/paper{info = "Extraction was successful! The disguise was perfect, the clowns never knew what hit 'em! Once I get back to base with the bananium samples I'll be rich, I tell you! RICH!"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"h" = (/obj/item/stack/sheet/mineral/bananium{amount = 15},/turf/simulated/floor/plating,/area/ruin/unpowered)
"i" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/ruin/unpowered)
"j" = (/obj/item/weapon/shard,/turf/simulated/shuttle/floor,/area/ruin/unpowered)
"k" = (/turf/simulated/shuttle/floor,/area/ruin/unpowered)
"l" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/ruin/unpowered)
"m" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/turf/space,/area/ruin/unpowered)
"n" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/floor/plating,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aabbbaaaaaaaaaaaaaaa
acccbbbbaaaaaaaaaaaa
acccbbcbbbaaaaaabaaa
abbbbbbbbbbaaaabbaaa
abddbbbbbbcaaaabbbaa
aadddbbbbbcaaaabbaaa
aaadddddbaaaaabbbaaa
aaaaadddbaaaaabbaaaa
aaaaaaaaaaaaaabbaaaa
aaaaaaaaaaaaccbbaaaa
aaabaaaaaabbccbaaaaa
aaabaaaaabbbebbaaaaa
aabbbaaadbbeefbcaaaa
aabbbaaaddbghfbcaaaa
abbbbaaaddbijibbaaaa
abbaaaaaaabikibaaaaa
aaaaabaaaaalmnaaaaaa
aaabaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,47 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/mineral,/area/ruin/unpowered)
"c" = (/turf/simulated/mineral/random/high_chance,/area/ruin/unpowered)
"d" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabbbccccbaaaaaaaaaaaaaaaaa
aaaaaaaaaabbbbbbbbccccbbbbbbaaaaaaaaaaaa
aaaaaaaabbbbbbbbbbdddbbbbbbbbaaaaaaaaaaa
aaaaaccccbbbbbbdddddddddcbbccaaaaaaaaaaa
aaaaaccccbbbbccddddddddddbbccaaaaaaaaaaa
aaabbccccbbbddddddaaaaaddddbbaaaaaaaaaaa
aaabbbccbbcdddaaaaaaaaaadddbbbaaaaaaaaaa
aaacbbbbbdddaaaaaabbbaaadddbbbaaaaaaaaaa
aaacbbbbbddaaaaaaabbbaaaaaaabbaaaaaaaaaa
aaaabbbbdddaaaaaaaabbaaaaaaabbaaaaaaabaa
aaaaabbbddaaaaaaaaaaaaaaaaaabbaaaaaabcaa
aaaaabbbddaaaaabaaaaaaaaaaabbaaaaaabccca
aaaaabbbddddaaaaaaaaaaaaaaabbaaaaaabccca
aaaaaaccbdddaaaaaaaaaaaaaaaaaaaaaaabccca
aaaaaaccbdddaaaaaaabbaabaaaaaaaaadddbbba
aaaaaaccbbcbaaaaabbbbaaaaaaaaaadddddbbaa
aaaaaaaaaaaaaaaaabbcbaaaaaaaaaadddddbbaa
aaaaaaaaaaaaaaaaabbcaaaaaaaadddddddbbbaa
aaaaaaaaaaaaaaaaaabbaaaaaaaaddddbddbbbba
aaaaaaaaaaaaaaaaaaaaaaaaaaaaddddbddbbbba
aaaaaaaaaaaaaaaaaaaaaaaaaaaabcbbbdddbcba
aaaaaaaaaaaaabdddddbbbaaaaabbbbbbcdddcba
aaaaaaaaabdddddddddddddaaaaabbbbbcdddbba
aaaaaaabddddddbbbbbbdddaaaaaaabbbcddbbaa
aaaaaabddddbcccccbbbddddbaaaaabbbbbbbbaa
aaaaaabddbbbcccccbbbbccdcaaaaabbbbbbbbaa
aaaaddddbbcccbbbbbbbbccdddaaaaabccbbaaaa
aaaaddddbbccdddbbbdddccdddaaaaaaabbcaaaa
aaaddddbbbccdddbdddddbbdddaaaaaaaaaaaaaa
aaaddddcccccdcbbddddddddddaaaaaaaaaaaaaa
abbdddbccccdddddddcbddddddaaaaaaaaaaaaaa
accbbbbccccdddddddbbbbbbbcaaaaaaaaaaaaaa
acccbbbccccddddddbbbbbbbbcaaaaaaaaaaaaaa
acccbbbbbbbbbbbbbbccbbbbbbaaaaaaaaabbaaa
aaccbbbbbbbbbbbbbbccbbbbbaaaaaaaaabbbaaa
aabbbbbbccbbbbbbbbbbbbbbbaaaaaaaabbbbaaa
aaabbbbbccbabbbbbccccbbbbaaaaaaaabbbaaaa
aaabbbbbaaaaaaaabccccbbaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,179 @@
"aa" = (/turf/space,/area/space)
"ab" = (/turf/simulated/mineral/random/low_chance,/area/ruin/unpowered)
"ac" = (/turf/simulated/wall/mineral/iron,/area/ruin/unpowered)
"ad" = (/obj/structure/closet/cardboard,/obj/item/stack/sheet/mineral/silver,/obj/item/stack/sheet/mineral/gold,/obj/item/stack/sheet/mineral/silver,/obj/item/stack/sheet/mineral/silver,/obj/item/stack/sheet/mineral/gold,/obj/item/stack/sheet/mineral/gold,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"ae" = (/obj/structure/closet/cardboard,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"af" = (/obj/structure/closet/cardboard,/obj/item/stack/sheet/cardboard,/obj/item/stack/cable_coil,/obj/item/stack/sheet/wood,/obj/item/stack/packageWrap,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"ag" = (/obj/structure/closet/cardboard,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/storage/box/zipties,/obj/item/weapon/kitchen/knife/combat,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"ah" = (/obj/structure/closet/cardboard,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"ai" = (/obj/structure/closet/cardboard,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/clothing/shoes/combat,/obj/item/clothing/shoes/combat,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aj" = (/obj/structure/closet/cardboard,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"ak" = (/obj/structure/closet/cardboard,/obj/item/device/flashlight/lantern,/obj/item/device/flashlight/lantern,/obj/item/device/flashlight/lantern,/obj/item/device/tape/random,/obj/item/device/tape/random,/obj/item/device/tape/random,/obj/item/weapon/storage/box/rxglasses,/obj/item/weapon/extinguisher,/obj/item/weapon/extinguisher,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"al" = (/obj/structure/closet/cardboard,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/matches,/obj/item/weapon/storage/box/bodybags,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"am" = (/obj/structure/closet/cardboard,/obj/item/weapon/kitchen/knife,/obj/item/weapon/kitchen/knife,/obj/item/weapon/hatchet,/obj/item/weapon/kitchen/rollingpin,/obj/item/weapon/minihoe,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"an" = (/obj/structure/closet/cardboard,/obj/item/weapon/defibrillator,/obj/item/weapon/storage/box/autoinjectors,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"ao" = (/obj/structure/closet/cardboard,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/ammo_box/c9mm,/obj/item/ammo_box/c9mm,/obj/item/ammo_box/c9mm,/obj/item/ammo_box/c9mm,/obj/item/ammo_box/c9mm,/obj/item/ammo_box/c9mm,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"ap" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aq" = (/obj/machinery/iv_drip,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"ar" = (/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"as" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"at" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"au" = (/obj/machinery/door/airlock/highsecurity{name = "Bunker"},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"av" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/ruin/unpowered)
"aw" = (/obj/structure/mirror{pixel_x = 30},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/ruin/unpowered)
"ax" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"ay" = (/obj/structure/table,/obj/item/weapon/gun/projectile/automatic/wt550{pixel_x = -3; pixel_y = 6},/obj/item/weapon/gun/projectile/automatic/wt550{pixel_x = 2; pixel_y = 0},/obj/structure/reagent_dispensers/peppertank{pixel_y = 30},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"az" = (/obj/structure/table,/obj/item/weapon/storage/backpack/duffel/security{pixel_y = 6},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aA" = (/obj/structure/table,/obj/item/device/radio{pixel_x = -4},/obj/item/device/radio,/obj/item/device/radio{pixel_x = 4},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aB" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/rods{amount = 50},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/brute{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/firstaid/brute,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aD" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aE" = (/obj/structure/closet/crate/radiation,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aF" = (/obj/structure/closet/cardboard,/obj/item/weapon/reagent_containers/food/snacks/beans,/obj/item/weapon/reagent_containers/food/snacks/beans,/obj/item/weapon/reagent_containers/food/snacks/beans,/obj/item/weapon/reagent_containers/food/snacks/beans,/obj/item/weapon/reagent_containers/food/snacks/beans,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aG" = (/obj/structure/closet/cardboard,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aH" = (/obj/machinery/vending/clothing,/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/ruin/unpowered)
"aI" = (/turf/simulated/floor/wood{tag = "icon-wood-broken2"; icon_state = "wood-broken2"},/area/ruin/unpowered)
"aJ" = (/obj/structure/stool/bed,/turf/simulated/floor/wood,/area/ruin/unpowered)
"aK" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/ruin/unpowered)
"aL" = (/obj/machinery/light/small{dir = 4; pixel_y = -8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/ruin/unpowered)
"aM" = (/obj/structure/table,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aN" = (/obj/structure/table,/obj/item/device/mass_spectrometer/adv,/obj/item/device/mass_spectrometer/adv,/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aO" = (/obj/structure/closet/radiation,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aP" = (/obj/structure/closet/cardboard,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aQ" = (/obj/structure/closet/wardrobe/pink,/turf/simulated/floor/wood{tag = "icon-wood-broken2"; icon_state = "wood-broken2"},/area/ruin/unpowered)
"aR" = (/turf/simulated/floor/wood,/area/ruin/unpowered)
"aS" = (/obj/structure/stool/bed,/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/ruin/unpowered)
"aT" = (/obj/machinery/shower{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/ruin/unpowered)
"aU" = (/obj/machinery/shower{dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/ruin/unpowered)
"aV" = (/obj/machinery/light/small{dir = 8},/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/pill_bottle/charcoal,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aW" = (/obj/structure/table,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/weapon/crowbar/red,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aX" = (/obj/machinery/suit_storage_unit,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"aY" = (/obj/structure/closet/wardrobe/pink,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/ruin/unpowered)
"aZ" = (/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/ruin/unpowered)
"ba" = (/obj/structure/stool/bed,/turf/simulated/floor/wood{tag = "icon-wood-broken2"; icon_state = "wood-broken2"},/area/ruin/unpowered)
"bb" = (/obj/machinery/shower{dir = 4},/obj/item/weapon/soap,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/ruin/unpowered)
"bc" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bd" = (/obj/structure/closet/cardboard,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"be" = (/obj/machinery/door/airlock/highsecurity{name = "Bunker"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/ruin/unpowered)
"bf" = (/obj/structure/closet/fireaxecabinet{tag = "icon-fireaxe0130"; icon_state = "fireaxe0130"; pixel_y = 28},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bg" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bh" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bi" = (/obj/machinery/light/small{dir = 4; pixel_y = -8},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bj" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bk" = (/obj/machinery/processor{name = "processor"},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bl" = (/obj/structure/table,/obj/item/weapon/storage/box/matches,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bm" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bn" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bo" = (/obj/machinery/portable_atmospherics/hydroponics{pixel_y = 9},/obj/machinery/light{dir = 1},/turf/simulated/floor/light,/area/ruin/unpowered)
"bp" = (/obj/machinery/portable_atmospherics/hydroponics{pixel_y = 9},/turf/simulated/floor/light,/area/ruin/unpowered)
"bq" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"br" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bs" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/power/smes,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bt" = (/obj/machinery/telecomms/relay/preset/telecomms,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bu" = (/obj/machinery/light/small{dir = 1},/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bv" = (/obj/machinery/biogenerator,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bw" = (/obj/machinery/light,/obj/machinery/portable_atmospherics/hydroponics{pixel_y = 9},/turf/simulated/floor/light,/area/ruin/unpowered)
"bx" = (/obj/machinery/autolathe,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"by" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bz" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bA" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bB" = (/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bC" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bD" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/beans,/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bE" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bF" = (/obj/machinery/seed_extractor,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bG" = (/obj/machinery/power/apc{dir = 8; name = "Bunker APC"; keep_preset_name = 1; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bI" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bJ" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bK" = (/obj/structure/table,/obj/item/weapon/kitchen/knife,/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bL" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bM" = (/obj/structure/table,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bN" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bO" = (/obj/machinery/space_heater,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bP" = (/obj/structure/stool/bed/chair/office/dark{tag = "icon-officechair_dark (EAST)"; icon_state = "officechair_dark"; dir = 4},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bQ" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bR" = (/obj/machinery/smartfridge,/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bS" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{tag = "icon-bar"; icon_state = "bar"},/area/ruin/unpowered)
"bT" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bU" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bV" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bW" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bX" = (/obj/structure/table/reinforced,/obj/machinery/computer/security/telescreen{dir = 1; name = "Bunker Entrance"; network = list("Bunker1"); pixel_x = 0; pixel_y = 2},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bY" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "bunker1"; name = "Inner Doors"; pixel_y = 6},/obj/machinery/door_control{id = "bunker2"; name = "Outer Doors"; pixel_y = -4},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"bZ" = (/obj/machinery/door/poddoor{id_tag = "bunker1"; name = "Bunker Door"; tag = "inner"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"ca" = (/turf/simulated/floor/plating,/area/ruin/unpowered)
"cb" = (/obj/machinery/camera{network = list("Bunker1")},/turf/simulated/floor/plating,/area/ruin/unpowered)
"cc" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/ruin/unpowered)
"cd" = (/obj/machinery/door/poddoor{id_tag = "bunker2"; name = "Bunker Door"; tag = "outer"},/turf/simulated/floor/plating,/area/ruin/unpowered)
"ce" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababab
aaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaaaaababababab
aaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababaa
aaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaababababababababababababababababaaaa
aaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaababababababababababababababababababaaaa
aaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
aaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaa
aaabababababababababababababababababababababababababababababababababababababababacacacacacacacacababababababababababababababababababababababababababababababababababaaaaaa
aaabababababababababababababababababababababababababababababababababababababababacadaeafagahaiacabababababababababababababababababababababababababababababababababaaaaaaaa
aaabababababababababababababababababababababababababababababababababababababababacajakalamanaoacababababababababababababababababababababababababababababababababaaaaaaaaaa
ababababababababababababababababababababababababababababababababababababababababacapaqararasatacababababababababababababababababababababababababababababababababaaaaaaaaaa
ababababababababababababababababababababababababababababababacacacacacacacacacacacacacauacacacacacabababababababababababababababababababababababababababababababaaaaaaaaaa
aaabababababababababababababababababababababababababacacacacacavawacaxayazaAaBaCaDacaEaraFaFaGaGacabababababababababababababababababababababababababababababababaaaaaaaaaa
aaabababababababababababababababababababababababababacaHaIaJacaKaLacaMarararararaNacaOaraFaFaGaPacababababababababababababababababababababababababababababababababaaaaaaaa
aaaaababababababababababababababababababababababababacaQaRaSacaTaUacaVarararararaWacaXaraFaFaGaGacababababababababababababababababababababababababababababababababaaaaaaaa
aaaaaaabababababababababababababababababababababababacaYaZbaacbbaUacacbcbcaubcbcacacaXararbdbdbdacababababababababababababababababababababababababababababababababaaaaaaaa
aaaaaaaaabababababababababababababababababababacacacacacauacacacbeacbfarararararauararararbdbdbdacabababababababababababababababababababababababababababababababababaaaaaa
aaaaaaaaabababababababababababababababababababacbgaracarararbhararararararararbiacacacacacacacacacabababababababababababababababababababababababababababababababababaaaaaa
aaaaaaaaabababababababababababababababababababacbjarauarararararararbkblbmbnararacbobpbpboacababababababababababababababababababababababababababababababababababababaaaaaa
aaaaaaaaabababababababababababababababababababacacacacacacauacacararacacacacararauararararacabababababababababababababababababababababababababababababababababababababaaaa
aaaaaaaaaaababababababababababababababababababacbqbrbsbtararbuacarararararararbvacbwbpbpbwacabababababababababababababababababababababababababababababababababababababaaaa
aaaaaaaaaaaaabababababababababababababababababacbxarbyarararbzacbAbBbCbDbEararbFacacacacacacabababababababababababababababababababababababababababababababababababababaaaa
aaaaaaaaaaaaabababababababababababababababababacbGbHbIarararbJacbKbBbLbMbEararbNacabababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaababababababababababababababababacbOararararbPbQacbRbSbBbBbBararbTacabababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaababababababababababababababababacbUarararbVarbWacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaabababababababababababababababababacarararbXbWbYbQacababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaabababababababababababababababababacbZbZacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaabababababababababababababababababaccacacacbccacababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaababababababababababababababababaccacacacacaacababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaaaabababababababababababababababacacacaccdcdacababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaaaaaaaaaaaaaaaababababababababababababababababcecececececeabababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaaaaaaaaaaaaaabababababababababababababababcececececececeabababababababababababababababababababababababababababababababababababababababababababababababababababababaaaa
aaaaaaaaaaaaaaaaabababababababababababababababcecececececeabababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaa
aaaaaaaaaaaaaaaaabababababababababababababababcecececececeabababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaa
aaaaaaaaaaaaaaaaababababababababababababababcececececeababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaa
aaaaaaaaaaaaaaaaababababababababababababababcececececeababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaa
aaaaaaaaaaaaaaaaaaabababababababababababababcececececeabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaababababababababababababababcececececeabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaababababababababababababababcecececececeababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaabababababababababababababcececececeababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababcececececeababababababababaaaaaaababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababcececececeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,61 @@
"a" = (/turf/space,/area/space)
"b" = (/obj/structure/lattice,/turf/space,/area/space)
"c" = (/turf/simulated/wall,/area/ruin/unpowered)
"d" = (/obj/structure/alien/weeds,/obj/structure/alien/resin/membrane,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"e" = (/obj/structure/girder,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"f" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"g" = (/obj/structure/alien/weeds,/obj/structure/glasstable_frame,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"h" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"i" = (/obj/structure/alien/weeds,/obj/structure/stool/bed/nest,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"j" = (/obj/structure/alien/weeds,/obj/structure/stool/bed/nest,/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"k" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"l" = (/obj/structure/alien/resin/membrane,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"m" = (/obj/structure/alien/weeds,/obj/structure/table,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"n" = (/obj/structure/alien/weeds,/obj/effect/decal/remains/robot,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"o" = (/obj/structure/alien/weeds/node,/obj/structure/table,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"p" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"q" = (/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"r" = (/obj/structure/alien/weeds,/obj/structure/stool/bed/nest,/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaabbbaabbbbbbbaaaaaaaaaaaaaaa
aaaaaaaaaaabbbbbcccccdcccaaaaaaaaaaaaaaa
aaaaaaaaaabbbbbefcghcfijcbbbbbaaaaaaaaaa
aaaaaaaaabbbbkkffcffcfffccbbbbbaaaaaaaaa
aaaaaaaaabbbkffhfcffcfhffcclbbbaaaaaaaaa
aaaaaaaaaabkffiffcffcfffffmlbbbaaaaaaaaa
aaaaaaaaaabcfffffffffffffnopbbaaaaaaaaaa
aaaaaaaaaaaaecceccffcccecccpbaaaaaaaaaaa
aaaaaaaaaaaaacmfjffffffifcaaaaaaaaaaaaaa
aaaaaaaaaaabccmhfjffffhficaaaaaaaaaaaaaa
aaaaaaaaaabbdffffffffiffkqbaaaaaaaaaaaaa
aaaaaaaaaabbpcccccffccckqbbaaaaaaaaaaaaa
aaaaaaaaaabbbbbchfffficqpbaaaaaaaaaaaaaa
aaaaaaaaaabbbaacfffffgcbbbaaaaaaaaaaaaaa
aaaaaaaaaabbaaacelfrfdhbbaaaaaaaaaaaaaaa
aaaaaaaaaabaaaaabblddbbbbaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaabqbbbbbaaaaaaaaaaaaaaaa
aaaaaaaaabaaaaaaaabbbaaaaaaaaaaaaaaaaaaa
aaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaabaacbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aabbbcqqbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
abbqqqqqbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bpcqqqqqbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bpqqqqcbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bpqqqqqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
accccpbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,61 @@
"a" = (/turf/space,/area/space)
"b" = (/obj/structure/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/turf/space,/area/space)
"c" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/powered)
"d" = (/obj/structure/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/turf/space,/area/space)
"e" = (/obj/structure/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/turf/simulated/floor/plating,/area/ruin/powered)
"f" = (/turf/simulated/wall,/area/ruin/powered)
"g" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/powered)
"h" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/plasteel,/area/ruin/powered)
"i" = (/turf/simulated/floor/plasteel,/area/ruin/powered)
"j" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/plasteel,/area/ruin/powered)
"k" = (/obj/structure/window/reinforced,/turf/space,/area/space)
"l" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/turf/simulated/floor/plating,/area/ruin/powered)
"m" = (/obj/structure/stool/bed/chair{tag = "icon-chair (EAST)"; icon_state = "chair"; dir = 4},/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel,/area/ruin/powered)
"n" = (/obj/structure/table,/obj/item/candle{pixel_y = 5},/obj/item/trash/plate{pixel_x = 10},/obj/item/trash/plate{pixel_x = -10},/turf/simulated/floor/plasteel,/area/ruin/powered)
"o" = (/obj/structure/stool/bed/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel,/area/ruin/powered)
"p" = (/obj/structure/window/reinforced{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/turf/space,/area/space)
"q" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/plasteel,/area/ruin/powered)
"r" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/ruin/powered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaabcdaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaabedaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaabedaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaabedaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaafgcgfaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaafhiiiifaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaafiiiiiijfaaaaaaaaaaaaaaa
aaaaaaaaaaaakkkkgiiiiiiigkkkkaaaaaaaaaaa
aaaaaaaaaaaaclllciimnoiiclllcaaaaaaaaaaa
aaaaaaaaaaaappppgiiiiiiigppppaaaaaaaaaaa
aaaaaaaaaaaaaaaafqiiiiiifaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaafiiiirfaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaafgcgfaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaabedaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaabedaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaabedaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaabcdaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,48 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"c" = (/turf/simulated/wall,/area/ruin/unpowered)
"d" = (/obj/structure/lattice,/turf/space,/area/space)
"e" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area/space)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaabbbbbbbaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaabbbcbbbaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaadbbbcccbbbdaaaaaaaaa
aaaaaaaaaaaaaaaaaaaadbbcbcbcbbdaaaaaaaaa
aaaaaaaaaaaaaaaaaaaadbbbbcbcbbddaaaaaaaa
aaaaaaaaaaaaaaaaaaadddbbbbbbbbdddaaaaaaa
aaaaaaaaaaaaaaaaaaadddddbbbddddbddaaaaaa
aaaaaaaaaaaaaaaaaadbddddddddddddddaaaaaa
aaaaaaaaaaaaaaaaadddddddddddddddddaaaaaa
aaaaaaaaaaaaaaaaddbbbbbddbdddbbbbdaaaaaa
aaaaaaaaaaaaaaaadbbccbbbdddbbbbbbdaaaaaa
aaaaaaaaaaaaaaaabbbcbbbbdddbbbbcbbaaaaaa
aaaaaaaaaaaaaaabbbbcbbbbddbbbbbcbbaaaaaa
aaaaaaaaaaaaaaabcccbbbddddbbbbcbbbaaaaaa
aaaaaaaaaaaaaadbbbbcbbddddbbbccccbaaaaaa
aaaaaaaaaaaaaadbbbbbbddbddbbbbcbbaaaaaaa
aaaaaaaaaaaaadddbbbbbdddddbbbbcbbaaaaaaa
aaaaaaaaaaaaaddddddddddaaddbbbbbaaaaaaaa
aaaaaaaaaaaaadddaaaaaaaaaaddabbaaaaaaaaa
aaaaaaaaaaaaddaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aacbbdddaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aacbbbdddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aacbbbddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aacbbbbbddeaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aacbbbbbbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaacbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaacccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,63 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/mineral,/area/ruin/unpowered)
"c" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"d" = (/turf/simulated/mineral/random/high_chance,/area/ruin/unpowered)
"e" = (/turf/simulated/shuttle/wall,/area/ruin/unpowered)
"f" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"g" = (/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"h" = (/turf/simulated/floor/plasteel/airless{icon_plating = "plating"; icon_regular_floor = "shuttlefloor"; icon_state = "shuttlefloor"},/area/ruin/unpowered)
"i" = (/obj/structure/stool/bed/chair,/obj/structure/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/turf/simulated/floor/plasteel/airless{icon_plating = "plating"; icon_regular_floor = "shuttlefloor"; icon_state = "shuttlefloor"},/area/ruin/unpowered)
"j" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel/airless{icon_plating = "plating"; icon_regular_floor = "shuttlefloor"; icon_state = "shuttlefloor"},/area/ruin/unpowered)
"k" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plasteel/airless{icon_plating = "plating"; icon_regular_floor = "shuttlefloor"; icon_state = "shuttlefloor"},/area/ruin/unpowered)
"l" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (WEST)"; icon_state = "propulsion"; dir = 8},/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"m" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"n" = (/obj/structure/stool/bed/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"o" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"p" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless{icon_plating = "plating"; icon_regular_floor = "shuttlefloor"; icon_state = "shuttlefloor"},/area/ruin/unpowered)
"q" = (/obj/item/weapon/shard,/obj/structure/stool/bed/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/turf/simulated/floor/plasteel/airless{icon_plating = "plating"; icon_regular_floor = "shuttlefloor"; icon_state = "shuttlefloor"},/area/ruin/unpowered)
"r" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/turf/simulated/floor/plasteel/airless{icon_plating = "plating"; icon_regular_floor = "shuttlefloor"; icon_state = "shuttlefloor"},/area/ruin/unpowered)
"s" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"t" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaacccbbbbaaaaaaaaaaaaaaabaaaaaaaaaaaa
aaaaacccbbbbaaaaaaaaaaaaaabbbaaaaaaaaaaa
aaaaaaccbbaaaaaaaaaaaaaaaabbbaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaabbdddddbbaaabbbbaaaaaaaaaaa
aaaaaaaaaaabbbbddddbbbbbbbbbbbaaaaaaaaaa
aaaaaaaaaaacbbbbbdbbbbbbbbbbbbbaaaaaaaaa
aaaaaaaaccccbbbbbbbbbccbbdddbbbaaaaaaaaa
aaaaaaaacccccbddbbccccccccccbccaaaaaaaaa
aaaaaaaaaccccbddbbeeeefeeeeecccaaaaaaaaa
aaaaaaaaacccccbbbgggghhijkelcccaaaaaaaaa
aaaaaaaaacccccbbbgmnhhhhhhelcccaaaaaaaaa
aaaaaaaaaccccbbbbopqhhhhhgelcccaaaaaaaaa
aaaaaaaaaccccbbdbbghhhhrsgelcaaaaaaaaaaa
aaaaaaaaaabccbbbbbeeeefetgeecaaaaaaaaaaa
aaaaaabaaabbbbbbbccccccccccccaaaaaaaaaaa
aaaaaaaaaabbbbbbbbbbcccccccccaaaaaaaaaaa
aaabaaaaaaaabbbbbbbbbccccaaaaaaaaaaaaaaa
aaaaaaaaaaaaabdbbdddbccccaaaaaaaaaaaaaaa
aaaaabbaaaaaaaaabdddbbbaaaaaaaaaaaaabaaa
aaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaabbaaaaaaaaaaaaaaaabbbaaaaaaaaaccbbaa
aaaaaaaaaaaaaaaaaaaaadbbbbaaaaaaacccdbaa
aaaaaaaaaaaaaaaaaaadbbbbccaaaaaaacbdbaaa
aaaaaaaaaaaaaaaaaadbbbbcaaaaaaaaacbbbaaa
aaaaaaaaaaaaaaaaaddbbcccaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaababbbbbcccaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaabbbbbccccaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaabbbbdcccaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaabbcccccaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaabccaaaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,61 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/mineral,/area/ruin/unpowered)
"c" = (/turf/simulated/mineral,/area/space)
"d" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"e" = (/turf/simulated/wall,/area/ruin/unpowered)
"f" = (/turf/simulated/wall/rust,/area/ruin/unpowered)
"g" = (/turf/simulated/floor/plating,/area/ruin/unpowered)
"h" = (/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/ruin/unpowered)
"i" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plating,/area/ruin/unpowered)
"j" = (/obj/structure/barricade/wooden,/obj/structure/door_assembly,/turf/simulated/floor/plating,/area/ruin/unpowered)
"k" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor/plating,/area/ruin/unpowered)
"l" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plating,/area/ruin/unpowered)
"m" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/plating,/area/ruin/unpowered)
"n" = (/obj/structure/table,/turf/simulated/floor/plating,/area/ruin/unpowered)
"o" = (/obj/structure/barricade/wooden,/turf/simulated/floor/plating,/area/ruin/unpowered)
"p" = (/obj/structure/barricade/wooden,/obj/machinery/door/airlock/external,/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered)
"q" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/unpowered)
"r" = (/turf/simulated/floor/plating/airless/asteroid,/area/space)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbabbaaaa
aaaaaaaaaaaaaaaaaaaaaaaaacaaaabbbbaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbaaaaaa
aaaaaaaaaaabbbbbaaaaaaaaaaaaaaaaaaaabaaa
aaaaaaaabbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaabbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaa
aaaaaadbbbbbbbbbbbbbbbaaaaaaaaaaaabaaaaa
aaaaaadbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaa
aaaaaddbbbbbbbbbeefbbeebbbbbbbaaaaaaaaaa
aaaaaddbbbbbbbbgggeggghfibbbbbbbaaaaaaaa
aaaaaddddbbbbbfiggjggghfhebbbbbbaaaaaaaa
aaaaaddddbbbbbfigkfigggjgfbbbbbbbbaaaaaa
aaaaaaaddbbbbbelgmfhggnffebbbbbbbbaaaaaa
aaaaaaadddbbbbfghieiggggibbbbbbbbbbbaaaa
aaaaaaaaddbbbbeffeeeejeeebbbbbbbbbbbaaaa
aaaaaaaaddbbbbegggdggggdebbbbbbbbbbbaaaa
aaaaaaaaddddbbegggigdgdobbbbbbbbbbbbaaaa
aaabaaaaadddddbbebeffeepebbbbbbbbbbbaaaa
aaaaaaaaaaadddbbbbbbbbeoebbbbbbbbbbbbaaa
aaaaaaaaaaadddddddbbbbeqebbbbbbbbbbbbaaa
aaaaaaaaaaaaadddddbbbbbdbbbbbbbbbbbbbaaa
aaaaabaaaaaaadddddddddddddbbbbbbbbbbbaaa
aaaaaaaaaaaaaaaaadddddddddbccbbbbbbbbaaa
aaaaaaabbaaaaaaaaaddddddddbccbbbbbbbbaaa
aaaaaaabbbbaaaaaaarrrrrrrrrccddbbbbbbaaa
aaaaaaabbbbaaaaaaarrdddddddddddddbbbbbaa
aaaaaaaaabbaaaaaaaaddddddddddddddbbbbbaa
aaaaaaaaabbaaaaaaaaddddddddddddddbbbbbaa
aaaaaaaaaaaaaaaaaaaddddddddddddddbbbbbaa
aaaaaaaaaaaaaaaaabbdddddddddddddddbbbbaa
abbaaaaaaaaaaaaaabbdddddddddddddddbbbbaa
abbaaaaaaaaaaaaaabbbbdddddddddddbbbbbbaa
abbbaaaaaaaaaaaaaabbbdddddddddddbbbbbaaa
aaaaaaaaaaaaaaaaaabbbbbbbdddddbbbbbbbaaa
aaaaaaaaaaaaaaaaaaaabbbbbbddddbbbbbbbaaa
aaaaabaaaaaaaaaaaaaabbbbbbbbbbbbbbaaaaaa
aaabaaaaaaaaaaaaaaaaaabbbbbbbbbaaaaaaaaa
"}
@@ -0,0 +1,28 @@
"a" = (/turf/space,/area/space)
"b" = (/obj/structure/lattice,/turf/space,/area/space)
"c" = (/turf/simulated/wall/r_wall,/area/ruin/unpowered)
"d" = (/turf/simulated/floor/plating,/area/ruin/unpowered)
"e" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plating,/area/ruin/unpowered)
"f" = (/obj/item/ammo_box/magazine/sniper_rounds,/turf/simulated/floor/plating,/area/ruin/unpowered)
"g" = (/obj/item/stack/rods,/turf/simulated/floor/plating,/area/ruin/unpowered)
"h" = (/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"i" = (/obj/machinery/door/airlock,/turf/simulated/floor/plating,/area/ruin/unpowered)
"j" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaabaaaaaaa
aaabbaaababaabaaa
aaabccccccccccaba
aabccccccccccccaa
abacccdeddfdcccba
abaccddddddedccbb
bbbdcdgddddddccbb
aadhiddgdedddccaa
aadhiddedddddccbb
abbdcddddddgdccbb
aaaccjdeddeddccbb
aaacccdddddecccaa
aaaccccccccccccba
aabaccccccccccaaa
aaaabbaaaaaaaaaaa
"}
@@ -0,0 +1,61 @@
"a" = (/turf/space,/area/space)
"b" = (/obj/structure/lattice,/turf/space,/area/space)
"c" = (/turf/simulated/wall,/area/ruin/unpowered)
"d" = (/obj/machinery/light{dir = 1},/obj/structure/stool/bed,/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 8},/area/ruin/unpowered)
"e" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 4},/area/ruin/unpowered)
"f" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 1},/obj/structure/stool/bed,/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 8},/area/ruin/unpowered)
"g" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 1},/obj/structure/stool/bed,/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 8},/area/ruin/unpowered)
"h" = (/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 4},/area/ruin/unpowered)
"i" = (/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 8},/area/ruin/unpowered)
"j" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/unary/outlet_injector,/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 4},/area/ruin/unpowered)
"k" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 8},/area/ruin/unpowered)
"l" = (/obj/machinery/atmospherics/unary/outlet_injector,/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 4},/area/ruin/unpowered)
"m" = (/obj/structure/closet/crate/freezer,/obj/item/stack/sheet/animalhide/lizard,/obj/item/weapon/reagent_containers/food/snacks/lizardmeat,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"n" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/lizardmeat,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"o" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/lizardmeat,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"p" = (/obj/machinery/power/apc/worn_out{dir = 8; pixel_x = -24; pixel_y = 0; cell_type = 2500; operating = 1},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/ruin/unpowered)
"q" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/ruin/unpowered)
"r" = (/obj/machinery/door/window/brigdoor/northleft,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/ruin/unpowered)
"s" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"t" = (/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"u" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"v" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"w" = (/obj/structure/kitchenspike,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"x" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchen/knife/butcher,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/reagent_containers/spray/pepper,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"y" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"z" = (/obj/machinery/gibber,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"A" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/straight_jacket,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"B" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"C" = (/obj/machinery/door/airlock/security,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"D" = (/obj/item/weapon/reagent_containers/glass/bottle/morphine{pixel_x = -4; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/bottle/toxin{pixel_x = 6; pixel_y = 8},/obj/item/weapon/reagent_containers/glass/bottle/morphine{pixel_x = 5; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/bottle/facid{name = "fluorosulfuric acid bottle"; pixel_x = -3; pixel_y = 6},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"E" = (/obj/structure/rack,/obj/item/weapon/melee/baton/cattleprod,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"F" = (/obj/structure/table,/obj/item/weapon/pen/red,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"G" = (/obj/structure/table,/obj/item/weapon/paper_bin,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"H" = (/obj/structure/table,/obj/item/weapon/storage/box/prisoner,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"I" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/light,/obj/structure/table,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"J" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/ruin/unpowered)
"K" = (/obj/structure/table/reinforced,/obj/item/weapon/surgicaldrill,/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/obj/item/weapon/surgical_drapes,/obj/item/weapon/retractor,/obj/item/weapon/cautery,/obj/item/weapon/circular_saw,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"L" = (/obj/effect/decal/cleanable/blood/old,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"M" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/mutagen,/obj/item/weapon/reagent_containers/glass/bottle/mutagen,/obj/item/weapon/razor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"N" = (/obj/machinery/suit_storage_unit/security,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"O" = (/obj/machinery/light,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"P" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"Q" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/unpowered)
"R" = (/turf/simulated/floor/plating,/area/ruin/unpowered)
(1,1,1) = {"
aaaababababbaaaaaaa
aaababbbbababbbbaaa
aaabccccccccccbbbba
abbbcdefegefhccccca
abbbcijkjkjklcmnocb
abcccprqrqrqrcssscb
abctutttttttvcwsxca
aacytttttttttczsAca
bbcBtttttttttCssDcb
abcEtttFGHIJJcKLMcb
abcNOtPcccccccccccb
aacccQccbbbbbbaabba
aabbcRcbbaaaaaaabaa
aaabcQcbaaaaaaaaaaa
"}
@@ -0,0 +1,44 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/ruin/powered)
"c" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/ruin/powered)
"d" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/ruin/powered)
"e" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/ruin/powered)
"f" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/simulated/floor/plating,/area/ruin/powered)
"g" = (/obj/structure/table/woodentable,/obj/item/clothing/under/shorts/black,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"h" = (/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"i" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"j" = (/obj/structure/closet,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"k" = (/obj/machinery/vending/assist,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"l" = (/obj/structure/table/woodentable,/obj/item/clothing/shoes/sandal,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"m" = (/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"n" = (/obj/structure/table/woodentable,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"o" = (/obj/structure/table/woodentable,/obj/machinery/computer/library/checkout,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"p" = (/obj/structure/window/full/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/ruin/powered)
"q" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/powered)
"r" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"s" = (/obj/machinery/door/poddoor{id_tag = "strange ship"; name = "Strange Ship Blast Door"},/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"t" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"u" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"v" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"w" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"x" = (/obj/machinery/door_control{name = "Strange Ship Door Control"; pixel_x = 6; pixel_y = 0; id = "strange ship"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/ruin/powered)
"y" = (/obj/machinery/light,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"z" = (/mob/living/simple_animal/bot/medbot,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"A" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "diagonalWall3"},/area/ruin/powered)
"B" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
"C" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/ruin/powered)
"D" = (/obj/machinery/light,/obj/structure/stool/bed,/turf/simulated/shuttle/floor{tag = "icon-floor5"; icon_state = "floor5"},/area/ruin/powered)
(1,1,1) = {"
aabcccccdaaaa
aefghijkcaaaa
aeflhhhhccccd
bccccmhhcmhjc
cnophhhhqhhrc
shhthhhhuhvwc
xhypzhhhqhhnc
Accccmhhcmhjc
aefBhhhhccccC
aefnnDhjcaaaa
aaAcccccCaaaa
"}
@@ -0,0 +1,62 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"},/area/ruin/powered)
"c" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/space,/area/ruin/powered)
"d" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"},/area/ruin/powered)
"e" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/ruin/powered)
"f" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor,/area/ruin/powered)
"g" = (/obj/structure/table,/obj/machinery/door_control{id = "mecha cargo"},/turf/simulated/shuttle/floor,/area/ruin/powered)
"h" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/ruin/powered)
"i" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/ruin/powered)
"j" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor,/area/ruin/powered)
"k" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor,/area/ruin/powered)
"l" = (/turf/simulated/shuttle/floor,/area/ruin/powered)
"m" = (/obj/structure/stool/bed/chair/office/dark{tag = "icon-officechair_dark (NORTH)"; icon_state = "officechair_dark"; dir = 1},/turf/simulated/shuttle/floor,/area/ruin/powered)
"n" = (/obj/machinery/computer/mecha,/turf/simulated/shuttle/floor,/area/ruin/powered)
"o" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"},/area/ruin/powered)
"p" = (/obj/machinery/door/airlock/hatch,/turf/simulated/shuttle/floor{tag = "icon-floor3"; icon_state = "floor3"},/area/ruin/powered)
"q" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/ruin/powered)
"r" = (/turf/simulated/shuttle/floor{tag = "icon-floor3"; icon_state = "floor3"},/area/ruin/powered)
"s" = (/obj/effect/decal/mecha_wreckage/phazon,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"t" = (/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"u" = (/obj/effect/decal/mecha_wreckage/ripley/firefighter,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"v" = (/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"w" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"x" = (/obj/effect/decal/cleanable/blood/gibs/robot/up,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"y" = (/obj/machinery/door/poddoor{id_tag = "mecha cargo"; name = "Cargo Bay Door"; tag = ""},/turf/space,/area/ruin/powered)
"z" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"A" = (/obj/effect/decal/mecha_wreckage/durand,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"B" = (/obj/item/stack/tile/plasteel{pixel_x = 7; pixel_y = 8},/turf/simulated/floor/plating/airless,/area/ruin/powered)
"C" = (/turf/simulated/floor/plating/airless,/area/ruin/powered)
"D" = (/obj/structure/lattice,/turf/space,/area/space)
"E" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/ruin/powered)
"F" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/floor/plating/airless,/area/ruin/powered)
"G" = (/obj/item/stack/tile/plasteel{pixel_x = 7; pixel_y = 8},/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"H" = (/turf/unsimulated/floor/plating/airless{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/ruin/powered)
"I" = (/turf/unsimulated/floor/plating/airless{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/ruin/powered)
"J" = (/obj/effect/decal/mecha_wreckage/odysseus,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/ruin/powered)
"K" = (/obj/item/stack/sheet/metal,/turf/space,/area/space)
"L" = (/obj/effect/decal/mecha_wreckage/gygax,/turf/simulated/shuttle/floor{tag = "icon-floor3"; icon_state = "floor3"},/area/ruin/powered)
"M" = (/turf/unsimulated/floor/plating/airless,/area/space)
"N" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"},/area/ruin/powered)
"O" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"},/area/ruin/powered)
"P" = (/obj/item/stack/rods,/turf/space,/area/space)
"Q" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"},/area/ruin/powered)
"R" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/ruin/powered)
(1,1,1) = {"
abcccccda
aeffghiea
aejklmnea
bopqqqqod
errrrrrre
esttutvte
ewtxtvtty
ezABtttty
BCtAtCtty
DECtFGtwy
HCIBJJtty
KDDCrCLre
aMDKECqNO
aPaaDabQd
aaaaaaRRR
"}
@@ -0,0 +1,196 @@
"aa" = (/turf/space,/area/space)
"ab" = (/obj/structure/lattice,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/space,/area/space)
"ac" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/space,/area/space)
"ad" = (/obj/structure/lattice,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/space,/area/space)
"ae" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/space,/area/space)
"af" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/space,/area/space)
"ag" = (/turf/simulated/wall,/area/ruin/onehalf/dorms_med)
"ah" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/onehalf/dorms_med)
"ai" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/space,/area/space)
"aj" = (/turf/unsimulated/floor/plating/airless,/area/ruin/onehalf/hallway)
"ak" = (/turf/simulated/wall,/area/ruin/onehalf/hallway)
"al" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"am" = (/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"an" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"ao" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/plasteel,/area/ruin/onehalf/dorms_med)
"ap" = (/turf/simulated/floor/plasteel,/area/ruin/onehalf/dorms_med)
"aq" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"ar" = (/turf/simulated/wall,/area/ruin/onehalf/drone_bay)
"as" = (/obj/machinery/door/poddoor{id_tag = "bayext1"; name = "mining drone bay blast door"},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
"at" = (/obj/machinery/door/poddoor{id_tag = "bayext2"; name = "mining drone bay blast door"},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
"au" = (/obj/machinery/door/poddoor/preopen{id_tag = "bayext3"; name = "mining drone bay blast door"},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
"av" = (/obj/machinery/door/poddoor{id_tag = "bayext4"; name = "mining drone bay blast door"},/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
"aw" = (/obj/structure/lattice,/turf/space,/area/space)
"ax" = (/obj/structure/lattice,/turf/space,/area/ruin/onehalf/hallway)
"ay" = (/obj/structure/glasstable_frame,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway)
"az" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"aA" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"aB" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/table,/obj/item/weapon/storage/firstaid/brute{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/firstaid,/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"aC" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel,/area/ruin/onehalf/dorms_med)
"aD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"aE" = (/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
"aF" = (/obj/structure/disposalpipe/trunk,/obj/item/weapon/ore/diamond,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
"aG" = (/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay)
"aH" = (/obj/item/stack/rods,/turf/space,/area/ruin/onehalf/hallway)
"aI" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway)
"aJ" = (/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"aK" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"aL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/power/apc{keep_preset_name = 1; name = "Hallway APC"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"aM" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id_tag = "bayint1"; name = "mining drone bay blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"aN" = (/obj/machinery/door_control{id = "bayint1"; name = "Pod Bay 1 Internal"; pixel_x = -5; pixel_y = -6},/obj/machinery/door_control{id = "bayext1"; name = "Pod Bay 1 External"; pixel_x = -5; pixel_y = 6},/obj/machinery/door_control{id = "bayint2"; name = "Pod Bay 2 Internal"; pixel_x = 7; pixel_y = -6},/obj/machinery/door_control{id = "bayext2"; name = "Pod Bay 2 External"; pixel_x = 7; pixel_y = 6},/turf/simulated/wall,/area/ruin/onehalf/drone_bay)
"aO" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id_tag = "bayint2"; name = "mining drone bay blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"aP" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id_tag = "bayint3"; name = "mining drone bay blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"aQ" = (/obj/machinery/door_control{id = "bayint3"; name = "Pod Bay 3 Internal"; pixel_x = -5; pixel_y = -6},/obj/machinery/door_control{id = "bayext3"; name = "Pod Bay 3 External"; pixel_x = -5; pixel_y = 6},/obj/machinery/door_control{id = "bayint4"; name = "Pod Bay 4 Internal"; pixel_x = 7; pixel_y = -6},/obj/machinery/door_control{id = "bayext4"; name = "Pod Bay 4 External"; pixel_x = 7; pixel_y = 6},/turf/simulated/wall,/area/ruin/onehalf/drone_bay)
"aR" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id_tag = "bayint4"; name = "mining drone bay blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"aS" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless,/area/ruin/onehalf/drone_bay)
"aT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway)
"aU" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway)
"aV" = (/obj/machinery/door/airlock/glass_medical{name = "airlock"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"aW" = (/obj/machinery/door/airlock,/turf/simulated/floor/plasteel,/area/ruin/onehalf/dorms_med)
"aX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
"aY" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/closet/crate/medical,/obj/item/clothing/accessory/stethoscope,/obj/item/device/healthanalyzer,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/machinery/power/apc{dir = 4; keep_preset_name = 1; name = "Crew Quarters APC"; pixel_x = 27},/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/ruin/onehalf/dorms_med)
"aZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
"ba" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
"bb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
"bc" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"bd" = (/obj/item/stack/sheet/metal,/turf/unsimulated/floor/plating/airless{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway)
"be" = (/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4},/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/unsimulated/floor/plating/airless,/area/ruin/onehalf/hallway)
"bf" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway)
"bg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway)
"bh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bi" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (EAST)"; icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway)
"bj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bk" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bl" = (/obj/machinery/door/airlock/glass{name = "glass airlock"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bn" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bp" = (/obj/machinery/door/airlock/maintenance_hatch{name = "maintenance hatch"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"br" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-y"; dir = 1},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bs" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"bt" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/onehalf/drone_bay)
"bu" = (/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4},/turf/unsimulated/floor/plating/airless{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway)
"bv" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway)
"bw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bx" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway)
"by" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; keep_preset_name = 1; name = "Mining Drone Bay APC"; pixel_y = 26},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay)
"bz" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/ruin/onehalf/hallway)
"bA" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bB" = (/obj/machinery/door/airlock/glass{name = "glass airlock"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bD" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bF" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bG" = (/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bH" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bI" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/ruin/onehalf/drone_bay)
"bJ" = (/obj/structure/girder,/turf/unsimulated/floor/plating/airless,/area/ruin/onehalf/hallway)
"bK" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/ruin/onehalf/hallway)
"bL" = (/obj/machinery/vending/coffee{name = "\improper Solar's Best Hot Drinks"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway)
"bM" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/ruin/onehalf/hallway)
"bN" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bO" = (/obj/structure/girder/reinforced,/obj/item/stack/sheet/plasteel,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/hallway)
"bP" = (/obj/structure/girder/reinforced,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/hallway)
"bQ" = (/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 1; keep_preset_name = 1; name = "Bridge APC"; pixel_y = 26},/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"bR" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/ruin/onehalf/hallway)
"bS" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless,/area/ruin/onehalf/hallway)
"bT" = (/turf/simulated/wall/r_wall,/area/ruin/onehalf/bridge)
"bU" = (/obj/item/stack/sheet/metal,/turf/space,/area/space)
"bV" = (/turf/unsimulated/floor/plating/airless{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway)
"bW" = (/obj/structure/girder/reinforced,/turf/unsimulated/floor/plating/airless,/area/ruin/onehalf/hallway)
"bX" = (/turf/simulated/wall/r_wall,/area/ruin/onehalf/hallway)
"bY" = (/turf/simulated/floor/plating/airless,/area/ruin/onehalf/hallway)
"bZ" = (/turf/simulated/floor/plating/airless{icon_state = "platingdmg3"},/area/ruin/onehalf/hallway)
"ca" = (/obj/structure/disposalpipe/segment,/obj/item/stack/rods,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway)
"cb" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/ruin/onehalf/hallway)
"cc" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"cd" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"ce" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cf" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cg" = (/obj/machinery/light{dir = 1; on = 1},/obj/structure/computerframe,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"ch" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cj" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/table,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c500{pixel_y = 9},/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"ck" = (/obj/structure/girder/reinforced,/turf/unsimulated/floor/plating/airless,/area/space)
"cl" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (NORTH)"; icon_state = "pipe-j1"; dir = 1},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway)
"cm" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/obj/item/stack/rods,/turf/space,/area/ruin/onehalf/hallway)
"cn" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/obj/item/weapon/shard{tag = "icon-small"; icon_state = "small"},/turf/space,/area/space)
"co" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"cp" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/table,/obj/item/weapon/paper_bin,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cq" = (/obj/structure/stool/bed/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cr" = (/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cs" = (/obj/structure/stool/bed/chair{tag = "icon-chair (NORTH)"; icon_state = "chair"; dir = 1},/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"ct" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/table,/obj/item/weapon/lighter/zippo,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cu" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"cv" = (/obj/item/stack/rods,/turf/space,/area/space)
"cw" = (/turf/unsimulated/floor/plating/airless,/area/space)
"cx" = (/obj/structure/lattice,/obj/item/stack/sheet/plasteel,/turf/space,/area/space)
"cy" = (/obj/structure/lattice,/obj/item/weapon/shard{tag = "icon-medium"; icon_state = "medium"},/turf/space,/area/ruin/onehalf/hallway)
"cz" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway)
"cA" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cB" = (/obj/item/stack/tile/plasteel{pixel_x = 7; pixel_y = 8},/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cC" = (/obj/structure/cable,/obj/machinery/power/solar_control,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cD" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"cE" = (/obj/item/stack/tile/wood,/turf/space,/area/space)
"cF" = (/turf/space,/area/ruin/onehalf/hallway)
"cG" = (/obj/structure/lattice,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/space,/area/ruin/onehalf/hallway)
"cH" = (/obj/structure/lattice,/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (NORTH)"; icon_state = "pipe-b"; dir = 1},/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (WEST)"; icon_state = "pipe-b"; dir = 8},/turf/space,/area/ruin/onehalf/hallway)
"cI" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"},/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cJ" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cK" = (/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/obj/machinery/door/airlock/glass_command{name = "Bridge"},/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cL" = (/obj/item/weapon/crowbar,/obj/item/device/multitool,/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"cM" = (/obj/structure/safe/floor,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/suit/space/rig/syndi,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/obj/item/weapon/folder/syndicate/blue,/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"cN" = (/obj/structure/stool/bed/chair/comfy/black{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cO" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/space,/area/ruin/onehalf/hallway)
"cP" = (/turf/simulated/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/ruin/onehalf/hallway)
"cQ" = (/obj/machinery/light{dir = 8},/obj/machinery/vending/sovietsoda,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cR" = (/obj/item/stack/sheet/plasteel,/turf/space,/area/space)
"cS" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/space,/area/ruin/onehalf/hallway)
"cT" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway)
"cU" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/onehalf/hallway)
"cV" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cW" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cX" = (/obj/structure/table,/obj/machinery/door_control{id = "onehalf bridge"; name = "Bridge Lockdown"; pixel_x = 0; pixel_y = 5},/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"cY" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"cZ" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/space,/area/space)
"da" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway)
"db" = (/obj/structure/table,/obj/item/device/flashlight,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"dc" = (/obj/structure/table,/obj/item/weapon/ore/bluespace_crystal,/obj/item/weapon/coin/plasma,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"dd" = (/obj/structure/closet/firecloset/full,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"de" = (/obj/machinery/light,/obj/structure/table,/obj/item/weapon/storage/firstaid,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge)
"df" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/space,/area/space)
"dg" = (/obj/structure/girder/reinforced,/obj/item/stack/sheet/plasteel,/turf/simulated/floor/plating/airless,/area/space)
"dh" = (/turf/simulated/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/space)
"di" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway)
"dj" = (/obj/structure/grille,/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/ruin/onehalf/hallway)
"dk" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"dl" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"dm" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"dn" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge)
"do" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/item/weapon/shard{tag = "icon-medium"; icon_state = "medium"},/turf/space,/area/space)
"dp" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/stack/rods,/turf/space,/area/space)
"dq" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/space,/area/space)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaabacacacacacacacacacadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaeacafagagagagagagahagagaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaajakakakagalamanagaoapaoagaqarasaratarauaravaraaaaaaaaaaaa
aaaaawaxaxayazagaAamaBagaCapaoagaDaraEaraFaraEaraEarawaraGaraaaa
aaaaaaaHajaxaIagaJaKaYagaoapaoagaqaraMaNaOaraPaQaRaraaaraSaraaaa
aaaaawajaxaTaUagagaVagagagaWagagaXbyaZbaaZbaaZbabbarararbcararaa
aaaaawbdbebfbgbhbhbibgbgbjbhbkblbmbnbobnbobnbobnbobnbpbqbrbsbtaa
aaaaaabubvbvbwbwbvbxbwbwaLbzbAbBbCbnbDbEbDbnbDbEbFbGarbHbGbIbtaa
aaaaaabJajakbKbLbMbNbObPbXbRbSbTbTbTbTbTbTbTbTbTbTbTararbtararaa
aaaaaaaabUbVbJakbWbXbYawbXbZcacbaacccdcecfcgchbQcjbTawaaaaaaaaaa
aaaaaaaaaaaaaaaackaaaabUaxaxclcmcncocpcqcrcscrcrctcuadaaaaaaaaaa
aaaaaaaaaaaaaacvcwcxaaaabYcyczbTbTbTcAcrcBcrcrcrcCcDaiaaaaaaaaaa
aaaaaaaaaaaaaaaaaaawcEaacFcGcHcIcJcKcrcBcLcMcrcNchcDaiaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaacvawbYcOcPbTbTbTcQcrcrcrcrcrchcDaiaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaacRcEaxcScTcUawcccVcqcrcWcrcrcXcYcZaaaaaaaaaa
aaaaaaaaaaaaaaaaaacvaaaabXdaaIcUaaccdbdcddchchcrdebTdfaaaaaaaaaa
aaaaaaaaaaaaaaaaaadgawdhbPdidjbTbTbTbTdkdldmdldnbTbTaiaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaacxdodpacacacacacdqacacacdqacacafaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,113 @@
"aa" = (/turf/space,/area/space)
"ab" = (/turf/simulated/mineral,/area/space)
"ac" = (/turf/simulated/floor/plating/airless/asteroid,/area/space)
"ad" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/unpowered)
"ae" = (/turf/simulated/wall,/area/ruin/unpowered)
"af" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/powered)
"ag" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/powered)
"ah" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating/airless/asteroid,/area/ruin/powered)
"ai" = (/turf/simulated/mineral,/area/ruin/powered)
"aj" = (/turf/simulated/floor/plating/airless/asteroid,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/ruin/powered)
"ak" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/ruin/powered)
"al" = (/turf/simulated/floor/plating/airless/asteroid,/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_f10"; layer = 2},/area/ruin/powered)
"am" = (/turf/simulated/wall,/area/ruin/powered{name = "Space Bar"})
"an" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/ruin/powered)
"ao" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/ruin/powered)
"ap" = (/obj/structure/table,/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aq" = (/obj/structure/table,/obj/machinery/vending/boozeomat,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"ar" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"as" = (/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"at" = (/obj/structure/table,/obj/item/toy/figure/bartender,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"au" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"av" = (/obj/effect/decal/remains/human,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aw" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"ax" = (/turf/simulated/shuttle/floor,/area/ruin/powered)
"ay" = (/obj/machinery/door/airlock{name = "Bar Storage"; req_access_txt = "25"},/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"az" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aA" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/ruin/powered)
"aB" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/turf/simulated/shuttle/floor,/area/ruin/powered)
"aC" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/ruin/powered)
"aD" = (/obj/machinery/door_control{name = "pod door cycle"; pixel_x = 6; id = "pod cycle"},/turf/simulated/wall,/area/ruin/powered{name = "Space Bar"})
"aE" = (/obj/machinery/vending/boozeomat,/turf/simulated/wall,/area/ruin/powered{name = "Space Bar"})
"aF" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aG" = (/obj/machinery/light/small,/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aH" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aI" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 10},/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aJ" = (/turf/simulated/wall,/area/ruin/powered)
"aK" = (/obj/structure/table,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/glass/rag,/turf/simulated/floor/wood,/area/ruin/powered{name = "Space Bar"})
"aM" = (/obj/machinery/door/airlock{name = "Bar Storage"; req_access_txt = "25"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/ruin/powered{name = "Space Bar"})
"aN" = (/obj/structure/stool,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aO" = (/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aP" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aQ" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/ruin/powered{name = "Space Bar"})
"aR" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/wall,/area/ruin/powered{name = "Space Bar"})
"aS" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/powered{name = "Space Bar"})
"aT" = (/turf/simulated/floor/plating,/area/ruin/powered{name = "Space Bar"})
"aU" = (/obj/structure/stool/bed/chair{tag = "icon-chair (EAST)"; icon_state = "chair"; dir = 4},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aV" = (/obj/structure/table/woodentable,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aW" = (/obj/structure/stool/bed/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aY" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"aZ" = (/obj/item/device/radio/beacon,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"ba" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bb" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bc" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bd" = (/obj/machinery/vending/snack,/obj/machinery/light,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"be" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bf" = (/obj/machinery/door/airlock{name = "Unisex Bathroom"},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bg" = (/obj/structure/urinal{pixel_x = -32},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bh" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bi" = (/obj/structure/table/woodentable,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bj" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bk" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bl" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bm" = (/obj/effect/glowshroom/single,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Space Bar"})
"bn" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/powered)
"bo" = (/turf/simulated/floor/plating,/area/ruin/powered)
"bp" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/ruin/powered)
"bq" = (/obj/machinery/door/poddoor/preopen{id_tag = "pod cycle"; name = "airlock dock"},/turf/simulated/floor/plating,/area/ruin/powered)
"br" = (/obj/machinery/door/poddoor{id_tag = "pod cycle"; name = "airlock dock"},/turf/simulated/floor/plating,/area/ruin/powered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacababacacacacacaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaacacacacacadadaeadadacacacacacacacacacacacacacaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaacacacafafafagagagagagafafacacafafafafafafahacacacacaaaaaaaaaa
aaaaaaaaaaaaaaaaacacacafagagagagagagaiaiagagafafagagagagagagagafafacacacaaaaaaaa
aaaaaaaaaaaaaaacacacafagagagagagagaiaiaiaiagagagagagagagagagagagagafacacaaaaaaaa
aaaaaaaaaaacacacacafagajakalagagaiaiaiamamamamamamamamamamamamagagafacacaaaaaaaa
aaaaaaaaaaacacacafagaganaoanagagaiaiaiamapaqarasamatauavasawamagagafacacacaaaaaa
aaaaaaaaacacafafagagaganaxanagagaiaiaiamasasasasayasasasasazamagagagafacacaaaaaa
aaaaaaababacafagagagagaAaBaCagagagaiaiaDasasasasaEaFaGaHasaIamagagagafacacaaaaaa
aaaaaaaaabacaJagagagagagagagagagagagagamaKaKaLaKamamamamaMamamagagagaJacaaaaaaaa
aaaaaaaaabacafafagagagagagagagagagagagamaNaNaNaNaOaOaPaOaOaOamagagagafacabaaaaaa
aaaaaaaaacacacacafagagagagagagagamaQaRamaOaOaOaOaOaOaOaOaOaOaQagagafacacababaaaa
aaaaaaaaaaacacafagagagagagagagagaSaTaTaSaOaOaOaOaOaOaUaVaWaOaQagagafacabababaaaa
aaaaaaaaaaacacafagagagagagagagagamaQaQamaXaOaUaVaWaOaOaOaOaOaQagagafacacaaaaaaaa
aaaaaaaaacacafagagagagagagagagagagagagamaYaOaOaOaOaZaOaOaOaOaQagagafacacaaaaaaaa
aaaaaaaaabacafagagagagagagagagagagagagamaVaOaOaObabbbcbdaOaOamagagafacacacaaaaaa
aaaaaaababacafagagagagagagagagagagagagambeaOaOaOamamamamambfamaiagagafacacacaaaa
aaaaaaaaabacafagagagagagagagagajakalagamaOaOaOaOambgaOaOaOaOamaiagagagafacabaaaa
aaaaaaaaacacafagagagagagagagaganaoanagaQaOaOaOaYambgaOaOaObhamaiaiagagafacabaaaa
aaaaaaaaacacacafagagagagagagaganaxanagagaQaOaObiamamambjaObhamaiaiagagafacabaaaa
aaaaaaaaaaacacafagagagagagagagaAaBaCagagagaQaObeambkblaObmaOamaiaiagagafacacaaaa
aaaaaaaaaaacaJaJaJaJagagagagagagagagagagagagaQamamamamamamamamaiaiagafacacacaaaa
aaaaaaaaaaaabnbobobnagagagagagagagagagagaiaiagagagaiaiaiaiaiaiaiaiagafacacacaaaa
aaaaaaaaaaaaaJaJaJaJagagagagagagagagagaiaiaiagagagagagaiaiaiaiaiaiafacacacaaaaaa
aaaaaaaaaaaaacacaJagaJbpbpbpbpbpbpaJagagaiagagagagagagagagaiaiaiagafacacaaaaaaaa
aaaaaaaaaaaaacabaJagaJbqbqbqbqbqbqaJagagagagagagagagagagagagagagafaJacabaaaaaaaa
aaaaaaaaaaaaababaJaJaJboboboboboboaJaJaJaJafafafafafafafafafafaJacacacacaaaaaaaa
aaaaaaaaaaaaababababaJboboboboboboaJacacacacacacacacacacacacacacacacacaaaaaaaaaa
aaaaaaaaaaaaaaaaababaJboboboboboboaJacacacacacacacacabacacacacacacaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaJboboboboboboaJacacacacaaaaaaacacacababaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaJbrbrbrbrbrbraJacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaJaaaaaaaaaaaaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,66 @@
"a" = (/turf/space,/area/space)
"b" = (/obj/structure/lattice,/turf/space,/area/space)
"c" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/ruin/unpowered)
"d" = (/turf/simulated/wall/r_wall,/area/ruin/unpowered)
"e" = (/obj/structure/table/reinforced,/obj/item/weapon/stock_parts/cell/hyper,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"f" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"g" = (/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"h" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"i" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/unpowered)
"j" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/ruin/unpowered)
"k" = (/turf/simulated/floor/plating,/area/ruin/unpowered)
"l" = (/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"m" = (/obj/structure/table/reinforced,/obj/item/weapon/folder,/obj/item/device/radio,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"n" = (/obj/structure/stool/bed/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"o" = (/obj/machinery/porta_turret,/turf/simulated/floor/plating/airless,/area/ruin/unpowered)
"p" = (/obj/structure/filingcabinet,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"q" = (/obj/machinery/light,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"r" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ruin/unpowered)
"s" = (/obj/item/weapon/rack_parts,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ruin/unpowered)
"t" = (/obj/item/weapon/rack_parts,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ruin/unpowered)
"u" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"v" = (/obj/machinery/door/airlock,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"w" = (/obj/machinery/power/apc{dir = 2; name = "Outpost APC"; keep_preset_name = 1; pixel_y = -24},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"x" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"y" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"z" = (/obj/structure/table/reinforced,/obj/item/clothing/head/ushanka,/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredfull"},/area/ruin/unpowered)
"A" = (/obj/structure/table/reinforced,/obj/structure/reagent_dispensers/peppertank{pixel_y = 32},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"B" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/machinery/light{dir = 1},/obj/item/device/radio,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"C" = (/obj/machinery/vending/clothing,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"D" = (/obj/structure/rack,/obj/item/ammo_box/c9mm,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ruin/unpowered)
"E" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"F" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ruin/unpowered)
"G" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/paper/crumpled,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ruin/unpowered)
"H" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"I" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"J" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"K" = (/obj/structure/rack,/obj/item/weapon/grenade/chem_grenade/teargas,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/unpowered)
"L" = (/obj/structure/table/reinforced,/obj/item/weapon/paper/crumpled,/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredfull"},/area/ruin/unpowered)
"M" = (/obj/structure/table/reinforced,/obj/machinery/light,/obj/item/device/camera_bug,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"N" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"O" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/blue,/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"P" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = -4; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
"Q" = (/obj/structure/rack,/obj/item/weapon/storage/belt/military,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ruin/unpowered)
"R" = (/obj/structure/rack,/obj/item/clothing/head/helmet/riot,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ruin/unpowered)
"S" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/rawcutlet,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/ruin/unpowered)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaabbab
aaaaabaabbaaaaabababbb
aaaaababbacccccccccccc
aaaaabbbbbcddddddddddd
aaaaabaaaacdefffghijki
aaalllllllcdmnggggikki
aaloddddddcdpqgggwdddd
aalddrstrdddddudvddkkc
aaldsxxxxydzABgdgCdddc
aaldrxrDxxuggggdgggEdc
bbldFxrGxxuggHgdIggJdc
abldrxxxxKdLMNOdPggJdc
ablddrsQRdddddddSggJdc
aaloddddddolllcddddddc
abbllllllllbbacccccccc
aabbbbbabbbbaabbbaaaba
aaabaabaaaabaababaaabb
aaaaaaaaaaaaaabaaaaaaa
"}
@@ -0,0 +1,37 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/mineral/random,/area/ruin/unpowered/no_grav/way_home)
"c" = (/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered/no_grav/way_home)
"d" = (/obj/structure/signpost{name = "salvation"},/turf/simulated/floor/plating/airless/asteroid,/area/ruin/unpowered/no_grav/way_home)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaabaaaaaaaaaaaaaaa
aaaaaaaaaaaaabbbaaaaaaaaaaaaaa
aaaaaaaaaabbbbbbbbbaaaaaaaaaaa
aaaaaaaaaaabbbbbbbbaaaaaaaaaaa
aaaaaaaaaabbbbbbbbaaaaaaaaaaaa
aaaaaaaaabbbbbbbbbaaaaaaaaaaaa
aaaaaaaaabbbbbbbbbbaaaaaaaaaaa
aaaaaaaabbbbbbbbbbbbaaaaaaaaaa
aaaaaaabbbbbbbbcbbbaaaaaaaaaaa
aaaaaaabbbbbbbcccaaaaaaaaaaaaa
aaaaaabbbbbbbbccaaaaaaaaaaaaaa
aaaaaabbbbbbcccaaaaaaaaaaaaaaa
aaaaaaabbbcccccaaaaaaaaaaaaaaa
aaaaaaabbaacccccaaaaaaaaaaaaaa
aaaaaaaaaaaaaccccaaaaaaaaaaaaa
aaaaaaaaaaaaaccdccaaaaaaaaaaaa
aaaaaaaaaaaaaccccccaaaaaaaaaaa
aaaaaaaaaaaaaaccccccaaaaaaaaaa
aaaaaaaaaaaaaacccbccaaaaaaaaaa
aaaaaaaaaaaaaaaccbbccaaaaaaaaa
aaaaaaaaaaaaaaacbbbbbaaaaaaaaa
aaaaaaaaaaaaaaacbbbbbbaaaaaaaa
aabbaaaaaaaaaaaabbbbbbbaaaaaaa
aabbbaaaaaaaaaabbbbbbbbbaaaaaa
aaabaaaaaaaaaabbaaabbbabaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+1 -1
View File
@@ -2022,7 +2022,7 @@
"aMT" = (/obj/machinery/camera{c_tag = "Bar Storage"; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/reagentgrinder,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aMU" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/weapon/storage/fancy/candle_box/eternal,/obj/item/weapon/storage/fancy/candle_box/eternal,/obj/item/weapon/storage/fancy/candle_box/eternal,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aMV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aMW" = (/obj/effect/spawner/window/reinforced,/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"aMW" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"aMX" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"aMY" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"aMZ" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
+4
View File
@@ -0,0 +1,4 @@
"a" = (/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/template_noop)
(1,1,1) = {"
a
"}
@@ -0,0 +1,46 @@
"a" = (/turf/space,/area/space)
"b" = (/obj/structure/shuttle/engine/propulsion/burst/left{tag = "icon-burst_l (EAST)"; icon_state = "burst_l"; dir = 4},/turf/space,/area/ruin/powered{name = "Shuttle"})
"c" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/turf/simulated/floor/plating/airless,/area/ruin/powered{name = "Shuttle"})
"d" = (/turf/simulated/shuttle/wall{tag = "icon-wall3"; icon_state = "wall3"},/area/ruin/powered{name = "Shuttle"})
"e" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (NORTHEAST)"; icon_state = "wall3"; dir = 5},/area/ruin/powered{name = "Shuttle"})
"f" = (/turf/simulated/shuttle/wall,/turf/simulated/shuttle/wall{tag = "icon-wall3 (SOUTHEAST)"; icon_state = "wall3"; dir = 6},/area/ruin/powered{name = "Shuttle"})
"g" = (/turf/simulated/shuttle/wall,/area/ruin/powered{name = "Shuttle"})
"h" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"i" = (/turf/simulated/shuttle/wall{tag = "icon-diagonalWall (SOUTHEAST)"; icon_state = "diagonalWall"; dir = 6},/area/ruin/powered{name = "Shuttle"})
"j" = (/turf/simulated/floor/plasteel{tag = "icon-dark"; icon_state = "dark"},/area/ruin/powered{name = "Shuttle"})
"k" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel{tag = "icon-dark"; icon_state = "dark"},/area/ruin/powered{name = "Shuttle"})
"l" = (/obj/machinery/door/airlock/glass,/turf/space,/area/ruin/powered{name = "Shuttle"})
"m" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/ruin/powered{name = "Shuttle"})
"n" = (/obj/machinery/sleeper{tag = "icon-sleeper (NORTH)"; icon_state = "sleeper"; dir = 1},/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/ruin/powered{name = "Shuttle"})
"o" = (/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Shuttle"})
"p" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Shuttle"})
"q" = (/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/ruin/powered{name = "Shuttle"})
"r" = (/turf/simulated/floor/plasteel{tag = "icon-whiteyellowfull"; icon_state = "whiteyellowfull"},/area/ruin/powered{name = "Shuttle"})
"s" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-whiteyellowfull"; icon_state = "whiteyellowfull"},/area/ruin/powered{name = "Shuttle"})
"t" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"u" = (/obj/machinery/power/smes/magical,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Shuttle"})
"v" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-window1"; icon_state = "window1"},/area/ruin/powered{name = "Shuttle"})
"w" = (/turf/simulated/shuttle/wall{tag = "icon-diagonalWall (NORTHWEST)"; icon_state = "diagonalWall"; dir = 9},/area/ruin/powered{name = "Shuttle"})
"x" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-diagonalWall (NORTHWEST)"; icon_state = "diagonalWall"; dir = 9},/area/ruin/powered{name = "Shuttle"})
"y" = (/turf/simulated/shuttle/wall{tag = "icon-wall"; icon_state = "wall"},/area/ruin/powered{name = "Shuttle"})
"z" = (/obj/structure/shuttle/engine/propulsion/burst/right{tag = "icon-burst_r (EAST)"; icon_state = "burst_r"; dir = 4},/turf/space,/area/ruin/powered{name = "Shuttle"})
"A" = (/turf/simulated/shuttle/wall,/turf/simulated/shuttle/wall{tag = "icon-wall3 (NORTHEAST)"; icon_state = "wall3"; dir = 5},/area/ruin/powered{name = "Shuttle"})
"B" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (SOUTHEAST)"; icon_state = "wall3"; dir = 6},/area/ruin/powered{name = "Shuttle"})
(1,1,1) = {"
aaabcdddeaaaaaaaaaaaaaa
aaabcddddeaaaaaaaaaaaaa
aaabcfgggghhgiaaaaaaaaa
aaggggjjjgjjggiaaaaaaaa
aagjjkjjjglggggggggiaaa
ggggkggkggjjgmngjjggggi
hopoogjjjljjlqqljjlrrst
gogougjjjgvvgvvggggrrst
hopoogjjjljjljjljjlrrst
ggggkggkggjjgjjgjjggggw
aagjjkjjjglggggggggxaaa
aaygggjjjgjjggwaaaaaaaa
aaazcAgggghhgwaaaaaaaaa
aaazcdddBaaaaaaaaaaaaaa
aaazcddBaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,48 @@
"a" = (/turf/space,/area/space)
"b" = (/obj/structure/shuttle/engine/propulsion/burst/left{tag = "icon-burst_l (EAST)"; icon_state = "burst_l"; dir = 4},/turf/space,/area/ruin/powered{name = "Shuttle"})
"c" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/turf/simulated/floor/plating/airless,/area/ruin/powered{name = "Shuttle"})
"d" = (/turf/simulated/shuttle{tag = "icon-wall3 (EAST)"; icon_state = "wall3"; dir = 4},/area/ruin/powered{name = "Shuttle"})
"e" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (NORTHEAST)"; icon_state = "wall3"; dir = 5},/area/ruin/powered{name = "Shuttle"})
"f" = (/obj/structure/shuttle/engine/propulsion/burst/right{tag = "icon-burst_r (EAST)"; icon_state = "burst_r"; dir = 4},/turf/space,/area/ruin/powered{name = "Shuttle"})
"g" = (/turf/simulated/shuttle/wall,/turf/simulated/shuttle{tag = "icon-wall3 (SOUTHEAST)"; icon_state = "wall3"; dir = 6},/area/ruin/powered{name = "Shuttle"})
"h" = (/turf/simulated/shuttle/wall,/area/ruin/powered{name = "Shuttle"})
"i" = (/turf/simulated/shuttle/wall{tag = "icon-diagonalWall (SOUTHEAST)"; icon_state = "diagonalWall"; dir = 6},/area/space)
"j" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (NORTHWEST)"; icon_state = "wall3"; dir = 9},/area/ruin/powered{name = "Shuttle"})
"k" = (/turf/simulated/floor/plasteel{tag = "icon-dark"; icon_state = "dark"},/area/ruin/powered{name = "Shuttle"})
"l" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel{tag = "icon-dark"; icon_state = "dark"},/area/ruin/powered{name = "Shuttle"})
"m" = (/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Shuttle"})
"n" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel{tag = "icon-dark"; icon_state = "dark"},/area/ruin/powered{name = "Shuttle"})
"o" = (/turf/simulated/shuttle/wall{tag = "icon-diagonalWall (SOUTHEAST)"; icon_state = "diagonalWall"; dir = 6},/area/ruin/powered{name = "Shuttle"})
"p" = (/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/ruin/powered{name = "Shuttle"})
"q" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Shuttle"})
"r" = (/turf/simulated/floor/plasteel{tag = "icon-whiteyellowfull"; icon_state = "whiteyellowfull"},/area/ruin/powered{name = "Shuttle"})
"s" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (SOUTHWEST)"; icon_state = "wall3"; dir = 10},/area/ruin/powered{name = "Shuttle"})
"t" = (/obj/structure/table,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Shuttle"})
"u" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/ruin/powered{name = "Shuttle"})
"v" = (/obj/machinery/sleeper{tag = "icon-sleeper (NORTH)"; icon_state = "sleeper"; dir = 1},/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/ruin/powered{name = "Shuttle"})
"w" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-whiteyellowfull"; icon_state = "whiteyellowfull"},/area/ruin/powered{name = "Shuttle"})
"x" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"y" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"z" = (/obj/machinery/power/smes/magical,/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"A" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"B" = (/obj/structure/stool/bed/chair/comfy{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whiteyellowfull"; icon_state = "whiteyellowfull"},/area/ruin/powered{name = "Shuttle"})
"C" = (/turf/simulated/shuttle/wall,/turf/simulated/shuttle{tag = "icon-wall3 (NORTHEAST)"; icon_state = "wall3"; dir = 5},/area/ruin/powered{name = "Shuttle"})
"D" = (/turf/simulated/shuttle/wall{tag = "icon-diagonalWall (NORTHWEST)"; icon_state = "diagonalWall"; dir = 9},/area/ruin/powered{name = "Shuttle"})
"E" = (/turf/simulated/shuttle/wall{tag = "icon-diagonalWall (NORTHWEST)"; icon_state = "diagonalWall"; dir = 9},/area/space)
"F" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (SOUTHEAST)"; icon_state = "wall3"; dir = 6},/area/ruin/powered{name = "Shuttle"})
(1,1,1) = {"
aaabcddddeaaaaaaaaaaaaaaaaaa
aaafcddghhhiaaaaaaaaaaaaaaaa
aaajdghhkkhhhhlhiaaaaaaaaaaa
bcdddhmnkknkkhkhhhhhhhhhhhoa
fcddghmhhhhkknknknppnkkqrrhh
aaashtmhhhhnhhhhkhuvhkkhrwxa
aaaaymmzhhhkhhhhkhAAhAAhBwxa
aaajhtmhhhhnhhhhkhkkhkkhrwxa
bcddChmhhhhkknknknkknkkqrrhh
fcdddhmnkknkkhkhhhhhhhhhhhDa
aaasdChhkkhhhhlhEaaaaaaaaaaa
aaabcddChhhEaaaaaaaaaaaaaaaa
aaafcddddFaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,58 @@
"a" = (/turf/space,/area/space)
"b" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (NORTH)"; icon_state = "propulsion"; dir = 1},/turf/space,/area/ruin/powered{name = "Shuttle"})
"c" = (/turf/simulated/shuttle/wall{tag = "icon-wall3"; icon_state = "wall3"},/area/ruin/powered{name = "Shuttle"})
"d" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/turf/simulated/floor/plating/airless,/area/ruin/powered{name = "Shuttle"})
"e" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (NORTHWEST)"; icon_state = "wall3"; dir = 9},/area/ruin/powered{name = "Shuttle"})
"f" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (NORTHEAST)"; icon_state = "wall3"; dir = 5},/area/ruin/powered{name = "Shuttle"})
"g" = (/turf/simulated/shuttle/wall,/turf/simulated/shuttle{tag = "icon-wall3 (SOUTHEAST)"; icon_state = "wall3"; dir = 6},/area/ruin/powered{name = "Shuttle"})
"h" = (/turf/simulated/shuttle/wall,/area/ruin/powered{name = "Shuttle"})
"i" = (/turf/simulated/shuttle/wall,/turf/simulated/shuttle{tag = "icon-wall3 (SOUTHWEST)"; icon_state = "wall3"; dir = 10},/area/ruin/powered{name = "Shuttle"})
"j" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"k" = (/obj/machinery/power/smes/magical,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Shuttle"})
"l" = (/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Shuttle"})
"m" = (/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"n" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/ruin/powered{name = "Shuttle"})
"o" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/simulated/floor/plating/airless,/area/ruin/powered{name = "Shuttle"})
"p" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel,/area/ruin/powered{name = "Shuttle"})
"q" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/turf/simulated/floor/plating/airless,/area/ruin/powered{name = "Shuttle"})
"r" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (WEST)"; icon_state = "propulsion"; dir = 8},/turf/space,/area/ruin/powered{name = "Shuttle"})
"s" = (/turf/simulated/shuttle/wall,/turf/simulated/shuttle{tag = "icon-wall3 (NORTHEAST)"; icon_state = "wall3"; dir = 5},/area/ruin/powered{name = "Shuttle"})
"t" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"u" = (/turf/simulated/shuttle/wall,/turf/simulated/shuttle{tag = "icon-wall3 (NORTHWEST)"; icon_state = "wall3"; dir = 9},/area/ruin/powered{name = "Shuttle"})
"v" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-whiteyellowfull"; icon_state = "whiteyellowfull"},/area/ruin/powered{name = "Shuttle"})
"w" = (/turf/simulated/floor/plasteel{tag = "icon-whiteyellowfull"; icon_state = "whiteyellowfull"},/area/ruin/powered{name = "Shuttle"})
"x" = (/obj/structure/stool/bed/chair/comfy{tag = "icon-comfychair (WEST)"; icon_state = "comfychair"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-whiteyellowfull"; icon_state = "whiteyellowfull"},/area/ruin/powered{name = "Shuttle"})
"y" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (SOUTHWEST)"; icon_state = "wall3"; dir = 10},/area/ruin/powered{name = "Shuttle"})
"z" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/ruin/powered{name = "Shuttle"})
"A" = (/turf/simulated/floor/plasteel{tag = "icon-dark"; icon_state = "dark"},/area/ruin/powered{name = "Shuttle"})
"B" = (/turf/space,/turf/simulated/shuttle{tag = "icon-wall3 (SOUTHEAST)"; icon_state = "wall3"; dir = 6},/area/ruin/powered{name = "Shuttle"})
"C" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plating,/area/ruin/powered{name = "Shuttle"})
"D" = (/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/ruin/powered{name = "Shuttle"})
"E" = (/obj/structure/table,/obj/item/weapon/storage/firstaid,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/ruin/powered{name = "Shuttle"})
"F" = (/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/ruin/powered{name = "Shuttle"})
"G" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/ruin/powered{name = "Shuttle"})
(1,1,1) = {"
aaaaaaaabaaaabaaaaaaaa
aaaaaabcdaaaadcbaaaaaa
aaaaaedccfaaeccdfaaaaa
aaaaecccccaacccccfaaaa
aaaeghhicgjjicghhifaaa
aaechklhhhmmhhhlkhcfaa
anochllllpllpllllhcqra
acccshlllhtthlllhuccca
noccchllhvwxwhllhcccqr
aaycghphzhwwhAhphicBaa
aaaajmlCDDllAAClmjaaaa
aaaajmlCDDllAAClmjaaaa
aaecshphEhAAhAhphucfaa
noccchllhAAAAhllhcccqr
acccghlllhtthlllhiccca
anochllllpllpllllhcqra
aaychklhhhmmhhhlkhcBaa
aaayshhucsjjucshhuBaaa
aaaaycccccaacccccBaaaa
aaaaayFccBaayccFBaaaaa
aaaaaaGcFaaaaFcGaaaaaa
aaaaaaaaGaaaaGaaaaaaaa
"}
@@ -0,0 +1,14 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/simulated/mineral,/area/space)
"c" = (/turf/simulated/mineral/random/low_chance,/area/space)
(1,1,1) = {"
aabbaaa
abbbcaa
bbcccca
cccccbb
bcccccb
bccccbb
bcbcbba
aabbaaa
"}
@@ -0,0 +1,33 @@
"a" = (/turf/space,/area/space)
"b" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"},/area/space)
"c" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/floor/plating/airless,/area/space)
"d" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"},/area/space)
"e" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/space)
"f" = (/turf/simulated/shuttle/floor,/area/space)
"g" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/space)
"h" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"},/area/space)
"i" = (/turf/simulated/shuttle/wall{tag = "icon-swall8"; icon_state = "swall8"},/area/space)
"j" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/space)
"k" = (/turf/simulated/shuttle/wall{tag = "icon-swall4"; icon_state = "swall4"},/area/space)
"l" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/space)
"m" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/space)
"n" = (/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/space)
"o" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"},/area/space)
"p" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/simulated/floor/plating/airless,/area/space)
"q" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/floor/plating/airless,/area/space)
"r" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/simulated/floor/plating/airless,/area/space)
"s" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"},/area/space)
(1,1,1) = {"
abcccda
aefgfea
aefffea
bhijkhd
elfffme
elfffme
jfffffj
jfffffj
efffffe
ennnnne
opqqqrs
"}
+2 -2
View File
@@ -32,6 +32,8 @@ Pipelines + Other Objects -> Pipe network
var/global/datum/pipe_icon_manager/icon_manager
/obj/machinery/atmospherics/New()
..()
if(!icon_manager)
icon_manager = new()
@@ -42,8 +44,6 @@ Pipelines + Other Objects -> Pipe network
if(!pipe_color_check(pipe_color))
pipe_color = null
..()
/obj/machinery/atmospherics/initialize()
..()
@@ -60,13 +60,13 @@
icon_state = "map_vent_in"
/obj/machinery/atmospherics/unary/vent_pump/New()
..()
icon = null
initial_loc = get_area(loc)
area_uid = initial_loc.uid
if(!id_tag)
assign_uid()
id_tag = num2text(uid)
..()
/obj/machinery/atmospherics/unary/vent_pump/high_volume
name = "large air vent"
@@ -41,13 +41,13 @@
connect_types = list(1,3) //connects to regular and scrubber pipes
/obj/machinery/atmospherics/unary/vent_scrubber/New()
..()
icon = null
initial_loc = get_area(loc)
area_uid = initial_loc.uid
if(!id_tag)
assign_uid()
id_tag = num2text(uid)
..()
/obj/machinery/atmospherics/unary/vent_scrubber/Destroy()
if(initial_loc && frequency == 1439)
+30 -31
View File
@@ -17,6 +17,11 @@
layer = 2.4 //under wires with their 2.44
/obj/machinery/atmospherics/pipe/manifold/New()
..()
alpha = 255
icon = null
switch(dir)
if(NORTH)
initialize_directions = EAST|SOUTH|WEST
@@ -27,11 +32,6 @@
if(WEST)
initialize_directions = NORTH|EAST|SOUTH
..()
alpha = 255
icon = null
/obj/machinery/atmospherics/pipe/manifold/initialize()
..()
for(var/D in cardinal)
@@ -62,7 +62,6 @@
/obj/machinery/atmospherics/pipe/manifold/hide(var/i)
if(level == 1 && istype(loc, /turf/simulated))
invisibility = i ? 101 : 0
update_icon()
/obj/machinery/atmospherics/pipe/manifold/pipeline_expansion()
return list(node1, node2, node3)
@@ -102,6 +101,7 @@
if(istype(node3, /obj/machinery/atmospherics/pipe))
qdel(parent)
node3 = null
check_nodes_exist()
update_icon()
..()
@@ -121,40 +121,39 @@
alpha = 255
if(!node1 && !node2 && !node3)
var/turf/T = get_turf(src)
new /obj/item/pipe(loc, make_from=src)
for(var/obj/machinery/meter/meter in T)
if(meter.target == src)
new /obj/item/pipe_meter(T)
qdel(meter)
qdel(src)
else
overlays.Cut()
overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type)
overlays += icon_manager.get_atmos_icon("manifold", , , "clamps" + icon_connect_type)
underlays.Cut()
overlays.Cut()
overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type)
overlays += icon_manager.get_atmos_icon("manifold", , , "clamps" + icon_connect_type)
underlays.Cut()
var/turf/T = get_turf(src)
if(!istype(T)) return
var/list/directions = list(NORTH, SOUTH, EAST, WEST)
var/node1_direction = get_dir(src, node1)
var/node2_direction = get_dir(src, node2)
var/node3_direction = get_dir(src, node3)
var/turf/T = get_turf(src)
if(!istype(T)) return
var/list/directions = list(NORTH, SOUTH, EAST, WEST)
var/node1_direction = get_dir(src, node1)
var/node2_direction = get_dir(src, node2)
var/node3_direction = get_dir(src, node3)
directions -= dir
directions -= dir
directions -= add_underlay(T,node1,node1_direction,icon_connect_type)
directions -= add_underlay(T,node2,node2_direction,icon_connect_type)
directions -= add_underlay(T,node3,node3_direction,icon_connect_type)
directions -= add_underlay(T,node1,node1_direction,icon_connect_type)
directions -= add_underlay(T,node2,node2_direction,icon_connect_type)
directions -= add_underlay(T,node3,node3_direction,icon_connect_type)
for(var/D in directions)
add_underlay(T,,D,icon_connect_type)
for(var/D in directions)
add_underlay(T,,D,icon_connect_type)
/obj/machinery/atmospherics/pipe/manifold/update_underlays()
..()
update_icon()
// A check to make sure both nodes exist - self-delete if they aren't present
/obj/machinery/atmospherics/pipe/manifold/check_nodes_exist()
if(!node1 && !node2 && !node3)
Deconstruct()
return 0 // 0: No nodes exist
// 1: 1-3 nodes exist, we continue existing
return 1
/obj/machinery/atmospherics/pipe/manifold/visible
icon_state = "map"
level = 2
+29 -42
View File
@@ -72,6 +72,7 @@
qdel(parent)
node4 = null
check_nodes_exist()
update_icon()
..()
@@ -93,59 +94,45 @@
return
alpha = 255
overlays.Cut()
overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type)
overlays += icon_manager.get_atmos_icon("manifold", , , "clamps_4way" + icon_connect_type)
underlays.Cut()
if(!node1 && !node2 && !node3 && !node4)
var/turf/T = get_turf(src)
new /obj/item/pipe(loc, make_from=src)
for(var/obj/machinery/meter/meter in T)
if(meter.target == src)
new /obj/item/pipe_meter(T)
qdel(meter)
qdel(src)
else
overlays.Cut()
overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type)
overlays += icon_manager.get_atmos_icon("manifold", , , "clamps_4way" + icon_connect_type)
underlays.Cut()
var/turf/T = get_turf(src)
if(!istype(T)) return
var/list/directions = list(NORTH, SOUTH, EAST, WEST)
var/node1_direction = get_dir(src, node1)
var/node2_direction = get_dir(src, node2)
var/node3_direction = get_dir(src, node3)
var/node4_direction = get_dir(src, node4)
/*
var/list/directions = list(NORTH, SOUTH, EAST, WEST)
directions -= dir
directions -= add_underlay(node1)
directions -= add_underlay(node2)
directions -= add_underlay(node3)
directions -= add_underlay(node4)
directions -= add_underlay(T,node1,node1_direction,icon_connect_type)
directions -= add_underlay(T,node2,node2_direction,icon_connect_type)
directions -= add_underlay(T,node3,node3_direction,icon_connect_type)
directions -= add_underlay(T,node4,node4_direction,icon_connect_type)
for(var/D in directions)
add_underlay(,D)
*/
var/turf/T = get_turf(src)
if(!istype(T)) return
var/list/directions = list(NORTH, SOUTH, EAST, WEST)
var/node1_direction = get_dir(src, node1)
var/node2_direction = get_dir(src, node2)
var/node3_direction = get_dir(src, node3)
var/node4_direction = get_dir(src, node4)
directions -= dir
directions -= add_underlay(T,node1,node1_direction,icon_connect_type)
directions -= add_underlay(T,node2,node2_direction,icon_connect_type)
directions -= add_underlay(T,node3,node3_direction,icon_connect_type)
directions -= add_underlay(T,node4,node4_direction,icon_connect_type)
for(var/D in directions)
add_underlay(T,,D,icon_connect_type)
for(var/D in directions)
add_underlay(T,,D,icon_connect_type)
/obj/machinery/atmospherics/pipe/manifold4w/update_underlays()
..()
update_icon()
// A check to make sure both nodes exist - self-delete if they aren't present
/obj/machinery/atmospherics/pipe/manifold4w/check_nodes_exist()
if(!node1 && !node2 && !node3 && !node4)
Deconstruct()
return 0 // 0: No nodes exist
// 1: 1-4 nodes exist, we continue existing
return 1
/obj/machinery/atmospherics/pipe/manifold4w/hide(var/i)
if(level == 1 && istype(loc, /turf/simulated))
invisibility = i ? 101 : 0
update_icon()
/obj/machinery/atmospherics/pipe/manifold4w/initialize()
..()
@@ -244,4 +231,4 @@
color = PIPE_COLOR_GREEN
/obj/machinery/atmospherics/pipe/manifold4w/hidden/purple
color = PIPE_COLOR_PURPLE
color = PIPE_COLOR_PURPLE
+4
View File
@@ -85,3 +85,7 @@
return node.pipe_color
else
return pipe_color
// A check to make sure both nodes exist - self-delete if they aren't present
/obj/machinery/atmospherics/pipe/proc/check_nodes_exist()
return
+12 -10
View File
@@ -66,6 +66,7 @@
connected_to = c
node2 = target
break
var/turf/T = loc // hide if turf is not intact
hide(T.intact)
update_icon()
@@ -120,7 +121,9 @@
if(istype(node2, /obj/machinery/atmospherics/pipe))
qdel(parent)
node2 = null
check_nodes_exist()
update_icon()
..()
/obj/machinery/atmospherics/pipe/simple/pipeline_expansion()
return list(node1, node2)
@@ -141,23 +144,22 @@
overlays.Cut()
if(!node1 && !node2)
var/turf/T = get_turf(src)
new /obj/item/pipe(loc, make_from=src)
for(var/obj/machinery/meter/meter in T)
if(meter.target == src)
new /obj/item/pipe_meter(T)
qdel(meter)
qdel(src)
else if(node1 && node2)
if(node1 && node2)
overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "intact" + icon_connect_type)
else
overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type)
// A check to make sure both nodes exist - self-delete if they aren't present
/obj/machinery/atmospherics/pipe/simple/check_nodes_exist()
if(!node1 && !node2)
Deconstruct()
return 0 // 0: No nodes exist
// 1: 1-2 nodes exist, we continue existing
return 1
/obj/machinery/atmospherics/pipe/simple/update_underlays()
return
/obj/machinery/atmospherics/pipe/simple/hide(var/i)
if(level == 1 && istype(loc, /turf/simulated))
invisibility = i ? 101 : 0
update_icon()
+2 -2
View File
@@ -78,7 +78,7 @@ turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0)
if(T.atmos_adjacent_turfs & counterdir)
T.atmos_adjacent_turfs_amount -= 1
T.atmos_adjacent_turfs &= ~counterdir
//returns a list of adjacent turfs that can share air with this one.
//alldir includes adjacent diagonal tiles that can share
// air with both of the related adjacent cardinal tiles
@@ -184,4 +184,4 @@ var/const/SPAWN_AIR = 256
G.nitrogen += MOLES_N2STANDARD * amount
air.merge(G)
air_master.add_to_active(src, 0)
air_master.add_to_active(src, 0)
+8
View File
@@ -244,6 +244,14 @@
#define REGION_COMMAND 7
#define REGION_CENTCOMM 8
//used for maploader
#define MAP_MINX 1
#define MAP_MINY 2
#define MAP_MINZ 3
#define MAP_MAXX 4
#define MAP_MAXY 5
#define MAP_MAXZ 6
//Matricies
#define MATRIX_DEFAULT list(1, 0, 0, 0,\
0, 1, 0, 0,\
+10
View File
@@ -386,6 +386,16 @@
//log_to_dd(" output: [out.len]")
return reverselist(out)
//Copies a list, and all lists inside it recusively
//Does not copy any other reference type
/proc/deepCopyList(list/l)
if(!islist(l))
return l
. = l.Copy()
for(var/i = 1 to l.len)
if(islist(.[i]))
.[i] = .(.[i])
/proc/dd_sortedObjectList(var/list/L, var/cache=list())
if(L.len < 2)
return L
+6
View File
@@ -93,6 +93,12 @@
to_chat(world, "<span class='danger'>[message]</span>")
log_to_dd(message)
// A logging proc that only outputs after setup is done, to
// help devs test initialization stuff that happens a lot
/proc/log_after_setup(var/message)
if(ticker && ticker.current_state > GAME_STATE_SETTING_UP)
to_chat(world, "<span class='danger'>[message]</span>")
log_to_dd(message)
// Helper procs for building detailed log lines
/proc/datum_info_line(var/datum/d)
+1 -2
View File
@@ -24,5 +24,4 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse
"Hotel"
)
var/list/map_templates = list()
var/list/mineral_turfs = list()
var/list/mineral_turfs = list()
+7
View File
@@ -54,3 +54,10 @@ var/list/carplist = list() //list of all carp-spawn landmarks
//away missions
var/list/awaydestinations = list() //a list of landmarks that the warpgate can take you to
//List of preloaded templates
var/list/datum/map_template/map_templates = list()
var/list/datum/map_template/ruins_templates = list()
var/list/datum/map_template/space_ruins_templates = list()
//var/list/datum/map_template/lava_ruins_templates = list()
+1 -1
View File
@@ -146,4 +146,4 @@ var/global/datum/controller/process/air_system/air_master
icemaster.icon = 'icons/turf/overlays.dmi'
icemaster.icon_state = "snowfloor"
icemaster.layer = TURF_LAYER+0.1
icemaster.mouse_opacity = 0
icemaster.mouse_opacity = 0
+1
View File
@@ -11,6 +11,7 @@ var/global/datum/controller/process/sun/sun
name = "sun"
schedule_interval = 600 // every 60 seconds
sun = src
log_startup_progress("Sun ticker starting up.")
angle = rand (0,360) // the station position to the sun is randomised at round start
rate = rand(50,200)/100 // 50% - 200% of standard rotation
+1
View File
@@ -9,6 +9,7 @@ var/global/datum/controller/process/ticker/tickerProcess
schedule_interval = 20 // every 2 seconds
lastTickerTime = world.timeofday
log_startup_progress("Time ticker starting up.")
if(!ticker)
ticker = new
+2 -1
View File
@@ -8,6 +8,7 @@ var/global/datum/controller/process/timer/timer_master
name = "timer"
schedule_interval = 5 //every 0.5 seconds
timer_master = src
log_startup_progress("Timer process starting up.")
/datum/controller/process/timer/statProcess()
..()
@@ -79,4 +80,4 @@ var/global/datum/controller/process/timer/timer_master
if(event.id == id)
qdel(event)
return 1
return 0
return 0
+1
View File
@@ -1,6 +1,7 @@
/datum/controller/process/vote/setup()
name = "vote"
schedule_interval = 10 // every second
log_startup_progress("Voting ticker starting up.")
/datum/controller/process/vote/doWork()
vote.process()
+4
View File
@@ -167,6 +167,7 @@
var/list/overflow_whitelist = list() //whitelist for overflow
var/disable_away_missions = 0 // disable away missions
var/disable_space_ruins = 0 //disable space ruins
var/ooc_allowed = 1
var/looc_allowed = 1
@@ -547,6 +548,9 @@
if("disable_away_missions")
config.disable_away_missions = 1
if("disable_space_ruins")
config.disable_space_ruins = 1
if("disable_lobby_music")
config.disable_lobby_music = 1
+16 -12
View File
@@ -11,16 +11,16 @@ var/global/air_processing_killed = 0
var/global/pipe_processing_killed = 0
/datum/controller
var/processing = 0
var/iteration = 0
var/processing_interval = 0
var/processing = 0
var/iteration = 0
var/processing_interval = 0
/datum/controller/proc/recover() // If we are replacing an existing controller (due to a crash) we attempt to preserve as much as we can.
datum/controller/game_controller
var/list/shuttle_list // For debugging and VV
/datum/controller/game_controller
var/list/shuttle_list // For debugging and VV
datum/controller/game_controller/New()
/datum/controller/game_controller/New()
//There can be only one master_controller. Out with the old and in with the new.
if(master_controller != src)
if(istype(master_controller))
@@ -38,12 +38,16 @@ datum/controller/game_controller/New()
if(!syndicate_code_phrase) syndicate_code_phrase = generate_code_phrase()
if(!syndicate_code_response) syndicate_code_response = generate_code_phrase()
datum/controller/game_controller/proc/setup()
/datum/controller/game_controller/proc/setup()
world.tick_lag = config.Ticklag
zlevels.initialize()
preloadTemplates()
if(!config.disable_away_missions)
createRandomZlevel()
if(!config.disable_space_ruins)
seedRuins(7, rand(0, 3), /area/space, space_ruins_templates)
setup_objects()
setupgenetics()
@@ -55,21 +59,21 @@ datum/controller/game_controller/proc/setup()
populate_spawn_points()
datum/controller/game_controller/proc/setup_objects()
/datum/controller/game_controller/proc/setup_objects()
var/watch = start_watch()
var/count = 0
var/overwatch = start_watch() // Overall.
log_startup_progress("Populating asset cache...")
populate_asset_cache()
log_startup_progress(" Populated [asset_cache.len] assets in [stop_watch(watch)]s.")
log_startup_progress(" Populated [asset_cache.len] assets in [stop_watch(watch)]s.")
watch = start_watch()
log_startup_progress("Initializing objects...")
for(var/atom/movable/object in world)
object.initialize()
count++
log_startup_progress(" Initialized [count] objects in [stop_watch(watch)]s.")
log_startup_progress(" Initialized [count] objects in [stop_watch(watch)]s.")
watch = start_watch()
count = 0
@@ -83,7 +87,7 @@ datum/controller/game_controller/proc/setup_objects()
var/obj/machinery/atmospherics/unary/vent_scrubber/T = U
T.broadcast_status()
count++
log_startup_progress(" Initialized [count] atmospherics machines in [stop_watch(watch)]s.")
log_startup_progress(" Initialized [count] atmospherics machines in [stop_watch(watch)]s.")
watch = start_watch()
count = 0
@@ -91,6 +95,6 @@ datum/controller/game_controller/proc/setup_objects()
for(var/obj/machinery/atmospherics/machine in machines)
machine.build_network()
count++
log_startup_progress(" Initialized [count] pipe networks in [stop_watch(watch)]s.")
log_startup_progress(" Initialized [count] pipes in [stop_watch(watch)]s.")
log_startup_progress("Finished object initializations in [stop_watch(overwatch)]s.")
+13 -6
View File
@@ -234,6 +234,7 @@
body += "<option value='?_src_=vars;mark_object=\ref[D]'>Mark Object</option>"
body += "<option value='?_src_=vars;proc_call=\ref[D]'>Call Proc</option>"
body += "<option value='?_src_=vars;jump_to=\ref[D]'>Jump to Object</option>"
if(ismob(D))
body += "<option value='?_src_=vars;mob_player_panel=\ref[D]'>Show player panel</option>"
@@ -394,11 +395,7 @@ body
html += "<ul>"
var/index = 1
for(var/entry in L)
if(istext(entry))
html += debug_variable(entry, L[entry], level + 1)
//html += debug_variable("[index]", L[index], level + 1)
else
html += debug_variable(index, L[index], level + 1)
html += debug_variable(index, L[index], level + 1)
index++
html += "</ul>"
@@ -736,6 +733,17 @@ body
if(T)
callproc_datum(T)
else if(href_list["jump_to"])
if(!check_rights(R_ADMIN))
return
var/atom/A = locate(href_list["jump_to"])
var/turf/T = get_turf(A)
if(T)
usr.client.jumptoturf(T)
href_list["datumrefresh"] = href_list["jump_to"]
else if(href_list["rotatedatum"])
if(!check_rights(R_DEBUG|R_ADMIN)) return
@@ -1080,4 +1088,3 @@ body
src.debug_variables(DAT)
return
+123 -29
View File
@@ -9,6 +9,7 @@
/datum/map_template/New(path = null, map = null, rename = null)
if(path)
mappath = path
if(mappath)
preload_size(mappath)
if(map)
mapfile = map
@@ -16,52 +17,145 @@
name = rename
/datum/map_template/proc/preload_size(path)
var/quote = ascii2text(34)
var/map_file = file2text(path)
var/key_len = length(copytext(map_file,2,findtext(map_file,quote,2,0)))
//assuming one map per file since more makes no sense for templates anyway
var/mapstart = findtext(map_file,"\n(1,1,") //todo replace with something saner
var/content = copytext(map_file,findtext(map_file,quote+"\n",mapstart,0)+2,findtext(map_file,"\n"+quote,mapstart,0)+1)
var/line_len = length(copytext(content,1,findtext(content,"\n",2,0)))
width = line_len/key_len
height = length(content)/(line_len+1)
var/bounds = maploader.load_map(file(path), 1, 1, 1, cropMap = 0, measureOnly = 1)
if(bounds)
width = bounds[MAP_MAXX] // Assumes all templates are rectangular, have a single Z level, and begin at 1,1,1
height = bounds[MAP_MAXY]
return bounds
/datum/map_template/proc/load(turf/T, centered = 0)
var/turf/placement = T
var/min_x = placement.x
var/min_y = placement.y
if(centered)
T = locate(T.x - round(width / 2), T.y - round(height / 2), T.z)
min_x -= round(width/2)
min_y -= round(height/2)
var/max_x = min_x + width - 1
var/max_y = min_y + height - 1
if(!T)
return
if(T.x+width > world.maxx)
return
if(T.y+height > world.maxy)
return
return 0
var/turf/bot_left = locate(max(1, min_x), max(1, min_y), placement.z)
var/turf/top_right = locate(min(world.maxx, max_x), min(world.maxy, max_y), placement.z)
// 1 bigger, to update the turf smoothing
var/turf/ST_bot_left = locate(max(1, min_x-1), max(1, min_y-1), placement.z)
var/turf/ST_top_right = locate(min(world.maxx, max_x+1), min(world.maxy, max_y+1), placement.z)
// This is to place a freeze on initialization until the map's done loading
// otherwise atmos and stuff will start running mid-load
// This system will metaphorically snap in half (not postpone init everywhere)
// if given a multi-z template
// it might need to be adapted for that when that time comes
zlevels.add_dirt(placement.z)
var/list/bounds = maploader.load_map(get_file(), min_x, min_y, placement.z, cropMap = 1)
if(!bounds)
return 0
if(bot_left == null || top_right == null)
log_debug("One of the late setup corners is bust")
else
log_debug("Late Setup from ([bot_left.x],[bot_left.y]) to ([top_right.x],[top_right.y])")
if(ST_bot_left == null || ST_top_right == null)
log_debug("One of the smoothing corners is bust")
else
log_debug("Tile smoothing from ([ST_bot_left.x],[ST_bot_left.y]) to ([ST_top_right.x],[ST_top_right.y])")
maploader.load_map(get_file(), T.x-1, T.y-1, T.z)
late_setup_level(
block(T, locate(T.x + width - 1, T.y + height - 1, T.z)),
block(locate(T.x - 1, T.y - 1, T.z), locate(T.x + width, T.y + height, T.z)))
block(bot_left, top_right),
block(ST_bot_left, ST_top_right))
zlevels.remove_dirt(placement.z)
log_game("[name] loaded at at [T.x],[T.y],[T.z]")
log_game("[name] loaded at [min_x],[min_y],[placement.z]")
return 1
/datum/map_template/proc/get_file()
if(mapfile)
return mapfile
if(mappath)
mapfile = file(mappath)
return mapfile
. = mapfile
else if(mappath)
. = file(mappath)
if(!.)
log_to_dd(" The file of [src] appears to be empty/non-existent.")
/datum/map_template/proc/get_affected_turfs(turf/T, centered = 0)
var/turf/placement = T
var/min_x = placement.x
var/min_y = placement.y
if(centered)
var/turf/corner = locate(placement.x - round(width/2), placement.y - round(height/2), placement.z)
if(corner)
placement = corner
return block(placement, locate(placement.x+width-1, placement.y+height-1, placement.z))
min_x -= round(width/2)
min_y -= round(height/2)
var/max_x = min_x + width-1
var/max_y = min_y + height-1
placement = locate(max(min_x,1), max(min_y,1), placement.z)
return block(placement, locate(min(max_x, world.maxx), min(max_y, world.maxy), placement.z))
/datum/map_template/proc/fits_in_map_bounds(turf/T, centered = 0)
var/turf/placement = T
var/min_x = placement.x
var/min_y = placement.y
if(centered)
min_x -= round(width/2)
min_y -= round(height/2)
var/max_x = min_x + width-1
var/max_y = min_y + height-1
if(min_x < 1 || min_y < 1 || max_x > world.maxx || max_y > world.maxy)
return 0
else
return 1
/proc/preloadTemplates(path = "_maps/map_files/templates/") //see master controller setup
for(var/map in flist(path))
if(cmptext(copytext(map, length(map) - 3), ".dmm"))
var/datum/map_template/T = new(path = "[path][map]", rename = "[map]")
map_templates[T.name] = T
map_templates[T.name] = T
if(!config.disable_space_ruins) // so we don't unnecessarily clutter start-up
preloadRuinTemplates()
//preloadShuttleTemplates()
/proc/preloadRuinTemplates()
// Still supporting bans by filename
var/list/banned
if(fexists("config/spaceRuinBlacklist.txt"))
banned = generateMapList("config/spaceRuinBlacklist.txt")
else
banned = generateMapList("config/example/spaceRuinBlacklist.txt")
//banned += generateMapList("config/lavaRuinBlacklist.txt")
for(var/item in subtypesof(/datum/map_template/ruin))
var/datum/map_template/ruin/ruin_type = item
// screen out the abstract subtypes
if(!initial(ruin_type.id))
continue
var/datum/map_template/ruin/R = new ruin_type()
if(banned.Find(R.mappath))
continue
map_templates[R.name] = R
ruins_templates[R.name] = R
/*
if(istype(R, /datum/map_template/ruin/lavaland))
lava_ruins_templates[R.name] = R
*/
if(istype(R, /datum/map_template/ruin/space))
space_ruins_templates[R.name] = R
/*
/proc/preloadShuttleTemplates()
for(var/item in subtypesof(/datum/map_template/shuttle))
var/datum/map_template/shuttle/shuttle_type = item
if(!(initial(shuttle_type.suffix)))
continue
var/datum/map_template/shuttle/S = new shuttle_type()
shuttle_templates[S.shuttle_id] = S
map_templates[S.shuttle_id] = S
*/
+21
View File
@@ -0,0 +1,21 @@
/datum/map_template/ruin
//name = "A Chest of Doubloons"
name = null
var/id = null // For blacklisting purposes, all ruins need an id
var/description = "In the middle of a clearing in the rockface, there's a \
chest filled with gold coins with Spanish engravings. How is there a \
wooden container filled with 18th century coinage in the middle of a \
lavawracked hellscape? It is clearly a mystery."
var/cost = null
var/allow_duplicates = FALSE //A bit boring, don't you think? You can always explicitly allow it on a ruin definition
var/prefix = null
var/suffix = null
/datum/map_template/ruin/New()
if(!name && id)
name = id
mappath = prefix + suffix
..(path = mappath)
+162
View File
@@ -0,0 +1,162 @@
//The bigger ones lag like hell if there is more than one on a z-level, so cost 2 for them
/datum/map_template/ruin/space
prefix = "_maps/map_files/RandomRuins/SpaceRuins/"
cost = 1
/datum/map_template/ruin/space/zoo
id = "zoo"
suffix = "abandonedzoo.dmm"
name = "Biological Storage Facility"
description = "In case society crumbles, we will be able to restore our \
zoos to working order with the breeding stock kept in these 100% \
secure and unbreachable storage facilities. At no point has anything \
escaped. That's our story, and we're sticking to it."
cost = 2
/datum/map_template/ruin/space/asteroid1
id = "asteroid1"
suffix = "asteroid1.dmm"
name = "Asteroid 1"
description = "I-spy with my little eye, something beginning with R."
/datum/map_template/ruin/space/asteroid2
id = "asteroid2"
suffix = "asteroid2.dmm"
name = "Asteroid 2"
description = "Oh my god, a giant rock!"
/datum/map_template/ruin/space/asteroid3
id = "asteroid3"
suffix = "asteroid3.dmm"
name = "Asteroid 3"
description = "This asteroid floating in space has no official \
designation, because the scientist that discovered it deemed it \
'super dull'."
/datum/map_template/ruin/space/asteroid4
id = "asteroid4"
suffix = "asteroid4.dmm"
name = "Asteroid 4"
description = "Nanotrasen Escape Pods have a 100%* success rate, and a \
99%* customer satisfaction rate. *Please note that these statistics, \
are taken from pods that have successfully docked with a recovery \
vessel."
/datum/map_template/ruin/space/asteroid5
id = "asteroid5"
suffix = "asteroid5.dmm"
name = "Asteroid 5"
description = "Oh my god, another giant rock!"
/datum/map_template/ruin/space/deep_storage
id = "deep-storage"
suffix = "deepstorage.dmm"
name = "Survivalist Bunker"
description = "Assume the best, prepare for the worst. Generally, you \
should do so by digging a three man heavily fortified bunker into \
a giant unused asteroid. Then make it self sufficient, mask any \
evidence of construction, hook it covertly into the \
telecommunications network and hope for the best."
cost = 2
/datum/map_template/ruin/space/derelict1
id = "derelict1"
suffix = "derelict1.dmm"
name = "Derelict 1"
description = "Nothing to see here citizen, move along, certainly no \
xeno outbreaks on this piece of station debris. That purple stuff? \
It's uh... station nectar. It's a top secret research installation."
/datum/map_template/ruin/space/derelict2
id = "derelict2"
suffix = "derelict2.dmm"
name = "Dinner for Two"
description = "Oh this is the night\n\
It's a beautiful night\n\
And we call it bella notte"
/datum/map_template/ruin/space/derelict3
id = "derelict3"
suffix = "derelict3.dmm"
name = "Derelict 3"
description = "These hulks were once part of a larger structure, where \
the three great \[REDACTED\] were forged."
/datum/map_template/ruin/space/derelict4
id = "derelict4"
suffix = "derelict4.dmm"
name = "Derelict 4"
description = "Centcom ferries have never crashed, will never crash, \
there is no current investigation into a crashed ferry, and we \
will not let Internal Affairs trample over high security information \
in the name of this baseless witchhunt."
/datum/map_template/ruin/space/derelict5
id = "derelict5"
suffix = "derelict5.dmm"
name = "Derelict 5"
description = "The plan is, we put a whole bunch of crates full of \
treasure in this disused warehouse, launch it into space, and then \
ignore it. Forever."
/datum/map_template/ruin/space/empty_shell
id = "empty-shell"
suffix = "emptyshell.dmm"
name = "Empty Shell"
description = "Cosy, rural property availible for young professional \
couple. Only twelve parsecs from the nearest hyperspace lane!"
/datum/map_template/ruin/space/gas_the_lizards
id = "gas-the-lizards"
suffix = "gasthelizards.dmm"
name = "Disposal Facility 17"
description = "Gas efficiency at 95.6%, fluid elimination at 96.2%. \
Will require renewed supplies of 'carpet' before the end of the \
quarter."
/datum/map_template/ruin/space/intact_empty_ship
id = "intact-empty-ship"
suffix = "intactemptyship.dmm"
name = "Authorship"
description = "Just somewhere quiet, where I can focus on my work with \
no interruptions."
/datum/map_template/ruin/space/mech_transport
id = "mech-transport"
suffix = "mechtransport.dmm"
name = "CF Corsair"
description = "Well, when is it getting here? I have bills to pay; very \
well-armed clients who want their shipments as soon as possible! I \
don't care, just find it!"
/datum/map_template/ruin/space/onehalf
id = "onehalf"
suffix = "onehalf.dmm"
name = "DK Excavator 453"
description = "Based on the trace elements we've detected on the \
gutted asteroids, we suspect that a mining ship using a restricted \
engine is somewhere in the area. We'd like to request a patrol vessel \
to investigate."
cost = 2
/datum/map_template/ruin/space/spacebar
id = "spacebar"
suffix = "spacebar.dmm"
name = "The Rampant Golem and Yellow Hound"
description = "No questions asked. No shoes/foot protection, no service. \
No tabs. No violence in the inside areas. That's it. Welcome to the \
Rampant Golem and Yellow Hound. Can I take your order?"
cost = 2
/datum/map_template/ruin/space/turreted_outpost
id = "turreted-outpost"
suffix = "turretedoutpost.dmm"
name = "Unnamed Turreted Outpost"
description = "We'd ask them to stop blaring that ruskiepop music, but \
none of us are brave enough to go near those death turrets they have."
/datum/map_template/ruin/space/way_home
id = "way-home"
suffix = "way_home.dmm"
name = "Salvation"
description = "In the darkest times, we will find our way home."
+10 -5
View File
@@ -11,8 +11,16 @@
'sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg',\
'sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg')
// This var is used with the maploader (modules/awaymissions/maploader/reader.dm)
// if this is 1, when used in a map snippet, this will instantiate a unique
// area from any other instances already present (meaning you can have
// separate APCs, and so on)
var/there_can_be_many = 0
/area/New()
..()
icon_state = ""
layer = 10
uid = ++global_uid
@@ -28,14 +36,11 @@
// lighting_state = 4
//has_gravity = 0 // Space has gravity. Because.. because.
if(!requires_power)
if(requires_power != 0)
power_light = 0 //rastaf0
power_equip = 0 //rastaf0
power_environ = 0 //rastaf0
..()
// spawn(15)
power_change() // all machines set to current power level, also updates lighting icon
/area/proc/get_cameras()
@@ -384,4 +389,4 @@
for(var/obj/machinery/door/airlock/temp_airlock in src)
temp_airlock.prison_open()
for(var/obj/machinery/door/window/temp_windoor in src)
temp_windoor.open()
temp_windoor.open()
+15 -2
View File
@@ -23,8 +23,11 @@
/atom/movable/New()
. = ..()
areaMaster = get_area_master(src)
if(auto_init && ticker && ticker.current_state == GAME_STATE_PLAYING)
initialize()
// If you're wondering what goofery this is, this is for things that need the environment
// around them set up - like `air_update_turf` and the like
if((ticker && ticker.current_state == GAME_STATE_PLAYING))
attempt_init()
/atom/movable/Destroy()
for(var/atom/movable/AM in contents)
@@ -36,6 +39,16 @@
pulledby = null
return ..()
// used to provide a good interface for the init delay system to step in
// and we don't need to call `get_turf` until the game's started
// at which point object creations are a fair toss more seldom
/atom/movable/proc/attempt_init()
var/turf/T = get_turf(src)
if(T && zlevels.is_zlevel_dirty(T.z))
zlevels.postpone_init(T.z, src)
else if(auto_init)
initialize()
/atom/movable/proc/initialize()
return
+1 -2
View File
@@ -186,7 +186,7 @@ var/round_start_time = 0
if(candidate_source.match_tag != current_destination.match_tag)
continue
if (candidate_source.match_width != current_destination.match_width || \
if(candidate_source.match_width != current_destination.match_width || \
candidate_source.match_height != current_destination.match_height)
continue
@@ -479,4 +479,3 @@ var/round_start_time = 0
event_manager.RoundEnd()
return 1
+1
View File
@@ -225,6 +225,7 @@
air_alarm_repository.update_cache(src)
/obj/machinery/alarm/initialize()
..()
set_frequency(frequency)
if(!master_is_operating())
elect_master()
+2 -1
View File
@@ -28,6 +28,7 @@
return ..()
/obj/machinery/meter/initialize()
..()
if(!target)
target = locate(/obj/machinery/atmospherics/pipe) in loc
@@ -153,4 +154,4 @@
<ul>
<li><b>Frequency:</b> <a href="?src=\ref[src];set_freq=-1">[format_frequency(frequency)] GHz</a> (<a href="?src=\ref[src];set_freq=[initial(frequency)]">Reset</a>)</li>
<li>[format_tag("ID Tag","id_tag")]</li>
</ul>"}
</ul>"}
@@ -57,6 +57,10 @@
//Perform the connection
connected_port = new_port
connected_port.connected_device = src
// To avoid a chicken-egg thing where pipes need to
// be initialized before the atmos cans are
if(!connected_port.parent)
connected_port.build_network()
connected_port.parent.reconcile_air()
anchored = 1 //Prevent movement
+2 -2
View File
@@ -48,7 +48,7 @@
src.scanner = findscanner()
releasecloner()
findcloner()
if(!selected_pod)
if(!selected_pod && pods.len)
selected_pod = pods[1]
/obj/machinery/computer/cloning/proc/findscanner()
@@ -450,4 +450,4 @@
return (scanner && scanner.scan_level > 2)
/obj/machinery/computer/cloning/proc/can_brainscan()
return (scanner && scanner.scan_level > 3)
return (scanner && scanner.scan_level > 3)
+2 -1
View File
@@ -63,6 +63,7 @@
efficiency = C
/obj/machinery/atmospherics/unary/cryo_cell/initialize()
..()
if(node) return
for(var/cdir in cardinal)
node = findConnecting(cdir)
@@ -495,4 +496,4 @@
return
/datum/data/function/proc/display()
return
return
+2 -1
View File
@@ -135,6 +135,7 @@ obj/machinery/door/airlock/proc/set_frequency(new_frequency)
obj/machinery/door/airlock/initialize()
..()
if(frequency)
set_frequency(frequency)
@@ -294,4 +295,4 @@ obj/machinery/access_button/airlock_interior
obj/machinery/access_button/airlock_exterior
frequency = 1379
command = "cycle_exterior"
command = "cycle_exterior"
+3 -1
View File
@@ -45,11 +45,13 @@
bound_width = world.icon_size
bound_height = width * world.icon_size
air_update_turf(1)
update_freelook_sight()
airlocks += src
return
/obj/machinery/door/initialize()
air_update_turf(1)
..()
/obj/machinery/door/Destroy()
density = 0
+2 -2
View File
@@ -7,7 +7,7 @@
density = 0
anchored = 1
/obj/structure/spacepoddoor/New()
/obj/structure/spacepoddoor/initialize()
..()
air_update_turf(1)
@@ -21,4 +21,4 @@
/obj/structure/spacepoddoor/CanPass(atom/movable/A, turf/T)
if(istype(A, /obj/spacepod))
return ..()
else return 0
else return 0
+2 -1
View File
@@ -9,6 +9,7 @@
var/dye_color = "#FFFFFF"
/obj/machinery/dye_generator/initialize()
..()
power_change()
/obj/machinery/dye_generator/power_change()
@@ -127,4 +128,4 @@
var/b_skin = hex2num(copytext(dye_color, 6, 8))
if(H.change_skin_color(r_skin, g_skin, b_skin))
H.update_dna()
user.visible_message("<span class='notice'>[user] finishes dying [M]'s [what_to_dye]!</span>", "<span class='notice'>You finish dying [M]'s [what_to_dye]!</span>")
user.visible_message("<span class='notice'>[user] finishes dying [M]'s [what_to_dye]!</span>", "<span class='notice'>You finish dying [M]'s [what_to_dye]!</span>")
@@ -27,8 +27,8 @@
src.updateDialog()
/obj/machinery/embedded_controller/attack_ghost(mob/user as mob)
src.ui_interact(user)
src.ui_interact(user)
/obj/machinery/embedded_controller/attack_ai(mob/user as mob)
src.ui_interact(user)
@@ -55,6 +55,7 @@
unacidable = 1
/obj/machinery/embedded_controller/radio/initialize()
..()
set_frequency(frequency)
/obj/machinery/embedded_controller/radio/update_icon()
@@ -77,4 +78,4 @@
/obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, radio_filter)
radio_connection = radio_controller.add_object(src, frequency, radio_filter)
@@ -313,7 +313,7 @@
/obj/machinery/kitchen_machine/proc/has_extra_item()
for(var/obj/O in contents)
if ( \
if( \
!istype(O,/obj/item/weapon/reagent_containers/food) && \
!istype(O, /obj/item/weapon/grown) \
)
@@ -400,4 +400,4 @@
if("dispose")
dispose()
return
return
+4 -3
View File
@@ -47,7 +47,7 @@ Class Variables:
Currently unused.
Class Procs:
New() 'game/machinery/machine.dm'
initialize() 'game/machinery/machine.dm'
Destroy() 'game/machinery/machine.dm'
@@ -117,9 +117,10 @@ Class Procs:
var/use_log = list()
var/list/settagwhitelist = list()//WHITELIST OF VARIABLES THAT THE set_tag HREF CAN MODIFY, DON'T PUT SHIT YOU DON'T NEED ON HERE, AND IF YOU'RE GONNA USE set_tag (format_tag() proc), ADD TO THIS LIST.
/obj/machinery/New()
/obj/machinery/initialize()
addAtProcessing()
return ..()
. = ..()
power_change()
/obj/machinery/proc/addAtProcessing()
if(use_power)
+4 -1
View File
@@ -13,7 +13,10 @@
/obj/machinery/shield/New()
src.dir = pick(1,2,3,4)
..()
/obj/machinery/shield/initialize()
air_update_turf(1)
..()
/obj/machinery/shield/Destroy()
opacity = 0
@@ -605,4 +608,4 @@
if(istype(mover, /obj/item/projectile))
return prob(10)
else
return !src.density
return !src.density
@@ -145,6 +145,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
listening_level = position.z
/obj/machinery/telecomms/initialize()
..()
if(autolinkers.len)
// Links nearby machines
if(!long_range_link)
@@ -584,10 +585,3 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
var/name = "data packet (#)"
var/garbage_collector = 1 // if set to 0, will not be garbage collected
var/input_type = "Speech File"
+3
View File
@@ -20,6 +20,7 @@
return
/obj/machinery/computer/teleporter/initialize()
..()
link_power_station()
update_icon()
@@ -294,6 +295,7 @@
RefreshParts()
/obj/machinery/teleport/hub/initialize()
..()
link_power_station()
/obj/machinery/teleport/hub/Destroy()
@@ -472,6 +474,7 @@
link_console_and_hub()
/obj/machinery/teleport/station/initialize()
..()
link_console_and_hub()
/obj/machinery/teleport/station/RefreshParts()
+1
View File
@@ -45,6 +45,7 @@
return ..()
/obj/machinery/turretid/initialize()
..()
if(!control_area)
control_area = get_area(src)
else if(istext(control_area))
+6 -4
View File
@@ -31,11 +31,13 @@
var/resintype = null
smooth = SMOOTH_TRUE
/obj/structure/alien/resin/New(location)
..()
/obj/structure/alien/resin/initialize()
air_update_turf(1)
return
..()
/obj/structure/alien/resin/Destroy()
air_update_turf(1)
return ..()
/obj/structure/alien/resin/Move()
var/turf/T = loc
+1 -1
View File
@@ -1075,7 +1075,7 @@ steam.start() -- spawns the effect
desc = "A lightweight foamed metal wall."
var/metal = MFOAM_ALUMINUM
/obj/structure/foamedmetal/New()
/obj/structure/foamedmetal/initialize()
..()
air_update_turf(1)
+7 -6
View File
@@ -8,7 +8,7 @@
/obj/effect/landmark/New()
..()
tag = text("landmark*[]", name)
set_tag()
invisibility = 101
switch(name) //some of these are probably obsolete
@@ -105,18 +105,19 @@
..()
return QDEL_HINT_HARDDEL_NOW
/obj/effect/landmark/proc/set_tag()
tag = text("landmark*[]", name)
/obj/effect/landmark/start
name = "start"
icon = 'icons/mob/screen_gen.dmi'
icon_state = "x"
anchored = 1.0
/obj/effect/landmark/start/New()
..()
/obj/effect/landmark/start/set_tag()
tag = "start*[name]"
invisibility = 101
return 1
//Costume spawner landmarks
@@ -260,4 +261,4 @@
/obj/effect/landmark/costume/sexymime/New()
new /obj/item/clothing/mask/gas/sexymime(src.loc)
new /obj/item/clothing/under/sexymime(src.loc)
qdel(src)
qdel(src)
@@ -151,6 +151,15 @@
"" = 90
)
/obj/effect/spawner/lootdrop/crate_spawner // for ruins
name = "lootcrate spawner"
lootdoubles = 0
loot = list(
/obj/structure/closet/crate/secure/loot = 20,
"" = 80,
)
/obj/effect/spawner/lootdrop/trade_sol_rare
name = "trader rare item spawner"
lootdoubles = 0
@@ -5,10 +5,15 @@
var/useFull = 0
var/useGrille = 1
var/windowtospawn = /obj/structure/window/basic
anchored = 1 // No sliding out while you prime
/obj/effect/spawner/window/New()
/obj/effect/spawner/window/initialize()
spawn(0)
for(var/obj/structure/grille/G in get_turf(src)) qdel(G) //just in case mappers don't know what they are doing
var/turf/T = get_turf(src)
for(var/obj/structure/grille/G in get_turf(src))
// Complain noisily
log_debug("Extra grille on turf: ([T.x],[T.y],[T.z])")
qdel(G) //just in case mappers don't know what they are doing
if(!useFull)
for(var/cdir in cardinal)
@@ -30,7 +35,8 @@
spawn(10)
qdel(src)
/obj/effect/spawner/window/reinforced
name = "reinforced window spawner"
icon_state = "rwindow_spawner"
windowtospawn = /obj/structure/window/reinforced
windowtospawn = /obj/structure/window/reinforced
+1 -1
View File
@@ -25,7 +25,7 @@
var/health = 50.0
/obj/structure/inflatable/New(location)
/obj/structure/inflatable/initialize(location)
..()
air_update_turf(1)
+133 -130
View File
@@ -16,152 +16,155 @@
var/hardness = 1
var/oreAmount = 7
New(location)
..()
icon_state = mineralType
name = "[mineralType] door"
air_update_turf(1)
/obj/structure/mineral_door/New(location)
..()
icon_state = mineralType
name = "[mineralType] door"
Destroy()
density = 0
air_update_turf(1)
return ..()
/obj/structure/mineral_door/initialize()
..()
air_update_turf(1)
Move()
var/turf/T = loc
..()
move_update_air(T)
/obj/structure/mineral_door/Destroy()
density = 0
air_update_turf(1)
return ..()
Bumped(atom/user)
..()
if(!state)
return TryToSwitchState(user)
return
/obj/structure/mineral_door/Move()
var/turf/T = loc
..()
move_update_air(T)
attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral
if(isAI(user)) //so the AI can't open it
return
else if(isrobot(user)) //but cyborgs can
if(get_dist(user,src) <= 1) //not remotely though
return TryToSwitchState(user)
attack_hand(mob/user as mob)
/obj/structure/mineral_door/Bumped(atom/user)
..()
if(!state)
return TryToSwitchState(user)
return
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group) return 0
if(istype(mover, /obj/effect/beam))
return !opacity
return !density
/obj/structure/mineral_door/attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral
if(isAI(user)) //so the AI can't open it
return
else if(isrobot(user)) //but cyborgs can
if(get_dist(user,src) <= 1) //not remotely though
return TryToSwitchState(user)
CanAtmosPass()
return !density
/obj/structure/mineral_door/attack_hand(mob/user as mob)
return TryToSwitchState(user)
proc/TryToSwitchState(atom/user)
if(isSwitchingStates) return
if(ismob(user))
var/mob/M = user
if(world.time - user.last_bumped <= 60) return //NOTE do we really need that?
if(M.client)
if(iscarbon(M))
var/mob/living/carbon/C = M
if(!C.handcuffed)
SwitchState()
else
/obj/structure/mineral_door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group) return 0
if(istype(mover, /obj/effect/beam))
return !opacity
return !density
/obj/structure/mineral_door/CanAtmosPass()
return !density
/obj/structure/mineral_door/proc/TryToSwitchState(atom/user)
if(isSwitchingStates) return
if(ismob(user))
var/mob/M = user
if(world.time - user.last_bumped <= 60) return //NOTE do we really need that?
if(M.client)
if(iscarbon(M))
var/mob/living/carbon/C = M
if(!C.handcuffed)
SwitchState()
else if(istype(user, /obj/mecha))
SwitchState()
else
SwitchState()
else if(istype(user, /obj/mecha))
SwitchState()
proc/SwitchState()
if(state)
Close()
else
Open()
proc/Open()
isSwitchingStates = 1
playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1)
flick("[mineralType]opening",src)
sleep(10)
density = 0
opacity = 0
state = 1
update_icon()
isSwitchingStates = 0
air_update_turf(1)
proc/Close()
isSwitchingStates = 1
playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1)
flick("[mineralType]closing",src)
sleep(10)
density = 1
opacity = 1
state = 0
update_icon()
isSwitchingStates = 0
air_update_turf(1)
/obj/structure/mineral_door/proc/SwitchState()
if(state)
Close()
else
Open()
/obj/structure/mineral_door/proc/Open()
isSwitchingStates = 1
playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1)
flick("[mineralType]opening",src)
sleep(10)
density = 0
opacity = 0
state = 1
update_icon()
if(state)
icon_state = "[mineralType]open"
else
icon_state = mineralType
isSwitchingStates = 0
air_update_turf(1)
attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W,/obj/item/weapon/pickaxe))
var/obj/item/weapon/pickaxe/digTool = W
to_chat(user, "You start digging the [name].")
if(do_after(user,digTool.digspeed*hardness, target = src) && src)
to_chat(user, "You finished digging.")
Dismantle()
else if(istype(W,/obj/item/weapon)) //not sure, can't not just weapons get passed to this proc?
hardness -= W.force/100
to_chat(user, "You hit the [name] with your [W.name]!")
CheckHardness()
else
attack_hand(user)
return
/obj/structure/mineral_door/proc/Close()
isSwitchingStates = 1
playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1)
flick("[mineralType]closing",src)
sleep(10)
density = 1
opacity = 1
state = 0
update_icon()
isSwitchingStates = 0
air_update_turf(1)
proc/CheckHardness()
if(hardness <= 0)
/obj/structure/mineral_door/update_icon()
if(state)
icon_state = "[mineralType]open"
else
icon_state = mineralType
/obj/structure/mineral_door/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W,/obj/item/weapon/pickaxe))
var/obj/item/weapon/pickaxe/digTool = W
to_chat(user, "You start digging the [name].")
if(do_after(user,digTool.digspeed*hardness, target = src) && src)
to_chat(user, "You finished digging.")
Dismantle()
else if(istype(W,/obj/item/weapon)) //not sure, can't not just weapons get passed to this proc?
hardness -= W.force/100
to_chat(user, "You hit the [name] with your [W.name]!")
CheckHardness()
else
attack_hand(user)
return
/obj/structure/mineral_door/proc/CheckHardness()
if(hardness <= 0)
Dismantle(1)
/obj/structure/mineral_door/proc/Dismantle(devastated = 0)
if(!devastated)
if(mineralType == "metal")
var/ore = /obj/item/stack/sheet/metal
for(var/i = 1, i <= oreAmount, i++)
new ore(get_turf(src))
else
var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
for(var/i = 1, i <= oreAmount, i++)
new ore(get_turf(src))
else
if(mineralType == "metal")
var/ore = /obj/item/stack/sheet/metal
for(var/i = 3, i <= oreAmount, i++)
new ore(get_turf(src))
else
var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
for(var/i = 3, i <= oreAmount, i++)
new ore(get_turf(src))
qdel(src)
/obj/structure/mineral_door/ex_act(severity = 1)
switch(severity)
if(1)
Dismantle(1)
proc/Dismantle(devastated = 0)
if(!devastated)
if(mineralType == "metal")
var/ore = /obj/item/stack/sheet/metal
for(var/i = 1, i <= oreAmount, i++)
new ore(get_turf(src))
else
var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
for(var/i = 1, i <= oreAmount, i++)
new ore(get_turf(src))
else
if(mineralType == "metal")
var/ore = /obj/item/stack/sheet/metal
for(var/i = 3, i <= oreAmount, i++)
new ore(get_turf(src))
else
var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
for(var/i = 3, i <= oreAmount, i++)
new ore(get_turf(src))
qdel(src)
ex_act(severity = 1)
switch(severity)
if(1)
if(2)
if(prob(20))
Dismantle(1)
if(2)
if(prob(20))
Dismantle(1)
else
hardness--
CheckHardness()
if(3)
hardness -= 0.1
else
hardness--
CheckHardness()
return
if(3)
hardness -= 0.1
CheckHardness()
return
/obj/structure/mineral_door/iron
mineralType = "metal"
@@ -285,4 +288,4 @@
CheckHardness()
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
..()
..()
+13 -4
View File
@@ -338,10 +338,13 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
ini_dir = dir
if(!color && !istype(src,/obj/structure/window/plasmabasic) && !istype(src,/obj/structure/window/plasmareinforced))
color = color_windows(src)
air_update_turf(1)
update_nearby_icons()
return
/obj/structure/window/initialize()
air_update_turf(1)
return ..()
/obj/structure/window/Destroy()
density = 0
air_update_turf(1)
@@ -402,10 +405,13 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
/obj/structure/window/plasmabasic/New(Loc,re=0)
..()
ini_dir = dir
air_update_turf(1)
update_nearby_icons()
return
/obj/structure/window/plasmabasic/initialize()
..()
air_update_turf(1)
/obj/structure/window/plasmabasic/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > T0C + 32000)
hit(round(exposed_volume / 1000), 0)
@@ -433,10 +439,13 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
/obj/structure/window/plasmareinforced/New(Loc,re=0)
..()
ini_dir = dir
air_update_turf(1)
update_nearby_icons()
return
/obj/structure/window/plasmareinforced/initialize()
..()
air_update_turf(1)
/obj/structure/window/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
return
@@ -516,4 +525,4 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
toggle_tint()
/obj/machinery/button/windowtint/update_icon()
icon_state = "light[active]"
icon_state = "light[active]"
+5 -4
View File
@@ -129,16 +129,17 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
/turf/simulated/floor/proc/make_plating()
return ChangeTurf(/turf/simulated/floor/plating)
/turf/simulated/floor/ChangeTurf(turf/simulated/floor/T)
/turf/simulated/floor/ChangeTurf(turf/simulated/floor/T, defer_change = FALSE, keep_icon = TRUE)
if(!istype(src,/turf/simulated/floor)) return ..() //fucking turfs switch the fucking src of the fucking running procs
if(!ispath(T,/turf/simulated/floor)) return ..()
var/old_icon = icon_regular_floor
var/old_plating = icon_plating
var/old_dir = dir
var/turf/simulated/floor/W = ..()
W.icon_regular_floor = old_icon
W.icon_plating = old_plating
W.dir = old_dir
if(keep_icon)
W.icon_regular_floor = old_icon
W.icon_plating = old_plating
W.dir = old_dir
W.update_icon()
return W
+1 -1
View File
@@ -62,4 +62,4 @@
/turf/simulated/shuttle/floor4/vox //Vox skipjack floors
name = "skipjack floor"
oxygen = 0
nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD
nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD
+21 -12
View File
@@ -156,9 +156,11 @@
qdel(L)
//Creates a new turf
/turf/proc/ChangeTurf(var/path)
if(!path) return
if(path == type) return src
/turf/proc/ChangeTurf(path, defer_change = FALSE, keep_icon = TRUE)
if(!path)
return
if(!use_preloader && path == type) // Don't no-op if the map loader requires it to be reconstructed
return src
var/old_opacity = opacity
var/old_dynamic_lighting = dynamic_lighting
var/list/old_affecting_lights = affecting_lights
@@ -167,12 +169,10 @@
if(air_master)
air_master.remove_from_active(src)
var/turf/W = new path(src)
if(!defer_change)
W.AfterChange()
if(istype(W, /turf/simulated))
W:Assimilate_Air()
W.RemoveLattice()
W.blueprint_data = old_blueprint_data
for(var/turf/space/S in range(W,1))
@@ -189,13 +189,22 @@
else
lighting_clear_overlays()
W.levelupdate()
W.CalculateAdjacentTurfs()
return W
if(!can_have_cabling())
// I'm including `ignore_air` because BYOND lacks positional-only arguments
/turf/proc/AfterChange(ignore_air, keep_cabling = FALSE) //called after a turf has been replaced in ChangeTurf()
levelupdate()
CalculateAdjacentTurfs()
if(!keep_cabling && !can_have_cabling())
for(var/obj/structure/cable/C in contents)
qdel(C)
return W
/turf/simulated/AfterChange(ignore_air, keep_cabling = FALSE)
..()
RemoveLattice()
if(!ignore_air)
Assimilate_Air()
//////Assimilate Air//////
/turf/simulated/proc/Assimilate_Air()
@@ -404,4 +413,4 @@
/turf/proc/add_blueprints_preround(atom/movable/AM)
if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
add_blueprints(AM)
add_blueprints(AM)
+19 -14
View File
@@ -92,7 +92,7 @@
qdel(I)
/obj/effect/buildmode_line
var/image/I
var/image/I
var/client/cl
/obj/effect/buildmode_line/New(var/client/c, var/atom/atom_a, var/atom/atom_b, var/linename)
@@ -101,13 +101,13 @@
I = image('icons/misc/mark.dmi', src, "line", 19.0)
var/x_offset = ((atom_b.x * 32) + atom_b.pixel_x) - ((atom_a.x * 32) + atom_a.pixel_x)
var/y_offset = ((atom_b.y * 32) + atom_b.pixel_y) - ((atom_a.y * 32) + atom_a.pixel_y)
var/matrix/M = matrix()
M.Translate(0, 16)
M.Scale(1, sqrt((x_offset * x_offset) + (y_offset * y_offset)) / 32)
M.Turn(90 - Atan2(x_offset, y_offset)) // So... You pass coords in order x,y to this version of atan2. It should be called acsc2.
M.Translate(atom_a.pixel_x, atom_a.pixel_y)
transform = M
cl = c
cl.images += I
@@ -242,6 +242,7 @@
if(FILL_BUILDMODE)
to_chat(user, "<span class='notice'>***********************************************************</span>")
to_chat(user, "<span class='notice'>Left Mouse Button on turf/obj/mob = Select corner</span>")
to_chat(user, "<span class='notice'>Left Mouse Button + Alt on turf/obj/mob = Delete region</span>")
to_chat(user, "<span class='notice'>Right Mouse Button on buildmode button = Select object type</span>")
to_chat(user, "<span class='notice'>***********************************************************</span>")
if(LINK_BUILDMODE)
@@ -509,16 +510,20 @@
cornerB = select_tile(get_turf(object))
if(left_click) //rectangular
if(cornerA && cornerB)
if(!objholder)
to_chat(user, "<span class='warning'>Select object type first.</span>")
if(alt_click)
empty_region(block(get_turf(cornerA),get_turf(cornerB)))
deselect_region()
else
for(var/turf/T in block(get_turf(cornerA),get_turf(cornerB)))
if(ispath(objholder,/turf))
T.ChangeTurf(objholder)
else
var/obj/A = new objholder(T)
A.dir = build_dir
deselect_region()
if(!objholder)
to_chat(user, "<span class='warning'>Select object type first.</span>")
else
for(var/turf/T in block(get_turf(cornerA),get_turf(cornerB)))
if(ispath(objholder,/turf))
T.ChangeTurf(objholder)
else
var/obj/A = new objholder(T)
A.dir = build_dir
deselect_region()
return
//Something wrong - Reset
@@ -567,13 +572,13 @@
if(P.id_tag && P.id_tag != 1 && alert(holder, "Warning: This will unlink something else from the door. Continue?", "Buildmode", "Yes", "No") == "No")
goto(line_jump)
P.id_tag = M.id
line_jump // For the goto
valid_links = 0
for(var/obj/effect/buildmode_line/L in link_lines)
qdel(L)
link_lines -= L
if(istype(link_obj, /obj/machinery/door_control))
var/obj/machinery/door_control/M = link_obj
for(var/obj/machinery/door/airlock/P in range(M.range,M))
@@ -1,10 +1,9 @@
/client/proc/map_template_load()
set category = "Debug"
set name = "Map Template - Place"
set name = "Map template - Place"
if(!holder)
return
var/datum/map_template/template
var/map = input(usr, "Choose a Map Template to place at your CURRENT LOCATION","Place Map Template") as null|anything in map_templates
@@ -16,22 +15,27 @@
if(!T)
return
if(!template.fits_in_map_bounds(T, centered = TRUE))
to_chat(usr, "Map is too large to fit in bounds. Map's dimensions: ([template.width], [template.height])")
return
var/list/preview = list()
for(var/S in template.get_affected_turfs(T,centered = TRUE))
preview += image('icons/turf/overlays.dmi',S,"greenOverlay")
usr.client.images += preview
if(alert(usr,"Confirm location.","Template Confirm","Yes","No") == "Yes")
template.load(T, centered = TRUE)
message_admins("[key_name_admin(usr)] has placed a map template ([template.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</A>")
var/timer = start_watch()
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has started to place the map template ([template.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a></span>")
if(template.load(T, centered = TRUE))
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has placed a map template ([template.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>. Took [stop_watch(timer)]s.</span>")
else
to_chat(usr, "Failed to place map")
usr.client.images -= preview
/client/proc/map_template_upload()
set category = "Debug"
set name = "Map Template - Upload"
if(!holder)
return
var/map = input(usr, "Choose a Map Template to upload to template storage","Upload Map Template") as null|file
if(!map)
return
@@ -39,7 +43,12 @@
to_chat(usr, "Bad map file: [map]")
return
var/timer = start_watch()
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has begun uploading a map template ([map])</span>")
var/datum/map_template/M = new(map=map, rename="[map]")
M.preload_size(map)
map_templates[M.name] = M
message_admins("[key_name_admin(usr)] has uploaded a map template ([map])")
if(M.preload_size(map))
to_chat(usr, "Map template '[map]' ready to place ([M.width]x[M.height])")
map_templates[M.name] = M
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has uploaded a map template ([map]). Took [stop_watch(timer)]s.</span>")
else
to_chat(usr, "Map template '[map]' failed to load properly")
+10
View File
@@ -7,6 +7,7 @@
/obj/effect/landmark/corpse
name = "Unknown"
var/mobname = "Unknown" //Unused now but it'd fuck up maps to remove it now
var/mob_species = null //Set to make a mob of another race, currently used only in ruins
var/corpseuniform = null //Set this to an object path to have the slot filled with said object on the corpse.
var/corpsesuit = null
var/corpseshoes = null
@@ -37,6 +38,8 @@
M.real_name = src.name
M.death(1) //Kills the new mob
M.timeofdeath = timeofdeath
if(src.mob_species)
M.set_species(src.mob_species)
if(src.corpseuniform)
M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform)
if(src.corpsesuit)
@@ -285,3 +288,10 @@
corpseid = 1
corpseidjob = "Commander"
corpseidaccess = "Captain"
/obj/effect/landmark/corpse/abductor //Connected to ruins, for some reason?
name = "abductor"
mobname = "???"
mob_species = "abductor"
corpseuniform = /obj/item/clothing/under/color/grey
corpseshoes = /obj/item/clothing/shoes/combat
+22 -9
View File
@@ -9,30 +9,43 @@
var/template_name = null
var/datum/map_template/template = null
var/centered = 1
var/loaded = 0
/obj/effect/landmark/map_loader/New(loc, tname)
/obj/effect/landmark/map_loader/New(turf/loc, tname)
..()
if(tname)
template_name = tname
if(template_name)
template = map_templates[template_name]
/obj/effect/landmark/map_loader/initialize()
..()
if(template)
load(template)
/obj/effect/landmark/map_loader/set_tag()
return
/obj/effect/landmark/map_loader/proc/load(datum/map_template/t)
spawn(1)
if(!t)
return
t.load(get_turf(src), centered = centered)
t.loaded++
qdel(src)
if(!t)
return
if(loaded) // I wanna be super sure this loads only once
return
loaded = 1
var/turf/pos = get_turf(src)
// Hop to nullspace so we don't get re-initialized by the map we're loading
loc = null
t.load(pos, centered = centered)
t.loaded++
qdel(src)
/obj/effect/landmark/map_loader/random
var/template_list = ""
/obj/effect/landmark/map_loader/random/New()
/obj/effect/landmark/map_loader/random/initialize()
..()
if(template_list)
template_name = safepick(splittext(template_list, ";"))
template = map_templates[template_name]
load(template)
load(template)
+245 -125
View File
@@ -2,10 +2,22 @@
//SS13 Optimized Map loader
//////////////////////////////////////////////////////////////
//As of 3.6.2016
//global datum that will preload variables on atoms instanciation
var/global/use_preloader = FALSE
var/global/dmm_suite/preloader/_preloader = new
/dmm_suite
// These regexes are global - meaning that starting the maploader again mid-load will
// reset progress - which means we need to track our index per-map, or we'll
// eternally recurse
// /"([a-zA-Z]+)" = \(((?:.|\n)*?)\)\n(?!\t)|\((\d+),(\d+),(\d+)\) = \{"([a-zA-Z\n]*)"\}/g
var/static/regex/dmmRegex = new/regex({""(\[a-zA-Z]+)" = \\(((?:.|\n)*?)\\)\n(?!\t)|\\((\\d+),(\\d+),(\\d+)\\) = \\{"(\[a-zA-Z\n]*)"\\}"}, "g")
// /^[\s\n]+"?|"?[\s\n]+$|^"|"$/g
var/static/regex/trimQuotesRegex = new/regex({"^\[\\s\n]+"?|"?\[\\s\n]+$|^"|"$"}, "g")
// /^[\s\n]+|[\s\n]+$/
var/static/regex/trimRegex = new/regex("^\[\\s\n]+|\[\\s\n]+$", "g")
var/static/list/modelCache = list()
/**
* Construct the model map and control the loading process
@@ -16,87 +28,156 @@ var/global/dmm_suite/preloader/_preloader = new
* e.g aa = /turf/unsimulated/wall{icon_state = "rock"}
* 2) Read the map line by line, parsing the result (using parse_grid)
*
* If `measureOnly` is set, then no atoms will be created, and all this will do
* is return the bounds after parsing the file
*
* If you need to freeze init while you're working, you can use the spacial allocator's
* "add_dirt" and "remove_dirt" which will put initializations on hold until you say
* the word. This is important for loading large maps such as the cyberiad, where
* atmos will attempt to start before it's ready, causing runtimes galore if init is
* allowed to romp unchecked.
*/
/dmm_suite/load_map(dmm_file as file, x_offset = 0 as num, y_offset = 0 as num, z_offset as num, do_sleep = 1 as num)
if(!z_offset)//what z_level we are creating the map on
/dmm_suite/load_map(dmm_file as file, x_offset as num, y_offset as num, z_offset as num, cropMap as num, measureOnly as num)
var/tfile = dmm_file//the map file we're creating
var/fname = "Lambda"
if(isfile(tfile))
fname = "[tfile]"
tfile = file2text(tfile)
if(!x_offset)
x_offset = 1
if(!y_offset)
y_offset = 1
if(!z_offset)
z_offset = world.maxz + 1
var/quote = ascii2text(34)
var/tfile = file2text(dmm_file)//the map file we're creating
var/tfile_len = length(tfile)
var/lpos = 1 // the models definition index
///////////////////////////////////////////////////////////////////////////////////////
//first let's map model keys (e.g "aa") to their contents (e.g /turf/space{variables})
///////////////////////////////////////////////////////////////////////////////////////
var/list/bounds = list(1.#INF, 1.#INF, 1.#INF, -1.#INF, -1.#INF, -1.#INF)
var/list/grid_models = list()
var/key_len = length(copytext(tfile,2,findtext(tfile,quote,2,0)))//the length of the model key (e.g "aa" or "aba")
var/key_len = 0
//proceed line by line
for(lpos=1; lpos<tfile_len; lpos=findtext(tfile,"\n",lpos,0)+1)
var/tline = copytext(tfile,lpos,findtext(tfile,"\n",lpos,0))
if(copytext(tline,1,2) != quote)//we reached the map "layout"
break
var/model_key = copytext(tline,2,2+key_len)
var/model_contents = copytext(tline,findtext(tfile,"=")+3,length(tline))
grid_models[model_key] = model_contents
if(do_sleep)
sleep(-1)
///////////////////////////////////////////////////////////////////////////////////////
//now let's fill the map with turf and objects using the constructed model map
///////////////////////////////////////////////////////////////////////////////////////
//position of the currently processed square
var/zcrd=-1
var/ycrd=y_offset
var/xcrd=x_offset
var/dmm_suite/loaded_map/LM = new
// This try-catch is used as a budget "Finally" clause, as the dirt count
// needs to be reset
var/watch = start_watch()
log_debug("[measureOnly ? "Measuring" : "Loading"] map: [fname]")
try
LM.index = 1
while(dmmRegex.Find(tfile, LM.index))
LM.index = dmmRegex.next
for(var/zpos=findtext(tfile,"\n(1,1,",lpos,0);zpos!=0;zpos=findtext(tfile,"\n(1,1,",zpos+1,0)) //in case there's several maps to load
// "aa" = (/type{vars=blah})
if(dmmRegex.group[1]) // Model
var/key = dmmRegex.group[1]
if(grid_models[key]) // Duplicate model keys are ignored in DMMs
continue
if(key_len != length(key))
if(!key_len)
key_len = length(key)
else
throw EXCEPTION("Inconsistant key length in DMM")
if(!measureOnly)
grid_models[key] = dmmRegex.group[2]
zcrd++
world.maxz = max(world.maxz, zcrd+z_offset)//create a new z_level if needed
// (1,1,1) = {"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}
else if(dmmRegex.group[3]) // Coords
if(!key_len)
throw EXCEPTION("Coords before model definition in DMM")
var/zgrid = copytext(tfile,findtext(tfile,quote+"\n",zpos,0)+2,findtext(tfile,"\n"+quote,zpos,0)+1) //copy the whole map grid
var/z_depth = length(zgrid)
var/xcrdStart = text2num(dmmRegex.group[3]) + x_offset - 1
//position of the currently processed square
var/xcrd
var/ycrd = text2num(dmmRegex.group[4]) + y_offset - 1
var/zcrd = text2num(dmmRegex.group[5]) + z_offset - 1
//if exceeding the world max x or y, increase it
var/x_depth = length(copytext(zgrid,1,findtext(zgrid,"\n",2,0)))
var/x_tilecount = x_depth/key_len
if(world.maxx<x_tilecount)
world.maxx=x_tilecount
if(!measureOnly)
if(zcrd > world.maxz)
if(cropMap)
continue
else
zlevels.increase_max_zlevel_to(zcrd) //create a new z_level if needed
var/y_depth = z_depth / (x_depth+1)//x_depth + 1 because we're counting the '\n' characters in z_depth
if(world.maxy<y_depth)
world.maxy=y_depth
bounds[MAP_MINX] = min(bounds[MAP_MINX], xcrdStart)
bounds[MAP_MINZ] = min(bounds[MAP_MINZ], zcrd)
bounds[MAP_MAXZ] = max(bounds[MAP_MAXZ], zcrd)
//then proceed it line by line, starting from top
ycrd = y_depth
var/list/gridLines = splittext(dmmRegex.group[6], "\n")
for(var/gpos=1;gpos!=0;gpos=findtext(zgrid,"\n",gpos,0)+1)
var/grid_line = copytext(zgrid,gpos,findtext(zgrid,"\n",gpos,0))
var/leadingBlanks = 0
while(leadingBlanks < gridLines.len && gridLines[++leadingBlanks] == "")
if(leadingBlanks > 1)
gridLines.Cut(1, leadingBlanks) // Remove all leading blank lines.
//fill the current square using the model map
xcrd=0
if(!gridLines.len) // Skip it if only blank lines exist.
continue
for(var/mpos in 1 to x_depth step key_len)
xcrd++
var/model_key = copytext(grid_line,mpos,mpos+key_len)
parse_grid(grid_models[model_key], xcrd + x_offset, ycrd + y_offset, zcrd + z_offset, do_sleep)
if(gridLines.len && gridLines[gridLines.len] == "")
gridLines.Cut(gridLines.len) // Remove only one blank line at the end.
//reached end of current map
if(gpos+x_depth+1>z_depth)
break
bounds[MAP_MINY] = min(bounds[MAP_MINY], ycrd)
ycrd += gridLines.len - 1 // Start at the top and work down
ycrd--
if(do_sleep)
sleep(-1)
if(!cropMap && ycrd > world.maxy)
if(!measureOnly)
world.maxy = ycrd // Expand Y here. X is expanded in the loop below
bounds[MAP_MAXY] = max(bounds[MAP_MAXY], ycrd)
else
bounds[MAP_MAXY] = max(bounds[MAP_MAXY], min(ycrd, world.maxy))
//reached End Of File
if(findtext(tfile,quote+"}",zpos,0)+2==tfile_len)
break
if(do_sleep)
sleep(-1)
var/maxx = xcrdStart
if(measureOnly)
for(var/line in gridLines)
maxx = max(maxx, xcrdStart + length(line) / key_len - 1)
else
for(var/line in gridLines)
if(ycrd <= world.maxy && ycrd >= 1)
xcrd = xcrdStart
for(var/tpos = 1 to length(line) - key_len + 1 step key_len)
if(xcrd > world.maxx)
if(cropMap)
break
else
world.maxx = xcrd
if(xcrd >= 1)
var/model_key = copytext(line, tpos, tpos + key_len)
if(!grid_models[model_key])
throw EXCEPTION("Undefined model key in DMM: [model_key]. Map file: [fname].")
parse_grid(grid_models[model_key], xcrd, ycrd, zcrd, LM)
// After this call, it is NOT safe to reference `dmmRegex` without another call to
// "Find" - we might've hit a map loader here and changed its state
CHECK_TICK
maxx = max(maxx, xcrd)
++xcrd
--ycrd
bounds[MAP_MAXX] = max(bounds[MAP_MAXX], cropMap ? min(maxx, world.maxx) : maxx)
CHECK_TICK
catch(var/exception/e)
_preloader.reset()
throw e
_preloader.reset()
log_debug("Loaded map in [stop_watch(watch)]s.")
qdel(LM)
if(bounds[MAP_MINX] == 1.#INF) // Shouldn't need to check every item
log_debug("Min x: bounds[MAP_MINX]")
log_debug("Min y: bounds[MAP_MINY]")
log_debug("Min z: bounds[MAP_MINZ]")
log_debug("Max x: bounds[MAP_MAXX]")
log_debug("Max y: bounds[MAP_MAXY]")
log_debug("Max z: bounds[MAP_MAXZ]")
return null
else
if(!measureOnly)
for(var/t in block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]), locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ])))
var/turf/T = t
//we do this after we load everything in. if we don't; we'll have weird atmos bugs regarding atmos adjacent turfs
T.AfterChange(1,keep_cabling = TRUE)
return bounds
/**
* Fill a given tile with its area/turf/objects/mobs
@@ -115,48 +196,60 @@ var/global/dmm_suite/preloader/_preloader = new
* 4) Instanciates the atom with its variables
*
*/
/dmm_suite/proc/parse_grid(model as text, xcrd as num, ycrd as num, zcrd as num, do_sleep = 1)
/dmm_suite/proc/parse_grid(model as text,xcrd as num,ycrd as num,zcrd as num, dmm_suite/loaded_map/LM)
/*Method parse_grid()
- Accepts a text string containing a comma separated list of type paths of the
same construction as those contained in a .dmm file, and instantiates them.
*/
var/list/members = list()//will contain all members (paths) in model (in our example : /turf/unsimulated/wall and /area/mine/explored)
var/list/members_attributes = list()//will contain lists filled with corresponding variables, if any (in our example : list(icon_state = "rock") and list())
var/list/members //will contain all members (paths) in model (in our example : /turf/unsimulated/wall and /area/mine/explored)
var/list/members_attributes //will contain lists filled with corresponding variables, if any (in our example : list(icon_state = "rock") and list())
var/list/cached = modelCache[model]
var/index
if(cached)
members = cached[1]
members_attributes = cached[2]
else
/////////////////////////////////////////////////////////
//Constructing members and corresponding variables lists
////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
//Constructing members and corresponding variables lists
////////////////////////////////////////////////////////
members = list()
members_attributes = list()
index = 1
var/index=1
var/old_position = 1
var/dpos
var/old_position = 1
var/dpos
do
//finding next member (e.g /turf/unsimulated/wall{icon_state = "rock"} or /area/mine/explored)
dpos= find_next_delimiter_position(model,old_position,",","{","}")//find next delimiter (comma here) that's not within {...}
do
//finding next member (e.g /turf/unsimulated/wall{icon_state = "rock"} or /area/mine/explored)
dpos = find_next_delimiter_position(model, old_position, ",", "{", "}") //find next delimiter (comma here) that's not within {...}
var/full_def = copytext(model,old_position,dpos)//full definition, e.g : /obj/foo/bar{variables=derp}
var/atom_def = text2path(copytext(full_def,1,findtext(full_def,"{")))//path definition, e.g /obj/foo/bar
members.Add(atom_def)
old_position = dpos + 1
var/full_def = trim_text(copytext(model, old_position, dpos)) //full definition, e.g : /obj/foo/bar{variables=derp}
var/variables_start = findtext(full_def, "{")
var/atom_def = text2path(trim_text(copytext(full_def, 1, variables_start))) //path definition, e.g /obj/foo/bar
old_position = dpos + 1
//transform the variables in text format into a list (e.g {var1="derp"; var2; var3=7} => list(var1="derp", var2, var3=7))
var/list/fields = list()
if(!atom_def) // Skip the item if the path does not exist. Fix your crap, mappers!
continue
members.Add(atom_def)
var/variables_start = findtext(full_def,"{")
if(variables_start)//if there's any variable
full_def = copytext(full_def,variables_start+1,length(full_def))//removing the last '}'
fields = readlist(full_def, ";")
//transform the variables in text format into a list (e.g {var1="derp"; var2; var3=7} => list(var1="derp", var2, var3=7))
var/list/fields = list()
//then fill the members_attributes list with the corresponding variables
members_attributes.len++
members_attributes[index++] = fields
if(variables_start)//if there's any variable
full_def = copytext(full_def,variables_start+1,length(full_def))//removing the last '}'
fields = readlist(full_def, ";")
if(do_sleep)
sleep(-1)
while(dpos != 0)
//then fill the members_attributes list with the corresponding variables
members_attributes.len++
members_attributes[index++] = fields
CHECK_TICK
while(dpos != 0)
modelCache[model] = list(members, members_attributes)
////////////////
@@ -165,24 +258,25 @@ var/global/dmm_suite/preloader/_preloader = new
//The next part of the code assumes there's ALWAYS an /area AND a /turf on a given tile
//in case of multiples turfs on one tile,
//will contains the images of all underlying turfs, to simulate the DMM multiple tiles piling
var/list/turfs_underlays = list()
//first instance the /area and remove it from the members list
index = members.len
var/turf/crds = locate(xcrd,ycrd,zcrd)
if(members[index] != /area/template_noop)
// We assume `members[index]` is an area path, as above, yes? I will operate
// on that assumption.
if(!ispath(members[index], /area))
throw EXCEPTION("Oh no, I thought this was an area!")
var/atom/instance
_preloader.setup(members_attributes[index])//preloader for assigning set variables on atom creation
instance = LM.area_path_to_real_area(members[index])
instance = locate(members[index])
var/turf/crds = locate(xcrd,ycrd,zcrd)
if(crds)
instance.contents.Add(crds)
if(use_preloader && instance)
_preloader.load(instance)
members.Remove(members[index])
//then instance the /turf and, if multiple tiles are presents, simulates the DMM underlays piling effect
@@ -198,18 +292,20 @@ var/global/dmm_suite/preloader/_preloader = new
if(T)
//if others /turf are presents, simulates the underlays piling effect
index = first_turf_index + 1
while(index <= members.len)
turfs_underlays.Insert(1,image(T.icon,null,T.icon_state,T.layer,T.dir))//add the current turf image to the underlays list
var/turf/UT = instance_atom(members[index],members_attributes[index],xcrd,ycrd,zcrd)//instance new turf
add_underlying_turf(UT,T,turfs_underlays)//simulates the DMM piling effect
T = UT
while(index <= members.len - 1) // Last item is an /area
var/underlay
if(istype(T, /turf)) // I blame this on the stupid clown who coded the BYOND map editor
underlay = T.appearance
T = instance_atom(members[index],members_attributes[index],xcrd,ycrd,zcrd)//instance new turf
if(ispath(members[index],/turf))
T.underlays += underlay
index++
//finally instance all remainings objects/mobs
for(index in 1 to first_turf_index - 1)
for(index in 1 to first_turf_index-1)
instance_atom(members[index],members_attributes[index],xcrd,ycrd,zcrd)
if(do_sleep)
sleep(-1)
CHECK_TICK
////////////////
//Helpers procs
@@ -222,7 +318,13 @@ var/global/dmm_suite/preloader/_preloader = new
var/turf/T = locate(x,y,z)
if(T)
instance = new path (T)//first preloader pass
if(ispath(path, /turf))
T.ChangeTurf(path, 1, 0)
instance = T
else if(ispath(path, /area))
else
instance = new path (T)//first preloader pass
if(use_preloader && instance)//second preloader pass, for those atoms that don't ..() in New()
_preloader.load(instance)
@@ -232,16 +334,11 @@ var/global/dmm_suite/preloader/_preloader = new
//text trimming (both directions) helper proc
//optionally removes quotes before and after the text (for variable name)
/dmm_suite/proc/trim_text(what as text,trim_quotes=0)
while(length(what) && (findtext(what," ",1,2)))
what=copytext(what,2,0)
while(length(what) && (findtext(what," ",length(what),0)))
what=copytext(what,1,length(what))
if(trim_quotes)
while(length(what) && (findtext(what,quote,1,2)))
what=copytext(what,2,0)
while(length(what) && (findtext(what,quote,length(what),0)))
what=copytext(what,1,length(what))
return what
return trimQuotesRegex.Replace(what, "")
else
return trimRegex.Replace(what, "")
//find the position of the next delimiter,skipping whatever is comprised between opening_escape and closing_escape
//returns 0 if reached the last delimiter
@@ -313,14 +410,6 @@ var/global/dmm_suite/preloader/_preloader = new
return to_return
//simulates the DM multiple turfs on one tile underlaying
/dmm_suite/proc/add_underlying_turf(turf/placed,turf/underturf, list/turfs_underlays)
if(underturf.density)
placed.density = 1
if(underturf.opacity)
placed.opacity = 1
placed.underlays += turfs_underlays
//atom creation method that preloads variables at creation
/atom/New()
if(use_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
@@ -336,6 +425,7 @@ var/global/dmm_suite/preloader/_preloader = new
//Preloader datum
//////////////////
// This ain't re-entrant, but we had this before the maploader update
/dmm_suite/preloader
parent_type = /datum
var/list/attributes
@@ -349,11 +439,41 @@ var/global/dmm_suite/preloader/_preloader = new
/dmm_suite/preloader/proc/load(atom/what)
for(var/attribute in attributes)
what.vars[attribute] = attributes[attribute]
var/value = attributes[attribute]
if(islist(value))
value = deepCopyList(value)
what.vars[attribute] = value
use_preloader = FALSE
// If the map loader fails, make this safe
/dmm_suite/preloader/proc/reset()
use_preloader = FALSE
attributes = list()
target_path = null
// A datum for use within the context of loading a single map,
// so that one can have separate "unpowered" areas for ruins or whatever,
// yet have a single area type for use of mapping, instead of creating
// a new area type for each new ruin
/dmm_suite/loaded_map
parent_type = /datum
var/list/area_list = list()
var/index = 1 // To store the state of the regex
/dmm_suite/loaded_map/proc/area_path_to_real_area(area/A)
if(!ispath(A, /area))
throw EXCEPTION("Wrong argument to `area_path_to_real_area`")
if(!(A in area_list))
if(initial(A.there_can_be_many))
area_list[A] = new A
else
area_list[A] = locate(A)
return area_list[A]
/area/template_noop
name = "Area Passthrough"
/turf/template_noop
name = "Turf Passthrough"
name = "Turf Passthrough"
@@ -326,7 +326,7 @@ swapmap
x2+=x1-1
y2+=y1-1
z2+=z1-1
world.maxz=max(z2,world.maxz) // stretch z if necessary
zlevels.increase_max_zlevel_to(z2) // stretch z if necessary
if(!ischunk)
swapmaps_loaded[src]=null
swapmaps_byname[id]=src
@@ -373,7 +373,7 @@ swapmap
mz=max(mz,M.z2)
world.maxx=mx
world.maxy=my
world.maxz=mz
zlevels.cut_levels_downto(mz)
// save and delete
proc/Unload()
@@ -54,9 +54,8 @@
name = "space hotel pamphlet"
info = "<h3>Welcome to Deep Space Hotel 419!</h3>Thank you for choosing our hotel. Simply hand your credit or debit card to the concierge and get your room key! To check out, hand your credit card back.<small><h4>Conditions:</h4><ul><li>The hotel is not responsible for any losses due to time or space anomalies.<li>The hotel is not responsible for events that occur outside of the hotel station, including, but not limited to, events that occur inside of dimensional pockets.<li>The hotel is not responsible for overcharging your account.<li>The hotel is not responsible for missing persons.<li>The hotel is not responsible for mind-altering effects due to drugs, magic, demons, or space worms.</ul></small>"
/obj/effect/landmark/map_loader/hotel_room/New()
/obj/effect/landmark/map_loader/hotel_room/initialize()
..()
// load and randomly assign rooms
var/global/list/south_room_templates = list()
var/global/list/north_room_templates = list()
@@ -65,26 +64,27 @@
if(!loaded)
loaded = 1
for(var/map in flist(path))
var/datum/map_template/T = new(path = "[path][map]", rename = "[map]")
if(copytext(map, 1, 3) == "n_")
north_room_templates += T
else if(copytext(map, 1, 3) == "s_")
south_room_templates += T
else
// omnidirectional rooms are randomly assigned
if(prob(50))
if(cmptext(copytext(map, length(map) - 3), ".dmm"))
var/datum/map_template/T = new(path = "[path][map]", rename = "[map]")
if(copytext(map, 1, 3) == "n_")
north_room_templates += T
else
else if(copytext(map, 1, 3) == "s_")
south_room_templates += T
else
// omnidirectional rooms are randomly assigned
if(prob(50))
north_room_templates += T
else
south_room_templates += T
var/datum/map_template/M = safepick(dir == NORTH ? north_room_templates : south_room_templates)
if(M)
template = M
load(M)
if(dir == NORTH)
north_room_templates -= M
else
south_room_templates -= M
load(M)
// The door to a hotel room, but also metadata for the room itself
/obj/machinery/door/unpowered/hotel_door
@@ -305,4 +305,4 @@
S.retal_target = target
S.retal = 1
#undef CHECKOUT_TIME
#undef CHECKOUT_TIME
+166 -29
View File
@@ -1,14 +1,27 @@
var/global/list/potentialRandomZlevels = generateMapList(filename = "config/away_mission_config.txt")
// Call this before you remove the last dirt on a z level - that way, all objects
// will have proper atmos and other important enviro things
/proc/late_setup_level(turfs, smoothTurfs)
var/total_timer = start_watch()
var/subtimer = start_watch()
if(!smoothTurfs)
smoothTurfs = turfs
log_debug("Setting up atmos")
if(air_master)
air_master.setup_allturfs(turfs)
log_debug("\tTook [stop_watch(subtimer)]s")
subtimer = start_watch()
log_debug("Initializing lighting")
for(var/turf/T in turfs)
if(T.dynamic_lighting)
T.lighting_build_overlays()
for(var/obj/structure/cable/PC in T)
makepowernet_for(PC)
log_debug("\tTook [stop_watch(subtimer)]s")
subtimer = start_watch()
log_debug("Smoothing tiles")
for(var/turf/T in smoothTurfs)
if(T.smooth)
smooth_icon(T)
@@ -16,20 +29,95 @@
var/atom/A = R
if(A.smooth)
smooth_icon(A)
if(istype(T, /turf/simulated/mineral)) // For the listening post, among other maps
var/turf/simulated/mineral/MT = T
MT.add_edges()
log_debug("\tTook [stop_watch(subtimer)]s")
log_debug("Late setup finished - took [stop_watch(total_timer)]s")
/proc/empty_rect(low_x,low_y, hi_x,hi_y, z)
var/timer = start_watch()
log_debug("Emptying region: ([low_x], [low_y]) to ([hi_x], [hi_y]) on z '[z]'")
empty_region(block(locate(low_x, low_y, z), locate(hi_x, hi_y, z)))
log_debug("Took [stop_watch(timer)]s")
/proc/empty_region(list/turfs)
for(var/thing in turfs)
var/turf/T = thing
for(var/otherthing in T)
qdel(otherthing)
T.ChangeTurf(/turf/space)
/proc/createRandomZlevel()
if(awaydestinations.len) //crude, but it saves another var!
return
var/list/potentialRandomZlevels = list()
log_startup_progress("Searching for away missions...")
var/list/Lines
if(fexists("config/away_mission_config.txt"))
Lines = file2list("config/away_mission_config.txt")
else
Lines = file2list("config/example/away_mission_config.txt")
if(potentialRandomZlevels && potentialRandomZlevels.len)
var/watch = start_watch()
log_startup_progress("Loading away mission...")
if(!Lines.len) return
var/map = pick(potentialRandomZlevels)
var/file = file(map)
if(isfile(file))
var/zlev = zlevels.add_new_zlevel()
zlevels.add_dirt(zlev)
maploader.load_map(file, z_offset = zlev)
late_setup_level(block(locate(1, 1, zlev), locate(world.maxx, world.maxy, zlev)))
zlevels.remove_dirt(zlev)
log_to_dd(" Away mission loaded: [map]")
//map_transition_config.Add(AWAY_MISSION_LIST)
for(var/obj/effect/landmark/L in landmarks_list)
if(L.name != "awaystart")
continue
awaydestinations.Add(L)
log_startup_progress(" Away mission loaded in [stop_watch(watch)]s.")
else
log_startup_progress(" No away missions found.")
return
/proc/createALLZlevels()
if(awaydestinations.len) //crude, but it saves another var!
return
if(potentialRandomZlevels && potentialRandomZlevels.len)
var/watch = start_watch()
log_startup_progress("Loading away missions...")
for(var/map in potentialRandomZlevels)
var/file = file(map)
if(isfile(file))
log_startup_progress("Loading away mission: [map]")
var/zlev = zlevels.add_new_zlevel()
zlevels.add_dirt(zlev)
maploader.load_map(file, z_offset = zlev)
late_setup_level(block(locate(1, 1, zlev), locate(world.maxx, world.maxy, zlev)))
zlevels.remove_dirt(zlev)
log_to_dd(" Away mission loaded: [map]")
//map_transition_config.Add(AWAY_MISSION_LIST)
for(var/obj/effect/landmark/L in landmarks_list)
if(L.name != "awaystart")
continue
awaydestinations.Add(L)
log_startup_progress(" Away mission loaded in [stop_watch(watch)]s.")
watch = start_watch()
else
log_startup_progress(" No away missions found.")
return
/proc/generateMapList(filename)
var/list/potentialMaps = list()
var/list/Lines = file2list(filename)
if(!Lines.len)
return
for(var/t in Lines)
if(!t)
continue
@@ -42,38 +130,87 @@
var/pos = findtext(t, " ")
var/name = null
// var/value = null
if(pos)
name = lowertext(copytext(t, 1, pos))
// value = copytext(t, pos + 1)
else
name = lowertext(t)
if(!name)
continue
potentialRandomZlevels.Add(t)
potentialMaps.Add(t)
return potentialMaps
if(potentialRandomZlevels.len)
var/watch = start_watch()
log_startup_progress("Loading away mission...")
/proc/seedRuins(z_level = 1, budget = 0, whitelist = /area/space, list/potentialRuins = space_ruins_templates)
var/overall_sanity = 100
var/ruins = potentialRuins.Copy()
var/initialbudget = budget
var/watch = start_watch()
var/map = pick(potentialRandomZlevels)
var/file = file(map)
if(isfile(file))
maploader.load_map(file, do_sleep = 0)
late_setup_level(block(locate(1, 1, world.maxz), locate(world.maxx, world.maxy, world.maxz)))
log_to_dd(" Away mission loaded: [map]")
log_startup_progress("Loading ruins...")
for(var/obj/effect/landmark/L in landmarks_list)
if(L.name != "awaystart")
while(budget > 0 && overall_sanity > 0)
// Pick a ruin
var/datum/map_template/ruin/ruin = ruins[pick(ruins)]
// Can we afford it
if(ruin.cost > budget)
overall_sanity--
continue
// If so, try to place it
var/sanity = 100
// And if we can't fit it anywhere, give up, try again
while(sanity > 0)
sanity--
var/turf/T = locate(rand(25, world.maxx - 25), rand(25, world.maxy - 25), z_level)
var/valid = 1
for(var/turf/check in ruin.get_affected_turfs(T,1))
var/area/new_area = get_area(check)
if(!(istype(new_area, whitelist)))
valid = 0
break
if(!valid)
continue
awaydestinations.Add(L)
log_startup_progress(" Away mission loaded in [stop_watch(watch)]s.")
log_to_dd(" Ruin \"[ruin.name]\" loaded in [stop_watch(watch)]s at ([T.x], [T.y], [T.z]).")
else
log_startup_progress(" No away missions found.")
return
var/obj/effect/ruin_loader/R = new /obj/effect/ruin_loader(T)
R.Load(ruins,ruin)
budget -= ruin.cost
if(!ruin.allow_duplicates)
ruins -= ruin.name
break
to_chat(world, "<span class='danger'> Loaded ruins. Or not.</span>") //So the players don't know if we loaded ruins, but we do have a message
if(initialbudget == budget) //Kill me
log_to_dd(" No ruins loaded.")
/obj/effect/ruin_loader
name = "random ruin"
desc = "If you got lucky enough to see this..."
icon = 'icons/obj/weapons.dmi'
icon_state = "syndballoon"
invisibility = 0
/obj/effect/ruin_loader/proc/Load(list/potentialRuins = space_ruins_templates, datum/map_template/template = null)
var/list/possible_ruins = list()
for(var/A in potentialRuins)
var/datum/map_template/T = potentialRuins[A]
if(!T.loaded)
possible_ruins += T
if(!template && possible_ruins.len)
template = safepick(possible_ruins)
if(!template)
return 0
template.load(get_turf(src),centered = 1)
template.loaded++
qdel(src)
return 1
+7 -2
View File
@@ -21,6 +21,9 @@
/obj/effect/levelref/New()
..()
levels += src
/obj/effect/levelref/initialize()
..()
for(var/obj/effect/levelref/O in levels)
if(id == O.id && O != src)
other = O
@@ -104,7 +107,7 @@
/turf/unsimulated/floor/upperlevel/New()
..()
var/obj/effect/levelref/R = locate() in get_area(src)
if(R)
if(R && R.other)
init(R)
/turf/unsimulated/floor/upperlevel/Destroy()
@@ -159,6 +162,8 @@
..()
portals += src
/obj/effect/view_portal/initialize()
..()
if(id)
for(var/obj/effect/view_portal/O in portals)
if(id == O.id && O != src && can_link(O))
@@ -361,4 +366,4 @@
screen_loc = "CENTER[ox >= 0 ? "+" : ""][ox],CENTER[oy >= 0 ? "+" : ""][oy]"
/obj/effect/view_portal_dummy/attack_ghost(mob/user)
owner.attack_ghost(user)
owner.attack_ghost(user)
+1
View File
@@ -26,6 +26,7 @@
/obj/item/weapon/storage/bible)
/obj/structure/bookcase/initialize()
..()
for(var/obj/item/I in loc)
if(is_type_in_list(I, valid_types))
I.forceMove(src)
+2 -1
View File
@@ -9,6 +9,7 @@
invisibility = INVISIBILITY_LIGHTING
color = "#000000"
icon_state = "light1"
auto_init = 0 // doesn't need special init
var/lum_r
var/lum_g
@@ -104,4 +105,4 @@
if(istype(T))
T.lighting_overlay = null
return ..()
return ..()
@@ -8,6 +8,7 @@
var/on=0
/obj/machinery/media/receiver/boombox/initialize()
..()
if(on)
update_on()
update_icon()
@@ -80,4 +81,4 @@
if(on)
icon_state="wallradio-p"
else
icon_state="wallradio"
icon_state="wallradio"
@@ -19,6 +19,7 @@
var/const/MAX_TEMP=70 // Celsius
/obj/machinery/media/transmitter/broadcast/initialize()
..()
testing("[type]/initialize() called!")
if(autolink && autolink.len)
for(var/obj/machinery/media/source in orange(20, src))
@@ -303,7 +303,7 @@
/mob/living/silicon/robot/drone/Bump(atom/movable/AM as mob|obj, yes)
if (!yes || ( \
if(!yes || ( \
!istype(AM,/obj/machinery/door) && \
!istype(AM,/obj/machinery/recharge_station) && \
!istype(AM,/obj/machinery/disposal/deliveryChute) && \
@@ -135,6 +135,7 @@
var/alerted = 0
var/ore_eaten = 1
var/chase_time = 100
var/will_burrow = 1
/mob/living/simple_animal/hostile/asteroid/goldgrub/New()
..()
@@ -170,7 +171,7 @@
visible_message("<span class='notice'>The ore was swallowed whole!</span>")
/mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Burrow()//Begin the chase to kill the goldgrub in time
if(!alerted)
if(!alerted && will_burrow)
alerted = 1
spawn(chase_time)
if(alerted)
+22 -7
View File
@@ -99,11 +99,22 @@
var/global/list/status_overlays_lighting
var/global/list/status_overlays_environ
var/indestructible = 0 // If set, prevents aliens from destroying it
var/keep_preset_name = 0
var/report_power_alarm = 1
var/shock_proof = 0 //if set to 1, this APC will not arc bolts of electricity if it's overloaded.
/obj/machinery/power/apc/worn_out
name = "\improper Worn out APC"
keep_preset_name = 1
locked = 0
environ = 0
equipment = 0
lighting = 0
operating = 0
/obj/machinery/power/apc/noalarm
report_power_alarm = 0
@@ -192,15 +203,19 @@
cell.maxcharge = cell_type // cell_type is maximum charge (old default was 1000 or 2500 (values one and two respectively)
cell.charge = start_charge * cell.maxcharge / 100.0 // (convert percentage to actual value)
var/area/A = src.loc.loc
var/area/A = get_area(src)
//if area isn't specified use current
if(isarea(A) && src.areastring == null)
src.area = A
if(keep_preset_name)
if(isarea(A))
area = A
// no-op, keep the name
else if(isarea(A) && src.areastring == null)
area = A
name = "\improper [area.name] APC"
else
src.area = get_area_name(areastring)
area = get_area_name(areastring)
name = "\improper [area.name] APC"
area.apc |= src
update_icon()
@@ -623,7 +638,7 @@
else
if(istype(user, /mob/living/silicon))
return src.attack_hand(user)
if (!opened && wiresexposed && \
if(!opened && wiresexposed && \
(istype(W, /obj/item/device/multitool) || \
istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/assembly/signaler)))
return src.attack_hand(user)
@@ -853,7 +868,7 @@
if(istype(user, /mob/living/silicon))
var/mob/living/silicon/ai/AI = user
var/mob/living/silicon/robot/robot = user
if ( \
if( \
src.aidisabled || \
malfhack && istype(malfai) && \
( \
@@ -1382,4 +1397,4 @@
else
return 0
#undef APC_UPDATE_ICON_COOLDOWN
#undef APC_UPDATE_ICON_COOLDOWN
+4 -3
View File
@@ -82,6 +82,7 @@ var/const/GRAV_NEEDS_WRENCH = 3
//
/obj/machinery/gravity_generator/main/station/initialize()
..()
setup_parts()
middle.overlays += "activated"
update_list()
@@ -215,17 +216,17 @@ var/const/GRAV_NEEDS_WRENCH = 3
/obj/machinery/gravity_generator/main/attack_hand(mob/user as mob)
if(!..())
return interact(user)
/obj/machinery/gravity_generator/main/attack_ai(mob/user as mob)
return 1
/obj/machinery/gravity_generator/main/attack_ghost(mob/user as mob)
return interact(user)
/obj/machinery/gravity_generator/main/interact(mob/user as mob)
if(stat & BROKEN)
return
var/dat = "Gravity Generator Breaker: "
if(breaker)
dat += "<span class='linkOn'>ON</span> <A href='?src=\ref[src];gentoggle=1'>OFF</A>"
+2 -1
View File
@@ -138,6 +138,7 @@
var/redeem_immediately = 0 // redeem immediately for holding cell
/obj/machinery/treadmill_monitor/initialize()
..()
if(id)
for(var/obj/machinery/power/treadmill/T in machines)
if(T.id == id)
@@ -222,4 +223,4 @@
#undef FONT_SIZE
#undef FONT_COLOR
#undef FONT_STYLE
#undef CHARS_PER_LINE
#undef CHARS_PER_LINE

Some files were not shown because too many files have changed in this diff Show More