Merge remote-tracking branch 'upstream/master' into mechastuff

# Conflicts:
#	icons/mob/screen_alert.dmi
This commit is contained in:
tigercat2000
2018-11-04 10:52:50 -08:00
71 changed files with 2073 additions and 267 deletions
+2
View File
@@ -525,6 +525,8 @@ 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
@@ -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
"}
+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))
+26
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
+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)))
+12
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"
+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
+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
+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
+7
View File
@@ -992,6 +992,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."
+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
+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
+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()
+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
@@ -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"
+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."
+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
+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'
+1 -1
View File
@@ -28,7 +28,7 @@
/obj/machinery/mineral/ore_redemption/New()
..()
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),INFINITY)
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), INFINITY, FALSE, /obj/item/stack)
files = new /datum/research/smelter(src)
component_parts = list()
component_parts += new /obj/item/circuitboard/ore_redemption(null)
+1 -1
View File
@@ -83,7 +83,7 @@
/obj/machinery/mineral/processing_unit/New()
..()
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), INFINITY)
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), INFINITY, TRUE, /obj/item/stack)
files = new /datum/research/smelter(src)
/obj/machinery/mineral/processing_unit/Destroy()
+1 -1
View File
@@ -16,7 +16,7 @@
/obj/machinery/mineral/mint/New()
..()
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM, MAT_TRANQUILLITE), MINERAL_MATERIAL_AMOUNT * 50)
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM, MAT_TRANQUILLITE), MINERAL_MATERIAL_AMOUNT * 50, FALSE, /obj/item/stack)
/obj/machinery/mineral/mint/process()
var/turf/T = get_step(src, input_dir)
+11 -1
View File
@@ -30,7 +30,9 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
see_invisible = SEE_INVISIBLE_OBSERVER_AI_EYE
see_in_dark = 100
verbs += /mob/dead/observer/proc/dead_tele
verbs += list(
/mob/dead/observer/proc/dead_tele,
/mob/dead/observer/proc/open_spawners_menu)
// Our new boo spell.
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/boo(null))
@@ -678,3 +680,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
mind.transfer_to(new_char)
else
new_char.key = key
/mob/dead/observer/proc/open_spawners_menu()
set name = "Mob spawners menu"
set desc = "See all currently available ghost spawners"
set category = "Ghost"
var/datum/spawners_menu/menu = new /datum/spawners_menu(src)
menu.ui_interact(src)
+9
View File
@@ -281,6 +281,15 @@
flags = RESTRICTED | WHITELISTED
syllables = list("click","clack")
/datum/language/kidan/get_random_name()
var/new_name = "[pick(list("Vrax", "Krek", "Vriz", "Zrik", "Zarak", "Click", "Zerk", "Drax", "Zven", "Drexx"))]"
new_name += ", "
new_name += "[pick(list("Noble", "Worker", "Scout", "Builder", "Farmer", "Gatherer", "Soldier", "Guard", "Prospector"))]"
new_name += " of Clan "
new_name += "[pick(list("Tristan", "Zarlan", "Clack", "Kkraz", "Zramn", "Orlan", "Zrax"))]" //I ran out of ideas after the first two tbh -_-
return new_name
/datum/language/slime
name = "Bubblish"
desc = "The language of slimes. It's a mixture of bubbling noises and pops. Very difficult to speak without mechanical aid for humans."
+11 -14
View File
@@ -731,25 +731,22 @@
if(hasHUD(usr, "security") && setcriminal != "Cancel")
found_record = 1
var/their_name = R.fields["name"]
var/their_rank = R.fields["rank"]
if(R.fields["criminal"] == "*Execute*")
to_chat(usr, "<span class='warning'>Unable to modify the sec status of a person with an active Execution order. Use a security computer instead.</span>")
else
else
var/rank
if(ishuman(usr))
var/mob/living/carbon/human/U = usr
R.fields["comments"] += "Set to [setcriminal] by [U.get_authentification_name()] ([U.get_assignment()]) on [current_date_string] [station_time_timestamp()] with comment: [t1]<BR>"
if(isrobot(usr))
rank = U.get_assignment()
else if(isrobot(usr))
var/mob/living/silicon/robot/U = usr
R.fields["comments"] += "Set to [setcriminal] by [U.name] ([U.modtype] [U.braintype]) on [current_date_string] [station_time_timestamp()] with comment: [t1]<BR>"
if(isAI(usr))
var/mob/living/silicon/ai/U = usr
R.fields["comments"] += "Set to [setcriminal] by [U.name] (artificial intelligence) on [current_date_string] [station_time_timestamp()] with comment: [t1]<BR>"
R.fields["criminal"] = setcriminal
log_admin("[key_name_admin(usr)] set secstatus of [their_rank] [their_name] to [setcriminal], comment: [t1]")
spawn()
sec_hud_set_security_status()
rank = "[U.modtype] [U.braintype]"
else if(isAI(usr))
rank = "AI"
set_criminal_status(usr, R, setcriminal, t1, rank)
break // Git out of the securiy records loop!
if(found_record)
break // Git out of the general records
if(!found_record)
to_chat(usr, "<span class='warning'>Unable to locate a data core entry for this person.</span>")
@@ -32,24 +32,72 @@
melee_damage_upper = 8
attacktext = "bites"
attack_sound = 'sound/weapons/bite.ogg'
var/chirp_sound = 'sound/misc/nymphchirp.ogg' //used in emote
speed = 0
stop_automated_movement = 0
turns_per_move = 4
var/list/donors = list()
var/ready_evolve = 0
holder_type = /obj/item/holder/diona
can_collar = 1
can_collar = TRUE
a_intent = INTENT_HELP
var/gestalt_alert = "merged with gestalt" //used in adding and clearing alert
var/evolve_donors = 5 //amount of blood donors needed before evolving
var/awareness_donors = 3 //amount of blood donors needed for understand language
var/nutrition_need = 500 //amount of nutrition needed before evolving
var/datum/action/innate/diona/merge/merge_action = new()
var/datum/action/innate/diona/evolve/evolve_action = new()
var/datum/action/innate/diona/steal_blood/steal_blood_action = new()
/datum/action/innate/diona/merge
name = "Merge with gestalt"
icon_icon = 'icons/mob/human_races/r_diona.dmi'
button_icon_state = "preview"
/datum/action/innate/diona/merge/Activate()
var/mob/living/simple_animal/diona/user = owner
user.merge()
/datum/action/innate/diona/evolve
name = "Evolve"
icon_icon = 'icons/obj/cloning.dmi'
button_icon_state = "pod_1"
/datum/action/innate/diona/evolve/Activate()
var/mob/living/simple_animal/diona/user = owner
user.evolve()
/datum/action/innate/diona/steal_blood
name = "Steal blood"
icon_icon = 'icons/obj/bloodpack.dmi'
button_icon_state = "full"
/datum/action/innate/diona/steal_blood/Activate()
var/mob/living/simple_animal/diona/user = owner
user.steal_blood()
/mob/living/simple_animal/diona/New()
..()
if(name == initial(name)) //To stop Pun-Pun becoming generic.
name = "[name] ([rand(1, 1000)])"
real_name = name
add_language("Rootspeak")
verbs += /mob/living/simple_animal/diona/proc/merge
merge_action.Grant(src)
evolve_action.Grant(src)
steal_blood_action.Grant(src)
/mob/living/simple_animal/diona/UnarmedAttack(var/atom/A)
if(isdiona(A) && (src in A.contents)) //can't attack your gestalt
visible_message("[src] wiggles around a bit.")
else
..()
/mob/living/simple_animal/diona/resist()
..()
split()
/mob/living/simple_animal/diona/attack_hand(mob/living/carbon/human/M)
//Let people pick the little buggers up.
@@ -57,88 +105,76 @@
if(isdiona(M))
to_chat(M, "You feel your being twine with that of [src] as it merges with your biomass.")
to_chat(src, "You feel your being twine with that of [M] as you merge with its biomass.")
verbs += /mob/living/simple_animal/diona/proc/split
verbs -= /mob/living/simple_animal/diona/proc/merge
throw_alert(gestalt_alert, /obj/screen/alert/nymph, new_master = src) //adds a screen alert that can call resist
forceMove(M)
else
get_scooped(M)
..()
/mob/living/simple_animal/diona/proc/merge()
set category = "Diona"
set name = "Merge with gestalt"
set desc = "Merge with another diona."
if(iscarbon(loc))
verbs -= /mob/living/simple_animal/diona/proc/merge
return
if(stat != CONSCIOUS)
return FALSE
var/list/choices = list()
for(var/mob/living/carbon/C in view(1,src))
if(!(Adjacent(C)) || !(C.client))
for(var/mob/living/carbon/human/H in view(1,src))
if(!(Adjacent(H)) || !isdiona(H))
continue
choices += H
if(ishuman(C))
var/mob/living/carbon/human/D = C
if(isdiona(D))
choices += C
if(!choices.len)
to_chat(src, "<span class='warning'>No suitable diona nearby.</span>")
return FALSE
var/mob/living/M = input(src,"Who do you wish to merge with?") in null|choices
if(!M || !src || !(Adjacent(M)))
return
if(!M || !src || !(Adjacent(M)) || stat != CONSCIOUS) //input can take a while, so re-validate
return FALSE
if(ishuman(M))
if(isdiona(M))
to_chat(M, "You feel your being twine with that of [src] as it merges with your biomass.")
M.status_flags |= PASSEMOTES
to_chat(src, "You feel your being twine with that of [M] as you merge with its biomass.")
forceMove(M)
verbs += /mob/living/simple_animal/diona/proc/split
verbs -= /mob/living/simple_animal/diona/proc/merge
throw_alert(gestalt_alert, /obj/screen/alert/nymph, new_master = src) //adds a screen alert that can call resist
return TRUE
else
return
return FALSE
/mob/living/simple_animal/diona/proc/split()
set category = "Diona"
set name = "Split from gestalt"
set desc = "Split away from your gestalt as a lone nymph."
if(!(iscarbon(loc)))
verbs -= /mob/living/simple_animal/diona/proc/split
return
if((stat != CONSCIOUS) || !isdiona(loc))
return FALSE
var/mob/living/carbon/human/D = loc
T = get_turf(src)
if(!T)
return FALSE
to_chat(loc, "You feel a pang of loss as [src] splits away from your biomass.")
to_chat(src, "You wiggle out of the depths of [loc]'s biomass and plop to the ground.")
forceMove(T)
var/hasMobs = FALSE
for(var/atom/A in D.contents)
if(istype(A, /mob/) || istype(A, /obj/item/holder))
hasMobs = TRUE
if(!hasMobs)
D.status_flags &= ~PASSEMOTES
var/mob/living/M = loc
clear_alert(gestalt_alert)
return TRUE
forceMove(get_turf(src))
verbs -= /mob/living/simple_animal/diona/proc/split
verbs += /mob/living/simple_animal/diona/proc/merge
if(istype(M))
for(var/atom/A in M.contents)
if(istype(A, /mob/living/simple_animal/borer) || istype(A, /obj/item/holder))
return
M.status_flags &= ~PASSEMOTES
/mob/living/simple_animal/diona/verb/evolve()
set category = "Diona"
set name = "Evolve"
set desc = "Grow to a more complex form."
if(donors.len < 5)
/mob/living/simple_animal/diona/proc/evolve()
if(stat != CONSCIOUS)
return FALSE
if(donors.len < evolve_donors)
to_chat(src, "<span class='warning'>You need more blood in order to ascend to a new state of consciousness...</span>")
return
return FALSE
if(nutrition < 500)
if(nutrition < nutrition_need)
to_chat(src, "<span class='warning'>You need to binge on weeds in order to have the energy to grow...</span>")
return
return FALSE
split()
if(isdiona(loc) && !split()) //if it's merged with diona, needs to able to split before evolving
return FALSE
visible_message("<span class='danger'>[src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.</span>","<span class='danger'>You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.</span>")
var/mob/living/carbon/human/diona/adult = new(get_turf(loc))
@@ -162,28 +198,33 @@
unEquip(W)
qdel(src)
return TRUE
/mob/living/simple_animal/diona/verb/steal_blood()
set category = "Diona"
set name = "Steal Blood"
set desc = "Take a blood sample from a suitable donor."
/mob/living/simple_animal/diona/proc/steal_blood()
if(stat != CONSCIOUS)
return FALSE
var/list/choices = list()
for(var/mob/living/carbon/human/H in oview(1,src))
choices += H
if(Adjacent(H) && H.dna && !(NO_BLOOD in H.dna.species.species_traits))
choices += H
if(!choices.len)
to_chat(src, "<span class='warning'>No suitable blood donors nearby.</span>")
return FALSE
var/mob/living/carbon/human/M = input(src,"Who do you wish to take a sample from?") in null|choices
if(!M || !src)
return
if(!M || !src || !(Adjacent(M)) || stat != CONSCIOUS) //input can take a while, so re-validate
return FALSE
if(NO_BLOOD in M.dna.species.species_traits)
if(!M.dna || (NO_BLOOD in M.dna.species.species_traits))
to_chat(src, "<span class='warning'>That donor has no blood to take.</span>")
return
return FALSE
if(donors.Find(M.real_name))
to_chat(src, "<span class='warning'>That donor offers you nothing new.</span>")
return
return FALSE
visible_message("<span class='danger'>[src] flicks out a feeler and neatly steals a sample of [M]'s blood.</span>","<span class='danger'>You flick out a feeler and neatly steal a sample of [M]'s blood.</span>")
donors += M.real_name
@@ -195,13 +236,12 @@
update_progression()
/mob/living/simple_animal/diona/proc/update_progression()
if(!donors.len)
return
if(stat != CONSCIOUS || !donors.len)
return FALSE
if(donors.len == 5)
ready_evolve = 1
if(donors.len == evolve_donors)
to_chat(src, "<span class='noticealien'>You feel ready to move on to your next stage of growth.</span>")
else if(donors.len == 3)
else if(donors.len == awareness_donors)
universal_understand = 1
to_chat(src, "<span class='noticealien'>You feel your awareness expand, and realize you know how to understand the creatures around you.</span>")
else
@@ -219,7 +259,7 @@
return
/mob/living/simple_animal/diona/emote(act, m_type=1, message = null)
if(stat)
if(stat != CONSCIOUS)
return
var/on_CD = 0
@@ -237,6 +277,6 @@
if("chirp")
message = "<B>\The [src]</B> chirps!"
m_type = 2 //audible
playsound(src, 'sound/misc/nymphchirp.ogg', 40, 1, 1)
playsound(src, chirp_sound, 40, 1, 1)
..(act, m_type, message)
+4 -1
View File
@@ -115,7 +115,7 @@
#define CHARS_PER_LINE 5
#define FONT_SIZE "5pt"
#define FONT_COLOR "#09f"
#define FONT_STYLE "Arial Black"
#define FONT_STYLE "Small Fonts"
/obj/machinery/treadmill_monitor
name = "Treadmill Monitor"
@@ -126,6 +126,7 @@
density = 0
maptext_height = 26
maptext_width = 32
maptext_y = -1
var/on = 0 // if we should be metering or not
var/id = null // id of treadmill
@@ -200,6 +201,8 @@
//Checks to see if there's 1 line or 2, adds text-icons-numbers/letters over display
// Stolen from status_display
/obj/machinery/treadmill_monitor/proc/update_display(var/line1, var/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
+1 -1
View File
@@ -22,7 +22,7 @@
/obj/machinery/r_n_d/New()
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, MAT_PLASTIC), 0,
FALSE, list(/obj/item/stack, /obj/item/stack/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
TRUE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
materials.precise_insertion = TRUE
..()
wires["Red"] = 0
+4 -1
View File
@@ -17,7 +17,10 @@ World largest carp patty at display on {{AFFECTED}}.
'Here kitty kitty' no longer preferred tajaran retrieval technique.
Man travels 7000 light years to retrieve lost hankie, 'It was my favourite'.
New bowling lane that shoots mini-meteors at bowlers very popular.
Guy gets tattoo of Tau Ceti on chest '[pick("CentComm","star","starship","asteroid")] tickles most'.
Guy gets tattoo of Tau Ceti on chest 'Asteroid tickles most'.
Guy gets tattoo of Tau Ceti on chest 'Starship tickles most'.
Guy gets tattoo of Tau Ceti on chest 'Star tickles most'.
Guy gets tattoo of Tau Ceti on chest 'CentComm tickles most'.
Skrell marries computer; wedding attended by 100 modems.
Chef reports successfully using harmonica as cheese grater.
Nanotrasen invents handkerchief that says 'Bless you' after sneeze.
+65
View File
@@ -56,6 +56,70 @@
-->
<div class="commit sansserif">
<h2 class="date">04 November 2018</h2>
<h3 class="author">AffectedArc07 updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Makes status display font crispy. mmmmmmmmmmmmm</li>
</ul>
<h3 class="author">Citinited updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixes a bug in machines when switching between speedy and normal processing speeds.</li>
</ul>
<h3 class="author">Dave-TH updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds the access tuner, a syndicate device for interfacing with airlocks. Try it out!</li>
</ul>
<h3 class="author">TDSSS updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Allow , in names, Kidan of the world, rejoice</li>
<li class="tweak">Made kidan random name generation less shitty</li>
</ul>
<h3 class="author">Triiodine updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">ghost role sprites with a palette more depressed than the playerbase</li>
<li class="rscadd">medical doc spawn to ghost station</li>
<li class="rscadd">Xydonus's second fluff item</li>
</ul>
<h2 class="date">03 November 2018</h2>
<h3 class="author">Certhic updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added diona nymph action buttons</li>
<li class="rscadd">Added diona nymph resist alert when they're merged</li>
<li class="rscadd">Diona nymph can now initiate merge with the gestalt</li>
<li class="bugfix">Diona nymph can now leave their gestalt by resisting</li>
<li class="bugfix">Diona nymph can no longer attack its gestalt</li>
</ul>
<h3 class="author">Farie82 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Security comments now work again. Sec hud arrests will now function as intended.</li>
</ul>
<h3 class="author">Fox McCloud updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixes exploit involving materials and the recycler</li>
</ul>
<h3 class="author">Jazz23 updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">A method of uploading coordinates to perma teleporter circuit board.</li>
</ul>
<h3 class="author">variableundefined updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Tigercat2000 & variableundefined (Ansari) to the maintainer list.</li>
</ul>
<h2 class="date">02 November 2018</h2>
<h3 class="author">Purpose updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">After over 100 years in cryosleep, a few cryocells are starting to open... AncientStation ghost roles are now available.</li>
<li class="rscadd">Adds a ghost role menu, available under the Ghost menu</li>
<li class="rscadd">Adds an all-access Air Alarm for mappers to utilise.</li>
<li class="rscadd">Adds glowsticks. Currently only available in AncientStation.</li>
</ul>
<h3 class="author">variableundefined updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Attack log to stun gloves</li>
</ul>
<h2 class="date">01 November 2018</h2>
<h3 class="author">Citinited updated:</h3>
<ul class="changes bgimages16">
@@ -64,6 +128,7 @@
<h3 class="author">Farie82 updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Repairing a mech now says you're doing it to the others balance: Mechs now take time to repair. No more spam repairing</li>
<li class="bugfix">Random news feed now does not contain random code.</li>
</ul>
<h3 class="author">Mitchs98 updated:</h3>
<ul class="changes bgimages16">
+42
View File
@@ -7806,9 +7806,51 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
Farie82:
- tweak: 'Repairing a mech now says you''re doing it to the others balance: Mechs
now take time to repair. No more spam repairing'
- bugfix: Random news feed now does not contain random code.
Mitchs98:
- tweak: Lowers the spam you receive from entering a warm or cold pool. You will
no longer receive 'The water is quite warm.' nearly every few seconds.
- bugfix: Headslugs no longer teleport out of closed lockers upon bursting.
Warior4356:
- bugfix: Ghosts can no longer re-enter a drone that has been shut down.
2018-11-02:
Purpose:
- rscadd: After over 100 years in cryosleep, a few cryocells are starting to open...
AncientStation ghost roles are now available.
- rscadd: Adds a ghost role menu, available under the Ghost menu
- rscadd: Adds an all-access Air Alarm for mappers to utilise.
- rscadd: Adds glowsticks. Currently only available in AncientStation.
variableundefined:
- rscadd: Attack log to stun gloves
2018-11-03:
Certhic:
- rscadd: Added diona nymph action buttons
- rscadd: Added diona nymph resist alert when they're merged
- rscadd: Diona nymph can now initiate merge with the gestalt
- bugfix: Diona nymph can now leave their gestalt by resisting
- bugfix: Diona nymph can no longer attack its gestalt
Farie82:
- bugfix: Security comments now work again. Sec hud arrests will now function as
intended.
Fox McCloud:
- bugfix: Fixes exploit involving materials and the recycler
Jazz23:
- rscadd: A method of uploading coordinates to perma teleporter circuit board.
variableundefined:
- rscadd: Tigercat2000 & variableundefined (Ansari) to the maintainer list.
2018-11-04:
AffectedArc07:
- tweak: Makes status display font crispy. mmmmmmmmmmmmm
Citinited:
- bugfix: Fixes a bug in machines when switching between speedy and normal processing
speeds.
Dave-TH:
- rscadd: Adds the access tuner, a syndicate device for interfacing with airlocks.
Try it out!
TDSSS:
- tweak: Allow , in names, Kidan of the world, rejoice
- tweak: Made kidan random name generation less shitty
Triiodine:
- rscadd: ghost role sprites with a palette more depressed than the playerbase
- rscadd: medical doc spawn to ghost station
- rscadd: Xydonus's second fluff item
Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 KiB

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 KiB

After

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 KiB

After

Width:  |  Height:  |  Size: 358 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 69 KiB

+20
View File
@@ -0,0 +1,20 @@
<div class='statusDisplay'>
<h1>Mob Spawners</h1>
<table style='width:100%;'>
{{for data.spawners}}
<div class='item'>
<div class='itemLabel'>
<h3>{{:value.name}}</h3>
<p>{{:value.amount_left}} spawners left.</p>
</div>
<div class='itemContent'>
{{:value.desc}}
</div>
<div class='floatRight'>
{{:helper.link('Jump', null, {'action': 'jump', 'uid': value.uids})}}
{{:helper.link('Spawn', null, {'action': 'spawn', 'uid': value.uids})}}
</div>
</div>
{{/for}}
</table>
</div>
+4
View File
@@ -108,6 +108,7 @@
#include "code\_globalvars\lists\names.dm"
#include "code\_globalvars\lists\objects.dm"
#include "code\_globalvars\lists\reagents.dm"
#include "code\_globalvars\lists\typecache.dm"
#include "code\_onclick\adjacent.dm"
#include "code\_onclick\ai.dm"
#include "code\_onclick\click.dm"
@@ -245,6 +246,7 @@
#include "code\datums\ruins.dm"
#include "code\datums\shuttles.dm"
#include "code\datums\soullink.dm"
#include "code\datums\spawners_menu.dm"
#include "code\datums\spell.dm"
#include "code\datums\statclick.dm"
#include "code\datums\supplypacks.dm"
@@ -1211,6 +1213,7 @@
#include "code\modules\awaymissions\mission_code\stationCollision.dm"
#include "code\modules\awaymissions\mission_code\UO71-terrorspiders.dm"
#include "code\modules\awaymissions\mission_code\wildwest.dm"
#include "code\modules\awaymissions\mission_code\ruins\oldstation.dm"
#include "code\modules\buildmode\bm_mode.dm"
#include "code\modules\buildmode\buildmode.dm"
#include "code\modules\buildmode\buttons.dm"
@@ -1315,6 +1318,7 @@
#include "code\modules\clothing\under\chameleon.dm"
#include "code\modules\clothing\under\color.dm"
#include "code\modules\clothing\under\miscellaneous.dm"
#include "code\modules\clothing\under\oldstation_uni.dm"
#include "code\modules\clothing\under\pants.dm"
#include "code\modules\clothing\under\shorts.dm"
#include "code\modules\clothing\under\syndicate.dm"
Binary file not shown.