Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into Drill

This commit is contained in:
warior4356
2018-11-08 01:58:53 -08:00
182 changed files with 3485 additions and 943 deletions
+3 -2
View File
@@ -517,14 +517,15 @@ There are a few other defines that do other things. `GLOBAL_REAL` shouldn't be u
`GLOBAL_LIST_INIT` allows you to define a list global var with an initial value. Etc.
## Maintainers
The only current official role for GitHub staff are the `Maintainers`. There are up to
three `Maintainers` at once, and they share equal power. The `Maintainers` are
The only current official role for GitHub staff are the `Maintainers`. They share equal power. The `Maintainers` are
responsible for properly tagging new pull requests and issues, moderating comments in
pull requests/issues, and merging/closing pull requests.
### Maintainer List
* [Fox P McCloud](https://github.com/Fox-McCloud)
* [Crazy Lemon](https://github.com/Crazylemon64)
* [Tigercat2000](https://github.com/tigercat2000)
* [Ansari](https://github.com/variableundefined)
### Maintainer instructions
* Do not `self-merge`; this refers to the practice of opening a pull request, then
+4
View File
@@ -5522,7 +5522,11 @@
"ccj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/crew_quarters/captain/bedroom)
"cck" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/crew_quarters/captain/bedroom)
"ccl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/crew_quarters/captain/bedroom)
<<<<<<< HEAD
"ccm" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/door/window{dir = 8; req_access_txt = "63"},/obj/structure/safe/floor{knownby = list("captain")},/obj/item/gun/projectile/revolver/russian,/obj/item/reagent_containers/food/drinks/bottle/absinthe/premium,/obj/item/lighter/zippo/nt_rep,/obj/item/storage/fancy/cigarettes/cigpack_robustgold,/obj/item/toy/figure/captain,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/captain/bedroom)
=======
"ccm" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/door/window{dir = 8; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/captain/bedroom)
>>>>>>> 527b6b1a7f7a00ed6773ec2483b4b48e5ae6a84a
"ccn" = (/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
"cco" = (/obj/structure/bed,/obj/item/bedsheet/captain,/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/effect/landmark/start{name = "Captain"},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom)
"ccp" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/obj/machinery/newscaster{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom)
@@ -0,0 +1,662 @@
"aa" = (/turf/template_noop,/area/template_noop)
"ab" = (/turf/simulated/mineral,/area/ruin/unpowered)
"ac" = (/turf/simulated/wall/r_wall,/area/ruin/space/ancientstation/hivebot)
"ad" = (/obj/structure/closet/crate,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/plasteel{amount = 30},/obj/item/stack/sheet/mineral/titanium{amount = 30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"ae" = (/turf/simulated/floor/plating/airless,/area/template_noop)
"af" = (/turf/simulated/wall/rust,/area/template_noop)
"ag" = (/obj/structure/lattice,/turf/template_noop,/area/template_noop)
"ah" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"ai" = (/turf/simulated/wall,/area/ruin/space/ancientstation/hivebot)
"aj" = (/obj/effect/decal/remains/robot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"ak" = (/obj/structure/closet/crate,/obj/item/stack/sheet/mineral/silver{amount = 25},/obj/item/stack/sheet/mineral/gold{amount = 25},/obj/item/stack/ore/bluespace_crystal,/obj/item/stack/ore/bluespace_crystal,/obj/item/stack/ore/bluespace_crystal,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"al" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/comm)
"am" = (/obj/structure/sign/poster/official/nanotrasen_logo,/turf/simulated/wall/rust,/area/ruin/space/ancientstation/comm)
"an" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{id_tag = "ancient"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/comm)
"ao" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"ap" = (/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"aq" = (/obj/effect/decal/remains/robot{icon_state = "gib2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"ar" = (/obj/effect/decal/remains/robot{icon_state = "gibup"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"as" = (/turf/simulated/floor/plating,/area/ruin/space/ancientstation/hivebot)
"at" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"au" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"av" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/obj/item/paper/fluff/ruins/oldstation/damagereport,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"aw" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/obj/item/paper/fluff/ruins/oldstation/report,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"ax" = (/obj/effect/decal/remains/robot{icon_state = "gib5"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"ay" = (/obj/structure/shuttle/engine/large{icon_state = "large_engine"; dir = 4},/turf/simulated/wall,/area/ruin/space/ancientstation/hivebot)
"az" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation)
"aA" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/machinery/door_control{id = "ancient"; name = "Charlie Station Lockdown Button"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"aB" = (/obj/effect/decal/cleanable/dirt,/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"aC" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/toy/cards/deck,/obj/item/folder/blue,/obj/item/pen,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"aD" = (/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/hivebot)
"aE" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/effect/decal/cleanable/dirt,/obj/machinery/power/apc{dir = 4; name = "Charlie Command APC"; pixel_x = 24; start_charge = 0},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/comm)
"aF" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"aG" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"aH" = (/obj/item/solar_assembly,/turf/template_noop,/area/template_noop)
"aI" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/urinal{pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation)
"aJ" = (/obj/effect/decal/cleanable/dirt,/obj/structure/toilet{pixel_y = 12},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation)
"aK" = (/obj/structure/sign/poster/contraband/random,/turf/simulated/wall/rust,/area/ruin/space/ancientstation)
"aL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"aM" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/ruin/space/ancientstation/comm)
"aN" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/megaphone,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"aO" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "arrivalcorner"; dir = 1},/area/ruin/space/ancientstation/comm)
"aP" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation)
"aQ" = (/obj/effect/decal/cleanable/dirt,/obj/structure/mirror{name = "dusty mirror"; pixel_x = 26},/obj/structure/sink{dir = 4; pixel_x = 12},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation)
"aR" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate/engineering/electrical,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"aS" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/lighter/zippo,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"aT" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/decal/cleanable/dirt,/obj/item/coin,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"aU" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation)
"aV" = (/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"aW" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"aX" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate/engineering/electrical,/obj/item/airlock_electronics,/obj/item/airlock_electronics,/obj/item/apc_electronics,/obj/item/apc_electronics,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"aY" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/ruin/space/ancientstation/comm)
"aZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"ba" = (/obj/machinery/light/small{dir = 8; pixel_y = -8},/obj/effect/decal/cleanable/dirt,/obj/structure/mirror{name = "dusty mirror"; pixel_x = -26},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation)
"bb" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/shower{dir = 8},/obj/machinery/door/window/westright,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation)
"bc" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 20},/obj/item/stack/sheet/metal{amount = 20},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"bd" = (/obj/structure/closet/crate,/obj/item/stack/sheet/mineral/plasma{amount = 25},/obj/item/stack/sheet/mineral/uranium{amount = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"be" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"bf" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/betanorth)
"bg" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"bh" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/ruin/space/ancientstation/comm)
"bi" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/ruin/space/ancientstation/comm)
"bj" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/ruin/space/ancientstation/comm)
"bk" = (/obj/machinery/light{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/ruin/space/ancientstation/comm)
"bl" = (/obj/effect/decal/cleanable/dirt,/obj/structure/mirror{name = "dusty mirror"; pixel_x = -26},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation)
"bm" = (/obj/effect/decal/cleanable/dirt,/obj/item/soap/nanotrasen,/obj/machinery/shower{dir = 8},/obj/machinery/door/window/westleft,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation)
"bn" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/hivebot)
"bo" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"bp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance_hatch,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"bq" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/comm)
"br" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/command/glass{name = "Bridge"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/comm)
"bs" = (/obj/structure/sign/poster/official/cleanliness,/turf/simulated/wall/rust,/area/ruin/space/ancientstation)
"bt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/template_noop)
"bu" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/deltacorridor)
"bv" = (/turf/simulated/wall,/area/ruin/space/ancientstation/deltacorridor)
"bw" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/hivebot)
"bx" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/hivebot)
"by" = (/obj/machinery/door/firedoor/closed,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"bz" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"bA" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"bB" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate/engineering/electrical,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"bC" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"bD" = (/obj/structure/sign/redcross{icon_state = "greencross"},/turf/simulated/wall/rust,/area/ruin/space/ancientstation)
"bE" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"bF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"bG" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"bH" = (/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"bI" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"bJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"bK" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"bL" = (/obj/structure/sign/science,/turf/simulated/wall/rust,/area/ruin/space/ancientstation)
"bM" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"bN" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood/old,/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"bO" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"bP" = (/obj/structure/sign/poster/official/science,/turf/simulated/wall/rust,/area/ruin/space/ancientstation/deltacorridor)
"bQ" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/hivebot)
"bR" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/science{name = "Artificial Program Core Room"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/hivebot)
"bS" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"bT" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/item/circular_saw,/obj/item/retractor,/obj/item/hemostat,/obj/item/scalpel,/obj/item/cautery,/obj/item/FixOVein,/obj/item/surgicaldrill,/obj/item/bonegel,/obj/item/bonesetter,/obj/item/stack/medical/bruise_pack/advanced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"bU" = (/obj/machinery/door/airlock/command,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"bV" = (/obj/effect/decal/remains/human,/turf/template_noop,/area/template_noop)
"bW" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"bX" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"bY" = (/obj/structure/transit_tube_pod{dir = 4},/obj/structure/transit_tube/station/reverse{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 1},/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"bZ" = (/obj/machinery/door/poddoor{id_tag = "ancient"},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/command{name = "Beta Station Access"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/powered)
"ca" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/decal/cleanable/generic,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cc" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/template_noop)
"cd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"ce" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cg" = (/obj/effect/decal/cleanable/deadcockroach,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"ch" = (/obj/machinery/door/poddoor{id_tag = "ancient"},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/command{name = "Delta Station Access"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/powered)
"ci" = (/obj/structure/transit_tube/station/reverse{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cj" = (/obj/effect/spawner/window/reinforced,/obj/structure/transit_tube,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"ck" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"cl" = (/obj/structure/transit_tube/station/reverse,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cm" = (/obj/effect/decal/cleanable/dirt,/obj/item/stack/medical/bruise_pack,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cn" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/command,/obj/structure/barricade/wooden,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"co" = (/obj/effect/decal/cleanable/blood/oil,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"cp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/science,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cr" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cs" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/science,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ct" = (/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cu" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"cv" = (/obj/effect/decal/cleanable/blood/oil,/obj/effect/decal/remains/robot{icon_state = "gib2"},/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"cw" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"cx" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/item/storage/box/lights/mixed,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cy" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cA" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/hydroponics)
"cB" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/hydroponics)
"cC" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/template_noop)
"cD" = (/obj/structure/cable/yellow{d1 = 0; d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/template_noop)
"cE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cF" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cG" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cH" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/solar,/turf/simulated/floor/plating/airless,/area/template_noop)
"cI" = (/obj/effect/decal/cleanable/dirt,/obj/item/pickaxe,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cK" = (/obj/effect/decal/remains/robot{icon_state = "gib5"},/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"cL" = (/mob/living/simple_animal/hostile/hivebot/strong,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"cM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/science,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"cP" = (/obj/effect/decal/cleanable/blood/oil,/mob/living/simple_animal/hostile/hivebot/strong,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"cQ" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate/engineering{name = "plasma tank crate"},/obj/item/tank/plasma/full,/obj/item/tank/plasma/full,/obj/item/tank/plasma/full,/obj/item/tank/plasma/full,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"cR" = (/obj/structure/table,/obj/item/storage/firstaid/ancient,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "whitehall"},/area/ruin/space/ancientstation/betanorth)
"cS" = (/obj/structure/sign/poster/official/nanomichi_ad,/turf/simulated/wall/rust,/area/ruin/space/ancientstation/betanorth)
"cT" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"cU" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/engi)
"cV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/obj/machinery/alarm/all_access{dir = 4; pixel_x = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"cW" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/chair{dir = 1},/obj/machinery/alarm/all_access{dir = 8; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/ruin/space/ancientstation/comm)
"cX" = (/obj/structure/transit_tube,/turf/template_noop,/area/template_noop)
"cY" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/hydroponics)
"cZ" = (/obj/machinery/hydroponics/soil,/turf/simulated/floor/grass,/area/ruin/space/ancientstation/hydroponics)
"da" = (/obj/structure/reagent_dispensers/watertank/high,/obj/item/reagent_containers/glass/bucket,/obj/item/reagent_containers/glass/bucket,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/hydroponics)
"db" = (/obj/item/solar_assembly,/obj/structure/lattice,/turf/template_noop,/area/template_noop)
"dc" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/ruin/space/ancientstation/comm)
"dd" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/alarm/all_access{dir = 8; pixel_x = 24},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"de" = (/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/template_noop,/area/template_noop)
"df" = (/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/template_noop)
"dg" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/sec)
"dh" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"di" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"dj" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/rnd)
"dk" = (/obj/structure/transit_tube_pod{dir = 4},/turf/template_noop,/area/template_noop)
"dl" = (/obj/item/stack/cable_coil,/turf/template_noop,/area/template_noop)
"dm" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"dn" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/template_noop,/area/template_noop)
"do" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"dp" = (/obj/machinery/power/solar,/obj/structure/cable/yellow{d1 = 0; d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/template_noop)
"dq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"dr" = (/obj/item/roller,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "whitehall"},/area/ruin/space/ancientstation/betanorth)
"ds" = (/obj/effect/decal/remains/robot{icon_state = "gibup"},/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ruin/space/ancientstation/hivebot)
"dt" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/ruin/space/ancientstation/comm)
"du" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "arrivalcorner"},/area/ruin/space/ancientstation/comm)
"dv" = (/obj/effect/decal/cleanable/dirt,/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 6; icon_state = "blue"},/area/ruin/space/ancientstation/comm)
"dw" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/hydroponics)
"dx" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/soap/nanotrasen,/turf/simulated/floor/plasteel{dir = 6; icon_state = "blue"},/area/ruin/space/ancientstation/comm)
"dy" = (/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"dz" = (/obj/structure/transit_tube/station/reverse,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/arrow,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"dA" = (/obj/structure/sign/poster/contraband/donut_corp,/turf/simulated/wall/rust,/area/ruin/space/ancientstation/sec)
"dB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm/all_access{dir = 4; pixel_x = -24},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"dC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"dD" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/ruin/space/ancientstation/rnd)
"dE" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"dF" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitepurple"},/area/ruin/space/ancientstation/rnd)
"dG" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"dH" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"dI" = (/obj/machinery/door/airlock/medical/glass{name = "Medical Bay"},/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"dJ" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"dK" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot/strong,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"dL" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/machinery/recharger,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/ruin/space/ancientstation/comm)
"dM" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/dice/d6,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/ruin/space/ancientstation/comm)
"dN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"dO" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"dP" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/tank/emergency_oxygen,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/ruin/space/ancientstation/comm)
"dQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"dR" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Hydroponics"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/hydroponics)
"dS" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/item/cultivator,/obj/item/cultivator,/obj/item/shovel/spade{pixel_x = 4; pixel_y = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/hydroponics)
"dT" = (/obj/machinery/seed_extractor,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/hydroponics)
"dU" = (/obj/structure/table,/obj/item/seeds/harebell,/obj/item/seeds/carrot,/obj/item/seeds/potato,/obj/item/seeds/ambrosia,/obj/item/seeds/poppy,/obj/item/seeds/grape,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/hydroponics)
"dV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"dW" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"dX" = (/obj/structure/table,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 8; name = "Charlie Security APC"; pixel_x = -24; shock_proof = 0; start_charge = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/ruin/space/ancientstation/sec)
"dY" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"dZ" = (/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/ruin/space/ancientstation/sec)
"ea" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = -28},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"eb" = (/obj/machinery/light{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"ec" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/computer/rdconsole/core,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"ed" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/r_n_d/destructive_analyzer,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"ee" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"ef" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/obj/item/stack/sheet/metal/fifty,/obj/item/stack/sheet/glass/fifty{pixel_x = 2; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"eg" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"eh" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/machinery/firealarm{dir = 8; pixel_x = 28},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ei" = (/obj/item/circuitboard/sleeper,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"ej" = (/obj/item/stack/sheet/glass,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "whitehall"},/area/ruin/space/ancientstation/betanorth)
"ek" = (/obj/machinery/door/firedoor/closed,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"el" = (/obj/structure/table,/obj/machinery/recharger,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/ruin/space/ancientstation/sec)
"em" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 9; icon_state = "green"},/area/ruin/space/ancientstation/hydroponics)
"en" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"eo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"ep" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "greencorner"},/area/ruin/space/ancientstation/hydroponics)
"eq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/generic,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"er" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/hydroponics)
"es" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/hydroponics)
"et" = (/obj/structure/rack,/obj/effect/decal/cleanable/dirt,/obj/item/clothing/shoes/magboots,/obj/item/clothing/head/helmet/space/nasavoid/old,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"eu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/ruin/space/ancientstation/sec)
"ev" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ew" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ex" = (/obj/machinery/firealarm{dir = 4; pixel_x = -28},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"ey" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"ez" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"eA" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless{dir = 4; icon_state = "whitehall"},/area/ruin/space/ancientstation/betanorth)
"eB" = (/obj/item/solar_assembly,/obj/item/tracker_electronics,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"eC" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"eD" = (/obj/structure/cable/yellow{d1 = 0; d2 = 2; icon_state = "0-2"},/obj/machinery/power/terminal{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"eE" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/smes/engineering{charge = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"eF" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "greencorner"},/area/ruin/space/ancientstation/hydroponics)
"eG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"eH" = (/obj/machinery/light/small{dir = 4},/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "green"},/area/ruin/space/ancientstation/hydroponics)
"eI" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/ruin/space/ancientstation/sec)
"eJ" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/item/tank/oxygen,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{dir = 9; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"eK" = (/turf/simulated/floor/plating/airless,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"eL" = (/obj/structure/rack,/obj/item/clothing/suit/space/nasavoid/old,/obj/machinery/alarm/all_access{dir = 8; pixel_x = 24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "yellow"; dir = 5},/area/ruin/space/ancientstation/engi)
"eM" = (/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"eN" = (/obj/structure/sign/poster/official/here_for_your_safety,/turf/simulated/wall/rust,/area/ruin/space/ancientstation/sec)
"eO" = (/obj/structure/table,/obj/item/paper,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"eP" = (/obj/structure/chair{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"eQ" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"eR" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/ruin/space/ancientstation/sec)
"eS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"eT" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/r_n_d/protolathe,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"eU" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/r_n_d/circuit_imprinter,/obj/item/reagent_containers/dropper,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"eV" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/obj/item/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"eW" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/optable{name = "Robotics Operating Table"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"eX" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/field/generator,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"eY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"eZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"fa" = (/obj/effect/decal/cleanable/ash,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"fb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Engineering"},/obj/machinery/door/poddoor{id_tag = "ancient"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/powered)
"fc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"fd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/hydroponics)
"fe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"ff" = (/obj/machinery/door/poddoor{id_tag = "ancient"},/obj/machinery/door/firedoor/closed,/obj/machinery/door/airlock/security,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"fg" = (/obj/structure/table,/obj/item/book/manual/security_space_law,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/ruin/space/ancientstation/sec)
"fh" = (/obj/structure/table,/obj/item/pen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"fi" = (/obj/item/apc_electronics,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"fj" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/effect/decal/cleanable/dirt,/obj/machinery/power/apc{dir = 1; name = "Delta Main Corridor APC"; pixel_y = 24; start_charge = 0},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"fk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"fl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"fm" = (/obj/machinery/light{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitepurple"},/area/ruin/space/ancientstation/rnd)
"fn" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/ruin/space/ancientstation/rnd)
"fo" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitepurple"},/area/ruin/space/ancientstation/rnd)
"fp" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/ruin/space/ancientstation/rnd)
"fq" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"fr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"fs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"ft" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/betanorth)
"fu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"fv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"fw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"fx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"fy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"fz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"fA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{name = "Engineering External Access"; req_one_access_txt = "271"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"fB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"fC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"fD" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"fE" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"fF" = (/obj/item/stack/cable_coil{amount = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"fG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"fH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor{id_tag = "ancient"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/powered)
"fI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"fJ" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"fK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance_hatch,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"fL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"fM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/power/apc{dir = 1; name = "Charlie Hydroponics APC"; pixel_y = 24; start_charge = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/hydroponics)
"fN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"fO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"fP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "Charlie Kitchen APC"; pixel_y = -24; start_charge = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/kitchen)
"fQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance_hatch,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"fR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"fS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"fT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/poddoor{id_tag = "ancient"},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/sec)
"fU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"fV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"fW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"fX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/ruin/space/ancientstation/sec)
"fY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/sec)
"fZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"ga" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"gb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"gc" = (/mob/living/simple_animal/hostile/carp,/turf/template_noop,/area/template_noop)
"gd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ge" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Delta RnD APC"; pixel_x = 24; start_charge = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gf" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gg" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/stack/sheet/metal/fifty,/obj/item/stack/sheet/glass/fifty{pixel_x = 2; pixel_y = -2},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gh" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/storage/toolbox/mechanical/old,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gl" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/stack/sheet/glass,/obj/item/stack/sheet/glass,/obj/item/stock_parts/matter_bin,/obj/item/stock_parts/scanning_module,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gm" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/stock_parts/manipulator,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/micro_laser,/obj/item/stack/cable_coil,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"go" = (/obj/item/stack/cable_coil,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/betanorth)
"gp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"gq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"gr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"gs" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/kitchen)
"gt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/kitchen)
"gu" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/cola,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"gv" = (/obj/structure/table,/obj/item/flash,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/ruin/space/ancientstation/sec)
"gw" = (/obj/structure/table,/obj/machinery/light/small,/obj/item/trash/plate,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"gx" = (/obj/structure/chair{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"gy" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/rnd)
"gz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gA" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/power/rad_collector,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"gB" = (/obj/item/solar_assembly,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"gC" = (/obj/structure/cable/yellow,/obj/machinery/power/terminal{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"gD" = (/obj/structure/cable,/obj/machinery/power/smes/engineering{charge = 0},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"gE" = (/obj/machinery/vending/dinnerware,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"gF" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"gG" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"gH" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"gI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"gJ" = (/obj/effect/decal/cleanable/egg_smudge,/obj/machinery/alarm/all_access{pixel_y = 24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"gK" = (/obj/machinery/processor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"gL" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"gM" = (/obj/structure/table,/obj/item/folder/red,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/sec)
"gN" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/ruin/space/ancientstation/sec)
"gO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"gP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"gQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/ruin/space/ancientstation/sec)
"gR" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/glass/bottle/carbon{pixel_x = 5},/obj/item/reagent_containers/glass/bottle/chlorine{pixel_x = -3},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gS" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/glass/bottle/copper{pixel_x = 5},/obj/item/reagent_containers/glass/bottle/ethanol{pixel_x = -3},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"gT" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"gU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"gV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/betanorth)
"gW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot/strong,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"gX" = (/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/obj/item/card/id/away/old/apc,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 9; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"gY" = (/obj/item/clothing/head/welding,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/engi)
"gZ" = (/obj/item/stock_parts/cell{charge = 100; maxcharge = 15000},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"ha" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/kitchen)
"hb" = (/obj/effect/decal/cleanable/flour,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"hc" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"hd" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"he" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/ruin/space/ancientstation/sec)
"hf" = (/turf/simulated/floor/plating/airless,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"hg" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/structure/chair,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hh" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitecorner"},/area/ruin/space/ancientstation/rnd)
"hi" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitecorner"},/area/ruin/space/ancientstation/rnd)
"hj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/machinery/alarm/all_access{dir = 8; pixel_x = 24},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hk" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/glass/bottle/water{pixel_y = 6},/obj/item/reagent_containers/glass/bottle/hydrogen{pixel_x = 5},/obj/item/reagent_containers/glass/bottle/fluorine{pixel_x = -3},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/stack/cable_coil{amount = 2},/turf/simulated/floor/plating/airless,/area/template_noop)
"hm" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"hn" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot/strong,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ho" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "yellow"; dir = 8},/area/ruin/space/ancientstation/engi)
"hp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"hq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"hr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Dining Area"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"hs" = (/turf/simulated/floor/plating/airless,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"ht" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = -28},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"hu" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/broken_bottle,/obj/item/soap/nanotrasen,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hv" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/folder/white,/obj/item/reagent_containers/glass/beaker,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/chem_master,/obj/item/reagent_containers/glass/beaker,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"hx" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{name = "Chemical Storage"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hz" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hA" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/glass/bottle/phosphorus{pixel_x = -5; pixel_y = 6},/obj/item/reagent_containers/glass/bottle/oxygen{pixel_x = 6; pixel_y = 6},/obj/item/reagent_containers/glass/bottle/nitrogen{pixel_x = 6},/obj/item/reagent_containers/glass/bottle/mercury{pixel_x = -5},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hB" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 4},/obj/item/reagent_containers/glass/bottle/lithium{pixel_y = 6},/obj/item/reagent_containers/glass/bottle/iron{pixel_x = 5},/obj/item/reagent_containers/glass/bottle/iodine{pixel_x = -3},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "yellow"; dir = 8},/area/ruin/space/ancientstation)
"hD" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/ruin/space/ancientstation/hydroponics)
"hE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance_hatch{req_one_access_txt = "271"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"hF" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/ruin/space/ancientstation/hydroponics)
"hG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cautioncorner"; dir = 4},/area/ruin/space/ancientstation/engi)
"hH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/ruin/space/ancientstation)
"hI" = (/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"hJ" = (/turf/simulated/floor/plating/airless,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"hK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/ruin/space/ancientstation/sec)
"hL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{name = "Engineering External Access"; req_one_access_txt = "271"},/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/engi)
"hM" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/ruin/space/ancientstation/hydroponics)
"hN" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/toy/nuke,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hO" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hP" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/chem_heater,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"hQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hR" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/firealarm{dir = 4; pixel_x = -28},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hS" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/glass/bottle/welding_fuel{pixel_y = 6},/obj/item/reagent_containers/glass/bottle/radium{pixel_x = 5},/obj/item/reagent_containers/glass/bottle/potassium{pixel_x = -3},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"hT" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot/strong,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/ruin/space/ancientstation/rnd)
"hU" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/particle_accelerator/control_box{icon = 'icons/obj/machines/particle_accelerator3.dmi'},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"hV" = (/obj/effect/decal/cleanable/dirt,/obj/structure/particle_accelerator/particle_emitter/right{icon = 'icons/obj/machines/particle_accelerator3.dmi'},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"hW" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/chair{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"hX" = (/obj/structure/table,/obj/item/kitchen/utensil/fork,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"hY" = (/obj/structure/chair{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"hZ" = (/obj/structure/chair{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"ia" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/saltshaker{pixel_x = -2; pixel_y = 2},/obj/item/reagent_containers/food/condiment/peppermill{pixel_x = 5; pixel_y = -2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"ib" = (/obj/structure/table,/obj/item/trash/plate,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"ic" = (/obj/machinery/light/small{dir = 4},/obj/structure/chair{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/ruin/space/ancientstation/kitchen)
"id" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/alarm/all_access{dir = 8; pixel_x = 24},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"ie" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"if" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ig" = (/obj/effect/decal/cleanable/dirt,/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"ih" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/ruin/space/ancientstation/rnd)
"ii" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/ruin/space/ancientstation/rnd)
"ij" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/glass/bottle/sulfur{pixel_x = 5},/obj/item/reagent_containers/glass/bottle/sugar{pixel_x = -3},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"ik" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/glass/bottle/sodium{pixel_x = 5},/obj/item/reagent_containers/glass/bottle/silver{pixel_x = -3},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"il" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/glass/bottle/silicon{pixel_x = 5},/obj/item/reagent_containers/glass/bottle/sacid{pixel_x = -3},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"im" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/firealarm{dir = 8; pixel_x = 28},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"in" = (/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/atmo)
"io" = (/obj/structure/closet/crate/medical,/obj/item/defibrillator,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/atmo)
"ip" = (/turf/simulated/wall/rust,/area/ruin/space/ancientstation/atmo)
"iq" = (/obj/effect/decal/cleanable/cobweb,/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow{d1 = 0; d2 = 2; icon_state = "0-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"ir" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/smes/engineering{charge = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"is" = (/obj/effect/decal/cleanable/dirt,/obj/item/wrench,/obj/item/wirecutters,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"it" = (/obj/structure/sign/biohazard{icon_state = "radiation"; name = "\improper HAZARDOUS RADIATION"},/turf/simulated/wall/rust,/area/ruin/space/ancientstation/engi)
"iu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"iv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"iw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ix" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"iy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"iz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"iA" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/recharge_station,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"iB" = (/turf/simulated/floor/plating/airless,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"iC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/atmo)
"iD" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"iE" = (/obj/structure/cable,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"iF" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"iG" = (/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/engineering{name = "Backup Generator Room"},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"iH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"iI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"iJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"iK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"iL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"iM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"iN" = (/obj/machinery/door/poddoor{id_tag = "ancient"},/obj/machinery/door/airlock/command{name = "Delta Station Access"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/powered)
"iO" = (/turf/simulated/floor/plating,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"iP" = (/turf/simulated/floor/plating,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"iQ" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "greencorner"},/area/ruin/space/ancientstation/hydroponics)
"iR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"iS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/science,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"iT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"iU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"iV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1; in_use = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"iW" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/machinery/alarm/all_access{dir = 8; pixel_x = 24},/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"iX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"iY" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate/secure/weapon,/obj/item/flash,/obj/item/flash,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"iZ" = (/obj/structure/closet/crate/radiation,/obj/item/stack/sheet/mineral/uranium{amount = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"ja" = (/obj/machinery/power/port_gen/pacman/super,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"jb" = (/obj/structure/table,/obj/item/stack/cable_coil{amount = 15},/obj/item/paper/fluff/ruins/oldstation/generator_manual,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/engi)
"jc" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"jd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"je" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"jf" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"jg" = (/obj/effect/decal/cleanable/dirt,/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"jh" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/effect/decal/cleanable/dirt,/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ji" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"jj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/science,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"jk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"jl" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"jm" = (/obj/effect/decal/cleanable/dirt,/obj/structure/particle_accelerator/particle_emitter/center{icon = 'icons/obj/machines/particle_accelerator3.dmi'},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"jn" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/science,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"jo" = (/obj/effect/decal/cleanable/dirt,/obj/item/twohanded/required/kirbyplants{icon_state = "plant-dead"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"jp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/atmo)
"jq" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance_hatch,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"jr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Cryogenics Room"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"js" = (/obj/machinery/door/airlock/maintenance_hatch,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"jt" = (/turf/simulated/wall/r_wall/rust,/area/ruin/space/ancientstation/proto)
"ju" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/highsecurity{name = "Prototype Laboratory"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/ruin/space/ancientstation/proto)
"jv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/highsecurity{name = "Prototype Laboratory"; req_access_txt = "271"},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/ruin/space/ancientstation/proto)
"jw" = (/turf/simulated/floor/plating/airless,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"jx" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"jy" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/meter,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"jz" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"jA" = (/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"jB" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/space/hardsuit/ancient,/obj/item/clothing/head/helmet/space/hardsuit/ancient,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jC" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/door/poddoor{id_tag = "proto"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jD" = (/obj/machinery/light{dir = 1; in_use = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jE" = (/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/effect/decal/cleanable/dirt,/obj/machinery/power/apc{dir = 1; name = "Delta Prototype Lab APC"; pixel_y = 24; start_charge = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jF" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jH" = (/obj/machinery/alarm/all_access{pixel_y = 24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jI" = (/obj/machinery/light{dir = 1; in_use = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jJ" = (/obj/structure/table/reinforced,/obj/machinery/the_singularitygen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jK" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine/vacuum,/area/ruin/space/ancientstation/atmo)
"jL" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/atmo)
"jM" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"jN" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"jO" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"jP" = (/obj/effect/decal/warning_stripes/southeast,/obj/effect/decal/warning_stripes/northwest,/obj/effect/decal/cleanable/dirt,/obj/structure/showcase/machinery/oldpod,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"jQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/southeast,/obj/effect/decal/warning_stripes/northwest,/obj/effect/decal/cleanable/dirt,/obj/structure/showcase/machinery/oldpod,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"jR" = (/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"jS" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 8},/obj/item/paper/fluff/ruins/oldstation/protosuit,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jT" = (/obj/structure/window/reinforced{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/poddoor{id_tag = "proto"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jU" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jV" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jW" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jX" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/poddoor{id_tag = "proto"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jY" = (/obj/structure/table/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/paper/fluff/ruins/oldstation/protosing,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"jZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/atmo)
"ka" = (/obj/structure/window/reinforced,/turf/simulated/floor/engine/vacuum,/area/ruin/space/ancientstation/atmo)
"kb" = (/obj/machinery/atmospherics/unary/tank/air{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"kc" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"kd" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/crowbar,/obj/item/flashlight/glowstick/random,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"ke" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/deadcockroach,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"kf" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/powered)
"kg" = (/obj/structure/closet/crate,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/spray/weedspray,/obj/item/reagent_containers/spray/pestspray,/obj/item/reagent_containers/spray/cleaner,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"kh" = (/obj/structure/closet/crate/engineering/electrical,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"ki" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/southwestcorner,/obj/effect/decal/warning_stripes/northwestcorner,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"kj" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/northeastcorner,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"kk" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/atmo)
"kl" = (/turf/simulated/floor/plating/airless,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"km" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/solar_assembly,/obj/item/stack/sheet/glass{amount = 30},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"kn" = (/obj/structure/table,/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/item/crowbar,/obj/item/flashlight/glowstick/random,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"ko" = (/obj/structure/table,/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/item/paper/fluff/ruins/oldstation,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"kp" = (/obj/structure/closet/crate/engineering/electrical,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"kq" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 8},/obj/item/paper/fluff/ruins/oldstation/protohealth,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"kr" = (/obj/structure/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"ks" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"kt" = (/obj/structure/table/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/paper/fluff/ruins/oldstation/protogun,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"ku" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/atmo)
"kv" = (/turf/simulated/floor/plating,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"kw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/ruin/space/ancientstation/atmo)
"kx" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "Charlie Main Corridor APC"; pixel_x = 24; start_charge = 0},/obj/structure/closet/crate,/obj/item/storage/backpack/old,/obj/item/storage/backpack/old,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/ruin/space/ancientstation)
"ky" = (/obj/structure/table/reinforced,/obj/item/healthanalyzer/advanced{desc = "A prototype hand-held body scanner able to distinguish vital signs of the subject."; name = "prototype health analyzer"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"kz" = (/obj/machinery/light,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"kA" = (/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; name = "Broken Computer"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"kB" = (/obj/structure/table/reinforced,/obj/item/gun/energy/e_gun/old,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/proto)
"kC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1},/turf/simulated/floor/plating/airless,/area/ruin/space/ancientstation/atmo)
"kD" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine,/area/ruin/space/ancientstation/atmo)
"kE" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/ruin/space/ancientstation/proto)
"kF" = (/obj/structure/transit_tube_pod{dir = 4},/obj/structure/transit_tube/station/reverse{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 1},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"kG" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"kH" = (/turf/simulated/mineral/uranium,/area/ruin/unpowered)
"kI" = (/obj/effect/decal/warning_stripes/southeast,/obj/effect/decal/warning_stripes/northwest,/obj/effect/decal/cleanable/dirt,/obj/effect/mob_spawn/human/oldsec,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"kJ" = (/obj/effect/decal/warning_stripes/southeast,/obj/effect/decal/warning_stripes/northwest,/obj/effect/decal/cleanable/dirt,/obj/effect/mob_spawn/human/oldsci,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"kK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/southeast,/obj/effect/decal/warning_stripes/northwest,/obj/effect/decal/cleanable/dirt,/obj/effect/mob_spawn/human/oldeng,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation)
"kL" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot/strong,/turf/simulated/floor/plasteel{icon_state = "white"},/area/ruin/space/ancientstation/rnd)
"kM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"kN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"kO" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/machinery/door/firedoor,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"kP" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot/strong,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"kQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"kR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"kS" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"kT" = (/obj/effect/decal/cleanable/dirt,/obj/structure/particle_accelerator/particle_emitter/left{icon = 'icons/obj/machines/particle_accelerator3.dmi'},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"kU" = (/obj/effect/decal/cleanable/dirt,/obj/structure/particle_accelerator/fuel_chamber{icon = 'icons/obj/machines/particle_accelerator3.dmi'},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"kV" = (/obj/effect/decal/cleanable/dirt,/obj/structure/particle_accelerator/end_cap{icon = 'icons/obj/machines/particle_accelerator3.dmi'},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"kW" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/obj/item/reagent_containers/glass/bottle/bromine{pixel_x = -3},/obj/item/reagent_containers/glass/bottle/aluminum{pixel_x = 4},/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"kX" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"kY" = (/obj/effect/decal/cleanable/dirt,/obj/structure/particle_accelerator/power_box{icon = 'icons/obj/machines/particle_accelerator3.dmi'},/turf/simulated/floor/plating,/area/ruin/space/ancientstation/deltacorridor)
"kZ" = (/turf/simulated/floor/plating,/turf/simulated/floor/plating/airless/catwalk,/area/template_noop)
"la" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/rnd)
"lb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm/all_access{dir = 4; pixel_x = -24},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"lc" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/alarm/all_access{dir = 8; pixel_x = 24},/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"ld" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"le" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"lf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1; in_use = 1},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"lg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"lh" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
"li" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 0; icon_state = "green"},/area/ruin/space/ancientstation/hydroponics)
"lj" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "greencorner"; dir = 8},/area/ruin/space/ancientstation/hydroponics)
"lk" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/ruin/space/ancientstation/hydroponics)
"ll" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/ruin/space/ancientstation/sec)
"lm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/ruin/space/ancientstation/sec)
"ln" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/ruin/space/ancientstation/sec)
"lo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/ruin/space/ancientstation/sec)
"lp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/ruin/space/ancientstation/engi)
"lq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/ruin/space/ancientstation)
"lr" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/atmo)
"ls" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/blood/oil,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "yellow"; dir = 8},/area/ruin/space/ancientstation/engi)
"lt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"lu" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/ruin/space/ancientstation/sec)
"lv" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/storage/backpack/old,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/ruin/space/ancientstation/sec)
"lw" = (/obj/structure/cable/yellow,/obj/machinery/power/solar_control{name = "Station Solar Control Computer"},/obj/item/paper/solar,/turf/simulated/floor/plasteel{dir = 10; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"lx" = (/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/stack/sheet/glass{amount = 30},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 0; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"ly" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/ruin/space/ancientstation/engi)
"lz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"lA" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "Beta Engineering APC"; pixel_x = 24; start_charge = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/atmo)
"lB" = (/obj/structure/table,/obj/item/clothing/gloves/color/fyellow/old,/obj/item/clothing/gloves/color/fyellow/old,/obj/item/multitool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"lC" = (/obj/structure/rack,/obj/item/storage/toolbox/mechanical/old,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 0; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"lD" = (/obj/structure/rack,/obj/item/stack/cable_coil,/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "Charlie Engineering APC"; pixel_x = 24; start_charge = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/ruin/space/ancientstation/engi)
"lE" = (/obj/machinery/light/small{dir = 4},/obj/machinery/pipedispenser,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/atmo)
"lF" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/ruin/space/ancientstation/sec)
"lG" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/ruin/space/ancientstation/sec)
"lH" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 0; icon_state = "red"},/area/ruin/space/ancientstation/sec)
"lI" = (/obj/structure/table,/obj/item/restraints/handcuffs,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/ruin/space/ancientstation/sec)
"lJ" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/atmo)
"lK" = (/obj/machinery/alarm/all_access{dir = 4; pixel_x = -24},/obj/structure/rack,/obj/item/gun/energy/laser/retro/old{pixel_x = -3; pixel_y = -3},/obj/item/gun/energy/laser/retro/old,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "red"},/area/ruin/space/ancientstation/sec)
"lL" = (/obj/structure/rack,/obj/item/clothing/suit/armor/vest/old,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 0; icon_state = "red"},/area/ruin/space/ancientstation/sec)
"lM" = (/obj/structure/rack,/obj/item/clothing/head/helmet/old,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/ruin/space/ancientstation/sec)
"lN" = (/obj/machinery/alarm/all_access{dir = 8; pixel_x = 24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel/airless,/area/ruin/space/ancientstation/atmo)
"lO" = (/obj/structure/transit_tube/station/reverse,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/arrow,/turf/simulated/floor/plasteel,/area/ruin/space/ancientstation/deltacorridor)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaagcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagcaaaaaaaaaaaaaaaaaaabababababababababababaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacabababaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacadapacapapacaiahajahahaiacakacababaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalamanananananamalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacapcoaccvapacapapapaiaqaoacaraiaiasaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalaMaOauavawaYbhalalaaaaaaaaaaaaaaaaabababaaaaaaaaaaagababacapapacapcKacapapahapahcLaccPcLayasaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazazalaMaOataAaBaCataYbhalazazazaaaaagaaababababaaagaaaaaaagababacaiahaDaoahaDapdsaiapcLahaDcLcLaiasaa
aaaaaaaaaaaaaaaaaaagaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaEalbiaFaGaGaGatataFbjalaIaJazagagaaaaababababaaaaaaaaagaaababacaxahaDahajaDapapapapcLahaDcLcLayasaa
aaaaaaaaaaaaabaaaaaaaaagagagagagagagagagagagagagagagagagazaKaLalbkatataGaNaGatatcWalaPaQazaaaaaaagaaababaaaaaaagaaaaaaababaccoapacaiahacapaiahapahcLaccLcLaiasaa
aaaaaaagaaabababagaaagaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaRaLalbiaSataGaTaGataFbjalaUazazaaaaaaaaaaaacXaaaaaaaaaaaaaaababacapapaccoapacapapapaiajaoacahaoayasaa
aaaVaWaVagababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaXaLaldcdtataGaZaGatdudvalbabbazaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacbcapacdsapacahahaoahahahacbdacababaa
aVbebfaVaVabababaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazbgaLalaldLdMdtaZdudPdxalalblbmazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacbnbnacacacacacacacacacababaaaa
aVbfbfbfbobfbfbfbfbfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazazazazazbpazalambqbqbrbqbqamalazaUbsazazazazaaaaaaaaaaaaaabubububuaaaaababbvbwbxbxbwbvababababababbubububuaa
agbybebebebebfbebebzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAbBbCbDbEbFbGbHbIbGbGbJbGbGbIbHbGbGbKbLbCbCbAaacXaaaaaaaaaabMbNbObPbubububububQbRbRbQbubububububububudHbTbuaa
aVbybebebebebUbebYbWcXcXdecXcXcXcXcXcXcXcXcXdecXcXbXdzbCbZcacbcdcecdcdcdcfbGbGcgbHbGbGbCchbCcibXcXaadkaaaadncXcjclcmcndKcpcqevcpevcrewbOewbObOewcsbOctcudHeybuaa
aVbzbfbfbebebfcwbebzaHaaaaaaaaaaaaaaaaaaaaaaaaaaaabAbCcxbDcyczcAcAcBcBcBcBcBcBcBcAcAcEcFbLcGbCbAaaaacXaaaaaaaabMcIcJbPfwfxcMfycNfzcNfycNfycOcNfycMgWhnbubScQbuaa
aaaVcRcSbecTbfbfbfbfbfaaaaaaagaaagaaagaaaaaaaaaacUcUcUcUcUcVbJcAemepcZcZdacZcZeFeHcAbJdddgdgdgdgdgaaaaaaaaaaaabubububudhdidjdjdjdjdjdmdmdjdjdjdjdjdodqbubububuaa
agbedrbzbebebfaVaVagaWagagaeckaeckaeeKdpagagcUcUcUeJeteLcUcabJcBdwdwdwdwdwdwdwdwcYcBbJbCdgdXdZeldAdgdgaaaaababaaaaaabudBdCdjdDdEdEdFdGdGhTdEdEdFdjewiWbuaaaaaaaa
aVbebedIbebebfdJagagaaaaaaaeckaeckaehfaeaaaacUgXgZdNdOhmcUdQbJdRdwdwdwdSdTdUdwdwdwdRdVdWdgeudYeIeRfgdgaadnabababaaaabueadCdjebecedkLdGdGdEeeefegdjbOehbubububuaa
aVeiejbzekekbfaVaVaaaaaaaaaehfcHeKcDckaeaaaacUhodOeneohpcUhCeqcBhDdwdweresdwdwdwhFcBdVbCdgfXdYdYdYgvdgaaaaaaababaaaabukMkNdjexdEdEdEdGdGdEdEdEdEdjkOkObuezezbubu
aaaVeAbfbebebfbeeBaVaaaaaaaackaahfaackaaaaaaeCdOeDeEdOhGcUhHeGcAhMcZcZiQliljcZcZlkcAeGeMeNeueOePeQgNdgaaaaaaaabubububueSdCdjdEeTeUdEkPdGkLeVeWdEdjbOcJbuezeXeXbu
aaagaaaWbebebzbeaVaVagaaaaaackaahfaackaaeCeCeCdOeYeZfadNfbcafccAcAcAcAcAfdcAcAcAcAcAfebCffgQfhdyeQhedgagagagagbufifjbukQkRdjfmdEdEfndGdGfodEdEfpdjkSkSbuezeXeXbu
aaagaaaVfrfsftfsfufvfvagaghlhshJiBhJhshJhLfBfAfCfDfEfFfGfHfIfJfKfLfLfMfLfNfOfPfOfOfQfRfSfTfUfVfVfWhKfYbtbtbtbtfZgagbhEgdgedjgfggghgigjgkgfglgmgfdjfqfqcubSbSeXbu
aaagaaaagnbebzbegoaVagaaaaaaiOaahfaahfaaeCeCeCgpeYgqdOgrfbcafcgsgsgsgsgsgtgsgsgsgsgsfebCffllgudyeQlmdgagagagagbugwgxbufkfldjgygygygydGgzdjdjdjdjdjkSkSbubSgAgAbu
aaaeagagaVaVbfgBaVaVaaaaaaaaiOaackaahfaaaaaaeCgpgCgDdOlpcUlqeGgsgEgFgGgHgIgJgGgKgLgseGeMdglngMePeQlodgaaaaaaaabubububugOgPdjdGdGkXdGdGgzdjkWgRgSdjgTgUbubSgAgAbu
aaagaaaaaagVaWaaagaaaaaaaacCiPaeckaehfaeaaaacUlsdOdOgYltcUhCdVhagGgGhbhchdhcgGgGgGhadVdWdglueQeQeQlvdgaaaaaaaaaaaaaabufkfldjhghghhgfhihjdjgfgfhkdjkSkSbubShUhVbu
aaagaaaaaaagaaaaagagafaaaaaekZcCjwaeklcDaaaacUlwlxlydOlzcUhqdVhrgGgGgGgGgGhbgGgGgGhrdVbCdglFeQlGlHlIdgaaaaaaaaaaaaaabuhtfldjhuhvgihwlahxhyhzhAhBdjfqfqbujmkTkUbu
aaagaaaaaaagagagaeaeccagagaekvaeckaehfaeagagcUcUcUlBlClDcUdQdVhagGgGhIgGgGgGgGgGgGhadVbCdglKlLlMdgdgdgaaaaaaaaaaaaaabulbkRdjhNhOgfhPgfhQdjhRgfhSdjkSlcbukVkYbubu
aaagaaaaaaagaaaaaaaaaaaaaaagkZaghfagckagaaaaaaaacUcUcUcUcUcVdVgshWhXhYhZiahYhZibicgsdViddgdgdgdgdgaaaaaaaaaaaabubububuieifdjigigihgfiihQdjijikildjfqimbubububuaa
inioipaaagagaaaaaaaaaaaaaaaeiOaeckaehfaeaaaaaaaacUiqirisitcyiugsgshahahahahahahagsgsivcFbLcGbCbAaaaaaaaaaaaaaabMfqiwbPfkfldjdjdjdjdjdmixdjdjdjdjdjiyizbudHiAbuaa
aglriniClrlraaaaaaaaaaaaaaaekZaeckaehfcDaaaaaaaacUiDiEiFiGiHiIiJiKiJiJiJiLiJiJiJiKiJiMbCiNbCkFbXcXcXcXdecXcXcXcjlOfqcnfkiRiSldiUiVldiTleiTlfiTldiSiXfqcudHiYbuaa
inlrlrininlraaaaaeagagagagcHiPaeckaeklcDagagagagcUiZjajbitjcjdjeeMjfbCbCdVbCbCjfeMbCbCjgbLbCbCbAaaaaaaaaaaaaaabMfqfqbPjhjijjlgjkjilgjlkRfqlhfqkSjnfqjobudHbSbuaa
injpipdbininaaaaaaaaaaaaaaaaagaadfaaagaaaaaaaaaacUcUcUcUcUazjqazazazbAbAjrbAbAazazazjsazazazazazaaaaaaaaaaaaaabubububububujtjtjtjtjtjujvjtjtjtjtjtbubububububuaa
inlAipipaainaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazjxjyazazjzbCbCdVbCbCbCazazbgjAazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajtjBjCjDjEjFjGjHjIjCjJjtaaaaaaaaaaaaaa
lrlrjKjLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazjMjNazjObCjPbCjQbCkIbCjRazbgbgazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajtjSjTjUjVjVjGjVjWjXjYjtaaaaaaaaaaaaaa
jZlrkajLaaagaaaaaaaaagaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaazkbkcazkdbCbCbCdVkebCbCkfazkgkhazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajtjtjtkijVjVjGjVkjjtjtjtaaaaaaaaaaaaaa
kkinlEjLagaaagagagagaaaaaaaaagdlagaaaaagagagagagagagagagazazkmazknbCkJbCkKbCjPbCkoazkpazazagagagagagagagagagagagagagagagagjtkqjTjUjVkrksjVjWjXktjtaaaaaaaaaaaaaa
kulJkwjLaaaaaaaaaaaaaaaaaaagaaababaaaaaaaaaaaaaaaaaaaaaaaaazkxazkdbCbCbCdVbCbCbCkfazbgazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajtkyjCjUkzkAkAkzjWjCkBjtaaaaaaaaaaaaaa
kClrkDjLaaagaaaaaaaaaaaaagaaaHabababaaagaaaaaaaaaaaaaaaaaaazazazbCbCjPbCjQbCjPbCbCazazazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajtjtjtjtjtkEkEjtjtjtjtjtaaaaaaaaaaaaaa
aalNipipaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaazazjfbCbCkGbCbCjfazazaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
agipipaaaaaaaaaaaaaaaaaaaaaaabkHababaaaaaaaaaaaaaaaaaaaaaaaaaaaaazazbAazbAazbAazazaaaaaaaaaaaaaaaaaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagcaaaaaa
aaaaaaaaaaaaaaaaaaaagcaaaaaaaaaaaaaaaaaagcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagcaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -692,7 +692,7 @@
"np" = (/obj/structure/sign/vacuum{desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nq" = (/obj/effect/decal/cleanable/cobweb2,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nr" = (/obj/structure/chair{dir = 8},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ns" = (/obj/structure/table,/obj/item/toy/cards/deck,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"ns" = (/obj/structure/table,/obj/item/deck/cards,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nt" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nu" = (/obj/structure/grille/broken,/obj/item/stack/rods,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
"nv" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"})
+43 -38
View File
@@ -1100,7 +1100,7 @@
"avh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "darkred"},/area/security/brig)
"avi" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "darkred"},/area/security/brig)
"avj" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/lobby)
"avk" = (/obj/structure/closet/secure_closet/brig{id = "Cell 4"; name = "Cell 4 Locker"},/obj/machinery/camera{c_tag = "Brig Cell 3"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/prison/cell_block/B)
"avk" = (/obj/structure/closet/secure_closet/brig{id = "Cell 4"; name = "Cell 4 Locker"},/obj/machinery/camera{c_tag = "Brig Cell 4"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/prison/cell_block/B)
"avl" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison/cell_block/B)
"avm" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/prison/cell_block/B)
"avn" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/prison/cell_block/B)
@@ -1404,7 +1404,7 @@
"aAZ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/security/lobby)
"aBa" = (/obj/structure/chair{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/lobby)
"aBb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/lobby)
"aBc" = (/obj/structure/table/wood,/obj/item/toy/cards/deck/black,/turf/simulated/floor/wood,/area/maintenance/abandonedbar)
"aBc" = (/obj/structure/table/wood,/obj/item/deck/cards,/turf/simulated/floor/wood,/area/maintenance/abandonedbar)
"aBd" = (/obj/structure/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/abandonedbar)
"aBe" = (/obj/structure/chair/wood/wings{tag = "icon-wooden_chair_wings (WEST)"; icon_state = "wooden_chair_wings"; dir = 8},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar)
"aBf" = (/obj/structure/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/wood,/area/maintenance/abandonedbar)
@@ -2070,7 +2070,7 @@
"aNP" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aNQ" = (/obj/machinery/light,/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/structure/table/wood,/obj/item/reagent_containers/spray/waterflower,/turf/simulated/floor/wood,/area/mimeoffice)
"aNR" = (/obj/structure/table/wood,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness)
"aNS" = (/obj/structure/table/wood,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness)
"aNS" = (/obj/structure/table/wood,/obj/item/deck/cards,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness)
"aNT" = (/obj/structure/disposalpipe/segment,/obj/structure/chair/stool,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness)
"aNU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Arcade"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet/arcade,/area/crew_quarters/fitness{name = "\improper Arcade"})
"aNV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness)
@@ -3033,7 +3033,7 @@
"bgq" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel,/area/hallway/primary/port)
"bgr" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/hallway/primary/port)
"bgs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness)
"bgt" = (/obj/structure/table/wood,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/entry)
"bgt" = (/obj/structure/table/wood,/obj/item/deck/cards,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/entry)
"bgu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/port)
"bgv" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/secondary/entry)
"bgw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/primary/port)
@@ -3704,7 +3704,7 @@
"btl" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/library)
"btm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkred"},/area/hallway/secondary/exit)
"btn" = (/obj/structure/disposalpipe/segment,/obj/structure/table/wood,/obj/item/dice,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bto" = (/obj/structure/table/wood,/obj/item/toy/cards/deck,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bto" = (/obj/structure/table/wood,/obj/item/deck/cards,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"btp" = (/turf/simulated/floor/plasteel{icon_state = "rampbottom"; tag = "icon-stage_stairs"},/area/hallway/secondary/exit)
"btq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east)
"btr" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/condiment/saltshaker{pixel_x = -2; pixel_y = 4},/obj/item/reagent_containers/food/condiment/peppermill{pixel_x = 2; pixel_y = 6},/turf/simulated/floor/wood,/area/crew_quarters/bar)
@@ -4107,8 +4107,8 @@
"bAY" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bAZ" = (/obj/effect/landmark{name = "blobstart"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
"bBa" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/port)
"bBb" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j2"},/turf/simulated/floor/plating,/area/maintenance/port)
"bBc" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/remains/robot,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
"bBb" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/remains/robot,/turf/simulated/floor/plating,/area/maintenance/port)
"bBc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/blood/oil/streak,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bBd" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
"bBe" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 1; location = "Bridge"},/obj/structure/plasticflaps{opacity = 1},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/bridge/meeting_room)
"bBf" = (/obj/machinery/camera{c_tag = "Locker Room South"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel,/area/crew_quarters/locker)
@@ -4168,7 +4168,7 @@
"bCh" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/disposal)
"bCi" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops)
"bCj" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/port)
"bCk" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/maintenance/port)
"bCk" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bCl" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops)
"bCm" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
"bCn" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
@@ -4251,14 +4251,14 @@
"bDM" = (/obj/machinery/conveyor/southeast{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bDN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bDO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
"bDP" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/port)
"bDP" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/port)
"bDQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bDR" = (/obj/machinery/camera{c_tag = "Cargo Bay Storage"; dir = 8; network = list("SS13")},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bDS" = (/obj/structure/closet/crate/medical,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bDS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bDT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bDU" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/quartermaster/office)
"bDV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; name = "Sci R&D"; sortType = 12},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east)
"bDW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/blood/oil/streak,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port)
"bDW" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bDX" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/office)
"bDY" = (/obj/machinery/camera{c_tag = "Locker Room Toilets"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
"bDZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
@@ -4308,14 +4308,14 @@
"bER" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/specops)
"bES" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/port)
"bET" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/port)
"bEU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port)
"bEU" = (/obj/structure/closet/crate/medical,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bEV" = (/obj/machinery/light{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
"bEW" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
"bEX" = (/obj/machinery/conveyor/west{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bEY" = (/obj/machinery/conveyor/southwest/ccw{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bEZ" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/port)
"bFa" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bFb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bFb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
"bFc" = (/obj/machinery/conveyor/southwest{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bFd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bFe" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor/plating,/area/maintenance/port)
@@ -4324,8 +4324,8 @@
"bFh" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
"bFi" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/port)
"bFj" = (/obj/structure/closet/crate/internals,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bFk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bFl" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/port)
"bFk" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
"bFl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = -24},/obj/effect/decal/cleanable/dirt,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bFm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/quartermaster/storage)
"bFn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
"bFo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/port)
@@ -4412,14 +4412,14 @@
"bGR" = (/obj/structure/closet/firecloset,/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bGS" = (/obj/effect/decal/cleanable/generic,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/port)
"bGT" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/port)
"bGU" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port)
"bGV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port)
"bGW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/port)
"bGX" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/port)
"bGY" = (/obj/item/cigbutt,/turf/simulated/floor/plating,/area/maintenance/port)
"bGU" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bGV" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
"bGW" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/crew_quarters/locker/locker_toilet)
"bGX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bGY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bGZ" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port)
"bHa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
"bHb" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/quartermaster/storage)
"bHb" = (/obj/item/cigbutt,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
"bHc" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/quartermaster/office)
"bHd" = (/obj/structure/sign/vacuum{pixel_x = -32},/obj/machinery/conveyor/south{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bHe" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/eastleft{base_state = "right"; icon_state = "right"; layer = 3; name = "interior door"; req_access_txt = "50"},/obj/machinery/disposal/deliveryChute{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/disposal)
@@ -4492,7 +4492,7 @@
"bIt" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/obj/machinery/door_control{id = "rdlab"; name = "Research and Development Lab Shutters Control"; pixel_x = -24; pixel_y = 0; req_access_txt = "47"},/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/toxins/lab)
"bIu" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/shuttle/escape)
"bIv" = (/obj/structure/table,/obj/item/folder/white,/obj/item/disk/tech_disk,/obj/item/disk/tech_disk,/obj/item/disk/design_disk,/obj/item/disk/design_disk,/obj/item/reagent_containers/dropper,/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/toxins/lab)
"bIw" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/toxins/lab)
"bIw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
"bIx" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/escape)
"bIy" = (/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab)
"bIz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east)
@@ -4689,7 +4689,7 @@
"bMi" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bMj" = (/obj/machinery/light{dir = 8},/obj/machinery/computer/rdconsole/core,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/toxins/lab)
"bMk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bMl" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "qm_warehouse"; name = "Warehouse Shutters"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bMl" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "qm_warehouse"; name = "Warehouse Shutters"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bMm" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/structure/closet,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bMn" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bMo" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/supply)
@@ -4834,7 +4834,7 @@
"bOX" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bOY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"bOZ" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/camera{c_tag = "Research Mech Bay"; dir = 4; network = list("Research","SS13")},/turf/simulated/floor/plating,/area/assembly/chargebay)
"bPa" = (/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j2s"; name = "Cargo Disposals"; sortType = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/quartermaster/office)
"bPa" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/quartermaster/storage)
"bPb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/assembly/robotics)
"bPc" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "paramedic"; name = "Paramedic Garage"},/turf/simulated/floor/plasteel,/area/medical/paramedic)
"bPd" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Research Hallway Entrance"; dir = 2; network = list("Research","SS13")},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/medical/research{name = "Research Division"})
@@ -4863,7 +4863,7 @@
"bPA" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bPB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab)
"bPC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"bPD" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bPD" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/quartermaster/storage)
"bPE" = (/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/structure/table/glass,/obj/item/pen/multi,/obj/item/book/manual/sop_science{pixel_y = -14},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
"bPF" = (/obj/structure/chair/stool,/obj/effect/decal/warning_stripes/east,/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor/plasteel,/area/medical/chemistry)
"bPG" = (/obj/machinery/light{dir = 8},/obj/structure/reagent_dispensers/fueltank/chem{pixel_x = -32},/obj/machinery/chem_dispenser,/turf/simulated/floor/plasteel,/area/medical/chemistry)
@@ -6943,7 +6943,7 @@
"cDA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"cDB" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/misc_lab)
"cDC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/misc_lab)
"cDD" = (/obj/structure/chair/office/light{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/toxins/misc_lab)
"cDD" = (/obj/structure/chair/stool,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/toxins/lab)
"cDE" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/toxins/misc_lab)
"cDF" = (/obj/structure/chair/office/light{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/toxins/misc_lab)
"cDG" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/toxins/misc_lab)
@@ -7662,7 +7662,7 @@
"cRr" = (/obj/machinery/light,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering)
"cRs" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering)
"cRt" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"cRu" = (/obj/structure/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"cRu" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/wall,/area/quartermaster/office)
"cRv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"cRw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "engineering_west_airlock"; name = "interior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering)
"cRx" = (/obj/machinery/processor{name = "Slime Processor"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
@@ -8337,7 +8337,12 @@
"deq" = (/obj/machinery/computer/guestpass,/turf/simulated/wall,/area/medical/reception)
"der" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"des" = (/obj/machinery/light/small{dir = 8},/obj/machinery/field/generator,/turf/simulated/floor/plating,/area/storage/secure)
"det" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/quartermaster/office)
"deu" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/engine/engineering)
"dev" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"})
"dew" = (/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing)
"dex" = (/obj/structure/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/toxins/misc_lab)
"dey" = (/obj/structure/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
"deA" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel,/area/engine/engineering)
"deB" = (/obj/structure/particle_accelerator/power_box,/turf/simulated/floor/plating,/area/engine/engineering)
"deC" = (/obj/item/screwdriver,/turf/simulated/floor/plasteel,/area/engine/engineering)
@@ -9021,13 +9026,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabysbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdbvwblFaPYbrUbwMbvnbvnbvnbvkbwMbrUbqrbvybwKbtIbvsbwPbwQbwRbwSbvsbwUbwTbwVblMbrNbstbwNbwYblMbnKbxabxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibxjbxkbxlbxlbxlbxlbxlbxmbxmbxnbxmbvXbvXbxobxpbxqbxrbxtbxsbxobxubvXbxvbxwbxvbxvbxvbxvbxvbxvbxvbwjbhqbhqaUSbxxbmqaVGbJQbmqbznbmqbzobxDbxCbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbKVbwvbwvbwwbxPbaubxQbxRbxSbxTbxUbxVbxWbycbxZaYPbjDbyZbyabrJboJbsMbyabzlbjDbEFbzpbAwbAjbAzbAybABbAAbACbAjbAjbADbsIbAEboIbrLbrMboIbrKbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabysbrObrObrQbrObrObrObrRbrObrObydaabaSdbwObmSbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbwZbyebtIbvsbymbvsbynbyobvsbyqbypbyrblMbrNbstbwNbskblMbnKbxabxbbytbyubyvbywbzBbxbbyybykbyxbylbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXaZObxvbzabzbbzbbzcaUSaUSaUSaUSbAvbsNbAvbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhaQsbebbjBbzjbjBbzkbzkbjBbzjbjBbebbKVbwvbwvbAxbxPbaubaubaubaubaubtfbaubaubaubauaYPaYPaYPaYQbAGaYQbAHaYQaYPaYPbEFbAIbuHbAJbAKbjRbjRbjRbEFbALbmmbmmbAMbjRbjRbjRbqnbjRbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaMsaMsaMsaMsaMsaMsbzrbzsbqrbqrbqrbqrbqrbqrbztbqrbqrbqrbnKbnKbzwbvsbzubzvbynbzxbvsbzzbzybzAblMbrNbstbwNbnDblMbnKbxabxbbzCbzDbBjbywbBjbxbbyybyzbzEbzFbzIbzHbzKbzJbzMbzLbyFbzRbzNbBsbzPbzQbzQbzPbzUbzSbvXbzTbxqbxqbyPbzWbyPbxqbxqbzVbwbbzXbAbbzYbzZbAabAdbzYbAcbxvbAlbAebAfbAgbAhbAicMKbAkbAkbAkbAkbAkbAkbAmbAobAnbAkbAkbAqbAkbAkbAkbAkbAkbAkbAkbAkbApbAsbArbArbArbArbArbArbAtbAicVsbvhbvhbBtbBrbBNbBrbBPbBrbBUbBQbDkbBrbDubDtbElbDxcVUcVUbEmcVUbEBcVUbENbEHbFzbFwbGjbGhbjRbwDbwCbxzbjRbGobmmbmmbGIbGsbjRbGMbGNbjRblDblAbeCblCbnbblAbeCblCbnbblAbeCblCblDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUlaMEbAVbAUbAXbAWbAWbAWbAWbAYbAZbBablQbnwbBcbBbbvsbvsbvsbBdbyobvsblMblMblMblMbrNbuabyAbBfblMbBhbBibxbbBkbBlbywbBjbCubxbbyybzGbzEbzFbBnbBobBpbzJbBqbzLbyFbzRbDobCAbDsbBubBvbBwbzUbBxbvXbBybyPbxqbBAbBzbBAbxqbyPbBBbxubBCbzYbzYbzZbBDbAdbzYbBEbxvbBFbAfbAfbAgbAhbAibAkbAkbAkbAkbAkbAkbAkbBGbAkbAkbAkbAkbAkbAkbBHbBIbBIbBIbBIaQwbBIbBIbBIbBIbBIbBIaQwbBIbBIbBIaQybDVdcebIsbIzbwtbwtbwtbwtbwtbwubwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbMhbKubRFbNWbomcbudckcVtbjRcVVbzdbzmbjRcWhbmmbmmcWAcWvbjRcWEcWQbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcbBZbCebCbbCbbClbCibARbATaSdaSdaSdaTobCnbCfbCgbCfbCfbCfbCfbChbCtbCjblQblQbCkbCwbvsbwPbCmbCxbzxbvsbCobCpbCoblMblMblMblMbCqblMbCrbCsbxbbCvbCybBjbCzbDRbxbbyybzJbCBbzFbBnbBnbCEbzJbCFbzLbyFbzRbDybCAbDsbCGbCCbBwbzUbCDbvXbCHbCIbxqbCKbCJbCLbxqbCRbCNbCSbCMbCTbCObCPbCQbCUbzYbCVbxvbCYbCXbAfbAgbAhbAibAkbCZbAkbDAbDbbDbbDbbDbbDbbDbbDbaRybAkbAkbAkbAkbAkbDabAkaRAaRCaRBaRCaRCaRCaREaRHaRFaSFaROaSHbFsaSKaSIaTHaSVbwvbwvbwvcXfbDpbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbDrbDqcXhcXgcXjcXibmmbGhbjRbwDbwCbxzbjRbGobmmbmmcXlcXkbjRbGNbGMbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbDGbCbbCbbCbbCbbCbbCbbCbbDHbDCaOQbDCaSfbDIbCfbDEbDJbDLbDKbDMbChbDObDNbDQbDQbDWbKHbvsbvsbvsbynbDYbymblQblQblQblQbDPbnKbnKbCsbnKbCrbCsbxbbDSbDTbDZbFjbywbxbbDUbzJbEbbzFbBnbBnbEfbDXbEjbzLcXqbxlbHpbHobzPbzPbzPbzPbzUbEcbvXbEdbEebvXbvXbvXbvXbvXbvXbvXbxubxvbErbEgbEhbEibEsbEkbEvbxvbEwbEnbEnbEpbEpbEpbEpbEpbEpbEqbEybEpaTLaTKaTMbEpbNebEobEobEobEobEobEubEubEuaTNbEubEubEubEubEubEuaTObEubEubEubteaTPaTQbwvbuxbuxbEAbEAbEAbEAbEAbEJbDqbDqbDrbDqbwvbDqbDqbDqbDqbEMbEDbEDbEDbEDcXncXibmmbAJbEFbjRbjRbjRbAKbALbmmbmmbAMbjRbjRbjRbqnbjRbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbELbELbCbbELbELbELbARbERaSdaSdaSdaTobEVbCfbEYbEXbEXbEXbFcbChbnKbFfbESbETbEUbFgbvsbwPbEWbynbFhbymbFibEZbFabFbbFlbFdbFdbFebFdbFnbFobxbbFkbFpbFqbFrbKQbFmbNsbyBbFubFtbBnboxbFybvQbEjbzLcYPbxlbwebFvbJabFFbFIbFGbFMbxmbxmbFBbFCbFDbFEbFNbFEbFPbFCaaabFHbxvbFRbFJbFKbFLbEsbzYbFSbxvbFUbFObFWbEpaTTaTSaTVaTUaTYaTWaUPaUObLzbGabBLaVxaVIaVyaWOaWIaWSaWRbEuaYkaYoaYlaYraYqaZUaZTbobbbybuOaZTaZTbzibGrbGrbBJbGrbwLbwLbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbDqbEMbEDbGKbGLbGKbEDbGCbGDbEDcXocXibmmbmmcXscXpcYdcXpcYebmmbmmbmmbwWbAEboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbBgbmSbHabCfbHdbCfbHebIHbHfbGQbChbHgbGSbGTbGUbFgbvsbvsbvsbvsbvsbvsbGVbGWbGXbGYbGZbxbbxbbxbbxbbxbbxbbxbbMlbxbbxbbxbbHbbxbbHcbAFbHjbBnbBnbBnbHnbDXcZfbzLcZjbxlbBebFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbHvbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEpbCWbBMbDfbDfbDfbDfbDfbDfbDfbDebDhbDgbDjbDibSnbDlbDnbDmbEubEtbEzbExbECaZTbEEaZTbFQbEIbuObFTbFXbFVbGrbIfbFYbIgbFZbBmbIabGcbIdbIdbImbIcbIlbInbEAbIibIrbIkbEDbItbIwbIvbIobIpbIybEDcYhcXibmmbmmbmmbmmcYmcYkcYkcYkcYkcYkcYnbqnbjRbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaToaSfbIGbCfbJjbIBbIIbIDbIDbIJbILbIKbIMbIMbIObINbDQbDQbDQbDQbDQbDQbIQbIPbIPbIRbITbxbbIVbIUbIYbIXbISbIZbJfbJbbxbbIWbJibyBbyCbDXbHjbBnbBnbKCbzJbzJbJmdaQdbnbJcbJdbJebJpbJgbJhbJsbJtbJkbJlbJubHsbJnbJvbJnbJvbJwbHsbHtbJqbJrbJybJxbJDbJzbJGbJEbJHbJrbJIbFObFObEpbDcbBMbGdbDdbGfbGebGebLybDebDebDebGtbGxbGvbSnbDlbGzbGybEubHEbHJbHGbHLbHKbHMaZTbFQbEIbuObFTbFXaZTbGrbHNbHQbHPbHSbHRbHUbHTbHVbJYbJYbKhbJYbIbbKbbGbbKdbGkbKfbKqbKrbKibKibKibKjbEDcYpcYocYqcYqcYqcYrcYvcYscYwcYwcYwcYxbBKbAEboIbrMbrMboIbDBdsldsldsldsnbicaaabicbDDbDwbDwbDFbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbGmbGlbKpaMdaMdaMdbmSaSfaSfbCfbKPbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbPabzFbKIbKKbKJbKMbKLbKObFxccYccZbKSbKRdbYbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbLrbIechhbGibGgbGibEpbIhbGqbJAbIjbJBbJKbJTbJPbJXbJWbKabJZbKcbOUbEubEubEubEubEubKebKgaZTbFQbEIbLjbFTbFXaZTbGrbLNbLEbLPbLmbLlbLIbLTbLobLLbLMbLUbLObKkbEAbGRbLRbKnbEDbKobKybKxbIpbLWbNCbEDcYhbmmcYObjRcZkcYYcZlboDcZmbjRcZnbuHcZobqnbjRbjRbjRbjRaYUdsqdsldslbEObicaaabicbEPbDwbDwbEQbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUlaMEbAVbAUbAXbAWbAWbAWbAWbAYbAZbBablQbnwbBbbzwbvsbvsbvsbBdbyobvsblMblMblMblMbrNbuabyAbBfblMbBhbBibxbbBkbBlbywbBjbCubxbbyybzGbzEbzFbBnbBobBpbzJbBqbzLbyFbzRbDobCAbDsbBubBvbBwbzUbBxbvXbBybyPbxqbBAbBzbBAbxqbyPbBBbxubBCbzYbzYbzZbBDbAdbzYbBEbxvbBFbAfbAfbAgbAhbAibAkbAkbAkbAkbAkbAkbAkbBGbAkbAkbAkbAkbAkbAkbBHbBIbBIbBIbBIaQwbBIbBIbBIbBIbBIbBIaQwbBIbBIbBIaQybDVdcebIsbIzbwtbwtbwtbwtbwtbwubwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbMhbKubRFbNWbomcbudckcVtbjRcVVbzdbzmbjRcWhbmmbmmcWAcWvbjRcWEcWQbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcbBZbCebCbbCbbClbCibARbATaSdaSdaSdaTobCnbCfbCgbCfbCfbCfbCfbChbCtbCjblQblQblQbCwbvsbwPbCmbCxbzxbvsbCobCpbCoblMblMblMblMbCqblMbCrbCsbxbbCvbCybBjbCzbDRbxbbyybzJbCBbzFbBnbBnbCEbzJbCFbzLbyFbzRbDybCAbDsbCGbCCbBwbzUbCDbvXbCHbCIbxqbCKbCJbCLbxqbCRbCNbCSbCMbCTbCObCPbCQbCUbzYbCVbxvbCYbCXbAfbAgbAhbAibAkbCZbAkbDAbDbbDbbDbbDbbDbbDbbDbaRybAkbAkbAkbAkbAkbDabAkaRAaRCaRBaRCaRCaRCaREaRHaRFaSFaROaSHbFsaSKaSIaTHaSVbwvbwvbwvcXfbDpbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbDrbDqcXhcXgcXjcXibmmbGhbjRbwDbwCbxzbjRbGobmmbmmcXlcXkbjRbGNbGMbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbDGbCbbCbbCbbCbbCbbCbbCbbDHbDCaOQbDCaSfbDIbCfbDEbDJbDLbDKbDMbChbDObDNbDQbDQbBcbKHbvsbvsbvsbynbDYbymblQblQblQblQbDPbCkbCkbDSbCkbDWbDSbFmbEUbDTbDZbFjbywbxbbDUbzJbEbbzFbBnbBnbEfbDXbEjbzLcXqbxlbHpbHobzPbzPbzPbzPbzUbEcbvXbEdbEebvXbvXbvXbvXbvXbvXbvXbxubxvbErbEgbEhbEibEsbEkbEvbxvbEwbEnbEnbEpbEpbEpbEpbEpbEpbEqbEybEpaTLaTKaTMbEpbNebEobEobEobEobEobEubEubEuaTNbEubEubEubEubEubEuaTObEubEubEubteaTPaTQbwvbuxbuxbEAbEAbEAbEAbEAbEJbDqbDqbDrbDqbwvbDqbDqbDqbDqbEMbEDbEDbEDbEDcXncXibmmbAJbEFbjRbjRbjRbAKbALbmmbmmbAMbjRbjRbjRbqnbjRbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbELbELbCbbELbELbELbARbERaSdaSdaSdaTobEVbCfbEYbEXbEXbEXbFcbChbnKbFfbESbETbETbFgbvsbwPbEWbynbFhbymbFibEZbFabFbbFkbFdbFdbFebFdbFnbFobxbbFlbFpbFqbFrbKQbFmbNsbyBbFubFtbBnboxbFybvQbEjbzLcYPbxlbwebFvbJabFFbFIbFGbFMbxmbxmbFBbFCbFDbFEbFNbFEbFPbFCaaabFHbxvbFRbFJbFKbFLbEsbzYbFSbxvbFUbFObFWbEpaTTaTSaTVaTUaTYaTWaUPaUObLzbGabBLaVxaVIaVyaWOaWIaWSaWRbEuaYkaYoaYlaYraYqaZUaZTbobbbybuOaZTaZTbzibGrbGrbBJbGrbwLbwLbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbDqbEMbEDbGKbGLbGKbEDbGCbGDbEDcXocXibmmbmmcXscXpcYdcXpcYebmmbmmbmmbwWbAEboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbBgbmSbHabCfbHdbCfbHebIHbHfbGQbChbHgbGSbGTbGVbGUbGWbGWbGWbGWbGWbGWbGYbGXbIwbHbbGZbxbbxbbxbbxbbxbbxbbxbbMlbFmbFmbFmbPDbPabHcbAFbHjbBnbBnbBnbHnbDXcZfbzLcZjbxlbBebFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbHvbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEpbCWbBMbDfbDfbDfbDfbDfbDfbDfbDebDhbDgbDjbDibSnbDlbDnbDmbEubEtbEzbExbECaZTbEEaZTbFQbEIbuObFTbFXbFVbGrbIfbFYbIgbFZbBmbIabGcbIdbIdbImbIcbIlbInbEAbIibIrbIkbEDbItcDDbIvbIobIpbIybEDcYhcXibmmbmmbmmbmmcYmcYkcYkcYkcYkcYkcYnbqnbjRbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaToaSfbIGbCfbJjbIBbIIbIDbIDbIJbILbIKbIMbIMbIObINbDQbDQbDQbDQbDQbDQbIQbIPbIPbIRbITbxbbIVbIUbIYbIXbISbIZbJfbJbbxbbIWbJicRubyCbDXbHjbBnbBnbKCbzJbzJbJmdaQdbnbJcbJdbJebJpbJgbJhbJsbJtbJkbJlbJubHsbJnbJvbJnbJvbJwbHsbHtbJqbJrbJybJxbJDbJzbJGbJEbJHbJrbJIbFObFObEpbDcbBMbGdbDdbGfbGebGebLybDebDebDebGtbGxbGvbSnbDlbGzbGybEubHEbHJbHGbHLbHKbHMaZTbFQbEIbuObFTbFXaZTbGrbHNbHQbHPbHSbHRbHUbHTbHVbJYbJYbKhbJYbIbbKbbGbbKdbGkbKfbKqbKrbKibKibKibKjbEDcYpcYocYqcYqcYqcYrcYvcYscYwcYwcYwcYxbBKbAEboIbrMbrMboIbDBdsldsldsldsnbicaaabicbDDbDwbDwbDFbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbGmbGlbKpaMdaMdaMdbmSaSfaSfbCfbKPbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBdetbzFbKIbKKbKJbKMbKLbKObFxccYccZbKSbKRdbYbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbLrbIechhbGibGgbGibEpbIhbGqbJAbIjbJBbJKbJTbJPbJXbJWbKabJZbKcbOUbEubEubEubEubEubKebKgaZTbFQbEIbLjbFTbFXaZTbGrbLNbLEbLPbLmbLlbLIbLTbLobLLbLMbLUbLObKkbEAbGRbLRbKnbEDbKobKybKxbIpbLWbNCbEDcYhbmmcYObjRcZkcYYcZlboDcZmbjRcZnbuHcZobqnbjRbjRbjRbjRaYUdsqdsldslbEObicaaabicbEPbDwbDwbEQbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbLYbLXbKpbLZbLZbMabMbbLZbMcbCfbMebIBbNSbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMdbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObLschhbJFbJCbJJbIqbJLbDebLvbLubHObLAbLBbEobEobLDbLFbDlbLQbLKbLVbLSbMYbMXbLKbMZbNdbNabFTbEIbNfbFTbEIaZTbGrbNgbHXbHXbLmbNhbNEbNibNjbNHbNIbNJbNObNNbEAbMfbLRbMibEDbMjbNPbMtbIpbIpbNUbEDcZpbmmcZDbAKcZkbDvcZGcZEcZmbAKcZIcZHcZJbEGaaaaaaaaaaaabicdsudswdsvdsvbicaaabicbGObDwbGObDwbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbNQbKzbOibOhbOhcdabOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbFAbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPbOIbOJbOKbOLbOKbOSbONbNkbFObNlchhbNnbLwbNpdeqbNmbLxbNqbNobHObLAbNrbEobNDbNAbNGbNFbNLbNKbORbNMbOVbOTbLKbOWaZTbOXbFQbEIbOYbFTbFXbFVbGrbOZbLEbLPbUlbNBbNEbPnbPbbPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDcZpbmmcYObjRcZkbmmcZGbmmcZmbjRcZnbmmcZKbEGaaaaaaaaaaaabIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbNRbPObPPbHhbHhbHhbPObKzceEbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebHibBnbBnbPYbDXbOwbOubQhbHqbJObQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObKNbPcbPebLtbPfbEpbPgbNybDebPhbHObLAbPmbEobPGbPFbQabPKbQAbNKbQCbQBbQEbQDbLKbFXaZTbQFbQHbQGbQIbNdbQJbNdbQLbQKbQKbQKbQNbQMbIabRkbPbbPobRlbRhbPqbRmbEAbOvbOvbPdbEDbRpbRybRqbRzbIpbREbEDcZTcYmcYkcZVdaacYkdaldakbmmdambmmdandaqbEGaaaaaaaaaaaaaaabIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9035,7 +9040,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbNTbKzbPPbHhbHhbHhbKzbKzbJfbKAbQfbRobxbbTAbBnbTBbQdbTvbDXbRObBnbBobBnbPWbOwbTybTzbRVbQbbTCbTEbTDbTKbTFbTLbTGbTHbTIbTJbTJbTNbTMbTPbFCbFCaaabOGbSibTQbTObTSbTRbTVbTTbTWbTUbTXbFObRsbQVbSobRtbSrbEpbIqbStbIqbEpbPvbPrbPxbOUbOUbSwbSybSxbOQbLKbNKbSzbSAbLKbLKbWdbSCbSBbSEbSDbWgbSFbSHbSGbGraZSbpDbSIbRUbRUbIabSJbUEbUFbIabSKbPqbUHbIabUKbUMbULbUObUNbZNbpvbsBbqbbRnbtscjTcjYcOCbKlbigbaNdaEbaObaGbaTbaQbaRbaHbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbOgbKzbPPbKzbKzbywbKzbKzbJfbCybQfbRWbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbQbbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObSMbSubSObSNbSPbSvcrAbSLcrAcrAbSRbSQbSUbSSbwFbXAbSXbRtbXAbThbXAbJRcuobJSbTZbTYbUabUabUcbUbbWgbUdbUfbUdbWibWibWjbWjbWjbWjbIabIabIabIabIabWlbWnbLIbIabNVbNZbNXbWqbWqbPibOabLRctvbPkbPjcacdlDbGGdaSbigdaZdbedbddbkbaTbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGbRAbRAcuHcuHcuHbRGbRAbRAbRGbWIbWJbWKbRAbWMbWNbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWPbTrbTqbTrbNRbTubWRbKzbKzbKzbTubKzbJfbKAbQfbTsbxbbWWbBnbzFbQdbBnbzJbLJbBnbBnbWUbDXbOwbTybWVbRVbTxbMGbXbbWYbWZbXabXdbMHbXcbXebXgbXfbXibXhbXjbFCaaaaaaaaabSibXpbXkbXlbXlbXmbXnbXobSibXrbXqbUhbPUbUjbUibUrbUkbUnbUebUmbUmbUpbUobUmbUmbUqbUmbUmbUsbUnbUmbUmbUGbNubNtbUwbUvbUBbUybZfbUDbXNbUIbUIbUIbUJbWgbLRbUPbWqbWqbXYbXXbWqbXZbYbbYabYdbYcbWqbPlbYgbYfbYibYhbYlbYjbYjbYjbYjbYjcacdlDdbmcAUbigdbodbpbclbcIbaTbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGbRAbRAbRAbRAbRAbYtbRAbRAbRGbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWQbUgbYwbUgbYybYxdcYdcYdcYdcYdcYbUCbYEbYDbQfbVpbxbbYGbYIbYHbYNbYJbYKbYLbYLbYLbYMbYMbYObTybYRbWSbQbbMGbYTbYSbYVbVvbYWbMHbYUbYXbZdbTJbZebQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZgbZJbURbUQbUTbUScyTcyTbUVbUUbUXbUWbUWbUYbUZbUZbVabUZbUZbUSbUVbUZbVcbVbbVdcyTbVPbVjbVRbVQbVTbVSbVVbVUbVXbVWbVZbVYbWcbWbbWcbWcbWebUNbZMbUNbZNbUNbZPbZObZObPCbPDbZRbZUbZTbZXbZVbVobZWbYzbYjdbwdbvdbxbGGdbhbcHdbHbgbbgkbaTbgcbgmbaTbaTbgdbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGbRAbRAbRAbRAbRAbYtbRAbRAbRGbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWQbUgbYwbUgbYybYxdcYdcYdcYdcYdcYbUCbYEbYDbQfbVpbxbbYGbYIbYHbYNbYJbYKbYLbYLbYLbYMbYMbYObTybYRbWSbQbbMGbYTbYSbYVbVvbYWbMHbYUbYXbZdbTJbZebQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZgbZJbURbUQbUTbUScyTcyTbUVbUUbUXbUWbUWbUYbUZbUZbVabUZbUZbUSbUVbUZbVcbVbbVdcyTbVPbVjbVRbVQbVTbVSbVVbVUbVXbVWbVZbVYbWcbWbbWcbWcbWebUNbZMbUNbZNbUNbZPbZObZObPCdevbZRbZUbZTbZXbZVbVobZWbYzbYjdbwdbvdbxbGGdbhbcHdbHbgbbgkbaTbgcbgmbaTbaTbgdbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcafcagcahcaibRAbRGbRAbRAbRGbRAcancakcaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbxbbxbbKBbKBbKBbKBbKBbxbbxbbKBbKBbKBbxbcamcamcamcascambYMcaocapcaqcatbYMbOwbTycawbMEbMEbMGbMGbMGbMGbMGbMNbMHbTJbTIcaubTJcavcaxbFCbFCbFCbFCbFCbSibSjbSibSibSibSibSibSibSibNvbFObWfbSubWkbWhbWobWmbWscaAbWubWtbWxbWwbXGbWubWabWybWabWybWabWybWabWzbWAcrAbTZbWBbWDbWCbWFbWEbXNbXsbXubXtbXvcbdcbdcbecbdcbfcbicbfcbfcbfcbhcblcbjcbjcbkcbmcbocbnbZUcbpcbrcbqbYAcbsbYBbYjdbObGGbGHbGHaYSaYSaYSaYSaYSaYSaYSaYSaYSaYSaYSdaCdaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQbXwcbVcbTcbUcbWcbYcbXbXxcbZcccccbccfccdcceccgccjcchccibXybXzcclccmbEnccnbFOccoccpccrbFObXBbQVbXCcaAcaAbXDbXDcaAbXFbXEbZhbXHbZibXIbWabXKbXMbXLbXMbXObWabXPbWAbXRbWdbXSbXUbXTbXSbXSbWibXVbXWbXQbYkcbdccTccSccVccUccXccWcdbcbfceFchSchTcbjcbjcdccbocddcdfbPEcdhcdgcdicbscdkbYjcdndfcbZZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwbNwcdFbTybTybYmbYncdIcdJcclcdObYobYpcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdNcdScclccmbEncdVcdUcdXbYqcdZcdYbFOchfbYrcaAbZjbYsbYsbXJbZhbZkbZnbZlcaBbZmbZpbZobZrbZqbZtbZsbZvbZubWAcuvchrbZwbZybZxbZAbZzbZBccQbXWbXQbZBcbdcezceyceBceAceDceCceGcbfcjMchScjNcjNcbjceHceJceIceLceKceNceMbGnceOceSbYjcaccLhbGpdbPdbPdbPdbZdbXdbXdcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9047,14 +9052,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIbPIbPIbPIbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabafOcgQcngcngcgQcngcngcgQaaaaaacgFcnhcnicnjcgFbYPbYPbYPcamcnmcnlcnocnocnocamcamcgQcnncnpcnrcnqcgQcnscntcgSclRcktcktcktcnvcgWckvckwckwcnuchHcgWcpicHDcnAchcchcchcchcchcchIchcchccnCdgCcsLcsLcsLchfcABchJcsLcbvchfchLchKciEchNcfEciFcfGcfFcfIcfHciOciJciQciPcDfciRciScDfciUbSVchrciVciXciWchrchrcepciYcjaciZclpcjbcodcoicoicoicodcogcodcodconcoocmVcmVcbjcokclscbncpZcqacqecqgcorcopcoqcoqcotcoscovcoucoxcowcozcoycoCcoAcoBcoDcoEcoFcoHcoGcoIaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacidciecbwcbScbSckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacgQcoKcoLcgQcoKcoLcgQaaaaaacoOceZcoNceZcoQaaaaabaaacamcamcamcamcamcamcamcoPcgQcoScoRcoUcoTclPcoVcoWcgScoYcoXcpfcktcjccgWcjdckwcjfcjecjgcgWcjicjhcjkcjjcpqcpqcpqcpqcjlcpmcppcpocjncjmcjmcjocjqcjpcjscjrcjtchfcjwcjucjycjxcjAcjzcjCcjBcjCcjDckrcjEckxcksckzckyckAcDfckBcuvckCcjvckDcmDckFckEciYckJckLcgacpRcpTcpRcpUcpWcpVcpRcpXcpYcodcqicwLchTcbjcbjcqccqbcqfcqdcwMcxacIpcqhcqlcqjcqkcqncqmcqpcqocqtcqqcqrcqqcqscqrcqrcqucqwcqvcqycqxcqCaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacieciecdHckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOaaaafOcgQcqzcoLcgQcqzcoLcgQaaaaaaaabaabaabaabaabaabaabaabaabcgQcoLcqAcqBcgQcqEcqGcgQcqHcgQcgQcqFcgQcgQciCcgScqRcqIcqJcqKcqLcgWckMcqOcqScqQcqTcgWckOckNckPcJZcsDcsDcsDcsDcsDcrdcqZcrackQchfcucckRcsLckSckTcsLcsKchfckVckUckXckWcCWckYclackZclbcDfcldclcclfclecDfcDfcDfcDfclhclgckCchCcljclicllclkciYcmdcgacmfcpRcrNcrQcrLcrMcrLcrTcrOcrPcodcbjcrUcbjcbjcrRcrSclsbLRbPtcgscrVcgscgscrWcrYcrXcsacrZcsdcsbcsfcsecsgcsecsgcshcsgcsicgEcsncrwcsqcsraabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacieckbckbckbckbckbckbcdKckbcmzckbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcsjafOaabaMraMrafOcgQcgQcqFcgQcgQcqFcgQcgQcgQcngcngcngcgQcgQcgQcgQcgQcgQcgQcoLcskcslcgQcsmcgQcgQcsucgQcsocspcoLcgQcqPcgScsycsxcszclRcmgcgWcswckvcsEcsCcmhcgWcsIcsHcmicsDcsDcsNcsOcsGcmjcsQcsJcsKcsLcsUchfcmkcsLckSckTchfchfchfcCWcCWcmlcCWcCWcxhcnwcmmcxhcDfcDfcDfcDfcDfcDfcmncmpcmocmrcmqcmtcmscmvcmucmxcmwciYcgacgaaqEcpRcttctxctwctyctwctActzcrLctuctvctBbLRctCbLRcrSclsbLRbIictFctHctGcgscgscgscgscgsctIcqkctKctDcsccqkctEcqkclucqkctLcgEctOctQctPcgEaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaciecmCcmCcmCcmCcmCcmCcmEckbcoJcmCcmzckbckbckbckbcieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcsjafOaabaMraMrafOcgQcgQcqFcgQcgQcqFcgQcgQcgQcngcngcngcgQcgQcgQcgQcgQcgQcgQcoLcskcslcgQcsmcgQcgQcsucgQcsocspcoLcgQcqPcgScsycsxcszclRcmgcgWcswckvcsEcsCcmhcgWcsIcsHcmicsDcsDcsNcsOcsGcmjcsQcsJcsKcsLcsUchfcmkcsLckSckTchfchfchfcCWcCWcmlcCWcCWcxhcnwcmmcxhcDfcDfcDfcDfcDfcDfcmncmpcmocmrcmqcmtcmscmvcmucmxcmwciYcgacgaaqEcpRcttctxctwctyctwctActzcrLctuctvctBbLRctCbLRcrSclsbLRbIictFctHctGcgscgscgscgscgsctIdewctKctDcsccqkctEcqkclucqkctLcgEctOctQctPcgEaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaciecmCcmCcmCcmCcmCcmCcmEckbcoJcmCcmzckbckbckbckbcieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOafOcngcoLcoLcoLcoLctMctNcoLcoLcoSctUctUctVctUctUctUctUctUctUctUctUctUctUctUctUcoRcgQcskcqzctWcgQcqPctRctRctRctRctRctRcgWcgWcgWcgWcgWcgWcgWcuactXcmBcoMcpgcqDcmFcmFcmGcuicsJcmHcsLcubcuccmIcsLckScmJchicsLcsLcsKcCWcmLcmKcmNcCWcHWcnxcnBcnzcnEcnDcnGcnFcnIcnHcnKcnJcnMcnLckCcnNcnPcnOcnRcnQciYbQXcgacgacpRcuGcnTcnScnUcrLcuKcuJcuOcuLcuScuRcuVbLRcuXcrSclscuMbIibPAcuNcuYcuPcuQbGGbGGcgscvccvecuTcuUcvfcuWcvgcvicuZcvacvbcgEcvjdoKdoFcvraaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaacvscjZcjZcjZcjZcjZcjZcjZcvhcvtckbckbckbckbcvvckccieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabaabafOcngcvkcvlcvmcoLcoLcvncoLcoLcsucgQcgQcgQcgQcgQcgQcqFcgQcgQcgQcgQcvocvocvocvocvocvocvocvocvocgQcqPcvpaaaaaaaaaaaacvqcvwcvzcvycvucvAcvDcvxcvJcvGcvKcvBcvCcvLcvEcvEcvFcvMcvHcvIcvIcvIcvIcvNcvIckScmJchfcnVcKOdercCWcnXcnWcnZcnYcobcoacoccoccofcoecpacoZcpccpbcpecpdcphciTciYciYciYciYciYciYciYciYcpkcpjcpRcwjcplcwqcptcpncpvcpucpRcpRbIicwpbIibIibIicwvcwJcwwbIibGGcuNcwKcwucuQcuQcuQcgscgscgscgscgscgscgscgscgscgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaciecbScbScbScbScbScbScssckbcbwcbScstckbckbckbckbcieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcgQcwxcwxcwxcwxcwxcwxcwycwxcsucwzcgQcoLcwAcwBcwCcoLcwCcwDcwEcwBcvocwFcwFcvocwGcvocwHcwIcvocoLciCcngaaacwPcwUcwQcwVcwNcwOcwWcwXcwRcwScwTcwZcwYcxbctJcxdcxccxfcxecxjcxgcvHcxkcxmcxmcxmcxocvIckScmJchfdgmcQkcQkcQkcQkcpwcpxcQkcpycpycpycpycQkcpzcpBcpAcQkcQncQncpCcpDcuocukbQXbQXcpEbQXbQXbQXbQXbQXcpFcpRcpRcpRcpRcpGcpRcpRcpRcxIcpHcpIcxKcxUcxMcxNcxOcxWcxQcxNbGGcuNcylbGGbGGcxScxZcyactFbGGbGGbGGbGGbGGbGGbGGcxVcymbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacieckbckbckbckbckbckbcdKckbcstckbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxXcxYcxYcxYcxYcxYcxYcyocyncybcyccydcyecyfcwycsucygcgQcoLcoLcwBcoLcoLcoLcwDcqBcwBcvocwFcyicwIcwIcyjcwIcykcvocypciCcngaaacyrcytcyscyvcyqcwOcywcyAcyycyucvxcyCcsHcyEcvBcyxctYcyFctYcyzcyGcyBcyHcyDcyDcyDcyIcvIckScmJchfcQkcQkcpKcpJcQkcQkcQkcQkcpMcpLcpOcpNcQkcQkcpPcQkcQkcTBdgmbQVcpScuvcqMcqMcqMcqMcqMcqMcHfbQXcqWcqUcqXcqXcqXcqYcrccrbcrbcrfcrbcrbcrbcrgczmczmcricrhcrjczwczzczyczBczAczCczCczDczCczCczCczCczGczIczCczCczCczOczLbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacieciecdHckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczEczFczFczFczFczPczHczQczJczKczKczRcwxcsucoLcqFcoLcoLcoLcoLcoLcoLcoLcoLcoLcvocvocwIczMcwIcvocwIczMcvoczNcqPcngaaacyrczTczSczVczUczXczWczYczUczUcAacAccAbcAdczZczZcAecAfctYcAhcAgcyBcyDcyDcyDcyDcAicvIcrkcmJcrlcQkcrmcrocrncUTcrpcrrcrqcrtcrscrvcrucQncrxctecrycQkcrzcsLcukcrBcuvcrEcrCcrGcrFcrHcqMcqMbUxcrJcrIcrKcrKcrKcrKcsBcsAcsMcsFcsRcsPcsPcAKcAKcAJcALcAVcAYcAWcAPcAPcAQcAZcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAScBecAUbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacnkcieciecmCcmCckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicBgcAXcBjcAXcBmcBacBbcBccBdcBncwxcsucgQcgQcBfcngcngcngcngcngcngcngcBocvocwIcwIcwIcwIcBhcwIcwIcvocygciCcngaaacyrcBrcBqcBkcBlcwOcBscBucBtcBpcvxcyCcsHcnycBvcsDcBzcsDcvBcvBcvBcBDcBBcyDcyDcBFcBEcvIckScmJcsLcQkcsScsVcsTcsXcsWcsZcsYctbctactdctcctfctgcthcuqcQkcsLcJGbQVctjctictlctkctnctmctpctocqMctqctrcfZcepcepcepcepcepctsctsctscepcepaaaaaaaaaaaacBRcBScCacBUcAPcCdcCfcCecCgcBZcChcCbcCccCicCkcCjcCmcClcCncAPcAScCocCrcCpcCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCvcCucieclBcieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicCwcCxcCqcCyczJcCtcCzcCBczJcCDcCCcCEcskcgQcoLcngaaaaaaaaaaaaaaacngcoLcCFcwFcCAcwIcwIcwIcwIcCGcCIcCHcsvcngaaacCMcwUcCNcwVcCOcwOcwOcCRcCPcCKcCLcCUcCTcCVcBvcsDcCYcCQcCZcCScDacvHcDccyDcyDcyDcDdcvIckScmJctZcQkcudcufcuecUTcugcujcuhcumculcupcuncQncurcvdcuscQkcsLcrDcrDcuucutcuxcuwcuzcuycuBcuAcqMcuCcuDbQXcepaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDqcDycDAcDzcDucDBcDwcDwcDCcDwcDwcDwcDwcDwcDEcDDcDGcDFcDHbGHcDIcjYbGHbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciecDJcDMcDKciecieckbckbcDNckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicCwcCxcCqcCyczJcCtcCzcCBczJcCDcCCcCEcskcgQcoLcngaaaaaaaaaaaaaaacngcoLcCFcwFcCAcwIcwIcwIcwIcCGcCIcCHcsvcngaaacCMcwUcCNcwVcCOcwOcwOcCRcCPcCKcCLcCUcCTcCVcBvcsDcCYcCQcCZcCScDacvHcDccyDcyDcyDcDdcvIckScmJctZcQkcudcufcuecUTcugcujcuhcumculcupcuncQncurcvdcuscQkcsLcrDcrDcuucutcuxcuwcuzcuycuBcuAcqMcuCcuDbQXcepaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDqcDycDAcDzcDucDBcDwcDwcDCcDwcDwcDwcDwcDwcDEdexcDGcDFcDHbGHcDIcjYbGHbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciecDJcDMcDKciecieckbckbcDNckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicDPcAXcDUcAXcDVcDLcDXcDZcBbcDOcwxcAFcqBcgQcqzcvpaaaaaaaaaaaaaaacvpcDQcvocwFcwFcwFcDScDTcwIcEbcvocoLciCcvpaaaaaaaaaaaacvqcEdcDWcEecEecvxcDYcvxcEfcsHcnycEicEjcEccElcEkcEkcEkcEscEgcyDcEhcyDcEtcvIckScmJcuEcQkcuFcuIcqNcQkcvOcUTcvPcvQcQncQncQncQkcQkcQkcQkcQkcsLcrDcvRcvTcvScuxcvUcvWcvVcvYcvXcqMcsLctrbQXcepaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDqcEHcEOcENcERcEQcEXcEVcEZcDwcDwcEPcDwcDwcDEcDGcDGcDGcFbbGHcFcbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccEScETclAcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEUcEUcEUcEUcEUcwxcFdcEWcEWcEWcEWcEWcFecEYcEYcEYcEWcEWcEWcEWcEWcEWcEWcEYcEYcEYcvocvocvocvocvocvocvocqFcCJcFacFacFacFacFacvqcvxcvxcvxcvxcvxcvxcvxcFgcsHcnycFhcFjcFicFlcFkcFrcFocFucFtcFwcFmcFncFBcvIckScmJcKOcBPcvZdcCcQkcQkcwacwbcUTcwdcwccwfcwecwhcwgcwicQkcPccnVcrDcwkcwmcwlcuxcuxbUAcwncwscwrcqMcsLctrbQXctsaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaacDqcFNcFPcFOcFKcFQcFMcFRcFScDwcDwcDwcDwcFTcFYcFUcGacFZcGdbGHcFcbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacicciccicciccidcidcieciecieciecijaabaabaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaacFVcFWcFXcGecFXcGfcFWcGgcGbcGccGccGicAGcGkcDRcGmcGlcGocGncGqcGpcGpcGrcGpcGscGtcGtcFfcGucGxcGwcGycGwcGwcGwcGxcGwcGwcGzcGBcGAcGDcsHcnycGJcGNcGMcGCcsDcGOczZcGEcGFcGGcGHcxicwtcGKckScmJcxlchfdcDcxpcxncQkcxqcxrcUTcxtcxscxvcxucUTcxwcxxcQkcsLcBwcrDcxycmycxzcxBcuxcBPcBPcBPcBPchfcebctrbQXctsaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaacBScBRcHmcHgcBScHncHicHjcHvcHtcHxcHwcDwcDwcHocHpcHqcHrcHsbGHcFcbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9066,7 +9071,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhnaaaalwaaacNFcMBcNMaaacNFcMBcNMaaacNFcMBcNMaaaaaacLicNAcNBcNCcLicNDcNNcLmcLmcLmcLmcLmcLmcLmcLmcLmcNRcKfcNGcJxcMycMCcJxcJxcJxcMEcJxcNGcNGcJxcJxcJxcJxcNwcNKcMGcNLcHDcNScyEcHQcHQcNTcLOcNOcNPcNQcLOcNUcHVcJMcKocKccAHcGKcsKcsLcNYcsLcAIdfMcAOcAMcARcARcARcARcBxcATcBycBycBycBycBAcyJcMfczqcyJcyJcebcsLcsLcBCcAvcAvczqcBCcBYcsLcsLcBGcBHciYbQXcBIcepcxNcxNcxNcxNcKpcEHcOlcOncOmcOpcOocxNcKscKVcKTcBRaaaaaacLbcOvcOucOscLecODcLbcOCbGGcFcbGHaabaabaabaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaacNFcNEcNMaaacNFcNEcNMaaacNFcNEcNMaaaayicLicNBcNBcNBcLicLicOwcOxcLicLicOxcOxcLicLicOxcOxcLwcKfcNGcNHcJxcNIcNJcNZcNZcMxcJxcNGcOGcJxcJxcJxcJxcOHcOycOJcOIclXcOKcOMcOLcOYcORcLOcNOcOZcONcLOcOOcHVcGKcGKcGKcBJcGKcZScOTcOUcOTcOWcOTcOTcOTcOTcOTcBKcBPcBPcBPcBPcBPcBPcBPcBLcnVcBQcsLcBOcBMcBTcsLcsLchfcBWcBVcBXchfcDbcCXcPhcDecDgciYbQXcDhcepcKPcKQcKRcPmcLccNocPncPjcPocPqcPpcPscPrcPpcPtcBRaaaaaacLbcLbcPycPAcPzcLbcLbbGHbGGcPBcuQcuQcuQbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaayiaabcNFcNEcNMaaacNFcNEcNMaabcNFcNEcNMaaaaabcLicMrcPucNDcLiaaaaabaaaaaaaaaaaaaaaaabaaaaaacOxcLwcKbcOzcJxcJxcOAcOBcLfcLdcLfcLncLfcOEcOQcLDcPvcNGcNGcNKcPLcPJcPNcPMcPPcPKcPVcPSbgYcPObHWcPQcPRcPYcPTcPUcPUaPdcDjcDicQdcPZcQfcDkcQhcQgcDlcQicQocQmcQpcQpcQpcQpcQpcQpcPwcBPcBLcsLcDmchfchfcBQcBQchfcDnchfchfchfchfchfciYcDobQXctrbQXciYcDpbQXcepcJKcKZcJKcQxcJrcEHcQzcQAcQrcQscEHcEHcQtcEHcQBcBRaaaaabaabcLbcLbcQvcLbcLbaaabGHbGGcFccuQcQwcQCbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcNEcNMaabcNFcNEcNMaaacNFcNEcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycQDcKbcLqcLvcLvcLPcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcQIcJZcQEcJZcFacQKcxAbHYcQNcQNcQNcyhcQScPTcQLcQMbhCcDtcDscQQcPZcDxcDvcQTcEmcEncRacRdcRcaabcQZcQZcQZcQZcQZcPxcBPcEocsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYctrbQXciYciYciYcepcJKcJKcJKcRDcLQcNocRHcRIcRtcRucRvcRvcRJcEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcFccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcNEcNMaabcNFcNEcNMaaacNFcNEcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycQDcKbcLqcLvcLvcLPcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcQIcJZcQEcJZcFacQKcxAbHYcQNcQNcQNcyhcQScPTcQLcQMbhCcDtcDscQQcPZcDxcDvcQTcEmcEncRacRdcRcaabcQZcQZcQZcQZcQZcPxcBPcEocsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYctrbQXciYciYciYcepcJKcJKcJKcRDcLQcNocRHcRIcRtdeycRvcRvcRJcEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcFccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvayiaaacNFcNEcNMaabcNFcNEcNMaaacNFcNEcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcRzcRAcRAcRAcRAcQycRBcLwcRCcRKcREcREcRFcRGcRMcRLcRLcRLcRLcRNcRPcROcRQcRQcRScRScRQcRTcRVcRUcRRcRRcRYcRWcTecSabHZcRXcRXcShcRZcSjcSbbjicErcSdcSecPZcEucSlcSmcEvcSpcSocSrcSqcQpcSncSucSscSwcQZcPxcBQcEwcsLchfcExchfcEycEAcEzcyJchfcECcEBcsLcsLciYcEDcgactrbQXciYcEFcEEcepcxNcxNcxNcxNcLRcEHcQzcEIcSOcQscEHcSGcSHcSHcSPcSJcSKaabaaaaaaaaaaaaaaaaaaaaabGHbGGcPBbGGbGGcSLbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcPCaabaabaabcPCaabaaaaabcPCaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcSRcTacSTcRAcTbcTccNRcRCcRCcSScTdcKbcKbcMvcSUcSUcSUcSUcSVcSWcSXcSWcSWcSWcRRcRRcSYcSZcTfcTicTgcRXcTjcTecRXcRXcRXcRXcTkcPTcTlcThcSdcErcSdcSdcPZcEucSlcTncEJcTqcTpcTucTraabcTocTvcSwcTwcQZcPxcBQcELcEKcFpcEMchfcsLcsLcsLcFqcMfcFscyJcFscsLciYbQXcgactrcFvciYbQXcFvcepcKPcKQcKRcTJcLccNocTKcTNcTMcTGcTGcTHcTIcTPcTOcBRaabaabaabaaaaaaaaaaaaaaaaaabGHcTLcFcbGHbGHbGHbGHbGHaabaabaabdoEdoEdoEdoEdoEdoEaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcPGcPHcPHcPIcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcQacPHcPHcPHcPHcPHcQqcTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcFxcUicFycFAcFzcUrcFCcUucUscUxcUwcUycFCcUtcUzcTecUvcRXcRXcRXcUAcPTcSdcSdcSdcFEcFDcFGcFFcFIcFHcFLcFJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcPxcBQcGIcsLctZcmJchfchfcMfchfchfchfcyJcyJcyJcsKchfchfchfctrbQXcGLbQXbQXcepcJKcMgcJKcVecJrcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+2 -2
View File
@@ -31,6 +31,7 @@
"aE" = (/obj/structure/closet/crate,/obj/item/aicard,/obj/item/multitool,/obj/machinery/camera{c_tag = "Telecomms Entrance South"; dir = 1; network = list("Telecomms")},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/tcommsat/entrance)
"aF" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/tcommsat/entrance)
"aG" = (/obj/machinery/light{dir = 4},/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/tcommsat/entrance)
"aH" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/camera{c_tag = "Telecomms Power Control"; dir = 2; network = list("Telecomms")},/turf/simulated/floor/plating,/area/tcommsat/powercontrol)
"aT" = (/obj/structure/lattice,/turf/space,/area/space)
"ba" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/space)
"bb" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/space)
@@ -302,7 +303,6 @@
"hs" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_inner"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/tcommsat/powercontrol)
"hu" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/powercontrol)
"hv" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/tcommsat/powercontrol)
"hw" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/camera{c_tag = "Telecomms Foyer"; dir = 2; network = list("Telecomms")},/turf/simulated/floor/plating,/area/tcommsat/powercontrol)
"hx" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/tcommsat/powercontrol)
"hz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/tcommsat/entrance)
"hB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/space)
@@ -515,7 +515,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcncncpcsctctctctctcpgPhchdhehfhghdhhhdhigPcpctctctctctcscpcncncraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoclcncncpcpcpcpcpcpcpgPgPgPgPhjhkhlgPgPgPgPcpcpcpcpcpcpcpcncncicmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoclhmhmhmhmhmhmhmhmhmhmgPgPawavaxgPcncncncncncncncncncncncicmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrhmhqhrhsaehuhvhwhxhmgPgPayhzazgPgPbWcicjcjcjcjcjcjcjcjcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrhmhqhrhsaehuhvaHhxhmgPgPayhzazgPgPbWcicjcjcjcjcjcjcjcjcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahBhmhChDhmhEhFhFhFhGhmgPhHhIhJhdhKgPgPcrbWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahBhmhLhmhmhMhNhOhNhPhmaAhRhShThUhUhVgPcraTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdhWafhYhmhZiaiaiaibicaBieifighUhUihgPcraTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+27 -19
View File
@@ -144,6 +144,7 @@
"cN" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
"cO" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
"cP" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
"cQ" = (/obj/machinery/camera{c_tag = "North Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_n1_pump"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
"cR" = (/obj/effect/decal/remains/human,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"cS" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
"cT" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
@@ -163,6 +164,8 @@
"dh" = (/obj/structure/glowshroom,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored)
"di" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless{icon_state = "floorgrime"},/area/mine/abandoned)
"dj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dk" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_w1_pump"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"dl" = (/obj/effect/decal/warning_stripes/east,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_w1_pump"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"dm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/dangerous/explored)
"dn" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost)
"do" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost)
@@ -170,12 +173,17 @@
"dq" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_n1_pump"},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost)
"dr" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_n1_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "mining_n1_airlock"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_airpump = "mining_n1_pump"; tag_chamber_sensor = "mining_n1_sensor"; tag_exterior_door = "mining_n1_outer"; tag_interior_door = "mining_n1_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_n1_pump"},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
"ds" = (/obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap,/obj/structure/glowshroom,/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/explored)
"dt" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"du" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"dv" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_w1_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"dw" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"dx" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/north_outpost)
"dy" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/dangerous/unexplored)
"dz" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost)
"dA" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/dangerous/explored)
"dB" = (/obj/item/shard,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
"dC" = (/obj/item/shard{icon_state = "small"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
"dD" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_w1_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"dE" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel/airless{icon_state = "dark"},/area/mine/abandoned)
"dF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
@@ -188,12 +196,16 @@
"dN" = (/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost)
"dO" = (/obj/structure/lattice,/obj/structure/window/reinforced,/turf/space,/area/mine/dangerous/explored)
"dP" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/dangerous/explored)
"dQ" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_w1_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
"dR" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
"dS" = (/obj/effect/decal/warning_stripes/east,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"dT" = (/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "green"},/area/mine/abandoned)
"dU" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_w1_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored)
"dV" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"dW" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/simulated/floor/plasteel/airless{dir = 8; icon_state = "green"},/area/mine/abandoned)
"dX" = (/obj/machinery/door/airlock/public/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned)
"dY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned)
"dZ" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_n1_pump"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
"dZ" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "mining_w1_airlock"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_airpump = "mining_w1_pump"; tag_chamber_sensor = "mining_w1_sensor"; tag_exterior_door = "mining_w1_outer"; tag_interior_door = "mining_w1_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_w1_pump"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"ea" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/dangerous/explored)
"eb" = (/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned)
"ec" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille/broken,/obj/item/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
@@ -406,12 +418,12 @@
"ib" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/dangerous/explored)
"ic" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/eva)
"id" = (/turf/simulated/wall,/area/mine/living_quarters)
"ie" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"ie" = (/obj/structure/ore_box,/obj/effect/decal/warning_stripes/east,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_w1_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_w1_pump"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"if" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"ig" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"ig" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"ih" = (/obj/structure/bed,/obj/item/bedsheet/brown,/turf/simulated/floor/carpet,/area/mine/living_quarters)
"ii" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters)
"ij" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plating/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
"ij" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/mine/west_outpost)
"ik" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/dangerous/explored)
"il" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/beer,/obj/item/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
"im" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
@@ -421,8 +433,8 @@
"iq" = (/obj/structure/table,/obj/item/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"ir" = (/obj/machinery/door/airlock/mining/glass{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"is" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"it" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"iu" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"it" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"iu" = (/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"iv" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
"iw" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
"ix" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_n1_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/dangerous/explored)
@@ -437,9 +449,7 @@
"iG" = (/obj/machinery/door/airlock/external{id_tag = "laborcamp_away"; name = "Labor Camp Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security)
"iH" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security)
"iI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security)
"iJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"iK" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost)
"iL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"iJ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/west_outpost)
"iM" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"iN" = (/obj/machinery/door/airlock/public/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
"iO" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9},/turf/simulated/floor/bluegrid,/area/mine/maintenance)
@@ -449,7 +459,6 @@
"iS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security)
"iT" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters)
"iU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"iV" = (/obj/structure/ore_box,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"iW" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=5-Central"; location = "4-Maint"},/turf/simulated/floor/plating,/area/mine/laborcamp)
"iX" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "mining_east_pump"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/mine/eva)
"iY" = (/turf/simulated/wall,/area/mine/west_outpost)
@@ -459,7 +468,6 @@
"jc" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"jd" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
"je" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters)
"jf" = (/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"jg" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"jh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"ji" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
@@ -495,7 +503,6 @@
"jM" = (/obj/structure/table,/obj/item/shovel,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"jN" = (/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"jO" = (/obj/structure/table,/obj/item/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
"jP" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall,/area/mine/west_outpost)
"jQ" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/mine/west_outpost)
"jR" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/west_outpost)
"jS" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
@@ -860,7 +867,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaEaEaEaEaEaEcHczaYaYaYaYaCaYaXbHaDaAaEcZdYdXdjaEaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbwcLbVbVbVbVbVbVbVbVbVbVbVbVbwbwbwaaaaaaaaaaaaaaajajaQcNbOcObKcPbOdgcFcGcsbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaEcAczaYaHcRcBaXbUaYbHaYaXaEamebebefaEdyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbVbVbVbVbVbVbVbVbVbVbVbVbwbwbwaaaaaaaaaaaaajajajaQaQbKbKaQaQaQdpbKcGcsbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXcVgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahvhvhvhvegegegegegegegegememegegeieieieieieieiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaEcAczaYbUaYaYaXaYaHczcAaEaEcTamebekejdydyaeaeaeaeaeaeaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbVbVbVbVbVbVbVbVbVbVbVbVcYcYdadOdOdOdOdOdOdbcYcYbVbVdcdeddaQdqdzdrcGcsbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXcVdhdhcVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahvhvhvhvhvhvhveoeoeoeoeoeoememememaeaeeieieieieieiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaEdiczczczczczczczczczcAaEcTamcWamefeldydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVdndmdmdmdmdmdmdmdmdnbVbVbVdododoaQdZgDgAcGcsbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXdhdscVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahvhvhvhvhvhvhveoeoeoeoeoeoememememaeaeeieieieieieiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaEdiczczczczczczczczczcAaEcTamcWamefeldydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVdndmdmdmdmdmdmdmdmdnbVbVbVdododoaQcQgDgAcGcsbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXdhdscVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahveoeoeoeoeoeoepereqeseoemememeNeNememememegegegaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaEdicAcAcAcIcMcAcAcAdidiaEcTcWcWcWcXaEdydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVcYcYdxeeeeeeeeeeeeeecYcYbVbVbVbVbVaQaQgUbKcGdAbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXcVcVcVgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahveoeuetewevexeyezezeAeocKcKcKcKcKcKeBeBeBeBeBeiaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeaeaeaeaeaeaeaeaeaEaEaEaEaEaEaEaEaEaEaEaEaEaEdjeDecaEaEdydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbVbwaaaaaaaaaaaaaaaabwbwbwbVbVbVbVbVbVglixhpdNdMdPbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahveoeEeCeGeFexeHezeIeKeJeQeOeOcKeLeMeNememememememaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeakaeaeaeaeaeaeaeaeaeaeaeaeaedydydyaEebebcWaEdydydydydyaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababbwbVbVbVbVbVbVbVbVbVbVbVbVbwaaaaaaaaaaaaaabwbwbwbwbwbwbwbwbVbVbVdJdLdLeaeadKbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -964,12 +971,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeae
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababbwbVbVbVbVbVbVbVbVhrhrhrbVbVbVbwababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeizaeaeidiogWhsjVhqbVbVbVbVbVbVbVbVbVaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbwkXpdpdpdpdpcpbkubVbVbVbVbVbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeababbwbwbwbwbwbwbVbVbVbVbVbVbVbVhthxhwbVbVbVbwababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbwbwbwbwbwabababababababaeaeaeaeaeaeaeaeaeaeididiTididididididjVhqbVbVbVbVbVbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbwbwbwbwbwkXpepdpdpdpcpbkwkvbVbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaeaeaeaeaeaeaeaeaeaeaeaeabbwbwbVbViYiYiYiYiYiYhyhyhyhyiYiYiYiYhzbVbVbwababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababbwbwbVbVbVbVbVbwbwbwbwbwabababababababaeaeaeaeidididhAjbhEjdidihjeidjXidididhqhqhqidbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbwbwbVbVkXpdpdpdpdpgpfkvkubVbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXgXbwbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaeaeaeaeaeaeaeababbwbVbVbViYjkhHhGhyhLhNhMhShQhyjNiehVdPbVbVbwbwbwbwababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbVbVbVbVbVbVbVbVbVbVbwbwbwbwbwabababababaeaeidjwhXjxjzjxhYidiogWhZjVidjBjCjDjDjDhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbVbVbVkXkXphpkpjkykykSkSjLjLbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeababbwbVbVbViYjMjNjOhyififififiuigjNieijikbVbVbVbVbVbwbwbwabababababababaeaeaeaeaeaeaeaeaeaeaeabababbwbwbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbwbwabababababaeidiljxjWimjYjZididididjVidjBkakakakbhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabVbVbVbVbVbVbVkXplpnpmkykfkUkUkVjLbVkibVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaababababababababaeaeaeababbwbVbVbViYiqjNjNirjNjNjNjNishyitiVhydKbVbVbVbVbVbVbVbwbwbwbwabababababaeaeaeaeaeaeaeaeababababbwbwbVbVbVbVbVbVbVbVbVbVgldPbVbVbVbVbVbVbwbwbwbwababaeidkojxivjxkrjxktkbiwiykFidkWkaiBkakGhqbVbVbVbVbVbVaaaaaaaaaaaaaaaaaaaabVbVbVbVbVkXkXpokXkykYlbkelcjLjLjLjLllllbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababbwbwbVbViYkIjNkJiKiJiLkMjNiMiYiYiYiYiYgldPbVbVbVbVbVbVbVbVbwbwbwabababaeaeaeaeaeaeaeaeabababbwbwbVbVgngcgcgcgcgcgcgcgcgrgsgcgcgcgcfgbVbVbVbVbwbwababidididididididhqkHiNhqkHidididididkKididhqhqbVbVaaaaaaaaaaaaaaaaaaaaaaaaaabVbVlmlmkLpplplulslvkglwiclyiXickhllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababbwbVbViYlfjNjchyjfjhjgjNjijljjjmlqjngrgsgcgcgcgcgcfgbVbVbVbVbwbwbwababaeaeaeaeaeaeabababbwbwbVbVgngpgngcgcgcgcgcgcgcgrgsgcgcgcfgffgcfgbVbVbVbwabababababidjoltjpkakGjqkbkGktjrjskakbkGkakakzhqhqhqjtlClClClClClClBlBlBlBlBlBlmlmlmlalDpqlMlPlOlSkjkxkkkPldkRkQllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbVbViYiYiYiYiYjPlRjQiYiYjSjRjRjRjRgrgsgcgcgcgcfgffgcgcfgbVbVbVbwbwabababaeaeababababbwbwbVbVgngpgngpbVbVbVbVbVbVbVdJdKbVbVbVffgcfgenbVbVbVbVbwbwbwbwabididididjTkGjUkOkOiykckdkdkTkTkdkdlxkZlAkZlhlhlhlhlhlhlhlUlUlUlUlUlUlZmalZlEmapsmcicmpmrmqmuicmwlLicmxllbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaeaeaeaeaeaeaeababbwbVbVbViYjkhHhGhyhLhNhMhShQhydkdlhVdPbVbVbwbwbwbwababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababbwbwbVbVbVbVbVbVbVbVbVbVbwbwbwbwbwabababababaeaeidjwhXjxjzjxhYidiogWhZjVidjBjCjDjDjDhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabwbwbwbVbVbVkXkXphpkpjkykykSkSjLjLbVbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaeaeaeaeaeaeababbwbVbVbViYjMjNjOhyifdudtdtdvdDdwdSdQdUbVbVbVbVbVbwbwbwabababababababaeaeaeaeaeaeaeaeaeaeaeabababbwbwbwbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbwbwabababababaeidiljxjWimjYjZididididjVidjBkakakakbhqbVbVbVbVbVbVbVaaaaaaaaaaaaaabVbVbVbVbVbVbVkXplpnpmkykfkUkUkVjLbVkibVbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaababababababababaeaeaeababbwbVbVbViYiqjNjNirjNdVjNjNishydZiehydKbVbVbVbVbVbVbVbwbwbwbwabababababaeaeaeaeaeaeaeaeababababbwbwbVbVbVbVbVbVbVbVbVbVgldPbVbVbVbVbVbVbwbwbwbwababaeidkojxivjxkrjxktkbiwiykFidkWkaiBkakGhqbVbVbVbVbVbVaaaaaaaaaaaaaaaaaaaabVbVbVbVbVkXkXpokXkykYlbkelcjLjLjLjLllllbVbVbVbVbwbwbwbwgXgXgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababbwbwbVbViYkIjNkJijigitkMjNiMiYiYiYiYiYgldPbVbVbVbVbVbVbVbVbwbwbwabababaeaeaeaeaeaeaeaeabababbwbwbVbVgngcgcgcgcgcgcgcgcgrgsgcgcgcgcfgbVbVbVbVbwbwababidididididididhqkHiNhqkHidididididkKididhqhqbVbVaaaaaaaaaaaaaaaaaaaaaaaaaabVbVlmlmkLpplplulslvkglwiclyiXickhllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababbwbVbViYlfjNjchyiujhjgjNjijljjjmlqjngrgsgcgcgcgcgcfgbVbVbVbVbwbwbwababaeaeaeaeaeaeabababbwbwbVbVgngpgngcgcgcgcgcgcgcgrgsgcgcgcfgffgcfgbVbVbVbwabababababidjoltjpkakGjqkbkGktjrjskakbkGkakakzhqhqhqjtlClClClClClClBlBlBlBlBlBlmlmlmlalDpqlMlPlOlSkjkxkkkPldkRkQllbVbVbVbVcLbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbVbViYiYiYiYiYiJlRjQiYiYjSjRjRjRjRgrgsgcgcgcgcfgffgcgcfgbVbVbVbwbwabababaeaeababababbwbwbVbVgngpgngpbVbVbVbVbVbVbVdJdKbVbVbVffgcfgenbVbVbVbVbwbwbwbwabididididjTkGjUkOkOiykckdkdkTkTkdkdlxkZlAkZlhlhlhlhlhlhlhlUlUlUlUlUlUlZmalZlEmapsmcicmpmrmqmuicmwlLicmxllbVbVbVbVbVbwbwbwbwbwgXgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbwbVbVbVbVbViYkAmskBkCiYkEkDhrbVbVdJdKbVbVbVbVffgcgcfgenbVbVbVbVbwbwbwababababababbwbwbVbVgngpgngpbVbVbVbVbwbVbVbVbVbVbVbVbVbVbVenenbVbVbVbVbVbVbVbwbwbwbwbwidkalkljlnlnljlzlJlIlnlnlKljmbhqhqhqmgmgmgmgmgmgmgmnmnmnmnmnmnlmlmlmmmlDmzmymGmGmHmGmGmGmGmGmGllllbVbVbVbVbVcLbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbwbwbVbVbVbViYmSlemUlgiYbVbVbVbVbVbVbVbVbVbVbVbVbVbVenfffgbVbVbVbVbVbwbwbwbwbwbwbwbwbVbVgngpgngpbVbVbwbwbwbwbwbwbwbVbVbVbVbVbVbVenenbVgldPbVbVbVbVbVbVbwbwididhqlQhqididmXlilTidididlWhqidhqbVbVbVaaaaaaaaajaaajaaaaaaaaaaajaalmlmlDmzmhmGmKmMmLmOmNmPmGmRmQbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababbwbwbVbVbViYiYiYiYiYiYbVbVbwbwbwbwbwbwbwbwbwbVbVbVfffgffgcgcgcfgbVbVbVbVbVbVbVbVbVbVbVengngpbVbVbwbwabababababbwbVbVbVbVbVbVbVenffgcgrgsgcgcgcgcfgbVbVbwidmVmTmYmWidnplGlFlXlHidlYmfmeidbVbVbVbVbVbVaaaaajaaajajajajajajajajajnamZmAnbnendndnfngngninhnknjbVbVbVbVbVbVbVbwbwbwbwbwgXgXgXgXbwbwbwbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1045,3 +1052,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+1 -1
View File
@@ -51,7 +51,7 @@
"aY" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/shuttle/escape)
"aZ" = (/obj/structure/table,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
"ba" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "8"},/turf/simulated/floor/plating,/area/shuttle/escape)
"bb" = (/obj/structure/table/wood,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/shuttle/escape)
"bb" = (/obj/structure/table/wood,/obj/item/deck/cards,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/shuttle/escape)
"bc" = (/obj/structure/chair/comfy/brown{dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/shuttle/escape)
"bd" = (/obj/structure/table,/obj/item/storage/box/drinkingglasses,/obj/item/reagent_containers/food/drinks/shaker,/obj/item/clothing/mask/cigarette/cigar,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
"be" = (/obj/structure/chair/wood/wings{tag = "icon-wooden_chair_wings (NORTH)"; icon_state = "wooden_chair_wings"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/shuttle/escape)
@@ -4,7 +4,7 @@
"d" = (/turf/unsimulated/floor/carpet,/area/template_noop)
"e" = (/obj/structure/rack,/obj/item/twohanded/dualsaber/toy,/obj/item/twohanded/toy/chainsaw,/obj/item/toy/foamblade,/turf/unsimulated/floor/carpet,/area/template_noop)
"f" = (/obj/structure/rack,/obj/item/toy/griffin{pixel_y = 8},/obj/item/toy/snappop,/obj/item/toy/redbutton,/turf/unsimulated/floor/carpet,/area/template_noop)
"g" = (/obj/structure/rack,/obj/item/toy/cards/deck,/obj/item/toy/figure/secofficer,/turf/unsimulated/floor/carpet,/area/template_noop)
"g" = (/obj/structure/rack,/obj/item/deck/cards,/obj/item/toy/figure/secofficer,/turf/unsimulated/floor/carpet,/area/template_noop)
"h" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop)
"i" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/unsimulated/floor/carpet,/area/template_noop)
"j" = (/obj/structure/window/reinforced/polarized{dir = 4; id = "room_s"},/turf/unsimulated/floor{dir = 8; icon_state = "whiteblue"},/area/template_noop)
+2
View File
@@ -35,11 +35,13 @@
#include "map_files\RandomRuins\SpaceRuins\intactemptyship.dmm"
#include "map_files\RandomRuins\SpaceRuins\listeningpost.dmm"
#include "map_files\RandomRuins\SpaceRuins\mechtransport.dmm"
#include "map_files\RandomRuins\SpaceRuins\oldstation.dmm"
#include "map_files\RandomRuins\SpaceRuins\onehalf.dmm"
#include "map_files\RandomRuins\SpaceRuins\spacebar.dmm"
#include "map_files\RandomRuins\SpaceRuins\turretedoutpost.dmm"
#include "map_files\RandomRuins\SpaceRuins\way_home.dmm"
// Shuttle Templates
#include "map_files\shuttles\cargo_base.dmm"
#include "map_files\shuttles\emergency_bar.dmm"
+138 -18
View File
@@ -1,5 +1,7 @@
#define SEND_SIGNAL(target, sigtype, arguments...) ( !target.comp_lookup || !target.comp_lookup[sigtype] ? NONE : target._SendSignal(sigtype, list(target, ##arguments)) )
#define SEND_GLOBAL_SIGNAL(sigtype, arguments...) ( SEND_SIGNAL(SSdcs, sigtype, ##arguments) )
//shorthand
#define GET_COMPONENT_FROM(varname, path, target) var##path/##varname = ##target.GetComponent(##path)
#define GET_COMPONENT(varname, path) GET_COMPONENT_FROM(varname, path, src)
@@ -8,15 +10,25 @@
// How multiple components of the exact same type are handled in the same datum
#define COMPONENT_DUPE_HIGHLANDER 0 //old component is deleted (default)
#define COMPONENT_DUPE_ALLOWED 1 //duplicates allowed
#define COMPONENT_DUPE_UNIQUE 2 //new component is deleted
#define COMPONENT_DUPE_UNIQUE_PASSARGS 4 //old component is given the initialization args of the new
#define COMPONENT_DUPE_HIGHLANDER 0 //old component is deleted (default)
#define COMPONENT_DUPE_ALLOWED 1 //duplicates allowed
#define COMPONENT_DUPE_UNIQUE 2 //new component is deleted
#define COMPONENT_DUPE_UNIQUE_PASSARGS 4 //old component is given the initialization args of the new
// All signals. Format:
// When the signal is called: (signal arguments)
// All signals send the source datum of the signal as the first argument
// global signals
// These are signals which can be listened to by any component on any parent
// start global signals with "!", this used to be necessary but now it's just a formatting choice
#define COMSIG_GLOB_NEW_Z "!new_z" //from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args)
#define COMSIG_GLOB_VAR_EDIT "!var_edit" //called after a successful var edit somewhere in the world: (list/args)
#define COMSIG_GLOB_MOB_CREATED "!mob_created" //mob was created somewhere : (mob)
#define COMSIG_GLOB_MOB_DEATH "!mob_death" //mob died somewhere : (mob , gibbed)
//////////////////////////////////////////////////////////////////
// /datum signals
#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component)
#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component)
@@ -35,6 +47,8 @@
//End positions
#define COMPONENT_EXNAME_CHANGED 1
#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable/entering, /atom)
#define COMSIG_ATOM_EXIT "atom_exit" //from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc)
#define COMPONENT_ATOM_BLOCK_EXIT 1
#define COMSIG_ATOM_EXITED "atom_exited" //from base of atom/Exited(): (atom/movable/exiting, atom/newloc)
#define COMSIG_ATOM_EX_ACT "atom_ex_act" //from base of atom/ex_act(): (severity, target)
#define COMSIG_ATOM_EMP_ACT "atom_emp_act" //from base of atom/emp_act(): (severity)
@@ -49,9 +63,18 @@
#define COMSIG_ATOM_RCD_ACT "atom_rcd_act" //from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode)
#define COMSIG_ATOM_SING_PULL "atom_sing_pull" //from base of atom/singularity_pull(): (S, current_size)
#define COMSIG_ATOM_SET_LIGHT "atom_set_light" //from base of atom/set_light(): (l_range, l_power, l_color)
#define COMSIG_ATOM_ROTATE "atom_rotate" //from base of atom/shuttleRotate(): (rotation, params)
#define COMSIG_ATOM_DIR_CHANGE "atom_dir_change" //from base of atom/setDir(): (old_dir, new_dir)
#define COMSIG_ATOM_CONTENTS_DEL "atom_contents_del" //from base of atom/handle_atom_del(): (atom/deleted)
#define COMSIG_ATOM_HAS_GRAVITY "atom_has_gravity" //from base of atom/has_gravity(): (turf/location, list/forced_gravities)
#define COMSIG_ATOM_RAD_PROBE "atom_rad_probe" //from proc/get_rad_contents(): ()
#define COMPONENT_BLOCK_RADIATION 1
#define COMSIG_ATOM_RAD_CONTAMINATING "atom_rad_contam" //from base of datum/radiation_wave/radiate(): (strength)
#define COMPONENT_BLOCK_CONTAMINATION 1
#define COMSIG_ATOM_RAD_WAVE_PASSING "atom_rad_wave_pass" //from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width)
#define COMPONENT_RAD_WAVE_HANDLED 1
#define COMSIG_ATOM_CANREACH "atom_can_reach" //from internal loop in atom/movable/proc/CanReach(): (list/next)
#define COMPONENT_BLOCK_REACH 1
#define COMSIG_ATOM_SCREWDRIVER_ACT "atom_screwdriver_act" //from base of atom/screwdriver_act(): (mob/living/user, obj/item/I)
/////////////////
#define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" //from base of atom/attack_ghost(): (mob/dead/observer/ghost)
#define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" //from base of atom/attack_hand(): (mob/user)
@@ -62,7 +85,7 @@
#define COMSIG_ENTER_AREA "enter_area" //from base of area/Entered(): (/area)
#define COMSIG_EXIT_AREA "exit_area" //from base of area/Exited(): (/area)
#define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params)
#define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params, mob/user)
#define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob)
#define COMSIG_CLICK_CTRL "ctrl_click" //from base of atom/CtrlClickOn(): (/mob)
#define COMSIG_CLICK_ALT "alt_click" //from base of atom/AltClick(): (/mob)
@@ -75,44 +98,117 @@
#define COMSIG_AREA_ENTERED "area_entered" //from base of area/Entered(): (atom/movable/M)
#define COMSIG_AREA_EXITED "area_exited" //from base of area/Exited(): (atom/movable/M)
// /turf signals
#define COMSIG_TURF_CHANGE "turf_change" //from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps)
#define COMSIG_TURF_HAS_GRAVITY "turf_has_gravity" //from base of atom/has_gravity(): (atom/asker, list/forced_gravities)
// /atom/movable signals
#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir)
#define COMSIG_MOVABLE_CROSS "movable_cross" //from base of atom/movable/Cross(): (/atom/movable)
#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable)
#define COMSIG_MOVABLE_UNCROSS "movable_uncross" //from base of atom/movable/Uncross(): (/atom/movable)
#define COMPONENT_MOVABLE_BLOCK_UNCROSS 1
#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" //from base of atom/movable/Uncrossed(): (/atom/movable)
#define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (/atom)
#define COMSIG_MOVABLE_BUMP "movable_bump" //from base of atom/movable/Bump(): (/atom)
#define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum)
#define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" //from base of mob/living/hitby(): (mob/living/target, hit_zone)
#define COMSIG_MOVABLE_BUCKLE "buckle" //from base of atom/movable/buckle_mob(): (mob, force)
#define COMSIG_MOVABLE_UNBUCKLE "unbuckle" //from base of atom/movable/unbuckle_mob(): (mob, force)
#define COMSIG_MOVABLE_THROW "movable_throw" //from base of atom/movable/throw_at(): (datum/thrownthing, spin)
#define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" //from base of mob/living/hitby(): (mob/living/target, hit_zone)
#define COMSIG_MOVABLE_BUCKLE "buckle" //from base of atom/movable/buckle_mob(): (mob, force)
#define COMSIG_MOVABLE_UNBUCKLE "unbuckle" //from base of atom/movable/unbuckle_mob(): (mob, force)
#define COMSIG_MOVABLE_PRE_THROW "movable_pre_throw" //from base of atom/movable/throw_at(): (list/args)
#define COMPONENT_CANCEL_THROW 1
#define COMSIG_MOVABLE_POST_THROW "movable_post_throw" //from base of atom/movable/throw_at(): (datum/thrownthing, spin)
#define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" //from base of atom/movable/onTransitZ(): (old_z, new_z)
#define COMSIG_MOVABLE_HEAR "movable_hear" //from base of atom/movable/Hear(): (message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
#define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source)
// /mob signals
#define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed)
#define COMSIG_MOB_CLICKON "mob_clickon" //from base of mob/clickon(): (atom/A, params)
#define COMSIG_MOB_CANCEL_CLICKON 1
#define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj
#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (magic, holy, protection_sources)
#define COMPONENT_BLOCK_MAGIC 1
#define COMSIG_MOB_HUD_CREATED "mob_hud_created" //from base of mob/create_mob_hud(): ()
#define COMSIG_MOB_ATTACK_HAND "mob_attack_hand" //from base of
#define COMSIG_MOB_ITEM_ATTACK "mob_item_attack" //from base of /obj/item/attack(): (mob/M, mob/user)
#define COMSIG_MOB_ITEM_AFTERATTACK "mob_item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, click_parameters)
#define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" //from base of mob/RangedAttack(): (atom/A, params)
#define COMSIG_MOB_THROW "mob_throw" //from base of /mob/throw_item(): (atom/target)
#define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" //from base of /mob/update_sight(): ()
// /mob/living signals
#define COMSIG_LIVING_RESIST "living_resist" //from base of mob/living/resist() (/mob/living)
#define COMSIG_LIVING_IGNITED "living_ignite" //from base of mob/living/IgniteMob() (/mob/living)
#define COMSIG_LIVING_EXTINGUISHED "living_extinguished" //from base of mob/living/ExtinguishMob() (/mob/living)
#define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" //from base of mob/living/electrocute_act(): (shock_damage)
#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: ()
//ALL OF THESE DO NOT TAKE INTO ACCOUNT WHETHER AMOUNT IS 0 OR LOWER AND ARE SENT REGARDLESS!
#define COMSIG_LIVING_STATUS_STUN "living_stun" //from base of mob/living/Stun() (amount, update, ignore)
#define COMSIG_LIVING_STATUS_KNOCKDOWN "living_knockdown" //from base of mob/living/Knockdown() (amount, update, ignore)
#define COMSIG_LIVING_STATUS_PARALYZE "living_paralyze" //from base of mob/living/Paralyze() (amount, update, ignore)
#define COMSIG_LIVING_STATUS_IMMOBILIZE "living_immobilize" //from base of mob/living/Immobilize() (amount, update, ignore)
#define COMSIG_LIVING_STATUS_UNCONSCIOUS "living_unconscious" //from base of mob/living/Unconscious() (amount, update, ignore)
#define COMSIG_LIVING_STATUS_SLEEP "living_sleeping" //from base of mob/living/Sleeping() (amount, update, ignore)
#define COMPONENT_NO_STUN 1 //For all of them
// /mob/living/carbon signals
#define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity))
// /obj signals
#define COMSIG_OBJ_DECONSTRUCT "obj_deconstruct" //from base of obj/deconstruct(): (disassembled)
#define COMSIG_OBJ_SETANCHORED "obj_setanchored" //called in /obj/structure/setAnchored(): (value)
// /obj/item signals
#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user)
#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob)
#define COMPONENT_NO_INTERACT 1
#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (/obj, /mob)
#define COMPONENT_NO_ATTACK_OBJ 1
#define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" //from base of obj/item/pre_attack(): (atom/target, mob/user, params)
#define COMPONENT_NO_ATTACK 1
#define COMSIG_ITEM_AFTERATTACK "item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, params)
#define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot)
#define COMSIG_ITEM_DROPPED "item_drop"
#define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (mob/user)
#define COMSIG_ITEM_PICKUP "item_pickup" //from base of obj/item/pickup(): (/mob/taker)
#define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" //from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone)
#define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" //return a truthy value to prevent ensouling, checked in /obj/effect/proc_holder/spell/targeted/lichdom/cast(): (mob/user)
#define COMSIG_ITEM_HIT_REACT "item_hit_react" //from base of obj/item/hit_reaction(): (list/args)
// /obj/item/clothing signals
#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): ()
// /obj/machinery signals
#define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): ()
#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): ()
// /obj/item/implant signals
#define COMSIG_IMPLANT_ACTIVATED "implant_activated" //from base of /obj/item/implant/proc/activate(): ()
#define COMSIG_IMPLANT_IMPLANTING "implant_implanting" //from base of /obj/item/implant/proc/implant(): (list/args)
#define COMPONENT_STOP_IMPLANTING 1
#define COMSIG_IMPLANT_OTHER "implant_other" //called on already installed implants when a new one is being added in /obj/item/implant/proc/implant(): (list/args, obj/item/implant/new_implant)
//#define COMPONENT_STOP_IMPLANTING 1 //The name makes sense for both
#define COMPONENT_DELETE_NEW_IMPLANT 2
#define COMPONENT_DELETE_OLD_IMPLANT 4
#define COMSIG_IMPLANT_EXISTING_UPLINK "implant_uplink_exists" //called on implants being implanted into someone with an uplink implant: (datum/component/uplink)
//This uses all return values of COMSIG_IMPLANT_OTHER
// /obj/item/pda signals
#define COMSIG_PDA_CHANGE_RINGTONE "pda_change_ringtone" //called on pda when the user changes the ringtone: (mob/living/user, new_ringtone)
#define COMPONENT_STOP_RINGTONE_CHANGE 1
// /obj/item/radio signals
#define COMSIG_RADIO_NEW_FREQUENCY "radio_new_frequency" //called from base of /obj/item/radio/proc/set_frequency(): (list/args)
// /obj/item/pen signals
#define COMSIG_PEN_ROTATED "pen_rotated" //called after rotation in /obj/item/pen/attack_self(): (rotation, mob/living/carbon/user)
// /mob/living/carbon/human signals
#define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target)
#define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker)
#define COMSIG_HUMAN_DISARM_HIT "human_disarm_hit" //Hit by successful disarm attack (mob/living/carbon/human/attacker,zone_targeted)
// /datum/species signals
#define COMSIG_SPECIES_GAIN "species_gain" //from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species)
#define COMSIG_SPECIES_LOSS "species_loss" //from datum/species/on_species_loss(): (datum/species/lost_species)
/*******Component Specific Signals*******/
//Janitor
#define COMSIG_TURF_IS_WET "check_turf_wet" //(): Returns bitflags of wet values.
@@ -127,7 +223,24 @@
#define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code.
//NTnet
#define COMSIG_COMPONENT_NTNET_RECIEVE "ntnet_recieve" //called on an object by its NTNET connection component on recieve. (sending_id(number), sending_netname(text), data(datum/netdata))
#define COMSIG_COMPONENT_NTNET_RECEIVE "ntnet_receive" //called on an object by its NTNET connection component on receive. (sending_id(number), sending_netname(text), data(datum/netdata))
//Nanites
#define COMSIG_HAS_NANITES "has_nanites" //() returns TRUE if nanites are found
#define COMSIG_NANITE_GET_PROGRAMS "nanite_get_programs" //(list/nanite_programs) - makes the input list a copy the nanites' program list
#define COMSIG_NANITE_SET_VOLUME "nanite_set_volume" //(amount) Sets current nanite volume to the given amount
#define COMSIG_NANITE_ADJUST_VOLUME "nanite_adjust" //(amount) Adjusts nanite volume by the given amount
#define COMSIG_NANITE_SET_MAX_VOLUME "nanite_set_max_volume" //(amount) Sets maximum nanite volume to the given amount
#define COMSIG_NANITE_SET_CLOUD "nanite_set_cloud" //(amount(0-100)) Sets cloud ID to the given amount
#define COMSIG_NANITE_SET_SAFETY "nanite_set_safety" //(amount) Sets safety threshold to the given amount
#define COMSIG_NANITE_SET_REGEN "nanite_set_regen" //(amount) Sets regeneration rate to the given amount
#define COMSIG_NANITE_SIGNAL "nanite_signal" //(code(1-9999)) Called when sending a nanite signal to a mob.
#define COMSIG_NANITE_SCAN "nanite_scan" //(mob/user, full_scan) - sends to chat a scan of the nanites to the user, returns TRUE if nanites are detected
#define COMSIG_NANITE_UI_DATA "nanite_ui_data" //(list/data, scan_level) - adds nanite data to the given data list - made for ui_data procs
#define COMSIG_NANITE_ADD_PROGRAM "nanite_add_program" //(datum/nanite_program/new_program, datum/nanite_program/source_program) Called when adding a program to a nanite component
#define COMPONENT_PROGRAM_INSTALLED 1 //Installation successful
#define COMPONENT_PROGRAM_NOT_INSTALLED 2 //Installation failed, but there are still nanites
#define COMSIG_NANITE_SYNC "nanite_sync" //(datum/component/nanites, full_overwrite, copy_activation) Called to sync the target's nanites to a given nanite component
// /datum/component/storage signals
#define COMSIG_CONTAINS_STORAGE "is_storage" //() - returns bool.
@@ -141,15 +254,22 @@
#define COMSIG_TRY_STORAGE_FILL_TYPE "storage_fill_type" //(type, amount = INFINITY, force = FALSE) //don't fuck this up. Force will ignore max_items, and amount is normally clamped to max_items.
#define COMSIG_TRY_STORAGE_TAKE "storage_take_obj" //(obj, new_loc, force = FALSE) - returns bool
#define COMSIG_TRY_STORAGE_QUICK_EMPTY "storage_quick_empty" //(loc) - returns bool - if loc is null it will dump at parent location.
#define COMSIG_TRY_STORAGE_RETURN_INVENTORY "storage_return_inventory" //(list/list_to_inject_results_into)
#define COMSIG_TRY_STORAGE_RETURN_INVENTORY "storage_return_inventory" //(list/list_to_inject_results_into, recursively_search_inside_storages = TRUE)
#define COMSIG_TRY_STORAGE_CAN_INSERT "storage_can_equip" //(obj/item/insertion_candidate, mob/user, silent) - returns bool
// /datum/action signals
#define COMSIG_ACTION_TRIGGER "action_trigger" //from base of datum/action/proc/Trigger(): (datum/action)
#define COMPONENT_ACTION_BLOCK_TRIGGER 1
/*******Non-Signal Component Related Defines*******/
//Redirection component init flags
#define REDIRECT_TRANSFER_WITH_TURF 1
//Arch
#define ARCH_PROB "probability" //Probability for each item
#define ARCH_MAXDROP "max_drop_amount" //each item's max drop amount
//Ouch my toes!
#define CALTROP_BYPASS_SHOES 1
#define CALTROP_IGNORE_WALKERS 2
#define CALTROP_IGNORE_WALKERS 2
+3
View File
@@ -128,6 +128,7 @@
#define LIGHT_COLOR_DARKGREEN "#50AB00"
#define LIGHT_COLOR_PURE_GREEN "#00FF00"
#define LIGHT_COLOR_BLUE "#6496FA" //Cold, diluted blue. rgb(100, 150, 250)
#define LIGHT_COLOR_LIGHTBLUE "#0099FF"
#define LIGHT_COLOR_DARKBLUE "#315AB4"
#define LIGHT_COLOR_PURE_BLUE "#0000FF"
@@ -136,6 +137,8 @@
#define LIGHT_COLOR_PURPLE "#CD00CD"
#define LIGHT_COLOR_PINK "#FF33CC"
#define LIGHT_COLOR_YELLOW "#E1E17D" //Dimmed yellow, leaning kaki. rgb(225, 225, 125)
#define LIGHT_COLOR_WHITE "#FFFFFF"
#define RESIZE_DEFAULT_SIZE 1
+1 -2
View File
@@ -177,8 +177,7 @@
#define isbot(A) (istype((A), /mob/living/simple_animal/bot))
#define isswarmer(A) (istype((A), /mob/living/simple_animal/hostile/swarmer))
#define isguardian(A) (istype((A), /mob/living/simple_animal/hostile/guardian))
#define isnymph(A) (istype((A), /mob/living/simple_animal/diona))
#define issilicon(A) (istype((A), /mob/living/silicon))
#define isAI(A) (istype((A), /mob/living/silicon/ai))
+47
View File
@@ -238,6 +238,32 @@ proc/age2agedescription(age)
if(70 to INFINITY) return "elderly"
else return "unknown"
/proc/set_criminal_status(mob/living/user, datum/data/record/target_records , criminal_status, comment, user_rank, list/authcard_access = list())
var/status = criminal_status
var/their_name = target_records.fields["name"]
var/their_rank = target_records.fields["rank"]
switch(criminal_status)
if("arrest")
status = "*Arrest*"
if("none")
status = "None"
if("execute")
if((access_magistrate in authcard_access) || (access_armory in authcard_access))
status = "*Execute*"
message_admins("[ADMIN_FULLMONTY(usr)] authorized <span class='warning'>EXECUTION</span> for [their_rank] [their_name], with comment: [comment]")
else
return 0
if("incarcerated")
status = "Incarcerated"
if("parolled")
status = "Parolled"
if("released")
status = "Released"
target_records.fields["criminal"] = status
log_admin("[key_name_admin(user)] set secstatus of [their_rank] [their_name] to [status], comment: [comment]")
target_records.fields["comments"] += "Set to [status] by [user.name] ([user_rank]) on [current_date_string] [station_time_timestamp()], comment: [comment]"
update_all_mob_security_hud()
return 1
/*
Proc for attack log creation, because really why not
@@ -372,6 +398,27 @@ This is always put in the attack log.
if(progress)
qdel(progbar)
#define DOAFTERONCE_MAGIC "Magic~~"
GLOBAL_LIST_INIT(do_after_once_tracker, list())
/proc/do_after_once(mob/user, delay, needhand = 1, atom/target = null, progress = 1, attempt_cancel_message = "Attempt cancelled.")
if(!user || !target)
return
var/cache_key = "[user.UID()][target.UID()]"
if(GLOB.do_after_once_tracker[cache_key])
GLOB.do_after_once_tracker[cache_key] = DOAFTERONCE_MAGIC
to_chat(user, "<span class='warning'>[attempt_cancel_message]</span>")
return FALSE
GLOB.do_after_once_tracker[cache_key] = TRUE
. = do_after(user, delay, needhand, target, progress, extra_checks = CALLBACK(GLOBAL_PROC, .proc/do_after_once_checks, cache_key))
GLOB.do_after_once_tracker[cache_key] = FALSE
/proc/do_after_once_checks(cache_key)
if(GLOB.do_after_once_tracker[cache_key] && GLOB.do_after_once_tracker[cache_key] == DOAFTERONCE_MAGIC)
GLOB.do_after_once_tracker[cache_key] = FALSE
return FALSE
return TRUE
/proc/is_species(A, species_datum)
. = FALSE
if(ishuman(A))
+4 -4
View File
@@ -136,14 +136,14 @@
number_of_alphanumeric++
last_char_group = 3
// ' - .
if(39,45,46) //Common name punctuation
// ' - . ,
if(39, 45, 46, 44) //Common name punctuation
if(!last_char_group) continue
t_out += ascii2text(ascii_char)
last_char_group = 2
// ~ | @ : # $ % & * + !
if(126,124,64,58,35,36,37,38,42,43,33) //Other symbols that we'll allow (mainly for AI)
if(126, 124, 64, 58, 35, 36, 37, 38, 42, 43, 33) //Other symbols that we'll allow (mainly for AI)
if(!last_char_group) continue //suppress at start of string
if(!allow_numbers) continue
t_out += ascii2text(ascii_char)
@@ -551,4 +551,4 @@ proc/checkhtml(var/t)
text = replacetext(text, "<img src = ntlogo.png>", "\[logo\]")
return text
#define string2charlist(string) (splittext(string, regex("(\\x0A|.)")) - splittext(string, ""))
#define string2charlist(string) (splittext(string, regex("(\\x0A|.)")) - splittext(string, ""))
+12
View File
@@ -0,0 +1,12 @@
//please store common type caches here.
//type caches should only be stored here if used in mutiple places or likely to be used in mutiple places.
//Note: typecache can only replace istype if you know for sure the thing is at least a datum.
GLOBAL_LIST_INIT(typecache_mob, typecacheof(/mob))
GLOBAL_LIST_INIT(typecache_living, typecacheof(/mob/living))
GLOBAL_LIST_INIT(typecache_stack, typecacheof(/obj/item/stack))
GLOBAL_LIST_INIT(typecache_machine_or_structure, typecacheof(list(/obj/machinery, /obj/structure)))
+1 -1
View File
@@ -17,7 +17,7 @@
//Hide/Show Action Buttons ... Button
/obj/screen/movable/action_button/hide_toggle
name = "Hide Buttons"
icon = 'icons/mob/actions.dmi'
icon = 'icons/mob/actions/actions.dmi'
icon_state = "bg_default"
var/hidden = 0
+49 -1
View File
@@ -315,6 +315,18 @@ Recharging stations are available in robotics, the dormitory bathrooms, and the
desc = "Unit's power cell is running low. Recharging stations are available in robotics, the dormitory bathrooms, and the AI satellite."
icon_state = "lowcell"
//Diona Nymph
/obj/screen/alert/nymph
name = "Gestalt merge"
desc = "You have merged with a diona gestalt and are now part of it's biomass. You can still wiggle yourself free though."
/obj/screen/alert/nymph/Click()
if(!usr || !usr.client)
return
if(isnymph(usr))
var/mob/living/simple_animal/diona/D = usr
return D.resist()
//Need to cover all use cases - emag, illegal upgrade module, malf AI hack, traitor cyborg
/obj/screen/alert/hacked
name = "Hacked"
@@ -358,12 +370,48 @@ so as to remain in compliance with the most up-to-date laws."
AI.eyeobj.setLoc(T)
//MECHS
/obj/screen/alert/low_mech_integrity
name = "Mech Damaged"
desc = "Mech integrity is low."
icon_state = "low_mech_integrity"
/obj/screen/alert/mech_port_available
name = "Connect to Port"
desc = "Click here to connect to an air port and refill your oxygen!"
icon_state = "mech_port"
var/obj/machinery/atmospherics/unary/portables_connector/target = null
/obj/screen/alert/mech_port_available/Destroy()
target = null
return ..()
/obj/screen/alert/mech_port_available/Click()
if(!usr || !usr.client)
return
if(!istype(usr.loc, /obj/mecha) || !target)
return
var/obj/mecha/M = usr.loc
if(M.connect(target))
to_chat(usr, "<span class='notice'>[M] connects to the port.</span>")
else
to_chat(usr, "<span class='notice'>[M] failed to connect to the port.</span>")
/obj/screen/alert/mech_port_disconnect
name = "Disconnect from Port"
desc = "Click here to disconnect from your air port."
icon_state = "mech_port_x"
/obj/screen/alert/mech_port_disconnect/Click()
if(!usr || !usr.client)
return
if(!istype(usr.loc, /obj/mecha))
return
var/obj/mecha/M = usr.loc
if(M.disconnect())
to_chat(usr, "<span class='notice'>[M] disconnects from the port.</span>")
else
to_chat(usr, "<span class='notice'>[M] is not connected to a port at the moment.</span>")
//GUARDIANS
/obj/screen/alert/cancharge
name = "Charge Ready"
+2
View File
@@ -18,10 +18,12 @@ GLOBAL_LIST_EMPTY(radial_menus)
/obj/screen/radial/slice/MouseEntered(location, control, params)
. = ..()
icon_state = "radial_slice_focus"
openToolTip(usr, src, params, title = name)
/obj/screen/radial/slice/MouseExited(location, control, params)
. = ..()
icon_state = "radial_slice"
closeToolTip(usr)
/obj/screen/radial/slice/Click(location, control, params)
if(usr.client == parent.current_user)
+3 -1
View File
@@ -14,7 +14,9 @@
// No comment
/atom/proc/attackby(obj/item/W, mob/user, params)
return SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, W, user, params)
if(SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, W, user, params) & COMPONENT_NO_AFTERATTACK)
return TRUE
return FALSE
/obj/attackby(obj/item/I, mob/living/user, params)
return ..() || (can_be_hit && I.attack_obj(src, user))
+1 -1
View File
@@ -261,7 +261,7 @@ SUBSYSTEM_DEF(garbage)
if(isnull(D.gc_destroyed))
if(SEND_SIGNAL(D, COMSIG_PARENT_QDELETED, force)) // Give the components a chance to prevent their parent from being deleted
if(SEND_SIGNAL(D, COMSIG_PARENT_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted
return
D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED
var/start_time = world.time
+2 -2
View File
@@ -11,10 +11,10 @@
var/check_flags = 0
var/processing = 0
var/obj/screen/movable/action_button/button = null
var/button_icon = 'icons/mob/actions.dmi'
var/button_icon = 'icons/mob/actions/actions.dmi'
var/background_icon_state = "bg_default"
var/icon_icon = 'icons/mob/actions.dmi'
var/icon_icon = 'icons/mob/actions/actions.dmi'
var/button_icon_state = "default"
var/mob/owner
+26 -16
View File
@@ -26,15 +26,18 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo
### Defines
1. `COMPONENT_INCOMPATIBLE` Return this from `/datum/component/Initialize` or `datum/component/OnTransfer` to have the component be deleted if it's applied to an incorrect type. `parent` must not be modified if this is to be returned.
1. `COMPONENT_INCOMPATIBLE` Return this from `/datum/component/Initialize` or `datum/component/OnTransfer` to have the component be deleted if it's applied to an incorrect type. `parent` must not be modified if this is to be returned. This will be noted in the runtime logs
### Vars
1. `/datum/var/list/datum_components` (private)
* Lazy associated list of type -> component/list of components.
1. `/datum/component/var/enabled` (protected, boolean)
* If the component is enabled. If not, it will not react to signals
1. `/datum/var/list/comp_lookup` (private)
* Lazy associated list of signal -> registree/list of registrees
1. `/datum/var/list/signal_procs` (private)
* Associated lazy list of signals -> `/datum/callback`s that will be run when the parent datum receives that signal
1. `/datum/var/signal_enabled` (protected, boolean)
* If the datum is signal enabled. If not, it will not react to signals
* `FALSE` by default, set to `TRUE` when a signal is registered
1. `/datum/component/var/dupe_mode` (protected, enum)
* How duplicate component types are handled when added to the datum.
@@ -46,11 +49,12 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo
* Definition of a duplicate component type
* `null` means exact match on `type` (default)
* Any other type means that and all subtypes
1. `/datum/component/var/list/signal_procs` (private)
* Associated lazy list of signals -> `/datum/callback`s that will be run when the parent datum recieves that signal
1. `/datum/component/var/datum/parent` (protected, read-only)
* The datum this component belongs to
* Never `null` in child procs
1. `report_signal_origin` (protected, boolean)
* If `TRUE`, will invoke the callback when signalled with the signal type as the first argument.
* `FALSE` by default.
### Procs
@@ -77,7 +81,7 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo
1. `/datum/proc/LoadComponent(component_type(type), ...) -> datum/component` (public, final)
* Equivalent to calling `GetComponent(component_type)` where, if the result would be `null`, returns `AddComponent(component_type, ...)` instead
1. `/datum/proc/ComponentActivated(datum/component/C)` (abstract, async)
* Called on a component's `parent` after a signal recieved causes it to activate. `src` is the parameter
* Called on a component's `parent` after a signal received causes it to activate. `src` is the parameter
* Will only be called if a component's callback returns `TRUE`
1. `/datum/proc/TakeComponent(datum/component/C)` (public, final)
* Properly transfers ownership of a component from one datum to another
@@ -86,13 +90,21 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo
1. `/datum/proc/_SendSignal(signal, list/arguments)` (private, final)
* Handles most of the actual signaling procedure
* Will runtime if used on datums with an empty component list
1. `/datum/proc/RegisterSignal(datum/target, signal(string/list of strings), proc_ref(type), override(boolean))` (protected, final)
* If signal is a list it will be as if RegisterSignal was called for each of the entries with the same following arguments
* Makes the datum listen for the specified `signal` on it's `parent` datum.
* When that signal is received `proc_ref` will be called on the component, along with associated arguments
* Example proc ref: `.proc/OnEvent`
* If a previous registration is overwritten by the call, a runtime occurs. Setting `override` to TRUE prevents this
* These callbacks run asyncronously
* Returning `TRUE` from these callbacks will trigger a `TRUE` return from the `SendSignal()` that initiated it
1. `/datum/component/New(datum/parent, ...)` (private, final)
* Runs internal setup for the component
* Extra arguments are passed to `Initialize()`
1. `/datum/component/Initialize(...)` (abstract, no-sleep)
* Called by `New()` with the same argments excluding `parent`
* Component does not exist in `parent`'s `datum_components` list yet, although `parent` is set and may be used
* Signals will not be recieved while this function is running
* Signals will not be received while this function is running
* Component may be deleted after this function completes without being attached
* Do not call `qdel(src)` from this function
1. `/datum/component/Destroy(force(bool), silent(bool))` (virtual, no-sleep)
@@ -113,13 +125,11 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo
* Clears `parent` and removes the component from it's component list
1. `/datum/component/proc/_JoinParent` (private, final)
* Tries to add the component to it's `parent`s `datum_components` list
1. `/datum/component/proc/RegisterSignal(datum/target, signal(string/list of strings), proc_ref(type), override(boolean))` (protected, final)
* If signal is a list it will be as if RegisterSignal was called for each of the entries with the same following arguments
* Makes a component listen for the specified `signal` on it's `parent` datum.
* When that signal is recieved `proc_ref` will be called on the component, along with associated arguments
* Example proc ref: `.proc/OnEvent`
* If a previous registration is overwritten by the call, a runtime occurs. Setting `override` to TRUE prevents this
* These callbacks run asyncronously
* Returning `TRUE` from these callbacks will trigger a `TRUE` return from the `_SendSignal()` that initiated it
1. `/datum/component/proc/RegisterWithParent` (abstract, no-sleep)
* Used to register the signals that should be on the `parent` object
* Use this if you plan on the component transfering between parents
1. `/datum/component/proc/UnregisterFromParent` (abstract, no-sleep)
* Counterpart to `RegisterWithParent()`
* Used to unregister the signals that should only be on the `parent` object
### See/Define signals and their arguments in __DEFINES\components.dm
+49 -44
View File
@@ -1,8 +1,6 @@
/datum/component
var/enabled = FALSE
var/dupe_mode = COMPONENT_DUPE_HIGHLANDER
var/dupe_type
var/list/signal_procs
var/datum/parent
/datum/component/New(datum/P, ...)
@@ -10,7 +8,7 @@
var/list/arguments = args.Copy(2)
if(Initialize(arglist(arguments)) == COMPONENT_INCOMPATIBLE)
qdel(src, TRUE, TRUE)
CRASH("Incompatible [type] assigned to a [P]!")
CRASH("Incompatible [type] assigned to a [P.type]! args: [json_encode(arguments)]")
_JoinParent(P)
@@ -47,19 +45,21 @@
else //only component of this type, no list
dc[I] = src
RegisterWithParent()
// If you want/expect to be moving the component around between parents, use this to register on the parent for signals
/datum/component/proc/RegisterWithParent()
return
/datum/component/proc/Initialize(...)
return
/datum/component/Destroy(force=FALSE, silent=FALSE)
enabled = FALSE
var/datum/P = parent
if(!force)
if(!force && parent)
_RemoveFromParent()
if(!silent)
SEND_SIGNAL(P, COMSIG_COMPONENT_REMOVING, src)
SEND_SIGNAL(parent, COMSIG_COMPONENT_REMOVING, src)
parent = null
for(var/target in signal_procs)
UnregisterSignal(target, signal_procs[target])
return ..()
/datum/component/proc/_RemoveFromParent()
@@ -78,7 +78,12 @@
if(!dc.len)
P.datum_components = null
/datum/component/proc/RegisterSignal(datum/target, sig_type_or_types, proc_or_callback, override = FALSE)
UnregisterFromParent()
/datum/component/proc/UnregisterFromParent()
return
/datum/proc/RegisterSignal(datum/target, sig_type_or_types, proc_or_callback, override = FALSE)
if(QDELETED(src) || QDELETED(target))
return
@@ -100,6 +105,7 @@
stack_trace("[sig_type] overridden. Use override = TRUE to suppress this warning")
procs[target][sig_type] = proc_or_callback
if(!lookup[sig_type]) // Nothing has registered here yet
lookup[sig_type] = src
else if(lookup[sig_type] == src) // We already registered here
@@ -110,8 +116,9 @@
else // Many other things have registered here
lookup[sig_type][src] = TRUE
enabled = TRUE
/datum/component/proc/UnregisterSignal(datum/target, sig_type_or_types)
signal_enabled = TRUE
/datum/proc/UnregisterSignal(datum/target, sig_type_or_types)
var/list/lookup = target.comp_lookup
if(!signal_procs || !signal_procs[target] || !lookup)
return
@@ -137,24 +144,19 @@
lookup[sig] -= src
signal_procs[target] -= sig_type_or_types
if(length(signal_procs[target]))
if(!signal_procs[target].len)
signal_procs -= target
/datum/component/proc/InheritComponent(datum/component/C, i_am_original)
return
/datum/component/proc/OnTransfer(datum/new_parent)
/datum/component/proc/PreTransfer()
return
/datum/component/proc/PostTransfer()
return
/datum/component/proc/_GetInverseTypeList(our_type = type)
#if DM_VERSION >= 513
#warn 512 is definitely stable now, remove the old code
#endif
#if DM_VERSION < 512
//remove this when we use 512 full time
set invisibility = 101
#endif
//we can do this one simple trick
var/current_type = parent_type
. = list(our_type, current_type)
@@ -166,15 +168,15 @@
/datum/proc/_SendSignal(sigtype, list/arguments)
var/target = comp_lookup[sigtype]
if(!length(target))
var/datum/component/C = target
if(!C.enabled)
var/datum/C = target
if(!C.signal_enabled)
return NONE
var/datum/callback/CB = C.signal_procs[src][sigtype]
return CB.InvokeAsync(arglist(arguments))
. = NONE
for(var/I in target)
var/datum/component/C = I
if(!C.enabled)
var/datum/C = I
if(!C.signal_enabled)
continue
var/datum/callback/CB = C.signal_procs[src][sigtype]
. |= CB.InvokeAsync(arglist(arguments))
@@ -218,12 +220,9 @@
if(ispath(nt))
if(nt == /datum/component)
CRASH("[nt] attempted instantiation!")
if(!isnum(dm))
CRASH("[nt]: Invalid dupe_mode ([dm])!")
if(dt && !ispath(dt))
CRASH("[nt]: Invalid dupe_type ([dt])!")
else
new_comp = nt
nt = new_comp.type
args[1] = src
@@ -267,21 +266,27 @@
if(!.)
return AddComponent(arglist(args))
/datum/proc/TakeComponent(datum/component/C)
if(!C)
/datum/component/proc/RemoveComponent()
if(!parent)
return
var/datum/helicopter = C.parent
if(helicopter == src)
//if we're taking to the same thing no need for anything
var/datum/old_parent = parent
PreTransfer()
_RemoveFromParent()
parent = null
SEND_SIGNAL(old_parent, COMSIG_COMPONENT_REMOVING, src)
/datum/proc/TakeComponent(datum/component/target)
if(!target || target.parent == src)
return
if(C.OnTransfer(src) == COMPONENT_INCOMPATIBLE)
qdel(C)
return
C._RemoveFromParent()
SEND_SIGNAL(helicopter, COMSIG_COMPONENT_REMOVING, C)
C.parent = src
if(C == AddComponent(C))
C._JoinParent()
if(target.parent)
target.RemoveComponent()
target.parent = src
if(target.PostTransfer() == COMPONENT_INCOMPATIBLE)
var/c_type = target.type
qdel(target)
CRASH("Incompatible [c_type] transfer attempt to a [type]!")
if(target == AddComponent(target))
target._JoinParent()
/datum/proc/TransferComponents(datum/target)
var/list/dc = datum_components
@@ -295,4 +300,4 @@
target.TakeComponent(comps)
/datum/component/nano_host()
return parent
return parent
+42 -30
View File
@@ -15,18 +15,25 @@
var/sheet_type
var/list/materials
var/show_on_examine
var/disable_attackby
var/list/allowed_typecache
var/last_inserted_id
var/precise_insertion = FALSE
var/datum/callback/precondition
var/datum/callback/after_insert
/datum/component/material_container/Initialize(list/mat_list, max_amt = 0, _show_on_examine = FALSE, list/allowed_types, datum/callback/_precondition, datum/callback/_after_insert)
/datum/component/material_container/Initialize(list/mat_list, max_amt = 0, _show_on_examine = FALSE, list/allowed_types, datum/callback/_precondition, datum/callback/_after_insert, _disable_attackby)
materials = list()
max_amount = max(0, max_amt)
show_on_examine = _show_on_examine
disable_attackby = _disable_attackby
if(allowed_types)
allowed_typecache = typecacheof(allowed_types)
if(ispath(allowed_types) && allowed_types == /obj/item/stack)
allowed_typecache = GLOB.typecache_stack
else
allowed_typecache = typecacheof(allowed_types)
precondition = _precondition
after_insert = _after_insert
@@ -43,16 +50,21 @@
materials[id] = new mat_path()
/datum/component/material_container/proc/OnExamine(datum/source, mob/user)
for(var/I in materials)
var/datum/material/M = materials[I]
var/amt = amount(M.id)
if(amt)
to_chat(user, "<span class='notice'>It has [amt] units of [lowertext(M.name)] stored.</span>")
if(show_on_examine)
for(var/I in materials)
var/datum/material/M = materials[I]
var/amt = amount(M.id)
if(amt)
to_chat(user, "<span class='notice'>It has [amt] units of [lowertext(M.name)] stored.</span>")
/datum/component/material_container/proc/OnAttackBy(datum/source, obj/item/I, mob/living/user)
var/list/tc = allowed_typecache
if(disable_attackby)
return
if(user.a_intent != INTENT_HELP)
return
if(I.flags & ABSTRACT)
return
if((I.flags_2 & (HOLOGRAM_2 | NO_MAT_REDEMPTION_2)) || (tc && !is_type_in_typecache(I, tc)))
to_chat(user, "<span class='warning'>[parent] won't accept [I]!</span>")
return
@@ -88,10 +100,9 @@
if(istype(I, /obj/item/stack))
var/obj/item/stack/S = I
to_chat(user, "<span class='notice'>You insert [inserted] [S.singular_name][inserted>1 ? "s" : ""] into [parent].</span>")
if(!QDELETED(I))
if(!user.put_in_hands(I))
stack_trace("Warning: User could not put object back in hand during material container insertion, line [__LINE__]! This can lead to issues.")
I.forceMove(user.loc)
if(!QDELETED(I) && !user.put_in_hands(I))
stack_trace("Warning: User could not put object back in hand during material container insertion, line [__LINE__]! This can lead to issues.")
I.forceMove(user.drop_location())
else
to_chat(user, "<span class='notice'>You insert a material total of [inserted] into [parent].</span>")
qdel(I)
@@ -235,24 +246,25 @@
//For spawning mineral sheets; internal use only
/datum/component/material_container/proc/retrieve(sheet_amt, datum/material/M, target = null)
if(!M.sheet_type)
return FALSE
if(sheet_amt > 0)
if(M.amount < (sheet_amt * MINERAL_MATERIAL_AMOUNT))
sheet_amt = round(M.amount / MINERAL_MATERIAL_AMOUNT)
var/count = 0
while(sheet_amt > MAX_STACK_SIZE)
new M.sheet_type(get_turf(parent), MAX_STACK_SIZE)
count += MAX_STACK_SIZE
use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id)
sheet_amt -= MAX_STACK_SIZE
if(round((sheet_amt * MINERAL_MATERIAL_AMOUNT) / MINERAL_MATERIAL_AMOUNT))
var/obj/item/stack/sheet/s = new M.sheet_type(get_turf(parent), sheet_amt)
if(target)
s.forceMove(target)
count += sheet_amt
use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id)
return count
return FALSE
return 0
if(sheet_amt <= 0)
return 0
if(!target)
target = get_turf(parent)
if(M.amount < (sheet_amt * MINERAL_MATERIAL_AMOUNT))
sheet_amt = round(M.amount / MINERAL_MATERIAL_AMOUNT)
var/count = 0
while(sheet_amt > MAX_STACK_SIZE)
new M.sheet_type(target, MAX_STACK_SIZE)
count += MAX_STACK_SIZE
use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id)
sheet_amt -= MAX_STACK_SIZE
if(sheet_amt >= 1)
new M.sheet_type(target, sheet_amt)
count += sheet_amt
use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id)
return count
/datum/component/material_container/proc/retrieve_sheets(sheet_amt, id, target = null)
if(materials[id])
@@ -386,4 +398,4 @@
/datum/material/plastic
name = "Plastic"
id = MAT_PLASTIC
sheet_type = /obj/item/stack/sheet/plastic
sheet_type = /obj/item/stack/sheet/plastic
+1
View File
@@ -324,6 +324,7 @@ var/record_id_num = 1001
S.fields["notes"] = H.sec_record
else
S.fields["notes"] = "No notes."
LAZYINITLIST(S.fields["comments"])
security += S
//Locked Record
+9
View File
@@ -3,6 +3,8 @@
var/list/active_timers //for SStimer
var/list/datum_components //for /datum/components
var/list/comp_lookup
var/list/signal_procs
var/signal_enabled = FALSE
var/var_edited = FALSE //Warranty void if seal is broken
var/tmp/unique_datum_id = null
@@ -26,6 +28,9 @@
continue
qdel(timer)
//BEGIN: ECS SHIT
signal_enabled = FALSE
var/list/dc = datum_components
if(dc)
var/all_components = dc[/datum/component]
@@ -51,6 +56,10 @@
comp.UnregisterSignal(src, sig)
comp_lookup = lookup = null
for(var/target in signal_procs)
UnregisterSignal(target, signal_procs[target])
//END: ECS SHIT
return QDEL_HINT_QUEUE
+6 -3
View File
@@ -471,7 +471,7 @@
var/objective_type_text = copytext(new_obj_type, 2)//Leave the rest of the text.
var/objective_type = "[objective_type_capital][objective_type_text]"//Add them together into a text string.
var/list/possible_targets = list("Free objective")
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
if((possible_target != src) && istype(possible_target.current, /mob/living/carbon/human))
possible_targets += possible_target.current
@@ -480,6 +480,8 @@
var/objective_list[] = list(/datum/objective/assassinate, /datum/objective/protect, /datum/objective/debrain)
if(objective&&(objective.type in objective_list) && objective:target)
def_target = objective:target.current
possible_targets = sortAtom(possible_targets)
possible_targets += "Free objective"
var/new_target = input("Select target:", "Objective target", def_target) as null|anything in possible_targets
if(!new_target)
@@ -569,11 +571,12 @@
new_objective.target_amount = target_number
if("identity theft")
var/list/possible_targets = list("Free objective")
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
if((possible_target != src) && ishuman(possible_target.current))
possible_targets += possible_target
possible_targets = sortAtom(possible_targets)
possible_targets += "Free objective"
var/new_target = input("Select target:", "Objective target") as null|anything in possible_targets
if(!new_target)
return
+8 -1
View File
@@ -10,4 +10,11 @@
MA.icon = icon
MA.icon_state = icon_state
MA.layer = layer
return MA
return MA
/mutable_appearance/clean
/mutable_appearance/clean/New()
. = ..()
alpha = 255
opacity = 1
transform = null
+8
View File
@@ -167,3 +167,11 @@
suffix = "way_home.dmm"
name = "Salvation"
description = "In the darkest times, we will find our way home."
/datum/map_template/ruin/space/oldstation
id = "oldstation"
suffix = "oldstation.dmm"
name = "Ancient Space Station"
description = "The crew of a space station awaken one hundred years after a crisis. Awaking to a derelict space station on the verge of collapse, and a hostile force of invading \
hivebots. Can the surviving crew overcome the odds and survive and rebuild, or will the cold embrace of the stars become their new home?"
cost = 2
+52
View File
@@ -0,0 +1,52 @@
/datum/spawners_menu
var/mob/dead/observer/owner
/datum/spawners_menu/New(mob/dead/observer/new_owner)
if(!istype(new_owner))
qdel(src)
owner = new_owner
/datum/spawners_menu/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = FALSE, datum/nanoui/master_ui = null)
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "spawners_menu.tmpl", "Spawners Menu", 700, 600, master_ui)
ui.open()
/datum/spawners_menu/ui_data(mob/user)
var/list/data = list()
data["spawners"] = list()
for(var/spawner in GLOB.mob_spawners)
var/list/this = list()
this["name"] = spawner
this["desc"] = ""
this["uids"] = list()
for(var/spawner_obj in GLOB.mob_spawners[spawner])
this["uids"] += "\ref[spawner_obj]"
if(!this["desc"])
if(istype(spawner_obj, /obj/effect/mob_spawn))
var/obj/effect/mob_spawn/MS = spawner_obj
this["desc"] = MS.flavour_text
else
var/obj/O = spawner_obj
this["desc"] = O.desc
this["amount_left"] = LAZYLEN(GLOB.mob_spawners[spawner])
data["spawners"] += list(this)
return data
/datum/spawners_menu/Topic(href, href_list)
if(..())
return 1
var/spawners = replacetext(href_list["uid"], ",", ";")
var/list/possible_spawners = params2list(spawners)
var/obj/effect/mob_spawn/MS = locate(pick(possible_spawners))
if(!MS || !istype(MS))
log_runtime(EXCEPTION("A ghost tried to interact with an invalid spawner, or the spawner didn't exist."))
return
switch(href_list["action"])
if("jump")
owner.forceMove(get_turf(MS))
. = TRUE
if("spawn")
MS.attack_ghost(owner)
. = TRUE
+1 -1
View File
@@ -97,7 +97,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
var/centcom_cancast = 1 //Whether or not the spell should be allowed on z2
var/datum/action/spell_action/action = null
var/action_icon = 'icons/mob/actions.dmi'
var/action_icon = 'icons/mob/actions/actions.dmi'
var/action_icon_state = "spell_default"
var/action_background_icon_state = "bg_spell"
+23 -8
View File
@@ -999,6 +999,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/card/emag
cost = 6
/datum/uplink_item/device_tools/access_tuner
name = "Access Tuner"
desc = "The access tuner is a small device that can interface with airlocks from range. It takes a few seconds to connect and can change the bolt state, open the door, or toggle emergency access."
reference = "HACK"
item = /obj/item/door_remote/omni/access_tuner
cost = 6
/datum/uplink_item/device_tools/toolbox
name = "Fully Loaded Toolbox"
desc = "The syndicate toolbox is a suspicious black and red. Aside from tools, it comes with insulated gloves and a multitool."
@@ -1020,12 +1027,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/storage/box/syndie_kit/bonerepair
cost = 6
/datum/uplink_item/device_tools/military_belt
name = "Military Belt"
desc = "A robust seven-slot red belt made for carrying a broad variety of weapons, ammunition and explosives"
/datum/uplink_item/device_tools/traitor_belt
name = "Traitor's Toolbelt"
desc = "A robust seven-slot belt made for carrying a broad variety of weapons, ammunition and explosives. It's modelled after the standard NT toolbelt so as to avoid suspicion while wearing it."
reference = "SBM"
item = /obj/item/storage/belt/military
cost = 3
item = /obj/item/storage/belt/military/traitor
cost = 2
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/device_tools/thermal_drill
@@ -1061,8 +1068,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/suits/space_suit
name = "Syndicate Space Suit"
desc = "This red and black syndicate space suit is less encumbering than Nanotrasen variants, \
fits inside bags, and has a weapon slot. Nanotrasen crewmembers are trained to report red space suit \
sightings, however."
fits inside bags, and has a weapon slot. Comes packaged with internals. Nanotrasen crewmembers are trained to report red space suit \
sightings, however. "
reference = "SS"
item = /obj/item/storage/box/syndie_kit/space
cost = 4
@@ -1072,7 +1079,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = "The feared suit of a syndicate nuclear agent. Features armor and a combat mode \
for faster movement on station. Toggling the suit in and out of \
combat mode will allow you all the mobility of a loose fitting uniform without sacrificing armoring. \
Additionally the suit is collapsible, making it small enough to fit within a backpack. \
Additionally the suit is collapsible, making it small enough to fit within a backpack. Comes packaged with internals. \
Nanotrasen crew who spot these suits are known to panic."
reference = "BRHS"
item = /obj/item/storage/box/syndie_kit/hardsuit
@@ -1417,6 +1424,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/storage/secure/briefcase/syndie
cost = 1
/datum/uplink_item/badass/plasticbag
name = "Plastic Bag"
desc = "A simple, plastic bag. Keep out of reach of small children, do not apply to head."
reference = "PBAG"
item = /obj/item/storage/bag/plasticbag
cost = 1
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/badass/balloon
name = "For showing that you are The Boss"
desc = "A useless red balloon with the syndicate logo on it, which can blow the deepest of covers."
+1 -1
View File
@@ -163,7 +163,7 @@
/mob/living/carbon/med_hud_set_status()
var/image/holder = hud_list[STATUS_HUD]
var/mob/living/simple_animal/borer/B = has_brain_worms()
if(stat == DEAD)
if(stat == DEAD || (status_flags & FAKEDEATH))
holder.icon_state = "huddead"
else if(status_flags & XENO_HOST)
holder.icon_state = "hudxeno"
+15 -13
View File
@@ -78,22 +78,24 @@
for(var/mob/living/player in GLOB.mob_list)
if(player.client && player.stat != DEAD)
playercount += 1
if(player.client && player.mind && player.mind.special_role && player.stat != DEAD)
traitorcount += 1
if(player.client && player.mind && !player.mind.special_role && player.stat != DEAD)
if(!player.mind)
continue
if(player.mind.special_role)
traitorcount += 1
continue
if(ishuman(player) || isrobot(player) || isAI(player))
if(player.client && (ROLE_TRAITOR in player.client.prefs.be_special) && !jobban_isbanned(player, ROLE_TRAITOR) && !jobban_isbanned(player, "Syndicate"))
if((ROLE_TRAITOR in player.client.prefs.be_special) && !player.client.skip_antag && !jobban_isbanned(player, ROLE_TRAITOR) && !jobban_isbanned(player, "Syndicate"))
possible_traitors += player.mind
for(var/datum/mind/player in possible_traitors)
for(var/job in restricted_jobs)
if(player.assigned_role == job)
possible_traitors -= player
if(player.current) // Remove mindshield-implanted mobs from the list
if(ishuman(player.current))
var/mob/living/carbon/human/H = player.current
for(var/obj/item/implant/mindshield/I in H.contents)
if(I && I.implanted)
possible_traitors -= player
if(!player.current || !ishuman(player.current)) // Remove mindshield-implanted mobs from the list
continue
var/mob/living/carbon/human/H = player.current
for(var/obj/item/implant/mindshield/I in H.contents)
if(I && I.implanted)
possible_traitors -= player
//message_admins("Live Players: [playercount]")
//message_admins("Live Traitors: [traitorcount]")
@@ -159,7 +161,7 @@
if(SSshuttle.emergency.mode >= SHUTTLE_ESCAPE)
return
//message_admins("Late Join Check")
if(character.client && (ROLE_TRAITOR in character.client.prefs.be_special) && !jobban_isbanned(character, ROLE_TRAITOR) && !jobban_isbanned(character, "Syndicate"))
if(character.client && (ROLE_TRAITOR in character.client.prefs.be_special) && !character.client.skip_antag && !jobban_isbanned(character, ROLE_TRAITOR) && !jobban_isbanned(character, "Syndicate"))
//message_admins("Late Joiner has Be Syndicate")
//message_admins("Checking number of players")
var/playercount = 0
@@ -167,8 +169,8 @@
for(var/mob/living/player in GLOB.mob_list)
if(player.client && player.stat != DEAD)
playercount += 1
if(player.client && player.mind && player.mind.special_role && player.stat != DEAD)
traitorcount += 1
if(player.mind && player.mind.special_role)
traitorcount += 1
//message_admins("Live Players: [playercount]")
//message_admins("Live Traitors: [traitorcount]")
+1 -1
View File
@@ -55,7 +55,7 @@ var/list/blob_nodes = list()
/datum/game_mode/blob/proc/get_blob_candidates()
var/list/candidates = list()
for(var/mob/living/carbon/human/player in GLOB.player_list)
if(!player.stat && player.mind && !player.mind.special_role && !jobban_isbanned(player, "Syndicate") && (ROLE_BLOB in player.client.prefs.be_special))
if(!player.stat && player.mind && !player.client.skip_antag && !player.mind.special_role && !jobban_isbanned(player, "Syndicate") && (ROLE_BLOB in player.client.prefs.be_special))
candidates += player
return candidates
@@ -17,7 +17,10 @@
user.status_flags |= FAKEDEATH //play dead
user.update_stat("fakedeath sting")
user.update_canmove()
user.med_hud_set_health()
user.handle_hud_icons_health()
user.med_hud_set_status()
addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME)
feedback_add_details("changeling_powers","FD")
return 1
@@ -30,9 +30,9 @@
for(var/mob/living/silicon/S in range(2,user))
to_chat(S, "<span class='userdanger'>Your sensors are disabled by a shower of blood!</span>")
S.Weaken(3)
var/turf = get_turf(user)
var/new_location = user.drop_location()
spawn(5) // So it's not killed in explosion
var/mob/living/simple_animal/hostile/headcrab/crab = new(turf)
var/mob/living/simple_animal/hostile/headcrab/crab = new(new_location)
for(var/obj/item/organ/internal/I in organs)
I.loc = crab
crab.origin = M
@@ -277,6 +277,7 @@
return
C.visible_message("<span class='danger'>[src] impales [C] with [I]!</span>", "<span class='userdanger'>[src] impales you with [I]!</span>")
add_attack_logs(src, C, "[src] pulled [C] with a tentacle, attacking them with [I]") //Attack log is here so we can fetch the item they're stabbing with.
C.apply_damage(I.force, BRUTE, "chest")
do_item_attack_animation(C, used_item = I)
add_blood(C)
@@ -292,6 +293,7 @@
var/obj/item/I = target
if(!I.anchored)
to_chat(firer, "<span class='notice'>You pull [I] towards yourself.</span>")
add_attack_logs(src, I, "[src] pulled [I] towards them with a tentacle")
H.throw_mode_on()
I.throw_at(H, 10, 2)
. = 1
@@ -304,6 +306,7 @@
switch(firer.a_intent)
if(INTENT_HELP)
C.visible_message("<span class='danger'>[L] is pulled by [H]'s tentacle!</span>","<span class='userdanger'>A tentacle grabs you and pulls you towards [H]!</span>")
add_attack_logs(H, L, "[H] pulled [L] towards them with a tentacle")
C.throw_at(get_step_towards(H,C), 8, 2)
return 1
@@ -312,10 +315,12 @@
if(I)
if(C.drop_item())
C.visible_message("<span class='danger'>[I] is yanked out of [C]'s hand by [src]!</span>","<span class='userdanger'>A tentacle pulls [I] away from you!</span>")
add_attack_logs(src, C, "[src] has grabbed [I] out of [C]'s hand with a tentacle")
on_hit(I) //grab the item as if you had hit it directly with the tentacle
return 1
else
to_chat(firer, "<span class='danger'>You can't seem to pry [I] out of [C]'s hands!</span>")
add_attack_logs(src, C, "[src] tried to grab [I] out of [C]'s hand with a tentacle, but failed")
return 0
else
to_chat(firer, "<span class='danger'>[C] has nothing in hand to disarm!</span>")
@@ -323,6 +328,7 @@
if(INTENT_GRAB)
C.visible_message("<span class='danger'>[L] is grabbed by [H]'s tentacle!</span>","<span class='userdanger'>A tentacle grabs you and pulls you towards [H]!</span>")
add_attack_logs(src, C, "[src] has grabbed [C] and pulled them towards [H] with a tentacle")
C.throw_at(get_step_towards(H,C), 8, 2, callback=CALLBACK(H, /mob/proc/tentacle_grab, C))
return 1
+1 -1
View File
@@ -271,7 +271,7 @@
// Get a list of all the people who want to be the antagonist for this round, except those with incompatible species
for(var/mob/new_player/player in players)
if(!player.skip_antag)
if(!player.client.skip_antag)
if((role in player.client.prefs.be_special) && !(player.client.prefs.species in protected_species))
player_draft_log += "[player.key] had [roletext] enabled, so we are drafting them."
candidates += player.mind
+7
View File
@@ -1072,6 +1072,13 @@
if(buildstage < 1)
to_chat(user, "The circuit is missing.")
/obj/machinery/alarm/all_access
name = "all-access air alarm"
desc = "This particular atmos control unit appears to have no access restrictions."
locked = FALSE
req_access = null
req_one_access = null
/*
AIR ALARM CIRCUIT
Just an object used in constructing air alarms
+1 -1
View File
@@ -38,7 +38,7 @@
var/list/categories = list("Tools", "Electronics", "Construction", "Communication", "Security", "Machinery", "Medical", "Miscellaneous", "Dinnerware", "Imported")
/obj/machinery/autolathe/New()
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), 0, FALSE, null, null, CALLBACK(src, .proc/AfterMaterialInsert))
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert))
..()
component_parts = list()
component_parts += new /obj/item/circuitboard/autolathe(null)
+4 -29
View File
@@ -169,41 +169,16 @@
screen = SEC_DATA_R_LIST
if("criminal")
if(active2)
var/their_name = active2.fields["name"]
var/their_rank = active2.fields["rank"]
var/t1
if(temp_href[2] == "execute")
t1 = copytext(trim(sanitize(input("Explain why they are being executed. Include a list of their crimes, and victims.", "EXECUTION ORDER", null, null) as text)), 1, MAX_MESSAGE_LEN)
else
t1 = copytext(trim(sanitize(input("Enter Reason:", "Secure. records", null, null) as text)), 1, MAX_MESSAGE_LEN)
var/visible_reason
if(t1)
visible_reason = t1
else
if(!t1)
t1 = "(none)"
visible_reason = "<span class='warning'>NO REASON PROVIDED</span>"
switch(temp_href[2])
if("none")
active2.fields["criminal"] = "None"
if("arrest")
active2.fields["criminal"] = "*Arrest*"
if("execute")
if((access_magistrate in authcard_access) || (access_armory in authcard_access))
active2.fields["criminal"] = "*Execute*"
message_admins("[ADMIN_FULLMONTY(usr)] authorized <span class='warning'>EXECUTION</span> for [their_rank] [their_name], with comment: [visible_reason]")
else
setTemp("<h3 class='bad'>Error: permission denied.</h3>")
return 1
if("incarcerated")
active2.fields["criminal"] = "Incarcerated"
if("parolled")
active2.fields["criminal"] = "Parolled"
if("released")
active2.fields["criminal"] = "Released"
var/newstatus = active2.fields["criminal"]
log_admin("[key_name_admin(usr)] set secstatus of [their_rank] [their_name] to [newstatus], comment: [t1]")
active2.fields["comments"] += "Set to [newstatus] by [usr.name] ([rank]) on [current_date_string] [station_time_timestamp()], comment: [t1]"
update_all_mob_security_hud()
if(!set_criminal_status(usr, active2, temp_href[2], t1, rank, authcard_access))
setTemp("<h3 class='bad'>Error: permission denied.</h3>")
return 1
if("rank")
if(active1)
active1.fields["rank"] = temp_href[2]
@@ -730,6 +730,13 @@ obj/item/circuitboard/rdserver
/obj/item/stock_parts/matter_bin = 1)
var/target
/obj/item/circuitboard/teleporter_perma/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/gps))
var/obj/item/gps/L = I
if(L.locked_location)
target = get_turf(L.locked_location)
to_chat(user, "<span class='caution'>You upload the data from [L]</span>")
/obj/item/circuitboard/telesci_pad
name = "Circuit board (Telepad)"
build_path = /obj/machinery/telepad
+5 -2
View File
@@ -1,7 +1,7 @@
#define CHARS_PER_LINE 5
#define FONT_SIZE "5pt"
#define FONT_COLOR "#09f"
#define FONT_STYLE "Arial Black"
#define FONT_STYLE "Small Fonts"
///////////////////////////////////////////////////////////////////////////////////////////////
// Brig Door control displays.
@@ -30,6 +30,7 @@
var/datum/data/record/prisoner
maptext_height = 26
maptext_width = 32
maptext_y = -1
/obj/machinery/door_timer/proc/print_report()
var/logname = input(usr, "Name of the guilty?","[id] log name")
@@ -349,7 +350,7 @@
if(timing)
var/disp1 = id
var/timeleft = timeleft()
var/disp2 = "[add_zero(num2text((timeleft / 60) % 60),2)]~[add_zero(num2text(timeleft % 60), 2)]"
var/disp2 = "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]"
if(length(disp2) > CHARS_PER_LINE)
disp2 = "Error"
update_display(disp1, disp2)
@@ -372,6 +373,8 @@
//Checks to see if there's 1 line or 2, adds text-icons-numbers/letters over display
// Stolen from status_display
/obj/machinery/door_timer/proc/update_display(line1, line2)
line1 = uppertext(line1)
line2 = uppertext(line2)
var/new_text = {"<div style="font-size:[FONT_SIZE];color:[FONT_COLOR];font:'[FONT_STYLE]';text-align:center;" valign="top">[line1]<br>[line2]</div>"}
if(maptext != new_text)
maptext = new_text
+2 -3
View File
@@ -141,16 +141,15 @@ Class Procs:
/obj/machinery/makeSpeedProcess()
if(speed_process)
return
speed_process = 1
speed_process = TRUE
STOP_PROCESSING(SSmachines, src)
GLOB.fast_processing += src
isprocessing = TRUE
// gotta go slow
/obj/machinery/makeNormalProcess()
if(!speed_process)
return
speed_process = 0
speed_process = FALSE
START_PROCESSING(SSmachines, src)
GLOB.fast_processing -= src
+3 -3
View File
@@ -62,7 +62,7 @@
continue
handleTemp(M) //handles pool temp effects on the swimmers
if(ishuman(M)) //Only human types will drown, to keep things simple for non-human mobs that live in the water
handleDrowning(M)
handleDrowning(M)
/obj/machinery/poolcontroller/proc/cleanPool()
for(var/obj/effect/decal/cleanable/decal in decalinpool) //Cleans up cleanable decals like blood and such
@@ -79,11 +79,11 @@
to_chat(M, "<span class='danger'>The water is searing hot!</span>")
if(WARM) //Warm the mob.
if(prob(50)) //inform the mob of warm water half the time
if(prob(5)) //inform the mob of warm water occasionally
to_chat(M, "<span class='warning'>The water is quite warm.</span>")//Inform the mob it's warm water.
if(COOL) //Cool the mob.
if(prob(50)) //inform the mob of cold water half the time
if(prob(5)) //inform the mob of cold water occasionally
to_chat(M, "<span class='warning'>The water is chilly.</span>")//Inform the mob it's chilly water.
if(FRIGID) //YOU'RE AS COLD AS ICE
+2 -1
View File
@@ -18,7 +18,8 @@ var/const/SAFETY_COOLDOWN = 100
var/item_recycle_sound = 'sound/machines/recycler.ogg'
/obj/machinery/recycler/New()
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_PLASTIC, MAT_BLUESPACE))
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_PLASTIC, MAT_BLUESPACE), 0,
TRUE, null, null, null, TRUE)
..()
component_parts = list()
component_parts += new /obj/item/circuitboard/recycler(null)
+4 -1
View File
@@ -1,7 +1,7 @@
#define FONT_SIZE "5pt"
#define FONT_COLOR "#09f"
#define WARNING_FONT_COLOR "#f90"
#define FONT_STYLE "Arial Black"
#define FONT_STYLE "Small Fonts"
#define SCROLL_SPEED 2
// Status display
@@ -39,6 +39,7 @@
maptext_height = 26
maptext_width = 32
maptext_y = -1
var/const/CHARS_PER_LINE = 5
var/const/STATUS_DISPLAY_BLANK = 0
@@ -157,6 +158,8 @@
overlays += image('icons/obj/status_display.dmi', icon_state=picture_state)
/obj/machinery/status_display/proc/update_display(line1, line2, warning = 0)
line1 = uppertext(line1)
line2 = uppertext(line2)
var/new_text = {"<div style="font-size:[FONT_SIZE];color:[warning ? WARNING_FONT_COLOR : FONT_COLOR];font:'[FONT_STYLE]';text-align:center;" valign="top">[line1]<br>[line2]</div>"}
if(maptext != new_text)
maptext = new_text
+42
View File
@@ -530,6 +530,48 @@
qdel(G)
/obj/item/bombcore/toxins
name = "toxins payload"
desc = "A payload casing designed to secure a gas based bomb. Must be loaded with a tank transfer valve and installed into a plasteel bomb frame in order to be detonated."
origin_tech = "materials=1;engineering=1"
icon_state = "chemcore"
var/obj/item/transfer_valve/ttv = null
/obj/item/bombcore/toxins/attackby(obj/item/I, mob/user)
if(iscrowbar(I) && ttv)
playsound(loc, I.usesound, 50, 1)
ttv.forceMove(get_turf(src))
ttv = null
else if(istype(I, /obj/item/transfer_valve))
if(!ttv && !check_attached(I))
if(!user.drop_item())
return
to_chat(user, "<span class='notice'>You load [src] with [I].</span>")
ttv = I
I.forceMove(src)
else if (ttv)
to_chat(user, "<span class='warning'>Another tank transfer valve is already loaded.</span>")
else
to_chat(user, "<span class='warning'>Remove the attached assembly component first.</span>")
else
return ..()
/obj/item/bombcore/toxins/proc/check_attached(obj/item/transfer_valve/ttv)
if (ttv.attached_device)
return TRUE
else
return FALSE
/obj/item/bombcore/toxins/ex_act(severity) //No chain reactions, the explosion only occurs when gas mixes
return
/obj/item/bombcore/toxins/burn()
return
/obj/item/bombcore/toxins/detonate()
if(ttv)
ttv.toggle_valve()
///Syndicate Detonator (aka the big red button)///
/obj/item/syndicatedetonator
+7 -50
View File
@@ -12,10 +12,15 @@
max_temperature = 30000
infra_luminosity = 8
force = 40
var/defence = 0
var/defence_deflect = 35
wreckage = /obj/effect/decal/mecha_wreckage/durand
/obj/mecha/combat/durand/GrantActions(mob/living/user, human_occupant = 0)
..()
defense_action.Grant(user, src)
/obj/mecha/combat/durand/RemoveActions(mob/living/user, human_occupant = 0)
..()
defense_action.Remove(user)
/obj/mecha/combat/durand/loaded/New()
..()
@@ -24,54 +29,6 @@
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack
ME.attach(src)
/obj/mecha/combat/durand/relaymove(mob/user,direction)
if(defence)
if(world.time - last_message > 20)
occupant_message("<font color='red'>Unable to move while in defence mode</font>")
last_message = world.time
return 0
. = ..()
/obj/mecha/combat/durand/verb/defence_mode()
set category = "Exosuit Interface"
set name = "Toggle defence mode"
set src = usr.loc
set popup_menu = 0
if(usr != occupant)
return
defence = !defence
if(defence)
deflect_chance = defence_deflect
occupant_message("<font color='blue'>You enable [src] defence mode.</font>")
else
deflect_chance = initial(deflect_chance)
occupant_message("<font color='red'>You disable [src] defence mode.</font>")
log_message("Toggled defence mode.")
/obj/mecha/combat/durand/get_stats_part()
var/output = ..()
output += "<b>Defence mode: [defence?"on":"off"]</b>"
return output
/obj/mecha/combat/durand/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Special</div>
<div class='links'>
<a href='?src=[UID()];toggle_defence_mode=1'>Toggle defence mode</a>
</div>
</div>
"}
output += ..()
return output
/obj/mecha/combat/durand/Topic(href, href_list)
..()
if(href_list["toggle_defence_mode"])
defence_mode()
/obj/mecha/combat/durand/old
desc = "A retired, third-generation combat exosuit utilized by the Nanotrasen corporation. Originally developed to combat hostile alien lifeforms."
name = "Durand"
+12 -57
View File
@@ -11,13 +11,21 @@
armor = list(melee = 25, bullet = 20, laser = 30, energy = 15, bomb = 0, bio = 0, rad = 0)
max_temperature = 25000
infra_luminosity = 6
var/overload = 0
var/overload_coeff = 2
leg_overload_coeff = 2
wreckage = /obj/effect/decal/mecha_wreckage/gygax
internal_damage_threshold = 35
max_equip = 3
maxsize = 2
step_energy_drain = 3
normal_step_energy_drain = 3
/obj/mecha/combat/gygax/GrantActions(mob/living/user, human_occupant = 0)
..()
overload_action.Grant(user, src)
/obj/mecha/combat/gygax/RemoveActions(mob/living/user, human_occupant = 0)
..()
overload_action.Remove(user)
/obj/mecha/combat/gygax/loaded/New()
..()
@@ -35,7 +43,7 @@
deflect_chance = 15
damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8)
max_temperature = 35000
overload_coeff = 1
leg_overload_coeff = 100
operation_req_access = list(access_syndicate)
wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark
max_equip = 4
@@ -55,57 +63,4 @@
/obj/mecha/combat/gygax/dark/add_cell()
cell = new /obj/item/stock_parts/cell/bluespace(src)
cell.charge = 30000
cell.maxcharge = 30000
/obj/mecha/combat/gygax/verb/overload()
set category = "Exosuit Interface"
set name = "Toggle leg actuators overload"
set src = usr.loc
set popup_menu = 0
if(usr != occupant)
return
if(overload)
overload = 0
step_in = initial(step_in)
step_energy_drain = initial(step_energy_drain)
occupant_message("<font color='blue'>You disable leg actuators overload.</font>")
else
overload = 1
step_in = min(1, round(step_in/2))
step_energy_drain = step_energy_drain*overload_coeff
occupant_message("<font color='red'>You enable leg actuators overload.</font>")
log_message("Toggled leg actuators overload.")
/obj/mecha/combat/gygax/domove(direction)
if(!..())
return
if(overload)
health--
if(health < initial(health) - initial(health) / 3)
overload = 0
step_in = initial(step_in)
step_energy_drain = initial(step_energy_drain)
occupant_message("<font color='red'>Leg actuators damage threshold exceded. Disabling overload.</font>")
/obj/mecha/combat/gygax/get_stats_part()
var/output = ..()
output += "<b>Leg actuators overload: [overload?"on":"off"]</b>"
return output
/obj/mecha/combat/gygax/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Special</div>
<div class='links'>
<a href='?src=[UID()];toggle_leg_overload=1'>Toggle leg actuators overload</a>
</div>
</div>
"}
output += ..()
return output
/obj/mecha/combat/gygax/Topic(href, href_list)
..()
if(href_list["toggle_leg_overload"])
overload()
cell.maxcharge = 30000
+12 -105
View File
@@ -11,12 +11,6 @@
max_temperature = 60000
burn_state = LAVA_PROOF
infra_luminosity = 3
var/zoom = 0
var/thrusters = 0
var/smoke = 5
var/smoke_ready = 1
var/smoke_cooldown = 100
var/datum/effect_system/smoke_spread/smoke_system = new
operation_req_access = list(access_cent_specops)
wreckage = /obj/effect/decal/mecha_wreckage/marauder
add_req_access = 0
@@ -24,6 +18,17 @@
force = 45
max_equip = 5
/obj/mecha/combat/marauder/GrantActions(mob/living/user, human_occupant = 0)
. = ..()
thrusters_action.Grant(user, src)
smoke_action.Grant(user, src)
zoom_action.Grant(user, src)
/obj/mecha/combat/marauder/RemoveActions(mob/living/user, human_occupant = 0)
. = ..()
thrusters_action.Remove(user)
smoke_action.Remove(user)
zoom_action.Remove(user)
/obj/mecha/combat/marauder/loaded/New()
..()
@@ -37,8 +42,6 @@
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src)
ME.attach(src)
smoke_system.set_up(3, 0, src)
smoke_system.attach(src)
/obj/mecha/combat/marauder/seraph
desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel."
@@ -98,100 +101,4 @@
ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src)
ME.attach(src)
smoke_system.set_up(3, 0, src)
smoke_system.attach(src)
/obj/mecha/combat/marauder/relaymove(mob/user,direction)
if(zoom)
if(world.time - last_message > 20)
occupant_message("Unable to move while in zoom mode.")
last_message = world.time
return 0
return ..()
/obj/mecha/combat/marauder/Process_Spacemove(var/movement_dir = 0)
if(..())
return 1
if(thrusters && movement_dir && use_power(step_energy_drain))
return 1
return 0
/obj/mecha/combat/marauder/verb/toggle_thrusters()
set category = "Exosuit Interface"
set name = "Toggle thrusters"
set src = usr.loc
set popup_menu = 0
if(usr != occupant)
return
if(occupant)
if(get_charge() > 0)
thrusters = !thrusters
log_message("Toggled thrusters.")
occupant_message("<font color='[thrusters?"blue":"red"]'>Thrusters [thrusters?"en":"dis"]abled.")
/obj/mecha/combat/marauder/verb/smoke()
set category = "Exosuit Interface"
set name = "Smoke"
set src = usr.loc
set popup_menu = 0
if(usr != occupant)
return
if(smoke_ready && smoke>0)
smoke_system.start()
smoke--
smoke_ready = 0
spawn(smoke_cooldown)
smoke_ready = 1
/obj/mecha/combat/marauder/verb/zoom()
set category = "Exosuit Interface"
set name = "Zoom"
set src = usr.loc
set popup_menu = 0
if(usr != occupant)
return
if(occupant.client)
zoom = !zoom
log_message("Toggled zoom mode.")
occupant_message("<font color='[zoom?"blue":"red"]'>Zoom mode [zoom?"en":"dis"]abled.</font>")
if(zoom)
occupant.client.AddViewMod("mecha", 12)
to_chat(occupant, sound('sound/mecha/imag_enh.ogg',volume=50))
else
occupant.client.RemoveViewMod("mecha")
/obj/mecha/combat/marauder/get_stats_part()
var/output = ..()
output += {"<b>Smoke:</b> [smoke]
<br>
<b>Thrusters:</b> [thrusters?"on":"off"]
"}
return output
/obj/mecha/combat/marauder/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Special</div>
<div class='links'>
<a href='?src=[UID()];toggle_thrusters=1'>Toggle thrusters</a><br>
<a href='?src=[UID()];toggle_zoom=1'>Toggle zoom mode</a><br>
<a href='?src=[UID()];smoke=1'>Smoke</a>
</div>
</div>
"}
output += ..()
return output
/obj/mecha/combat/marauder/Topic(href, href_list)
..()
if(href_list["toggle_thrusters"])
toggle_thrusters()
if(href_list["smoke"])
smoke()
if(href_list["toggle_zoom"])
zoom()
ME.attach(src)
+12 -52
View File
@@ -6,6 +6,7 @@
step_in = 2
dir_in = 2 //Facing south.
step_energy_drain = 3
normal_step_energy_drain = 3
health = 200
deflect_chance = 30
damage_absorption = list("brute"=0.7,"fire"=0.7,"bullet"=0.7,"laser"=0.7,"energy"=0.7,"bomb"=0.7)
@@ -17,10 +18,18 @@
//operation_req_access = list()
internal_damage_threshold = 25
force = 15
var/phasing = 0
var/phasing_energy_drain = 200
phase_state = "phazon-phase"
max_equip = 3
/obj/mecha/combat/phazon/GrantActions(mob/living/user, human_occupant = 0)
..()
phasing_action.Grant(user, src)
switch_damtype_action.Grant(user, src)
/obj/mecha/combat/phazon/RemoveActions(mob/living/user, human_occupant = 0)
..()
phasing_action.Remove(user)
switch_damtype_action.Remove(user)
/obj/mecha/combat/phazon/New()
..()
@@ -29,62 +38,13 @@
ME = new /obj/item/mecha_parts/mecha_equipment/gravcatapult
ME.attach(src)
/obj/mecha/combat/phazon/mechstep(direction)
. = ..()
if(!. && phasing && get_charge() >= phasing_energy_drain)
if(can_move)
can_move = 0
flick("phazon-phase", src)
forceMove(get_step(src, direction))
use_power(phasing_energy_drain)
playsound(src,stepsound,40,1)
sleep(step_in * 3)
can_move = 1
return 1
/obj/mecha/combat/phazon/click_action(atom/target,mob/user)
if(phasing)
occupant_message("Unable to interact with objects while phasing")
return
return ..()
/obj/mecha/combat/phazon/verb/switch_damtype()
set category = "Exosuit Interface"
set name = "Reconfigure arm microtool arrays"
set src = usr.loc
set popup_menu = 0
if(usr != occupant)
return
var/new_damtype = alert(occupant, "Arm Tool Selection", null, "Fists", "Torch", "Toxic Injector")
switch(new_damtype)
if("Fists")
damtype = "brute"
occupant_message("Your exosuit's hands form into fists.")
if("Torch")
damtype = "fire"
occupant_message("A torch tip extends from your exosuit's hand, glowing red.")
if("Toxic Injector")
damtype = "tox"
occupant_message("A bone-chillingly thick plasteel needle protracts from the exosuit's palm.")
playsound(src, 'sound/mecha/mechmove01.ogg', 50, 1)
/obj/mecha/combat/phazon/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Special</div>
<div class='links'>
<a href='?src=[UID()];phasing=1'><span id="phasing_command">[phasing?"Dis":"En"]able phasing</span></a><br>
<a href='?src=[UID()];switch_damtype=1'>Change melee damage type</a><br>
</div>
</div>
"}
output += ..()
return output
/obj/mecha/combat/phazon/Topic(href, href_list)
..()
if(href_list["switch_damtype"])
switch_damtype()
if(href_list["phasing"])
phasing = !phasing
send_byjax(occupant,"exosuit.browser","phasing_command","[phasing?"Dis":"En"]able phasing")
occupant_message("<font color=\"[phasing?"#00f\">En":"#f00\">Dis"]abled phasing.</font>")
return output
+2 -1
View File
@@ -15,7 +15,8 @@
add_req_access = 0
internal_damage_threshold = 60
max_equip = 3
step_energy_drain = 3
step_energy_drain = 3
normal_step_energy_drain = 3
stepsound = null
turnsound = null
@@ -15,7 +15,8 @@
return
if(isobj(target))
var/obj/target_obj = target
if(target_obj.unacidable)
if(target_obj.unacidable && !istype(target_obj, /obj/mecha))
occupant_message("<span class='danger'>[target] is too durable to drill through.</span>")
return
target.visible_message("<span class='warning'>[chassis] starts to drill [target].</span>",
"<span class='userdanger'>[chassis] starts to drill [target]...</span>",
+1 -1
View File
@@ -39,7 +39,7 @@
/obj/machinery/mecha_part_fabricator/New()
var/datum/component/material_container/materials = AddComponent(/datum/component/material_container,
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE), 0,
FALSE, list(/obj/item/stack, /obj/item/stack/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
FALSE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
materials.precise_insertion = TRUE
..()
component_parts = list()
+159 -147
View File
@@ -7,6 +7,9 @@
#define MELEE 1
#define RANGED 2
#define MECHAMOVE_RAND 1
#define MECHAMOVE_TURN 2
#define MECHAMOVE_STEP 4
/obj/mecha
name = "Mecha"
@@ -21,11 +24,13 @@
force = 5
armor = list(melee = 20, bullet = 10, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
var/initial_icon = null //Mech type for resetting icon. Only used for reskinning kits (see custom items)
var/can_move = 1
var/can_move = 0 // time of next allowed movement
var/mob/living/carbon/occupant = null
var/step_in = 10 //make a step in step_in/10 sec.
var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South.
var/normal_step_energy_drain = 10
var/step_energy_drain = 10
var/overload_step_energy_drain_min = 100
var/health = 300 //health is health
var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
//the values in this list show how much damage will pass through, not how much will be absorbed.
@@ -69,32 +74,42 @@
var/turf/crashing = null
var/occupant_sight_flags = 0
var/stepsound = 'sound/mecha/mechstep.ogg'
var/turnsound = 'sound/mecha/mechturn.ogg'
var/melee_cooldown = 10
var/melee_can_hit = 1
// Action vars
var/defence_mode = FALSE
var/defence_mode_deflect_chance = 35
var/leg_overload_mode = FALSE
var/leg_overload_coeff = 100
var/thrusters_active = FALSE
var/smoke = 5
var/smoke_ready = 1
var/smoke_cooldown = 100
var/zoom_mode = FALSE
var/phasing = FALSE
var/phasing_energy_drain = 200
var/phase_state = "" //icon_state when phasing
hud_possible = list (DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_TRACK_HUD)
/obj/mecha/New()
..()
/obj/mecha/Initialize()
. = ..()
events = new
icon_state += "-open"
add_radio()
add_cabin()
if(!add_airtank()) //we check this here in case mecha does not have an internal tank available by default - WIP
removeVerb(/obj/mecha/verb/connect_to_port)
removeVerb(/obj/mecha/verb/toggle_internal_tank)
add_airtank()
spark_system.set_up(2, 0, src)
spark_system.attach(src)
smoke_system.set_up(3, src)
smoke_system.attach(src)
add_cell()
processing_objects.Add(src)
removeVerb(/obj/mecha/verb/disconnect_from_port)
GLOB.poi_list |= src
log_message("[src] created.")
GLOB.mechas_list += src //global mech list
@@ -109,13 +124,6 @@
////////////////////////
////// Helpers /////////
////////////////////////
/obj/mecha/proc/removeVerb(verb_path)
verbs -= verb_path
/obj/mecha/proc/addVerb(verb_path)
verbs += verb_path
/obj/mecha/proc/add_airtank()
internal_tank = new /obj/machinery/portable_atmospherics/canister/air(src)
return internal_tank
@@ -144,7 +152,6 @@
radio.icon_state = icon_state
radio.subspace_transmission = 1
/obj/mecha/examine(mob/user)
..(user)
var/integrity = health/initial(health)*100
@@ -164,18 +171,18 @@
for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)
to_chat(user, "[bicon(ME)] [ME]")
/obj/mecha/hear_talk(mob/M, text)
if(M == occupant && radio.broadcasting)
radio.talk_into(M, text)
/obj/mecha/proc/click_action(atom/target, mob/user, params)
if(!occupant || occupant != user )
return
if(user.incapacitated())
return
if(phasing)
occupant_message("<span class='warning'>Unable to interact with objects while phasing.</span>")
return
if(state)
occupant_message("<span class='warning'>Maintenance protocols in effect.</span>")
return
@@ -251,6 +258,8 @@
. = ..()
if(.)
return 1
if(thrusters_active && movement_dir && use_power(step_energy_drain))
return 1
var/atom/movable/backup = get_spacemove_backup()
if(backup)
@@ -278,30 +287,58 @@
return domove(direction)
/obj/mecha/proc/domove(direction)
if(!can_move)
if(can_move >= world.time)
return 0
if(!Process_Spacemove(direction))
return 0
if(!has_charge(step_energy_drain))
return 0
if(defence_mode)
if(world.time - last_message > 20)
occupant_message("<span class='danger'>Unable to move while in defence mode.</span>")
last_message = world.time
return 0
if(zoom_mode)
if(world.time - last_message > 20)
occupant_message("<span class='danger'>Unable to move while in zoom mode.</span>")
last_message = world.time
return 0
var/move_result = 0
var/move_type = 0
if(internal_damage & MECHA_INT_CONTROL_LOST)
move_result = mechsteprand()
move_type = MECHAMOVE_RAND
else if(dir != direction)
move_result = mechturn(direction)
move_type = MECHAMOVE_TURN
else
move_result = mechstep(direction)
move_type = MECHAMOVE_STEP
can_move = 0
spawn(step_in)
can_move = 1
if(move_result)
use_power(step_energy_drain)
return 1
return 0
if(move_result && move_type)
aftermove(move_type)
can_move = world.time + step_in
return TRUE
return FALSE
/obj/mecha/proc/aftermove(move_type)
use_power(step_energy_drain)
if(move_type & (MECHAMOVE_RAND | MECHAMOVE_STEP) && occupant)
var/obj/machinery/atmospherics/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/unary/portables_connector) in loc
if(possible_port)
var/obj/screen/alert/mech_port_available/A = occupant.throw_alert("mechaport", /obj/screen/alert/mech_port_available, override = TRUE)
if(A)
A.target = possible_port
else
occupant.clear_alert("mechaport")
if(leg_overload_mode)
take_damage(1)
if(health < initial(health) - initial(health) / 3)
leg_overload_mode = FALSE
step_in = initial(step_in)
step_energy_drain = initial(step_energy_drain)
occupant_message("<font color='red'>Leg actuators damage threshold exceded. Disabling overload.</font>")
/obj/mecha/proc/mechturn(direction)
dir = direction
@@ -310,18 +347,23 @@
return 1
/obj/mecha/proc/mechstep(direction)
var/result = step(src,direction)
if(result && stepsound)
playsound(src,stepsound,40,1)
return result
. = step(src, direction)
if(!.)
if(phasing && get_charge() >= phasing_energy_drain)
if(can_move < world.time)
. = FALSE // We lie to mech code and say we didn't get to move, because we want to handle power usage + cooldown ourself
flick("phazon-phase", src)
forceMove(get_step(src, direction))
use_power(phasing_energy_drain)
playsound(src, stepsound, 40, 1)
can_move = world.time + (step_in * 3)
else if(stepsound)
playsound(src, stepsound, 40, 1)
/obj/mecha/proc/mechsteprand()
var/result = step_rand(src)
if(result && stepsound)
playsound(src,stepsound,40,1)
return result
. = step_rand(src)
if(. && stepsound)
playsound(src, stepsound, 40, 1)
/obj/mecha/Bump(var/atom/obstacle, bump_allowed)
if(throwing) //high velocity mechas in your face!
@@ -627,6 +669,7 @@
qdel(cabin_air)
cabin_air = null
QDEL_NULL(spark_system)
QDEL_NULL(smoke_system)
GLOB.mechas_list -= src //global mech list
return ..()
@@ -776,20 +819,21 @@
else if(iswelder(W) && user.a_intent != INTENT_HARM)
var/obj/item/weldingtool/WT = W
if(health<initial(health))
if (WT.remove_fuel(0,user))
if (internal_damage & MECHA_INT_TANK_BREACH)
clearInternalDamage(MECHA_INT_TANK_BREACH)
to_chat(user, "<span class='notice'>You repair the damaged gas tank.</span>")
else
user.visible_message("<span class='notice'>[user] repairs some damage to [name].</span>")
health += min(10, initial(health)-health)
if(health < initial(health))
if(WT.remove_fuel(0, user))
user.visible_message("<span class='notice'>[user] starts repairing some damage to [name].</span>", "<span class='notice'>You start repairing some damage to [name]</span>")
if(do_after_once(user, 15 * WT.toolspeed, target = src, attempt_cancel_message = "You stop repairing [name]."))
if(internal_damage & MECHA_INT_TANK_BREACH)
clearInternalDamage(MECHA_INT_TANK_BREACH)
user.visible_message("<span class='notice'>[user] repairs the damaged gas tank.</span>", "<span class='notice'>You repair the damaged gas tank.</span>")
else
user.visible_message("<span class='notice'>[user] repairs some damage to [name].</span>", "<span class='notice'>You repair some damage to [name].</span>")
health += min(20, initial(health) - health)
else
to_chat(user, "<span class='warning'>The welder must be on for this task!</span>")
return 1
else
to_chat(user, "<span class='warning'>The [name] is at full integrity!</span>")
return 1
return TRUE
else if(istype(W, /obj/item/mecha_parts/mecha_tracking))
if(!user.unEquip(W))
@@ -958,6 +1002,10 @@
to_chat(AI, "[AI.can_dominate_mechs ? "<span class='announce'>Takeover of [name] complete! You are now permanently loaded onto the onboard computer. Do not attempt to leave the station sector!</span>" \
: "<span class='notice'>You have been uploaded to a mech's onboard computer."]")
to_chat(AI, "<span class='boldnotice'>Use Middle-Mouse to activate mech functions and equipment. Click normally for AI interactions.</span>")
if(interaction == AI_TRANS_FROM_CARD)
GrantActions(AI, FALSE)
else
GrantActions(AI, !AI.can_dominate_mechs)
/////////////////////////////////////
//////// Atmospheric stuff ////////
@@ -994,7 +1042,7 @@
/obj/mecha/proc/connect(obj/machinery/atmospherics/unary/portables_connector/new_port)
//Make sure not already connected to something else
if(connected_port || !new_port || new_port.connected_device)
if(connected_port || !istype(new_port) || new_port.connected_device)
return 0
//Make sure are close enough for a valid connection
@@ -1006,6 +1054,10 @@
connected_port.connected_device = src
connected_port.parent.reconcile_air()
if(occupant)
occupant.clear_alert("mechaport")
occupant.throw_alert("mechaport_d", /obj/screen/alert/mech_port_disconnect)
log_message("Connected to gas port.")
return 1
@@ -1016,80 +1068,26 @@
connected_port.connected_device = null
connected_port = null
log_message("Disconnected from gas port.")
if(occupant)
occupant.clear_alert("mechaport_d")
return 1
/obj/mecha/portableConnectorReturnAir()
return internal_tank.return_air()
/////////////////////////
//////// Verbs ////////
/////////////////////////
/obj/mecha/verb/connect_to_port()
set name = "Connect to port"
set category = "Exosuit Interface"
set src = usr.loc
set popup_menu = 0
if(!occupant) return
if(usr!=occupant)
return
var/obj/machinery/atmospherics/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/unary/portables_connector/) in loc
if(possible_port)
if(connect(possible_port))
occupant_message("<span class='notice'>[name] connects to the port.</span>")
verbs += /obj/mecha/verb/disconnect_from_port
verbs -= /obj/mecha/verb/connect_to_port
return
else
occupant_message("<span class='warning'>[name] failed to connect to the port.</span>")
return
else
occupant_message("Nothing happens")
/obj/mecha/verb/disconnect_from_port()
set name = "Disconnect from port"
set category = "Exosuit Interface"
set src = usr.loc
set popup_menu = 0
if(!occupant) return
if(usr!=occupant)
return
if(disconnect())
occupant_message("<span class='notice'>[name] disconnects from the port.</span>")
verbs -= /obj/mecha/verb/disconnect_from_port
verbs += /obj/mecha/verb/connect_to_port
else
occupant_message("<span class='warning'>[name] is not connected to the port at the moment.</span>")
/obj/mecha/verb/toggle_lights()
set name = "Toggle Lights"
set category = "Exosuit Interface"
set src = usr.loc
set popup_menu = 0
if(usr!=occupant) return
/obj/mecha/proc/toggle_lights()
lights = !lights
if(lights) set_light(light_range + lights_power)
else set_light(light_range - lights_power)
occupant_message("Toggled lights [lights?"on":"off"].")
log_message("Toggled lights [lights?"on":"off"].")
return
if(lights)
set_light(light_range + lights_power)
else
set_light(light_range - lights_power)
occupant_message("Toggled lights [lights ? "on" : "off"].")
log_message("Toggled lights [lights ? "on" : "off"].")
/obj/mecha/verb/toggle_internal_tank()
set name = "Toggle internal airtank usage."
set category = "Exosuit Interface"
set src = usr.loc
set popup_menu = 0
if(usr!=occupant)
return
/obj/mecha/proc/toggle_internal_tank()
use_internal_tank = !use_internal_tank
occupant_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].")
log_message("Now taking air from [use_internal_tank?"internal airtank":"environment"].")
return
occupant_message("Now taking air from [use_internal_tank ? "internal airtank" : "environment"].")
log_message("Now taking air from [use_internal_tank ? "internal airtank" : "environment"].")
/obj/mecha/MouseDrop_T(mob/M, mob/user)
if(user.incapacitated())
@@ -1147,7 +1145,7 @@
H.forceMove(src)
H.reset_perspective(src)
add_fingerprint(H)
//GrantActions(H, human_occupant=1)
GrantActions(H, human_occupant = 1)
forceMove(loc)
log_append_to_last("[H] moved in as pilot.")
icon_state = reset_icon()
@@ -1204,7 +1202,6 @@
to_chat(brainmob, "<span class='notice'>Your imprint to [R.imprinted_master] has been temporarily disabled. You should help the crew and not commit harm.</span>")
mmi_as_oc.loc = src
mmi_as_oc.mecha = src
verbs -= /obj/mecha/verb/eject
Entered(mmi_as_oc)
Move(loc)
icon_state = reset_icon()
@@ -1212,6 +1209,7 @@
log_message("[mmi_as_oc] moved in as pilot.")
if(!hasInternalDamage())
to_chat(occupant, sound('sound/mecha/nominal.ogg',volume=50))
GrantActions(brainmob)
return 1
else
return 0
@@ -1228,27 +1226,6 @@
/obj/mecha/proc/pilot_mmi_hud(var/mob/living/carbon/brain/pilot)
return
/obj/mecha/verb/view_stats()
set name = "View Stats"
set category = "Exosuit Interface"
set src = usr.loc
set popup_menu = 0
if(usr!=occupant)
return
occupant << browse(get_stats_html(), "window=exosuit")
return
/obj/mecha/verb/eject()
set name = "Eject"
set category = "Exosuit Interface"
set src = usr.loc
set popup_menu = 0
if(usr != occupant)
return
go_out()
add_fingerprint(usr)
/obj/mecha/Exited(atom/movable/M, atom/newloc)
if(occupant && occupant == M) // The occupant exited the mech without calling go_out()
go_out(1, newloc)
@@ -1259,17 +1236,19 @@
var/atom/movable/mob_container
occupant.clear_alert("charge")
occupant.clear_alert("mech damage")
occupant.clear_alert("mechaport")
occupant.clear_alert("mechaport_d")
if(ishuman(occupant))
mob_container = occupant
//RemoveActions(occupant, human_occupant=1)
RemoveActions(occupant, human_occupant = 1)
else if(isbrain(occupant))
var/mob/living/carbon/brain/brain = occupant
//RemoveActions(brain)
RemoveActions(brain)
mob_container = brain.container
else if(isAI(occupant))
var/mob/living/silicon/ai/AI = occupant
if(forced)//This should only happen if there are multiple AIs in a round, and at least one is Malf.
//RemoveActions(occupant)
RemoveActions(occupant)
occupant.gib() //If one Malf decides to steal a mech from another AI (even other Malfs!), they are destroyed, as they have nowhere to go when replaced.
occupant = null
return
@@ -1281,7 +1260,7 @@
to_chat(AI, "<span class='notice'>Returning to core...</span>")
AI.controlled_mech = null
AI.remote_control = null
//RemoveActions(occupant, 1)
RemoveActions(occupant, 1)
mob_container = AI
newloc = get_turf(AI.linked_core)
qdel(AI.linked_core)
@@ -1310,6 +1289,7 @@
if(L && L.client)
L.client.RemoveViewMod("mecha")
zoom_mode = FALSE
/////////////////////////
////// Access stuff /////
@@ -1319,14 +1299,14 @@
if(!ishuman(H))
return 0
for(var/ID in list(H.get_active_hand(), H.wear_id, H.belt))
if(check_access(ID,operation_req_access))
if(check_access(ID, operation_req_access))
return 1
return 0
/obj/mecha/proc/internals_access_allowed(mob/living/carbon/human/H)
for(var/atom/ID in list(H.get_active_hand(), H.wear_id, H.belt))
if(check_access(ID,internals_req_access))
if(check_access(ID, internals_req_access))
return 1
return 0
@@ -1492,4 +1472,36 @@
visual_effect_icon = ATTACK_EFFECT_MECHFIRE
else if(damtype == TOX)
visual_effect_icon = ATTACK_EFFECT_MECHTOXIN
..()
..()
/obj/mecha/CtrlClick(mob/living/L)
if(occupant != L || !istype(L))
return ..()
var/list/choices = list("Cancel / No Change" = mutable_appearance(icon = 'icons/mob/screen_gen.dmi', icon_state = "x"))
var/list/choices_to_refs = list()
for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment)
if(!MT.selectable || selected == MT)
continue
var/mutable_appearance/clean/MA = new(MT)
choices[MT.name] = MA
choices_to_refs[MT.name] = MT
var/choice = show_radial_menu(L, src, choices, radius = 48, custom_check = CALLBACK(src, .proc/check_menu, L))
if(!check_menu(L) || choice == "Cancel / No Change")
return
var/obj/item/mecha_parts/mecha_equipment/new_sel = LAZYACCESS(choices_to_refs, choice)
if(istype(new_sel))
selected = new_sel
occupant_message("<span class='notice'>You switch to [selected].</span>")
visible_message("[src] raises [selected]")
send_byjax(occupant, "exosuit.browser", "eq_list", get_equipment_list())
/obj/mecha/proc/check_menu(mob/living/L)
if(L != occupant || !istype(L))
return FALSE
if(L.incapacitated())
return FALSE
return TRUE
+229
View File
@@ -0,0 +1,229 @@
/obj/mecha
//Action datums
var/datum/action/innate/mecha/mech_eject/eject_action = new
var/datum/action/innate/mecha/mech_toggle_internals/internals_action = new
var/datum/action/innate/mecha/mech_toggle_lights/lights_action = new
var/datum/action/innate/mecha/mech_view_stats/stats_action = new
var/datum/action/innate/mecha/mech_defence_mode/defense_action = new
var/datum/action/innate/mecha/mech_overload_mode/overload_action = new
var/datum/action/innate/mecha/mech_toggle_thrusters/thrusters_action = new
var/datum/effect_system/smoke_spread/smoke_system = new //not an action, but trigged by one
var/datum/action/innate/mecha/mech_smoke/smoke_action = new
var/datum/action/innate/mecha/mech_zoom/zoom_action = new
var/datum/action/innate/mecha/mech_toggle_phasing/phasing_action = new
var/datum/action/innate/mecha/mech_switch_damtype/switch_damtype_action = new
/obj/mecha/proc/GrantActions(mob/living/user, human_occupant = 0)
if(human_occupant)
eject_action.Grant(user, src)
internals_action.Grant(user, src)
lights_action.Grant(user, src)
stats_action.Grant(user, src)
/obj/mecha/proc/RemoveActions(mob/living/user, human_occupant = 0)
if(human_occupant)
eject_action.Remove(user)
internals_action.Remove(user)
lights_action.Remove(user)
stats_action.Remove(user)
/datum/action/innate/mecha
check_flags = AB_CHECK_RESTRAINED | AB_CHECK_STUNNED | AB_CHECK_CONSCIOUS
icon_icon = 'icons/mob/actions/actions_mecha.dmi'
var/obj/mecha/chassis
/datum/action/innate/mecha/Grant(mob/living/L, obj/mecha/M)
if(M)
chassis = M
. = ..()
/datum/action/innate/mecha/Destroy()
chassis = null
return ..()
/datum/action/innate/mecha/mech_eject
name = "Eject From Mech"
button_icon_state = "mech_eject"
/datum/action/innate/mecha/mech_eject/Activate()
if(!owner)
return
if(!chassis || chassis.occupant != owner)
return
chassis.go_out()
/datum/action/innate/mecha/mech_toggle_internals
name = "Toggle Internal Airtank Usage"
button_icon_state = "mech_internals_off"
/datum/action/innate/mecha/mech_toggle_internals/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
chassis.use_internal_tank = !chassis.use_internal_tank
button_icon_state = "mech_internals_[chassis.use_internal_tank ? "on" : "off"]"
chassis.occupant_message("Now taking air from [chassis.use_internal_tank ? "internal airtank" : "environment"].")
chassis.log_message("Now taking air from [chassis.use_internal_tank ? "internal airtank" : "environment"].")
UpdateButtonIcon()
/datum/action/innate/mecha/mech_toggle_lights
name = "Toggle Lights"
button_icon_state = "mech_lights_off"
/datum/action/innate/mecha/mech_toggle_lights/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
chassis.lights = !chassis.lights
if(chassis.lights)
chassis.set_light(chassis.lights_power)
button_icon_state = "mech_lights_on"
else
chassis.set_light(-chassis.lights_power)
button_icon_state = "mech_lights_off"
chassis.occupant_message("Toggled lights [chassis.lights ? "on" : "off"].")
chassis.log_message("Toggled lights [chassis.lights ? "on" : "off"].")
UpdateButtonIcon()
/datum/action/innate/mecha/mech_view_stats
name = "View Stats"
button_icon_state = "mech_view_stats"
/datum/action/innate/mecha/mech_view_stats/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
chassis.occupant << browse(chassis.get_stats_html(), "window=exosuit")
/datum/action/innate/mecha/mech_defence_mode
name = "Toggle Defence Mode"
button_icon_state = "mech_defense_mode_off"
/datum/action/innate/mecha/mech_defence_mode/Activate(forced_state = null)
if(!owner || !chassis || chassis.occupant != owner)
return
if(!isnull(forced_state))
chassis.defence_mode = forced_state
else
chassis.defence_mode = !chassis.defence_mode
button_icon_state = "mech_defense_mode_[chassis.defence_mode ? "on" : "off"]"
if(chassis.defence_mode)
chassis.deflect_chance = chassis.defence_mode_deflect_chance
chassis.occupant_message("<span class='notice'>You enable [chassis] defence mode.</span>")
else
chassis.deflect_chance = initial(chassis.deflect_chance)
chassis.occupant_message("<span class='danger'>You disable [chassis] defence mode.</span>")
chassis.log_message("Toggled defence mode.")
UpdateButtonIcon()
/datum/action/innate/mecha/mech_overload_mode
name = "Toggle leg actuators overload"
button_icon_state = "mech_overload_off"
/datum/action/innate/mecha/mech_overload_mode/Activate(forced_state = null)
if(!owner || !chassis || chassis.occupant != owner)
return
if(chassis.health < initial(chassis.health) - initial(chassis.health) / 3)
chassis.occupant_message("<span class='danger'>The leg actuators are too damaged to overload!</span>")
return // Can't activate them if the mech is too damaged
if(!isnull(forced_state))
chassis.leg_overload_mode = forced_state
else
chassis.leg_overload_mode = !chassis.leg_overload_mode
button_icon_state = "mech_overload_[chassis.leg_overload_mode ? "on" : "off"]"
chassis.log_message("Toggled leg actuators overload.")
if(chassis.leg_overload_mode)
chassis.leg_overload_mode = 1
// chassis.bumpsmash = 1
chassis.step_in = min(1, round(chassis.step_in / 2))
chassis.step_energy_drain = max(chassis.overload_step_energy_drain_min, chassis.step_energy_drain * chassis.leg_overload_coeff)
chassis.occupant_message("<span class='danger'>You enable leg actuators overload.</span>")
else
chassis.leg_overload_mode = 0
// chassis.bumpsmash = 0
chassis.step_in = initial(chassis.step_in)
chassis.step_energy_drain = chassis.normal_step_energy_drain
chassis.occupant_message("<span class='notice'>You disable leg actuators overload.</span>")
UpdateButtonIcon()
/datum/action/innate/mecha/mech_toggle_thrusters
name = "Toggle Thrusters"
button_icon_state = "mech_thrusters_off"
/datum/action/innate/mecha/mech_toggle_thrusters/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
if(chassis.get_charge() > 0)
chassis.thrusters_active = !chassis.thrusters_active
button_icon_state = "mech_thrusters_[chassis.thrusters_active ? "on" : "off"]"
chassis.log_message("Toggled thrusters.")
chassis.occupant_message("<font color='[chassis.thrusters_active ? "blue" : "red"]'>Thrusters [chassis.thrusters_active ? "en" : "dis"]abled.")
/datum/action/innate/mecha/mech_smoke
name = "Smoke"
button_icon_state = "mech_smoke"
/datum/action/innate/mecha/mech_smoke/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
if(chassis.smoke_ready && chassis.smoke > 0)
chassis.smoke_system.start()
chassis.smoke--
chassis.smoke_ready = 0
spawn(chassis.smoke_cooldown)
chassis.smoke_ready = 1
else
chassis.occupant_message("<span class='warning'>You are either out of smoke, or the smoke isn't ready yet.</span>")
/datum/action/innate/mecha/mech_zoom
name = "Zoom"
button_icon_state = "mech_zoom_off"
/datum/action/innate/mecha/mech_zoom/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
if(owner.client)
chassis.zoom_mode = !chassis.zoom_mode
button_icon_state = "mech_zoom_[chassis.zoom_mode ? "on" : "off"]"
chassis.log_message("Toggled zoom mode.")
chassis.occupant_message("<font color='[chassis.zoom_mode ? "blue" : "red"]'>Zoom mode [chassis.zoom_mode ? "en" : "dis"]abled.</font>")
if(chassis.zoom_mode)
owner.client.AddViewMod("mecha", 12)
SEND_SOUND(owner, sound('sound/mecha/imag_enh.ogg',volume=50))
else
owner.client.RemoveViewMod("mecha")
UpdateButtonIcon()
/datum/action/innate/mecha/mech_toggle_phasing
name = "Toggle Phasing"
button_icon_state = "mech_phasing_off"
/datum/action/innate/mecha/mech_toggle_phasing/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
chassis.phasing = !chassis.phasing
button_icon_state = "mech_phasing_[chassis.phasing ? "on" : "off"]"
chassis.occupant_message("<font color=\"[chassis.phasing?"#00f\">En":"#f00\">Dis"]abled phasing.</font>")
UpdateButtonIcon()
/datum/action/innate/mecha/mech_switch_damtype
name = "Reconfigure arm microtool arrays"
button_icon_state = "mech_damtype_brute"
/datum/action/innate/mecha/mech_switch_damtype/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
var/new_damtype
switch(chassis.damtype)
if("tox")
new_damtype = "brute"
chassis.occupant_message("Your exosuit's hands form into fists.")
if("brute")
new_damtype = "fire"
chassis.occupant_message("A torch tip extends from your exosuit's hand, glowing red.")
if("fire")
new_damtype = "tox"
chassis.occupant_message("A bone-chillingly thick plasteel needle protracts from the exosuit's palm.")
chassis.damtype = new_damtype
button_icon_state = "mech_damtype_[new_damtype]"
playsound(src, 'sound/mecha/mechmove01.ogg', 50, 1)
UpdateButtonIcon()
+64 -73
View File
@@ -73,81 +73,80 @@
var/cell_charge = get_charge()
var/tank_pressure = internal_tank ? round(internal_tank.return_pressure(),0.01) : "None"
var/tank_temperature = internal_tank ? internal_tank.return_temperature() : "Unknown"
var/tank_temperature_c = internal_tank ? internal_tank.return_temperature() - T0C : "Unknown"
var/cabin_pressure = round(return_pressure(),0.01)
var/output = {"[report_internal_damage()]
[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font><br>":null]
<b>Integrity: </b> [integrity]%<br>
<b>Powercell charge: </b>[isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]<br>
<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>
<b>Airtank pressure: </b>[tank_pressure]kPa<br>
<b>Airtank temperature: </b>[tank_temperature]&deg;K|[tank_temperature - T0C]&deg;C<br>
<b>Cabin pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<font color='red'>[cabin_pressure]</font>": cabin_pressure]kPa<br>
<b>Cabin temperature: </b> [return_temperature()]&deg;K|[return_temperature() - T0C]&deg;C<br>
<b>Lights: </b>[lights?"on":"off"]<br>
[dna?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna]</span> \[<a href='?src=[UID()];reset_dna=1'>Reset</a>\]<br>":null]
"}
return output
. = "[report_internal_damage()]"
. += "[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font><br>":null]"
. += "<b>Integrity: </b> [integrity]%<br>"
. += "<b>Powercell charge: </b>[isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]<br>"
. += "<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>"
. += "<b>Airtank pressure: </b>[tank_pressure]kPa<br>"
. += "<b>Airtank temperature: </b>[tank_temperature]&deg;K|[tank_temperature_c]&deg;C<br>"
. += "<b>Cabin pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<font color='red'>[cabin_pressure]</font>": cabin_pressure]kPa<br>"
. += "<b>Cabin temperature: </b> [return_temperature()]&deg;K|[return_temperature() - T0C]&deg;C<br>"
. += "<b>Lights: </b>[lights?"on":"off"]<br>"
. += "[dna ? "<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna]</span> \[<a href='?src=[UID()];reset_dna=1'>Reset</a>\]<br>" : ""]"
. += "[defense_action.owner ? "<b>Defence Mode: </b> [defence_mode ? "Enabled" : "Disabled"]<br>" : ""]"
. += "[overload_action.owner ? "<b>Leg Actuators Overload: </b> [leg_overload_mode ? "Enabled" : "Disabled"]<br>" : ""]"
. += "[thrusters_action.owner ? "<b>Thrusters: </b> [thrusters_active ? "Enabled" : "Disabled"]<br>" : ""]"
. += "[smoke_action.owner ? "<b>Smoke: </b> [smoke]<br>" : ""]"
. += "[zoom_action.owner ? "<b>Zoom: </b> [zoom_mode ? "Enabled" : "Disabled"]<br>" : ""]"
. += "[phasing_action.owner ? "<b>Phase Modulator: </b> [phasing ? "Enabled" : "Disabled"]<br>" : ""]"
/obj/mecha/proc/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Electronics</div>
<div class='links'>
<a href='?src=[UID()];toggle_lights=1'>Toggle Lights</a><br>
<b>Radio settings:</b><br>
Microphone: <a href='?src=[UID()];rmictoggle=1'><span id="rmicstate">[radio.broadcasting?"Engaged":"Disengaged"]</span></a><br>
Speaker: <a href='?src=[UID()];rspktoggle=1'><span id="rspkstate">[radio.listening?"Engaged":"Disengaged"]</span></a><br>
Frequency:
<a href='?src=[UID()];rfreq=-10'>-</a>
<a href='?src=[UID()];rfreq=-2'>-</a>
<span id="rfreq">[format_frequency(radio.frequency)]</span>
<a href='?src=[UID()];rfreq=2'>+</a>
<a href='?src=[UID()];rfreq=10'>+</a><br>
</div>
</div>
<div class='wr'>
<div class='header'>Airtank</div>
<div class='links'>
<a href='?src=[UID()];toggle_airtank=1'>Toggle Internal Airtank Usage</a><br>
[(/obj/mecha/verb/disconnect_from_port in verbs)?"<a href='?src=[UID()];port_disconnect=1'>Disconnect from port</a><br>":null]
[(/obj/mecha/verb/connect_to_port in verbs)?"<a href='?src=[UID()];port_connect=1'>Connect to port</a><br>":null]
</div>
</div>
<div class='wr'>
<div class='header'>Permissions & Logging</div>
<div class='links'>
<a href='?src=[UID()];toggle_id_upload=1'><span id='t_id_upload'>[add_req_access?"L":"Unl"]ock ID upload panel</span></a><br>
<a href='?src=[UID()];toggle_maint_access=1'><span id='t_maint_access'>[maint_access?"Forbid":"Permit"] maintenance protocols</span></a><br>
<a href='?src=[UID()];dna_lock=1'>DNA-lock</a><br>
<a href='?src=[UID()];view_log=1'>View internal log</a><br>
<a href='?src=[UID()];change_name=1'>Change exosuit name</a><br>
</div>
</div>
<div id='equipment_menu'>[get_equipment_menu()]</div>
<hr>
[(/obj/mecha/verb/eject in verbs)?"<a href='?src=[UID()];eject=1'>Eject</a><br>":null]
"}
return output
. = "<div class='wr'>"
. += "<div class='header'>Electronics</div>"
. += "<div class='links'>"
. += "<a href='?src=[UID()];toggle_lights=1'>Toggle Lights</a><br>"
. += "<b>Radio settings:</b><br>"
. += "Microphone: <a href='?src=[UID()];rmictoggle=1'><span id='rmicstate'>[radio.broadcasting?"Engaged":"Disengaged"]</span></a><br>"
. += "Speaker: <a href='?src=[UID()];rspktoggle=1'><span id='rspkstate'>[radio.listening?"Engaged":"Disengaged"]</span></a><br>"
. += "Frequency:"
. += "<a href='?src=[UID()];rfreq=-10'>-</a>"
. += "<a href='?src=[UID()];rfreq=-2'>-</a>"
. += "<span id='rfreq'>[format_frequency(radio.frequency)]</span>"
. += "<a href='?src=[UID()];rfreq=2'>+</a>"
. += "<a href='?src=[UID()];rfreq=10'>+</a><br>"
. += "</div>"
. += "</div>"
. += "<div class='wr'>"
. += "<div class='header'>Airtank</div>"
. += "<div class='links'>"
. += "<a href='?src=[UID()];toggle_airtank=1'>Toggle Internal Airtank Usage</a><br>"
. += "</div>"
. += "</div>"
. += "<div class='wr'>"
. += "<div class='header'>Permissions & Logging</div>"
. += "<div class='links'>"
. += "<a href='?src=[UID()];toggle_id_upload=1'><span id='t_id_upload'>[add_req_access?"L":"Unl"]ock ID upload panel</span></a><br>"
. += "<a href='?src=[UID()];toggle_maint_access=1'><span id='t_maint_access'>[maint_access?"Forbid":"Permit"] maintenance protocols</span></a><br>"
. += "<a href='?src=[UID()];dna_lock=1'>DNA-lock</a><br>"
. += "<a href='?src=[UID()];view_log=1'>View internal log</a><br>"
. += "<a href='?src=[UID()];change_name=1'>Change exosuit name</a><br>"
. += "</div>"
. += "</div>"
. += "<div id='equipment_menu'>[get_equipment_menu()]</div>"
. += "<hr>"
. += "<a href='?src=[UID()];eject=1'>Eject</a><br>"
/obj/mecha/proc/get_equipment_menu() //outputs mecha html equipment menu
var/output
. = ""
if(equipment.len)
output += {"<div class='wr'>
<div class='header'>Equipment</div>
<div class='links'>"}
. += "<div class='wr'>"
. += "<div class='header'>Equipment</div>"
. += "<div class='links'>"
for(var/obj/item/mecha_parts/mecha_equipment/W in equipment)
output += "[W.name] <a href='?src=[W.UID()];detach=1'>Detach</a><br>"
output += "<b>Available equipment slots:</b> [max_equip-equipment.len]"
output += "</div></div>"
return output
. += "[W.name] <a href='?src=[W.UID()];detach=1'>Detach</a><br>"
. += "<b>Available equipment slots:</b> [max_equip-equipment.len]"
. += "</div></div>"
/obj/mecha/proc/get_equipment_list() //outputs mecha equipment list in html
if(!equipment.len)
return
var/output = "<b>Equipment:</b><div style=\"margin-left: 15px;\">"
. = "<b>Equipment:</b><div style=\"margin-left: 15px;\">"
for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment)
output += "<div id='\ref[MT]'>[MT.get_equip_info()]</div>"
output += "</div>"
return output
. += "<div id='\ref[MT]'>[MT.get_equip_info()]</div>"
. += "</div>"
/obj/mecha/proc/get_log_html()
@@ -248,11 +247,11 @@
selected = equip
occupant_message("You switch to [equip]")
visible_message("[src] raises [equip]")
send_byjax(occupant,"exosuit.browser","eq_list",get_equipment_list())
send_byjax(occupant, "exosuit.browser", "eq_list", get_equipment_list())
return
if(href_list["eject"])
if(usr != occupant) return
eject()
go_out()
return
if(href_list["toggle_lights"])
if(usr != occupant) return
@@ -280,14 +279,6 @@
radio.set_frequency(new_frequency)
send_byjax(occupant,"exosuit.browser","rfreq","[format_frequency(radio.frequency)]")
return
if(href_list["port_disconnect"])
if(usr != occupant) return
disconnect_from_port()
return
if(href_list["port_connect"])
if(usr != occupant) return
connect_to_port()
return
if(href_list["view_log"])
if(usr != occupant) return
occupant << browse(get_log_html(), "window=exosuit_log")
+1
View File
@@ -10,6 +10,7 @@
internal_damage_threshold = 35
deflect_chance = 15
step_energy_drain = 6
normal_step_energy_drain = 6
var/builtin_hud_user = 0
/obj/mecha/medical/odysseus/moved_inside(var/mob/living/carbon/human/H)
+1
View File
@@ -83,6 +83,7 @@
damage_absorption = list("brute"=0.6,"fire"=0.4,"bullet"=0.6,"laser"=0.6,"energy"=1,"bomb"=0.3)
wreckage = /obj/effect/decal/mecha_wreckage/ripley/deathripley
step_energy_drain = 0
normal_step_energy_drain = 0
/obj/mecha/working/ripley/deathripley/New()
..()
@@ -127,6 +127,8 @@
/obj/item/seeds/ambrosia = 20,
/obj/item/clothing/under/color/black = 30,
/obj/item/stack/tape_roll = 10,
/obj/item/storage/bag/plasticbag = 20,
/obj/item/caution = 10,
////////////////CONTRABAND STUFF//////////////////
/obj/item/grenade/clown_grenade = 3,
/obj/item/seeds/ambrosia/cruciatus = 3,
@@ -143,7 +145,7 @@
/obj/item/storage/backpack/satchel_flat = 2,
/obj/item/storage/toolbox/syndicate = 2,
/obj/item/storage/backpack/duffel/syndie/surgery_fake = 2,
/obj/item/storage/belt/military = 2,
/obj/item/storage/belt/military/traitor = 2,
/obj/item/storage/box/syndie_kit/space = 2,
/obj/item/multitool/ai_detect = 2,
/obj/item/implanter/storage = 1,
+7 -1
View File
@@ -74,12 +74,18 @@
if(istype(crayon, /obj/item/toy/crayon/spraycan))
var/obj/item/toy/crayon/spraycan/can = crayon
if(can.capped)
to_chat(user, "<span class='warning'>The cap is on [src] remove it first!</span>")
to_chat(user, "<span class='warning'>The cap is on the spray can remove it first!</span>")
return
if(pushed_over)
to_chat(user, "<span class='warning'>Right [src] first!</span>")
return
var/new_appearance = input(user, "Choose a new appearance for [src].", "26th Century Deception") as null|anything in possible_appearances
if(!Adjacent(usr))
user.visible_message("<span class='danger'>You need to be closer!</span>")
return
if(pushed_over)
to_chat(user, "<span class='warning'>Right [src] first!</span>")
return
if(!new_appearance || !crayon)
return
if(!do_after(user, 10, FALSE, src, TRUE))
+22
View File
@@ -118,6 +118,28 @@
icon_state = "gangtool-blue"
region_access = list(REGION_CENTCOMM)
/obj/item/door_remote/omni/access_tuner
name = "access tuner"
desc = "A device used for illegally interfacing with doors."
icon_state = "hacktool"
item_state = "hacktool"
var/hack_speed = 30
var/busy = FALSE
/obj/item/door_remote/omni/access_tuner/afterattack(obj/machinery/door/airlock/D, mob/user)
if(!istype(D))
return
if(busy)
to_chat(user, "<span class='warning'>[src] is alreading interfacing with a door!</span>")
return
icon_state = "hacktool-g"
busy = TRUE
to_chat(user, "<span class='notice'>[src] is attempting to interface with [D]...</span>")
if(do_after(user, hack_speed, target = D))
. = ..()
busy = FALSE
icon_state = "hacktool"
#undef WAND_OPEN
#undef WAND_BOLT
#undef WAND_EMERGENCY
+105 -6
View File
@@ -9,11 +9,11 @@
slot_flags = SLOT_BELT
materials = list(MAT_METAL=50, MAT_GLASS=20)
actions_types = list(/datum/action/item_action/toggle_light)
var/on = 0
var/on = FALSE
var/brightness_on = 4 //luminosity when on
/obj/item/flashlight/Initialize()
..()
. = ..()
if(on)
icon_state = "[initial(icon_state)]-on"
set_light(brightness_on)
@@ -198,9 +198,10 @@ obj/item/flashlight/lamp/bananalamp
// Usual checks
if(!fuel)
to_chat(user, "<span class='notice'>It's out of fuel.</span>")
to_chat(user, "<span class='notice'>[src] is out of fuel.</span>")
return
if(on)
to_chat(user, "<span class='notice'>[src] is already on.</span>")
return
. = ..()
@@ -260,10 +261,11 @@ obj/item/flashlight/lamp/bananalamp
/obj/item/flashlight/emp/process()
charge_tick++
if(charge_tick < 10) return 0
if(charge_tick < 10)
return FALSE
charge_tick = 0
emp_cur_charges = min(emp_cur_charges+1, emp_max_charges)
return 1
return TRUE
/obj/item/flashlight/emp/attack(mob/living/M as mob, mob/living/user as mob)
if(on && user.zone_sel.selecting == "eyes") // call original attack proc only if aiming at the eyes
@@ -299,4 +301,101 @@ obj/item/flashlight/lamp/bananalamp
anchored = TRUE
var/range = null
unacidable = TRUE
burn_state = LAVA_PROOF
burn_state = LAVA_PROOF
/obj/item/flashlight/glowstick
name = "green glowstick"
desc = "A military-grade glowstick."
w_class = WEIGHT_CLASS_SMALL
brightness_on = 4
color = LIGHT_COLOR_GREEN
icon_state = "glowstick"
item_state = "glowstick"
var/fuel = 0
/obj/item/flashlight/glowstick/Initialize()
fuel = rand(1600, 2000)
light_color = color
. = ..()
/obj/item/flashlight/glowstick/Destroy()
processing_objects.Remove(src)
. = ..()
/obj/item/flashlight/glowstick/process()
fuel = max(fuel - 1, 0)
if(!fuel)
turn_off()
processing_objects.Remove(src)
update_icon()
/obj/item/flashlight/glowstick/proc/turn_off()
on = FALSE
update_icon()
/obj/item/flashlight/glowstick/update_icon()
item_state = "glowstick"
cut_overlays()
if(!fuel)
icon_state = "glowstick-empty"
cut_overlays()
update_brightness(0)
else if(on)
var/mutable_appearance/glowstick_overlay = mutable_appearance(icon, "glowstick-glow")
glowstick_overlay.color = color
add_overlay(glowstick_overlay)
item_state = "glowstick-on"
update_brightness(brightness_on)
else
icon_state = "glowstick"
cut_overlays()
/obj/item/flashlight/glowstick/attack_self(mob/user)
if(!fuel)
to_chat(user, "<span class='notice'>[src] is spent.</span>")
return
if(on)
to_chat(user, "<span class='notice'>[src] is already lit.</span>")
return
. = ..()
if(.)
user.visible_message("<span class='notice'>[user] cracks and shakes [src].</span>", "<span class='notice'>You crack and shake [src], turning it on!</span>")
activate()
/obj/item/flashlight/glowstick/proc/activate()
if(!on)
on = TRUE
processing_objects.Add(src)
update_icon()
/obj/item/flashlight/glowstick/red
name = "red glowstick"
color = LIGHT_COLOR_RED
/obj/item/flashlight/glowstick/blue
name = "blue glowstick"
color = LIGHT_COLOR_BLUE
/obj/item/flashlight/glowstick/orange
name = "orange glowstick"
color = LIGHT_COLOR_ORANGE
/obj/item/flashlight/glowstick/yellow
name = "yellow glowstick"
color = LIGHT_COLOR_YELLOW
/obj/item/flashlight/glowstick/pink
name = "pink glowstick"
color = LIGHT_COLOR_PINK
/obj/item/flashlight/glowstick/random
name = "random colored glowstick"
icon_state = "random_glowstick"
color = null
/obj/item/flashlight/glowstick/random/Initialize()
..()
var/T = pick(typesof(/obj/item/flashlight/glowstick) - /obj/item/flashlight/glowstick/random)
new T(loc)
return INITIALIZE_HINT_QDEL
@@ -207,7 +207,7 @@
/obj/item/borg/upgrade/syndicate
name = "illegal equipment module"
desc = "Unlocks the hidden, deadlier functions of a cyborg"
desc = "Unlocks the hidden, deadlier functions of a cyborg. Also prevents emag subversion."
icon_state = "cyborg_upgrade3"
origin_tech = "combat=4;syndicate=1"
require_module = 1
@@ -220,6 +220,7 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \
origin_tech = "materials=4"
sheettype = "tranquillite"
materials = list(MAT_TRANQUILLITE=MINERAL_MATERIAL_AMOUNT)
wall_allowed = FALSE //no tranquilite walls in code
/obj/item/stack/sheet/mineral/tranquillite/New(loc, amount=null)
..()
@@ -174,7 +174,8 @@ var/global/list/datum/stack_recipe/wood_recipes = list(
new /datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40),
new /datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),
new /datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),
new /datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15)
new /datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15),
new /datum/stack_recipe("fermenting barrel", /obj/structure/fermenting_barrel, 30, time = 50)
)
/obj/item/stack/sheet/wood
@@ -13,6 +13,7 @@
var/full_window = null //moving the var declaration to here so this can be checked cleaner until someone is willing to make them share a base type properly
usesound = 'sound/items/Deconstruct.ogg'
toolspeed = 1
var/wall_allowed = TRUE //determines if sheet can be used in wall construction or not.
// Since the sheetsnatcher was consolidated into weapon/storage/bag we now use
+6 -4
View File
@@ -64,7 +64,7 @@ LIGHTERS ARE IN LIGHTERS.DM
/obj/item/clothing/mask/cigarette/fire_act()
light()
/obj/item/clothing/mask/cigarette/attackby(obj/item/W as obj, mob/user as mob, params)
/obj/item/clothing/mask/cigarette/attackby(obj/item/W as obj, mob/user as mob, mob/living/carbon/target, params)
..()
if(istype(W, /obj/item/weldingtool))
var/obj/item/weldingtool/WT = W
@@ -89,7 +89,7 @@ LIGHTERS ARE IN LIGHTERS.DM
else if(istype(W, /obj/item/melee/energy/sword/saber))
var/obj/item/melee/energy/sword/saber/S = W
if(S.active)
light("<span class='warning'>[user] swings their [W], barely missing their nose. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [name] in the process.</span>")
light("<span class='warning'>[user] makes a violent slashing motion, barely missing [user.p_their()] nose as light flashes. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [name] with [W] in the process.</span>")
else if(istype(W, /obj/item/assembly/igniter))
light("<span class='notice'>[user] fiddles with [W], and manages to light [user.p_their()] [name].</span>")
@@ -107,6 +107,7 @@ LIGHTERS ARE IN LIGHTERS.DM
//can't think of any other way to update the overlays :<
user.update_inv_wear_mask()
target.update_inv_wear_mask()
user.update_inv_l_hand()
user.update_inv_r_hand()
return
@@ -195,7 +196,8 @@ LIGHTERS ARE IN LIGHTERS.DM
if(reagents && reagents.total_volume) // check if it has any reagents at all
if(is_being_smoked) // if it's being smoked, transfer reagents to the mob
var/mob/living/carbon/C = loc
reagents.trans_to(C, REAGENTS_METABOLISM)
for (var/datum/reagent/R in reagents.reagent_list)
reagents.trans_to(C, REAGENTS_METABOLISM)
if(!reagents.total_volume) // There were reagents, but now they're gone
to_chat(C, "<span class='notice'>Your [name] loses its flavor.</span>")
else // else just remove some of the reagents
@@ -232,7 +234,7 @@ LIGHTERS ARE IN LIGHTERS.DM
throw_speed = 0.5
item_state = "spliffoff"
smoketime = 180
chem_volume = 50
chem_volume = 100
/obj/item/clothing/mask/cigarette/rollie/New()
..()
@@ -168,7 +168,7 @@
max_combined_w_class = 100 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class
max_w_class = WEIGHT_CLASS_NORMAL
w_class = WEIGHT_CLASS_TINY
can_hold = list(/obj/item/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/grown,/obj/item/reagent_containers/food/snacks/ash_flora)
can_hold = list(/obj/item/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/grown,/obj/item/reagent_containers/food/snacks/grown/ash_flora)
burn_state = FLAMMABLE
/obj/item/storage/bag/plants/portaseeder
@@ -254,7 +254,7 @@
new /obj/item/grenade/flashbang(src)
new /obj/item/grenade/flashbang(src)
update_icon()
/obj/item/storage/belt/soulstone
name = "soul stone belt"
desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away"
@@ -295,6 +295,13 @@
item_state = "military"
max_w_class = WEIGHT_CLASS_SMALL
/obj/item/storage/belt/military/traitor
name = "tool-belt"
desc = "Can hold various tools. This model seems to have additional compartments."
icon_state = "utilitybelt"
item_state = "utility"
use_item_overlays = 1 // So it will still show tools in it in case sec get lazy and just glance at it.
/obj/item/storage/belt/military/abductor
name = "agent belt"
desc = "A belt used by abductor agents."
@@ -31,6 +31,10 @@
new /obj/item/flashlight/flare(src)
new /obj/item/radio(src)
/obj/item/storage/toolbox/emergency/old
name = "rusty red toolbox"
icon_state = "toolbox_red_old"
/obj/item/storage/toolbox/mechanical
name = "mechanical toolbox"
icon_state = "blue"
@@ -48,6 +52,10 @@
/obj/item/storage/toolbox/mechanical/greytide
flags = NODROP
/obj/item/storage/toolbox/mechanical/old
name = "rusty blue toolbox"
icon_state = "toolbox_blue_old"
/obj/item/storage/toolbox/electrical
name = "electrical toolbox"
icon_state = "yellow"
@@ -87,24 +87,28 @@
/obj/item/storage/box/syndie_kit/space
name = "Boxed Space Suit and Helmet"
can_hold = list(/obj/item/clothing/suit/space/syndicate/black/red, /obj/item/clothing/head/helmet/space/syndicate/black/red)
can_hold = list(/obj/item/clothing/suit/space/syndicate/black/red, /obj/item/clothing/head/helmet/space/syndicate/black/red, /obj/item/tank/emergency_oxygen/syndi, /obj/item/clothing/mask/gas/syndicate)
max_w_class = WEIGHT_CLASS_NORMAL
/obj/item/storage/box/syndie_kit/space/New()
..()
new /obj/item/clothing/suit/space/syndicate/black/red(src)
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/tank/emergency_oxygen/syndi(src)
return
/obj/item/storage/box/syndie_kit/hardsuit
name = "Boxed Blood Red Suit and Helmet"
can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/clothing/head/helmet/space/hardsuit/syndi)
can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/clothing/head/helmet/space/hardsuit/syndi, /obj/item/tank/emergency_oxygen/syndi, /obj/item/clothing/mask/gas/syndicate)
max_w_class = WEIGHT_CLASS_NORMAL
/obj/item/storage/box/syndie_kit/hardsuit/New()
..()
new /obj/item/clothing/suit/space/hardsuit/syndi(src)
new /obj/item/clothing/head/helmet/space/hardsuit/syndi(src)
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/tank/emergency_oxygen/syndi(src)
return
/obj/item/storage/box/syndie_kit/elite_hardsuit
@@ -147,6 +147,12 @@
icon_state = "emergency_engi"
volume = 6
/obj/item/tank/emergency_oxygen/syndi
name = "suspicious emergency oxygen tank"
icon_state = "emergency_syndi"
desc = "A dark emergency oxygen tank. The label on the back reads \"Original Oxygen Tank Design, Do Not Steal.\""
volume = 6
/obj/item/tank/emergency_oxygen/double
name = "double emergency oxygen tank"
icon_state = "emergency_double"
+3
View File
@@ -201,6 +201,9 @@
return
var/obj/item/stack/sheet/S = W
if(!S.wall_allowed)
to_chat(user, "<span class='warning'>You don't think that is good material for a wall!</span>")
return
if(istype(S, /obj/item/stack/sheet/wood))
if(state == GIRDER_DISPLACED)
+2 -2
View File
@@ -1540,13 +1540,13 @@
var/helptype = "ADMINHELP"
if(is_mhelp)
helptype = "MENTORHELP"
var/take_msg = "<span class='notice'><b>[helptype]</b>: <b>[key_name(usr.client)]</b> is attending to <b>[key_name(M)]'s</b> question.</span>"
var/take_msg = "<span class='notice'><b>[helptype]</b>: <b>[key_name_hidden(usr.client)]</b> is attending to <b>[key_name(M)]'s</b> question.</span>"
for(var/client/X in GLOB.admins)
if(check_rights(R_ADMIN, 0, X.mob))
to_chat(X, take_msg)
else if(is_mhelp && check_rights(R_MOD|R_MENTOR, 0, X.mob))
to_chat(X, take_msg)
to_chat(M, "<span class='notice'><b>Your question is being attended to by [key_name(usr.client, null, 0)]. Thanks for your patience!</b></span>")
to_chat(M, "<span class='notice'><b>Your question is being attended to by [key_name_hidden(usr.client, null, 0)]. Thanks for your patience!</b></span>")
else
to_chat(usr, "<span class='warning'>Unable to locate mob.</span>")
-2
View File
@@ -104,7 +104,6 @@ var/global/list/frozen_mob_list = list()
M.can_move = 0
M.overlays += adminomaly
if(M.occupant)
M.removeVerb(/obj/mecha/verb/eject)
to_chat(M.occupant, "<b><font color= red>You have been frozen by <a href='?priv_msg=[usr.client.UID()]'>[key]</a></b></font>")
message_admins("<span class='notice'>[key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]</span>")
log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]")
@@ -115,7 +114,6 @@ var/global/list/frozen_mob_list = list()
M.can_move = 1
M.overlays -= adminomaly
if(M.occupant)
M.addVerb(/obj/mecha/verb/eject)
to_chat(M.occupant, "<b><font color= red>You have been unfrozen by <a href='?priv_msg=[usr.client.UID()]'>[key]</a></b></font>")
message_admins("<span class='notice'>[key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]</span>")
log_admin("[key_name(usr)] unfroze [key_name(M.occupant)] in a [M.name]")
+1 -1
View File
@@ -35,7 +35,7 @@ client/proc/one_click_antag()
if((M.mind.assigned_role in temp.restricted_jobs) || (M.client.prefs.species in temp.protected_species))
return FALSE
if(role) // Don't even bother evaluating if there's no role
if(player_old_enough_antag(M.client,role) && (role in M.client.prefs.be_special) && (!jobban_isbanned(M, role)))
if(player_old_enough_antag(M.client,role) && (role in M.client.prefs.be_special) && !M.client.skip_antag && (!jobban_isbanned(M, role)))
return TRUE
else
return FALSE
+2 -2
View File
@@ -646,8 +646,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/atom/A = D
var/coords = istype(A) ? "at ([A.x], [A.y], [A.z])" : ""
if(alert(src, "Are you sure you want to delete:\n[D]\n[coords]?", "Confirmation", "Yes", "No") == "Yes")
log_admin("[key_name(usr)] deleted [D][coords]")
message_admins("[key_name_admin(usr)] deleted [D][coords]", 1)
log_admin("[key_name(usr)] deleted [D] [coords]")
message_admins("[key_name_admin(usr)] deleted [D] [coords]", 1)
feedback_add_details("admin_verb","DEL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
if(isturf(D))
var/turf/T = D
+1 -1
View File
@@ -79,7 +79,7 @@ var/global/datum/prizes/global_prizes = new
/datum/prize_item/cards
name = "Deck of Cards"
desc = "Anyone fancy a game of 52-card Pickup?"
typepath = /obj/item/toy/cards/deck
typepath = /obj/item/deck/cards
cost = 25
/datum/prize_item/crayons
+10 -7
View File
@@ -6,6 +6,8 @@
/obj/effect/mob_spawn
name = "Unknown"
density = TRUE
anchored = TRUE
icon = 'icons/effects/blood.dmi'
icon_state = "remains"
var/mob_type = null
@@ -26,13 +28,12 @@
var/datum/disease/disease = null //Do they start with a pre-spawned disease?
var/mob_color //Change the mob's color
var/assignedrole
density = TRUE
anchored = TRUE
var/banType = "lavaland"
var/ghost_usable = TRUE
/obj/effect/mob_spawn/attack_ghost(mob/user)
if(ticker.current_state != GAME_STATE_PLAYING || !loc)
if(ticker.current_state != GAME_STATE_PLAYING || !loc || !ghost_usable)
return
if(!uses)
to_chat(user, "<span class='warning'>This spawner is out of charges!</span>")
@@ -40,6 +41,8 @@
if(jobban_isbanned(user, banType))
to_chat(user, "<span class='warning'>You are jobanned!</span>")
return
if(QDELETED(src) || QDELETED(user))
return
var/ghost_role = alert("Become [mob_name]? (Warning, You can no longer be cloned!)",,"Yes","No")
if(ghost_role == "No" || !loc)
return
@@ -50,7 +53,7 @@
. = ..()
if(instant || roundstart) //at some point we should probably re-introduce the (ticker && ticker.current_state > GAME_STATE_SETTING_UP) portion of this check, but for now it was preventing the corpses from spawning at roundstart and resulting in ghost role spawners that made dead bodies.
create()
else
else if(ghost_usable)
GLOB.poi_list |= src
LAZYADD(GLOB.mob_spawners[name], src)
@@ -305,7 +308,7 @@
name = "sleeper"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper"
flavour_text = "You are a space doctor!"
flavour_text = "<span class='big bold'>You are a space doctor!</span>"
assignedrole = "Space Doctor"
/obj/effect/mob_spawn/human/doctor/alive/equip(mob/living/carbon/human/H)
@@ -436,7 +439,7 @@
name = "bartender sleeper"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper"
flavour_text = "You are a space bartender!"
flavour_text = "<span class='big bold'>You are a space bartender!</span><b> Time to mix drinks and change lives.</b>"
assignedrole = "Space Bartender"
/datum/outfit/spacebartender
@@ -556,4 +559,4 @@
back = /obj/item/storage/backpack
shoes = /obj/item/clothing/shoes/black
suit = /obj/item/clothing/suit/armor/vest
glasses = /obj/item/clothing/glasses/sunglasses/reagent
glasses = /obj/item/clothing/glasses/sunglasses/reagent
@@ -0,0 +1,475 @@
// items
/obj/item/storage/firstaid/ancient
icon_state = "firstaid"
desc = "A first aid kit with the ability to heal common types of injuries."
/obj/item/storage/firstaid/ancient/New()
..()
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/ointment(src)
new /obj/item/stack/medical/ointment(src)
new /obj/item/stack/medical/ointment(src)
/obj/item/card/id/away/old
name = "A perfectly retrograde identification card"
desc = "A perfectly retrograde identification card. Looks like it could use some flavor."
icon = 'icons/obj/card.dmi'
icon_state = "retro"
access = list(access_away01)
/obj/item/card/id/away/old/sec
name = "Security Officer ID"
desc = "A clip on ID Badge, has one of those fancy new magnetic strips built in. This one is encoded for the Security Dept."
icon_state = "retro_security"
/obj/item/card/id/away/old/sci
name = "Scientist ID"
desc = "A clip on ID Badge, has one of those fancy new magnetic strips built in. This one is encoded for the Science Dept."
icon_state = "retro_research"
/obj/item/card/id/away/old/med
name = "Medical ID"
desc = "A clip on ID Badge, has one of those fancy new magnetic strips built in. This one is encoded for the Medical Dept."
icon_state = "retro_medical"
/obj/item/card/id/away/old/eng
name = "Engineer ID"
desc = "A clip on ID Badge, has one of those fancy new magnetic strips built in. This one is encoded for the Engineering Dept."
icon_state = "retro_engineering"
/obj/item/card/id/away/old/apc
name = "APC Access ID"
desc = "A special ID card that allows access to APC terminals."
icon_state = "centcom_old"
access = list(access_engine_equip)
/obj/item/storage/backpack/old
max_combined_w_class = 12
// Equipment
/obj/item/clothing/head/helmet/space/nasavoid/old
name = "Engineering Void Helmet"
desc = "A CentCom engineering dark red space suit helmet. While old and dusty, it still gets the job done."
icon_state = "void-red"
item_state = "void"
/obj/item/clothing/suit/space/nasavoid/old
name = "Engineering Voidsuit"
icon_state = "void-red"
item_state = "void"
desc = "A CentCom engineering dark red space suit. Age has degraded the suit making is difficult to move around in."
slowdown = 4
allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/multitool)
/obj/item/clothing/head/helmet/old
name = "degrading helmet"
desc = "Standard issue security helmet. Due to degradation the helmet's visor obstructs the users ability to see long distances."
tint = 2
/obj/item/clothing/suit/armor/vest/old
name = "degrading armor vest"
desc = "Older generation Type 1 armored vest. Due to degradation over time the vest is far less maneuverable to move in."
icon_state = "armor"
item_state = "armor"
slowdown = 1
/obj/item/gun/energy/laser/retro/old
name ="laser gun"
icon_state = "retro"
desc = "First generation lasergun, developed by Nanotrasen. Suffers from ammo issues but its unique ability to recharge its ammo without the need of a magazine helps compensate. You really hope someone has developed a better lasergun while you were in cryo."
ammo_type = list(/obj/item/ammo_casing/energy/lasergun/old)
ammo_x_offset = 3
/obj/item/ammo_casing/energy/lasergun/old
projectile_type = /obj/item/projectile/beam/laser
e_cost = 200
select_name = "kill"
/obj/item/gun/energy/e_gun/old
name = "prototype energy gun"
desc = "NT-P:01 Prototype Energy Gun. Early stage development of a unique laser rifle that has multifaceted energy lens allowing the gun to alter the form of projectile it fires on command."
icon_state = "protolaser"
ammo_x_offset = 2
ammo_type = list(/obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/electrode/old)
/obj/item/ammo_casing/energy/electrode/old
e_cost = 1000
// Papers
/obj/item/paper/fluff/ruins/oldstation
name = "Cryo Awakening Alert"
info = "<B>**WARNING**</B><BR><BR>Catastrophic damage sustained to station. Powernet exhausted to reawaken crew.<BR><BR>Immediate Objectives<br><br>1: Activate emergency power generator<br>2: Lift station lockdown on the bridge<br><br>Please locate the 'Damage Report' on the bridge for a detailed situation report."
/obj/item/paper/fluff/ruins/oldstation/damagereport
name = "Damage Report"
info = "<b>*Damage Report*</b><br><br><b>Alpha Station</b> - Destroyed<br><br><b>Beta Station</b> - Catastrophic Damage. Medical, destroyed. Atmospherics, partially destroyed. Engine Core, destroyed.<br><br><b>Charlie Station</b> - Intact. Loss of oxygen to eastern side of main corridor.<br><br><b>Delta Station</b> - Intact. <b>WARNING</b>: Unknown force occupying Delta Station. Intent unknown. Species unknown. Numbers unknown.<br><br>Recommendation - Reestablish station powernet via solar array. Reestablish station atmospherics system to restore air."
/obj/item/paper/fluff/ruins/oldstation/protosuit
name = "B01-RIG Hardsuit Report"
info = "<b>*Prototype Hardsuit*</b><br><br>The B01-RIG Hardsuit is a prototype powered exoskeleton. Based off of a recovered pre-void war era united Earth government powered military \
exosuit, the RIG Hardsuit is a breakthrough in Hardsuit technology, and is the first post-void war era Hardsuit that can be safely used by an operator.<br><br>The B01 however suffers \
a myriad of constraints. It is slow and bulky to move around, it lacks any significant armor plating against direct attacks and its internal heads up display is unfinished, \
resulting in the user being unable to see long distances.<br><br>The B01 is unlikely to see any form of mass production, but will serve as a base for future Hardsuit developments."
/obj/item/paper/fluff/ruins/oldstation/protohealth
name = "Health Analyser Report"
info = "<b>*Health Analyser*</b><br><br>The portable Health Analyser is essentially a handheld variant of a health analyser. Years of research have concluded with this device which is \
capable of diagnosing even the most critical, obscure or technical injuries any humanoid entity is suffering in an easy to understand format that even a non-trained health professional \
can understand.<br><br>The health analyser is expected to go into full production as standard issue medical kit."
/obj/item/paper/fluff/ruins/oldstation/protogun
name = "K14 Energy Gun Report"
info = "<b>*K14-Multiphase Energy Gun*</b><br><br>The K14 Prototype Energy Gun is the first Energy Rifle that has been successfully been able to not only hold a larger ammo charge \
than other gun models, but is capable of swapping between different energy projectile types on command with no incidents.<br><br>The weapon still suffers several drawbacks, its alternative, \
non laser fire mode, can only fire one round before exhausting the energy cell, the weapon also remains prohibitively expensive, nonetheless NT Market Research fully believe this weapon \
will form the backbone of our Energy weapon catalogue.<br><br>The K14 is expected to undergo revision to fix the ammo issues, the K15 is expected to replace the 'stun' setting with a \
'disable' setting in an attempt to bypass the ammo issues."
/obj/item/paper/fluff/ruins/oldstation/protosing
name = "Singularity Generator"
info = "<b>*Singularity Generator*</b><br><br>Modern power generation typically comes in two forms, a Fusion Generator or a Fission Generator. Fusion provides the best space to power \
ratio, and is typically seen on military or high security ships and stations, however Fission reactors require the usage of expensive, and rare, materials in its construction.. Fission generators are massive and bulky, and require a large reserve of uranium to power, however they are extremely cheap to operate and oft need little maintenance once \
operational.<br><br>The Singularity aims to alter this, a functional Singularity is essentially a controlled Black Hole, a Black Hole that generates far more power than Fusion or Fission \
generators can ever hope to produce. "
/obj/item/paper/fluff/ruins/oldstation/protoinv
name = "Laboratory Inventory"
info = "<b>*Inventory*</b><br><br>(1) Prototype Hardsuit<br><br>(1)Health Analyser<br><br>(1)Prototype Energy Gun<br><br>(1)Singularity Generation Disk<br><br><b>DO NOT REMOVE WITHOUT \
THE CAPTAIN AND RESEARCH DIRECTOR'S AUTHORISATION</b>"
/obj/item/paper/fluff/ruins/oldstation/report
name = "Crew Reawakening Report"
info = "Artificial Program's report to surviving crewmembers.<br><br>Crew were placed into cryostasis on March 10th, 2445.<br><br>Crew were awoken from cryostasis around June, 2557.<br><br> \
<b>SIGNIFICANT EVENTS OF NOTE</b><br>1: The primary radiation detectors were taken offline after 112 years due to power failure, secondary radiation detectors showed no residual \
radiation on station. Deduction, primarily detector was malfunctioning and was producing a radiation signal when there was none.<br><br>2: A data burst from a nearby Nanotrasen Space \
Station was received, this data burst contained research data that has been uploaded to our RnD labs.<br><br>3: Unknown invasion force has occupied Delta station."
/obj/item/paper/fluff/ruins/oldstation/generator_manual
name = "S.U.P.E.R.P.A.C.M.A.N.-type portable generator manual"
info = "You can barely make out a faded sentence... <br><br> Wrench down the generator on top of a wire node connected to either a SMES input terminal or the power grid."
//Old Prototype Hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/ancient
name = "prototype RIG hardsuit helmet"
desc = "Early prototype RIG hardsuit helmet, designed to quickly shift over a user's head. Design constraints of the helmet mean it has no inbuilt cameras, thus it restricts the users visability."
icon_state = "hardsuit0-ancient"
item_state = "anc_helm"
armor = list("melee" = 30, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75)
item_color = "ancient"
resistance_flags = FIRE_PROOF
/obj/item/clothing/suit/space/hardsuit/ancient
name = "prototype RIG hardsuit"
desc = "Prototype powered RIG hardsuit. Provides excellent protection from the elements of space while being comfortable to move around in, thanks to the powered locomotives. Remains very bulky however."
icon_state = "hardsuit-ancient"
item_state = "anc_hardsuit"
armor = list("melee" = 30, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75)
slowdown = 3
resistance_flags = FIRE_PROOF
var/footstep = 1
/obj/item/clothing/suit/space/hardsuit/ancient/on_mob_move()
var/mob/living/carbon/human/H = loc
if(!istype(H) || H.wear_suit != src)
return
if(footstep > 1)
playsound(src, 'sound/effects/servostep.ogg', 100, 1)
footstep = 0
else
footstep++
..()
// Chemical bottles
/obj/item/reagent_containers/glass/bottle/aluminum
name = "aluminum bottle"
list_reagents = list("aluminum" = 30)
/obj/item/reagent_containers/glass/bottle/hydrogen
name = "hydrogen bottle"
list_reagents = list("hydrogen" = 30)
/obj/item/reagent_containers/glass/bottle/lithium
name = "lithium bottle"
list_reagents = list("lithium" = 30)
/obj/item/reagent_containers/glass/bottle/carbon
name = "carbon bottle"
list_reagents = list("carbon" = 30)
/obj/item/reagent_containers/glass/bottle/nitrogen
name = "nitrogen bottle"
list_reagents = list("nitrogen" = 30)
/obj/item/reagent_containers/glass/bottle/oxygen
name = "oxygen bottle"
list_reagents = list("oxygen" = 30)
/obj/item/reagent_containers/glass/bottle/fluorine
name = "fluorine bottle"
list_reagents = list("fluorine" = 30)
/obj/item/reagent_containers/glass/bottle/sodium
name = "sodium bottle"
list_reagents = list("sodium" = 30)
/obj/item/reagent_containers/glass/bottle/silicon
name = "silicon bottle"
list_reagents = list("silicon" = 30)
/obj/item/reagent_containers/glass/bottle/phosphorus
name = "phosphorus bottle"
list_reagents = list("phosphorus" = 30)
/obj/item/reagent_containers/glass/bottle/sulfur
name = "sulfur bottle"
list_reagents = list("sulfur" = 30)
/obj/item/reagent_containers/glass/bottle/chlorine
name = "chlorine bottle"
list_reagents = list("chlorine" = 30)
/obj/item/reagent_containers/glass/bottle/potassium
name = "potassium bottle"
list_reagents = list("potassium" = 30)
/obj/item/reagent_containers/glass/bottle/iron
name = "iron bottle"
list_reagents = list("iron" = 30)
/obj/item/reagent_containers/glass/bottle/copper
name = "copper bottle"
list_reagents = list("copper" = 30)
/obj/item/reagent_containers/glass/bottle/mercury
name = "mercury bottle"
list_reagents = list("mercury" = 30)
/obj/item/reagent_containers/glass/bottle/radium
name = "radium bottle"
list_reagents = list("radium" = 30)
/obj/item/reagent_containers/glass/bottle/water
name = "water bottle"
list_reagents = list("water" = 30)
/obj/item/reagent_containers/glass/bottle/ethanol
name = "ethanol bottle"
list_reagents = list("ethanol" = 30)
/obj/item/reagent_containers/glass/bottle/sugar
name = "sugar bottle"
list_reagents = list("sugar" = 30)
/obj/item/reagent_containers/glass/bottle/sacid
name = "sulphuric acid bottle"
list_reagents = list("sacid" = 30)
/obj/item/reagent_containers/glass/bottle/welding_fuel
name = "welding fuel bottle"
list_reagents = list("fuel" = 30)
/obj/item/reagent_containers/glass/bottle/silver
name = "silver bottle"
list_reagents = list("silver" = 30)
/obj/item/reagent_containers/glass/bottle/iodine
name = "iodine bottle"
list_reagents = list("iodine" = 30)
/obj/item/reagent_containers/glass/bottle/bromine
name = "bromine bottle"
list_reagents = list("bromine" = 30)
// Engines
/obj/structure/shuttle/engine/large
name = "engine"
opacity = 1
icon = 'icons/obj/2x2.dmi'
icon_state = "large_engine"
desc = "A very large bluespace engine used to propel very large ships."
bound_width = 64
bound_height = 64
appearance_flags = 0
// areas
//Ruin of ancient Space Station
/area/ruin/space/ancientstation
name = "Charlie Station Main Corridor"
icon_state = "green"
has_gravity = TRUE
/area/ruin/space/ancientstation/powered
name = "Powered Tile"
icon_state = "teleporter"
requires_power = FALSE
/area/ruin/space/ancientstation/space
name = "Exposed To Space"
icon_state = "teleporter"
has_gravity = FALSE
/area/ruin/space/ancientstation/atmo
name = "Beta Station Atmospherics"
icon_state = "red"
has_gravity = FALSE
/area/ruin/space/ancientstation/betanorth
name = "Beta Station North Corridor"
icon_state = "blue"
/area/ruin/space/ancientstation/solar
name = "Station Solar Array"
icon_state = "panelsAP"
/area/ruin/space/ancientstation/engi
name = "Charlie Station Engineering"
icon_state = "engine"
/area/ruin/space/ancientstation/comm
name = "Charlie Station Command"
icon_state = "captain"
/area/ruin/space/ancientstation/hydroponics
name = "Charlie Station Hydroponics"
icon_state = "garden"
/area/ruin/space/ancientstation/kitchen
name = "Charlie Station Kitchen"
icon_state = "kitchen"
/area/ruin/space/ancientstation/sec
name = "Charlie Station Security"
icon_state = "red"
/area/ruin/space/ancientstation/deltacorridor
name = "Delta Station Main Corridor"
icon_state = "green"
/area/ruin/space/ancientstation/proto
name = "Delta Station Prototype Lab"
icon_state = "toxlab"
/area/ruin/space/ancientstation/rnd
name = "Delta Station Research and Development"
icon_state = "toxlab"
/area/ruin/space/ancientstation/hivebot
name = "Hivebot Mothership"
icon_state = "teleporter"
// Mob Spawners
//Ancient cryogenic sleepers. Players become NT crewmen from a hundred year old space station, now on the verge of collapse.
/obj/effect/mob_spawn/human/oldsec
name = "old cryogenics pod"
desc = "A humming cryo pod. You can barely recognise a security uniform underneath the built up ice. The machine is attempting to wake up its occupant."
mob_name = "a security officer"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper"
roundstart = FALSE
death = FALSE
random = TRUE
mob_species = /datum/species/human
flavour_text = "<span class='big bold'>You are a security officer working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
Work as a team with your fellow survivors and do not abandon them.</b>"
uniform = /obj/item/clothing/under/retro/security
shoes = /obj/item/clothing/shoes/jackboots
id = /obj/item/card/id/away/old/sec
r_pocket = /obj/item/restraints/handcuffs
l_pocket = /obj/item/flash
assignedrole = "Ancient Crew"
/obj/effect/mob_spawn/human/oldsec/Destroy()
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
/obj/effect/mob_spawn/human/oldmed
name = "old cryogenics pod"
desc = "A humming cryo pod. You can barely recognise a medical uniform underneath the built up ice. The machine is attempting to wake up its occupant."
mob_name = "a medical doctor"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper"
roundstart = FALSE
death = FALSE
random = TRUE
mob_species = /datum/species/human
flavour_text = "<span class='big bold'>You are a medical working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
Work as a team with your fellow survivors and do not abandon them.</b>"
uniform = /obj/item/clothing/under/retro/medical
shoes = /obj/item/clothing/shoes/black
id = /obj/item/card/id/away/old/med
l_pocket = /obj/item/stack/medical/ointment
r_pocket = /obj/item/stack/medical/ointment
assignedrole = "Ancient Crew"
/obj/effect/mob_spawn/human/oldmed/Destroy()
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
/obj/effect/mob_spawn/human/oldeng
name = "old cryogenics pod"
desc = "A humming cryo pod. You can barely recognise an engineering uniform underneath the built up ice. The machine is attempting to wake up its occupant."
mob_name = "an engineer"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper"
roundstart = FALSE
death = FALSE
random = TRUE
mob_species = /datum/species/human
flavour_text = "<span class='big bold'>You are an engineer working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
Work as a team with your fellow survivors and do not abandon them.</b>"
uniform = /obj/item/clothing/under/retro/engineering
shoes = /obj/item/clothing/shoes/workboots
id = /obj/item/card/id/away/old/eng
gloves = /obj/item/clothing/gloves/color/fyellow/old
l_pocket = /obj/item/tank/emergency_oxygen
assignedrole = "Ancient Crew"
/obj/effect/mob_spawn/human/oldeng/Destroy()
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
/obj/effect/mob_spawn/human/oldsci
name = "old cryogenics pod"
desc = "A humming cryo pod. You can barely recognise a science uniform underneath the built up ice. The machine is attempting to wake up its occupant."
mob_name = "a scientist"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper"
roundstart = FALSE
death = FALSE
random = TRUE
mob_species = /datum/species/human
flavour_text = "<span class='big bold'>You are a scientist working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
Work as a team with your fellow survivors and do not abandon them.</b>"
uniform = /obj/item/clothing/under/retro/science
shoes = /obj/item/clothing/shoes/laceup
id = /obj/item/card/id/away/old/sci
l_pocket = /obj/item/stack/medical/bruise_pack
assignedrole = "Ancient Crew"
/obj/effect/mob_spawn/human/oldsci/Destroy()
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
/obj/structure/showcase/machinery/oldpod
name = "damaged cryogenic pod"
desc = "A damaged cryogenic pod long since lost to time, including its former occupant..."
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper-open"
/obj/structure/showcase/machinery/oldpod/used
name = "opened cryogenic pod"
desc = "A cryogenic pod that has recently discharged its occupant. The pod appears non-functional."
+1
View File
@@ -12,6 +12,7 @@
//OTHER//
/////////
var/datum/preferences/prefs = null
var/skip_antag = FALSE //TRUE when a player declines to be included for the selection process of game mode antagonists.
var/move_delay = 1
var/moving = null
var/adminobs = null
@@ -36,8 +36,16 @@
path = /obj/item/storage/box/matches
/datum/gear/cards
display_name = "a deck of cards"
path = /obj/item/toy/cards/deck
display_name = "a deck of standard cards"
path = /obj/item/deck/cards
/datum/gear/doublecards
display_name = "a double deck of standard cards"
path = /obj/item/deck/doublecards
/datum/gear/tarot
display_name = "a deck of tarot cards"
path = /obj/item/deck/tarot
/datum/gear/headphones
display_name = "a pair of headphones"
+11 -2
View File
@@ -48,8 +48,17 @@
item_color="yellow"
burn_state = FIRE_PROOF
New()
siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5)
/obj/item/clothing/gloves/color/fyellow/New()
..()
siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5)
/obj/item/clothing/gloves/color/fyellow/old
desc = "Old and worn out insulated gloves, hopefully they still work."
name = "worn out insulated gloves"
/obj/item/clothing/gloves/color/fyellow/old/New()
..()
siemens_coefficient = pick(0,0,0,0.5,0.5,0.5,0.75)
/obj/item/clothing/gloves/color/black
desc = "These gloves are fire-resistant."
@@ -96,6 +96,7 @@
playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
H.do_attack_animation(C)
visible_message("<span class='danger'>[C] has been touched with [src] by [H]!</span>")
add_attack_logs(H, C, "Touched with stun gloves")
C.Stun(stun_strength)
C.Weaken(stun_strength)
C.apply_effect(STUTTER, stun_strength)
@@ -0,0 +1,37 @@
//Let's keep clothing sorting clean. This is for all the oldstation clothes.
/obj/item/clothing/under/retro/security
desc = "A (now) retro corporate security jumpsuit. It doesn't have any sort of robust fabric, good ol' NT cutting costs."
name = "retro security officer's uniform"
icon_state = "retro_sec"
item_state = "retro_sec"
item_color = "retro_sec"
displays_id = 0
flags_size = ONESIZEFITSALL
/obj/item/clothing/under/retro/medical
desc = "A once biologically resistant medical uniform. The high-vis stripes are faded and unreflective."
name = "retro medical officer's uniform"
icon_state = "retro_med"
item_state = "retro_med"
item_color = "retro_med"
displays_id = 0
flags_size = ONESIZEFITSALL
/obj/item/clothing/under/retro/engineering
desc = "A faded grimy engineering jumpsuit and overall combo. It's coated with oil, dust, and grit."
name = "retro engineering uniform"
icon_state = "retro_eng"
item_state = "retro_eng"
item_color = "retro_eng"
displays_id = 0
flags_size = ONESIZEFITSALL
/obj/item/clothing/under/retro/science
desc = "A faded polo and set of distinct white slacks. What a ridiculous tie."
name = "retro science officer's uniform"
icon_state = "retro_sci"
item_state = "retro_sci"
item_color = "retro_sci"
displays_id = 0
flags_size = ONESIZEFITSALL
+10
View File
@@ -339,6 +339,16 @@
time = 50
category = CAT_WEAPON
/datum/crafting_recipe/toxins_payload
name = "Toxins Payload Casing"
result = /obj/item/bombcore/toxins
reqs = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/assembly/signaler = 1,
/obj/item/stack/sheet/metal = 2
)
category = CAT_WEAPON
/datum/crafting_recipe/bonfire
name = "Bonfire"
time = 60
+21 -1
View File
@@ -135,7 +135,7 @@
/obj/item/claymore/fluff/hit_reaction()
return 0
/obj/item/fluff/rsik_katana //Xydonus: Rsik Ugsharki
/obj/item/fluff/rsik_katana //Xydonus: Rsik Ugsharki Atan
name = "ceremonial katana"
desc = "A shimmering ceremonial golden katana, for the most discerning class of ninja. Looks expensive, and fragile."
icon = 'icons/obj/custom_items.dmi'
@@ -1020,6 +1020,26 @@
flags = NODROP|BLOCKHAIR
flags_inv = HIDEEARS
/obj/item/clothing/suit/hooded/hoodie/fluff/xydonus //Xydonus: Rsik Ugsharki Atan | Based off of the bomber jacket, but with a hood slapped on (for allowed suit storage)
name = "custom fit bomber jacket"
desc = "Made for Unathi who likes to show off their big horns."
icon = 'icons/obj/custom_items.dmi'
icon_state = "xydonus_jacket"
ignore_suitadjust = 0
hoodtype = /obj/item/clothing/head/hood/fluff/xydonus
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency_oxygen,/obj/item/toy,/obj/item/storage/fancy/cigarettes,/obj/item/lighter)
/obj/item/clothing/head/hood/fluff/xydonus
name = "custom fit hood"
desc = "A hood with some horns <i>glued</i> to them, or something like that. Custom fit for a Unathi's head shape."
icon = 'icons/obj/custom_items.dmi'
icon_state = "xydonus_bomberhood"
body_parts_covered = HEAD
flags = NODROP|BLOCKHAIR
flags_inv = HIDEEARS
//////////// Uniforms ////////////
/obj/item/clothing/under/fluff/counterfeitguise_uniform // thatdanguy23 : Rissa Williams
icon = 'icons/obj/custom_items.dmi'
@@ -62,7 +62,7 @@
if(!proximity)
return
if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it.
if(target.is_refillable() && is_drainable()) //Something like a glass. Player probably wants to transfer TO it.
if(!reagents.total_volume)
to_chat(user, "<span class='warning'> [src] is empty.</span>")
return FALSE
@@ -0,0 +1,79 @@
/obj/structure/fermenting_barrel
name = "wooden barrel"
desc = "A large wooden barrel. You can ferment fruits and such inside it, or just use it to hold liquid."
icon = 'icons/obj/objects.dmi'
icon_state = "barrel"
density = TRUE
anchored = FALSE
container_type = DRAINABLE | AMOUNT_VISIBLE
pressure_resistance = 2 * ONE_ATMOSPHERE
max_integrity = 300
var/open = FALSE
var/speed_multiplier = 1 //How fast it distills. Defaults to 100% (1.0). Lower is better.
/obj/structure/fermenting_barrel/Initialize()
create_reagents(300) //Bluespace beakers, but without the portability or efficiency in circuits.
. = ..()
/obj/structure/fermenting_barrel/examine(mob/user)
. = ..()
to_chat(user, "<span class='notice'>It is currently [open ? "open, letting you pour liquids in." : "closed, letting you draw liquids from the tap."] </span>")
/obj/structure/fermenting_barrel/proc/makeWine(obj/item/reagent_containers/food/snacks/grown/G)
if(G.reagents)
G.reagents.trans_to(src, G.reagents.total_volume)
var/amount = G.seed.potency / 4
if(G.distill_reagent)
reagents.add_reagent(G.distill_reagent, amount)
else
var/data = list()
data["names"] = list("[initial(G.name)]" = 1)
data["color"] = G.filling_color
data["alcohol_perc"] = G.wine_power
if(G.wine_flavor)
data["tastes"] = list(G.wine_flavor = 1)
// else // Stub - Will implement when we port over tg's better taste system - I'd rather get the barrel in first.
// data["tastes"] = list(G.tastes[1] = 1)
reagents.add_reagent("fruit_wine", amount, data)
qdel(G)
playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE)
/obj/structure/fermenting_barrel/attackby(obj/item/I, mob/user, params)
var/obj/item/reagent_containers/food/snacks/grown/G = I
if(istype(G))
if(!G.can_distill)
to_chat(user, "<span class='warning'>You can't distill this into anything...</span>")
return FALSE
else if(!user.drop_item())
to_chat(user, "<span class='warning'>[G] is stuck to your hand!</span>")
return FALSE
G.forceMove(src)
to_chat(user, "<span class='notice'>You place [G] into [src] to start the fermentation process.</span>")
addtimer(CALLBACK(src, .proc/makeWine, G), rand(80, 120) * speed_multiplier)
else if(I.is_refillable())
return FALSE // To refill via afterattack proc
else
return ..()
/obj/structure/fermenting_barrel/attack_hand(mob/user)
open = !open
if(open)
container_type = REFILLABLE | AMOUNT_VISIBLE
to_chat(user, "<span class='notice'>You open [src], letting you fill it.</span>")
else
container_type = DRAINABLE | AMOUNT_VISIBLE
to_chat(user, "<span class='notice'>You close [src], letting you draw from its tap.</span>")
update_icon()
/obj/structure/fermenting_barrel/update_icon()
if(open)
icon_state = "barrel_open"
else
icon_state = "barrel"
/datum/crafting_recipe/fermenting_barrel
name = "Wooden Barrel"
result = /obj/structure/fermenting_barrel
reqs = list(/obj/item/stack/sheet/wood = 30)
time = 50
category = CAT_PRIMAL
+6 -5
View File
@@ -8,12 +8,13 @@
icon = 'icons/obj/hydroponics/harvest.dmi'
var/obj/item/seeds/seed = null // type path, gets converted to item on New(). It's safe to assume it's always a seed item.
var/plantname = ""
var/bitesize_mod = 0
var/bitesize_mod = 0 // If set, bitesize = 1 + round(reagents.total_volume / bitesize_mod)
var/splat_type = /obj/effect/decal/cleanable/plant_smudge
// If set, bitesize = 1 + round(reagents.total_volume / bitesize_mod)
dried_type = -1
// Saves us from having to define each stupid grown's dried_type as itself.
// If you don't want a plant to be driable (watermelons) set this to null in the time definition.
var/can_distill = TRUE //If FALSE, this object cannot be distilled into an alcohol.
var/distill_reagent //If NULL and this object can be distilled, it uses a generic fruit_wine reagent and adjusts its variables.
var/wine_flavor //If NULL, this is automatically set to the fruit's flavor. Determines the flavor of the wine if distill_reagent is NULL.
var/wine_power = 0.1 //Determines the boozepwr of the wine if distill_reagent is NULL. Uses 0.1 - 1.2 not tg's boozepower (divide by 100) else you'll end up with 1000% proof alcohol!
dried_type = -1 // Saves us from having to define each stupid grown's dried_type as itself. If you don't want a plant to be driable (watermelons) set this to null in the time definition.
burn_state = FLAMMABLE
origin_tech = "biotech=1"
+6 -1
View File
@@ -30,6 +30,7 @@
name = "ambrosia vulgaris branch"
desc = "This is a plant containing various healing chemicals."
origin_tech = "biotech=2"
wine_power = 0.2
// Ambrosia Deus
/obj/item/seeds/ambrosia/deus
@@ -50,6 +51,7 @@
icon_state = "ambrosiadeus"
filling_color = "#008B8B"
origin_tech = "biotech=4;materials=3"
wine_power = 0.5
//Ambrosia Gaia
/obj/item/seeds/ambrosia/gaia
@@ -74,6 +76,8 @@
origin_tech = "biotech=6;materials=5"
light_range = 3
seed = /obj/item/seeds/ambrosia/gaia
wine_power = 0.7
wine_flavor = "the earthmother's blessing"
// Ambrosia Cruciatus
/obj/item/seeds/ambrosia/cruciatus
@@ -83,4 +87,5 @@
reagents_add = list("thc" = 0.15, "kelotane" = 0.15, "bicaridine" = 0.1, "bath_salts" = 0.20, "plantmatter" = 0.05)
/obj/item/reagent_containers/food/snacks/grown/ambrosia/cruciatus
seed = /obj/item/seeds/ambrosia/cruciatus
seed = /obj/item/seeds/ambrosia/cruciatus
wine_power = 0.7
+3
View File
@@ -23,6 +23,7 @@
icon_state = "apple"
filling_color = "#FF4500"
bitesize = 100 // Always eat the apple in one bite
distill_reagent = "hcider"
// Posioned Apple
/obj/item/seeds/apple/poisoned
@@ -55,3 +56,5 @@
icon_state = "goldapple"
filling_color = "#FFD700"
origin_tech = "biotech=4;materials=5"
distill_reagent = null
wine_power = 0.5
+4
View File
@@ -23,6 +23,7 @@
trash = /obj/item/grown/bananapeel
filling_color = "#FFFF00"
bitesize = 5
distill_reagent = "bananahonk"
/obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is aiming the [name] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide.</span>")
@@ -74,6 +75,7 @@
icon_state = "mimana"
trash = /obj/item/grown/bananapeel/mimanapeel
filling_color = "#FFFFEE"
distill_reagent = "silencer"
/obj/item/grown/bananapeel/mimanapeel
seed = /obj/item/seeds/banana/mime
@@ -102,6 +104,8 @@
trash = /obj/item/grown/bananapeel/bluespace
filling_color = "#0000FF"
origin_tech = "biotech=3;bluespace=5"
wine_power = 0.6
wine_flavor = "slippery hypercubes"
/obj/item/grown/bananapeel/bluespace
seed = /obj/item/seeds/banana/bluespace
+3 -1
View File
@@ -25,6 +25,7 @@
icon_state = "soybeans"
filling_color = "#F0E68C"
bitesize_mod = 2
wine_power = 0.2
// Koibean
/obj/item/seeds/soya/koi
@@ -45,4 +46,5 @@
desc = "Something about these seems fishy."
icon_state = "koibeans"
filling_color = "#F0E68C"
bitesize_mod = 2
bitesize_mod = 2
wine_power = 0.4
+12
View File
@@ -25,6 +25,7 @@
gender = PLURAL
filling_color = "#FF00FF"
bitesize_mod = 2
distill_reagent = "gin"
// Poison Berries
/obj/item/seeds/berry/poison
@@ -44,6 +45,8 @@
desc = "Taste so good, you could die!"
icon_state = "poisonberrypile"
filling_color = "#C71585"
distill_reagent = null
wine_power = 0.35
// Death Berries
/obj/item/seeds/berry/death
@@ -65,6 +68,8 @@
desc = "Taste so good, you could die!"
icon_state = "deathberrypile"
filling_color = "#708090"
distill_reagent = null
wine_power = 0.5
// Glow Berries
/obj/item/seeds/berry/glow
@@ -89,6 +94,9 @@
filling_color = "#7CFC00"
origin_tech = "plasmatech=6"
light_color = "#006622"
distill_reagent = null
wine_power = 0.6
wine_flavor = "warmth"
// Cherries
/obj/item/seeds/cherry
@@ -118,6 +126,7 @@
gender = PLURAL
filling_color = "#FF0000"
bitesize_mod = 2
wine_power = 0.3
// Blue Cherries
/obj/item/seeds/cherry/blue
@@ -138,6 +147,7 @@
icon_state = "bluecherry"
filling_color = "#6495ED"
bitesize_mod = 2
wine_power = 0.5
// Grapes
/obj/item/seeds/grape
@@ -168,6 +178,7 @@
dried_type = /obj/item/reagent_containers/food/snacks/no_raisin
filling_color = "#FF1493"
bitesize_mod = 2
distill_reagent = "wine"
// Green Grapes
/obj/item/seeds/grape/green
@@ -186,3 +197,4 @@
name = "bunch of green grapes"
icon_state = "greengrapes"
filling_color = "#7FFF00"
distill_reagent = "cognac"
@@ -93,6 +93,7 @@
icon_state = "cannabis"
filling_color = "#00FF00"
bitesize_mod = 2
wine_power = 0.2
/obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow
@@ -100,18 +101,21 @@
name = "rainbow cannabis leaf"
desc = "Is it supposed to be glowing like that...?"
icon_state = "megacannabis"
wine_power = 0.6
/obj/item/reagent_containers/food/snacks/grown/cannabis/death
seed = /obj/item/seeds/cannabis/death
name = "death cannabis leaf"
desc = "Looks a bit dark. Oh well."
icon_state = "blackcannabis"
wine_power = 0.4
/obj/item/reagent_containers/food/snacks/grown/cannabis/white
seed = /obj/item/seeds/cannabis/white
name = "white cannabis leaf"
desc = "It feels smooth and nice to the touch."
icon_state = "whitecannabis"
wine_power = 0.1
/obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate
seed = /obj/item/seeds/cannabis/ultimate
@@ -119,3 +123,4 @@
desc = "You feel dizzy looking at it. What the fuck?"
icon_state = "ocannabis"
volume = 420
wine_power = 0.9

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