diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 4a0d3e84053a..81e6e4e6245b 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -50,11 +50,6 @@
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/bridge)
-"ao" = (
-/obj/structure/alien/weeds,
-/mob/living/basic/alien/drone,
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
"ap" = (
/obj/structure/alien/weeds/node,
/obj/structure/alien/egg/burst,
@@ -87,6 +82,10 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
+"av" = (
+/obj/machinery/atmospherics/miner/oxygen,
+/turf/open/floor/engine/o2,
+/area/ruin/space/ancientstation/beta/atmos)
"ax" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/blue{
@@ -94,6 +93,21 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
+"ay" = (
+/obj/structure/cable,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/machinery/camera/autoname/directional/south{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/beta/hall)
"aA" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/firecloset/full,
@@ -171,6 +185,7 @@
/area/ruin/space/ancientstation/charlie/bridge)
"aM" = (
/obj/structure/alien/weeds,
+/obj/machinery/recharge_station,
/obj/effect/decal/cleanable/xenoblood/xgibs/up,
/turf/open/floor/iron/dark,
/area/ruin/space/ancientstation/delta/ai)
@@ -274,7 +289,6 @@
"be" = (
/obj/structure/window/reinforced/spawner/directional/north,
/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/alien/weeds,
/turf/open/floor/iron/dark,
/area/ruin/space/ancientstation/delta/ai)
"bg" = (
@@ -310,6 +324,9 @@
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
dir = 8
},
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
"bk" = (
@@ -332,21 +349,15 @@
/obj/effect/turf_decal/tile/blue/anticorner/contrasted,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
-"bo" = (
-/obj/machinery/door/airlock/highsecurity,
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
"bp" = (
/obj/machinery/door/window/brigdoor/left/directional/west,
/obj/effect/decal/cleanable/robot_debris,
-/obj/structure/alien/weeds/node,
+/obj/machinery/flasher/directional/east{
+ id = "IsolationFlash";
+ pixel_y = 40
+ },
/turf/open/floor/iron/dark,
/area/ruin/space/ancientstation/delta/ai)
-"bq" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/components/unary/vent_pump/layer4,
-/turf/open/floor/iron/airless,
-/area/ruin/space/ancientstation/beta/medbay)
"bs" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table,
@@ -370,20 +381,6 @@
/obj/effect/turf_decal/tile/blue/half/contrasted,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
-"bw" = (
-/obj/machinery/door/airlock/engineering{
- name = "Gravity Generator"
- },
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/beta/gravity)
"bx" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/maintenance_hatch,
@@ -401,17 +398,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
-"bA" = (
-/obj/structure/ai_core/deactivated,
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
-"bC" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/biogenerator,
-/obj/effect/decal/cleanable/greenglow,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/hydro)
"bD" = (
/turf/closed/wall/rust,
/area/ruin/space/ancientstation/delta/rnd)
@@ -464,6 +450,9 @@
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
dir = 4
},
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
"bQ" = (
@@ -697,14 +686,6 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
-"cz" = (
-/obj/structure/window/reinforced/spawner/directional/west,
-/obj/structure/window/reinforced/spawner/directional/north,
-/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/table,
-/obj/machinery/door/window/brigdoor/right/directional/east,
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
"cA" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -739,7 +720,6 @@
"cF" = (
/obj/structure/window/reinforced/spawner/directional/west,
/obj/structure/window/reinforced/spawner/directional/south,
-/obj/structure/alien/weeds,
/turf/open/floor/iron/dark,
/area/ruin/space/ancientstation/delta/ai)
"cG" = (
@@ -772,6 +752,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/mining)
"cP" = (
@@ -852,28 +833,11 @@
/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body,
/turf/open/floor/iron/dark,
/area/ruin/space/ancientstation/delta/ai)
-"de" = (
-/obj/structure/alien/weeds,
-/mob/living/basic/alien/queen,
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
"df" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/alien/weeds,
/turf/open/floor/iron/dark,
/area/ruin/space/ancientstation/delta/hall)
-"dg" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/science{
- name = "Artificial Program Core Room"
- },
-/obj/machinery/door/firedoor,
-/obj/structure/alien/weeds,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "oldstation-aisat"
- },
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/hall)
"dh" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
@@ -883,6 +847,7 @@
/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
dir = 1
},
+/obj/structure/table,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"dk" = (
@@ -900,6 +865,14 @@
"dl" = (
/turf/closed/wall/rust,
/area/ruin/space/ancientstation/charlie/engie)
+"dn" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table,
+/obj/item/storage/crayons,
+/obj/item/toy/cards/deck,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/dorms)
"do" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/green{
@@ -907,10 +880,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hydro)
-"dp" = (
-/obj/machinery/growing/soil,
-/turf/open/floor/grass,
-/area/ruin/space/ancientstation/charlie/hydro)
"dq" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/reagent_dispensers/watertank/high{
@@ -972,8 +941,13 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
dir = 10
},
+/obj/effect/decal/cleanable/blood/drip,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"dy" = (
+/obj/item/surgery_tray,
+/turf/template_noop,
+/area/template_noop)
"dB" = (
/obj/structure/alien/weeds,
/obj/effect/gibspawner/human,
@@ -996,17 +970,19 @@
},
/turf/open/floor/iron/airless,
/area/ruin/space/ancientstation/beta/medbay)
+"dE" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 5
+ },
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"dF" = (
/obj/structure/lattice,
/turf/template_noop,
/area/template_noop)
-"dG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/mob/living/basic/alien/drone,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/hall)
"dH" = (
/obj/structure/lattice/catwalk,
/turf/template_noop,
@@ -1017,18 +993,6 @@
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/mining)
-"dL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/command/glass{
- name = "Bridge"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/bridge)
"dM" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
@@ -1127,6 +1091,7 @@
/obj/item/screwdriver/power,
/obj/item/storage/belt/utility,
/obj/item/clothing/head/utility/hardhat/welding,
+/obj/item/holosign_creator/atmos,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/supermatter)
"ec" = (
@@ -1134,6 +1099,7 @@
/obj/structure/cable,
/obj/machinery/power/apc/auto_name/directional/north,
/obj/effect/mapping_helpers/apc/no_charge,
+/obj/structure/table,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"ed" = (
@@ -1146,7 +1112,10 @@
/obj/machinery/firealarm/directional/west,
/obj/effect/decal/cleanable/dirt,
/obj/item/storage/backpack/old,
-/obj/structure/closet,
+/obj/structure/closet{
+ anchored = 1
+ },
+/obj/effect/spawner/random/clothing/backpack,
/obj/effect/spawner/random/clothing/backpack,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
@@ -1219,28 +1188,19 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hydro)
-"ep" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/item/seeds/wheat,
-/obj/item/seeds/poppy,
-/obj/item/seeds/potato,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/hydro)
"eq" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/seed_extractor,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hydro)
"er" = (
+/obj/machinery/pipedispenser/disposal/transit_tube,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/item/seeds/wheat/rice,
-/obj/item/seeds/grape,
-/obj/effect/spawner/random/food_or_drink/seed,
-/obj/item/seeds/ambrosia,
/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/hydro)
+/area/ruin/space/ancientstation/beta/atmos)
"et" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -1287,6 +1247,8 @@
/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
dir = 4
},
+/obj/structure/closet/crate/bin,
+/obj/effect/spawner/random/maintenance,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"eA" = (
@@ -1302,8 +1264,8 @@
"eB" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/autolathe,
-/obj/machinery/duct,
+/obj/structure/window/reinforced/survival_pod/spawner/directional/west,
+/obj/structure/table,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
"eD" = (
@@ -1311,6 +1273,13 @@
/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
dir = 4
},
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
+/obj/structure/rack,
+/obj/item/assembly/prox_sensor,
+/obj/item/stack/cable_coil,
+/obj/item/assembly/prox_sensor,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"eE" = (
@@ -1318,11 +1287,6 @@
/obj/machinery/light/directional/west,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
-"eF" = (
-/obj/machinery/computer/rdconsole,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/ruin/space/ancientstation/delta/rnd)
"eH" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/blue/half/contrasted{
@@ -1390,23 +1354,24 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hydro)
-"eR" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/item/cultivator{
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/item/shovel/spade,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/hydro)
"eS" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
/obj/effect/turf_decal/tile/green,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hydro)
+"eT" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet,
+/obj/item/storage/backpack/old,
+/obj/effect/spawner/random/clothing/backpack,
+/obj/effect/spawner/random/clothing/backpack,
+/obj/machinery/camera/autoname/directional/south{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/dorms)
"eU" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/directional/west,
@@ -1456,11 +1421,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
-"fa" = (
-/obj/machinery/rnd/destructive_analyzer,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/ruin/space/ancientstation/delta/rnd)
"fb" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
dir = 1
@@ -1561,21 +1521,6 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
-"fu" = (
-/obj/machinery/mecha_part_fabricator,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/white,
-/area/ruin/space/ancientstation/delta/rnd)
-"fv" = (
-/obj/structure/table,
-/obj/effect/decal/cleanable/dirt,
-/obj/item/stack/sheet/iron/fifty,
-/obj/item/stack/sheet/glass/fifty{
- pixel_x = 3;
- pixel_y = 3
- },
-/turf/open/floor/iron/white,
-/area/ruin/space/ancientstation/delta/rnd)
"fw" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/directional/east,
@@ -1621,18 +1566,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/engie)
-"fG" = (
-/obj/machinery/door/airlock/engineering/glass,
-/obj/machinery/door/poddoor{
- id = "ancient"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/engie)
"fI" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating/rust,
@@ -1646,6 +1579,10 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/duct,
/obj/structure/cable,
+/obj/machinery/firealarm/directional/west,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
"fK" = (
@@ -1658,6 +1595,7 @@
dir = 8
},
/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/sec)
"fL" = (
@@ -1782,6 +1720,17 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/hall)
+"gj" = (
+/obj/machinery/door/airlock/research{
+ name = "Research and Development"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/machinery/door/firedoor/closed,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
"gk" = (
/obj/structure/alien/weeds,
/obj/effect/decal/cleanable/blood/old,
@@ -1851,13 +1800,6 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/sec)
-"gD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/firealarm/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/mob/living/basic/alien/drone,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/hall)
"gE" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -1874,8 +1816,13 @@
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hydro)
"gG" = (
-/obj/machinery/rnd/production/protolathe/offstation,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/table,
+/obj/item/stock_parts/matter_bin,
+/obj/item/stock_parts/scanning_module{
+ pixel_x = 2;
+ pixel_y = 3
+ },
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"gH" = (
@@ -1893,6 +1840,10 @@
/obj/structure/grille,
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/hall)
+"gK" = (
+/obj/structure/mecha_wreckage/ripley,
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
"gL" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
dir = 4
@@ -1900,9 +1851,15 @@
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/mining)
"gM" = (
-/obj/machinery/rnd/production/circuit_imprinter/offstation,
/obj/effect/decal/cleanable/dirt,
-/obj/item/reagent_containers/dropper,
+/obj/structure/table,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 4
+ },
+/obj/item/experi_scanner{
+ pixel_x = 4
+ },
+/obj/item/experi_scanner,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"gO" = (
@@ -1917,18 +1874,18 @@
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/hall)
"gP" = (
+/obj/effect/decal/cleanable/glass,
/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/item/tank/internals/anesthetic,
-/obj/item/clothing/mask/breath/medical,
+/obj/machinery/duct,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 8
+ },
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"gQ" = (
/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/optable{
- name = "Robotics Operating Table"
- },
-/obj/item/surgical_drapes,
+/obj/effect/decal/cleanable/xenoblood/xgibs/core,
+/obj/machinery/duct,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"gR" = (
@@ -1995,6 +1952,10 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/sec)
+"hc" = (
+/obj/machinery/atmospherics/miner/nitrogen,
+/turf/open/floor/engine/n2,
+/area/ruin/space/ancientstation/beta/atmos)
"hi" = (
/turf/closed/wall/rust,
/area/ruin/space/ancientstation/charlie/hall)
@@ -2101,13 +2062,6 @@
/obj/effect/mapping_helpers/airalarm/all_access,
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
-"hE" = (
-/mob/living/basic/alien/drone,
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
- dir = 8
- },
-/turf/open/floor/iron/white,
-/area/ruin/space/ancientstation/delta/rnd)
"hI" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -2131,6 +2085,9 @@
/obj/structure/alien/weeds,
/obj/structure/cable,
/obj/effect/decal/cleanable/blood/tracks,
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
/turf/open/floor/iron/dark,
/area/ruin/space/ancientstation/delta/ai)
"hM" = (
@@ -2187,10 +2144,10 @@
/area/ruin/space/ancientstation/charlie/hall)
"hV" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/computer/old,
/obj/effect/turf_decal/tile/blue/half/contrasted{
dir = 4
},
+/obj/machinery/computer/security/hos,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
"hW" = (
@@ -2247,7 +2204,8 @@
dir = 4
},
/obj/machinery/duct,
-/turf/open/floor/iron,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/hall)
"ic" = (
/obj/effect/decal/cleanable/dirt,
@@ -2381,6 +2339,7 @@
/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
dir = 8
},
+/obj/structure/window/reinforced/survival_pod/spawner/directional/west,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"ir" = (
@@ -2397,21 +2356,6 @@
/obj/effect/decal/cleanable/glass/plasma,
/turf/open/floor/engine/airless,
/area/ruin/space/ancientstation/beta/supermatter)
-"iy" = (
-/obj/machinery/door/airlock/medical/glass{
- name = "Medical Bay"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/closed,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/beta/medbay)
"iA" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/rack,
@@ -2503,8 +2447,11 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/cobweb,
/obj/structure/cable,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
+/obj/effect/decal/cleanable/cobweb,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/storage)
"iV" = (
@@ -2516,24 +2463,25 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/storage)
-"jc" = (
-/obj/machinery/door/airlock/research{
- name = "Research and Development"
+"iX" = (
+/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
+ dir = 8
},
-/obj/machinery/door/firedoor,
+/obj/structure/table_frame,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/rnd)
-"jd" = (
-/obj/machinery/door/airlock/research{
- name = "Research and Development"
+/obj/item/shard{
+ icon_state = "medium"
},
-/obj/machinery/door/firedoor,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
+"iY" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/rnd)
+/area/ruin/space/ancientstation/charlie/hall)
"je" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -2635,6 +2583,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
+"jw" = (
+/obj/structure/alien/weeds/node,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"jx" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/directional/east,
@@ -2749,9 +2704,9 @@
"jP" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/backpack/duffelbag,
-/obj/structure/closet,
-/obj/effect/spawner/random/clothing/backpack,
+/obj/structure/table,
+/obj/item/storage/photo_album,
+/obj/item/pai_card,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
"jU" = (
@@ -2764,32 +2719,19 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
-"jV" = (
-/obj/structure/rack,
-/obj/item/pickaxe,
-/obj/item/pickaxe,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/beta/mining)
"jW" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/directional/east,
/obj/effect/turf_decal/tile/purple/anticorner/contrasted,
+/obj/structure/table/optable{
+ name = "Robotics Operating Table"
+ },
+/obj/item/surgical_drapes,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
-"jX" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table,
-/obj/item/seeds/harebell,
-/obj/item/seeds/carrot,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/hydro)
"jY" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -2867,6 +2809,9 @@
/obj/item/shard,
/obj/effect/mapping_helpers/broken_floor,
/obj/structure/broken_flooring/singular/directional/east,
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
/turf/open/floor/iron/airless,
/area/ruin/space/ancientstation/beta/hall)
"ko" = (
@@ -2897,6 +2842,10 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 4
},
+/obj/structure/table,
+/obj/item/stock_parts/capacitor,
+/obj/item/stock_parts/manipulator,
+/obj/item/stock_parts/micro_laser,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"kr" = (
@@ -2977,6 +2926,7 @@
/obj/item/crowbar,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
+/obj/item/crowbar,
/obj/effect/spawner/random/decoration/glowstick,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
@@ -2986,17 +2936,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
-"kH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/door/airlock/external/ruin{
- name = "External Access"
- },
-/turf/open/floor/plating,
-/area/ruin/space/ancientstation/charlie/engie)
"kI" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/corner{
@@ -3042,6 +2981,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/directional/west,
/obj/effect/decal/cleanable/dirt,
+/obj/item/crowbar,
/obj/effect/spawner/random/decoration/glowstick,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
@@ -3083,6 +3023,11 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/white/textured,
/area/ruin/space/ancientstation/delta/proto)
+"kT" = (
+/obj/structure/grille/broken,
+/obj/item/stack/rods,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"kU" = (
/obj/machinery/light/directional/east,
/obj/structure/table/reinforced,
@@ -3168,6 +3113,9 @@
name = "N2 Input"
},
/obj/effect/turf_decal/tile/yellow/half/contrasted,
+/obj/machinery/camera/autoname/directional/south{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/atmos)
"li" = (
@@ -3199,12 +3147,6 @@
/obj/effect/mob_spawn/ghost_role/human/oldeng,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
-"lq" = (
-/obj/structure/alien/weeds,
-/obj/effect/decal/cleanable/blood/gibs/old,
-/mob/living/basic/alien,
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
"lr" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -3224,6 +3166,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 8
},
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/hall)
"lv" = (
@@ -3265,6 +3208,7 @@
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
"lF" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"lG" = (
@@ -3273,14 +3217,6 @@
},
/turf/open/floor/iron/white/textured,
/area/ruin/space/ancientstation/delta/proto)
-"lH" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light_switch/directional/north,
-/obj/effect/turf_decal/tile/green/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/hydro)
"lI" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/button/door/directional/west{
@@ -3306,6 +3242,9 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/engie)
"lM" = (
@@ -3314,6 +3253,9 @@
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 8
},
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
"lO" = (
@@ -3365,28 +3307,11 @@
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hydro)
"lV" = (
-/obj/structure/grille/broken,
-/turf/open/floor/plating/airless,
-/area/ruin/space/ancientstation/beta/medbay)
-"lW" = (
-/obj/structure/grille/broken,
/obj/item/shard{
icon_state = "medium"
},
-/obj/effect/mapping_helpers/broken_floor,
-/turf/open/floor/plating/airless,
-/area/ruin/space/ancientstation/beta/medbay)
-"lY" = (
-/obj/machinery/door/airlock/atmos/glass{
- name = "Station Atmospherics"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2{
- dir = 4
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/beta/atmos)
+/turf/template_noop,
+/area/template_noop)
"lZ" = (
/obj/structure/alien/weeds,
/obj/structure/cable,
@@ -3425,17 +3350,6 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
-"mj" = (
-/obj/machinery/door/airlock/highsecurity,
-/obj/structure/alien/weeds,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/xenoblood/xtracks,
-/obj/effect/decal/cleanable/blood/tracks,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "oldstation-aisat"
- },
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
"mk" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
@@ -3451,14 +3365,10 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
-"mm" = (
-/obj/machinery/power/supermatter_crystal/shard,
-/obj/structure/closet/crate/engineering{
- name = "supermatter shard crate"
- },
-/turf/open/floor/iron/white/textured,
-/area/ruin/space/ancientstation/delta/proto)
"mn" = (
+/obj/machinery/camera/autoname/directional/south{
+ status = 0
+ },
/turf/open/floor/iron/white/corner{
dir = 4
},
@@ -3519,9 +3429,10 @@
"mz" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
-/obj/item/storage/backpack/old,
-/obj/structure/closet,
-/obj/effect/spawner/random/clothing/backpack,
+/obj/structure/table,
+/obj/item/crowbar,
+/obj/item/crowbar,
+/obj/effect/spawner/random/decoration/glowstick,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
"mA" = (
@@ -3589,16 +3500,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/mining)
-"mM" = (
-/obj/machinery/door/airlock/mining/glass{
- name = "Mining Equipment"
- },
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/beta/mining)
"mN" = (
/obj/structure/closet,
/obj/effect/decal/cleanable/dirt,
@@ -3740,6 +3641,7 @@
dir = 10
},
/obj/structure/cable,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
"nf" = (
@@ -3753,10 +3655,10 @@
/area/ruin/space/ancientstation/beta/hall)
"ng" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/pipedispenser/disposal/transit_tube,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/structure/closet/crate/bin,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/atmos)
"nh" = (
@@ -3776,6 +3678,9 @@
/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{
dir = 1
},
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/atmos)
"nm" = (
@@ -3823,42 +3728,15 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/visible/layer4,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/atmos)
-"nv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/atmos/glass{
- name = "Station Atmospherics"
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/beta/atmos)
"nw" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
- dir = 8
- },
-/obj/structure/broken_flooring/side/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating/airless,
-/area/ruin/space/ancientstation/beta/hall)
-"nx" = (
-/obj/item/shard,
-/obj/machinery/atmospherics/components/binary/pump/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
- dir = 4
- },
/obj/effect/decal/cleanable/glass,
-/obj/effect/mapping_helpers/broken_floor,
-/obj/structure/cable,
+/obj/item/shard,
+/obj/machinery/duct,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
- dir = 10
+ dir = 8
},
-/obj/structure/broken_flooring/singular/directional/west,
-/turf/open/floor/plating/airless,
-/area/ruin/space/ancientstation/beta/hall)
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
"ny" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2{
@@ -3893,33 +3771,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/atmos)
-"nC" = (
-/obj/structure/closet/crate,
-/obj/item/cautery{
- pixel_x = 4
- },
-/obj/item/hemostat,
-/obj/item/circular_saw,
-/obj/item/scalpel{
- pixel_y = 12
- },
-/obj/item/retractor,
-/obj/item/surgical_drapes,
-/obj/machinery/light/small/broken/directional/west,
-/obj/item/tank/internals/anesthetic,
-/obj/item/clothing/mask/breath/medical,
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/airless,
-/area/ruin/space/ancientstation/beta/medbay)
-"nD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/optable,
-/obj/machinery/light_switch/directional/east,
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted,
-/turf/open/floor/iron/airless,
-/area/ruin/space/ancientstation/beta/medbay)
"nJ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/engineering{
@@ -3953,11 +3804,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
-"nN" = (
-/obj/effect/decal/cleanable/dirt,
-/mob/living/basic/alien/drone,
-/turf/open/floor/iron/white,
-/area/ruin/space/ancientstation/delta/rnd)
"nO" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
@@ -3998,32 +3844,6 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
-"nV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/science{
- name = "Artificial Program Core Room"
- },
-/obj/machinery/door/firedoor,
-/obj/structure/alien/weeds,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/blood/tracks,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "oldstation-aisat"
- },
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/hall)
-"nW" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/directional/east,
-/obj/machinery/firealarm/directional/east,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/tracks{
- dir = 1
- },
-/mob/living/basic/alien,
-/obj/structure/cable,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/hall)
"nX" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -4042,6 +3862,9 @@
dir = 8
},
/obj/structure/cable,
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
"oa" = (
@@ -4056,6 +3879,14 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"ob" = (
+/obj/effect/turf_decal/tile/green/half/contrasted{
+ dir = 1
+ },
+/obj/machinery/growing/tray,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
"oc" = (
/obj/machinery/door/airlock/science,
/obj/effect/decal/cleanable/dirt,
@@ -4074,27 +3905,27 @@
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
"oe" = (
-/obj/structure/table,
-/obj/item/stack/sheet/glass/fifty{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/stack/sheet/iron/fifty,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/computer/rdconsole{
+ dir = 1
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
"of" = (
-/obj/structure/table,
-/obj/item/storage/toolbox/mechanical/old,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/rnd/production/protolathe/offstation,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
"og" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
dir = 4
},
+/obj/machinery/door/window/right/directional/west{
+ state_open = 1
+ },
+/obj/effect/decal/cleanable/blood/drip,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"oh" = (
@@ -4103,53 +3934,21 @@
/obj/machinery/washing_machine,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
-"oi" = (
-/obj/structure/table,
-/obj/item/stack/sheet/glass,
-/obj/item/stack/sheet/glass,
-/obj/item/stock_parts/matter_bin,
-/obj/item/stock_parts/scanning_module{
- pixel_x = 2;
- pixel_y = 3
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/rnd)
"oj" = (
-/obj/structure/table,
-/obj/item/stock_parts/manipulator,
-/obj/item/stock_parts/capacitor,
-/obj/item/stock_parts/micro_laser,
-/obj/item/stack/cable_coil,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/rnd)
-"ok" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/closed,
+/obj/structure/table,
+/obj/item/storage/toolbox/mechanical/old,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
-"ol" = (
-/obj/effect/decal/cleanable/dirt,
+"om" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/closed,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/rnd)
-"on" = (
-/obj/machinery/door/airlock/highsecurity,
-/obj/structure/alien/weeds,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
- cycle_id = "oldstation-aisat"
+/obj/machinery/power/energy_accumulator/tesla_coil,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
},
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
+/turf/open/floor/plating,
+/area/ruin/space/ancientstation/beta/supermatter)
"oo" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -4169,6 +3968,31 @@
/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"or" = (
+/obj/effect/decal/cleanable/blood/old,
+/obj/effect/decal/remains/human{
+ pixel_y = -4;
+ pixel_x = -4
+ },
+/obj/item/paper/fluff/ruins/oldstation/survivor_note{
+ pixel_x = 17;
+ pixel_y = 12
+ },
+/obj/item/organ/internal/cyberimp/arm/item_set/toolset{
+ pixel_x = 6;
+ pixel_y = 2
+ },
+/obj/item/organ/internal/cyberimp/cyberlink/nt_low,
+/obj/effect/decal/cleanable/blood/drip,
+/turf/open/floor/plating{
+ initial_gas_mix = "co2=6;o2=16;n2=82;TEMP=293.15"
+ },
+/area/ruin/space/ancientstation/delta/hall)
+"ot" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/composters,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
"ou" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -4183,17 +4007,6 @@
/obj/machinery/duct,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
-"ow" = (
-/obj/item/kirbyplants{
- icon_state = "plant-25"
- },
-/obj/effect/decal/cleanable/cobweb,
-/obj/machinery/light/small/broken/directional/west,
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/airless,
-/area/ruin/space/ancientstation/beta/medbay)
"oy" = (
/obj/structure/table,
/obj/item/tank/internals/oxygen,
@@ -4206,42 +4019,15 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/engie)
-"oB" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/glass,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
- dir = 5
- },
-/turf/open/floor/iron/airless,
-/area/ruin/space/ancientstation/beta/medbay)
"oD" = (
-/obj/effect/decal/cleanable/xenoblood/xgibs/core,
+/obj/structure/window/reinforced/survival_pod/spawner/directional/west,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
-"oE" = (
-/obj/item/stack/rods,
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/airless,
-/area/ruin/space/ancientstation/beta/medbay)
-"oF" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/shard{
- icon_state = "medium"
- },
-/obj/effect/decal/cleanable/glass,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
- dir = 1
- },
-/turf/open/floor/iron/airless,
-/area/ruin/space/ancientstation/beta/medbay)
"oG" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/xenoblood,
+/obj/structure/table,
+/obj/machinery/cell_charger,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
"oH" = (
@@ -4256,13 +4042,6 @@
},
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
-"oJ" = (
-/obj/structure/closet/crate/bin,
-/obj/effect/spawner/random/maintenance,
-/obj/effect/spawner/random/trash/garbage,
-/obj/structure/broken_flooring/corner/directional/west,
-/turf/open/floor/plating/airless,
-/area/ruin/space/ancientstation/beta/medbay)
"oK" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/directional/east,
@@ -4299,6 +4078,9 @@
icon_state = "medium"
},
/obj/structure/broken_flooring/side/directional/south,
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/hall)
"oQ" = (
@@ -4360,6 +4142,17 @@
},
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/hall)
+"pd" = (
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/structure/window/reinforced/spawner/directional/north,
+/obj/structure/window/reinforced/spawner/directional/south,
+/obj/structure/table,
+/obj/machinery/door/window/brigdoor/right/directional/east,
+/obj/machinery/computer/upload/borg{
+ dir = 4
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"pf" = (
/obj/structure/window/reinforced/spawner/directional/west,
/obj/machinery/portable_atmospherics/pump,
@@ -4372,6 +4165,16 @@
/obj/structure/broken_flooring/corner/directional/north,
/turf/open/floor/iron/airless,
/area/ruin/space/ancientstation/beta/hall)
+"pg" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/duct,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
"ph" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/mirror/directional/north,
@@ -4380,6 +4183,9 @@
/obj/machinery/power/apc/auto_name/directional/east,
/obj/effect/mapping_helpers/apc/no_charge,
/obj/structure/cable,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
"pi" = (
@@ -4450,10 +4256,22 @@
/obj/effect/decal/cleanable/dirt,
/turf/closed/wall/rust,
/area/ruin/space/ancientstation/charlie/kitchen)
+"py" = (
+/obj/effect/turf_decal/tile/green/anticorner/contrasted{
+ dir = 8
+ },
+/obj/machinery/vending/hydroseeds{
+ onstation = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
"pz" = (
/obj/structure/rack,
/obj/effect/decal/cleanable/dirt,
-/obj/item/card/id/away/old/apc,
+/obj/item/card/id/advanced/old{
+ trim = /datum/id_trim/away/old/apc;
+ name = "Engineering Equipment Access"
+ },
/obj/item/crowbar,
/obj/item/stock_parts/cell/high,
/obj/machinery/door/window/right/directional/east{
@@ -4522,6 +4340,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/item/paper/fluff/ruins/oldstation/distro_guide,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/atmos)
"qm" = (
@@ -4540,11 +4359,24 @@
/area/ruin/space/ancientstation/beta/supermatter)
"qn" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/computer/old,
-/obj/item/paper/fluff/ruins/oldstation/report,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/emcloset/anchored,
+/obj/item/storage/box/emergency_eva,
+/obj/item/storage/box/emergency_eva,
+/obj/item/storage/box/emergency_eva,
+/obj/item/storage/box/emergency_eva,
+/obj/item/storage/box/emergency_eva,
+/obj/item/storage/box/emergency_eva,
+/obj/item/storage/box/emergency_eva,
/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/bridge)
+/area/ruin/space/ancientstation/charlie/dorms)
+"qz" = (
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 6
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"qA" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -4562,6 +4394,9 @@
"qH" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/plumbing/input,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
/turf/open/floor/engine,
/area/ruin/space/ancientstation/delta/biolab)
"qK" = (
@@ -4574,6 +4409,9 @@
/obj/machinery/power/energy_accumulator/grounding_rod,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/supermatter)
+"rf" = (
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"rg" = (
/obj/machinery/door/firedoor,
/obj/effect/decal/cleanable/dirt,
@@ -4590,6 +4428,11 @@
/obj/machinery/duct,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"ri" = (
+/obj/structure/cable,
+/obj/item/solar_assembly,
+/turf/open/floor/iron/solarpanel/airless,
+/area/ruin/space/solars/ancientstation/charlie/solars)
"rl" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 4
@@ -4624,37 +4467,41 @@
/obj/machinery/gravity_generator/main/off,
/turf/open/floor/iron/diagonal,
/area/ruin/space/ancientstation/beta/gravity)
-"rN" = (
+"rJ" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/glass,
-/obj/item/reagent_containers/cup/bottle{
- pixel_x = 4;
- list_reagents = list(/datum/reagent/growthserum=30);
- name = "Experimental solution";
- renamedByPlayer = 1;
- pixel_y = 8
- },
-/obj/item/reagent_containers/cup/bottle{
- pixel_x = -4;
- list_reagents = list(/datum/reagent/consumable/nutriment/peptides=30);
- name = "Solution for Molly";
- renamedByPlayer = 1
- },
-/obj/item/reagent_containers/dropper{
- pixel_x = -7;
- pixel_y = 10
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
},
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 1
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hall)
+"rQ" = (
+/obj/structure/closet/crate/medical{
+ opened = 1
},
-/turf/open/floor/iron/white/textured_edge,
-/area/ruin/space/ancientstation/delta/biolab)
+/obj/item/skillchip/bonsai,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"rR" = (
/obj/effect/decal/cleanable/generic,
/obj/item/stack/rods,
/turf/open/floor/engine/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"rS" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Gravity Generator"
+ },
+/obj/structure/cable,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/beta/gravity)
"rT" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -4702,6 +4549,26 @@
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/hall)
+"sh" = (
+/obj/item/radio/intercom/directional/south{
+ freerange = 1;
+ frequency = 1447;
+ listening = 0;
+ name = "Private Channel"
+ },
+/obj/item/radio/intercom/directional/east{
+ freerange = 1;
+ name = "Uncommon Channel";
+ frequency = 1363
+ },
+/obj/item/radio/intercom/directional/north{
+ freerange = 1;
+ listening = 0;
+ name = "Custom Channel"
+ },
+/obj/structure/ai_core/deactivated,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"si" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb,
@@ -4712,6 +4579,25 @@
/obj/structure/chair,
/turf/open/floor/iron/white/textured,
/area/ruin/space/ancientstation/delta/proto)
+"sm" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/red/half/contrasted{
+ dir = 4
+ },
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/sec)
+"sn" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
"sq" = (
/obj/effect/spawner/structure/window/hollow/reinforced/middle,
/obj/structure/cable,
@@ -4769,11 +4655,9 @@
"sJ" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
-/obj/structure/sink/kitchen/directional/west{
- desc = "A sink used for washing one's hands and face. It looks rusty and home-made";
- name = "old sink";
- has_water_reclaimer = 0
- },
+/obj/structure/table,
+/obj/item/tank/internals/anesthetic,
+/obj/item/clothing/mask/breath/medical,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
"sL" = (
@@ -4784,15 +4668,21 @@
/area/ruin/space/ancientstation/delta/hall)
"sM" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/computer/old{
- dir = 1
- },
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
dir = 8
},
+/obj/machinery/computer/security{
+ dir = 1
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/sec)
+"sO" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/chem_master/condimaster,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
"sP" = (
/obj/machinery/space_heater,
/turf/open/floor/plating/rust,
@@ -4817,8 +4707,24 @@
},
/obj/machinery/airalarm/directional/west,
/obj/effect/mapping_helpers/airalarm/all_access,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
/turf/open/floor/iron/diagonal,
/area/ruin/space/ancientstation/beta/gravity)
+"ta" = (
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
+/turf/open/floor/engine/airless,
+/area/ruin/space/ancientstation/beta/supermatter)
+"tc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
"td" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/duct,
@@ -4831,9 +4737,38 @@
},
/turf/open/floor/iron/white/textured,
/area/ruin/space/ancientstation/delta/proto)
+"tk" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/effect/mob_spawn/ghost_role/human/oldexplorer,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/dorms)
+"tm" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/directional/south,
+/obj/effect/decal/cleanable/dirt,
+/mob/living/basic/alien/drone,
+/obj/machinery/duct,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
"tr" = (
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"tu" = (
+/obj/structure/grille/broken,
+/obj/item/shard{
+ icon_state = "medium"
+ },
+/obj/effect/mapping_helpers/broken_floor,
+/obj/item/stack/rods,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"tv" = (
/obj/machinery/portable_atmospherics/canister/air,
/turf/open/floor/plating,
@@ -4857,6 +4792,19 @@
"tC" = (
/turf/closed/mineral/gold,
/area/space/nearstation)
+"tH" = (
+/obj/machinery/door/airlock/engineering/glass,
+/obj/machinery/door/poddoor{
+ id = "ancient"
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/engie)
"tJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -4876,13 +4824,44 @@
/area/ruin/space/ancientstation/charlie/kitchen)
"ua" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/computer/old,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
dir = 4
},
+/obj/machinery/computer/records/security,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/sec)
+"ue" = (
+/obj/machinery/door/airlock/research{
+ name = "Research and Development"
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
+"uh" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/layer4,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
+"ui" = (
+/obj/effect/decal/cleanable/shreds,
+/obj/structure/alien/weeds,
+/obj/structure/closet/crate/secure/science{
+ req_access = list("away_science")
+ },
+/obj/item/transfer_valve,
+/obj/item/raw_anomaly_core/bluespace,
+/obj/item/raw_anomaly_core/random,
+/obj/item/clothing/suit/toggle/labcoat/science,
+/obj/item/reagent_containers/cup/soda_cans/dr_gibb,
+/obj/item/mmi/posibrain,
+/obj/machinery/camera/autoname/directional/south{
+ status = 0
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"uj" = (
/turf/closed/wall/r_wall,
/area/ruin/space/ancientstation/delta/proto)
@@ -4928,6 +4907,13 @@
/obj/structure/cable,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
+"ur" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/duct,
+/obj/effect/decal/cleanable/blood/drip,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
"uu" = (
/obj/structure/table/glass,
/obj/structure/closet/mini_fridge{
@@ -4979,6 +4965,10 @@
},
/turf/open/floor/engine/n2,
/area/ruin/space/ancientstation/beta/atmos)
+"uE" = (
+/obj/machinery/portable_atmospherics/canister/water_vapor,
+/turf/open/floor/plating,
+/area/ruin/space/ancientstation/charlie/hall)
"uG" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -5069,14 +5059,34 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
+"vt" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/research{
+ name = "Research and Development"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/firedoor/closed,
+/obj/machinery/duct,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
"vy" = (
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera/autoname/directional/south{
+ status = 0
+ },
/turf/open/floor/engine,
/area/ruin/space/ancientstation/delta/biolab)
"vA" = (
/obj/effect/spawner/structure/window/hollow/reinforced/middle,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/biolab)
+"vD" = (
+/obj/effect/decal/cleanable/cobweb,
+/obj/machinery/sleeper,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"vE" = (
/obj/structure/rack,
/obj/item/tank/internals/emergency_oxygen,
@@ -5109,17 +5119,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
-"vM" = (
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/airlock/external/ruin{
- name = "Engineering External Access"
- },
-/turf/open/floor/plating,
-/area/ruin/space/ancientstation/charlie/engie)
"vO" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/extinguisher_cabinet/directional/south,
@@ -5210,6 +5209,19 @@
/obj/item/ammo_box/a762,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/hall)
+"wh" = (
+/obj/machinery/door/airlock/engineering/glass,
+/obj/machinery/door/poddoor{
+ id = "ancient"
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/engie)
"wi" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/command{
@@ -5234,6 +5246,9 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/duct,
+/obj/machinery/camera/autoname/directional/south{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/biolab)
"wn" = (
@@ -5286,33 +5301,23 @@
"wD" = (
/turf/closed/mineral/uranium,
/area/space/nearstation)
-"wE" = (
-/obj/machinery/door/airlock/engineering{
- name = "Supermatter Chamber"
- },
-/turf/open/floor/plating/airless,
-/area/ruin/space/ancientstation/beta/supermatter)
-"wF" = (
-/obj/structure/closet/crate/bin,
-/obj/effect/spawner/random/trash/botanical_waste,
-/obj/effect/turf_decal/tile/green/anticorner/contrasted{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/hydro)
"wG" = (
/obj/effect/spawner/structure/window/hollow/middle,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/hydro)
-"wK" = (
-/obj/machinery/computer/pandemic{
- machine_stat = 1
+"wI" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/science{
+ name = "Artificial Program Core Room"
},
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 1
+/obj/machinery/door/firedoor,
+/obj/structure/alien/weeds,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
+ cycle_id = "oldstation-aisat"
},
-/turf/open/floor/iron/white/textured_edge,
-/area/ruin/space/ancientstation/delta/biolab)
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/hall)
"wL" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
@@ -5320,11 +5325,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/engie)
-"wO" = (
-/obj/machinery/growing/soil,
-/obj/machinery/light/small/directional/south,
-/turf/open/floor/grass,
-/area/ruin/space/ancientstation/charlie/hydro)
"wS" = (
/obj/item/stack/rods,
/obj/machinery/atmospherics/components/unary/vent_scrubber{
@@ -5333,6 +5333,31 @@
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"wT" = (
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/structure/window/reinforced/spawner/directional/north,
+/obj/structure/window/reinforced/spawner/directional/south,
+/obj/structure/table,
+/obj/machinery/door/window/brigdoor/right/directional/east,
+/obj/machinery/computer/upload/ai{
+ dir = 4
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
+"wU" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
+ dir = 1
+ },
+/obj/structure/table,
+/obj/structure/window/reinforced/survival_pod/spawner/directional/west,
+/obj/item/stack/sheet/iron/fifty,
+/obj/item/stack/sheet/glass/fifty{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
"xb" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/airalarm/directional/west,
@@ -5343,21 +5368,21 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hydro)
-"xj" = (
-/obj/machinery/door/airlock/science{
- name = "Biolab"
- },
+"xo" = (
+/obj/item/storage/medkit/ancient,
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/closed,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/item/paper/fluff/ruins/oldstation/protosleep{
+ default_raw_text = "*Prototype Sleeper*
We have deliverted the lastest in medical technology to the medical bay for your use."
+ },
/obj/structure/cable,
-/obj/machinery/duct,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/effect/mapping_helpers/apc/no_charge,
+/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
dir = 4
},
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/biolab)
+/obj/structure/table/reinforced/rglass,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"xr" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -5385,40 +5410,82 @@
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/sec)
+"xw" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/atmos/glass{
+ name = "Station Atmospherics"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/beta/atmos)
"xD" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/stack/rods,
/obj/structure/broken_flooring/pile/directional/south,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/dorms)
+"xF" = (
+/obj/structure/table/optable,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
+"xG" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light_switch/directional/north,
+/obj/effect/turf_decal/tile/green/half/contrasted{
+ dir = 1
+ },
+/obj/structure/closet/crate/bin,
+/obj/effect/spawner/random/trash/botanical_waste,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
"xH" = (
/obj/effect/decal/cleanable/generic,
/obj/structure/cable,
/turf/open/floor/engine/airless,
/area/ruin/space/ancientstation/beta/supermatter)
-"xM" = (
-/obj/machinery/door/window/right/directional/east{
- req_access = list("away_general")
- },
-/turf/open/floor/engine,
-/area/ruin/space/ancientstation/delta/biolab)
"xP" = (
/obj/machinery/light/small/directional/east,
/obj/structure/alien/weeds,
/obj/machinery/portable_atmospherics/scrubber,
/turf/open/floor/iron/dark,
/area/ruin/space/ancientstation/delta/ai)
+"xQ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table,
+/obj/item/seeds/potato,
+/obj/item/seeds/poppy,
+/obj/item/seeds/wheat,
+/obj/item/seeds/carrot,
+/obj/item/seeds/harebell,
+/obj/item/seeds/ambrosia,
+/obj/effect/spawner/random/food_or_drink/seed,
+/obj/item/seeds/grape,
+/obj/item/seeds/wheat/rice,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
"xS" = (
/obj/effect/spawner/structure/window/hollow/reinforced/middle{
dir = 4
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/hall)
+"xY" = (
+/turf/template_noop,
+/area/space/nearstation)
"ye" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table,
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
+"yf" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light_switch/directional/east,
+/obj/effect/turf_decal/tile/blue/anticorner/contrasted,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"yj" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/crate,
@@ -5444,23 +5511,17 @@
/obj/structure/sign/warning/biohazard,
/turf/closed/wall/rust,
/area/ruin/space/ancientstation/delta/biolab)
-"yu" = (
-/obj/machinery/door/airlock/engineering/glass,
-/obj/machinery/door/poddoor{
- id = "ancient"
- },
-/obj/machinery/door/firedoor,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/engie)
"yx" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/hall)
+"yz" = (
+/obj/effect/decal/cleanable/glass,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"yE" = (
/obj/machinery/airalarm/directional/west,
/obj/effect/mapping_helpers/airalarm/all_access,
@@ -5472,8 +5533,17 @@
"yF" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/duct,
+/obj/effect/decal/cleanable/blood/drip,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
+"yG" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/alien/weeds,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/hall)
"yO" = (
/obj/structure/rack,
/obj/item/storage/bag/ore,
@@ -5514,6 +5584,31 @@
/obj/machinery/light/broken/directional/east,
/turf/open/floor/engine/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"zc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 5
+ },
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
+"zj" = (
+/obj/machinery/door/airlock/science{
+ name = "Biolab"
+ },
+/obj/machinery/door/firedoor/closed,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/biolab)
"zl" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet,
@@ -5535,20 +5630,6 @@
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/atmos)
-"zn" = (
-/obj/machinery/door/airlock/engineering{
- name = "Gravity Generator"
- },
-/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron/diagonal,
-/area/ruin/space/ancientstation/beta/gravity)
"zp" = (
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
@@ -5560,6 +5641,14 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/diagonal,
/area/ruin/space/ancientstation/beta/gravity)
+"zq" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/beta/hall)
"zr" = (
/obj/effect/spawner/structure/window/hollow/reinforced/end{
dir = 8
@@ -5676,19 +5765,16 @@
/obj/machinery/duct,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"Ap" = (
+/obj/structure/cable,
+/obj/structure/lattice/catwalk,
+/turf/open/space/basic,
+/area/ruin/space/solars/ancientstation/charlie/solars)
"Ar" = (
/obj/structure/transit_tube_pod{
dir = 4;
anchored = 0
},
-/obj/structure/lattice/catwalk,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
- dir = 10
- },
-/obj/structure/cable,
/turf/template_noop,
/area/space/nearstation)
"Au" = (
@@ -5702,6 +5788,9 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
dir = 10
},
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
"Ax" = (
@@ -5754,6 +5843,14 @@
/obj/structure/mirror/directional/east,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/charlie/hall)
+"AS" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hall)
"AV" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -5803,10 +5900,6 @@
},
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
-"Bs" = (
-/obj/machinery/portable_atmospherics/canister/oxygen,
-/turf/open/floor/engine/o2,
-/area/ruin/space/ancientstation/beta/atmos)
"Bt" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -5827,16 +5920,6 @@
initial_gas_mix = "co2=6;o2=16;n2=82;TEMP=293.15"
},
/area/ruin/space/ancientstation/delta/hall)
-"Bv" = (
-/obj/machinery/door/airlock/research{
- name = "Research and Development"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
-/obj/machinery/door/firedoor/closed,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/rnd)
"By" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/computer/monitor,
@@ -5863,6 +5946,18 @@
/obj/structure/cable,
/turf/template_noop,
/area/space/nearstation)
+"BD" = (
+/obj/machinery/door/airlock/atmos/glass{
+ name = "Station Atmospherics"
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/beta/atmos)
"BH" = (
/obj/item/solar_assembly,
/obj/structure/cable,
@@ -5878,10 +5973,28 @@
/obj/machinery/duct,
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
+"BN" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/effect/mob_spawn/ghost_role/human/oldcmo,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/dorms)
"BP" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/engine/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"BQ" = (
+/obj/structure/table/reinforced/rglass,
+/obj/item/tank/internals/anesthetic,
+/obj/item/clothing/mask/breath/medical,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"BX" = (
/obj/effect/decal/cleanable/glass,
/obj/structure/cable,
@@ -5899,12 +6012,27 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
+"Ca" = (
+/obj/structure/cable,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/machinery/door/airlock/external/ruin{
+ name = "Engineering External Access"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/plating,
+/area/ruin/space/ancientstation/charlie/engie)
"Cc" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
/obj/effect/turf_decal/tile/yellow/half/contrasted{
dir = 4
},
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/engie)
"Ci" = (
@@ -5912,6 +6040,7 @@
name = "Engineering External Access"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/supermatter)
"Cj" = (
@@ -5928,6 +6057,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 4
},
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/hall)
"Cq" = (
@@ -5943,6 +6073,10 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
+"CJ" = (
+/obj/structure/closet/emcloset/anchored,
+/turf/open/floor/plating,
+/area/ruin/space/ancientstation/charlie/hall)
"CK" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/reagent_containers/cup/beaker/oldstation,
@@ -5952,6 +6086,14 @@
/obj/effect/decal/cleanable/glass/plasma,
/turf/open/floor/engine/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"CQ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/blue/half/contrasted{
+ dir = 4
+ },
+/obj/machinery/computer/crew,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/bridge)
"CR" = (
/obj/machinery/power/smes{
input_level = 5000;
@@ -5982,25 +6124,6 @@
/obj/effect/spawner/structure/window/hollow/middle,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/kitchen)
-"Dd" = (
-/obj/effect/decal/cleanable/blood/old,
-/obj/effect/decal/remains/human{
- pixel_y = -4;
- pixel_x = -4
- },
-/obj/item/paper/fluff/ruins/oldstation/survivor_note{
- pixel_x = 17;
- pixel_y = 12
- },
-/obj/item/organ/internal/cyberimp/arm/item_set/toolset{
- pixel_x = 6;
- pixel_y = 2
- },
-/obj/item/organ/internal/cyberimp/cyberlink/nt_high,
-/turf/open/floor/plating{
- initial_gas_mix = "co2=6;o2=16;n2=82;TEMP=293.15"
- },
-/area/ruin/space/ancientstation/delta/hall)
"Df" = (
/obj/structure/grille/broken,
/turf/open/floor/plating/airless,
@@ -6033,6 +6156,20 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/atmos)
+"Ds" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/autolathe,
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
+"Dv" = (
+/obj/machinery/door/airlock/highsecurity,
+/obj/structure/alien/weeds,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
+ cycle_id = "oldstation-aisat"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"Dw" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -6051,6 +6188,15 @@
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"Dy" = (
+/obj/structure/closet/crate/bin,
+/obj/effect/spawner/random/trash/garbage,
+/obj/effect/spawner/random/maintenance,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/airalarm/directional/west,
+/obj/effect/mapping_helpers/airalarm/all_access,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"DJ" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light_switch/directional/south,
@@ -6069,16 +6215,16 @@
/obj/machinery/atmospherics/components/unary/thermomachine/freezer,
/turf/open/floor/engine/airless,
/area/ruin/space/ancientstation/beta/supermatter)
-"DW" = (
+"DX" = (
+/obj/item/clothing/mask/breath/medical,
+/turf/template_noop,
+/area/template_noop)
+"Ed" = (
/obj/effect/decal/cleanable/dirt,
-/obj/structure/filingcabinet/chestdrawer{
- pixel_y = 3
- },
-/obj/effect/turf_decal/tile/purple/half/contrasted{
- dir = 1
- },
-/turf/open/floor/iron/white/textured_edge,
-/area/ruin/space/ancientstation/delta/biolab)
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/modular_computer/preset/id,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/bridge)
"Eg" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -6095,6 +6241,12 @@
/obj/structure/chair,
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
+"ED" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/rnd/destructive_analyzer,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
"EE" = (
/obj/machinery/door/firedoor,
/obj/effect/decal/cleanable/dirt,
@@ -6189,26 +6341,27 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
-"Fd" = (
+"EZ" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/cafeteria,
-/area/ruin/space/ancientstation/charlie/kitchen)
-"Ff" = (
-/obj/structure/table/glass,
-/obj/item/storage/medkit/ancient,
/obj/effect/decal/cleanable/dirt,
-/obj/item/paper/fluff/ruins/oldstation/protosleep{
- default_raw_text = "*Prototype Sleeper*
We have deliverted the lastest in medical technology to the medical bay for your use."
- },
/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/effect/mapping_helpers/apc/no_charge,
-/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
- dir = 4
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
+"Fa" = (
+/obj/effect/turf_decal/tile/purple/half/contrasted,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/white/textured_edge{
+ dir = 1
},
-/turf/open/floor/iron/airless,
-/area/ruin/space/ancientstation/beta/medbay)
+/area/ruin/space/ancientstation/delta/biolab)
+"Fd" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/firealarm/directional/south,
+/turf/open/floor/iron/cafeteria,
+/area/ruin/space/ancientstation/charlie/kitchen)
"Fh" = (
/obj/effect/spawner/structure/window/hollow/reinforced/middle,
/turf/open/floor/plating,
@@ -6218,6 +6371,14 @@
/obj/machinery/space_heater,
/turf/open/floor/plating/rust,
/area/ruin/space/ancientstation/delta/hall)
+"Fn" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 1
+ },
+/obj/machinery/disease2/incubator,
+/turf/open/floor/iron/white/textured_edge,
+/area/ruin/space/ancientstation/delta/biolab)
"Fo" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/glass,
@@ -6262,6 +6423,13 @@
/obj/item/stack/rods,
/turf/open/floor/engine/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"FE" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/firealarm/directional/east,
+/obj/effect/decal/cleanable/dirt,
+/mob/living/basic/alien/drone,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
"FH" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/machinery/portable_atmospherics/scrubber,
@@ -6359,6 +6527,12 @@
},
/turf/open/floor/plating/rust,
/area/ruin/space/ancientstation/charlie/hall)
+"Gh" = (
+/obj/structure/alien/weeds,
+/obj/effect/decal/cleanable/blood/gibs/old,
+/mob/living/basic/alien,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"Gi" = (
/obj/machinery/portable_atmospherics/canister/plasma,
/obj/effect/decal/cleanable/dirt,
@@ -6388,6 +6562,11 @@
/obj/structure/closet/firecloset/full,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/hall)
+"Gv" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/mecha_part_fabricator,
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
"Gz" = (
/turf/closed/wall/rust,
/area/ruin/space/ancientstation/delta/hall)
@@ -6395,26 +6574,16 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"GJ" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"GK" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Storage Room"
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/hall)
-"GM" = (
-/obj/machinery/door/airlock/science{
- name = "Biolab"
- },
-/obj/machinery/door/firedoor/closed,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/structure/cable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
- },
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/biolab)
"GN" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table,
@@ -6474,6 +6643,11 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron/white/side,
/area/ruin/space/ancientstation/delta/proto)
+"Ho" = (
+/obj/structure/table/reinforced/rglass,
+/obj/item/surgery_tray,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"Hp" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
@@ -6492,8 +6666,13 @@
/area/ruin/space/ancientstation/charlie/hall)
"Hr" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/card/id/away/old/robo,
/obj/effect/decal/cleanable/glass,
+/obj/item/card/id/advanced/old{
+ trim = /datum/id_trim/away/old/robo;
+ registered_name = "Ash Holm";
+ name = "Ash Holm";
+ assignment = "Charlie Station Roboticist"
+ },
/turf/open/floor/plating{
initial_gas_mix = "co2=6;o2=16;n2=82;TEMP=293.15"
},
@@ -6505,6 +6684,20 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/diagonal,
/area/ruin/space/ancientstation/beta/gravity)
+"Hx" = (
+/obj/structure/transit_tube{
+ dir = 4;
+ anchored = 0
+ },
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 6
+ },
+/turf/template_noop,
+/area/space/nearstation)
"HA" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/yellow/half/contrasted,
@@ -6512,6 +6705,7 @@
/area/ruin/space/ancientstation/beta/atmos)
"HI" = (
/obj/machinery/light/small/directional/west,
+/obj/structure/mop_bucket/janitorialcart,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/hall)
"HJ" = (
@@ -6599,6 +6793,22 @@
},
/turf/open/floor/iron/white/textured,
/area/ruin/space/ancientstation/delta/proto)
+"Id" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/paper/fluff/ruins/oldstation/damagereport,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/computer/communications,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/bridge)
+"Ih" = (
+/obj/structure/alien/weeds,
+/obj/item/robot_suit/prebuilt,
+/obj/structure/alien/weeds,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"Ii" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/airalarm/directional/north,
@@ -6610,6 +6820,10 @@
/obj/effect/spawner/random/maintenance,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/hall)
+"Im" = (
+/obj/structure/curtain,
+/turf/open/floor/iron/white/textured_large,
+/area/ruin/space/ancientstation/delta/biolab)
"Ip" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/kitchen/fork{
@@ -6652,16 +6866,11 @@
/obj/effect/turf_decal/tile/green/half/contrasted{
dir = 1
},
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hydro)
-"IL" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/mob/living/basic/alien/drone,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/hall)
"IM" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -6672,6 +6881,14 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"IR" = (
+/obj/effect/turf_decal/tile/blue/half/contrasted{
+ dir = 8
+ },
+/obj/machinery/light/small/broken/directional/west,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"IT" = (
/obj/machinery/power/solar,
/obj/structure/cable,
@@ -6691,19 +6908,10 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
-"IY" = (
-/obj/machinery/airalarm/directional/west,
-/obj/effect/mapping_helpers/airalarm/all_access,
-/obj/structure/table_frame,
-/obj/item/shard{
- icon_state = "medium"
- },
-/obj/item/defibrillator,
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 8
- },
-/turf/open/floor/iron/airless,
-/area/ruin/space/ancientstation/beta/medbay)
+"IZ" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/closed/mineral/random,
+/area/space/nearstation)
"Ja" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -6725,11 +6933,31 @@
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/hall)
+"Jc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
"Jd" = (
/obj/structure/transit_tube{
anchored = 0
},
/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 6
+ },
/turf/template_noop,
/area/space/nearstation)
"Jf" = (
@@ -6740,6 +6968,15 @@
/obj/structure/lattice,
/turf/template_noop,
/area/space/nearstation)
+"Jj" = (
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 1
+ },
+/obj/structure/filingcabinet/chestdrawer{
+ pixel_y = 3
+ },
+/turf/open/floor/iron/white/textured_edge,
+/area/ruin/space/ancientstation/delta/biolab)
"Jo" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -6767,6 +7004,12 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/white/textured_large,
/area/ruin/space/ancientstation/delta/biolab)
+"Jv" = (
+/obj/structure/cable,
+/obj/structure/broken_flooring/side/directional/east,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/hall)
"Jx" = (
/obj/effect/spawner/structure/window/hollow/reinforced/middle{
dir = 4
@@ -6921,6 +7164,32 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/mining)
+"Kj" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/mob/living/basic/alien/drone,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
+"Ks" = (
+/obj/machinery/light/small/directional/west,
+/obj/structure/alien/weeds,
+/mob/living/basic/alien,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
+"Kt" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/firedoor/closed,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
+"Ku" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
"Kv" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/oven/range,
@@ -6945,6 +7214,15 @@
/obj/effect/mapping_helpers/airalarm/all_access,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/hall)
+"KD" = (
+/obj/machinery/door/airlock/highsecurity,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
+"KF" = (
+/obj/item/shard,
+/turf/template_noop,
+/area/template_noop)
"KG" = (
/obj/machinery/light/directional/east,
/obj/structure/table/reinforced,
@@ -6988,6 +7266,30 @@
/obj/effect/mapping_helpers/burnt_floor,
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"KQ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/greenglow,
+/obj/structure/table,
+/obj/item/cultivator{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/shovel/spade,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
+"KR" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Supermatter Chamber"
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/supermatter)
+"KU" = (
+/obj/structure/cable,
+/turf/template_noop,
+/area/space/nearstation)
"KV" = (
/obj/machinery/firealarm/directional/south,
/obj/machinery/light_switch/directional/west,
@@ -6996,6 +7298,21 @@
/obj/item/paper/guides/jobs/engi/gravity_gen,
/turf/open/floor/iron/diagonal,
/area/ruin/space/ancientstation/beta/gravity)
+"KZ" = (
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 4
+ },
+/obj/item/kirbyplants{
+ icon_state = "plant-25"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/white/textured_edge{
+ dir = 8
+ },
+/area/ruin/space/ancientstation/delta/biolab)
+"Lc" = (
+/turf/closed/wall/rust,
+/area/space/nearstation)
"Le" = (
/obj/machinery/door/airlock/science,
/obj/effect/decal/cleanable/dirt,
@@ -7078,8 +7395,23 @@
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/secure_closet/freezer/fridge/open,
/obj/machinery/light/small/directional/north,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
+"LD" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 4
+ },
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
+/turf/open/floor/iron/white/textured_edge{
+ dir = 8
+ },
+/area/ruin/space/ancientstation/delta/biolab)
"LG" = (
/obj/item/shard{
icon_state = "medium"
@@ -7189,10 +7521,33 @@
/obj/machinery/light/small/directional/west,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
+"MC" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/white/textured_large,
+/area/ruin/space/ancientstation/delta/biolab)
+"MG" = (
+/obj/machinery/door/airlock/highsecurity,
+/obj/structure/alien/weeds,
+/obj/structure/cable,
+/obj/effect/decal/cleanable/xenoblood/xtracks,
+/obj/effect/decal/cleanable/blood/tracks,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
+ cycle_id = "oldstation-aisat"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"MH" = (
/obj/structure/girder/displaced,
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"MI" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"MM" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -7221,8 +7576,14 @@
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
/obj/machinery/duct,
+/obj/effect/decal/cleanable/blood/drip,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"MW" = (
+/obj/structure/alien/weeds,
+/mob/living/basic/alien/drone,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"MY" = (
/obj/effect/turf_decal/stripes/corner{
dir = 8
@@ -7246,6 +7607,17 @@
/obj/machinery/light/small/directional/south,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/supermatter)
+"Nj" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/structure/cable,
+/obj/machinery/firealarm/directional/east,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hall)
"Np" = (
/obj/effect/decal/cleanable/xenoblood/xtracks{
dir = 10
@@ -7275,19 +7647,33 @@
dir = 8
},
/area/ruin/space/ancientstation/delta/biolab)
-"NB" = (
-/obj/item/shard,
-/obj/effect/decal/cleanable/glass,
-/obj/structure/table_frame,
+"NC" = (
+/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
+ dir = 1
+ },
+/obj/item/kirbyplants{
+ icon_state = "plant-25"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
/turf/open/floor/iron/airless,
/area/ruin/space/ancientstation/beta/medbay)
"NE" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable,
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hall)
+"NF" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/hall)
+/area/ruin/space/ancientstation/delta/rnd)
"NG" = (
/turf/closed/wall,
/area/ruin/space/ancientstation/delta/biolab)
@@ -7305,6 +7691,27 @@
/obj/item/toy/seashell,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/charlie/hall)
+"NN" = (
+/obj/structure/rack,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/brown/anticorner/contrasted{
+ dir = 1
+ },
+/obj/item/pickaxe/drill,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
+/obj/item/pickaxe/drill,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/beta/mining)
+"NQ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/blue/half/contrasted{
+ dir = 8
+ },
+/obj/machinery/computer/apc_control,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/bridge)
"NU" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/textured_half,
@@ -7338,15 +7745,18 @@
dir = 8
},
/area/ruin/space/ancientstation/delta/biolab)
+"Of" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/rnd/production/circuit_imprinter/offstation,
+/obj/item/reagent_containers/dropper,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
"Om" = (
/obj/effect/decal/cleanable/oil/slippery,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
-"Os" = (
-/obj/structure/door_assembly/door_assembly_eng,
-/turf/open/floor/plating/airless,
-/area/ruin/space/ancientstation/beta/supermatter)
"Ox" = (
/turf/closed/wall,
/area/ruin/space/ancientstation/charlie/storage)
@@ -7378,6 +7788,17 @@
/obj/machinery/duct,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/charlie/hall)
+"OJ" = (
+/mob/living/basic/alien/drone,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 8
+ },
+/obj/item/shard{
+ icon_state = "small"
+ },
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
"OM" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -7391,10 +7812,6 @@
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/biolab)
-"OQ" = (
-/obj/structure/girder,
-/turf/open/floor/plating/airless,
-/area/ruin/space/ancientstation/beta/medbay)
"OR" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/broken_flooring/side/directional/north,
@@ -7429,6 +7846,11 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/sec)
+"OW" = (
+/obj/structure/alien/weeds,
+/mob/living/basic/alien/queen,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"Pa" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -7442,6 +7864,10 @@
/obj/machinery/light/small/directional/east,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
+"Pc" = (
+/obj/structure/girder,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/hall)
"Pd" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -7570,14 +7996,16 @@
dir = 4
},
/obj/machinery/door/firedoor,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/sec)
-"PD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/computer/old,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/bridge)
+"PE" = (
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 1
+ },
+/obj/machinery/disease2/centrifuge,
+/turf/open/floor/iron/white/textured_edge,
+/area/ruin/space/ancientstation/delta/biolab)
"PG" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
@@ -7601,6 +8029,43 @@
/obj/machinery/duct,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"PL" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/command/glass{
+ name = "Bridge"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/bridge)
+"PQ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/science{
+ name = "Artificial Program Core Room"
+ },
+/obj/machinery/door/firedoor,
+/obj/structure/alien/weeds,
+/obj/structure/cable,
+/obj/effect/decal/cleanable/blood/tracks,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{
+ cycle_id = "oldstation-aisat"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/hall)
+"PR" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sink/kitchen/directional/west{
+ desc = "A sink used for washing one's hands and face. It looks rusty and home-made";
+ name = "old sink";
+ has_water_reclaimer = 0
+ },
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
"PS" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -7610,18 +8075,12 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/hall)
-"PZ" = (
-/obj/item/kirbyplants{
- icon_state = "plant-25"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
+"Qb" = (
+/obj/effect/turf_decal/tile/green/half/contrasted,
+/obj/machinery/growing/tray,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
- dir = 4
- },
-/turf/open/floor/iron/white/textured,
-/area/ruin/space/ancientstation/delta/biolab)
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
"Qh" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -7634,6 +8093,9 @@
/obj/structure/cable,
/turf/open/floor/engine/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"Qj" = (
+/turf/open/floor/iron/white/textured_large,
+/area/ruin/space/ancientstation/delta/biolab)
"Ql" = (
/obj/machinery/door/airlock,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
@@ -7645,9 +8107,24 @@
/obj/machinery/duct,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/hall)
+"Qr" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"Qs" = (
/turf/closed/mineral/gibtonite,
/area/space/nearstation)
+"QB" = (
+/obj/machinery/door/airlock/research{
+ name = "Research and Development"
+ },
+/obj/machinery/door/firedoor,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
"QC" = (
/obj/machinery/atmospherics/components/unary/passive_vent/layer2{
dir = 8
@@ -7655,6 +8132,15 @@
/obj/structure/lattice,
/turf/template_noop,
/area/space/nearstation)
+"QG" = (
+/obj/effect/decal/cleanable/dirt,
+/mob/living/basic/alien/drone,
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
+"QH" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/closed/wall,
+/area/ruin/space/ancientstation/beta/medbay)
"QK" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -7713,6 +8199,29 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/engie)
+"Rb" = (
+/obj/machinery/light/small/directional/south,
+/obj/effect/turf_decal/tile/green/half/contrasted,
+/obj/machinery/growing/tray,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
+"Rc" = (
+/obj/machinery/door/airlock/science{
+ name = "Biolab"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/firedoor/closed,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/structure/cable,
+/obj/machinery/duct,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/biolab)
"Rf" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
@@ -7740,6 +8249,18 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
+"Rs" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/stack/sheet/iron/fifty,
+/obj/structure/table,
+/obj/item/stack/sheet/glass/fifty{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/stack/sheet/glass,
+/obj/item/stack/sheet/glass,
+/turf/open/floor/iron/white,
+/area/ruin/space/ancientstation/delta/rnd)
"Rt" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/sign/poster/official/safety_internals/directional/north,
@@ -7794,6 +8315,23 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/sec)
+"RQ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable,
+/obj/machinery/door/firedoor/closed,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Medical Bay";
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/beta/medbay)
"RV" = (
/obj/structure/cable,
/obj/machinery/power/apc/auto_name/directional/east,
@@ -7807,6 +8345,7 @@
"RX" = (
/obj/machinery/door/airlock/external/ruin,
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/beta/mining)
"Sb" = (
@@ -7834,6 +8373,18 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/hall)
+"Sq" = (
+/obj/item/shard,
+/obj/machinery/atmospherics/components/binary/pump/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/glass,
+/obj/effect/mapping_helpers/broken_floor,
+/obj/structure/cable,
+/obj/structure/broken_flooring/singular/directional/west,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/hall)
"Sr" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/green/half/contrasted,
@@ -7856,6 +8407,7 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/supermatter)
"Sz" = (
@@ -7903,19 +8455,6 @@
/obj/machinery/duct,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/charlie/hall)
-"SQ" = (
-/obj/effect/decal/cleanable/shreds,
-/obj/structure/alien/weeds,
-/obj/structure/closet/crate/secure/science{
- req_access = list("away_science")
- },
-/obj/item/transfer_valve,
-/obj/item/raw_anomaly_core/bluespace,
-/obj/item/raw_anomaly_core/random,
-/obj/item/clothing/suit/toggle/labcoat/science,
-/obj/item/reagent_containers/cup/soda_cans/dr_gibb,
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
"ST" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -7927,22 +8466,23 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
-"SV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/research{
- name = "Research and Development"
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/firedoor/closed,
-/obj/machinery/duct,
-/turf/open/floor/iron,
-/area/ruin/space/ancientstation/delta/rnd)
"SZ" = (
/turf/closed/mineral/bscrystal,
/area/space/nearstation)
"Td" = (
/turf/closed/mineral/random,
/area/ruin/space/ancientstation/beta/hall)
+"Tf" = (
+/obj/machinery/door/airlock/mining/glass{
+ name = "Mining Equipment"
+ },
+/obj/structure/cable,
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/beta/mining)
"Ti" = (
/obj/effect/turf_decal/stripes/corner{
dir = 8
@@ -7988,6 +8528,26 @@
"Tu" = (
/turf/open/floor/plating/rust,
/area/ruin/space/ancientstation/beta/hall)
+"Tv" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
+"Tw" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/obj/structure/cable,
+/obj/machinery/door/airlock/external/ruin{
+ name = "External Access"
+ },
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/plating,
+/area/ruin/space/ancientstation/charlie/engie)
"Tx" = (
/obj/structure/closet/radiation,
/obj/item/clothing/suit/utility/radiation,
@@ -8032,6 +8592,10 @@
},
/turf/open/floor/engine,
/area/ruin/space/ancientstation/delta/biolab)
+"TQ" = (
+/obj/structure/broken_flooring/corner/directional/west,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"TX" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -8059,6 +8623,16 @@
/obj/structure/cable,
/turf/open/floor/iron/solarpanel/airless,
/area/ruin/space/solars/ancientstation/charlie/solars)
+"Uh" = (
+/obj/machinery/power/supermatter_crystal/shard,
+/obj/structure/closet/crate/engineering{
+ name = "supermatter shard crate";
+ secure = 1;
+ locked = 1;
+ icon_state = "engi_secure_crate"
+ },
+/turf/open/floor/iron/white/textured,
+/area/ruin/space/ancientstation/delta/proto)
"Uj" = (
/obj/structure/girder,
/turf/closed/mineral/random,
@@ -8073,6 +8647,9 @@
/obj/effect/mapping_helpers/broken_floor,
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/supermatter)
+"Um" = (
+/turf/closed/mineral/random,
+/area/template_noop)
"Un" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/light_switch/directional/west{
@@ -8087,20 +8664,38 @@
/obj/effect/decal/cleanable/generic,
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
-"Up" = (
-/obj/structure/closet/crate/medical,
-/obj/item/skillchip/bonsai,
-/obj/item/circuitboard/machine/sleeper,
-/turf/open/floor/plating/airless,
+"Uq" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/firedoor/closed,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
+"Ut" = (
+/obj/machinery/defibrillator_mount/loaded/directional/south,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/computer/operating{
+ dir = 1
+ },
+/turf/open/floor/iron/airless,
/area/ruin/space/ancientstation/beta/medbay)
"Uu" = (
/turf/closed/mineral/plasma,
/area/space/nearstation)
+"Uv" = (
+/obj/structure/door_assembly/door_assembly_eng,
+/obj/machinery/door/firedoor,
+/turf/open/floor/plating/airless,
+/area/ruin/space/ancientstation/beta/supermatter)
"UB" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
/obj/machinery/power/apc/auto_name/directional/north,
/obj/effect/mapping_helpers/apc/no_charge,
+/obj/machinery/camera/autoname/directional/north{
+ status = 0
+ },
/turf/open/floor/iron/white/textured,
/area/ruin/space/ancientstation/delta/proto)
"UG" = (
@@ -8122,9 +8717,44 @@
"UJ" = (
/turf/open/floor/iron/white/textured,
/area/ruin/space/ancientstation/delta/proto)
+"UK" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/effect/mob_spawn/ghost_role/human/oldchef,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/dorms)
+"UN" = (
+/obj/structure/cable,
+/obj/machinery/power/solar,
+/turf/open/floor/iron/solarpanel/airless,
+/area/ruin/space/solars/ancientstation/charlie/solars)
"UP" = (
/turf/closed/mineral/random,
/area/space/nearstation)
+"UQ" = (
+/obj/structure/window/reinforced/spawner/directional/west,
+/obj/structure/window/reinforced/spawner/directional/north,
+/obj/structure/window/reinforced/spawner/directional/south,
+/obj/structure/table,
+/obj/machinery/door/window/brigdoor/right/directional/east,
+/obj/machinery/computer/aifixer{
+ dir = 4
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
+"UR" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/paper/fluff/ruins/oldstation/report,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/modular_computer/preset/command,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/bridge)
"UV" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -8146,6 +8776,28 @@
/obj/structure/closet/emcloset/anchored,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/hall)
+"Ve" = (
+/obj/effect/turf_decal/tile/green/half/contrasted{
+ dir = 1
+ },
+/obj/machinery/growing/tray,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/hydro)
+"Vh" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/machinery/duct,
+/obj/item/stack/cable_coil{
+ amount = 1
+ },
+/turf/open/floor/plating,
+/area/ruin/space/ancientstation/charlie/hall)
"Vk" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
@@ -8161,12 +8813,35 @@
/obj/machinery/griddle,
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
+"Vq" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
"Vu" = (
/obj/effect/spawner/structure/window/hollow/reinforced/middle{
dir = 4
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/engie)
+"Vv" = (
+/obj/machinery/door/airlock/engineering{
+ name = "Gravity Generator"
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/mapping_helpers/airlock/access/all/away/general,
+/turf/open/floor/iron/diagonal,
+/area/ruin/space/ancientstation/beta/gravity)
"Vw" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -8179,6 +8854,18 @@
/obj/effect/mapping_helpers/airalarm/all_access,
/turf/open/floor/iron/white,
/area/ruin/space/ancientstation/delta/rnd)
+"VG" = (
+/obj/structure/alien/weeds,
+/obj/machinery/recharge_station,
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
+"VL" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/table,
+/obj/item/bot_assembly/hygienebot,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/rnd)
"VT" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/shard/plasma{
@@ -8193,6 +8880,11 @@
/obj/structure/window/reinforced/spawner/directional/south,
/turf/open/floor/engine,
/area/ruin/space/ancientstation/delta/biolab)
+"VZ" = (
+/obj/effect/decal/cleanable/glass,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"Wd" = (
/obj/effect/decal/cleanable/xenoblood/xtracks{
dir = 5
@@ -8228,18 +8920,29 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/beta/atmos)
-"Ws" = (
-/obj/machinery/light/small/directional/west,
-/obj/structure/alien/weeds,
-/mob/living/basic/alien,
-/turf/open/floor/iron/dark,
-/area/ruin/space/ancientstation/delta/ai)
"Wu" = (
/obj/machinery/duct,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
+"Wv" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet,
+/obj/item/storage/backpack/duffelbag,
+/obj/effect/spawner/random/clothing/backpack,
+/obj/effect/spawner/random/clothing/backpack,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/charlie/dorms)
+"Ww" = (
+/obj/structure/alien/weeds,
+/mob/living/basic/alien/drone,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"WA" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -8299,6 +9002,10 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/hall)
+"Xl" = (
+/obj/machinery/computer/old,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"Xt" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/diagonal,
@@ -8309,6 +9016,15 @@
},
/turf/open/floor/plating,
/area/ruin/space/ancientstation/delta/rnd)
+"Xx" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/purple/half/contrasted{
+ dir = 1
+ },
+/obj/machinery/disease2/diseaseanalyser,
+/turf/open/floor/iron/white/textured_edge,
+/area/ruin/space/ancientstation/delta/biolab)
"Xy" = (
/obj/structure/alien/egg/burst,
/obj/effect/decal/cleanable/insectguts,
@@ -8339,6 +9055,15 @@
/obj/machinery/duct,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"XI" = (
+/obj/effect/turf_decal/tile/blue/half/contrasted{
+ dir = 8
+ },
+/obj/machinery/light/small/broken/directional/west,
+/obj/structure/table_frame,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/iron/airless,
+/area/ruin/space/ancientstation/beta/medbay)
"XJ" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
@@ -8377,10 +9102,10 @@
/area/ruin/space/ancientstation/beta/gravity)
"XX" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/computer/old,
/obj/effect/turf_decal/tile/red/half/contrasted{
dir = 1
},
+/obj/machinery/computer/warrant,
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/sec)
"XY" = (
@@ -8399,6 +9124,13 @@
},
/turf/open/floor/iron/cafeteria,
/area/ruin/space/ancientstation/charlie/kitchen)
+"Yc" = (
+/obj/structure/alien/weeds,
+/obj/machinery/camera/autoname/directional/west{
+ status = 0
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"Yg" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -8490,11 +9222,6 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/charlie/bridge)
-"YH" = (
-/obj/structure/lattice,
-/obj/item/stack/rods,
-/turf/template_noop,
-/area/space/nearstation)
"YJ" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 8
@@ -8514,6 +9241,12 @@
/obj/structure/sign/poster/contraband/lamarr,
/turf/closed/wall/rust,
/area/ruin/space/ancientstation/delta/biolab)
+"YV" = (
+/obj/machinery/door/window/right/directional/east{
+ req_access = list("away_general")
+ },
+/turf/open/floor/engine,
+/area/ruin/space/ancientstation/delta/biolab)
"YW" = (
/turf/open/floor/iron/textured_half,
/area/ruin/space/ancientstation/beta/supermatter)
@@ -8522,23 +9255,18 @@
/obj/effect/spawner/random/maintenance,
/turf/open/floor/plating,
/area/ruin/space/ancientstation/charlie/hall)
-"Zb" = (
+"Za" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/computer/old,
-/obj/item/paper/fluff/ruins/oldstation/damagereport,
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/biogenerator,
/turf/open/floor/iron,
-/area/ruin/space/ancientstation/charlie/bridge)
+/area/ruin/space/ancientstation/charlie/hydro)
"Zc" = (
/obj/effect/spawner/structure/window/hollow/reinforced/middle{
dir = 4
},
/turf/open/floor/plating/airless,
/area/ruin/space/ancientstation/beta/supermatter)
-"Ze" = (
-/obj/machinery/portable_atmospherics/canister/nitrogen,
-/turf/open/floor/engine/n2,
-/area/ruin/space/ancientstation/beta/atmos)
"Zg" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible/layer2{
@@ -8551,6 +9279,10 @@
/obj/effect/spawner/random/maintenance,
/turf/open/floor/plating/rust,
/area/ruin/space/ancientstation/delta/hall)
+"Zq" = (
+/obj/item/tank/internals/anesthetic,
+/turf/template_noop,
+/area/template_noop)
"Zs" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/wrench,
@@ -8565,6 +9297,34 @@
"Zt" = (
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/rnd)
+"Zx" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/purple/anticorner/contrasted{
+ dir = 4
+ },
+/obj/structure/table/glass,
+/obj/item/reagent_containers/cup/bottle{
+ pixel_x = -4;
+ list_reagents = list(/datum/reagent/consumable/nutriment/peptides=30);
+ name = "Solution for Molly";
+ renamedByPlayer = 1
+ },
+/obj/item/reagent_containers/cup/bottle{
+ pixel_x = 4;
+ list_reagents = list(/datum/reagent/growthserum=30);
+ name = "Experimental solution";
+ renamedByPlayer = 1;
+ pixel_y = 8
+ },
+/obj/item/extrapolator,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/reagent_containers/dropper{
+ pixel_x = -7;
+ pixel_y = 10
+ },
+/turf/open/floor/iron/white/textured,
+/area/ruin/space/ancientstation/delta/biolab)
"ZA" = (
/obj/effect/spawner/structure/window/hollow/end{
dir = 1
@@ -8595,6 +9355,25 @@
},
/turf/open/floor/iron,
/area/ruin/space/ancientstation/delta/hall)
+"ZU" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/directional/east,
+/obj/machinery/firealarm/directional/east,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 1
+ },
+/mob/living/basic/alien,
+/obj/structure/cable,
+/turf/open/floor/iron,
+/area/ruin/space/ancientstation/delta/hall)
+"ZV" = (
+/obj/structure/alien/weeds,
+/obj/machinery/camera/autoname/directional/east{
+ status = 0
+ },
+/turf/open/floor/iron/dark,
+/area/ruin/space/ancientstation/delta/ai)
"ZY" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/airalarm/directional/west,
@@ -9576,8 +10355,8 @@ aa
aa
aa
aa
-aa
-aa
+lV
+dy
aa
aa
aa
@@ -9640,7 +10419,7 @@ aa
aa
aa
aa
-aa
+DX
aa
aa
aa
@@ -9707,8 +10486,8 @@ aa
aa
aa
aa
-aa
-aa
+KF
+Zq
aa
aa
aa
@@ -9765,15 +10544,15 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+Ck
+Ck
+AK
+bF
+kT
+AK
+AK
+GJ
+rf
aa
aa
aa
@@ -9831,15 +10610,15 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+Ck
+NC
+IR
+yz
+Qr
+Dy
+XI
+iX
+AK
aa
aa
aa
@@ -9897,15 +10676,15 @@ UP
Td
aa
dF
+Ck
+Xl
+Qr
+VZ
+yz
+Qr
+Qr
+xF
AK
-AK
-AK
-bF
-lV
-AK
-AK
-aa
-aa
aa
UP
UP
@@ -9964,14 +10743,14 @@ Uj
fT
gO
AK
-ow
-IY
-NB
-oE
-nC
+vD
+uh
+dE
+qz
+MI
+Qr
+Ut
Ck
-aa
-aa
UP
UP
Uu
@@ -10030,15 +10809,15 @@ jE
bH
hJ
AK
-Up
-bq
-oB
-oF
-oJ
-lW
-YH
-Jg
-UP
+rQ
+Qr
+zc
+Qr
+TQ
+Qr
+xF
+tu
+IZ
UP
UP
Uu
@@ -10096,22 +10875,22 @@ sA
bI
je
Ck
-Ff
+xo
dD
kb
eH
-nD
-AK
-aa
-aa
+yf
+BQ
+Ho
+QH
Jg
aa
aa
UP
UP
Yp
-lY
-nv
+BD
+xw
mH
mH
kX
@@ -10119,9 +10898,9 @@ kA
kL
le
pp
-mH
+er
bJ
-aa
+Um
UP
UP
aa
@@ -10164,12 +10943,12 @@ mY
AK
Ck
rr
-iy
+RQ
vd
Ck
-OQ
+Ck
Bz
-kQ
+Pc
kQ
kQ
gJ
@@ -10177,7 +10956,7 @@ Ax
Ax
kQ
jO
-nw
+Jv
gf
mH
ko
@@ -10186,7 +10965,7 @@ Dp
Wp
lf
mH
-UP
+Lc
UP
wD
wD
@@ -10221,10 +11000,10 @@ Md
rG
Md
zp
-zn
+Vv
eA
gw
-bw
+rS
gz
PS
gi
@@ -10243,7 +11022,7 @@ oV
nQ
BX
pc
-nx
+Sq
pf
bJ
TB
@@ -10291,7 +11070,7 @@ FT
RV
CR
sA
-zJ
+zq
mY
KC
nf
@@ -10368,9 +11147,9 @@ Vl
Vl
Zc
SK
-Os
+Uv
Lm
-wE
+KR
SK
Df
SK
@@ -10378,11 +11157,11 @@ gJ
kQ
kQ
bJ
-Bs
+av
Lh
Gi
pv
-Ze
+hc
mH
nr
aa
@@ -10556,9 +11335,9 @@ SZ
UP
jE
mW
-mV
+ay
Vl
-ES
+om
NU
YW
NU
@@ -10574,7 +11353,7 @@ Hj
Ci
tr
Sy
-Jg
+dH
aa
aa
aa
@@ -10640,7 +11419,7 @@ JL
Vl
Lj
GR
-Jg
+dH
aa
aa
aa
@@ -10654,9 +11433,9 @@ Ua
dH
Ua
aa
-aa
-aa
-aa
+UN
+dH
+Ua
aa
aa
aa
@@ -10706,7 +11485,7 @@ vO
SK
Jg
Jg
-Jg
+dH
aa
aa
aa
@@ -10719,10 +11498,10 @@ Jg
Ua
my
IT
-aa
-aa
-aa
-aa
+Jg
+Ua
+dH
+UN
aa
aa
aa
@@ -10762,7 +11541,7 @@ HI
FK
sP
Vl
-Sk
+ta
QT
Ns
Ul
@@ -10772,7 +11551,7 @@ Sb
Df
Jg
Jg
-Jg
+dH
aa
aa
aa
@@ -10786,9 +11565,9 @@ IT
dH
BH
aa
-aa
-aa
-aa
+Ua
+my
+ri
aa
aa
aa
@@ -10838,7 +11617,7 @@ LG
rm
UP
Jg
-aa
+dH
aa
aa
aa
@@ -10852,9 +11631,9 @@ Jg
dH
Jg
aa
-aa
-aa
-aa
+Jg
+dH
+Jg
aa
aa
aa
@@ -10904,7 +11683,7 @@ rm
rm
UP
Jg
-aa
+dH
aa
aa
aa
@@ -10918,9 +11697,9 @@ BH
dH
Ua
aa
-aa
-aa
-aa
+Ua
+my
+Ua
aa
aa
aa
@@ -10946,7 +11725,7 @@ aa
aa
aa
iT
-jV
+NN
yO
mL
mN
@@ -10970,7 +11749,7 @@ rm
rm
Jg
Jg
-aa
+dH
aa
aa
aa
@@ -10984,9 +11763,9 @@ Ua
my
Ua
aa
-aa
-aa
-aa
+Ua
+dH
+Ua
aa
aa
aa
@@ -11036,7 +11815,7 @@ Jg
Jg
Jg
Jg
-aa
+dH
aa
aa
aa
@@ -11050,9 +11829,9 @@ IT
dH
Ua
aa
-aa
-aa
-aa
+Ua
+my
+Ua
aa
aa
aa
@@ -11102,7 +11881,7 @@ aa
Jg
aa
Jg
-aa
+dH
aa
aa
aa
@@ -11116,9 +11895,9 @@ Jg
my
Jg
aa
-aa
-aa
-aa
+Jg
+my
+Jg
aa
aa
aa
@@ -11148,7 +11927,7 @@ mB
mG
cm
gh
-mM
+Tf
gi
mZ
mw
@@ -11180,16 +11959,16 @@ dH
my
dH
my
+Ap
+dH
+my
+my
Ua
aa
aa
aa
aa
aa
-aa
-aa
-aa
-aa
"}
(40,1,1) = {"
aa
@@ -11248,9 +12027,9 @@ Jg
dH
Jg
aa
-aa
-aa
-aa
+Jg
+dH
+Jg
aa
aa
aa
@@ -11314,9 +12093,9 @@ Ua
dH
Ua
aa
-aa
-aa
-aa
+UN
+my
+Ua
aa
aa
aa
@@ -11356,7 +12135,7 @@ aa
aa
aa
fB
-vM
+Ca
fB
aa
aa
@@ -11380,9 +12159,9 @@ Ua
my
Ua
aa
-aa
-aa
-aa
+Ua
+my
+Ua
aa
aa
aa
@@ -11446,9 +12225,9 @@ Ua
dH
IT
aa
-aa
-aa
-aa
+Ua
+dH
+UN
aa
aa
aa
@@ -11479,7 +12258,7 @@ aa
aa
aa
kQ
-zJ
+zq
mV
jE
aa
@@ -11512,9 +12291,9 @@ Jg
dH
Jg
aa
-aa
-aa
-aa
+Jg
+dH
+Jg
aa
aa
aa
@@ -11554,7 +12333,7 @@ eI
eI
fb
fD
-kH
+Tw
gV
Vu
eI
@@ -11578,9 +12357,9 @@ Ua
my
Ua
aa
-aa
-aa
-aa
+Ua
+dH
+Ua
aa
aa
aa
@@ -11643,10 +12422,10 @@ Jg
Ua
my
IT
-aa
-aa
-aa
-aa
+Jg
+UN
+dH
+Ua
aa
aa
aa
@@ -11710,9 +12489,9 @@ IT
dH
IT
aa
-aa
-aa
-aa
+UN
+dH
+Ua
aa
aa
aa
@@ -11934,8 +12713,8 @@ aa
aa
aa
aa
-aa
-aa
+aT
+aT
aT
aT
hi
@@ -11949,9 +12728,9 @@ eI
dl
dl
eI
-fG
+tH
gn
-yu
+wh
gX
eI
eI
@@ -12000,9 +12779,9 @@ aa
aa
aa
aa
-aT
-aT
bb
+uE
+CJ
aA
Mu
Gd
@@ -12024,7 +12803,7 @@ ih
FV
cW
FV
-FV
+rJ
bQ
aT
oh
@@ -12081,7 +12860,7 @@ UV
UV
eP
fh
-cP
+Nj
Pa
tz
fh
@@ -12103,9 +12882,9 @@ aa
aa
aa
aa
-UP
aa
aa
+UP
aa
aa
aa
@@ -12139,7 +12918,7 @@ as
as
as
hi
-FV
+AS
jJ
bZ
ey
@@ -12166,6 +12945,8 @@ kM
aG
nk
nk
+aG
+aG
aa
aa
Uu
@@ -12178,8 +12959,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(55,1,1) = {"
aa
@@ -12199,7 +12978,7 @@ aa
as
as
dW
-YF
+NQ
aV
YF
bj
@@ -12213,7 +12992,7 @@ IB
qc
eQ
xb
-wF
+py
gI
hr
Mh
@@ -12231,6 +13010,8 @@ gZ
kN
kD
mz
+qn
+eT
nk
aG
aa
@@ -12244,8 +13025,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(56,1,1) = {"
aa
@@ -12279,7 +13058,7 @@ do
qc
Vk
dR
-dp
+Qb
gI
Kv
ht
@@ -12297,6 +13076,8 @@ bN
bN
pi
pk
+bN
+bN
ns
aG
UP
@@ -12310,8 +13091,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(57,1,1) = {"
aa
@@ -12340,12 +13119,12 @@ sq
FV
jJ
wG
-dp
+ob
dR
dR
dQ
dR
-wO
+Rb
gI
LA
hu
@@ -12363,6 +13142,8 @@ bN
kO
bN
lr
+bN
+tk
pm
mc
UP
@@ -12376,8 +13157,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(58,1,1) = {"
aa
@@ -12395,7 +13174,7 @@ aa
aa
aa
am
-PD
+Ed
aJ
bi
dc
@@ -12406,10 +13185,10 @@ Oz
FV
jJ
wG
-dp
+Ve
dR
-ep
-eR
+eq
+Za
dR
Sr
Yj
@@ -12429,6 +13208,8 @@ bN
bN
bN
pl
+bN
+bN
mc
mc
UP
@@ -12442,8 +13223,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(59,1,1) = {"
aa
@@ -12461,21 +13240,21 @@ aa
aa
aa
am
-Zb
+Id
aK
bi
dk
bz
bz
bz
-dL
+PL
UV
cp
wG
dq
dR
-eq
-bC
+xQ
+KQ
OU
Sr
gt
@@ -12495,6 +13274,8 @@ Aa
kP
bT
kp
+bN
+BN
xD
mc
UP
@@ -12508,8 +13289,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(60,1,1) = {"
aa
@@ -12527,7 +13306,7 @@ aa
aa
aa
am
-qn
+UR
aL
aI
ei
@@ -12538,10 +13317,10 @@ zr
zy
OT
wG
-dp
+ob
dR
-er
-jX
+ot
+sO
dR
Sr
Ss
@@ -12561,6 +13340,8 @@ kE
bN
pj
bN
+bN
+bN
po
nk
UP
@@ -12574,8 +13355,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(61,1,1) = {"
aa
@@ -12604,12 +13383,12 @@ sq
cq
OT
wG
-dp
+Ve
dR
dR
dQ
dR
-wO
+Rb
pw
Yk
lx
@@ -12627,6 +13406,8 @@ bN
ln
bN
kp
+bN
+UK
pk
Fh
aa
@@ -12640,8 +13421,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(62,1,1) = {"
aa
@@ -12675,7 +13454,7 @@ dr
gE
dO
dR
-dp
+Qb
gY
hx
td
@@ -12693,6 +13472,8 @@ bN
bN
bN
bN
+bN
+bN
ns
aG
aa
@@ -12706,8 +13487,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(63,1,1) = {"
aa
@@ -12727,7 +13506,7 @@ aa
as
as
BY
-hV
+CQ
aX
hV
bn
@@ -12737,7 +13516,7 @@ bR
rU
ey
cQ
-lH
+xG
hI
eS
gF
@@ -12759,6 +13538,8 @@ QQ
jB
pV
jP
+dn
+Wv
aG
aG
aa
@@ -12772,8 +13553,6 @@ aa
aa
aa
aa
-aa
-aa
"}
(64,1,1) = {"
aa
@@ -12826,8 +13605,8 @@ aG
nk
nk
aG
-aa
-aa
+nk
+aG
aa
aa
aa
@@ -12933,7 +13712,7 @@ cg
hi
Mf
KM
-FV
+iY
du
FV
Ka
@@ -12947,8 +13726,8 @@ cq
mh
FV
hj
-FV
-ia
+iY
+Vh
FV
hi
lQ
@@ -13081,7 +13860,7 @@ bd
eJ
cW
ia
-FV
+rJ
hi
aa
aa
@@ -13337,7 +14116,7 @@ eV
fs
fO
fO
-fO
+sm
hB
hX
im
@@ -13395,7 +14174,7 @@ aa
aa
aa
Ar
-ZZ
+Hx
aa
eJ
eJ
@@ -13460,7 +14239,7 @@ aa
aa
ZZ
aa
-HK
+xY
aa
aa
aa
@@ -13526,7 +14305,7 @@ aa
aa
aa
aa
-HK
+KU
aa
aa
aa
@@ -13729,7 +14508,7 @@ sg
bE
bE
zL
-UP
+zL
bE
bE
Cp
@@ -13796,7 +14575,7 @@ bE
Yg
Fo
Hr
-Dd
+or
Gz
Rt
bE
@@ -13855,7 +14634,7 @@ aa
aa
aa
bE
-En
+Tv
RD
cX
Gz
@@ -13873,7 +14652,7 @@ Gr
Gz
lB
jr
-GH
+tc
bE
aa
aa
@@ -14003,7 +14782,7 @@ Hb
oU
yE
dw
-cD
+sn
jr
od
Gz
@@ -14175,26 +14954,26 @@ aa
aa
ad
ad
-ag
+VG
aM
cC
bh
-cz
-cz
-cz
+pd
+wT
+UQ
ad
ad
aa
bE
cD
-Ao
+ur
wx
di
eE
fx
-kw
+Ku
gR
-ca
+ED
Mw
zG
hY
@@ -14240,26 +15019,26 @@ aa
aa
aa
ad
+Ih
af
-ag
aB
ag
ag
ag
cG
cZ
-SQ
+ui
ad
bE
bE
-dG
+Kj
Ao
wx
+Rs
kw
-eF
oG
gG
-nN
+QG
oe
Mw
ca
@@ -14310,7 +15089,7 @@ ad
ad
ad
ad
-bo
+KD
ad
ad
ad
@@ -14318,11 +15097,11 @@ ad
ad
df
bE
-cD
+EZ
ov
wx
ec
-fa
+kw
kq
gM
oH
@@ -14374,16 +15153,16 @@ aa
ad
ag
aH
-ag
+Yc
cH
ag
ag
ag
db
ag
-on
+Dv
df
-dg
+wI
cD
Ao
wx
@@ -14392,10 +15171,10 @@ kw
oI
lF
hS
-zG
+Of
Xv
-ca
SI
+Vq
ip
iF
DJ
@@ -14442,30 +15221,30 @@ ag
ap
aC
dd
-ao
+MW
ge
hL
ld
lZ
-mj
+MG
nL
-nV
+PQ
oo
MS
-Bv
+gj
Eg
jL
mk
-ca
+NF
jL
ca
-ok
+Kt
ca
ea
NZ
ca
mo
-jc
+ue
ST
cD
Iu
@@ -14508,30 +15287,30 @@ ad
ad
ad
ad
-bo
+KD
ad
ad
ad
ad
ad
-df
+yG
Gz
En
Ao
-SV
+vt
SM
yF
mI
nS
nS
nS
-ol
+Uq
Ke
rV
ir
lT
Ke
-jd
+QB
QR
wC
Hl
@@ -14571,13 +15350,13 @@ aa
aa
ad
ah
-ao
+Ww
aD
dB
ag
ai
jC
-aq
+jw
aN
ad
bE
@@ -14585,10 +15364,10 @@ bE
op
Ao
wx
-di
+wU
oD
og
-lF
+nw
iq
eB
wx
@@ -14598,7 +15377,7 @@ Ps
bD
bD
bD
-ST
+Jc
cD
uj
Ii
@@ -14643,20 +15422,20 @@ ai
ai
ai
ag
-de
+OW
ag
ad
aa
bE
oq
-IL
+tm
bD
+Ds
kw
-fu
-hE
+OJ
gP
kw
-oi
+VL
bD
QO
lM
@@ -14717,9 +15496,9 @@ bE
En
Ao
wx
+Gv
kw
-fv
-lF
+gK
gQ
kw
oj
@@ -14786,7 +15565,7 @@ bD
eD
fw
Vy
-kw
+PR
jW
sJ
bD
@@ -14799,7 +15578,7 @@ bD
Yr
cD
uj
-mm
+Uh
KG
uj
kU
@@ -14900,14 +15679,14 @@ aa
aa
aa
ad
-ao
-ag
+MW
+ZV
aC
aN
ag
ai
xP
-ag
+ZV
dB
ad
aa
@@ -14920,7 +15699,7 @@ Jp
rh
OM
OM
-vU
+pg
QR
rg
QR
@@ -14970,7 +15749,7 @@ ad
ad
ad
ad
-bo
+KD
ad
ad
ad
@@ -14979,10 +15758,10 @@ ad
aa
bE
ou
-En
+Tv
jx
Xz
-gD
+FE
nP
oK
sL
@@ -14992,7 +15771,7 @@ nT
Wk
Se
uJ
-nW
+ZU
nY
Yh
od
@@ -15035,10 +15814,10 @@ aa
ad
ar
aE
-lq
-ag
+Gh
+aq
gk
-Ws
+Ks
vX
ad
aa
@@ -15052,7 +15831,7 @@ NG
GX
GX
yr
-xj
+Rc
rp
rp
rp
@@ -15168,7 +15947,7 @@ aa
ad
ad
ad
-bA
+sh
ad
ad
ad
@@ -15179,7 +15958,7 @@ Vb
yj
Fi
YO
-wK
+PE
Jq
UG
GX
@@ -15245,14 +16024,14 @@ bE
bE
bE
GX
-DW
+Fn
rl
FW
GX
NG
-GM
+zj
md
-xM
+YV
Go
Yl
rC
@@ -15311,7 +16090,7 @@ aa
aa
aa
vA
-rN
+Xx
Pg
zI
PA
@@ -15377,17 +16156,17 @@ aa
aa
aa
vA
-PZ
-Ob
-Ob
-EH
-Ob
-HN
-HJ
-NA
-Ob
-Ob
-Ay
+Jj
+MC
+MC
+MC
+MC
+Qj
+Im
+Qj
+MC
+MC
+Fa
vA
aa
aa
@@ -15442,19 +16221,19 @@ aa
aa
aa
aa
-vJ
-ON
-ON
-NG
-GX
-NG
-ON
-GX
-GX
-NG
-ON
-ON
-WM
+vA
+Zx
+KZ
+LD
+EH
+Ob
+HN
+HJ
+NA
+LD
+Ob
+Ay
+vA
aa
aa
aa
@@ -15508,19 +16287,19 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
-aa
+vJ
+ON
+ON
+NG
+GX
+NG
+ON
+GX
+GX
+NG
+ON
+ON
+WM
aa
aa
aa
diff --git a/_maps/map_files/Blueshift/Blueshift.dmm b/_maps/map_files/Blueshift/Blueshift.dmm
index 83bcd0cfc87b..7bf298831d3e 100644
--- a/_maps/map_files/Blueshift/Blueshift.dmm
+++ b/_maps/map_files/Blueshift/Blueshift.dmm
@@ -607,12 +607,6 @@
/obj/effect/spawner/liquids_spawner,
/turf/open/floor/lowered/iron/pool/cobble/side,
/area/station/common/pool)
-"agJ" = (
-/obj/effect/turf_decal/stripes{
- dir = 9
- },
-/turf/open/floor/plating,
-/area/station/maintenance/port/upper)
"agL" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -7428,9 +7422,8 @@
/turf/open/floor/iron/dark,
/area/station/security/prison/upper)
"bwW" = (
-/obj/structure/flora/bush/jungle/b/style_2,
-/obj/structure/flora/bush/flowers_pp,
/obj/structure/window/reinforced/fulltile,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/grass,
/area/station/hallway/primary/upper)
"bwY" = (
@@ -14713,13 +14706,6 @@
/obj/structure/sign/poster/random/directional/north,
/turf/open/floor/plating,
/area/station/hallway/secondary/construction)
-"cMo" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/structure/flora/rock/pile/jungle/style_4,
-/turf/open/misc/asteroid,
-/area/station/hallway/primary/upper)
"cMq" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -15093,10 +15079,8 @@
/turf/open/floor/wood,
/area/station/commons/dorms/room5)
"cQg" = (
-/obj/effect/turf_decal/stripes{
- dir = 6
- },
-/turf/open/floor/plating,
+/obj/machinery/light/floor/has_bulb,
+/turf/open/floor/carpet/blue,
/area/station/maintenance/port/upper)
"cQn" = (
/obj/effect/turf_decal/trimline/purple/filled/line{
@@ -19591,12 +19575,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/closed/wall,
/area/station/medical/power_station)
-"dKI" = (
-/obj/structure/flora/bush/jungle/b/style_2,
-/obj/structure/flora/bush/flowers_pp/style_3,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"dKK" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
@@ -23502,10 +23480,7 @@
/turf/open/floor/mineral/plastitanium/red,
/area/station/science/robotics/lab)
"ezM" = (
-/obj/effect/turf_decal/stripes{
- dir = 10
- },
-/turf/open/floor/plating,
+/turf/open/floor/carpet/blue,
/area/station/maintenance/port/upper)
"ezN" = (
/obj/effect/turf_decal/trimline/yellow/filled/line{
@@ -25824,13 +25799,6 @@
/obj/effect/mapping_helpers/airlock/access/all/science/rd,
/turf/open/floor/iron/dark,
/area/station/science/server)
-"eUH" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/structure/flora/ocean/glowweed,
-/turf/open/misc/asteroid,
-/area/station/hallway/primary/upper)
"eUL" = (
/obj/structure/chair/pew/left{
dir = 4
@@ -34090,8 +34058,6 @@
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
"gBx" = (
-/obj/structure/flora/bush/jungle,
-/obj/structure/flora/bush/flowers_yw/style_3,
/obj/structure/window/reinforced/fulltile,
/turf/open/floor/grass,
/area/station/hallway/primary/upper)
@@ -36395,6 +36361,7 @@
},
/obj/machinery/status_display/ai/directional/east,
/obj/machinery/light/directional/east,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/hallway/primary/upper)
"hbb" = (
@@ -38491,12 +38458,6 @@
/obj/structure/window/spawner/directional/south,
/turf/open/floor/plating,
/area/station/maintenance/department/security/greater)
-"hwe" = (
-/obj/structure/flora/bush/jungle/a/style_2,
-/obj/structure/flora/bush/flowers_yw/style_2,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"hwi" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -45004,10 +44965,6 @@
/obj/effect/turf_decal/tile/bar/opposingcorners,
/turf/open/floor/iron,
/area/station/service/bar)
-"iKG" = (
-/obj/item/circuitboard/mecha/ripley/main,
-/turf/open/floor/plating,
-/area/station/maintenance/port/upper)
"iKI" = (
/obj/structure/railing{
dir = 6
@@ -45178,12 +45135,6 @@
"iMc" = (
/turf/closed/wall/r_wall,
/area/station/common/pool)
-"iMf" = (
-/obj/structure/flora/bush/jungle/c/style_3,
-/obj/structure/flora/bush/flowers_br,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"iMj" = (
/obj/structure/closet,
/obj/effect/turf_decal/delivery,
@@ -46072,12 +46023,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/carpet/blue,
/area/station/command/captain_dining)
-"iWF" = (
-/obj/structure/flora/bush/jungle/c/style_3,
-/obj/structure/flora/bush/flowers_yw/style_3,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"iWJ" = (
/obj/structure/bed,
/obj/item/bedsheet/medical,
@@ -50012,12 +49957,6 @@
/obj/effect/landmark/start/assistant,
/turf/open/floor/iron/dark,
/area/station/common/gaskiosk)
-"jJh" = (
-/obj/structure/flora/bush/jungle/c/style_3,
-/obj/structure/flora/bush/flowers_pp/style_3,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"jJi" = (
/obj/structure/railing,
/obj/effect/turf_decal/stripes,
@@ -53306,12 +53245,6 @@
},
/turf/open/floor/iron/dark,
/area/station/security/prison/workout)
-"knr" = (
-/obj/structure/flora/bush/jungle/a,
-/obj/structure/flora/bush/flowers_br/style_3,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"knt" = (
/obj/structure/chair/pew/right{
dir = 8
@@ -55174,12 +55107,6 @@
dir = 8
},
/area/station/science)
-"kER" = (
-/obj/structure/flora/bush/jungle/a/style_3,
-/obj/structure/flora/bush/flowers_br/style_2,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"kFd" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/mining{
@@ -65819,11 +65746,11 @@
},
/area/station/common/wrestling/arena)
"mMJ" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
+/obj/structure/flora/bush/jungle/a/style_2,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
+ dir = 1
},
-/obj/structure/flora/rock/pile/jungle/style_5,
-/turf/open/misc/asteroid,
+/turf/open/floor/grass,
/area/station/hallway/primary/upper)
"mMK" = (
/obj/machinery/shieldgen,
@@ -66112,13 +66039,6 @@
},
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
-"mPK" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/item/toy/seashell,
-/turf/open/misc/asteroid,
-/area/station/hallway/primary/upper)
"mPL" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/stairs{
@@ -66669,12 +66589,6 @@
},
/turf/open/floor/engine/hull/reinforced,
/area/space/nearstation)
-"mVh" = (
-/obj/structure/flora/bush/jungle/b,
-/obj/structure/flora/bush/flowers_yw,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"mVi" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 4
@@ -73923,12 +73837,8 @@
/turf/open/floor/iron,
/area/station/science/ordnance/testlab)
"oqO" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/structure/flora/ocean/seaweed,
-/mob/living/basic/carp/passive,
-/turf/open/misc/asteroid,
+/obj/structure/flora/bush/sparsegrass/style_random,
+/turf/open/floor/grass,
/area/station/hallway/primary/upper)
"oqT" = (
/obj/machinery/door/airlock/security/glass{
@@ -78081,11 +77991,7 @@
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/ce)
"pgY" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/machinery/light/directional/north,
-/turf/open/misc/asteroid,
+/turf/open/floor/grass,
/area/station/hallway/primary/upper)
"phg" = (
/obj/structure/closet/emcloset,
@@ -78223,9 +78129,8 @@
/turf/open/floor/iron,
/area/station/common/wrestling/arena)
"pit" = (
-/obj/structure/flora/bush/jungle/c,
-/obj/structure/flora/bush/flowers_pp/style_2,
/obj/structure/window/reinforced/fulltile,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/grass,
/area/station/hallway/primary/upper)
"piw" = (
@@ -80260,12 +80165,6 @@
/mob/living/basic/slime,
/turf/open/floor/engine,
/area/station/science/xenobiology)
-"pCO" = (
-/obj/effect/turf_decal/stripes{
- dir = 1
- },
-/turf/open/floor/plating,
-/area/station/maintenance/port/upper)
"pCQ" = (
/obj/effect/turf_decal/delivery,
/obj/structure/tank_dispenser,
@@ -80509,8 +80408,8 @@
/turf/open/floor/iron,
/area/station/tcommsat/computer)
"pFO" = (
-/obj/effect/turf_decal/stripes,
-/turf/open/floor/plating,
+/mob/living/basic/carp/passive,
+/turf/open/floor/carpet/blue,
/area/station/maintenance/port/upper)
"pFS" = (
/obj/item/radio/intercom/directional/north,
@@ -81329,12 +81228,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/station/maintenance/department/crew_quarters/dorms)
-"pNa" = (
-/obj/effect/turf_decal/stripes{
- dir = 5
- },
-/turf/open/floor/plating,
-/area/station/maintenance/port/upper)
"pNb" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -83272,12 +83165,6 @@
},
/turf/open/floor/engine/hull,
/area/space/nearstation)
-"qiS" = (
-/obj/effect/turf_decal/stripes{
- dir = 4
- },
-/turf/open/floor/plating,
-/area/station/maintenance/port/upper)
"qjb" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/structure/window/reinforced/spawner/directional/west,
@@ -85443,12 +85330,6 @@
},
/turf/open/floor/iron/white,
/area/station/medical/medbay/central)
-"qDe" = (
-/obj/structure/flora/bush/jungle/a/style_2,
-/obj/structure/flora/bush/flowers_yw/style_3,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"qDf" = (
/obj/effect/turf_decal/siding/thinplating/dark{
dir = 1
@@ -88798,12 +88679,8 @@
/turf/open/floor/iron,
/area/station/maintenance/department/medical/central)
"rko" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/structure/flora/rock/pile/jungle,
-/obj/item/toy/seashell,
-/turf/open/misc/asteroid,
+/obj/structure/flora/bush/flowers_br,
+/turf/open/floor/grass,
/area/station/hallway/primary/upper)
"rkp" = (
/obj/structure/cable,
@@ -93522,9 +93399,10 @@
/turf/open/floor/plating,
/area/station/security/checkpoint/customs/auxiliary)
"sgt" = (
-/obj/structure/flora/bush/jungle/b,
-/obj/structure/flora/bush/flowers_br,
-/obj/structure/window/reinforced/fulltile,
+/obj/structure/flora/bush/sparsegrass/style_random,
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
+ dir = 1
+ },
/turf/open/floor/grass,
/area/station/hallway/primary/upper)
"sgv" = (
@@ -99120,14 +98998,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/command/captain_dining)
-"tiA" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/structure/flora/ocean/glowweed,
-/mob/living/basic/carp/passive,
-/turf/open/misc/asteroid,
-/area/station/hallway/primary/upper)
"tiD" = (
/obj/machinery/computer/prisoner/management{
dir = 8
@@ -104102,6 +103972,7 @@
},
/obj/machinery/status_display/evac/directional/west,
/obj/machinery/light/directional/west,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/station/hallway/primary/upper)
"ugJ" = (
@@ -114435,12 +114306,6 @@
},
/turf/open/floor/iron,
/area/station/maintenance/starboard/fore)
-"wdN" = (
-/obj/structure/flora/bush/jungle/b/style_2,
-/obj/structure/flora/bush/flowers_br/style_3,
-/obj/structure/window/reinforced/fulltile,
-/turf/open/floor/grass,
-/area/station/hallway/primary/upper)
"wdS" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -114664,11 +114529,8 @@
/turf/open/floor/plating,
/area/station/maintenance/fore/upper)
"wfr" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/structure/flora/ocean/longseaweed,
-/turf/open/misc/asteroid,
+/mob/living/carbon/human/species/monkey,
+/turf/open/floor/grass,
/area/station/hallway/primary/upper)
"wfs" = (
/obj/structure/rack/shelf,
@@ -121311,10 +121173,8 @@
/turf/open/floor/iron/smooth_large,
/area/station/cargo/storage)
"xtV" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/turf/open/misc/asteroid,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/turf/closed/wall/r_wall,
/area/station/hallway/primary/upper)
"xtX" = (
/obj/machinery/door/airlock/external,
@@ -122979,15 +122839,6 @@
dir = 1
},
/area/station/science/research)
-"xLg" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/structure/flora/rock/pile/jungle/style_3,
-/obj/structure/flora/ocean/coral,
-/obj/machinery/light/directional/south,
-/turf/open/misc/asteroid,
-/area/station/hallway/primary/upper)
"xLh" = (
/obj/structure/table/wood/fancy/green,
/obj/item/flashlight/lamp/green{
@@ -123873,11 +123724,8 @@
/turf/open/floor/grass,
/area/station/hallway/primary/central/aft)
"xVz" = (
-/obj/effect/spawner/liquids_spawner{
- reagent_list = list(/datum/reagent/water=600)
- },
-/obj/structure/flora/rock/style_3,
-/turf/open/misc/asteroid,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/turf/closed/wall/r_wall,
/area/station/hallway/primary/upper)
"xVF" = (
/obj/effect/turf_decal/tile/neutral{
@@ -217271,11 +217119,11 @@ ulI
ulI
ulI
wMx
-agJ
-bgP
-bgP
+pFO
ezM
-wMx
+ezM
+ezM
+xsa
ulI
pyO
pyO
@@ -217528,11 +217376,11 @@ ybT
fEG
bVe
wMx
-pCO
-ybT
-ybT
+ezM
+ezM
+ezM
pFO
-wMx
+xsa
oIL
pyO
vzG
@@ -217785,11 +217633,11 @@ wmI
wMx
aNm
aNm
-pCO
-ybT
-iKG
-pFO
-aNm
+ezM
+ezM
+ezM
+ezM
+xsa
nUr
vQK
qNG
@@ -218042,11 +217890,11 @@ ybT
sZG
cmY
aNm
-pNa
-qiS
-qiS
+ezM
+pFO
+ezM
cQg
-aNm
+xsa
ulI
kNf
pcs
@@ -218299,10 +218147,10 @@ aNm
flY
wMx
aNm
-aNm
-aNm
-wMx
-aNm
+xsa
+xsa
+xsa
+xsa
aNm
ulI
fDI
@@ -221982,9 +221830,9 @@ pQF
tYT
tYT
tYT
-mzu
-mVh
-iMf
+xVz
+gBx
+gBx
gBx
ukH
qJk
@@ -222240,9 +222088,9 @@ cfl
cfl
cfl
bwW
-wfr
-cMo
-tiA
+sgt
+pgY
+oqO
mzu
coT
gST
@@ -222496,11 +222344,11 @@ eRh
cfl
eLB
cfl
-kER
+gBx
rko
wfr
-xtV
-jJh
+pgY
+gBx
cfl
cfl
gyk
@@ -222753,11 +222601,11 @@ eRh
mkE
wMo
wMo
-hwe
+gBx
pgY
-xVz
-xLg
-sgt
+pgY
+oqO
+gBx
cfl
cfl
lcX
@@ -223010,11 +222858,11 @@ eRh
cfl
uGh
cfl
-wdN
+gBx
oqO
-mPK
-xtV
-qDe
+wfr
+pgY
+gBx
cfl
cfl
gyk
@@ -223269,8 +223117,8 @@ cfl
cfl
pit
mMJ
-xtV
-eUH
+pgY
+rko
mzu
ugc
uol
@@ -223524,10 +223372,10 @@ pQF
akt
akt
akt
-mzu
-iWF
-knr
-dKI
+xtV
+gBx
+gBx
+gBx
ukH
wiK
wiK
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 25569a0663fb..580dbe6c6205 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -374,15 +374,20 @@
/turf/open/floor/iron,
/area/station/hallway/secondary/exit/departure_lounge)
"ahr" = (
-/obj/structure/disposalpipe/junction/flip{
- dir = 4
- },
/obj/effect/turf_decal/tile/neutral/fourcorners,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/door/airlock/maintenance,
+/obj/effect/mapping_helpers/airlock/access/any/service/maintenance,
+/obj/effect/mapping_helpers/airlock/unres{
+ dir = 8
+ },
/turf/open/floor/iron/dark,
-/area/station/hallway/primary/central)
+/area/station/maintenance/port)
"ahD" = (
/obj/structure/displaycase/trophy,
/turf/open/floor/wood,
@@ -2857,8 +2862,11 @@
pixel_y = 7;
pixel_x = -8
},
+/obj/machinery/cassette/adv_cassette_deck{
+ pixel_y = 8
+ },
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"aWl" = (
/obj/effect/spawner/random/structure/grille,
/turf/open/floor/plating/airless,
@@ -9014,6 +9022,13 @@
},
/turf/open/floor/iron/white,
/area/station/science/robotics/lab)
+"dph" = (
+/obj/structure/cable,
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
+/turf/open/floor/iron,
+/area/station/hallway/primary/central)
"dpn" = (
/obj/effect/spawner/random/food_or_drink/donkpockets,
/obj/structure/table/glass,
@@ -10722,11 +10737,12 @@
/turf/open/floor/iron/white,
/area/station/medical/chemistry)
"dVR" = (
-/obj/machinery/light/small/directional/north,
/obj/machinery/computer/security/telescreen/entertainment/directional/east,
/obj/machinery/vending/wardrobe/curator_wardrobe,
+/obj/machinery/light/small/directional/east,
+/obj/effect/decal/cleanable/cobweb/cobweb2,
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"dWd" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -15737,7 +15753,7 @@
"fKG" = (
/obj/effect/landmark/blobstart,
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"fKP" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -18170,8 +18186,11 @@
/turf/open/floor/wood,
/area/station/smithing)
"gDv" = (
-/obj/item/kirbyplants,
/obj/effect/turf_decal/tile/blue/fourcorners,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/obj/machinery/disposal/bin,
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"gDT" = (
@@ -19525,7 +19544,7 @@
pixel_y = 8
},
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"haE" = (
/obj/structure/mirror/directional/east,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -20548,6 +20567,10 @@
/obj/machinery/telecomms/bus/preset_four,
/turf/open/floor/circuit/telecomms/mainframe,
/area/station/tcommsat/server)
+"hqF" = (
+/obj/machinery/newscaster/directional/east,
+/turf/open/floor/iron/vaporwave,
+/area/station/service/library/private)
"hqL" = (
/obj/machinery/light_switch/directional/east,
/obj/machinery/shower/directional/west{
@@ -23169,7 +23192,7 @@
pixel_x = -4
},
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"ilx" = (
/obj/structure/closet/emcloset,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -26023,13 +26046,12 @@
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"jfa" = (
-/obj/effect/decal/cleanable/cobweb,
/obj/structure/table/wood,
/obj/machinery/cassette/dj_station{
pixel_y = 12
},
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"jff" = (
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
@@ -29181,9 +29203,6 @@
/turf/open/floor/plating,
/area/station/hallway/primary/central)
"kir" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/disposalpipe/segment{
@@ -29490,11 +29509,10 @@
/turf/open/floor/plating,
/area/station/maintenance/port/aft)
"knK" = (
-/obj/structure/table/wood,
-/obj/machinery/cassette/adv_cassette_deck,
+/obj/structure/filingcabinet,
/obj/machinery/light/small/directional/south,
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"knP" = (
/obj/machinery/light/directional/west,
/obj/machinery/computer/camera_advanced/base_construction/aux{
@@ -32451,6 +32469,10 @@
/obj/structure/cable/layer3,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/command/storage/satellite)
+"loa" = (
+/obj/machinery/light/floor/has_bulb,
+/turf/open/floor/iron/vaporwave,
+/area/station/service/library/private)
"lof" = (
/obj/structure/window/reinforced/spawner/directional/north{
pixel_y = 1
@@ -32685,7 +32707,7 @@
},
/obj/item/storage/photo_album/library,
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"lrZ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
@@ -34658,10 +34680,9 @@
"maB" = (
/obj/structure/destructible/cult/item_dispenser/archives/library,
/obj/item/clothing/under/suit/red,
-/obj/effect/decal/cleanable/cobweb,
-/obj/item/book/codex_gigas,
+/obj/item/book/kindred,
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"maF" = (
/obj/structure/closet/secure_closet/nanotrasen_representative,
/turf/open/floor/carpet/green,
@@ -34770,7 +34791,7 @@
/area/station/security/prison/visit)
"mda" = (
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"mdo" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -47717,6 +47738,9 @@
"qzS" = (
/obj/structure/table/wood,
/obj/machinery/newscaster/directional/west,
+/obj/machinery/cassette/adv_cassette_deck{
+ pixel_y = 8
+ },
/turf/open/floor/wood,
/area/station/service/library)
"qAc" = (
@@ -48625,6 +48649,9 @@
/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/obj/structure/disposalpipe/segment,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"qQu" = (
@@ -49216,20 +49243,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron/white,
/area/station/medical/medbay/central)
-"qZn" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/door/airlock/maintenance,
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/effect/mapping_helpers/airlock/unres{
- dir = 8
- },
-/obj/effect/mapping_helpers/airlock/access/any/service/maintenance,
-/turf/open/floor/plating,
-/area/station/maintenance/port)
"qZD" = (
/obj/effect/turf_decal/trimline/blue/filled/corner{
dir = 8
@@ -50281,10 +50294,6 @@
},
/turf/open/floor/iron/dark,
/area/station/command/bridge)
-"rur" = (
-/obj/machinery/newscaster/directional/west,
-/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
"rut" = (
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=14.2-Central-CrewQuarters";
@@ -51141,8 +51150,30 @@
/turf/open/floor/iron,
/area/station/engineering/atmos)
"rIa" = (
-/obj/machinery/photocopier{
- pixel_y = 3
+/obj/structure/table/wood,
+/obj/item/device/walkman{
+ pixel_y = 4;
+ pixel_x = -6
+ },
+/obj/item/device/walkman{
+ pixel_y = 4;
+ pixel_x = -6
+ },
+/obj/item/device/walkman{
+ pixel_y = 4;
+ pixel_x = -6
+ },
+/obj/item/device/cassette_tape/blank{
+ pixel_y = 3;
+ pixel_x = 5
+ },
+/obj/item/device/cassette_tape/blank{
+ pixel_y = 3;
+ pixel_x = 5
+ },
+/obj/item/device/cassette_tape/blank{
+ pixel_y = 3;
+ pixel_x = 5
},
/turf/open/floor/wood,
/area/station/service/library)
@@ -52624,7 +52655,7 @@
},
/obj/item/storage/fancy/candle_box,
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"sgc" = (
/obj/structure/table/reinforced,
/obj/item/paper_bin{
@@ -55305,6 +55336,9 @@
},
/turf/open/floor/iron,
/area/station/engineering/atmos)
+"tdI" = (
+/turf/closed/wall,
+/area/station/service/library/private)
"tdP" = (
/obj/effect/turf_decal/bot_white/left,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -56464,15 +56498,6 @@
},
/turf/open/floor/iron,
/area/station/commons/locker)
-"txz" = (
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/iron,
-/area/station/hallway/primary/central)
"txG" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{
dir = 5
@@ -56583,6 +56608,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"tAH" = (
@@ -59966,7 +59992,7 @@
name = "Forbidden Knowledge"
},
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
"uJs" = (
/obj/structure/table/wood,
/obj/item/storage/fancy/cigarettes,
@@ -67389,7 +67415,7 @@
req_access = list("library")
},
/turf/open/floor/engine/cult,
-/area/station/service/library)
+/area/station/service/library/private)
"xrf" = (
/obj/effect/turf_decal/tile/neutral{
dir = 4
@@ -67680,11 +67706,6 @@
},
/turf/open/floor/iron,
/area/station/hallway/primary/port)
-"xxk" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/iron/dark,
-/area/station/hallway/primary/central)
"xxp" = (
/obj/machinery/airalarm/directional/west,
/obj/effect/mapping_helpers/burnt_floor,
@@ -69937,8 +69958,9 @@
/obj/structure/chair/comfy/brown{
dir = 1
},
+/obj/effect/landmark/start/librarian,
/turf/open/floor/iron/vaporwave,
-/area/station/service/library)
+/area/station/service/library/private)
(1,1,1) = {"
aaa
@@ -90379,12 +90401,12 @@ nPu
mjr
nxz
ueD
-sVY
-sVY
-sVY
-sVY
-sVY
-pOa
+tdI
+tdI
+tdI
+tdI
+tdI
+tdI
hdx
cIW
pOa
@@ -90636,14 +90658,14 @@ tmB
wcL
yfT
klf
-sVY
+tdI
jfa
mda
-rur
+mda
knK
-pOa
+tdI
kir
-vXH
+clp
pOa
wKe
aez
@@ -90893,12 +90915,12 @@ inH
flQ
mjr
fUM
-sVY
+tdI
ils
ymh
+mda
aWj
-sVY
-pOa
+tdI
sQY
nPt
qSk
@@ -91150,12 +91172,12 @@ tot
bsu
mjr
wih
-sVY
+tdI
maB
+loa
mda
haA
-sVY
-vXH
+tdI
sQY
tWq
pOa
@@ -91410,9 +91432,9 @@ qRf
xrd
fKG
mda
+mda
lrL
-sVY
-clp
+tdI
etn
ayH
pOa
@@ -91664,13 +91686,13 @@ sVY
sVY
sVY
sVY
-sVY
+tdI
dVR
sfO
+hqF
uJm
-sVY
-pOa
-qZn
+tdI
+sQY
pOa
pOa
bMY
@@ -91921,12 +91943,12 @@ sVY
jPo
apB
ooP
-sVY
-sVY
-sVY
-sVY
-sVY
-xxk
+tdI
+tdI
+tdI
+tdI
+tdI
+tdI
ahr
bMY
sTe
@@ -92183,7 +92205,7 @@ usA
jWg
tKu
bBA
-txz
+xuS
wYe
bMY
kua
@@ -92697,7 +92719,7 @@ wcN
uyr
fDk
vVV
-htd
+dph
tAG
gDv
oNP
diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm
index 363d3383b24f..6b504af71e97 100644
--- a/_maps/map_files/debug/runtimestation.dmm
+++ b/_maps/map_files/debug/runtimestation.dmm
@@ -345,7 +345,7 @@
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"bF" = (
-/obj/machinery/computer/rdconsole,
+/obj/machinery/computer/rdconsole/unlocked,
/turf/open/floor/iron,
/area/station/science)
"bH" = (
diff --git a/_maps/map_files/debug/shiptest.dmm b/_maps/map_files/debug/shiptest.dmm
index 48f19b748324..c68625a35fb7 100644
--- a/_maps/map_files/debug/shiptest.dmm
+++ b/_maps/map_files/debug/shiptest.dmm
@@ -365,7 +365,7 @@
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"bF" = (
-/obj/machinery/computer/rdconsole,
+/obj/machinery/computer/rdconsole/unlocked,
/turf/open/floor/iron,
/area/station/science)
"bG" = (
diff --git a/code/__DEFINES/mobfactions.dm b/code/__DEFINES/mobfactions.dm
index 9805d40645e4..097a7214e891 100644
--- a/code/__DEFINES/mobfactions.dm
+++ b/code/__DEFINES/mobfactions.dm
@@ -21,6 +21,8 @@
#define FACTION_CLOWN "clowns"
/// Headslugs
#define FACTION_CREATURE "creature"
+/// Cats
+#define FACTION_CAT "cat"
/// Faithless and shadowpeople
#define FACTION_FAITHLESS "faithless"
/// Gnomes
diff --git a/code/__DEFINES/projectiles.dm b/code/__DEFINES/projectiles.dm
index 63aa502c20c9..f455985e6853 100644
--- a/code/__DEFINES/projectiles.dm
+++ b/code/__DEFINES/projectiles.dm
@@ -52,6 +52,12 @@
#define CALIBER_ARROW "arrow"
/// The caliber used by the harpoon gun.
#define CALIBER_HARPOON "harpoon"
+/// The caliber used by the rebar crossbow.
+#define CALIBER_REBAR "sharpened rod"
+/// The caliber used by the rebar crossbow when forced to hold 2 rods.
+#define CALIBER_REBAR_FORCED "sharpened rod"
+/// The caliber used by the syndicate rebar crossbow.
+#define CALIBER_REBAR_SYNDIE "sharpened rod"
/// The caliber used by the meat hook.
#define CALIBER_HOOK "hook"
/// The caliber used by the changeling tentacle mutation.
diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm
index 1ca02fa93e6d..a0e25692f4e8 100644
--- a/code/__DEFINES/radio.dm
+++ b/code/__DEFINES/radio.dm
@@ -57,6 +57,9 @@
#define RADIO_CHANNEL_CTF_GREEN "Green Team"
#define RADIO_CHANNEL_CTF_YELLOW "Yellow Team"
+#define RADIO_CHANNEL_UNCOMMON "Uncommon"
+#define RADIO_KEY_UNCOMMON "f"
+#define RADIO_TOKEN_UNCOMMON ":f"
#define MIN_FREE_FREQ 1201 // -------------------------------------------------
// Frequencies are always odd numbers and range from 1201 to 1599.
@@ -76,6 +79,7 @@
#define FREQ_ENGINEERING 1357 // Engineering comms frequency, orange
#define FREQ_SECURITY 1359 // Security comms frequency, red
#define FREQ_RADIO 1361 //monkestation edit
+#define FREQ_UNCOMMON 1363 //monkestation addition, Light gray
#define FREQ_HOLOGRID_SOLUTION 1433
#define FREQ_STATUS_DISPLAYS 1435
diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm
index f8320c44c380..fd2395e21aff 100644
--- a/code/__DEFINES/span.dm
+++ b/code/__DEFINES/span.dm
@@ -126,6 +126,7 @@
#define span_tinynotice(str) ("" + str + "")
#define span_tinynoticeital(str) ("" + str + "")
#define span_unconscious(str) ("" + str + "")
+#define span_uncommonradio(str) ("" + str + "")
#define span_userdanger(str) ("" + str + "")
#define span_warning(str) ("" + str + "")
#define span_yell(str) ("" + str + "")
diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm
index db1506f1be9b..227c01a69162 100644
--- a/code/__DEFINES/traits/declarations.dm
+++ b/code/__DEFINES/traits/declarations.dm
@@ -437,7 +437,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// Blowing kisses actually does damage to the victim
#define TRAIT_KISS_OF_DEATH "kiss_of_death"
/// Syndie kisses can apply burn damage
-/* #define TRAIT_SYNDIE_KISS "syndie_kiss" */
+#define TRAIT_SYNDIE_KISS "syndie_kiss"
/// Used to activate french kissing
#define TRAIT_GARLIC_BREATH "kiss_of_garlic_death"
/// Addictions don't tick down, basically they're permanently addicted
diff --git a/code/__DEFINES/~monkestation/atom_hud.dm b/code/__DEFINES/~monkestation/atom_hud.dm
index 8014d3e4d567..002e44dc5593 100644
--- a/code/__DEFINES/~monkestation/atom_hud.dm
+++ b/code/__DEFINES/~monkestation/atom_hud.dm
@@ -2,6 +2,14 @@
#define SECHUD_BLUESHIELD "hudblueshield"
#define SECHUD_BARBER "hudbarber"
#define SECHUD_EXPLORER "hudexplorer"
+#define SECHUD_CHIEF_MEDICAL_OFFICER_AWAY "hudchiefmedicalofficer_away"
+#define SECHUD_CHEF_AWAY "hudchef_away"
+#define SECHUD_EXPLORER_AWAY "hudexplorer_away"
+#define SECHUD_SCIENTIST_AWAY "hudscientist_away"
+#define SECHUD_SECURITY_OFFICER_AWAY "hudsecurityofficer_away"
+#define SECHUD_STATION_ENGINEER_AWAY "hudstationengineer_away"
+#define SECHUD_APC_AWAY "hudapc_away"
+#define SECHUD_ROBOTICIST_AWAY "hudroboticist_away"
#define SECHUD_SIGNAL_TECHINICAN "hudsignaltech"
#define SECHUD_CONTRACTOR "hudsyndicatecontractor"
#define SECHUD_SYNDIECLOWN "hudsyndicateclown"
diff --git a/code/__HELPERS/~monkestation-helpers/roundend.dm b/code/__HELPERS/~monkestation-helpers/roundend.dm
index f3c34f4615b9..082c3aaeca38 100644
--- a/code/__HELPERS/~monkestation-helpers/roundend.dm
+++ b/code/__HELPERS/~monkestation-helpers/roundend.dm
@@ -4,28 +4,35 @@
/datum/controller/subsystem/ticker/proc/distribute_rewards()
var/hour = round((world.time - SSticker.round_start_time) / 36000)
var/minute = round(((world.time - SSticker.round_start_time) - (hour * 36000)) / 600)
- var/added_xp = round(25 + (minute**0.85))
+ var/added_xp = round(25 + (minute ** 0.85))
for(var/client/client as anything in GLOB.clients)
- if(!istype(client) || QDELING(client))
- continue
- if(!QDELETED(client?.prefs))
- client?.prefs?.adjust_metacoins(client?.ckey, 75, "Played a Round")
- client?.prefs?.adjust_metacoins(client?.ckey, client?.reward_this_person, "Special Bonus")
- // WHYYYYYY
- if(QDELETED(client))
- continue
- if(client?.mob?.mind?.assigned_role)
- add_jobxp(client, added_xp, client?.mob?.mind?.assigned_role?.title)
+ distribute_rewards_to_client(client, added_xp)
+
+/datum/controller/subsystem/ticker/proc/distribute_rewards_to_client(client/client, added_xp)
+ if(!istype(client) || QDELING(client))
+ return
+ var/datum/player_details/details = get_player_details(client)
+ if(!QDELETED(client?.prefs))
+ client?.prefs?.adjust_metacoins(client?.ckey, 75, "Played a Round")
+ var/bonus = details?.roundend_monkecoin_bonus
+ if(bonus)
+ client?.prefs?.adjust_metacoins(client?.ckey, bonus, "Special Bonus")
+ // WHYYYYYY
if(QDELETED(client))
- continue
- if(length(client?.applied_challenges))
- var/mob/living/client_mob = client?.mob
- if(!istype(client_mob) || QDELING(client_mob) || client_mob?.stat == DEAD)
+ return
+ if(client?.mob?.mind?.assigned_role)
+ add_jobxp(client, added_xp, client?.mob?.mind?.assigned_role?.title)
+ if(QDELETED(client))
+ return
+ var/list/applied_challenges = details?.applied_challenges
+ if(LAZYLEN(applied_challenges))
+ var/mob/living/client_mob = client?.mob
+ if(!istype(client_mob) || QDELING(client_mob) || client_mob?.stat == DEAD)
+ return
+ var/total_payout = 0
+ for(var/datum/challenge/listed_challenge as anything in applied_challenges)
+ if(listed_challenge.failed)
continue
- var/total_payout = 0
- for(var/datum/challenge/listed_challenge as anything in client?.applied_challenges)
- if(listed_challenge.failed)
- continue
- total_payout += listed_challenge.challenge_payout
- if(total_payout)
- client?.prefs?.adjust_metacoins(client?.ckey, total_payout, "Challenge rewards.")
+ total_payout += listed_challenge.challenge_payout
+ if(total_payout)
+ client?.prefs?.adjust_metacoins(client?.ckey, total_payout, "Challenge rewards.")
diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm
index 42ce3dbd17bb..7734282dd4d7 100644
--- a/code/_globalvars/traits/_traits.dm
+++ b/code/_globalvars/traits/_traits.dm
@@ -291,6 +291,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_JAILBIRD" = TRAIT_JAILBIRD,
"TRAIT_JOLLY" = TRAIT_JOLLY,
"TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH,
+ "TRAIT_SYNDIE_KISS" = TRAIT_SYNDIE_KISS,
"TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT,
"TRAIT_KNOW_ENGI_WIRES" = TRAIT_KNOW_ENGI_WIRES,
"TRAIT_KNOW_ROBO_WIRES" = TRAIT_KNOW_ROBO_WIRES,
diff --git a/code/_onclick/hud/new_player.dm b/code/_onclick/hud/new_player.dm
index 758886a8b788..d5bee6641c3d 100644
--- a/code/_onclick/hud/new_player.dm
+++ b/code/_onclick/hud/new_player.dm
@@ -300,11 +300,10 @@
/atom/movable/screen/lobby/button/intents/Click(location, control, params)
. = ..()
- if(!hud.mymob.client.challenge_menu)
- var/datum/challenge_selector/new_tgui = new(hud.mymob)
- new_tgui.ui_interact(hud.mymob)
- else
- hud.mymob.client.challenge_menu.ui_interact(hud.mymob)
+ var/datum/player_details/details = get_player_details(hud.mymob)
+ details.challenge_menu ||= new(details)
+ details.challenge_menu.ui_interact(hud.mymob)
+
/atom/movable/screen/lobby/button/discord
icon = 'icons/hud/lobby/bottom_buttons.dmi'
icon_state = "discord"
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 8d46ec714c30..5c12b36295ad 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -523,27 +523,33 @@ SUBSYSTEM_DEF(ticker)
return output
+/datum/controller/subsystem/ticker/proc/transfer_single_character(mob/dead/new_player/player)
+ var/mob/living = player.transfer_character()
+ if(!living)
+ return
+ qdel(player)
+ ADD_TRAIT(living, TRAIT_NO_TRANSFORM, SS_TICKER_TRAIT)
+ if(living.client)
+ var/atom/movable/screen/splash/splash = new(null, living.client, TRUE)
+ splash.Fade(TRUE)
+ living.client?.init_verbs()
+ . = living
+ var/datum/player_details/details = get_player_details(living)
+ if(details)
+ SSchallenges.apply_challenges(details)
+ for(var/processing_reward_bitflags in bitflags_to_reward)//you really should use department bitflags if possible
+ if(living.mind.assigned_role.departments_bitflags & processing_reward_bitflags)
+ details.roundend_monkecoin_bonus += 150
+ for(var/processing_reward_jobs in jobs_to_reward)//just in case you really only want to reward a specific job
+ if(living.job == processing_reward_jobs)
+ details.roundend_monkecoin_bonus += 150
+
/datum/controller/subsystem/ticker/proc/transfer_characters()
var/list/livings = list()
for(var/mob/dead/new_player/player as anything in GLOB.new_player_list)
- var/mob/living = player.transfer_character()
- if(living)
- qdel(player)
- ADD_TRAIT(living, TRAIT_NO_TRANSFORM, SS_TICKER_TRAIT)
- if(living.client)
- var/atom/movable/screen/splash/S = new(null, living.client, TRUE)
- S.Fade(TRUE)
- living.client.init_verbs()
- livings += living
- if(living.client && length(living.client?.active_challenges))
- SSchallenges.apply_challenges(living.client)
- for(var/processing_reward_bitflags in bitflags_to_reward)//you really should use department bitflags if possible
- if(living.mind.assigned_role.departments_bitflags & processing_reward_bitflags)
- living.client.reward_this_person += 150
- for(var/processing_reward_jobs in jobs_to_reward)//just in case you really only want to reward a specific job
- if(living.job == processing_reward_jobs)
- living.client.reward_this_person += 150
- if(livings.len)
+ livings += transfer_single_character(player)
+ list_clear_nulls(livings)
+ if(length(livings))
addtimer(CALLBACK(src, PROC_REF(release_characters), livings), 3 SECONDS, TIMER_CLIENT_TIME)
/datum/controller/subsystem/ticker/proc/release_characters(list/livings)
diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm
index 4e57287dba8e..1c71975d1494 100644
--- a/code/datums/components/crafting/equipment.dm
+++ b/code/datums/components/crafting/equipment.dm
@@ -198,3 +198,14 @@
tool_paths = list(/obj/item/bikehorn)
time = 40 SECONDS
category = CAT_EQUIPMENT
+
+/datum/crafting_recipe/rebar_quiver
+ name = "Rebar Storage Quiver"
+ result = /obj/item/storage/bag/rebar_quiver
+ time = 10
+ reqs = list(
+ /obj/item/tank/internals/oxygen = 1,
+ /obj/item/stack/cable_coil = 15,
+ )
+ category = CAT_EQUIPMENT
+ tool_behaviors = list(TOOL_WELDER, TOOL_WIRECUTTER)
diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm
index ae6bdda72e4b..c8f680d36778 100644
--- a/code/datums/components/crafting/ranged_weapon.dm
+++ b/code/datums/components/crafting/ranged_weapon.dm
@@ -224,6 +224,33 @@
time = 5 SECONDS
category = CAT_WEAPON_RANGED
+/datum/crafting_recipe/rebarxbow
+ name = "Heated Rebar Crossbow"
+ result = /obj/item/gun/ballistic/rifle/rebarxbow
+ reqs = list(
+ /obj/item/stack/rods = 6,
+ /obj/item/stack/cable_coil = 12,
+ /obj/item/inducer = 1,
+ )
+ tool_behaviors = list(TOOL_WELDER)
+ time = 5 SECONDS
+ category = CAT_WEAPON_RANGED
+
+/datum/crafting_recipe/rebarxbowforced
+ name = "Forced Rebar Crossbow"
+ desc = "A much quicker reload... for a chance of shooting yourself when you fire it."
+ result = /obj/item/gun/ballistic/rifle/rebarxbow/forced
+ reqs = list(
+ /obj/item/gun/ballistic/rifle/rebarxbow = 1,
+ )
+ blacklist = list(
+ /obj/item/gun/ballistic/rifle/rebarxbow/forced,
+ /obj/item/gun/ballistic/rifle/rebarxbow/syndie,
+ )
+ tool_behaviors = list(TOOL_CROWBAR)
+ time = 1 SECONDS
+ category = CAT_WEAPON_RANGED
+
/datum/crafting_recipe/pipegun_prime
name = "Regal Pipegun"
always_available = FALSE
@@ -306,8 +333,7 @@
/obj/item/stack/rods = 4,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/capacitor = 1,
- /obj/item/clothing/glasses/regular = 1,
- /obj/item/reagent_containers/cup/glass/drinkingglass = 1,
+ /obj/item/reagent_containers/cup/glass/drinkingglass = 2,
)
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
time = 10 SECONDS
@@ -351,7 +377,7 @@
/obj/item/gun/energy/disabler/smoothbore = 1,
/obj/item/stack/sheet/mineral/gold = 5,
/obj/item/stock_parts/cell/hyper = 1,
- /datum/reagent/reaction_agent/speed_agent = 10,
+ /datum/reagent/consumable/red_queen = 10, //monke edit
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 20 SECONDS
diff --git a/code/datums/components/crafting/weapon_ammo.dm b/code/datums/components/crafting/weapon_ammo.dm
index e7ad919c1de6..4ecaee1fbc2b 100644
--- a/code/datums/components/crafting/weapon_ammo.dm
+++ b/code/datums/components/crafting/weapon_ammo.dm
@@ -12,6 +12,36 @@
time = 0.5 SECONDS
category = CAT_WEAPON_AMMO
+/datum/crafting_recipe/paperball
+ name = "Paper Ball"
+ result = /obj/item/ammo_casing/rebar/paperball
+ reqs = list(
+ /obj/item/paper = 1,
+ )
+ time = 0.1 SECONDS
+ category = CAT_WEAPON_AMMO
+
+/datum/crafting_recipe/rebarsyndie
+ name = "jagged iron rod"
+ always_available = FALSE
+ result = /obj/item/ammo_casing/rebar/syndie
+ reqs = list(
+ /obj/item/stack/rods = 1,
+ )
+ tool_behaviors = list(TOOL_WIRECUTTER)
+ time = 0.5 SECONDS
+ time = 0.1 SECONDS
+ category = CAT_WEAPON_AMMO
+
+/datum/crafting_recipe/healium_bolt
+ name = "healium crystal crossbow bolt"
+ result = /obj/item/ammo_casing/rebar/healium
+ reqs = list(
+ /obj/item/grenade/gas_crystal/healium_crystal = 1
+ )
+ time = 0.1 SECONDS
+ category = CAT_WEAPON_AMMO
+
/datum/crafting_recipe/pulseslug
name = "Pulse Slug Shell"
result = /obj/item/ammo_casing/shotgun/pulseslug
diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm
index e52ac35e186b..3ffd95de4d8a 100644
--- a/code/datums/components/fullauto.dm
+++ b/code/datums/components/fullauto.dm
@@ -8,8 +8,12 @@
var/turf/target_loc //For dealing with locking on targets due to BYOND engine limitations (the mouse input only happening when mouse moves).
var/autofire_stat = AUTOFIRE_STAT_IDLE
var/mouse_parameters
- var/autofire_shot_delay = 0.3 SECONDS //Time between individual shots.
- var/mouse_status = AUTOFIRE_MOUSEUP //This seems hacky but there can be two MouseDown() without a MouseUp() in between if the user holds click and uses alt+tab, printscreen or similar.
+ /// Time between individual shots.
+ var/autofire_shot_delay = 0.3 SECONDS
+ /// This seems hacky but there can be two MouseDown() without a MouseUp() in between if the user holds click and uses alt+tab, printscreen or similar.
+ var/mouse_status = AUTOFIRE_MOUSEUP
+ /// Should dual wielding be allowed?
+ var/allow_akimbo
///windup autofire vars
///Whether the delay between shots increases over time, simulating a spooling weapon
@@ -26,7 +30,7 @@
var/timerid
COOLDOWN_DECLARE(next_shot_cd)
-/datum/component/automatic_fire/Initialize(autofire_shot_delay, windup_autofire, windup_autofire_reduction_multiplier, windup_autofire_cap, windup_spindown)
+/datum/component/automatic_fire/Initialize(autofire_shot_delay, windup_autofire, windup_autofire_reduction_multiplier, windup_autofire_cap, windup_spindown, allow_akimbo = TRUE)
. = ..()
if(!isgun(parent))
return COMPONENT_INCOMPATIBLE
@@ -34,6 +38,7 @@
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(wake_up))
if(autofire_shot_delay)
src.autofire_shot_delay = autofire_shot_delay
+ src.allow_akimbo = allow_akimbo
if(windup_autofire)
src.windup_autofire = windup_autofire
src.windup_autofire_reduction_multiplier = windup_autofire_reduction_multiplier
@@ -291,21 +296,21 @@
return COMPONENT_AUTOFIRE_ONMOUSEDOWN_BYPASS
-/obj/item/gun/proc/do_autofire(datum/source, atom/target, mob/living/shooter, params)
+/obj/item/gun/proc/do_autofire(datum/source, atom/target, mob/living/shooter, allow_akimbo, params)
SIGNAL_HANDLER
if(semicd || shooter.incapacitated())
return NONE
if(!can_shoot())
shoot_with_empty_chamber(shooter)
return NONE
- INVOKE_ASYNC(src, PROC_REF(do_autofire_shot), source, target, shooter, params)
+ INVOKE_ASYNC(src, PROC_REF(do_autofire_shot), source, target, shooter, allow_akimbo, params)
return COMPONENT_AUTOFIRE_SHOT_SUCCESS //All is well, we can continue shooting.
-/obj/item/gun/proc/do_autofire_shot(datum/source, atom/target, mob/living/shooter, params)
+/obj/item/gun/proc/do_autofire_shot(datum/source, atom/target, mob/living/shooter, allow_akimbo, params)
var/obj/item/gun/akimbo_gun = shooter.get_inactive_held_item()
var/bonus_spread = 0
- if(istype(akimbo_gun) && weapon_weight < WEAPON_MEDIUM)
+ if(istype(akimbo_gun) && weapon_weight < WEAPON_MEDIUM && allow_akimbo)
if(akimbo_gun.weapon_weight < WEAPON_MEDIUM && akimbo_gun.can_trigger_gun(shooter))
bonus_spread = dual_wield_spread
addtimer(CALLBACK(akimbo_gun, TYPE_PROC_REF(/obj/item/gun, process_fire), target, shooter, TRUE, params, null, bonus_spread), 1)
diff --git a/code/datums/components/gun_crank.dm b/code/datums/components/gun_crank.dm
index 3768615907db..ad980f93829c 100644
--- a/code/datums/components/gun_crank.dm
+++ b/code/datums/components/gun_crank.dm
@@ -12,9 +12,11 @@
var/charge_sound_cooldown_time
/// Are we currently charging
var/is_charging = FALSE
+ /// Should you be able to move while charging, use IGNORE_USER_LOC_CHANGE if you want to move and crank
+ var/charge_move = NONE
COOLDOWN_DECLARE(charge_sound_cooldown)
-/datum/component/gun_crank/Initialize(charging_cell, charge_amount = 500, cooldown_time = 2 SECONDS, charge_sound = 'sound/weapons/laser_crank.ogg', charge_sound_cooldown_time = 1.8 SECONDS)
+/datum/component/gun_crank/Initialize(charging_cell, charge_amount = 500, cooldown_time = 2 SECONDS, charge_sound = 'sound/weapons/laser_crank.ogg', charge_sound_cooldown_time = 1.8 SECONDS, charge_move = NONE)
. = ..()
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
@@ -25,6 +27,7 @@
src.cooldown_time = cooldown_time
src.charge_sound = charge_sound
src.charge_sound_cooldown_time = charge_sound_cooldown_time
+ src.charge_move = charge_move
/datum/component/gun_crank/RegisterWithParent()
. = ..()
@@ -51,7 +54,7 @@
playsound(source, charge_sound, 40)
source.balloon_alert(user, "charging...")
SEND_SIGNAL(source, COMSIG_GUN_CRANKING, user) // monkestation edit
- if(!do_after(user, cooldown_time, source, interaction_key = DOAFTER_SOURCE_CHARGE_GUNCRANK))
+ if(!do_after(user, cooldown_time, source, interaction_key = DOAFTER_SOURCE_CHARGE_GUNCRANK, timed_action_flags = charge_move))
is_charging = FALSE
return
charging_cell.give(charge_amount)
diff --git a/code/datums/elements/befriend_petting.dm b/code/datums/elements/befriend_petting.dm
index c2006051397e..3037ecb4a6bf 100644
--- a/code/datums/elements/befriend_petting.dm
+++ b/code/datums/elements/befriend_petting.dm
@@ -36,7 +36,7 @@
if ((user.istate & ISTATE_HARM))
return // We'll deal with this later
if (owner.stat == DEAD)
- var/additional_text = HAS_TRAIT(user, TRAIT_NAIVE) || HAS_TRAIT(user.mind, TRAIT_NAIVE) ? "It looks like [owner.p_theyre()] sleeping." : "[owner.p_they(capitalized = TRUE)] seem[owner.p_s()] to be dead."
+ var/additional_text = HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "It looks like [owner.p_theyre()] sleeping." : "[owner.p_they(capitalized = TRUE)] seem[owner.p_s()] to be dead."
to_chat(user, span_warning("[owner] feels cold to the touch. [additional_text]"))
return
if (owner.stat != CONSCIOUS)
diff --git a/code/datums/status_effects/debuffs/tower_of_babel.dm b/code/datums/status_effects/debuffs/tower_of_babel.dm
index bc3df34f2be4..1ba46d0b87b5 100644
--- a/code/datums/status_effects/debuffs/tower_of_babel.dm
+++ b/code/datums/status_effects/debuffs/tower_of_babel.dm
@@ -15,7 +15,8 @@
owner.add_blocked_language(GLOB.all_languages - random_language, source = LANGUAGE_BABEL)
// this lets us bypass tongue language restrictions except for people who have stuff like mute,
// no tongue, tongue tied, etc. curse of babel shouldn't let people who have a tongue disability speak
- ADD_TRAIT(owner, TRAIT_TOWER_OF_BABEL, trait_source)
+ if(owner.mind)
+ ADD_TRAIT(owner.mind, TRAIT_TOWER_OF_BABEL, trait_source)
owner.add_mood_event(id, /datum/mood_event/tower_of_babel)
return ..()
@@ -25,7 +26,8 @@
owner.remove_blocked_language(GLOB.all_languages, source = LANGUAGE_BABEL)
owner.remove_all_languages(source = LANGUAGE_BABEL)
owner.update_atom_languages()
- REMOVE_TRAIT(owner, TRAIT_TOWER_OF_BABEL, trait_source)
+ if(owner.mind)
+ REMOVE_TRAIT(owner.mind, TRAIT_TOWER_OF_BABEL, trait_source)
return ..()
// Used by wizard magic and tower of babel event
diff --git a/code/datums/weather/weather_types/snow_storm.dm b/code/datums/weather/weather_types/snow_storm.dm
index 03c9bf2aed6e..9db51ee5ad4b 100644
--- a/code/datums/weather/weather_types/snow_storm.dm
+++ b/code/datums/weather/weather_types/snow_storm.dm
@@ -39,7 +39,7 @@
if(isobserver(player))
return TRUE
- if(HAS_TRAIT(player, TRAIT_DETECT_STORM))
+ if(HAS_MIND_TRAIT(player, TRAIT_DETECT_STORM))
return TRUE
if(istype(get_area(player), /area/mine))
diff --git a/code/game/communications.dm b/code/game/communications.dm
index b6c606f0a5c5..320b03d0d041 100644
--- a/code/game/communications.dm
+++ b/code/game/communications.dm
@@ -110,6 +110,7 @@ GLOBAL_LIST_INIT(radiochannels, list(
RADIO_CHANNEL_CTF_GREEN = FREQ_CTF_GREEN,
RADIO_CHANNEL_CTF_YELLOW = FREQ_CTF_YELLOW,
RADIO_CHANNEL_RADIO = RADIO_KEY_RADIO,
+ RADIO_CHANNEL_UNCOMMON = FREQ_UNCOMMON, //monkestation addition
))
GLOBAL_LIST_INIT(reverseradiochannels, list(
@@ -130,6 +131,7 @@ GLOBAL_LIST_INIT(reverseradiochannels, list(
"[FREQ_CTF_GREEN]" = RADIO_CHANNEL_CTF_GREEN,
"[FREQ_CTF_YELLOW]" = RADIO_CHANNEL_CTF_YELLOW,
"[FREQ_RADIO]" = RADIO_CHANNEL_RADIO,
+ "[FREQ_UNCOMMON]" = RADIO_CHANNEL_UNCOMMON, //monkestation addition
))
/datum/radio_frequency
diff --git a/code/game/machinery/civilian_bounties.dm b/code/game/machinery/civilian_bounties.dm
index bc412aa4492d..9eda1dfc5f04 100644
--- a/code/game/machinery/civilian_bounties.dm
+++ b/code/game/machinery/civilian_bounties.dm
@@ -328,7 +328,7 @@
COOLDOWN_START(src, next_nag_time, nag_cooldown)
/obj/item/bounty_cube/proc/set_up(datum/bounty/my_bounty, obj/item/card/id/holder_id)
- bounty_value = my_bounty.reward
+ bounty_value = round(my_bounty.reward)
bounty_name = my_bounty.name
bounty_holder = holder_id.registered_name
bounty_holder_job = holder_id.assignment
diff --git a/code/game/objects/items/cards/card_ids.dm b/code/game/objects/items/cards/card_ids.dm
new file mode 100644
index 000000000000..505ae50aab2b
--- /dev/null
+++ b/code/game/objects/items/cards/card_ids.dm
@@ -0,0 +1,14 @@
+/obj/item/card/id/away/old/cmo
+ name = "Charlie Station Chief Medical Officer's ID card"
+ desc = "A faded Charlie Station ID card. You can make out the rank \"Chief Medical Officer\"."
+ trim = /datum/id_trim/away/old/cmo
+
+/obj/item/card/id/away/old/chef
+ name = "Charlie Station Chef's ID card"
+ desc = "A faded Charlie Station ID card. You can make out the rank \"Chef\"."
+ trim = /datum/id_trim/away/old/chef
+
+/obj/item/card/id/away/old/explorer
+ name = "Charlie Station Explorer's ID card"
+ desc = "A faded Charlie Station ID card. You can make out the rank \"Explorer\"."
+ trim = /datum/id_trim/away/old/explorer
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index 3171bd2d8ef1..b81b55c12cf5 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -24,8 +24,8 @@
update_appearance(UPDATE_ICON)
/obj/item/lipstick/update_icon_state()
- icon_state = "lipstick[open ? "_uncap" : null]"
- inhand_icon_state = "lipstick[open ? "open" : null]"
+ icon_state = "[initial(icon_state)][open ? "_uncap" : null]"
+ inhand_icon_state = "[initial(icon_state)][open ? "open" : null]"
return ..()
/obj/item/lipstick/update_overlays()
@@ -65,6 +65,13 @@
desc = "An incredibly potent tube of lipstick made from the venom of the dreaded Yellow Spotted Space Lizard, as deadly as it is chic. Try not to smear it!"
lipstick_trait = TRAIT_KISS_OF_DEATH
+/obj/item/lipstick/syndie
+ name = "syndie lipstick"
+ desc = "Syndicate branded lipstick with a killer dose of kisses. Observe safety regulations!"
+ icon_state = "slipstick"
+ lipstick_color = COLOR_SYNDIE_RED
+ lipstick_trait = TRAIT_SYNDIE_KISS
+
/obj/item/lipstick/random
name = "lipstick"
icon_state = "random_lipstick"
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 21517203f5f8..51f5977f92b2 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -325,7 +325,7 @@
var/datum/signal/subspace/vocal/signal = new(src, freq, speaker, language, message, spans, message_mods)
// Independent radios, on the CentCom frequency, reach all independent radios
- if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE || freq == FREQ_CTF_GREEN || freq == FREQ_CTF_YELLOW))
+ if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE || freq == FREQ_CTF_GREEN || freq == FREQ_CTF_YELLOW || freq == FREQ_UNCOMMON))
signal.data["compression"] = 0
signal.transmission_method = TRANSMISSION_SUPERSPACE
signal.levels = list(0)
diff --git a/code/game/objects/items/granters/crafting/rebarxbowsyndie.dm b/code/game/objects/items/granters/crafting/rebarxbowsyndie.dm
new file mode 100644
index 000000000000..04cee4e18a79
--- /dev/null
+++ b/code/game/objects/items/granters/crafting/rebarxbowsyndie.dm
@@ -0,0 +1,13 @@
+/obj/item/book/granter/crafting_recipe/dusting/rebarxbowsyndie_ammo
+ name = "SYNDICATE REBAR CROSSBOW AMMO CRAFTING MANUAL"
+ desc = "This book will self destruct upon being read a second time."
+ crafting_recipe_types = list(
+ /datum/crafting_recipe/rebarsyndie
+ )
+ uses = 1
+ remarks = list(
+ "AIM FOR THE LEGS TO CRIPPLE YOUR FOES",
+ "USE A ROD AND WIRECUTTERS TO MAKE BETTER AMMO",
+ "BE AWARE OF THE SCOPE'S BLIND SPOTS",
+ "READ THIS BOOK AGAIN TO DUST IT.",
+ )
diff --git a/code/game/objects/items/grenades/spawnergrenade.dm b/code/game/objects/items/grenades/spawnergrenade.dm
index 1b9d9ff27d09..616673f72a93 100644
--- a/code/game/objects/items/grenades/spawnergrenade.dm
+++ b/code/game/objects/items/grenades/spawnergrenade.dm
@@ -71,3 +71,15 @@
inhand_icon_state = null
spawner_type = /mob/living/basic/clown/mutant
deliveryamt = 5
+
+/obj/item/grenade/spawnergrenade/cat
+ name = "Catnade"
+ desc = "You can hear faint meowing and the sounds of claws on metal coming from within."
+ spawner_type = list(/mob/living/simple_animal/hostile/feral, /mob/living/simple_animal/hostile/feraltabby)
+ deliveryamt = 5
+
+/obj/item/grenade/spawnergrenade/cat/syndicate
+ name = "Syndicatnade"
+ desc = "You can hear aggressive meowing and the sounds of sharpened claws on metal coming from within."
+ spawner_type = /mob/living/simple_animal/hostile/syndicat
+ deliveryamt = 3
diff --git a/code/game/objects/items/hand_items.dm b/code/game/objects/items/hand_items.dm
index 8f24ae13d876..36f326189fd0 100644
--- a/code/game/objects/items/hand_items.dm
+++ b/code/game/objects/items/hand_items.dm
@@ -548,6 +548,12 @@
color = COLOR_BLACK
kiss_type = /obj/projectile/kiss/death
+/obj/item/hand_item/kisser/syndie
+ name = "syndie kiss"
+ desc = "oooooo you like syndicate ur a syndiekisser"
+ color = COLOR_SYNDIE_RED
+ kiss_type = /obj/projectile/kiss/syndie
+
/obj/projectile/kiss
name = "kiss"
icon = 'icons/mob/simple/animal.dmi'
@@ -559,13 +565,17 @@
damage_type = BRUTE
damage = 0 // love can't actually hurt you
armour_penetration = 100 // but if it could, it would cut through even the thickest plate
+ var/silent_blown = FALSE
/obj/projectile/kiss/fire(angle, atom/direct_target)
- if(firer)
+ if(firer && !silent_blown)
name = "[name] blown by [firer]"
+
return ..()
/obj/projectile/kiss/Impact(atom/A)
+ def_zone = BODY_ZONE_HEAD // let's keep it PG, people
+
if(damage > 0 || !isliving(A)) // if we do damage or we hit a nonliving thing, we don't have to worry about a harmless hit because we can't wrongly do damage anyway
return ..()
@@ -619,7 +629,6 @@
living_target.visible_message("[living_target] [other_msg]", span_userdanger("Whoa! [self_msg]"))
/obj/projectile/kiss/on_hit(atom/target, blocked, pierce_hit)
- def_zone = BODY_ZONE_HEAD // let's keep it PG, people
. = ..()
if(isliving(target))
var/mob/living/living_target = target
@@ -641,6 +650,18 @@
var/obj/item/organ/internal/heart/dont_go_breakin_my_heart = heartbreakee.get_organ_slot(ORGAN_SLOT_HEART)
dont_go_breakin_my_heart.apply_organ_damage(999)
+// Based on energy gun characteristics
+/obj/projectile/kiss/syndie
+ name = "syndie kiss"
+ color = COLOR_SYNDIE_RED
+ impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
+ damage_type = BURN
+ armor_flag = LASER
+ armour_penetration = 0
+ damage = 25
+ wound_bonus = -20
+ bare_wound_bonus = 40
+ silent_blown = TRUE
/obj/projectile/kiss/french
name = "french kiss (is that a hint of garlic?)"
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index 2ba0ab73eab0..e6893f9d73e4 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -12,6 +12,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
new/datum/stack_recipe("catwalk floor tile", /obj/item/stack/tile/catwalk_tile, 1, 4, 20, category = CAT_TILES), \
new/datum/stack_recipe("stairs frame", /obj/structure/stairs_frame, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), \
new/datum/stack_recipe("white cane", /obj/item/cane/white, 3, time = 1 SECONDS, one_per_turf = FALSE, category = CAT_TOOLS), \
+ new/datum/stack_recipe("sharpened iron rod", /obj/item/ammo_casing/rebar, 1, time = 0.2 SECONDS, one_per_turf = FALSE, category = CAT_WEAPON_AMMO), \
))
/obj/item/stack/rods
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index e994da442d5a..0fa0dbcb662e 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -489,6 +489,7 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list(
new /datum/stack_recipe("ancient armor", /obj/item/clothing/suit/armor/elder_atmosian, req_amount = 5, res_amount = 1, check_density = FALSE, category = CAT_CLOTHING),
new /datum/stack_recipe("ancient helmet", /obj/item/clothing/head/helmet/elder_atmosian, req_amount = 3, res_amount = 1, check_density = FALSE, category = CAT_CLOTHING),
new /datum/stack_recipe("metallic hydrogen axe", /obj/item/fireaxe/metal_h2_axe, req_amount = 15, res_amount = 1, check_density = FALSE, category = CAT_WEAPON_MELEE),
+ new /datum/stack_recipe("metallic hydrogen bolts", /obj/item/ammo_casing/rebar/hydrogen, req_amount = 1, res_amount = 1, check_density = FALSE, category = CAT_WEAPON_AMMO),
))
/obj/item/stack/sheet/mineral/metal_hydrogen
@@ -507,6 +508,10 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list(
. = ..()
. += GLOB.metalhydrogen_recipes
+GLOBAL_LIST_INIT(zaukerite_recipes, list(
+ new /datum/stack_recipe("zaukerite shard", /obj/item/ammo_casing/rebar/zaukerite, req_amount=1, res_amount=1, category = CAT_WEAPON_AMMO),
+ ))
+
/obj/item/stack/sheet/mineral/zaukerite
name = "zaukerite"
icon_state = "zaukerite"
@@ -517,3 +522,7 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list(
mats_per_unit = list(/datum/material/zaukerite = SHEET_MATERIAL_AMOUNT)
merge_type = /obj/item/stack/sheet/mineral/zaukerite
material_type = /datum/material/zaukerite
+
+/obj/item/stack/sheet/mineral/zaukerite/get_main_recipes()
+ . = ..()
+ . += GLOB.zaukerite_recipes
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index dc35fcbab53c..88f8851242b9 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -573,4 +573,28 @@
for(var/i in 1 to 40)
new /obj/item/ammo_casing/caseless/harpoon(src)
+/obj/item/storage/bag/rebar_quiver
+ name = "Rebar Storage Quiver"
+ icon = 'icons/obj/weapons/guns/bows/quivers.dmi'
+ icon_state = "rebar_quiver"
+ worn_icon_state = "rebar_quiver"
+ inhand_icon_state = "rebar_quiver"
+ desc = "A oxygen tank cut in half, used for holding sharpened rods for the rebar crossbow."
+ slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_SUITSTORE
+ resistance_flags = FLAMMABLE
+
+/obj/item/storage/bag/rebar_quiver/Initialize(mapload)
+ . = ..()
+ atom_storage.max_specific_storage = WEIGHT_CLASS_TINY
+ atom_storage.max_slots = 10
+ atom_storage.max_total_storage = 15
+ atom_storage.set_holdable(list(
+ /obj/item/ammo_casing/rebar,
+ /obj/item/ammo_casing/rebar/syndie,
+ /obj/item/ammo_casing/rebar/healium,
+ /obj/item/ammo_casing/rebar/hydrogen,
+ /obj/item/ammo_casing/rebar/zaukerite,
+ /obj/item/ammo_casing/rebar/paperball,
+ ))
+
#undef ORE_BAG_BALOON_COOLDOWN
diff --git a/code/game/objects/items/storage/boxes/science_boxes.dm b/code/game/objects/items/storage/boxes/science_boxes.dm
index 754a0cb2f5b4..99c652fdbb12 100644
--- a/code/game/objects/items/storage/boxes/science_boxes.dm
+++ b/code/game/objects/items/storage/boxes/science_boxes.dm
@@ -106,7 +106,7 @@
new /obj/item/circuitboard/machine/protolathe/offstation(src)
new /obj/item/circuitboard/machine/destructive_analyzer(src)
new /obj/item/circuitboard/machine/circuit_imprinter/offstation(src)
- new /obj/item/circuitboard/computer/rdconsole(src)
+ new /obj/item/circuitboard/computer/rdconsole/unlocked(src)
/obj/item/storage/box/stabilized //every single stabilized extract from xenobiology
name = "box of stabilized extracts"
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index 869b4c659fd6..84d50c607702 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -334,6 +334,14 @@
icon_state = "syndiebox"
illustration = "writing_syndie"
+/obj/item/storage/box/syndie_kit/rebarxbowsyndie
+ name = "Boxed Rebar Crossbow"
+ desc = "A scoped weapon with low armor penetration, but devestating against flesh. Features instruction manual for making specialty ammo."
+
+/obj/item/storage/box/syndie_kit/rebarxbowsyndie/PopulateContents()
+ new /obj/item/book/granter/crafting_recipe/dusting/rebarxbowsyndie_ammo(src)
+ new /obj/item/gun/ballistic/rifle/rebarxbow/syndie(src)
+
/obj/item/storage/box/syndie_kit/origami_bundle
name = "origami kit"
desc = "A box full of a number of rather masterfully engineered paper planes and a manual on \"The Art of Origami\"."
diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm
index c1907409d199..09161eb70ff8 100644
--- a/code/game/objects/items/storage/wallets.dm
+++ b/code/game/objects/items/storage/wallets.dm
@@ -30,7 +30,6 @@
/obj/item/gbp_punchcard,
/obj/item/implanter,
/obj/item/lighter,
- /obj/item/lipstick,
/obj/item/match,
/obj/item/paper,
/obj/item/pen,
diff --git a/code/game/say.dm b/code/game/say.dm
index 8eb2b780228d..d35b4971f6dd 100644
--- a/code/game/say.dm
+++ b/code/game/say.dm
@@ -19,7 +19,8 @@ GLOBAL_LIST_INIT(freqtospan, list(
"[FREQ_CTF_BLUE]" = "blueteamradio",
"[FREQ_CTF_GREEN]" = "greenteamradio",
"[FREQ_CTF_YELLOW]" = "yellowteamradio",
- "[FREQ_RADIO]" = "radioradio"
+ "[FREQ_RADIO]" = "radioradio",
+ "[FREQ_UNCOMMON]" = "uncommonradio"
))
/atom/movable/proc/say(message, bubble_type, list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null, filterproof = FALSE, message_range = 7, datum/saymode/saymode = null)
diff --git a/code/modules/admin/smites/curse_of_babel.dm b/code/modules/admin/smites/curse_of_babel.dm
index 4098cbf928c0..dacc797c4150 100644
--- a/code/modules/admin/smites/curse_of_babel.dm
+++ b/code/modules/admin/smites/curse_of_babel.dm
@@ -1,3 +1,4 @@
+/* monkestation removal. if you REALLY want to do this for some reason, call the proc yourself.
/// Strikes the target with a lightning bolt
/datum/smite/curse_of_babel
name = "Curse of Babel"
@@ -15,3 +16,4 @@
target.apply_status_effect(/datum/status_effect/tower_of_babel, duration)
to_chat(target, span_userdanger("The gods have punished you for your sins!"), confidential = TRUE)
+monkestation end */
diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm
index a172f3d84542..89849d2915c6 100644
--- a/code/modules/admin/verbs/secrets.dm
+++ b/code/modules/admin/verbs/secrets.dm
@@ -294,6 +294,7 @@ GLOBAL_DATUM(everyone_an_antag, /datum/everyone_is_an_antag_controller)
summon_magic(holder.mob, survivor_probability)
+/* monkestation removal: if you REALLY want to do this for some reason, call the proc yourself.
if("towerOfBabel")
if(!is_funmin)
return
@@ -305,6 +306,7 @@ GLOBAL_DATUM(everyone_an_antag, /datum/everyone_is_an_antag_controller)
if(!is_funmin)
return
holder.tower_of_babel_undo()
+monkestation end */
if("events")
if(!is_funmin)
diff --git a/code/modules/antagonists/clown_ops/clownop.dm b/code/modules/antagonists/clown_ops/clownop.dm
index 5353875491e4..79d64bb47007 100644
--- a/code/modules/antagonists/clown_ops/clownop.dm
+++ b/code/modules/antagonists/clown_ops/clownop.dm
@@ -16,14 +16,12 @@
message_admins("[key_name_admin(admin)] has clown op'ed [key_name_admin(new_owner)].")
log_admin("[key_name(admin)] has clown op'ed [key_name(new_owner)].")
-/datum/antagonist/nukeop/clownop/apply_innate_effects(mob/living/mob_override)
+/datum/antagonist/nukeop/clownop/on_gain()
. = ..()
- var/mob/living/L = owner.current || mob_override
- ADD_TRAIT(L, TRAIT_NAIVE, CLOWNOP_TRAIT)
+ ADD_TRAIT(owner, TRAIT_NAIVE, CLOWNOP_TRAIT)
-/datum/antagonist/nukeop/clownop/remove_innate_effects(mob/living/mob_override)
- var/mob/living/L = owner.current || mob_override
- REMOVE_TRAIT(L, TRAIT_NAIVE, CLOWNOP_TRAIT)
+/datum/antagonist/nukeop/clownop/on_removal()
+ REMOVE_TRAIT(owner, TRAIT_NAIVE, CLOWNOP_TRAIT)
return ..()
/datum/antagonist/nukeop/clownop/equip_op()
@@ -48,14 +46,12 @@
challengeitem = /obj/item/nuclear_challenge/clownops
suicide_cry = "HAPPY BIRTHDAY!!"
-/datum/antagonist/nukeop/leader/clownop/apply_innate_effects(mob/living/mob_override)
+/datum/antagonist/nukeop/leader/clownop/on_gain()
. = ..()
- var/mob/living/L = owner.current || mob_override
- ADD_TRAIT(L, TRAIT_NAIVE, CLOWNOP_TRAIT)
+ ADD_TRAIT(owner, TRAIT_NAIVE, CLOWNOP_TRAIT)
-/datum/antagonist/nukeop/leader/clownop/remove_innate_effects(mob/living/mob_override)
- var/mob/living/L = owner.current || mob_override
- REMOVE_TRAIT(L, TRAIT_NAIVE, CLOWNOP_TRAIT)
+/datum/antagonist/nukeop/leader/clownop/on_removal()
+ REMOVE_TRAIT(owner, TRAIT_NAIVE, CLOWNOP_TRAIT)
return ..()
/datum/antagonist/nukeop/leader/clownop/equip_op()
diff --git a/code/modules/antagonists/heretic/heretic_antag.dm b/code/modules/antagonists/heretic/heretic_antag.dm
index 6bab5ebb6fc6..f4218b9b1e88 100644
--- a/code/modules/antagonists/heretic/heretic_antag.dm
+++ b/code/modules/antagonists/heretic/heretic_antag.dm
@@ -7,6 +7,8 @@
* Used in creating spooky-text for heretic ascension announcements.
*/
/proc/generate_heretic_text(length = 25)
+ if(!isnum(length)) // stupid thing so we can use this directly in replacetext
+ length = 25
. = ""
for(var/i in 1 to length)
. += pick("!", "$", "^", "@", "&", "#", "*", "(", ")", "?")
diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm
index 19098b052105..dc942ee81e1c 100644
--- a/code/modules/antagonists/heretic/heretic_knowledge.dm
+++ b/code/modules/antagonists/heretic/heretic_knowledge.dm
@@ -690,6 +690,14 @@
cost = 2
priority = MAX_KNOWLEDGE_PRIORITY + 1 // Yes, the final ritual should be ABOVE the max priority.
required_atoms = list(/mob/living/carbon/human = 3)
+ /// The typepath of the achievement to grant upon successful ascension.
+ var/datum/award/achievement/misc/ascension_achievement
+ /// The text of the ascension announcement.
+ /// %NAME% is replaced with the heretic's real name,
+ /// and %SPOOKY% is replaced with output from [generate_heretic_text]
+ var/announcement_text
+ /// The sound that's played for the ascension announcement.
+ var/announcement_sound
/datum/heretic_knowledge/ultimate/on_research(mob/user, datum/antagonist/heretic/our_heretic)
. = ..()
@@ -752,6 +760,15 @@
header = "A Heretic is Ascending!",
notify_flags = NOTIFY_CATEGORY_DEFAULT,
)
+ priority_announce(
+ text = replacetext(replacetext(announcement_text, "%NAME%", user.real_name), "%SPOOKY%", GLOBAL_PROC_REF(generate_heretic_text)),
+ title = generate_heretic_text(),
+ sound = announcement_sound,
+ color_override = "pink",
+ )
+
+ if(!isnull(ascension_achievement))
+ user.client?.give_award(ascension_achievement, user)
return TRUE
/datum/heretic_knowledge/ultimate/cleanup_atoms(list/selected_atoms)
diff --git a/code/modules/antagonists/heretic/knowledge/ash_lore.dm b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
index 185bb382eb85..01ebcc0cd0ed 100644
--- a/code/modules/antagonists/heretic/knowledge/ash_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/ash_lore.dm
@@ -188,6 +188,9 @@
for the Nightwatcher brought forth the rite to mankind! His gaze continues, as now I am one with the flames, \
WITNESS MY ASCENSION, THE ASHY LANTERN BLAZES ONCE MORE!"
route = PATH_ASH
+ ascension_achievement = /datum/award/achievement/misc/ash_ascension
+ announcement_text = "%SPOOKY% Fear the blaze, for the Ashlord, %NAME% has ascended! The flames shall consume all! %SPOOKY%"
+ announcement_sound = 'sound/ambience/antag/heretic/ascend_ash.ogg'
/// A static list of all traits we apply on ascension.
var/static/list/traits_to_apply = list(
TRAIT_BOMBIMMUNE,
@@ -212,13 +215,6 @@
/datum/heretic_knowledge/ultimate/ash_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Fear the blaze, for the Ashlord, [user.real_name] has ascended! The flames shall consume all! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_ash.ogg',
- color_override = "pink",
- )
-
var/datum/action/cooldown/spell/fire_sworn/circle_spell = new(user.mind)
circle_spell.Grant(user)
@@ -234,6 +230,4 @@
var/datum/action/cooldown/spell/aoe/fiery_rebirth/fiery_rebirth = locate() in user.actions
fiery_rebirth?.cooldown_time *= 0.16
- user.client?.give_award(/datum/award/achievement/misc/ash_ascension, user)
- if(length(traits_to_apply))
- user.add_traits(traits_to_apply, MAGIC_TRAIT)
+ user.add_traits(traits_to_apply, type)
diff --git a/code/modules/antagonists/heretic/knowledge/blade_lore.dm b/code/modules/antagonists/heretic/knowledge/blade_lore.dm
index 1c800944ce54..95edee0f72ef 100644
--- a/code/modules/antagonists/heretic/knowledge/blade_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/blade_lore.dm
@@ -397,6 +397,9 @@
gain_text = "The Torn Champion is freed! I will become the blade reunited, and with my greater ambition, \
I AM UNMATCHED! A STORM OF STEEL AND SILVER IS UPON US! WITNESS MY ASCENSION!"
route = PATH_BLADE
+ ascension_achievement = /datum/award/achievement/misc/blade_ascension
+ announcement_text = "%SPOOKY% Master of blades, the Torn Champion's disciple, %NAME% has ascended! Their steel is that which will cut reality in a maelstom of silver! %SPOOKY%"
+ announcement_sound = 'sound/ambience/antag/heretic/ascend_blade.ogg'
/datum/heretic_knowledge/ultimate/blade_final/is_valid_sacrifice(mob/living/carbon/human/sacrifice)
. = ..()
@@ -407,14 +410,7 @@
/datum/heretic_knowledge/ultimate/blade_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Master of blades, the Torn Champion's disciple, [user.real_name] has ascended! Their steel is that which will cut reality in a maelstom of silver! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_blade.ogg',
- color_override = "pink",
- )
- user.client?.give_award(/datum/award/achievement/misc/blade_ascension, user)
- user.add_traits(list(TRAIT_STUNIMMUNE, TRAIT_NEVER_WOUNDED), name)
+ user.add_traits(list(TRAIT_STUNIMMUNE, TRAIT_NEVER_WOUNDED), type)
RegisterSignal(user, COMSIG_HERETIC_BLADE_ATTACK, PROC_REF(on_eldritch_blade))
user.apply_status_effect(/datum/status_effect/protective_blades/recharging, null, 8, 30, 0.25 SECONDS, 1 MINUTES)
diff --git a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm
index a1e8c381ce78..58decbe606ff 100644
--- a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm
@@ -234,6 +234,9 @@
I closed my eyes with my head laid against their form. I was safe. \
WITNESS MY ASCENSION!"
route = PATH_COSMIC
+ ascension_achievement = /datum/award/achievement/misc/cosmic_ascension
+ announcement_text = "%SPOOKY% A Star Gazer has arrived into the station, %NAME% has ascended! This station is the domain of the Cosmos! %SPOOKY%"
+ announcement_sound = 'sound/ambience/antag/heretic/ascend_cosmic.ogg'
/// A static list of command we can use with our mob.
var/static/list/star_gazer_commands = list(
/datum/pet_command/idle,
@@ -252,12 +255,6 @@
/datum/heretic_knowledge/ultimate/cosmic_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] A Star Gazer has arrived into the station, [user.real_name] has ascended! This station is the domain of the Cosmos! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_cosmic.ogg',
- color_override = "pink",
- )
var/mob/living/basic/heretic_summon/star_gazer/star_gazer_mob = new /mob/living/basic/heretic_summon/star_gazer(loc)
star_gazer_mob.maxHealth = INFINITY
star_gazer_mob.health = INFINITY
diff --git a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
index bc88fa654bdd..03fe70fb9908 100644
--- a/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/flesh_lore.dm
@@ -308,21 +308,15 @@
Reality will bend to THE LORD OF THE NIGHT or be unraveled! WITNESS MY ASCENSION!"
required_atoms = list(/mob/living/carbon/human = 4)
route = PATH_FLESH
+ ascension_achievement = /datum/award/achievement/misc/flesh_ascension
+ announcement_text = "%SPOOKY% Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, %NAME% has ascended! Fear the ever twisting hand! %SPOOKY%"
+ announcement_sound = 'sound/ambience/antag/heretic/ascend_flesh.ogg'
/datum/heretic_knowledge/ultimate/flesh_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Ever coiling vortex. Reality unfolded. ARMS OUTREACHED, THE LORD OF THE NIGHT, [user.real_name] has ascended! Fear the ever twisting hand! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_flesh.ogg',
- color_override = "pink",
- )
-
var/datum/action/cooldown/spell/shapeshift/shed_human_form/worm_spell = new(user.mind)
worm_spell.Grant(user)
- user.client?.give_award(/datum/award/achievement/misc/flesh_ascension, user)
-
var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user)
var/datum/heretic_knowledge/limited_amount/flesh_grasp/grasp_ghoul = heretic_datum.get_knowledge(/datum/heretic_knowledge/limited_amount/flesh_grasp)
grasp_ghoul.limit *= 3
diff --git a/code/modules/antagonists/heretic/knowledge/knock_lore.dm b/code/modules/antagonists/heretic/knowledge/knock_lore.dm
index 16425bf3a15f..ec75455bfd48 100644
--- a/code/modules/antagonists/heretic/knowledge/knock_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/knock_lore.dm
@@ -197,6 +197,8 @@
Reality will soon be torn, the Spider Gate opened! WITNESS ME!"
required_atoms = list(/mob/living/carbon/human = 3)
route = PATH_KNOCK
+ announcement_text = "Delta-class dimensional anomaly detec%SPOOKY% Reality rended, torn. Gates open, doors open, %NAME% has ascended! Fear the tide! %SPOOKY%"
+ announcement_sound = 'sound/ambience/antag/heretic/ascend_knock.ogg'
/datum/heretic_knowledge/ultimate/knock_final/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc)
. = ..()
@@ -220,14 +222,6 @@
/datum/heretic_knowledge/ultimate/knock_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "Delta-class dimensional anomaly detec[generate_heretic_text()] Reality rended, torn. Gates open, doors open, [user.real_name] has ascended! Fear the tide! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_knock.ogg',
- color_override = "pink",
- )
- user.client?.give_award(/datum/award/achievement/misc/knock_ascension, user)
-
// buffs
var/datum/action/cooldown/spell/shapeshift/eldritch/ascension/transform_spell = new(user.mind)
transform_spell.Grant(user)
diff --git a/code/modules/antagonists/heretic/knowledge/moon_lore.dm b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
index b3392810bf0e..c76dc4cf4f84 100644
--- a/code/modules/antagonists/heretic/knowledge/moon_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/moon_lore.dm
@@ -190,6 +190,10 @@
for where the Ringleader had started the parade, I shall continue it unto the suns demise \
WITNESS MY ASCENSION, THE MOON SMILES ONCE MORE AND FOREVER MORE IT SHALL!"
route = PATH_MOON
+ ascension_achievement = /datum/award/achievement/misc/moon_ascension
+ announcement_text = "%SPOOKY% Laugh, for the ringleader %NAME% has ascended! \
+ The truth shall finally devour the lie! %SPOOKY%"
+ announcement_sound = 'sound/ambience/antag/heretic/ascend_moon.ogg'
/datum/heretic_knowledge/ultimate/moon_final/is_valid_sacrifice(mob/living/sacrifice)
@@ -202,17 +206,7 @@
/datum/heretic_knowledge/ultimate/moon_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Laugh, for the ringleader [user.real_name] has ascended! \
- The truth shall finally devour the lie! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_moon.ogg',
- color_override = "pink",
- )
-
- user.client?.give_award(/datum/award/achievement/misc/moon_ascension, user)
- ADD_TRAIT(user, TRAIT_MADNESS_IMMUNE, REF(src))
-
+ ADD_TRAIT(user, TRAIT_MADNESS_IMMUNE, type)
RegisterSignal(user, COMSIG_LIVING_LIFE, PROC_REF(on_life))
var/amount_of_lunatics = 0
diff --git a/code/modules/antagonists/heretic/knowledge/rust_lore.dm b/code/modules/antagonists/heretic/knowledge/rust_lore.dm
index af8c26c563a8..aec03ae33387 100644
--- a/code/modules/antagonists/heretic/knowledge/rust_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/rust_lore.dm
@@ -225,6 +225,9 @@
gain_text = "Champion of rust. Corruptor of steel. Fear the dark, for the RUSTBRINGER has come! \
The Blacksmith forges ahead! Rusted Hills, CALL MY NAME! WITNESS MY ASCENSION!"
route = PATH_RUST
+ ascension_achievement = /datum/award/achievement/misc/rust_ascension
+ announcement_text = "%SPOOKY% Fear the decay, for the Rustbringer, %NAME% has ascended! None shall escape the corrosion! %SPOOKY%"
+ announcement_sound = 'sound/ambience/antag/heretic/ascend_rust.ogg'
/// If TRUE, then immunities are currently active.
var/immunities_active = FALSE
/// A typepath to an area that we must finish the ritual in.
@@ -264,12 +267,6 @@
/datum/heretic_knowledge/ultimate/rust_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] Fear the decay, for the Rustbringer, [user.real_name] has ascended! None shall escape the corrosion! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_rust.ogg',
- color_override = "pink",
- )
new /datum/rust_spread(loc)
RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
RegisterSignal(user, COMSIG_LIVING_LIFE, PROC_REF(on_life))
diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm
index f4aebf1a0c76..ca4033931c12 100644
--- a/code/modules/antagonists/heretic/knowledge/void_lore.dm
+++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm
@@ -183,6 +183,9 @@
The Aristocrat stands before me, beckoning. We will play a waltz to the whispers of dying reality, \
as the world is destroyed before our eyes. The void will return all to nothing, WITNESS MY ASCENSION!"
route = PATH_VOID
+ ascension_achievement = /datum/award/achievement/misc/void_ascension
+ announcement_text = "%SPOOKY% The nobleman of void %NAME% has arrived, stepping along the Waltz that ends worlds! %SPOOKY%"
+ announcement_sound = 'sound/ambience/antag/heretic/ascend_void.ogg'
///soundloop for the void theme
var/datum/looping_sound/void_loop/sound_loop
///Reference to the ongoing voidstrom that surrounds the heretic
@@ -202,14 +205,7 @@
/datum/heretic_knowledge/ultimate/void_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
- priority_announce(
- text = "[generate_heretic_text()] The nobleman of void [user.real_name] has arrived, stepping along the Waltz that ends worlds! [generate_heretic_text()]",
- title = "[generate_heretic_text()]",
- sound = 'sound/ambience/antag/heretic/ascend_void.ogg',
- color_override = "pink",
- )
- user.client?.give_award(/datum/award/achievement/misc/void_ascension, user)
- ADD_TRAIT(user, TRAIT_RESISTLOWPRESSURE, MAGIC_TRAIT)
+ ADD_TRAIT(user, TRAIT_RESISTLOWPRESSURE, type)
// Let's get this show on the road!
sound_loop = new(user, TRUE, TRUE)
diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm
index c5c22c997064..f5e75b2855df 100644
--- a/code/modules/cargo/packs/security.dm
+++ b/code/modules/cargo/packs/security.dm
@@ -226,6 +226,22 @@
crate_name = "energy gun crate"
crate_type = /obj/structure/closet/crate/secure/plasma
+/datum/supply_pack/security/armory/laser_carbine
+ name = "Laser Carbine Crate"
+ desc = "Contains three laser carbines, capable of rapidly firing weak lasers."
+ cost = CARGO_CRATE_VALUE * 9
+ contains = list(/obj/item/gun/energy/laser/carbine = 3)
+ crate_name = "laser carbine crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+
+/datum/supply_pack/security/armory/disabler_smg
+ name = "Disabler SMG Crate"
+ desc = "Contains three disabler SMGs, capable of rapidly firing weak disabler beams."
+ cost = CARGO_CRATE_VALUE * 7
+ contains = list(/obj/item/gun/energy/disabler/smg = 3)
+ crate_name = "disabler smg crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+
/datum/supply_pack/security/armory/exileimp
name = "Exile Implants Crate"
desc = "Contains five Exile implants."
diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm
index 4b59a2f8e738..7d726960b5be 100644
--- a/code/modules/client/client_defines.dm
+++ b/code/modules/client/client_defines.dm
@@ -275,9 +275,6 @@
/// Does this client have typing indicators enabled?
var/typing_indicators = FALSE
- /// used for rewarding players monkecoins at round end
- var/reward_this_person = 0
-
/// Does this client's mob need to rebuild its plane masters after login?
/// This is currently only used so a client can switch between 515 and 516 without breaking their rendering.
var/rebuild_plane_masters = FALSE
diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm
index 658d6f578887..8187dc723e3c 100644
--- a/code/modules/client/player_details.dm
+++ b/code/modules/client/player_details.dm
@@ -27,6 +27,12 @@ GLOBAL_LIST_EMPTY_TYPED(player_details, /datum/player_details)
src.ckey = ckey(player_key)
achievements = new(src.ckey)
+/datum/player_details/Destroy(force)
+ if(!force)
+ stack_trace("Something is trying to delete player details for [ckey]")
+ return QDEL_HINT_LETMELIVE
+ return ..()
+
/// Returns the full version string (i.e 515.1642) of the BYOND version and build.
/datum/player_details/proc/full_byond_version()
if(!byond_version)
diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm
index 73e6af9a90a3..c73fdbd45f26 100644
--- a/code/modules/clothing/outfits/ert.dm
+++ b/code/modules/clothing/outfits/ert.dm
@@ -283,7 +283,7 @@
..()
if(visualsOnly)
return
- ADD_TRAIT(H, TRAIT_NAIVE, INNATE_TRAIT)
+ ADD_TRAIT(H.mind, TRAIT_NAIVE, INNATE_TRAIT)
H.dna.add_mutation(/datum/mutation/human/clumsy)
for(var/datum/mutation/human/clumsy/M in H.dna.mutations)
M.mutadone_proof = TRUE
diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm
index 7d1f5f52e462..66b768ee9cdf 100644
--- a/code/modules/clothing/suits/costume.dm
+++ b/code/modules/clothing/suits/costume.dm
@@ -27,7 +27,7 @@
icon_state = "pirate"
inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
- allowed = list(/obj/item/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/cup/glass/bottle/rum)
+ allowed = list(/obj/item/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/cup/glass/bottle/rum, /obj/item/gun/energy/laser/musket, /obj/item/gun/energy/disabler/smoothbore)
species_exception = list(/datum/species/golem)
/obj/item/clothing/suit/costume/pirate/armored
diff --git a/code/modules/clothing/suits/jacket.dm b/code/modules/clothing/suits/jacket.dm
index 4b8db2052995..deeb3d290c09 100644
--- a/code/modules/clothing/suits/jacket.dm
+++ b/code/modules/clothing/suits/jacket.dm
@@ -62,7 +62,7 @@
inhand_icon_state = "hostrench"
resistance_flags = NONE
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/c38/detective, /obj/item/radio)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/c38/detective, /obj/item/gun/energy/laser/musket, /obj/item/gun/ballistic/rifle/boltaction/pipegun, /obj/item/radio)
species_exception = list(/datum/species/golem/bone) //bad to the bone
/obj/item/clothing/suit/jacket/leather/biker
@@ -98,7 +98,7 @@
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable."
icon_state = "militaryjacket"
inhand_icon_state = null
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/radio)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/energy/laser/musket, /obj/item/gun/ballistic/rifle/boltaction/pipegun, /obj/item/radio) //monkestation edit
/obj/item/clothing/suit/jacket/letterman
name = "letterman jacket"
@@ -119,6 +119,7 @@
desc = "Oddly, this jacket seems to have a large S on the back..."
icon_state = "letterman_s"
inhand_icon_state = null
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/energy/laser/musket, /obj/item/gun/ballistic/rifle/boltaction/pipegun, /obj/item/radio) //monkestation edit
species_exception = list(/datum/species/golem)
/obj/item/clothing/suit/jacket/letterman_nanotrasen
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index cf7aed8ec995..cb7a3dc7947c 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -161,8 +161,11 @@
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/plasmaman,
/obj/item/t_scanner,
+ /obj/item/gun/ballistic/rifle/boltaction/pipegun,
/obj/item/gun/ballistic/rifle/boltaction/pipegun/prime,
/obj/item/tank/internals/oxygen, //monkestation edit
+ /obj/item/storage/bag/rebar_quiver,
+ /obj/item/gun/ballistic/rifle/rebarxbow,
)
resistance_flags = NONE
species_exception = list(/datum/species/golem)
diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm
index 51a85dbac59d..1388818efbf0 100644
--- a/code/modules/clothing/suits/wintercoats.dm
+++ b/code/modules/clothing/suits/wintercoats.dm
@@ -469,6 +469,10 @@
/obj/item/pipe_dispenser,
/obj/item/storage/bag/construction,
/obj/item/t_scanner,
+ /obj/item/construction/rld,
+ /obj/item/construction/rtd,
+ /obj/item/gun/ballistic/rifle/rebarxbow,
+ /obj/item/storage/bag/rebar_quiver,
)
armor_type = /datum/armor/wintercoat_engineering
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering
diff --git a/code/modules/events/wizard/tower_of_babel.dm b/code/modules/events/wizard/tower_of_babel.dm
index 316d7520e8e5..31742cec7ae9 100644
--- a/code/modules/events/wizard/tower_of_babel.dm
+++ b/code/modules/events/wizard/tower_of_babel.dm
@@ -1,3 +1,4 @@
+/* monkestation removal. if you REALLY want to do this for some reason, call the proc yourself.
/datum/round_event_control/wizard/tower_of_babel
name = "Tower of Babel"
weight = 3
@@ -10,4 +11,4 @@
/datum/round_event/wizard/tower_of_babel/start()
GLOB.tower_of_babel = new /datum/tower_of_babel()
-
+monkestation end */
diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm
index 6f8273f8ce3e..17a2cbc9656e 100644
--- a/code/modules/holiday/holidays.dm
+++ b/code/modules/holiday/holidays.dm
@@ -693,7 +693,7 @@
/datum/holiday/xmas
name = CHRISTMAS
- begin_day = 23
+ begin_day = 8 // monkestation edit
begin_month = DECEMBER
end_day = 27
holiday_hat = /obj/item/clothing/head/costume/santa
diff --git a/code/modules/language/language_manuals.dm b/code/modules/language/language_manuals.dm
index 15fff94b251f..a0158606393c 100644
--- a/code/modules/language/language_manuals.dm
+++ b/code/modules/language/language_manuals.dm
@@ -20,7 +20,7 @@
user.grant_language(language)
user.remove_blocked_language(language, source=LANGUAGE_ALL)
- ADD_TRAIT(user, TRAIT_TOWER_OF_BABEL, MAGIC_TRAIT) // this makes you immune to babel effects
+ ADD_TRAIT(user.mind, TRAIT_TOWER_OF_BABEL, MAGIC_TRAIT) // this makes you immune to babel effects
use_charge(user)
diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm
index dab230b26d2d..a67a9fb483cf 100644
--- a/code/modules/mining/lavaland/tendril_loot.dm
+++ b/code/modules/mining/lavaland/tendril_loot.dm
@@ -508,7 +508,7 @@
cure_curse_of_babel(user) // removes tower of babel if we have it
user.grant_all_languages(source=LANGUAGE_BABEL)
user.remove_blocked_language(GLOB.all_languages, source = LANGUAGE_ALL)
- ADD_TRAIT(user, TRAIT_TOWER_OF_BABEL, MAGIC_TRAIT) // this makes you immune to babel effects
+ ADD_TRAIT(user.mind, TRAIT_TOWER_OF_BABEL, MAGIC_TRAIT) // this makes you immune to babel effects
new /obj/effect/decal/cleanable/ash(get_turf(user))
qdel(src)
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 5f0a7ecda1cc..6fb429925942 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -197,14 +197,15 @@
SSjob.EquipRank(character, job, character.client)
job.after_latejoin_spawn(character)
- if(character.client && length(character.client?.active_challenges))
- SSchallenges.apply_challenges(character.client)
- for(var/processing_reward_bitflags in SSticker.bitflags_to_reward)//you really should use department bitflags if possible
- if(character.mind.assigned_role.departments_bitflags & processing_reward_bitflags)
- character.client.reward_this_person += 425
- for(var/processing_reward_jobs in SSticker.jobs_to_reward)//just in case you really only want to reward a specific job
- if(character.job == processing_reward_jobs)
- character.client.reward_this_person += 425
+ var/datum/player_details/details = get_player_details(character)
+ if(details)
+ SSchallenges.apply_challenges(details)
+ for(var/processing_reward_bitflags in SSticker.bitflags_to_reward)//you really should use department bitflags if possible
+ if(character.mind.assigned_role.departments_bitflags & processing_reward_bitflags)
+ details.roundend_monkecoin_bonus += 425
+ for(var/processing_reward_jobs in SSticker.jobs_to_reward)//just in case you really only want to reward a specific job
+ if(character.job == processing_reward_jobs)
+ details.roundend_monkecoin_bonus += 425
#define IS_NOT_CAPTAIN 0
#define IS_ACTING_CAPTAIN 1
#define IS_FULL_CAPTAIN 2
diff --git a/code/modules/mob/living/basic/basic.dm b/code/modules/mob/living/basic/basic.dm
index e5092601c294..dbed737bdf4b 100644
--- a/code/modules/mob/living/basic/basic.dm
+++ b/code/modules/mob/living/basic/basic.dm
@@ -234,7 +234,7 @@
. = ..()
if(stat != DEAD)
return
- . += span_deadsay("Upon closer examination, [p_they()] appear[p_s()] to be [HAS_TRAIT(user.mind, TRAIT_NAIVE) ? "asleep" : "dead"].")
+ . += span_deadsay("Upon closer examination, [p_they()] appear[p_s()] to be [HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "asleep" : "dead"].")
/mob/living/basic/proc/melee_attack(atom/target, list/modifiers, ignore_cooldown = FALSE)
face_atom(target)
diff --git a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm
index b52c2d137c2d..b6f904a249c0 100644
--- a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm
+++ b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm
@@ -99,6 +99,7 @@
///blood we can clean
var/static/list/cleanable_blood = typecacheof(list(
/obj/effect/decal/cleanable/blood,
+ /obj/effect/decal/cleanable/xenoblood, // monkestation addition
))
///pests we hunt
var/static/list/huntable_pests = typecacheof(list(
diff --git a/code/modules/mob/living/basic/space_fauna/carp/magicarp.dm b/code/modules/mob/living/basic/space_fauna/carp/magicarp.dm
index 65d16cfb490d..a4ea855ff410 100644
--- a/code/modules/mob/living/basic/space_fauna/carp/magicarp.dm
+++ b/code/modules/mob/living/basic/space_fauna/carp/magicarp.dm
@@ -9,7 +9,7 @@ GLOBAL_LIST_INIT(magicarp_spell_types, list(
/obj/projectile/magic/resurrection = "vital",
/obj/projectile/magic/spellblade = "vorpal",
/obj/projectile/magic/teleport = "warping",
- /obj/projectile/magic/babel = "babbling",
+ /* /obj/projectile/magic/babel = "babbling", [monkestation removal: staff of babel is admin-only now] */
))
/// A reduced list of spells for magicarp spawned in xenobiology, less disruptive
@@ -33,7 +33,7 @@ GLOBAL_LIST_INIT(magicarp_spell_colours, list(
/obj/projectile/magic/resurrection = COLOR_CARP_PALE_GREEN,
/obj/projectile/magic/spellblade = COLOR_CARP_SILVER,
/obj/projectile/magic/teleport = COLOR_CARP_GRAPE,
- /obj/projectile/magic/babel = COLOR_CARP_BROWN,
+ /* /obj/projectile/magic/babel = COLOR_CARP_BROWN, [monkestation removal: staff of babel is admin-only now] */
))
/**
diff --git a/code/modules/mob/living/carbon/carbon_say.dm b/code/modules/mob/living/carbon/carbon_say.dm
index c84f83a30e5e..3e4c29fa0e83 100644
--- a/code/modules/mob/living/carbon/carbon_say.dm
+++ b/code/modules/mob/living/carbon/carbon_say.dm
@@ -10,6 +10,6 @@
var/obj/item/organ/internal/tongue/spoken_with = get_organ_slot(ORGAN_SLOT_TONGUE)
if(spoken_with)
// the tower of babel needs to bypass the tongue language restrictions without giving omnitongue
- return HAS_TRAIT(src, TRAIT_TOWER_OF_BABEL) || spoken_with.could_speak_language(language_path)
+ return HAS_MIND_TRAIT(src, TRAIT_TOWER_OF_BABEL) || spoken_with.could_speak_language(language_path)
return initial(language_path.flags) & TONGUELESS_SPEECH
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 9755634c3422..046837b18a9f 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -120,7 +120,7 @@
var/obj/item/clothing/glasses/G = get_item_by_slot(ITEM_SLOT_EYES)
var/are_we_in_weekend_at_bernies = G?.tint && buckled && istype(buckled, /obj/vehicle/ridden/wheelchair)
- if(isliving(user) && (HAS_TRAIT(user, TRAIT_NAIVE) || are_we_in_weekend_at_bernies))
+ if(isliving(user) && (HAS_MIND_TRAIT(user, TRAIT_NAIVE) || are_we_in_weekend_at_bernies))
just_sleeping = TRUE
if(!just_sleeping)
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index 2debc27d52f5..47d142a54871 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -257,6 +257,9 @@
return
var/kiss_type = /obj/item/hand_item/kisser
+ if(HAS_TRAIT(user, TRAIT_SYNDIE_KISS))
+ kiss_type = /obj/item/hand_item/kisser/syndie
+
if(HAS_TRAIT(user, TRAIT_KISS_OF_DEATH))
kiss_type = /obj/item/hand_item/kisser/death
diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm
index 7025795385d9..f68d18969d10 100644
--- a/code/modules/mob/living/living_say.dm
+++ b/code/modules/mob/living/living_say.dm
@@ -28,6 +28,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
// Misc
RADIO_KEY_AI_PRIVATE = RADIO_CHANNEL_AI_PRIVATE, // AI Upload channel
+ RADIO_KEY_UNCOMMON = RADIO_CHANNEL_UNCOMMON,
//kinda localization -- rastaf0
@@ -56,7 +57,8 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
"в" = MODE_KEY_DEADMIN,
// Misc
- "щ" = RADIO_CHANNEL_AI_PRIVATE
+ "щ" = RADIO_CHANNEL_AI_PRIVATE,
+ "f" = RADIO_CHANNEL_UNCOMMON
))
/**
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index a3f79cf4f1df..879503f2b7b1 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -298,7 +298,8 @@
visible_message(span_boldnotice("[src] blows apart!"))
do_sparks(3, TRUE, src)
var/atom/location_destroyed = drop_location()
- if(prob(50))
+
+ if(prob(50) && (bot_type != HONK_BOT))
drop_part(robot_arm, location_destroyed)
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/feral.dm b/code/modules/mob/living/simple_animal/hostile/feral.dm
new file mode 100644
index 000000000000..307e31892fbe
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/feral.dm
@@ -0,0 +1,76 @@
+/mob/living/simple_animal/hostile/feral
+ name = "feral cat"
+ desc = "Kitty!! Wait, no no DON'T BITE-"
+ health = 30
+ maxHealth = 30
+ melee_damage_lower = 7
+ melee_damage_upper = 15
+ icon = 'icons/mob/simple/pets.dmi'
+ icon_state = "cat2"
+ icon_living = "cat2"
+ icon_dead = "cat2_dead"
+ held_state = "cat2"
+ speak = list("Meow!", "Esp!", "Purr!", "HSSSSS")
+ speak_emote = list("purrs", "meows")
+ emote_hear = list("meows.", "mews.")
+ emote_see = list("shakes their head.", "shivers.")
+ speak_chance = 1
+ turns_per_move = 5
+ mob_size = MOB_SIZE_SMALL
+ mob_biotypes = MOB_ORGANIC|MOB_BEAST
+ bodytemp_cold_damage_limit = 200
+ bodytemp_heat_damage_limit = 400
+ unsuitable_atmos_damage = 0.5
+ animal_species = /mob/living/simple_animal/pet/cat
+ butcher_results = list(/obj/item/food/meat/slab = 1, /obj/item/organ/internal/ears/cat = 1, /obj/item/organ/external/tail/cat = 1, /obj/item/stack/sheet/animalhide/cat = 1)
+ response_help_continuous = "pets"
+ response_help_simple = "pet"
+ response_disarm_continuous = "gently pushes aside"
+ response_disarm_simple = "gently push aside"
+ response_harm_continuous = "kicks"
+ response_harm_simple = "kick"
+ faction = list(FACTION_CAT, ROLE_SYNDICATE)
+ attack_verb_continuous = "claws"
+ attack_verb_simple = "claw"
+ attack_sound = 'sound/weapons/slash.ogg'
+ attack_vis_effect = ATTACK_EFFECT_CLAW
+ footstep_type = FOOTSTEP_MOB_CLAW
+
+/mob/living/simple_animal/hostile/feraltabby
+ name = "feral cat"
+ desc = "Kitty!! Wait, no no DON'T BITE-"
+ health = 45
+ maxHealth = 45
+ melee_damage_lower = 10
+ melee_damage_upper = 20
+ icon = 'icons/mob/simple/pets.dmi'
+ icon_state = "cat"
+ icon_living = "cat"
+ icon_dead = "cat_dead"
+ held_state = "cat"
+ speak = list("Meow!", "Esp!", "Purr!", "HSSSSS")
+ speak_emote = list("purrs", "meows")
+ emote_hear = list("meows.", "mews.")
+ emote_see = list("shakes their head.", "shivers.")
+ speak_chance = 1
+ turns_per_move = 5
+ mob_size = MOB_SIZE_SMALL
+ mob_biotypes = MOB_ORGANIC|MOB_BEAST
+ bodytemp_cold_damage_limit = 200
+ bodytemp_heat_damage_limit = 400
+ unsuitable_atmos_damage = 0.5
+ animal_species = /mob/living/simple_animal/pet/cat
+ childtype = list(/mob/living/simple_animal/pet/cat/kitten = 1)
+ butcher_results = list(/obj/item/food/meat/slab = 1, /obj/item/organ/internal/ears/cat = 1, /obj/item/organ/external/tail/cat = 1, /obj/item/stack/sheet/animalhide/cat = 1)
+ response_help_continuous = "pets"
+ response_help_simple = "pet"
+ response_disarm_continuous = "gently pushes aside"
+ response_disarm_simple = "gently push aside"
+ response_harm_continuous = "kicks"
+ response_harm_simple = "kick"
+ faction = list(FACTION_CAT, ROLE_SYNDICATE)
+ attack_verb_continuous = "claws"
+ attack_verb_simple = "claw"
+ attack_sound = 'sound/weapons/slash.ogg'
+ attack_vis_effect = ATTACK_EFFECT_CLAW
+ footstep_type = FOOTSTEP_MOB_CLAW
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicat.dm b/code/modules/mob/living/simple_animal/hostile/syndicat.dm
new file mode 100644
index 000000000000..0f02bc3cd091
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/syndicat.dm
@@ -0,0 +1,46 @@
+/mob/living/simple_animal/hostile/syndicat
+ name = "Syndie Cat"
+ desc = "OH GOD! RUN!! IT CAN SMELL THE DISK!"
+ icon = 'icons/mob/simple/pets.dmi'
+ icon_state = "syndicat"
+ icon_living = "syndicat"
+ icon_dead = "syndicat_dead"
+ held_state = "syndicat"
+ speak = list("Meow!", "Esp!", "Purr!", "HSSSSS")
+ speak_emote = list("purrs", "meows")
+ emote_hear = list("meows.", "mews.")
+ emote_see = list("shakes their head.", "shivers.")
+ speak_chance = 1
+ turns_per_move = 5
+ mob_size = MOB_SIZE_SMALL
+ mob_biotypes = MOB_ORGANIC|MOB_BEAST
+ bodytemp_cold_damage_limit = TCMB
+ bodytemp_heat_damage_limit = T0C + 40
+ unsuitable_atmos_damage = 0
+ animal_species = /mob/living/simple_animal/pet/cat
+ childtype = list(/mob/living/simple_animal/pet/cat/kitten = 1)
+ butcher_results = list(/obj/item/food/meat/slab = 1, /obj/item/organ/internal/ears/cat = 1, /obj/item/organ/external/tail/cat = 1, /obj/item/stack/sheet/animalhide/cat = 1)
+ response_help_continuous = "pets"
+ response_help_simple = "pet"
+ response_disarm_continuous = "gently pushes aside"
+ response_disarm_simple = "gently push aside"
+ response_harm_continuous = "kicks"
+ response_harm_simple = "kick"
+ health = 80
+ maxHealth = 80
+ melee_damage_lower = 20
+ melee_damage_upper = 35
+ faction = list(FACTION_CAT, ROLE_SYNDICATE)
+ can_be_held = TRUE
+ attack_verb_continuous = "claws"
+ attack_verb_simple = "claw"
+ attack_sound = 'sound/weapons/slash.ogg'
+ attack_vis_effect = ATTACK_EFFECT_CLAW
+ footstep_type = FOOTSTEP_MOB_CLAW
+
+/mob/living/simple_animal/hostile/syndicat/Initialize(mapload)
+ . = ..()
+ var/obj/item/implant/toinstall = list(/obj/item/implant/weapons_auth, /obj/item/implant/explosive)
+ for(var/obj/item/implant/original_implants as anything in toinstall)
+ var/obj/item/implant/copied_implant = new original_implants.type
+ copied_implant.implant(src, silent = TRUE, force = TRUE)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 9ff9a0cf3def..76256c94d708 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -211,7 +211,7 @@
/mob/living/simple_animal/examine(mob/user)
. = ..()
if(stat == DEAD)
- if(HAS_TRAIT(user, TRAIT_NAIVE))
+ if(HAS_MIND_TRAIT(user, TRAIT_NAIVE))
. += span_deadsay("Upon closer examination, [p_they()] appear[p_s()] to be asleep.")
else
. += span_deadsay("Upon closer examination, [p_they()] appear[p_s()] to be dead.")
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index 49bae89b563c..4eda376ffe69 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -276,7 +276,7 @@
///security level and shuttle lockdowns for [/proc/begin_the_end()]
/proc/narsie_start_destroy_station()
- SSsecurity_level.set_level(SEC_LEVEL_DELTA)
+ SSsecurity_level.set_level(SEC_LEVEL_LAMBDA)
SSshuttle.registerHostileEnvironment(GLOB.cult_narsie)
SSshuttle.lockdown = TRUE
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(narsie_apocalypse)), 1 MINUTES)
diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm
index 9d785ba091f2..eb897905f9d2 100644
--- a/code/modules/projectiles/ammunition/ballistic/rifle.dm
+++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm
@@ -40,6 +40,69 @@
icon_state = "40mmHE"
projectile_type = /obj/projectile/bullet/a40mm
+/obj/item/ammo_casing/rebar
+ name = "Sharpened Iron Rod"
+ desc = "A Sharpened Iron rod. It's Pointy!"
+ caliber = CALIBER_REBAR
+ icon_state = "rod_sharp"
+ base_icon_state = "rod_sharp"
+ projectile_type = /obj/projectile/bullet/rebar
+
+/obj/item/ammo_casing/rebar/syndie
+ name = "Jagged Iron Rod"
+ desc = "An Iron rod, with notches cut into it. You really dont want this stuck in you."
+ caliber = CALIBER_REBAR
+ icon_state = "rod_jagged"
+ base_icon_state = "rod_jagged"
+ projectile_type = /obj/projectile/bullet/rebar/syndie
+
+/obj/item/ammo_casing/rebar/zaukerite
+ name = "Zaukerite Sliver"
+ desc = "A sliver of a zaukerite crystal. Due to its irregular, jagged edges, removal of an embedded zaukerite sliver should only be done by trained surgeons."
+ caliber = CALIBER_REBAR
+ icon_state = "rod_zaukerite"
+ base_icon_state = "rod_zaukerite"
+ projectile_type = /obj/projectile/bullet/rebar/zaukerite
+
+/obj/item/ammo_casing/rebar/hydrogen
+ name = "Metallic Hydrogen Bolt"
+ desc = "An ultra-sharp rod made from pure metallic hydrogen. Armor may as well not exist."
+ caliber = CALIBER_REBAR
+ icon_state = "rod_hydrogen"
+ base_icon_state = "rod_hydrogen"
+ projectile_type = /obj/projectile/bullet/rebar/hydrogen
+
+/obj/item/ammo_casing/rebar/healium
+ name = "Healium Crystal Bolt"
+ desc = "Who needs a syringe gun, anyway?"
+ caliber = CALIBER_REBAR
+ icon_state = "rod_healium"
+ base_icon_state = "rod_healium"
+ projectile_type = /obj/projectile/bullet/rebar/healium
+
+/obj/item/ammo_casing/rebar/supermatter
+ name = "Supermatter Bolt"
+ desc = "Wait, how is the bow capable of firing this without dusting?"
+ caliber = CALIBER_REBAR
+ icon_state = "rod_supermatter"
+ base_icon_state = "rod_supermatter"
+ projectile_type = /obj/projectile/bullet/rebar/supermatter
+
+/obj/item/ammo_casing/rebar/paperball
+ name = "Paper Ball"
+ desc = "Doink!"
+ caliber = CALIBER_REBAR
+ icon_state = "paperball"
+ base_icon_state = "paperball"
+ projectile_type = /obj/projectile/bullet/paperball
+
+/obj/item/ammo_casing/rebar/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/caseless, TRUE)
+
+/obj/item/ammo_casing/rebar/update_icon_state()
+ . = ..()
+ icon_state = "[base_icon_state]"
/obj/item/ammo_casing/a223
name = ".223 bullet casing"
diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm
index 42ba3abee6ff..f740447fd8da 100644
--- a/code/modules/projectiles/ammunition/energy/laser.dm
+++ b/code/modules/projectiles/ammunition/energy/laser.dm
@@ -16,6 +16,11 @@
e_cost = 62.5
select_name = "kill"
+/obj/item/ammo_casing/energy/lasergun/carbine
+ projectile_type = /obj/projectile/beam/laser/carbine
+ e_cost = 25 // 40 shots
+ select_name = "kill"
+
/obj/item/ammo_casing/energy/lasergun/old
projectile_type = /obj/projectile/beam/laser
e_cost = 200
@@ -30,6 +35,8 @@
/obj/item/ammo_casing/energy/laser/musket/prime
projectile_type = /obj/projectile/beam/laser/musket/prime
+ pellets = 3
+ variance = 10
/obj/item/ammo_casing/energy/laser/practice
projectile_type = /obj/projectile/beam/practice
diff --git a/code/modules/projectiles/ammunition/energy/stun.dm b/code/modules/projectiles/ammunition/energy/stun.dm
index 77ca619f094a..9e4aea73f6ff 100644
--- a/code/modules/projectiles/ammunition/energy/stun.dm
+++ b/code/modules/projectiles/ammunition/energy/stun.dm
@@ -25,6 +25,11 @@
fire_sound = 'sound/weapons/taser2.ogg'
harmful = FALSE
+/obj/item/ammo_casing/energy/disabler/smg
+ projectile_type = /obj/projectile/beam/disabler/weak
+ e_cost = 40
+ fire_sound = 'sound/weapons/taser3.ogg'
+
/obj/item/ammo_casing/energy/disabler/hos
e_cost = 60
diff --git a/code/modules/projectiles/boxes_magazines/internal/rifle.dm b/code/modules/projectiles/boxes_magazines/internal/rifle.dm
index 67afbed5b41d..1fa7c9d1ab7d 100644
--- a/code/modules/projectiles/boxes_magazines/internal/rifle.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/rifle.dm
@@ -32,3 +32,20 @@
max_ammo = 1
caliber = CALIBER_HARPOON
ammo_type = /obj/item/ammo_casing/caseless/harpoon
+
+/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/normal
+ name = "single round magazine"
+ max_ammo = 1
+ caliber = CALIBER_REBAR
+ ammo_type = /obj/item/ammo_casing/rebar
+
+/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/force
+ name = "two round magazine"
+ max_ammo = 2
+ caliber = CALIBER_REBAR_FORCED
+ ammo_type = /obj/item/ammo_casing/rebar
+
+/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie
+ max_ammo = 3
+ caliber = CALIBER_REBAR_SYNDIE
+ ammo_type = /obj/item/ammo_casing/rebar
diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm
index 4f05d6a6eff2..7edfc7dab7b9 100644
--- a/code/modules/projectiles/guns/ballistic/rifle.dm
+++ b/code/modules/projectiles/guns/ballistic/rifle.dm
@@ -162,6 +162,88 @@
if(.)
name = "\improper Regal Obrez" // wear it loud and proud
+/obj/item/gun/ballistic/rifle/rebarxbow
+ name = "Heated Rebar Crossbow"
+ desc = "Made from an inducer, iron rods, and some wire, this crossbow fires sharpened iron rods, made from the plentiful iron rods found stationwide. \
+ Additionally, can fire specialty ammo made from the materials in the atmos crystalizer - zaukerite, metallic hydrogen, and healium crytals all work. \
+ Very slow to reload - you can craft the crossbow with a crowbar to try loosen the crossbar, but risks a misfire, or worse..."
+ icon = 'icons/obj/weapons/guns/ballistic.dmi'
+ icon_state = "rebarxbow"
+ inhand_icon_state = "rebarxbow"
+ worn_icon_state = "rebarxbow"
+ rack_sound = 'sound/weapons/gun/sniper/rack.ogg'
+ mag_display = FALSE
+ empty_indicator = TRUE
+ bolt_type = BOLT_TYPE_LOCKING
+ semi_auto = FALSE
+ internal_magazine = TRUE
+ can_modify_ammo = FALSE
+ slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_SUITSTORE
+ bolt_wording = "bowstring"
+ magazine_wording = "rod"
+ cartridge_wording = "rod"
+ misfire_probability = 25
+ initial_caliber = CALIBER_REBAR
+ accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/normal
+ fire_sound = 'sound/items/xbow_lock.ogg'
+ can_be_sawn_off = FALSE
+ tac_reloads = FALSE
+ var/draw_time = 3 SECONDS
+ SET_BASE_PIXEL(0, 0)
+
+/obj/item/gun/ballistic/rifle/rebarxbow/rack(mob/user = null)
+ if (bolt_locked)
+ drop_bolt(user)
+ return
+ balloon_alert(user, "bowstring loosened")
+ playsound(src, rack_sound, rack_sound_volume, rack_sound_vary)
+ handle_chamber(empty_chamber = FALSE, from_firing = FALSE, chamber_next_round = FALSE)
+ bolt_locked = TRUE
+ update_appearance()
+
+/obj/item/gun/ballistic/rifle/rebarxbow/drop_bolt(mob/user = null)
+ if(!do_after(user, draw_time, target = src))
+ return
+ playsound(src, bolt_drop_sound, bolt_drop_sound_volume, FALSE)
+ balloon_alert(user, "bowstring drawn")
+ chamber_round()
+ bolt_locked = FALSE
+ update_appearance()
+
+/obj/item/gun/ballistic/rifle/rebarxbow/can_shoot()
+ if (bolt_locked)
+ return FALSE
+ return ..()
+
+/obj/item/gun/ballistic/rifle/rebarxbow/examine(mob/user)
+ . = ..()
+ . += "The crossbow is [bolt_locked ? "not ready" : "ready"] to fire."
+
+/obj/item/gun/ballistic/rifle/rebarxbow/forced
+ name = "Stressed Rebar Crossbow"
+ desc = "Some idiot decided that they would risk shooting themselves in the face if it meant they could have a draw this crossbow a bit faster. Hopefully, it was worth it."
+ // Feel free to add a recipe to allow you to change it back if you would like, I just wasn't sure if you could have two recipes for the same thing.
+ can_misfire = TRUE
+ draw_time = 1.5
+ misfire_probability = 25
+ accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/force
+
+/obj/item/gun/ballistic/rifle/rebarxbow/syndie
+ name = "Syndicate Rebar Crossbow"
+ desc = "The syndicate liked the bootleg rebar crossbow NT engineers made, so they showed what it could be if properly developed. \
+ Holds three shots without a chance of exploding, and features a built in scope. Compatable with all known crossbow ammunition."
+ icon_state = "rebarxbowsyndie"
+ inhand_icon_state = "rebarxbowsyndie"
+ worn_icon_state = "rebarxbowsyndie"
+ w_class = WEIGHT_CLASS_NORMAL
+ initial_caliber = CALIBER_REBAR
+ draw_time = 1
+ accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie
+
+/obj/item/gun/ballistic/rifle/rebarxbow/syndie/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/scope, range_modifier = 2) //enough range to at least be useful for stealth
+
/obj/item/gun/ballistic/rifle/boltaction/pipegun
name = "pipegun"
desc = "An excellent weapon for flushing out tunnel rats and enemy assistants, but its rifling leaves much to be desired."
diff --git a/code/modules/projectiles/guns/energy/crank_guns.dm b/code/modules/projectiles/guns/energy/crank_guns.dm
index 70a726d81d2b..57519a98ab9c 100644
--- a/code/modules/projectiles/guns/energy/crank_guns.dm
+++ b/code/modules/projectiles/guns/energy/crank_guns.dm
@@ -15,7 +15,6 @@
/obj/item/gun/energy/laser/musket/Initialize(mapload)
. = ..()
- AddComponent(/datum/component/two_handed, require_twohands = TRUE, force_wielded = 10)
AddComponent( \
/datum/component/gun_crank, \
charging_cell = get_cell(), \
@@ -23,6 +22,7 @@
cooldown_time = 3 SECONDS, \
charge_sound = 'sound/weapons/laser_crank.ogg', \
charge_sound_cooldown_time = 1.8 SECONDS, \
+ charge_move = IGNORE_USER_LOC_CHANGE, \
)
/obj/item/gun/energy/laser/musket/prime
@@ -62,6 +62,7 @@
cooldown_time = 2 SECONDS, \
charge_sound = 'sound/weapons/laser_crank.ogg', \
charge_sound_cooldown_time = 1.8 SECONDS, \
+ charge_move = IGNORE_USER_LOC_CHANGE, \
)
/obj/item/gun/energy/disabler/smoothbore/add_seclight_point()
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index ad5a5ce92795..4ecb1b1d2cd1 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -23,6 +23,16 @@
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's private security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
ammo_x_offset = 3
+/obj/item/gun/energy/laser/carbine
+ name = "laser carbine"
+ desc = "A modified laser gun which can shoot far faster, but each shot is far less damaging."
+ icon_state = "laser_carbine"
+ ammo_type = list(/obj/item/ammo_casing/energy/lasergun/carbine)
+
+/obj/item/gun/energy/laser/carbine/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/automatic_fire, 0.15 SECONDS, allow_akimbo = FALSE)
+
/obj/item/gun/energy/laser/retro/old
name ="laser gun"
icon_state = "retro"
diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm
index 635570fbb15c..e099176ddd01 100644
--- a/code/modules/projectiles/guns/energy/stun.dm
+++ b/code/modules/projectiles/guns/energy/stun.dm
@@ -40,6 +40,26 @@
overlay_x = 15, \
overlay_y = 10)
+/obj/item/gun/energy/disabler/smg
+ name = "disabler smg"
+ desc = "An automatic disabler variant, as opposed to the conventional model, boasts a higher ammunition capacity at the cost of slightly reduced beam effectiveness."
+ icon_state = "disabler_smg"
+ ammo_type = list(/obj/item/ammo_casing/energy/disabler/smg)
+ shaded_charge = 1
+
+/obj/item/gun/energy/disabler/smg/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/automatic_fire, 0.15 SECONDS, allow_akimbo = FALSE)
+
+/obj/item/gun/energy/disabler/add_seclight_point()
+ AddComponent(\
+ /datum/component/seclite_attachable, \
+ light_overlay_icon = 'icons/obj/weapons/guns/flashlights.dmi', \
+ light_overlay = "flight", \
+ overlay_x = 15, \
+ overlay_y = 13, \
+ )
+
/obj/item/gun/energy/disabler/cyborg
name = "cyborg disabler"
desc = "An integrated disabler that draws from a cyborg's power cell. This weapon contains a limiter to prevent the cyborg's power cell from overheating."
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index cbf47d7cdba7..d47c2c05a5be 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -281,7 +281,7 @@
hitx = target.pixel_x + rand(-8, 8)
hity = target.pixel_y + rand(-8, 8)
- if((isturf(target) || (isobj(target) && target.density)) && hitsound_wall)
+ if(isturf(target_turf) && hitsound_wall)
var/volume = clamp(vol_by_damage() + 20, 0, 100)
if(suppressed)
volume = 5
@@ -293,11 +293,7 @@
if(damage > 0 && (damage_type == BRUTE || damage_type == BURN) && iswallturf(target_turf) && prob(75))
var/turf/closed/wall/target_wall = target_turf
target_wall.add_dent(WALL_DENT_SHOT, hitx, hity)
- if(isturf(target) && hitsound_wall)
- var/volume = clamp(vol_by_damage() + 20, 0, 100)
- if(suppressed)
- volume = 5
- playsound(loc, hitsound_wall, volume, TRUE, -1)
+
return BULLET_ACT_HIT
var/mob/living/living_target = target
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 3266a8a309ee..c1029ea432de 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -28,6 +28,11 @@
wound_bonus = -30
bare_wound_bonus = 40
+/obj/projectile/beam/laser/carbine
+ icon_state = "carbine_laser"
+ impact_effect_type = /obj/effect/temp_visual/impact_effect/yellow_laser
+ damage = 10
+
//overclocked laser, does a bit more damage but has much higher wound power (-0 vs -20)
/obj/projectile/beam/laser/hellfire
name = "hellfire laser"
@@ -59,15 +64,15 @@
name = "low-power laser"
icon_state = "laser_musket"
impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser
- damage = 25
- stamina = 40
+ damage = 28
+ stamina = 35
light_color = COLOR_STRONG_VIOLET
weak_against_armour = TRUE
/obj/projectile/beam/laser/musket/prime
name = "mid-power laser"
- damage = 30
- stamina = 45
+ damage = 25
+ stamina = 20
weak_against_armour = FALSE
/obj/projectile/beam/weak
diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm
index c0fa5e2766c7..775d3e8e8a72 100644
--- a/code/modules/projectiles/projectile/bullets/rifle.dm
+++ b/code/modules/projectiles/projectile/bullets/rifle.dm
@@ -47,6 +47,134 @@
embedding = list(embed_chance=100, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10)
wound_falloff_tile = -5
+// Rebar (Rebar Crossbow)
+/obj/projectile/bullet/rebar
+ name = "rebar"
+ icon_state = "rebar"
+ damage = 30
+ speed = 0.4
+ dismemberment = 1 //because a 1 in 100 chance to just blow someones arm off is enough to be cool but also not enough to be reliable
+ armour_penetration = 10
+ wound_bonus = -20
+ bare_wound_bonus = 20
+ embedding = list("embed_chance" = 60, "fall_chance" = 2, "jostle_chance" = 2, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.4, "pain_mult" = 4, "jostle_pain_mult" = 2, "rip_time" = 10)
+ embed_falloff_tile = -5
+ wound_falloff_tile = -2
+ shrapnel_type = /obj/item/ammo_casing/rebar
+
+/obj/projectile/bullet/rebar/proc/handle_drop(datum/source, obj/item/ammo_casing/rebar/newcasing)
+
+/obj/projectile/bullet/rebar/syndie
+ name = "rebar"
+ icon_state = "rebar"
+ damage = 55
+ speed = 0.4
+ dismemberment = 2 //It's a budget sniper rifle.
+ armour_penetration = 20 //A bit better versus armor. Gets past anti laser armor or a vest, but doesnt wound proc on sec armor.
+ wound_bonus = 10
+ bare_wound_bonus = 20
+ embedding = list("embed_chance" = 80, "fall_chance" = 1, "jostle_chance" = 3, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.4, "pain_mult" = 3, "jostle_pain_mult" = 2, "rip_time" = 14)
+ embed_falloff_tile = -3
+ shrapnel_type = /obj/item/ammo_casing/rebar/syndie
+
+/obj/projectile/bullet/rebar/zaukerite
+ name = "zaukerite shard"
+ icon_state = "rebar_zaukerite"
+ damage = 60
+ speed = 0.6
+ dismemberment = 10
+ damage_type = TOX
+ eyeblur = 5
+ armour_penetration = 20 // not nearly as good, as its not as sharp.
+ wound_bonus = 10
+ bare_wound_bonus = 40
+ embedding = list("embed_chance" =100, "fall_chance" = 0, "jostle_chance" = 5, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.8, "pain_mult" = 6, "jostle_pain_mult" = 2, "rip_time" = 30)
+ embed_falloff_tile = 0 // very spiky.
+ shrapnel_type = /obj/item/ammo_casing/rebar/zaukerite
+
+/obj/projectile/bullet/rebar/hydrogen
+ name = "metallic hydrogen bolt"
+ icon_state = "rebar_hydrogen"
+ damage = 40
+ speed = 0.6
+ dismemberment = 0 //goes through clean.
+ damage_type = BRUTE
+ armour_penetration = 30 //very pointy.
+ projectile_piercing = PASSMOB //felt this might have been a nice compromise for the lower damage for the difficulty of getting it
+ wound_bonus = -15
+ bare_wound_bonus = 10
+ embedding = list("embed_chance" = 50, "fall_chance" = 2, "jostle_chance" = 3, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.6, "pain_mult" = 4, "jostle_pain_mult" = 2, "rip_time" =18)
+ embed_falloff_tile = -3
+ shrapnel_type = /obj/item/ammo_casing/rebar/hydrogen
+
+/obj/projectile/bullet/rebar/healium
+ name = "healium bolt"
+ icon_state = "rebar_healium"
+ damage = 0
+ speed = 0.4
+ dismemberment = 0
+ damage_type = BRUTE
+ armour_penetration = 100
+ wound_bonus = -100
+ bare_wound_bonus = -100
+ embedding = list(embed_chance = 0)
+ embed_falloff_tile = -3
+ shrapnel_type = /obj/item/ammo_casing/rebar/healium
+
+/obj/projectile/bullet/rebar/healium/on_hit(atom/target, blocked = 0, pierce_hit)
+ . = ..()
+ if(!iscarbon(target))
+ return BULLET_ACT_HIT
+ var/mob/living/breather = target
+ breather.SetSleeping(3 SECONDS)
+ breather.adjustFireLoss(-30, updating_health = TRUE, required_bodytype = BODYTYPE_ORGANIC)
+ breather.adjustToxLoss(-30, updating_health = TRUE, required_biotype = BODYTYPE_ORGANIC)
+ breather.adjustBruteLoss(-30, updating_health = TRUE, required_bodytype = BODYTYPE_ORGANIC)
+ breather.adjustOxyLoss(-30, updating_health = TRUE, required_biotype = BODYTYPE_ORGANIC, required_respiration_type = ALL)
+
+ return BULLET_ACT_HIT
+
+
+/obj/projectile/bullet/rebar/supermatter
+ name = "supermatter bolt"
+ icon_state = "rebar_supermatter"
+ damage = 0
+ speed = 0.4
+ dismemberment = 0
+ damage_type = TOX
+ armour_penetration = 100
+ shrapnel_type = /obj/item/ammo_casing/rebar/supermatter
+
+/obj/projectile/bullet/rebar/supermatter/on_hit(atom/target, blocked = 0, pierce_hit)
+ . = ..()
+ if(isliving(target))
+ var/mob/living/victim = target
+ victim.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS)
+ dust_feedback(target)
+ victim.dust()
+
+ else if(!isturf(target)&& !isliving(target))
+ dust_feedback(target)
+ qdel(target)
+
+ return BULLET_ACT_HIT
+
+
+/obj/projectile/bullet/rebar/supermatter/proc/dust_feedback(atom/target)
+ playsound(get_turf(src), 'sound/effects/supermatter.ogg', 10, TRUE)
+ visible_message(span_danger("[target] is hit by [src], turning [target.p_them()] to dust in a brilliant flash of light!"))
+
+/obj/projectile/bullet/paperball
+ desc = "Doink!"
+ damage = 1 // It's a damn toy.
+ range = 10
+ shrapnel_type = null
+ embedding = null
+ name = "paper ball"
+ desc = "doink!"
+ damage_type = BRUTE
+ icon_state = "paperball"
+
/obj/projectile/bullet/a223
name = ".223 bullet"
damage = 35
diff --git a/code/modules/spells/spell_types/right_and_wrong.dm b/code/modules/spells/spell_types/right_and_wrong.dm
index fa2838a27945..240d54601db1 100644
--- a/code/modules/spells/spell_types/right_and_wrong.dm
+++ b/code/modules/spells/spell_types/right_and_wrong.dm
@@ -81,7 +81,7 @@ GLOBAL_LIST_INIT(summoned_magic, list(
/obj/item/gun/magic/wand/fireball,
/obj/item/gun/magic/staff/healing,
/obj/item/gun/magic/staff/door,
- /obj/item/gun/magic/staff/babel,
+ /* /obj/item/gun/magic/staff/babel, [monkestation removal: this is admin only now] */
/obj/item/scrying,
/obj/item/warp_whistle,
/obj/item/immortality_talisman,
diff --git a/code/modules/spells/spell_types/tower_of_babel.dm b/code/modules/spells/spell_types/tower_of_babel.dm
index 0f70700c0973..e04fde85e2dd 100644
--- a/code/modules/spells/spell_types/tower_of_babel.dm
+++ b/code/modules/spells/spell_types/tower_of_babel.dm
@@ -12,10 +12,12 @@ GLOBAL_DATUM(tower_of_babel, /datum/tower_of_babel)
deadchat_broadcast("The [span_name("Tower of Babel")] has stricken the station, people will struggle to communicate.", message_type=DEADCHAT_ANNOUNCEMENT)
for(var/mob/living/carbon/target in GLOB.player_list)
+ if(!target.mind)
+ return
if(IS_WIZARD(target) && !badmin)
// wizards are not only immune but can speak all languages to taunt their victims over the radio
target.grant_all_languages(source=LANGUAGE_BABEL)
- ADD_TRAIT(target, TRAIT_TOWER_OF_BABEL, MAGIC_TRAIT)
+ ADD_TRAIT(target.mind, TRAIT_TOWER_OF_BABEL, MAGIC_TRAIT)
to_chat(target, span_reallybig(span_hypnophrase("You feel a magical force improving your speech patterns!")))
continue
@@ -44,8 +46,10 @@ GLOBAL_DATUM(tower_of_babel, /datum/tower_of_babel)
// silicon mobs are immune
if(!iscarbon(to_curse))
return
+ if(!to_curse.mind)
+ return
- if(to_curse.can_block_magic(MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND) || HAS_TRAIT(to_curse, TRAIT_TOWER_OF_BABEL))
+ if(to_curse.can_block_magic(MAGIC_RESISTANCE | MAGIC_RESISTANCE_MIND) || HAS_MIND_TRAIT(to_curse, TRAIT_TOWER_OF_BABEL))
to_chat(to_curse, span_notice("You have a strange feeling for a moment, but then it passes."))
return
@@ -56,9 +60,11 @@ GLOBAL_DATUM(tower_of_babel, /datum/tower_of_babel)
/proc/cure_curse_of_babel(mob/living/carbon/to_cure)
if(!iscarbon(to_cure))
return
+ if(!to_cure.mind)
+ return
// anyone who has this trait from another source is immune to being cursed by tower of babel
- if(!HAS_TRAIT_FROM(to_cure, TRAIT_TOWER_OF_BABEL, TRAUMA_TRAIT))
+ if(!HAS_TRAIT_FROM(to_cure.mind, TRAIT_TOWER_OF_BABEL, TRAUMA_TRAIT))
return
to_cure.remove_status_effect(/datum/status_effect/tower_of_babel/magical)
diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm
index 91cf1def26f4..ee7fcdda86e5 100644
--- a/code/modules/surgery/bodyparts/_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/_bodyparts.dm
@@ -654,7 +654,7 @@
if(burn)
set_burn_dam(round(max(burn_dam - burn, 0), DAMAGE_PRECISION))
- if(HAS_TRAIT(owner, TRAIT_REVIVES_BY_HEALING))
+ if(HAS_TRAIT(owner, TRAIT_REVIVES_BY_HEALING) && !HAS_TRAIT(owner, TRAIT_DEFIB_BLACKLISTED)) //monkestation edit
if(owner.health > 0)
owner.revive(0)
owner.cure_husk(0) // If it has REVIVESBYHEALING, it probably can't be cloned. No husk cure.
@@ -667,7 +667,7 @@
//monkestation edit start
if(owner.stat == DEAD && HAS_TRAIT(owner, TRAIT_REVIVES_BY_HEALING))
- if(owner.health > 50)
+ if(!HAS_TRAIT(owner, TRAIT_DEFIB_BLACKLISTED) && owner.health > 50)
owner.revive(FALSE)
//monkestation edit end
diff --git a/code/modules/uplink/uplink_items/dangerous.dm b/code/modules/uplink/uplink_items/dangerous.dm
index 2f1754428c92..af5b1dc6c2f2 100644
--- a/code/modules/uplink/uplink_items/dangerous.dm
+++ b/code/modules/uplink/uplink_items/dangerous.dm
@@ -99,3 +99,16 @@
cost = 13
surplus = 50
purchasable_from = ~UPLINK_CLOWN_OPS
+
+/datum/uplink_item/dangerous/cat
+ name = "Feral cat grenade"
+ desc = "This grenade is filled with 5 feral cats in stasis. Upon activation, the feral cats are awoken and unleashed unto unlucky bystanders. WARNING: The cats are not trained to discern friend from foe!"
+ cost = 5
+ item = /obj/item/grenade/spawnergrenade/cat
+ surplus = 30
+
+/datum/uplink_item/dangerous/rebarxbowsyndie
+ name = "Syndicate Rebar Crossbow"
+ desc = "A much more proffessional version of the engineer's bootleg rebar crossbow. 3 shot mag, quicker loading, and better ammo. Owners manual included."
+ item = /obj/item/storage/box/syndie_kit/rebarxbowsyndie
+ cost = 12
diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm
index 86492961450a..640685892bbf 100644
--- a/code/modules/uplink/uplink_items/nukeops.dm
+++ b/code/modules/uplink/uplink_items/nukeops.dm
@@ -521,6 +521,14 @@
surplus = 35
purchasable_from = UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS
+/datum/uplink_item/dangerous/syndicat
+ name = "Syndie cat grenade"
+ desc = "This grenade is filled with 3 trained angry cats in special syndicate modsuits. Upon activation, the Syndicate cats are awoken and unleashed unto unlucky bystanders."
+ item = /obj/item/grenade/spawnergrenade/cat/syndicate
+ cost = 20
+ surplus = 50
+ purchasable_from = UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS
+
/datum/uplink_item/explosives/pinata
name = "Weapons Grade Pinata Kit"
desc = "A pinata filled with both candy and explosives as well as two belts to carry them on, crack it open and see what you get!"
diff --git a/code/modules/uplink/uplink_items/stealthy.dm b/code/modules/uplink/uplink_items/stealthy.dm
index 8a2d71d87665..9ea9661de90f 100644
--- a/code/modules/uplink/uplink_items/stealthy.dm
+++ b/code/modules/uplink/uplink_items/stealthy.dm
@@ -28,6 +28,12 @@
item = /obj/item/pen/edagger
cost = 2
+/datum/uplink_item/stealthy_weapons/slipstick
+ name = "Syndie Lipstick"
+ desc = "Stylish way to kiss to death, isn't it syndiekisser?"
+ item = /obj/item/lipstick/syndie
+ cost = 12
+
/datum/uplink_item/stealthy_weapons/traitor_chem_bottle
name = "Poison Kit"
desc = "An assortment of deadly chemicals packed into a compact box. Comes with a syringe for more precise application."
diff --git a/html/changelogs/AutoChangeLog-pr-4181.yml b/html/changelogs/AutoChangeLog-pr-4181.yml
new file mode 100644
index 000000000000..b3b6740be0e5
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-4181.yml
@@ -0,0 +1,20 @@
+author: "Syndicat-Meow"
+delete-after: True
+changes:
+ - rscadd: "Added Disabler SMG available to be ordered from cargo"
+ - image: "added sprite for Disabler SMG"
+ - rscadd: "Added Laser Carbine available to be ordered from cargo"
+ - image: "added sprite for the Laser Carbine"
+ - rscadd: "Added Syndicate Lipstick! Finish off your opponents with a deadly kiss of death!"
+ - rscadd: "Added a new trait that comes from using the lipstick"
+ - image: "added sprite for syndicate lipstick"
+ - rscadd: "Added two new crossbows one being craftable by crew using and engineering inducer!"
+ - rscadd: "Added special ammo for the crossbows and a book for stronger normal ammo and their crafting recipes"
+ - image: "Added sprites of crossbows and ammo"
+ - code_imp: "changed some code about autofire and minor changes to relavant code"
+ - sound: "Added a new sound for the crossbow"
+ - admin: "Added an admin only crossbow bolt =)"
+ - rscadd: "Added angry cats in a can for 5 TC"
+ - rscadd: "Added angry cat in a red suit"
+ - rscadd: "Tossed 3 red suit angry cats in a can for 20 TC"
+ - image: "Added sprites for the Syndicate Cat"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-4423.yml b/html/changelogs/AutoChangeLog-pr-4423.yml
new file mode 100644
index 000000000000..d96c8a5df7fb
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-4423.yml
@@ -0,0 +1,4 @@
+author: "SentientVoid"
+delete-after: True
+changes:
+ - rscadd: "The Blueshift aquarium has been altered and moved to maintenance. It has been replaced with the monke box."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-4483.yml b/html/changelogs/AutoChangeLog-pr-4483.yml
new file mode 100644
index 000000000000..2d132122af87
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-4483.yml
@@ -0,0 +1,12 @@
+author: "ThePooba"
+delete-after: True
+changes:
+ - rscadd: "adds a Rayne co. medkit that you buy from the company import, you can healthscan people with it and it hates your guts"
+ - rscadd: "adds bloody drips unusual effect"
+ - balance: "christmas earlier"
+ - qol: "smoothbore disabler now needs red queen instead of the reagent that deletes itself"
+ - qol: "laser musket doesnt need glasses anymore and instead needs another drinking glass"
+ - balance: "prime laser muskets no longer require twohanded and also shoot better lasers"
+ - balance: "smoothbore disablers can crank on the run"
+ - qol: "more suits can hold muskets and pipeguns"
+ - bugfix: "Fixes a few bugs"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-4533.yml b/html/changelogs/AutoChangeLog-pr-4533.yml
new file mode 100644
index 000000000000..ede6a2b9f9d2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-4533.yml
@@ -0,0 +1,4 @@
+author: "Wisemonster"
+delete-after: True
+changes:
+ - bugfix: "Fixed some loadout clothing not updating after alt-clicking while worn"
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-12.yml b/html/changelogs/archive/2024-12.yml
index 7f2985b064a8..64acc85f933c 100644
--- a/html/changelogs/archive/2024-12.yml
+++ b/html/changelogs/archive/2024-12.yml
@@ -141,3 +141,21 @@
- rscadd: Satyr headbutt now checks for hands and mobility
SirNightKnight:
- balance: Rebalance debilitated to be more tame.
+2024-12-12:
+ Absolucy:
+ - rscdel: Removed the Tower of Babel wizard event.
+ - rscdel: Staff of Babel is now admin-only.
+ - rscadd: 3+ living ascended heretics will automatically raise the alert level to
+ Lambda.
+ - bugfix: Nar'sie and Ratvar now properly raise the alert level to Lambda.
+ - qol: Ascended heretics are now in their own category in the ghost orbit menu.
+ - refactor: Cleaned up code relating to heretic ascension announcements and traits.
+ - bugfix: Syndicate implants are now properly hidden from HUDs/scanners.
+ - qol: Rearranged the curator's radio booth / private study on MetaStation, hopefully
+ making it less of a cramped eyesore.
+ Absolucy, JohnFulpWillard:
+ - bugfix: Shaft Miners and Explorers are now alerted of icemoon storms, Clowns are
+ naive, and Curators are immune to the Tower of Babel again.
+2024-12-13:
+ Absolucy:
+ - refactor: Challenge and monkecoin reward code is now more resilient.
diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi
index 9021e8c7dd51..64c5582f515f 100644
Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ
diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi
index e4feec31ca20..4f3192c6e1ee 100644
Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ
diff --git a/icons/mob/huds/hud.dmi b/icons/mob/huds/hud.dmi
index f44de438a8bc..7700c4d85028 100644
Binary files a/icons/mob/huds/hud.dmi and b/icons/mob/huds/hud.dmi differ
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index e5b0ae7984ea..451b083540ef 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index ab01445414a2..12a27b6d5ef5 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/mob/inhands/pets_held_lh.dmi b/icons/mob/inhands/pets_held_lh.dmi
index 1a864db13410..4ed721c4a368 100644
Binary files a/icons/mob/inhands/pets_held_lh.dmi and b/icons/mob/inhands/pets_held_lh.dmi differ
diff --git a/icons/mob/inhands/pets_held_rh.dmi b/icons/mob/inhands/pets_held_rh.dmi
index 39332a7e18e4..3e4404b4faab 100644
Binary files a/icons/mob/inhands/pets_held_rh.dmi and b/icons/mob/inhands/pets_held_rh.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi
index 590e3ff2ed06..4a204d07d351 100644
Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi
index 5980b17fbe4a..bf0ae03a3cfe 100644
Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ
diff --git a/icons/mob/simple/pets.dmi b/icons/mob/simple/pets.dmi
index b35d033f84d1..73594f2f7243 100644
Binary files a/icons/mob/simple/pets.dmi and b/icons/mob/simple/pets.dmi differ
diff --git a/icons/obj/cosmetic.dmi b/icons/obj/cosmetic.dmi
index 8cb1e38ad88e..ee7a7ce1d04d 100644
Binary files a/icons/obj/cosmetic.dmi and b/icons/obj/cosmetic.dmi differ
diff --git a/icons/obj/weapons/guns/ballistic.dmi b/icons/obj/weapons/guns/ballistic.dmi
index bdc1c596aee2..b3f48a4b3782 100644
Binary files a/icons/obj/weapons/guns/ballistic.dmi and b/icons/obj/weapons/guns/ballistic.dmi differ
diff --git a/icons/obj/weapons/guns/bows/quivers.dmi b/icons/obj/weapons/guns/bows/quivers.dmi
index 74a7b4bc8bb5..615f96ee6af6 100644
Binary files a/icons/obj/weapons/guns/bows/quivers.dmi and b/icons/obj/weapons/guns/bows/quivers.dmi differ
diff --git a/icons/obj/weapons/guns/energy.dmi b/icons/obj/weapons/guns/energy.dmi
index b40c7cc1d48d..275d26493829 100644
Binary files a/icons/obj/weapons/guns/energy.dmi and b/icons/obj/weapons/guns/energy.dmi differ
diff --git a/icons/obj/weapons/guns/projectiles.dmi b/icons/obj/weapons/guns/projectiles.dmi
index 4e57ac40c940..bfb47f5d0acb 100644
Binary files a/icons/obj/weapons/guns/projectiles.dmi and b/icons/obj/weapons/guns/projectiles.dmi differ
diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm
index 0ca3d84d02e2..a3c93789cf0e 100644
--- a/interface/stylesheet.dm
+++ b/interface/stylesheet.dm
@@ -237,5 +237,6 @@ h1.alert, h2.alert {color: #000000;}
.orange {color: #b8761a;}
.yellow {color: #c7b72c;}
.cyan {color: #0ea1e6;}
+.uncommonradio {color: #78a1b1;}
// MONKESTATION ADDITION END
"}
diff --git a/monkestation/code/datums/id_trim/ruins.dm b/monkestation/code/datums/id_trim/ruins.dm
index 0635ac34baed..f10f534b3d40 100644
--- a/monkestation/code/datums/id_trim/ruins.dm
+++ b/monkestation/code/datums/id_trim/ruins.dm
@@ -1,2 +1,41 @@
+/obj/item/card/id/advanced/old
+ icon_state = "retro"
+ inhand_icon_state = "card-id"
+ worn_icon_state = "nothing"
+ lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
+
+/datum/id_trim/away/old/cmo
+ access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_COMMAND, ACCESS_AWAY_MEDICAL, ACCESS_AWAY_MAINTENANCE)
+ assignment = "Charlie Station Chief Medical Officer"
+ sechud_icon_state = SECHUD_CHIEF_MEDICAL_OFFICER_AWAY
+
+/datum/id_trim/away/old/chef
+ access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_MAINTENANCE)
+ assignment = "Charlie Station Chef"
+ sechud_icon_state = SECHUD_CHEF_AWAY
+
+/datum/id_trim/away/old/explorer
+ access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_SCIENCE, ACCESS_AWAY_MAINTENANCE, ACCESS_AWAY_SUPPLY, ACCESS_AWAY_GENERIC1, ACCESS_AWAY_GENERIC2, ACCESS_AWAY_GENERIC3, ACCESS_AWAY_GENERIC4) //purposefully has the most msc. access giving them a advantage for having less equipment than a normal explorer upon start.
+ assignment = "Charlie Station Explorer"
+ sechud_icon_state = SECHUD_EXPLORER_AWAY
+
+/datum/id_trim/away/old/sci
+ sechud_icon_state = SECHUD_SCIENTIST_AWAY
+ access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_SCIENCE, ACCESS_RESEARCH)
+
+/datum/id_trim/away/old/sec
+ sechud_icon_state = SECHUD_SECURITY_OFFICER_AWAY
+
+/datum/id_trim/away/old/eng
+ sechud_icon_state = SECHUD_STATION_ENGINEER_AWAY
+
+/datum/id_trim/away/old/robo
+ sechud_icon_state = SECHUD_ROBOTICIST_AWAY
+ access = list(ACCESS_AWAY_GENERAL, ACCESS_ROBOTICS, ACCESS_ORDNANCE, ACCESS_RESEARCH, ACCESS_AWAY_SCIENCE)
+
+/datum/id_trim/away/old/apc
+ sechud_icon_state = SECHUD_APC_AWAY
+
/datum/id_trim/pirate/lustrous
sechud_icon_state = SECHUD_RADIANT
diff --git a/monkestation/code/datums/memory/key_memories.dm b/monkestation/code/datums/memory/key_memories.dm
new file mode 100644
index 000000000000..d03b2f8980fb
--- /dev/null
+++ b/monkestation/code/datums/memory/key_memories.dm
@@ -0,0 +1,8 @@
+/datum/memory/key/codewords
+ memory_flags = parent_type::memory_flags | MEMORY_NO_STORY
+
+/datum/memory/key/codewords/get_names()
+ return list("The code phrases used by the Syndicate: [jointext(GLOB.syndicate_code_phrase, ", ")].")
+
+/datum/memory/key/codewords/responses/get_names()
+ return list("The code responses used by the Syndicate: [jointext(GLOB.syndicate_code_response, ", ")].")
diff --git a/monkestation/code/game/machinery/exp_cloner.dm b/monkestation/code/game/machinery/exp_cloner.dm
index 1dd46217facd..c9efbc167d1c 100644
--- a/monkestation/code/game/machinery/exp_cloner.dm
+++ b/monkestation/code/game/machinery/exp_cloner.dm
@@ -130,7 +130,7 @@
mob_occupant.mind.add_antag_datum(antag_object)
mob_occupant.grant_language(/datum/language/codespeak) // So you don't have to remember to grant each and every identical clone codespeak with the manual.
mob_occupant.remove_blocked_language(/datum/language/codespeak, source=LANGUAGE_ALL) // All the effects the codespeak manual would have.
- ADD_TRAIT(mob_occupant, TRAIT_TOWER_OF_BABEL, MAGIC_TRAIT)
+ ADD_TRAIT(mob_occupant.mind, TRAIT_TOWER_OF_BABEL, MAGIC_TRAIT)
var/obj/item/implant/radio/syndicate/imp = new(src)
imp.implant(mob_occupant)
mob_occupant.faction |= ROLE_SYNDICATE
diff --git a/monkestation/code/game/objects/items/devices/radio/encryptionkey.dm b/monkestation/code/game/objects/items/devices/radio/encryptionkey.dm
index df453599a12a..10997d861408 100644
--- a/monkestation/code/game/objects/items/devices/radio/encryptionkey.dm
+++ b/monkestation/code/game/objects/items/devices/radio/encryptionkey.dm
@@ -4,3 +4,7 @@
channels = list(RADIO_CHANNEL_SECURITY = 1, RADIO_CHANNEL_MEDICAL = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_security
greyscale_colors = "#820a16#280b1a"
+
+/obj/item/encryptionkey/headset_uncommon
+ name = "dusty encryption key"
+ channels = list(RADIO_CHANNEL_UNCOMMON = 1)
diff --git a/monkestation/code/game/objects/items/devices/radio/headset.dm b/monkestation/code/game/objects/items/devices/radio/headset.dm
index c266ed70b6b4..8be0cd0cbe8d 100644
--- a/monkestation/code/game/objects/items/devices/radio/headset.dm
+++ b/monkestation/code/game/objects/items/devices/radio/headset.dm
@@ -4,3 +4,22 @@
icon_state = "sec_headset"
worn_icon_state = "sec_headset"
keyslot = /obj/item/encryptionkey/headset_secmed
+
+/obj/item/radio/headset/headset_old
+ name = "old radio headset"
+ desc = "A headset years past its prime."
+
+/obj/item/radio/headset/headset_old/alt
+ name = "old security bowman headset"
+ desc = "A headset years past its prime. Protects ears from flashbangs."
+ keyslot = /obj/item/encryptionkey/headset_uncommon
+ icon_state = "med_headset_alt"
+ worn_icon_state = "med_headset_alt"
+
+/obj/item/radio/headset/headset_old/alt/Initialize(mapload)
+ . = ..()
+ AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_EARS))
+
+/obj/item/radio/headset/heads/headset_old
+ name = "\proper old commander headset"
+ desc = "A authoritative headset years past its prime. Dust cakes its old design."
diff --git a/monkestation/code/game/objects/items/rayne_corp/rayne_mender.dm b/monkestation/code/game/objects/items/rayne_corp/rayne_mender.dm
index 4d941386305e..9401893bae44 100644
--- a/monkestation/code/game/objects/items/rayne_corp/rayne_mender.dm
+++ b/monkestation/code/game/objects/items/rayne_corp/rayne_mender.dm
@@ -1,4 +1,129 @@
+#define RAYNE_MENDER_SPEECH "monkey_companies/rayne_mender.json"
+/// How long the gun should wait between speaking to lessen spam
+#define RAYNE_MENDER_SPEECH_COOLDOWN 5 SECONDS
+/// What color is the default kill mode for these guns, used to make sure the chat colors are right at roundstart
+#define DEFAULT_RUNECHAT_COLOR "#06507a"
+
+
/obj/item/storage/medkit/rayne
name = "Rayne Corp Health Analyzer Kit"
- icon = 'icons/obj/device.dmi'
+ icon = 'monkestation/icons/obj/rayne_corp/rayne.dmi'
+ icon_state = "rayne_medkit"
+ inhand_icon_state = "coronerkit"
+ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
item_flags = NOBLUDGEON
+ var/speech_json_file = RAYNE_MENDER_SPEECH
+ COOLDOWN_DECLARE(last_speech)
+ damagetype_healed = HEAL_ALL_DAMAGE
+
+/obj/item/storage/medkit/rayne/Initialize(mapload)
+ . = ..()
+ atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
+ atom_storage.max_slots = 14
+ atom_storage.max_total_storage = 28
+
+/obj/item/storage/medkit/rayne/equipped(mob/user, slot, initial)
+ . = ..()
+ if(slot & ITEM_SLOT_HANDS)
+ speak_up("pickup")
+
+/obj/item/storage/medkit/rayne/dropped(mob/user, silent)
+ . = ..()
+ if(src in user.contents)
+ return // If they're still holding us or have us on them, dw about it
+ speak_up("putdown")
+
+/obj/item/storage/medkit/rayne/PopulateContents()
+ if(empty)
+ return
+ var/static/list/items_inside = list(
+ /obj/item/stack/medical/suture/medicated = 2,
+ /obj/item/stack/medical/mesh/advanced = 2,
+ /obj/item/reagent_containers/hypospray/medipen/deforest/coagulants = 2,
+ /obj/item/reagent_containers/hypospray/medipen/atropine = 2,
+ /obj/item/reagent_containers/syringe = 1,
+ /obj/item/reagent_containers/cup/bottle/formaldehyde = 1,
+ /obj/item/reagent_containers/hypospray/medipen/morphine = 1,
+ /obj/item/reagent_containers/hypospray/medipen/salbutamol = 1,
+ /obj/item/storage/pill_bottle/multiver = 1
+ )
+ generate_items_inside(items_inside,src)
+
+/obj/item/storage/medkit/rayne/attack(mob/living/M, mob/living/carbon/human/user)
+ if(!user.can_read(src) || user.is_blind())
+ return
+
+ flick("[icon_state]-scan", src) //makes it so that it plays the scan animation upon scanning, including clumsy scanning
+
+ if(ispodperson(M))
+ speak_up("podnerd")
+ return
+
+ user.visible_message(span_notice("[user] analyzes [M]'s vitals."))
+ playsound(user.loc, 'sound/items/healthanalyzer.ogg', 50)
+ healthscan(user, M, 0, FALSE)
+ add_fingerprint(user)
+ judge_health(M)
+
+
+//This proc controls what the medkit says when scanning a person, and recommends a best course of treatment (barely)
+/obj/item/storage/medkit/rayne/proc/judge_health(mob/living/target)
+
+ var/obj/item/organ/internal/brain/targetbrain
+ if(target.on_fire)
+ speak_up("onfire")
+ return
+ if(ishuman(target))
+ if(!target.get_organ_slot(ORGAN_SLOT_BRAIN))
+ speak_up("nobrain")
+ return
+ else
+ targetbrain = target.get_organ_slot(ORGAN_SLOT_BRAIN)
+ if(targetbrain.damage > 150)
+ speak_up("braindamage")
+ return
+
+ if((target?.blood_volume <= BLOOD_VOLUME_SAFE) && !HAS_TRAIT(target, TRAIT_NOBLOOD))
+ speak_up("lowblood")
+ return
+
+ var/brute = target.getBruteLoss()
+ var/oxy = target.getOxyLoss()
+ var/tox = target.getToxLoss()
+ var/burn = target.getFireLoss()
+ var/big = max(brute,oxy,burn,tox)
+ if((brute + burn) >= 350)
+ speak_up("fuckedup")
+ return
+ if(big >= 5)
+ if(brute == big)
+ speak_up("brute")
+ return
+ if(burn == big)
+ speak_up("burn")
+ return
+ if(tox == big)
+ speak_up("tox")
+ return
+ if(oxy == big)
+ speak_up("oxy")
+ return
+ if(target.stat == DEAD)
+ speak_up("dead")
+ return
+
+ speak_up("fine")
+ return
+
+
+
+/obj/item/storage/medkit/rayne/proc/speak_up(json_string, ignores_cooldown = FALSE)
+ if(!json_string)
+ return
+ if(!ignores_cooldown && !COOLDOWN_FINISHED(src, last_speech))
+ return
+ say(pick_list_replacements(speech_json_file, json_string))
+ playsound(src, 'sound/creatures/tourist/tourist_talk.ogg', 15, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, frequency = rand(3.5))
+ Shake(2, 2, 1 SECONDS)
+ COOLDOWN_START(src, last_speech, RAYNE_MENDER_SPEECH)
diff --git a/monkestation/code/modules/NTSL/code/coding_language/implementations/telecomms_translator.dm b/monkestation/code/modules/NTSL/code/coding_language/implementations/telecomms_translator.dm
index a81f37a97751..8e49c563e48a 100644
--- a/monkestation/code/modules/NTSL/code/coding_language/implementations/telecomms_translator.dm
+++ b/monkestation/code/modules/NTSL/code/coding_language/implementations/telecomms_translator.dm
@@ -106,6 +106,7 @@ GLOBAL_LIST_INIT(allowed_translations, list(
"centcom" = FREQ_CENTCOM,
"aiprivate" = FREQ_AI_PRIVATE,
"radio" = FREQ_RADIO,
+ "uncommon" = FREQ_UNCOMMON,
))
)
diff --git a/monkestation/code/modules/antagonists/clock_cult/ratvar.dm b/monkestation/code/modules/antagonists/clock_cult/ratvar.dm
index 2b424a080048..ec05bffe311f 100644
--- a/monkestation/code/modules/antagonists/clock_cult/ratvar.dm
+++ b/monkestation/code/modules/antagonists/clock_cult/ratvar.dm
@@ -133,7 +133,7 @@ GLOBAL_DATUM(cult_ratvar, /obj/ratvar)
var/next_attack_tick = 0
/proc/clockcult_ending_start()
- SSsecurity_level.set_level(3)
+ SSsecurity_level.set_level(SEC_LEVEL_LAMBDA)
priority_announce("Huge gravitational-energy spike detected emminating from a neutron star near your sector. Event has been determined to be survivable by 0% of life. \
ESTIMATED TIME UNTIL ENERGY PULSE REACHES [GLOB.station_name]: 56 SECONDS. Godspeed crew, glory to Nanotrasen. -Admiral Telvig.", \
"Central Command Anomolous Materials Division", 'sound/misc/airraid.ogg')
diff --git a/monkestation/code/modules/antagonists/clock_cult/structures/the_ark.dm b/monkestation/code/modules/antagonists/clock_cult/structures/the_ark.dm
index 39b9377c3f22..73b394c524eb 100644
--- a/monkestation/code/modules/antagonists/clock_cult/structures/the_ark.dm
+++ b/monkestation/code/modules/antagonists/clock_cult/structures/the_ark.dm
@@ -90,7 +90,7 @@ GLOBAL_VAR_INIT(ratvar_risen, FALSE)
for(var/obj/effect/portal/clockcult/portal in GLOB.portals)
qdel(portal)
SSshuttle.clearHostileEnvironment(src)
- SSsecurity_level.set_level(2)
+ SSsecurity_level.set_level(SEC_LEVEL_RED)
qdel(src)
/obj/structure/destructible/clockwork/the_ark/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration)
@@ -161,7 +161,7 @@ GLOBAL_VAR_INIT(ratvar_risen, FALSE)
servant_antag?.add_forbearance(servant_mob)
sound_to_playing_players('sound/magic/clockwork/invoke_general.ogg', 50)
- SSsecurity_level.set_level(3)
+ SSsecurity_level.set_level(SEC_LEVEL_DELTA)
addtimer(CALLBACK(src, PROC_REF(begin_assault)), ARK_GRACE_PERIOD)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(send_station_support_package), /obj/item/turf_demolisher/reebe), 10 SECONDS)
diff --git a/monkestation/code/modules/antagonists/heretic/heretic_knowledge.dm b/monkestation/code/modules/antagonists/heretic/heretic_knowledge.dm
new file mode 100644
index 000000000000..d69b6224370a
--- /dev/null
+++ b/monkestation/code/modules/antagonists/heretic/heretic_knowledge.dm
@@ -0,0 +1,18 @@
+/datum/heretic_knowledge/ultimate/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
+ . = ..()
+ var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user)
+ // there's literally a big unique announcement saying "HEY THIS PERSON'S AN ASCENDED HERETIC", no reason to not have them in the orbit menu
+ heretic_datum.show_to_ghosts = TRUE
+ heretic_datum.antagpanel_category = "Ascended Heretics"
+ var/static/have_set_lambda = FALSE
+ if(!have_set_lambda)
+ var/ascended_heretics = 1
+ for(var/datum/antagonist/heretic/heretic in GLOB.antagonists)
+ var/mob/living/heretic_body = heretic.owner?.current
+ if(QDELETED(heretic_body) || heretic_body == user || !heretic.ascended || heretic_body.stat == DEAD)
+ continue
+ ascended_heretics++
+ if(ascended_heretics >= 3)
+ have_set_lambda = TRUE
+ message_admins("Alert level automatically being raised to Lambda in 5 seconds due to the presence of three or more living ascended heretics")
+ addtimer(CALLBACK(SSsecurity_level, TYPE_PROC_REF(/datum/controller/subsystem/security_level, set_level), SEC_LEVEL_LAMBDA), 5 SECONDS, TIMER_UNIQUE)
diff --git a/monkestation/code/modules/blueshift/armaments/kemetek.dm b/monkestation/code/modules/blueshift/armaments/kemetek.dm
index eb29e50cd8ae..7ad7e73d5c5c 100644
--- a/monkestation/code/modules/blueshift/armaments/kemetek.dm
+++ b/monkestation/code/modules/blueshift/armaments/kemetek.dm
@@ -5,3 +5,4 @@
/datum/armament_entry/company_import/kemetek/checkback
subcategory = "Check back soon! ™"
+
diff --git a/monkestation/code/modules/blueshift/armaments/rayne.dm b/monkestation/code/modules/blueshift/armaments/rayne.dm
index 631226fa9d21..ed3d8e39902c 100644
--- a/monkestation/code/modules/blueshift/armaments/rayne.dm
+++ b/monkestation/code/modules/blueshift/armaments/rayne.dm
@@ -8,14 +8,19 @@
/datum/armament_entry/company_import/rayne/clothing/lamp
// name = "Wearable Rayne Corporation Chest Lamp"
item_type = /obj/item/flashlight/lantern/rayne
- cost = PAYCHECK_COMMAND * 3
+ cost = PAYCHECK_COMMAND * 2
+
+/datum/armament_entry/company_import/rayne/first_aid_kit
+ subcategory = "First-Aid Kits"
+
+/datum/armament_entry/company_import/rayne/first_aid_kit/rayne_mender
+ item_type = /obj/item/storage/medkit/rayne
+ cost = PAYCHECK_COMMAND * 5
//Rayne Corp Medkit: A portable medkit that contains a cynical artificial intelligence that can diagnose and treat your injuries, but also insults you and makes sarcastic comments about your condition.
-//automender but it sucks and hates you
//Rayne Corp Sticky Tiles: A synthetic tile that has a special adhesive property that can cushion any fall and prevent serious damage,
//but also traps you in place until you can free yourself or get help. The Sticky Tile is ideal for people who are clumsy and prone to accidents.
-
//Rayne Corp Teleporter: A device that can teleport you to any location, but also swaps your body parts with random objects or animals. The Teleporter is convenient and fast. It can let you travel anywhere,
//in an instant. The Teleporter can also create amusing and weird situations, as you may end up with a different appearance, function,
//or ability, after teleporting. However, the Teleporter can be very painful, and can damage your health, identity, or sanity, if used too often.
diff --git a/monkestation/code/modules/blueshift/components/toggle_clothing.dm b/monkestation/code/modules/blueshift/components/toggle_clothing.dm
index b445b9a86da0..af1fe6444533 100644
--- a/monkestation/code/modules/blueshift/components/toggle_clothing.dm
+++ b/monkestation/code/modules/blueshift/components/toggle_clothing.dm
@@ -24,4 +24,5 @@
toggled = !toggled
source.icon_state = (toggled ? toggled_icon_state : initial(source.icon_state))
to_chat(clicker, "You toggle \the [source]!")
+ source.update_slot_icon()
clicker.update_appearance()
diff --git a/monkestation/code/modules/blueshift/items/syndicate.dm b/monkestation/code/modules/blueshift/items/syndicate.dm
index 0be0098a0f41..6aad026b20c4 100644
--- a/monkestation/code/modules/blueshift/items/syndicate.dm
+++ b/monkestation/code/modules/blueshift/items/syndicate.dm
@@ -148,6 +148,8 @@
user.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_response_regex, "red", src)
to_chat(user, "Code Phrases: [jointext(GLOB.syndicate_code_phrase, ", ")]")
to_chat(user, "Code Responses: [span_red("[jointext(GLOB.syndicate_code_response, ", ")]")]")
+ user.add_mob_memory(/datum/memory/key/codewords)
+ user.add_mob_memory(/datum/memory/key/codewords/responses)
use_charge(user)
@@ -171,6 +173,8 @@
to_chat(attacked_mob, span_boldnotice("You feel suddenly imparted with the knowledge of the following code words:"))
to_chat(attacked_mob, "Code Phrases: [span_blue("[jointext(GLOB.syndicate_code_phrase, ", ")]")]")
to_chat(attacked_mob, "Code Responses: [span_red("[jointext(GLOB.syndicate_code_response, ", ")]")]")
+ attacked_mob.add_mob_memory(/datum/memory/key/codewords)
+ attacked_mob.add_mob_memory(/datum/memory/key/codewords/responses)
use_charge(user)
diff --git a/monkestation/code/modules/client/player_details.dm b/monkestation/code/modules/client/player_details.dm
index 5e24cc9bde28..1332975bfcaa 100644
--- a/monkestation/code/modules/client/player_details.dm
+++ b/monkestation/code/modules/client/player_details.dm
@@ -3,18 +3,39 @@
var/datum/patreon_data/patreon
/// Twitch subscription data for this player.
var/datum/twitch_data/twitch
+ /// Currently active challenges.
+ var/list/datum/challenge/active_challenges
+ /// Currently applied challenges.
+ var/list/datum/challenge/applied_challenges
+ /// The challenge menu for this mob.
+ var/datum/challenge_selector/challenge_menu
+ /// Bonus monkecoins to reward this player at roundend.
+ var/roundend_monkecoin_bonus = 0
/datum/player_details/New(player_key)
. = ..()
patreon = new(src)
twitch = new(src)
+/// Finds the current mob this player is in control of.
+/datum/player_details/proc/find_current_mob() as /mob
+ RETURN_TYPE(/mob)
+ var/client/client = GLOB.directory[ckey]
+ . = client?.mob
+ if(.)
+ return
+ for(var/mob/mob as anything in GLOB.mob_list)
+ if(!QDELETED(mob) && mob.ckey == ckey)
+ return mob
+
/**
* Gets a player details instance from a variable, whether it be a mob, a client, or a ckey.
*/
/proc/get_player_details(target) as /datum/player_details
RETURN_TYPE(/datum/player_details)
- if(istext(target))
+ if(istype(target, /datum/player_details))
+ return target // well, that was easy
+ else if(istext(target))
return GLOB.player_details[ckey(target)]
else if(ismob(target))
var/mob/mob_target = target
@@ -27,6 +48,4 @@
else if(IS_CLIENT_OR_MOCK(target))
var/datum/client_interface/client_target = target
return client_target.player_details
- else if(istype(target, /datum/player_details))
- return target // well, that was easy
diff --git a/monkestation/code/modules/coin-events/challenges/challenge/_challenge_base.dm b/monkestation/code/modules/coin-events/challenges/challenge/_challenge_base.dm
index 85b2c0740fa5..d917d5b9ff09 100644
--- a/monkestation/code/modules/coin-events/challenges/challenge/_challenge_base.dm
+++ b/monkestation/code/modules/coin-events/challenges/challenge/_challenge_base.dm
@@ -1,39 +1,43 @@
-/client
- var/list/active_challenges = list()
- var/list/applied_challenges = list()
-
/datum/challenge
///the challenge name
var/challenge_name = "God's Weakest Challenge"
///the challenge payout
var/challenge_payout = 100
///our host
- var/client/host
+ var/datum/player_details/host
///have we failed if we are a fail action
var/failed = FALSE
///the difficulty of the channgle
var/difficulty = "Easy"
///do we need to process?
var/processes = FALSE
- ///the current mob we are in
- var/mob/current_mob
///the trait we apply if any
var/applied_trait
-/datum/challenge/New(client/creator)
+/datum/challenge/New(datum/player_details/host)
. = ..()
- if(!creator)
- return
- host = creator
- current_mob = host.mob
if(!host)
return
- RegisterSignal(host.mob, COMSIG_MIND_TRANSFERRED, PROC_REF(on_transfer))
+ src.host = host
+ var/mob/current_mob = host.find_current_mob()
+ if(!current_mob)
+ CRASH("Couldn't find mob for [host]")
+ RegisterSignal(current_mob, COMSIG_MIND_TRANSFERRED, PROC_REF(on_transfer))
+
+/datum/challenge/Destroy(force)
+ host = null
+ return ..()
///we just use the client to try and apply this as its easier to track mobs
-/datum/challenge/proc/on_apply(client/owner)
- if(applied_trait)
- ADD_TRAIT(host.mob, applied_trait, CHALLENGE_TRAIT)
+/datum/challenge/proc/on_apply()
+ SHOULD_CALL_PARENT(TRUE)
+ LAZYADD(host.applied_challenges, src)
+ if(!applied_trait)
+ return
+ var/mob/current_mob = host.find_current_mob()
+ if(!current_mob)
+ CRASH("Couldn't find mob for [host]")
+ ADD_TRAIT(current_mob, applied_trait, CHALLENGE_TRAIT)
///this fires every 10 seconds
/datum/challenge/proc/on_process()
@@ -47,9 +51,8 @@
/datum/challenge/proc/on_revive()
return
-/datum/challenge/proc/on_transfer(datum/source, mob/previous_body)
+/datum/challenge/proc/on_transfer(datum/mind/source, mob/previous_body)
SIGNAL_HANDLER
if(applied_trait)
REMOVE_TRAIT(previous_body, applied_trait, CHALLENGE_TRAIT)
- var/datum/mind/mind = source
- ADD_TRAIT(mind.current, applied_trait, CHALLENGE_TRAIT)
+ ADD_TRAIT(source.current, applied_trait, CHALLENGE_TRAIT)
diff --git a/monkestation/code/modules/coin-events/challenges/challenge/paranoia.dm b/monkestation/code/modules/coin-events/challenges/challenge/paranoia.dm
index 2f69aa50f53d..0498e57cbde4 100644
--- a/monkestation/code/modules/coin-events/challenges/challenge/paranoia.dm
+++ b/monkestation/code/modules/coin-events/challenges/challenge/paranoia.dm
@@ -6,13 +6,14 @@
icon = FA_ICON_OPTIN_MONSTER
/datum/quirk/extra_sensory_paranoia/add()
- var/datum/brain_trauma/magic/stalker/T = new()
- var/mob/living/carbon/human/H = quirk_holder
- H.gain_trauma(T, TRAUMA_RESILIENCE_ABSOLUTE)
+ var/mob/living/carbon/human/human_holder = quirk_holder
+ if(ishuman(human_holder))
+ human_holder.gain_trauma(/datum/brain_trauma/magic/stalker, TRAUMA_RESILIENCE_ABSOLUTE)
/datum/quirk/extra_sensory_paranoia/remove()
- var/mob/living/carbon/human/H = quirk_holder
- H.cure_trauma_type(/datum/brain_trauma/magic/stalker, TRAUMA_RESILIENCE_ABSOLUTE)
+ var/mob/living/carbon/human/human_holder = quirk_holder
+ if(ishuman(human_holder))
+ human_holder.cure_trauma_type(/datum/brain_trauma/magic/stalker, TRAUMA_RESILIENCE_ABSOLUTE)
/datum/challenge/paranoia
challenge_name = "Paranoia"
@@ -21,36 +22,29 @@
applied_trait = TRAIT_PARANOIA
var/added = FALSE
-
-/datum/challenge/paranoia/on_apply(client/owner)
+/datum/challenge/paranoia/on_apply()
. = ..()
- var/mob/living/carbon/human/H = host.mob
- if(!ishuman(H))
+ var/mob/living/carbon/human/current_human = host.find_current_mob()
+ if(!ishuman(current_human))
return
- var/datum/brain_trauma/magic/stalker/T = new()
- H.gain_trauma(T, TRAUMA_RESILIENCE_ABSOLUTE)
+ current_human.gain_trauma(/datum/brain_trauma/magic/stalker, TRAUMA_RESILIENCE_ABSOLUTE)
added = TRUE
/datum/challenge/paranoia/on_process()
if(added)
return
-
- var/mob/living/carbon/human/H = host.mob
- if(!ishuman(H))
+ var/mob/living/carbon/human/current_human = host.find_current_mob()
+ if(!ishuman(current_human))
return
- var/datum/brain_trauma/magic/stalker/T = new()
- H.gain_trauma(T, TRAUMA_RESILIENCE_ABSOLUTE)
+ current_human.gain_trauma(/datum/brain_trauma/magic/stalker, TRAUMA_RESILIENCE_ABSOLUTE)
added = TRUE
-/datum/challenge/paranoia/on_transfer(datum/source, mob/previous_body)
+/datum/challenge/paranoia/on_transfer(datum/mind/source, mob/previous_body)
. = ..()
- var/mob/living/carbon/human/H = previous_body
- H.cure_trauma_type(/datum/brain_trauma/magic/stalker, TRAUMA_RESILIENCE_ABSOLUTE)
+ var/mob/living/carbon/human/previous_human = previous_body
+ if(ishuman(previous_human))
+ previous_human.cure_trauma_type(/datum/brain_trauma/magic/stalker, TRAUMA_RESILIENCE_ABSOLUTE)
- var/datum/mind/mind = source
- var/datum/brain_trauma/magic/stalker/T = new()
- if(isliving(mind.current))
- var/mob/living/carbon/human/current_human = mind.current
- if(!ishuman(current_human))
- return
- current_human.gain_trauma(T, TRAUMA_RESILIENCE_ABSOLUTE)
+ var/mob/living/carbon/human/current_human = source.current
+ if(ishuman(current_human))
+ current_human.gain_trauma(/datum/brain_trauma/magic/stalker, TRAUMA_RESILIENCE_ABSOLUTE)
diff --git a/monkestation/code/modules/coin-events/challenges/challenge_controller.dm b/monkestation/code/modules/coin-events/challenges/challenge_controller.dm
index 54f489bb1b78..bb9337208cfb 100644
--- a/monkestation/code/modules/coin-events/challenges/challenge_controller.dm
+++ b/monkestation/code/modules/coin-events/challenges/challenge_controller.dm
@@ -17,12 +17,15 @@ SUBSYSTEM_DEF(challenges)
for(var/datum/challenge/listed as anything in processing_challenges)
listed.on_process()
-/datum/controller/subsystem/challenges/proc/apply_challenges(client/owner)
+/datum/controller/subsystem/challenges/proc/apply_challenges(datum/player_details/owner)
+ owner = get_player_details(owner)
+ if(!owner)
+ CRASH("Attempted to apply challenges to invalid owner")
for(var/datum/challenge/listed as anything in owner.active_challenges)
var/datum/challenge/new_challenge = new listed(owner)
if(new_challenge.processes)
processing_challenges += processing_challenges
new_challenge.on_apply(owner)
- owner.applied_challenges += new_challenge
+ LAZYADD(owner.applied_challenges, new_challenge)
diff --git a/monkestation/code/modules/coin-events/challenges/challenge_selector.dm b/monkestation/code/modules/coin-events/challenges/challenge_selector.dm
index 7564bc2b4571..59d4f40c2449 100644
--- a/monkestation/code/modules/coin-events/challenges/challenge_selector.dm
+++ b/monkestation/code/modules/coin-events/challenges/challenge_selector.dm
@@ -1,76 +1,73 @@
-/client
- var/datum/challenge_selector/challenge_menu
-
/datum/challenge_selector
/// The client of the person using the UI
- var/client/owner
+ var/datum/player_details/owner
/datum/challenge_selector/New(user)
- owner = CLIENT_FROM_VAR(user)
+ owner = get_player_details(user)
owner.challenge_menu = src
/datum/challenge_selector/Destroy(force)
+ if(owner?.challenge_menu == src)
+ owner.challenge_menu = null
owner = null
return ..()
/datum/challenge_selector/ui_state(mob/user)
return GLOB.always_state
+/datum/challenge_selector/ui_status(mob/user, datum/ui_state/state)
+ if(isliving(user) || isobserver(user))
+ return UI_CLOSE
+ return ..()
+
/datum/challenge_selector/ui_interact(mob/user, datum/tgui/ui)
. = ..()
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "ChallengeSelector", "Select Challenges")
+ ui.set_autoupdate(FALSE)
ui.open()
-/datum/challenge_selector/ui_data(mob/user)
- var/list/data = list()
+/datum/challenge_selector/ui_static_data(mob/user)
var/list/buyables = list()
- for(var/datum/challenge/listed as anything in subtypesof(/datum/challenge))
- var/datum/challenge/created = new listed
+ for(var/datum/challenge/challenge as anything in subtypesof(/datum/challenge))
buyables += list(
list(
- "name" = created.challenge_name,
- "payout" = created.challenge_payout,
- "difficulty" = created.difficulty,
- "path" = created.type
+ "name" = challenge::challenge_name,
+ "payout" = challenge::challenge_payout,
+ "difficulty" = challenge::difficulty,
+ "path" = challenge::type
)
)
- var/list/paths = list()
- for(var/listed as anything in owner.active_challenges)
- if(isnull(listed))
- owner.active_challenges -= listed
- continue
- paths += listed
+ return list("challenges" = buyables)
- data["challenges"] = buyables
- data["selected_challenges"] = paths
- return data
+/datum/challenge_selector/ui_data(mob/user)
+ var/list/selected = list()
+ for(var/datum/challenge/challenge_path as anything in owner.active_challenges)
+ selected += "[challenge_path]"
+ return list("selected_challenges" = selected)
/datum/challenge_selector/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
- . = ..()
. = ..()
if(.)
return
+ var/mob/user = ui.user
switch(action)
if("select_challenge")
- add_selection(params)
+ add_selection(user, params)
return TRUE
-/datum/challenge_selector/proc/add_selection(list/params)
- if(isliving(usr) || isobserver(usr))
+/datum/challenge_selector/proc/add_selection(mob/user, list/params)
+ if(user.ckey != owner.ckey)
+ CRASH("User [user.ckey] tried to use challenge selector of [owner.ckey]")
+ if(isliving(user) || isobserver(user))
return
- var/id = params["path"]
- var/path = text2path(id)
- if(!ispath(path, /datum/challenge))
+ var/challenge_path = text2path(params["path"])
+ if(!ispath(challenge_path, /datum/challenge))
return
- if(length(usr.client.active_challenges))
- for(var/listed as anything in usr.client.active_challenges)
- if(listed == path)
- usr.client.active_challenges -= listed
- return
-
- var/datum/challenge/challenge = text2path(id)
- usr.client.active_challenges += challenge
+ if(challenge_path in owner.active_challenges)
+ LAZYREMOVE(owner.active_challenges, challenge_path)
+ else
+ LAZYADD(owner.active_challenges, challenge_path)
diff --git a/monkestation/code/modules/cybernetics/augments/_base_changes.dm b/monkestation/code/modules/cybernetics/augments/_base_changes.dm
index 823287cffc33..fad39c5de964 100644
--- a/monkestation/code/modules/cybernetics/augments/_base_changes.dm
+++ b/monkestation/code/modules/cybernetics/augments/_base_changes.dm
@@ -3,7 +3,6 @@
/obj/item/organ/internal/cyberimp
var/hacked = FALSE
- var/syndicate_implant = FALSE //Makes the implant invisible to health analyzers and medical HUDs.
var/list/encode_info = AUGMENT_NO_REQ
@@ -182,6 +181,7 @@
/obj/item/organ/internal/cyberimp/cyberlink/syndicate
name = "Cybersun Cybernetics Access System"
+ organ_flags = parent_type::organ_flags | ORGAN_HIDDEN
encode_info = AUGMENT_SYNDICATE_LEVEL_LINK
/obj/item/organ/internal/cyberimp/cyberlink/admin
diff --git a/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/weapons.dm b/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/weapons.dm
index 18431719938e..e565591cbd44 100644
--- a/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/weapons.dm
+++ b/monkestation/code/modules/cybernetics/augments/arm_augments/item_sets/weapons.dm
@@ -43,6 +43,7 @@
name = "arm-mounted energy blade"
desc = "An illegal and highly dangerous cybernetic implant that can project a deadly blade of concentrated energy."
items_to_create = list(/obj/item/melee/energy/blade/hardlight)
+ organ_flags = parent_type::organ_flags | ORGAN_HIDDEN
encode_info = AUGMENT_SYNDICATE_LEVEL
/obj/item/organ/internal/cyberimp/arm/item_set/medibeam
@@ -95,6 +96,7 @@
name = "A.R.A.S.A.K.A. mantis blade implants"
desc = "Modernized mantis blade designed coined by Tiger operatives, much sharper blade with energy actuators makes it a much deadlier weapon."
items_to_create = list(/obj/item/mantis_blade/syndicate)
+ organ_flags = parent_type::organ_flags | ORGAN_HIDDEN
encode_info = AUGMENT_SYNDICATE_LEVEL
/obj/item/organ/internal/cyberimp/arm/item_set/syndie_mantis/l
@@ -104,10 +106,11 @@
name = "razorwire spool implant"
desc = "An integrated spool of razorwire, capable of being used as a weapon when whipped at your foes. \
Built into the back of your hand, try your best to not get it tangled."
- items_to_create = list(/obj/item/melee/razorwire)
- encode_info = AUGMENT_SYNDICATE_LEVEL
icon = 'monkestation/code/modules/cybernetics/icons/implants.dmi'
icon_state = "razorwire"
+ organ_flags = parent_type::organ_flags | ORGAN_HIDDEN
+ encode_info = AUGMENT_SYNDICATE_LEVEL
+ items_to_create = list(/obj/item/melee/razorwire)
visual_implant = TRUE
bodypart_overlay = /datum/bodypart_overlay/simple/razorwire
diff --git a/monkestation/code/modules/cybernetics/augments/arm_augments/unsorted.dm b/monkestation/code/modules/cybernetics/augments/arm_augments/unsorted.dm
index 633a8623ee4b..1cf2fba3a5cb 100644
--- a/monkestation/code/modules/cybernetics/augments/arm_augments/unsorted.dm
+++ b/monkestation/code/modules/cybernetics/augments/arm_augments/unsorted.dm
@@ -204,6 +204,7 @@
update_hud_elements()
/obj/item/organ/internal/cyberimp/arm/ammo_counter/syndicate
+ organ_flags = parent_type::organ_flags | ORGAN_HIDDEN
encode_info = AUGMENT_SYNDICATE_LEVEL
/obj/item/organ/internal/cyberimp/arm/cooler
diff --git a/monkestation/code/modules/cybernetics/augments/chest_augments.dm b/monkestation/code/modules/cybernetics/augments/chest_augments.dm
index 105f50750292..9a43ea02b05f 100644
--- a/monkestation/code/modules/cybernetics/augments/chest_augments.dm
+++ b/monkestation/code/modules/cybernetics/augments/chest_augments.dm
@@ -16,10 +16,11 @@
/obj/item/organ/internal/cyberimp/chest/sandevistan
name = "Militech Apogee Sandevistan"
desc = "This model of Sandevistan doesn't exist, at least officially. Off the record, there's gossip of secret Militech Lunar labs producing covert cyberware. It was never meant to be mass produced, but an army would only really need a few pieces like this one to dominate their enemy."
- encode_info = AUGMENT_SYNDICATE_LEVEL
+ icon = 'monkestation/code/modules/cybernetics/icons/implants.dmi'
icon_state = "sandy"
+ organ_flags = parent_type::organ_flags | ORGAN_HIDDEN
+ encode_info = AUGMENT_SYNDICATE_LEVEL
actions_types = list(/datum/action/item_action/organ_action/sandy)
- icon = 'monkestation/code/modules/cybernetics/icons/implants.dmi'
COOLDOWN_DECLARE(in_the_zone)
/// The bodypart overlay datum we should apply to whatever mob we are put into
@@ -60,7 +61,7 @@
/obj/item/organ/internal/cyberimp/chest/sandevistan/refurbished
name = "refurbished sandevistan"
desc = "The branding has been scratched off of these and it looks hastily put together."
-
+ organ_flags = parent_type::organ_flags & ~ORGAN_HIDDEN
cooldown_time = 65 SECONDS
/obj/item/organ/internal/cyberimp/chest/sandevistan/refurbished/ui_action_click(mob/user, actiontype)
@@ -94,9 +95,10 @@
/obj/item/organ/internal/cyberimp/chest/chemvat
name = "R.A.G.E. chemical system"
desc = "Extremely dangerous system that fills the user with a mix of potent drugs."
- encode_info = AUGMENT_SYNDICATE_LEVEL
- icon_state = "chemvat_back_held"
icon = 'monkestation/code/modules/cybernetics/icons/implants_onmob.dmi'
+ icon_state = "chemvat_back_held"
+ organ_flags = parent_type::organ_flags | ORGAN_HIDDEN
+ encode_info = AUGMENT_SYNDICATE_LEVEL
var/obj/item/clothing/mask/chemvat/forced
var/obj/item/chemvat_tank/forced_tank
@@ -566,6 +568,7 @@
desc = "Short for Complementary Combat Maneuvering System, it processes spinal nerve signals and enacts forced complementary maneuvers on the opposite side of the user's body when they attack. In layman's terms, it lets you dual wield."
icon = 'monkestation/code/modules/cybernetics/icons/implants.dmi'
icon_state = "ccms"
+ organ_flags = parent_type::organ_flags | ORGAN_HIDDEN
encode_info = AUGMENT_SYNDICATE_LEVEL
visual_implant = TRUE
diff --git a/monkestation/code/modules/cybernetics/augments/leg_augments/chemplants.dm b/monkestation/code/modules/cybernetics/augments/leg_augments/chemplants.dm
index fbe3d4139d4b..753702165f0e 100644
--- a/monkestation/code/modules/cybernetics/augments/leg_augments/chemplants.dm
+++ b/monkestation/code/modules/cybernetics/augments/leg_augments/chemplants.dm
@@ -76,6 +76,7 @@
name = "deep-vein emergency morale rejuvenator"
desc = "Dangerous implant used by the syndicate to reinforce their assault forces that go on suicide missions."
implant_color = "#74942a"
+ organ_flags = parent_type::organ_flags | ORGAN_HIDDEN
encode_info = AUGMENT_SYNDICATE_LEVEL
reagent_list = list(
/datum/reagent/determination = 5,
diff --git a/monkestation/code/modules/cybernetics/implant_items/autosurgeons.dm b/monkestation/code/modules/cybernetics/implant_items/autosurgeons.dm
index 25ea9301033e..00ac08ff8cb5 100644
--- a/monkestation/code/modules/cybernetics/implant_items/autosurgeons.dm
+++ b/monkestation/code/modules/cybernetics/implant_items/autosurgeons.dm
@@ -1,3 +1,9 @@
+/obj/item/autosurgeon/organ/syndicate/Initialize(mapload)
+ . = ..()
+ if(istype(stored_organ, /obj/item/organ/internal/cyberimp))
+ var/obj/item/organ/internal/cyberimp/starting_implant = stored_organ
+ starting_implant.organ_flags |= ORGAN_HIDDEN
+
/obj/item/autosurgeon/organ/syndicate/ammo_counter
starting_organ = /obj/item/organ/internal/cyberimp/arm/ammo_counter/syndicate
diff --git a/monkestation/code/modules/mapfluff/ruins/spaceruin_code/oldstation.dm b/monkestation/code/modules/mapfluff/ruins/spaceruin_code/oldstation.dm
new file mode 100644
index 000000000000..1083c4474101
--- /dev/null
+++ b/monkestation/code/modules/mapfluff/ruins/spaceruin_code/oldstation.dm
@@ -0,0 +1,4 @@
+/obj/item/paper/fluff/ruins/oldstation/distro_guide
+ name = "Reminder - air distrubtion."
+ default_raw_text = "Reminder!
Blue on layer 4 is for air.
Red on layer 2 is for the scrubbers.
\
+ The dispenser prints our pipes with this in mind so they dont get accidentally connected. Doesn't matter if 'purple is a pretty colour', it won't connect."
diff --git a/monkestation/code/modules/mob/living/basic/pets/cat.dm b/monkestation/code/modules/mob/living/basic/pets/cat.dm
index 2777d3c5b02f..44fb0356e29b 100644
--- a/monkestation/code/modules/mob/living/basic/pets/cat.dm
+++ b/monkestation/code/modules/mob/living/basic/pets/cat.dm
@@ -2,3 +2,8 @@
//. = ..()
worn_slot_flags = ITEM_SLOT_HEAD
head_icon = 'monkestation/icons/mob/pets_held.dmi'
+
+/mob/living/simple_animal/hostile/syndicat
+ //. = ..()
+ worn_slot_flags = ITEM_SLOT_HEAD
+ head_icon = 'monkestation/icons/mob/pets_held.dmi'
diff --git a/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldchef.dm b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldchef.dm
new file mode 100644
index 000000000000..82a78c9d9456
--- /dev/null
+++ b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldchef.dm
@@ -0,0 +1,47 @@
+
+//Ancient cryogenic sleepers. Players become NT crewmen from a hundred year old space station, now on the verge of collapse.
+/obj/effect/mob_spawn/ghost_role/human/oldchef
+ name = "old cryogenics pod"
+ desc = "A humming cryo pod. You can barely recognise a chef uniform underneath the built up ice. The machine is attempting to wake up its occupant."
+ prompt_name = "a chef"
+ icon = 'icons/obj/machines/sleeper.dmi'
+ icon_state = "sleeper"
+ mob_species = /datum/species/human
+ you_are_text = "You are a chef working for Nanotrasen, stationed onboard a state of the art research station."
+ flavour_text = "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."
+ important_text = "Work as a team with your fellow survivors and do not abandon them."
+ outfit = /datum/outfit/oldchef
+ spawner_job_path = /datum/job/ancient_crew
+
+/obj/effect/mob_spawn/ghost_role/human/oldchef/Destroy()
+ new/obj/structure/showcase/machinery/oldpod/used(drop_location())
+ return ..()
+
+/datum/outfit/oldchef
+ name = "Ancient Chef"
+ id = /obj/item/card/id/advanced/old
+ id_trim = /datum/id_trim/away/old/chef
+ uniform = /obj/item/clothing/under/rank/civilian/chef
+ suit = /obj/item/clothing/suit/toggle/chef
+ ears = /obj/item/radio/headset/headset_old
+ head = /obj/item/clothing/head/utility/chefhat
+ mask = /obj/item/clothing/mask/fakemoustache/italian
+ l_pocket = /obj/item/sharpener
+ belt = /obj/item/knife/kitchen
+
+/datum/outfit/oldchef/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ if(visualsOnly)
+ return
+
+ var/obj/item/radio/headset/R = H.ears
+ R.set_frequency(FREQ_UNCOMMON)
+ R.freqlock = RADIO_FREQENCY_LOCKED
+ R.independent = TRUE
+ var/obj/item/card/id/W = H.wear_id
+ if(W)
+ W.registered_name = H.real_name
+ W.update_label()
+ W.update_icon()
+ ..()
diff --git a/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldcmo.dm b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldcmo.dm
new file mode 100644
index 000000000000..8c115f5aefc4
--- /dev/null
+++ b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldcmo.dm
@@ -0,0 +1,47 @@
+
+//Ancient cryogenic sleepers. Players become NT crewmen from a hundred year old space station, now on the verge of collapse.
+/obj/effect/mob_spawn/ghost_role/human/oldcmo
+ name = "old command cryogenics pod"
+ desc = "A humming cryo pod. You can barely recognise a Chief Medical Officer's uniform underneath the built up ice. The machine is attempting to wake up its occupant."
+ prompt_name = "the Chief Medical Officer"
+ icon = 'icons/obj/machines/sleeper.dmi'
+ icon_state = "sleeper"
+ mob_species = /datum/species/human
+ you_are_text = "You are a Chief Medical Officer working for Nanotrasen, stationed onboard a state of the art research station."
+ flavour_text = "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."
+ important_text = "Work as a team with your fellow survivors and do not abandon them. You are expected to be familiar with Old station for this role."
+ outfit = /datum/outfit/oldcmo
+ spawner_job_path = /datum/job/ancient_crew
+
+/obj/effect/mob_spawn/ghost_role/human/oldcmo/Destroy()
+ new/obj/structure/showcase/machinery/oldpod/used(drop_location())
+ return ..()
+
+/datum/outfit/oldcmo
+ name = "Ancient Chief Medical Officer"
+ id = /obj/item/card/id/advanced/old
+ id_trim = /datum/id_trim/away/old/cmo
+ uniform = /obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck
+ shoes = /obj/item/clothing/shoes/jackboots
+ l_pocket = /obj/item/flashlight/pen/paramedic
+ r_pocket = /obj/item/pinpointer/crew
+ implants = list(/obj/item/implant/mindshield)
+ skillchips = list(/obj/item/skillchip/entrails_reader)
+ ears = /obj/item/radio/headset/heads/headset_old
+
+/datum/outfit/oldcmo/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ if(visualsOnly)
+ return
+
+ var/obj/item/radio/headset/R = H.ears
+ R.set_frequency(FREQ_UNCOMMON)
+ R.freqlock = RADIO_FREQENCY_LOCKED
+ R.independent = TRUE
+ var/obj/item/card/id/W = H.wear_id
+ if(W)
+ W.registered_name = H.real_name
+ W.update_label()
+ W.update_icon()
+ ..()
diff --git a/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldeng.dm b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldeng.dm
new file mode 100644
index 000000000000..bb92cd6a27f4
--- /dev/null
+++ b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldeng.dm
@@ -0,0 +1,21 @@
+/datum/outfit/oldeng
+ ears = /obj/item/radio/headset/headset_old
+ skillchips = /obj/item/skillchip/job/engineer
+ id = /obj/item/card/id/advanced/old
+ id_trim = /datum/id_trim/away/old/eng
+ belt = /obj/item/storage/belt/utility/full/engi
+
+/datum/outfit/oldeng/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ if(visualsOnly)
+ return
+
+ var/obj/item/radio/headset/R = H.ears
+ R.set_frequency(FREQ_UNCOMMON)
+ R.freqlock = RADIO_FREQENCY_LOCKED
+ R.independent = TRUE
+ var/obj/item/card/id/W = H.wear_id
+ if(W)
+ W.registered_name = H.real_name
+ W.update_label()
+ W.update_icon()
+ ..()
diff --git a/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldexplorer.dm b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldexplorer.dm
new file mode 100644
index 000000000000..1837f80f2827
--- /dev/null
+++ b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldexplorer.dm
@@ -0,0 +1,47 @@
+
+//Ancient cryogenic sleepers. Players become NT crewmen from a hundred year old space station, now on the verge of collapse.
+/obj/effect/mob_spawn/ghost_role/human/oldexplorer
+ name = "old cryogenics pod"
+ desc = "A humming cryo pod. You can barely recognise a explorer uniform underneath the built up ice. The machine is attempting to wake up its occupant."
+ prompt_name = "a explorer"
+ icon = 'icons/obj/machines/sleeper.dmi'
+ icon_state = "sleeper"
+ mob_species = /datum/species/human
+ you_are_text = "You are a explorer working for Nanotrasen, stationed onboard a state of the art research station."
+ flavour_text = "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."
+ important_text = "Work as a team with your fellow survivors and do not abandon them."
+ outfit = /datum/outfit/oldexplorer
+ spawner_job_path = /datum/job/ancient_crew
+
+/obj/effect/mob_spawn/ghost_role/human/oldexplorer/Destroy()
+ new/obj/structure/showcase/machinery/oldpod/used(drop_location())
+ return ..()
+
+/datum/outfit/oldexplorer
+ name = "Ancient Explorer"
+ id = /obj/item/card/id/advanced/old
+ id_trim = /datum/id_trim/away/old/explorer
+ uniform = /obj/item/clothing/under/rank/cargo/miner
+ shoes = /obj/item/clothing/shoes/workboots/mining
+ gloves = /obj/item/clothing/gloves/color/black
+ ears = /obj/item/radio/headset/headset_old
+ mask = /obj/item/clothing/mask/gas/explorer
+ belt = /obj/item/pickaxe/drill
+ l_pocket = /obj/item/gps
+
+/datum/outfit/oldexplorer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ if(visualsOnly)
+ return
+
+ var/obj/item/radio/headset/R = H.ears
+ R.set_frequency(FREQ_UNCOMMON)
+ R.freqlock = RADIO_FREQENCY_LOCKED
+ R.independent = TRUE
+ var/obj/item/card/id/W = H.wear_id
+ if(W)
+ W.registered_name = H.real_name
+ W.update_label()
+ W.update_icon()
+ ..()
diff --git a/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldsci.dm b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldsci.dm
new file mode 100644
index 000000000000..31ab7708aed9
--- /dev/null
+++ b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldsci.dm
@@ -0,0 +1,19 @@
+/datum/outfit/oldsci
+ ears = /obj/item/radio/headset/headset_old
+ id = /obj/item/card/id/advanced/old
+ id_trim = /datum/id_trim/away/old/sci
+
+/datum/outfit/oldsci/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ if(visualsOnly)
+ return
+
+ var/obj/item/radio/headset/R = H.ears
+ R.set_frequency(FREQ_UNCOMMON)
+ R.freqlock = RADIO_FREQENCY_LOCKED
+ R.independent = TRUE
+ var/obj/item/card/id/W = H.wear_id
+ if(W)
+ W.registered_name = H.real_name
+ W.update_label()
+ W.update_icon()
+ ..()
diff --git a/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldsec.dm b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldsec.dm
new file mode 100644
index 000000000000..adc89b56fb2f
--- /dev/null
+++ b/monkestation/code/modules/mob_spawn/ghost_roles/space_roles/oldsec.dm
@@ -0,0 +1,21 @@
+/datum/outfit/oldsec
+ ears = /obj/item/radio/headset/headset_old/alt
+ implants = list(/obj/item/implant/mindshield)
+ id = /obj/item/card/id/advanced/old
+ id_trim = /datum/id_trim/away/old/sec
+ belt = /obj/item/gun/energy/laser/retro/old
+
+/datum/outfit/oldsec/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ if(visualsOnly)
+ return
+
+ var/obj/item/radio/headset/R = H.ears
+ R.set_frequency(FREQ_UNCOMMON)
+ R.freqlock = RADIO_FREQENCY_LOCKED
+ R.independent = TRUE
+ var/obj/item/card/id/W = H.wear_id
+ if(W)
+ W.registered_name = H.real_name
+ W.update_label()
+ W.update_icon()
+ ..()
diff --git a/monkestation/code/modules/research/rdconsole.dm b/monkestation/code/modules/research/rdconsole.dm
new file mode 100644
index 000000000000..19c481b6c1af
--- /dev/null
+++ b/monkestation/code/modules/research/rdconsole.dm
@@ -0,0 +1,6 @@
+/obj/machinery/computer/rdconsole/unlocked
+ locked = FALSE
+ circuit = /obj/item/circuitboard/computer/rdconsole/unlocked
+
+/obj/item/circuitboard/computer/rdconsole/unlocked
+ build_path = /obj/machinery/computer/rdconsole/unlocked
diff --git a/monkestation/code/modules/smithing/ipcs/body/internal_organs.dm b/monkestation/code/modules/smithing/ipcs/body/internal_organs.dm
index 668a3ce8a262..3a8849a9b783 100644
--- a/monkestation/code/modules/smithing/ipcs/body/internal_organs.dm
+++ b/monkestation/code/modules/smithing/ipcs/body/internal_organs.dm
@@ -18,7 +18,8 @@
var/mob/living/carbon/human/user_human = brain_owner
if(HAS_TRAIT(user_human, TRAIT_REVIVES_BY_HEALING) && user_human.health > SYNTH_BRAIN_WAKE_THRESHOLD)
- user_human.revive(FALSE)
+ if(!HAS_TRAIT(user_human, TRAIT_DEFIB_BLACKLISTED))
+ user_human.revive(FALSE)
/obj/item/organ/internal/brain/synth/emp_act(severity) // EMP act against the posi, keep the cap far below the organ health
. = ..()
diff --git a/monkestation/code/modules/smithing/ipcs/surgeries/robot_chest_repair.dm b/monkestation/code/modules/smithing/ipcs/surgeries/robot_chest_repair.dm
index 5c4a1b222960..697eb1dd0368 100644
--- a/monkestation/code/modules/smithing/ipcs/surgeries/robot_chest_repair.dm
+++ b/monkestation/code/modules/smithing/ipcs/surgeries/robot_chest_repair.dm
@@ -90,6 +90,11 @@
target.notify_revival("Someone is trying to reboot your posibrain.", source = target)
/datum/surgery_step/finalize_positronic_restoration/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ if(HAS_TRAIT(target, TRAIT_DEFIB_BLACKLISTED))
+ target.emote("buzz")
+ target.visible_message(span_warning("...[target.p_they()] convulses, then goes offline."))
+ return TRUE
+
if (target.stat < DEAD)
target.visible_message(span_notice("...[target] is completely unaffected! Seems like they're already active!"))
return FALSE
diff --git a/monkestation/code/modules/spells/spell_types/pointed/smite.dm b/monkestation/code/modules/spells/spell_types/pointed/smite.dm
index 6ff0c3688d02..fd91f28e19ec 100644
--- a/monkestation/code/modules/spells/spell_types/pointed/smite.dm
+++ b/monkestation/code/modules/spells/spell_types/pointed/smite.dm
@@ -25,7 +25,7 @@
var/list/heavy_smites = list(/datum/smite/berforate, /datum/smite/bloodless, /datum/smite/boneless, /datum/smite/brain_damage, /datum/smite/bread, /datum/smite/bsa, \
/datum/smite/fireball, /datum/smite/gib, /datum/smite/lightning, /datum/smite/nugget, /datum/smite/puzzgrid, /datum/smite/puzzle)
//list of smites that have a low effect on the target
- var/list/light_smites = list(/datum/smite/bad_luck, /datum/smite/curse_of_babel, /datum/smite/fake_bwoink, /datum/smite/fat, /datum/smite/ghost_control, /datum/smite/immerse, \
+ var/list/light_smites = list(/datum/smite/bad_luck, /datum/smite/fake_bwoink, /datum/smite/fat, /datum/smite/ghost_control, /datum/smite/immerse, \
/datum/smite/knot_shoes, /datum/smite/ocky_icky, /datum/smite/scarify)
/datum/action/cooldown/spell/pointed/smite/is_valid_target(atom/cast_on)
@@ -61,10 +61,6 @@
var/datum/smite/berforate/shoot_smite = new picked_smite
shoot_smite.hatred = "A lot"
do_smite(shoot_smite, cast_on)
- if(/datum/smite/curse_of_babel)
- var/datum/smite/curse_of_babel/babel_smite = new picked_smite
- babel_smite.duration = 5 MINUTES
- do_smite(babel_smite, cast_on)
if(/datum/smite/puzzgrid)
var/datum/smite/puzzgrid/puzz_smite = new picked_smite
puzz_smite.gib_on_loss = TRUE
diff --git a/monkestation/code/modules/syndicate_ghostroles/_base.dm b/monkestation/code/modules/syndicate_ghostroles/_base.dm
new file mode 100644
index 000000000000..b3976b006b6c
--- /dev/null
+++ b/monkestation/code/modules/syndicate_ghostroles/_base.dm
@@ -0,0 +1,8 @@
+/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/special(mob/living/new_spawn)
+ . = ..()
+ to_chat(new_spawn, "Code Phrases: [span_blue(jointext(GLOB.syndicate_code_phrase, ", "))]")
+ to_chat(new_spawn, "Code Responses: [span_red("[jointext(GLOB.syndicate_code_response, ", ")]")]")
+ new_spawn.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_phrase_regex, "blue")
+ new_spawn.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_response_regex, "red")
+ new_spawn.add_mob_memory(/datum/memory/key/codewords)
+ new_spawn.add_mob_memory(/datum/memory/key/codewords/responses)
diff --git a/monkestation/code/modules/trading/unusual_effects/animation_housing/bloody.dm b/monkestation/code/modules/trading/unusual_effects/animation_housing/bloody.dm
new file mode 100644
index 000000000000..4da3e79a0aba
--- /dev/null
+++ b/monkestation/code/modules/trading/unusual_effects/animation_housing/bloody.dm
@@ -0,0 +1,29 @@
+/datum/component/particle_spewer/bloodydrip
+ unusual_description = "exsanguinating"
+ icon_file = 'icons/mob/effects/bleed_overlays.dmi'
+ particle_state = "head_2"
+ burst_amount = 1
+ duration = 6 SECONDS
+ random_bursts = TRUE
+ spawn_interval = 4 SECONDS
+
+/datum/component/particle_spewer/bloodydrip/animate_particle(obj/effect/abstract/particle/spawned)
+ var/chance = rand(1, 12)
+ switch(chance)
+ if(1 to 2)
+ spawned.icon_state = "head_2"
+ if(3 to 4)
+ spawned.icon_state = "l_leg_2"
+ if(5 to 6)
+ spawned.icon_state = "r_leg_2"
+ if(7 to 8)
+ spawned.icon_state = "r_arm_2"
+ if(9 to 10)
+ spawned.icon_state = "l_arm_2"
+ else
+ spawned.icon_state = "chest_2"
+
+ spawned.layer = ABOVE_MOB_LAYER
+ spawned.pixel_y -= 12
+ . = ..()
+
diff --git a/monkestation/icons/mob/pets_held.dmi b/monkestation/icons/mob/pets_held.dmi
index 1cf59f1d9bd7..c488f970f72c 100644
Binary files a/monkestation/icons/mob/pets_held.dmi and b/monkestation/icons/mob/pets_held.dmi differ
diff --git a/monkestation/icons/obj/rayne_corp/rayne.dmi b/monkestation/icons/obj/rayne_corp/rayne.dmi
index 2fa960ed59a5..c44226eb0a73 100644
Binary files a/monkestation/icons/obj/rayne_corp/rayne.dmi and b/monkestation/icons/obj/rayne_corp/rayne.dmi differ
diff --git a/sound/items/xbow_lock.ogg b/sound/items/xbow_lock.ogg
new file mode 100644
index 000000000000..b9e53d8515cf
Binary files /dev/null and b/sound/items/xbow_lock.ogg differ
diff --git a/sound/weapons/taser3.ogg b/sound/weapons/taser3.ogg
new file mode 100644
index 000000000000..4bc67cd11af8
Binary files /dev/null and b/sound/weapons/taser3.ogg differ
diff --git a/strings/monkey_companies/rayne_mender.json b/strings/monkey_companies/rayne_mender.json
new file mode 100644
index 000000000000..f746ad3d97cd
--- /dev/null
+++ b/strings/monkey_companies/rayne_mender.json
@@ -0,0 +1,99 @@
+{
+ "pickup":[
+ "Thank you for choosing Rayne Corp for all your personal health needs.",
+ "I'm a medkit, not a doctor, what the hell do you want me to do about this?",
+ "You're lucky I'm here to patch up this tragedy.",
+ "Try not to get hurt next time, genius. Or do. I don't really care.",
+ "You're lucky im here or you would be a goner, probably.",
+ "I can fix anything! Except for whatever the hell THAT is."
+ ],
+
+ "putdown":[
+ "Talk soon.",
+ "You'll be back",
+ "Not so rough asshole!",
+ "Nap time"
+ ],
+
+ "podnerd":[
+ "This is a plant. Water it.",
+ "I think plants need fertilizer or something I dont know",
+ "Why are you scanning a plant.",
+ "A shrubbery!"
+ ],
+
+ "lowblood":[
+ "Blood volume is low. Recommend transfusion.",
+ "Not enough hemoglobin to sustain respiration.",
+ "Looking a bit like a juiced lemon, recommend Iron intake.",
+ "You are bleeding more than a vampire at a blood bank."
+ ],
+
+ "onfire": [
+ "WHY ARE YOU SCANNING THEM!!!",
+ "THEY ARE ON FIRE!!!",
+ "GET A FIRE EXTINGUISHER MORON"
+ ],
+
+ "oxy":[
+ "The subject cannot breath. I recommend salbutamol, or air.",
+ "Did you huff helium or something?"
+ ],
+
+ "brute":[
+ "The subject looks like they got mugged with a tyre iron.",
+ "Just a flesh wound, apply sutures.",
+ "Nanotrasen doesnt pay you to be a punching bag.",
+ "You look like a sack of potatoes that's been beaten with a baseball bat."
+ ],
+
+ "burn":[
+ "The subject is a bit charred, debridle and apply ointment to burns.",
+ "Well then, looks like someone got a little toasty.",
+ "You shouldn't stick your fingers in light sockets."
+ ],
+
+ "tox":[
+ "The subject was eating rat poison or something.",
+ "It looks like you have been sunbathing in the SM chamber, again.",
+ "You look like you've eaten a bad burrito. And by bad, I mean really bad."
+ ],
+
+ "braindamage":[
+ "The subject's brain looks a bit smooth, recommend roughing it up a bit.",
+ "The subject's brain has sustained serious damage, provide Mannitol."
+ ],
+
+ "fuckedup":[
+ "The subject is absolutely fucked up...",
+ "This fleshy mass was a person?",
+ "Just breathe and you'll be fine. Or not. Who knows?"
+ ],
+
+ "fine":[
+ "Subject is operating nominally.",
+ "Seem fine to me, might be in their head.",
+ "No functional issues detected, that i care about",
+ "Mostly alive"
+ ],
+
+ "organ":[
+ "Well, this is a gut wrenching sight. Pun intended.",
+ "Your insides look like a blender exploded, and you're the smoothie."
+ ],
+
+ "nobrain":[
+ "The subject has no brain.",
+ "Zero IQ detected."
+ ],
+
+ "dead":[
+ "Subject is dead but whole.",
+ "Reviving recommended if possible.",
+ "Subject is dead but ready to function",
+ "Subject has yee'd their last haw"
+ ]
+
+
+
+}
diff --git a/tgstation.dme b/tgstation.dme
index 899437333517..ac145314633a 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2264,6 +2264,7 @@
#include "code\game\objects\items\AI_modules\repair.dm"
#include "code\game\objects\items\AI_modules\supplied.dm"
#include "code\game\objects\items\AI_modules\zeroth.dm"
+#include "code\game\objects\items\cards\card_ids.dm"
#include "code\game\objects\items\circuitboards\circuitboard.dm"
#include "code\game\objects\items\circuitboards\computer_circuitboards.dm"
#include "code\game\objects\items\circuitboards\machines\engine_circuitboards.dm"
@@ -2350,6 +2351,7 @@
#include "code\game\objects\items\granters\crafting\death_sandwich.dm"
#include "code\game\objects\items\granters\crafting\desserts.dm"
#include "code\game\objects\items\granters\crafting\pipegun.dm"
+#include "code\game\objects\items\granters\crafting\rebarxbowsyndie.dm"
#include "code\game\objects\items\granters\crafting\regal_condor.dm"
#include "code\game\objects\items\granters\magic\_spell_granter.dm"
#include "code\game\objects\items\granters\magic\barnyard.dm"
@@ -4824,11 +4826,13 @@
#include "code\modules\mob\living\simple_animal\friendly\gondola.dm"
#include "code\modules\mob\living\simple_animal\friendly\pet.dm"
#include "code\modules\mob\living\simple_animal\hostile\dark_wizard.dm"
+#include "code\modules\mob\living\simple_animal\hostile\feral.dm"
#include "code\modules\mob\living\simple_animal\hostile\hostile.dm"
#include "code\modules\mob\living\simple_animal\hostile\illusion.dm"
#include "code\modules\mob\living\simple_animal\hostile\mimic.dm"
#include "code\modules\mob\living\simple_animal\hostile\ooze.dm"
#include "code\modules\mob\living\simple_animal\hostile\pirate.dm"
+#include "code\modules\mob\living\simple_animal\hostile\syndicat.dm"
#include "code\modules\mob\living\simple_animal\hostile\vatbeast.dm"
#include "code\modules\mob\living\simple_animal\hostile\zombie.dm"
#include "code\modules\mob\living\simple_animal\hostile\jungle\_jungle_mobs.dm"
@@ -5977,6 +5981,7 @@
#include "monkestation\code\datums\keybinding\communication.dm"
#include "monkestation\code\datums\keybinding\living.dm"
#include "monkestation\code\datums\looping_sounds\weather.dm"
+#include "monkestation\code\datums\memory\key_memories.dm"
#include "monkestation\code\datums\mind\_mind.dm"
#include "monkestation\code\datums\mocking\client.dm"
#include "monkestation\code\datums\mutations\chameleon.dm"
@@ -6103,6 +6108,7 @@
#include "monkestation\code\game\objects\items\implants\hardlight.dm"
#include "monkestation\code\game\objects\items\objects\items\robot\robot_upgrades.dm"
#include "monkestation\code\game\objects\items\rayne_corp\rayne_lantern.dm"
+#include "monkestation\code\game\objects\items\rayne_corp\rayne_mender.dm"
#include "monkestation\code\game\objects\items\robot\items\hypo.dm"
#include "monkestation\code\game\objects\items\stacks\tile_types.dm"
#include "monkestation\code\game\objects\items\storage\book.dm"
@@ -6369,6 +6375,7 @@
#include "monkestation\code\modules\antagonists\florida_man\supplypods.dm"
#include "monkestation\code\modules\antagonists\fugitive\hunters\hunter_outfits.dm"
#include "monkestation\code\modules\antagonists\heretic\heretic_antag.dm"
+#include "monkestation\code\modules\antagonists\heretic\heretic_knowledge.dm"
#include "monkestation\code\modules\antagonists\heretic\heretic_living_heart.dm"
#include "monkestation\code\modules\antagonists\heretic\heretic_monsters.dm"
#include "monkestation\code\modules\antagonists\heretic\items\forbidden_book.dm"
@@ -7409,6 +7416,7 @@
#include "monkestation\code\modules\map_gen_expansions\mushroom\extraction\structures\extractor\main.dm"
#include "monkestation\code\modules\map_gen_expansions\mushroom\mobs\stillcaps.dm"
#include "monkestation\code\modules\map_gen_expansions\structures\test_spawner.dm"
+#include "monkestation\code\modules\mapfluff\ruins\spaceruin_code\oldstation.dm"
#include "monkestation\code\modules\mapping\access_helpers.dm"
#include "monkestation\code\modules\mapping\mapping_helpers.dm"
#include "monkestation\code\modules\maptext\maptext_image_helper.dm"
@@ -7588,6 +7596,12 @@
#include "monkestation\code\modules\mob\living\silicon\death.dm"
#include "monkestation\code\modules\mob\living\simple_animal\megafauna\wendigo.dm"
#include "monkestation\code\modules\mob\living\simple_animal\pets\bees.dm"
+#include "monkestation\code\modules\mob_spawn\ghost_roles\space_roles\oldchef.dm"
+#include "monkestation\code\modules\mob_spawn\ghost_roles\space_roles\oldcmo.dm"
+#include "monkestation\code\modules\mob_spawn\ghost_roles\space_roles\oldeng.dm"
+#include "monkestation\code\modules\mob_spawn\ghost_roles\space_roles\oldexplorer.dm"
+#include "monkestation\code\modules\mob_spawn\ghost_roles\space_roles\oldsci.dm"
+#include "monkestation\code\modules\mob_spawn\ghost_roles\space_roles\oldsec.dm"
#include "monkestation\code\modules\mod\mod_control.dm"
#include "monkestation\code\modules\mod\mod_types.dm"
#include "monkestation\code\modules\mod\modules\modules_antag.dm"
@@ -7895,6 +7909,7 @@
#include "monkestation\code\modules\religion\maint_god.dm"
#include "monkestation\code\modules\replays\hooks\generic_hooks.dm"
#include "monkestation\code\modules\replays\subsystem\replay.dm"
+#include "monkestation\code\modules\research\rdconsole.dm"
#include "monkestation\code\modules\research\designs\biogenerator_designs.dm"
#include "monkestation\code\modules\research\designs\bluespace_designs.dm"
#include "monkestation\code\modules\research\designs\computer_designs.dm"
@@ -8207,6 +8222,7 @@
#include "monkestation\code\modules\surgery\organs\internal\lungs.dm"
#include "monkestation\code\modules\surgery\organs\internal\stomach.dm"
#include "monkestation\code\modules\surgery\organs\internal\tongue.dm"
+#include "monkestation\code\modules\syndicate_ghostroles\_base.dm"
#include "monkestation\code\modules\syndicate_ghostroles\listeningpost.dm"
#include "monkestation\code\modules\temperature_overhaul\exposure.dm"
#include "monkestation\code\modules\temperature_overhaul\homeostasis_level.dm"
@@ -8235,6 +8251,7 @@
#include "monkestation\code\modules\trading\unusual_effects\_unusual_component.dm"
#include "monkestation\code\modules\trading\unusual_effects\animation_housing\__spawning_component.dm"
#include "monkestation\code\modules\trading\unusual_effects\animation_housing\_footprint.dm"
+#include "monkestation\code\modules\trading\unusual_effects\animation_housing\bloody.dm"
#include "monkestation\code\modules\trading\unusual_effects\animation_housing\confetti.dm"
#include "monkestation\code\modules\trading\unusual_effects\animation_housing\fire.dm"
#include "monkestation\code\modules\trading\unusual_effects\animation_housing\galaxies.dm"
diff --git a/tgui/packages/tgui-panel/chat/constants.js b/tgui/packages/tgui-panel/chat/constants.js
index 353e81702e80..a078752f3606 100644
--- a/tgui/packages/tgui-panel/chat/constants.js
+++ b/tgui/packages/tgui-panel/chat/constants.js
@@ -62,7 +62,7 @@ export const MESSAGE_TYPES = [
description: 'All departments of radio messages',
selector:
// '.alert, .minorannounce, .syndradio, .centcomradio, .aiprivradio, .comradio, .secradio, .gangradio, .engradio, .medradio, .sciradio, .suppradio, .servradio, .radio, .deptradio, .binarysay, .newscaster, .resonate, .abductor, .alien, .changeling', MONKESTATION EDIT CHANGE OLD
- '.alert, .minorannounce, .syndradio, .centcomradio, .aiprivradio, .comradio, .secradio, .gangradio, .engradio, .medradio, .sciradio, .suppradio, .servradio, .radio, .deptradio, .binarysay, .newscaster, .resonate, .abductor, .alien, .changeling, .radioradio', // MONKESTATION EDIT CHANGE NEW
+ '.alert, .minorannounce, .syndradio, .centcomradio, .aiprivradio, .comradio, .secradio, .gangradio, .engradio, .medradio, .sciradio, .suppradio, .servradio, .radio, .deptradio, .binarysay, .newscaster, .resonate, .abductor, .alien, .changeling, .radioradio .uncommonradio', // MONKESTATION EDIT CHANGE NEW
},
{
type: MESSAGE_TYPE_INFO,
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
index eaadc6a6103e..6213b366f234 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss
@@ -1201,6 +1201,10 @@ $border-width-px: $border-width * 1px;
}
// MONKESTATION ADDITION END PR#45 - Clock cult
+.uncommonradio {
+ color: #78a1b1;
+}
+
// MONKESTATION
.honk {
color: #ff70c1;
diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
index 7e2276659d38..8e449a9f2a21 100644
--- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
+++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss
@@ -1229,6 +1229,10 @@ $border-width-px: $border-width * 1px;
}
// MONKESTATION ADDITION END PR#45 - Clock cult
+.uncommonradio {
+ color: #1d4555;
+}
+
// MONKESTATION
.honk {
diff --git a/tgui/packages/tgui-say/constants.ts b/tgui/packages/tgui-say/constants.ts
index 0c3d7943c267..113afcde1979 100644
--- a/tgui/packages/tgui-say/constants.ts
+++ b/tgui/packages/tgui-say/constants.ts
@@ -30,4 +30,5 @@ export const RADIO_PREFIXES = {
':u ': 'Supp',
':v ': 'Svc',
':y ': 'CCom',
+ ':f ': 'Uncom',
} as const;
diff --git a/tgui/packages/tgui-say/styles/colors.scss b/tgui/packages/tgui-say/styles/colors.scss
index 3e773aa3627f..38e89dec26a3 100644
--- a/tgui/packages/tgui-say/styles/colors.scss
+++ b/tgui/packages/tgui-say/styles/colors.scss
@@ -28,6 +28,7 @@ $_channel_map: (
'Supp': #b88646,
'Svc': #6ca729,
'Synd': #8f4a4b,
+ 'Uncom': #78a1b1,
);
$channel_keys: map.keys($_channel_map) !default;
diff --git a/tgui/packages/tgui/constants.ts b/tgui/packages/tgui/constants.ts
index 5e7fe92991cc..1e2a41371c67 100644
--- a/tgui/packages/tgui/constants.ts
+++ b/tgui/packages/tgui/constants.ts
@@ -150,6 +150,11 @@ export const RADIO_CHANNELS = [
freq: 1361,
color: '#FFC0CB',
},
+ {
+ name: 'Uncommon',
+ freq: 1363,
+ color: '#78a1b1',
+ },
] as const;
const GASES = [
diff --git a/tgui/packages/tgui/interfaces/Secrets.jsx b/tgui/packages/tgui/interfaces/Secrets.jsx
index 146a40b427f6..5ba7b5181ada 100644
--- a/tgui/packages/tgui/interfaces/Secrets.jsx
+++ b/tgui/packages/tgui/interfaces/Secrets.jsx
@@ -598,32 +598,6 @@ const FunForYouTab = (props) => {
-
-
-
-
-
-
-
-
-
-
-
-
);
};