diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 08bf2fefc9f..c572710e85a 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -3,17 +3,19 @@
## Описание
-
+
-## Ссылка на предложение/Причина создания ПР
+## Причина создания ПР / Почему это хорошо для игры
-
-
+
+
+
+
## Демонстрация изменений
-
+
## Тесты
-
+
diff --git a/.github/workflows/testmerge.yml b/.github/workflows/testmerge.yml
index ecc9206c851..177bc370ab0 100644
--- a/.github/workflows/testmerge.yml
+++ b/.github/workflows/testmerge.yml
@@ -150,6 +150,15 @@ jobs:
git commit -m "Automatic changelog generation"
fi
+ # Generate TGUI bundle
+ ./tgui/bin/tgui
+ CHANGES=$(git diff --name-only --cached | wc -l)
+ if [ "$CHANGES" -gt 0 ] ; then
+ git config --local user.email "action@github.com"
+ git config --local user.name "TGUI bundle Generation"
+ git commit -m "Testmerge TGUI bundle build generation"
+ fi
+
git push -f origin ${{ env.TESTMERGE_BRANCH }}
# Output the list of merged PRs
diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index 7888e455df4..e1b88a5d516 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -897,13 +897,9 @@
/area/quartermaster/delivery)
"ajG" = (
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/effect/decal/warning_stripes/east,
@@ -1662,6 +1658,9 @@
/area/maintenance/fore)
"aqe" = (
/obj/effect/landmark/start/trainee_engineer,
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -13402,8 +13401,6 @@
"bGW" = (
/obj/effect/decal/warning_stripes/southwestcorner,
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/structure/cable/yellow{
@@ -17371,8 +17368,6 @@
"cam" = (
/obj/effect/decal/warning_stripes/east,
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/cable/yellow{
@@ -18008,9 +18003,7 @@
icon_state = "4-8"
},
/obj/effect/decal/warning_stripes/south,
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"cdj" = (
@@ -19753,6 +19746,10 @@
/area/maintenance/banya)
"cml" = (
/obj/machinery/vending/autodrobe,
+/obj/machinery/camera{
+ c_tag = "Clown Office";
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
icon_state = "bar"
},
@@ -19873,6 +19870,9 @@
dir = 4
},
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -19885,11 +19885,6 @@
},
/area/hydroponics)
"cmR" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
/obj/effect/decal/warning_stripes/east,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -19897,6 +19892,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"cmV" = (
@@ -19906,6 +19904,9 @@
/obj/structure/sign/fire{
pixel_x = 32
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -19999,14 +20000,14 @@
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"cnq" = (
-/obj/machinery/camera{
- c_tag = "Clown Office"
- },
/obj/structure/bed,
/obj/item/bedsheet/clown,
/obj/structure/sign/poster/official/random{
pixel_y = 32
},
+/obj/machinery/light{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
icon_state = "bar"
},
@@ -20037,6 +20038,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/storage/secure)
"cnD" = (
@@ -20411,6 +20415,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -21153,8 +21160,6 @@
/area/hydroponics)
"ctV" = (
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/machinery/atmospherics/unary/vent_scrubber/on,
@@ -21506,8 +21511,6 @@
"cvI" = (
/obj/effect/decal/warning_stripes/east,
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/turf/simulated/floor/plasteel,
@@ -24384,12 +24387,12 @@
"cHz" = (
/obj/structure/bed,
/obj/item/bedsheet/mime,
-/obj/machinery/camera{
- c_tag = "Mime Office"
- },
/obj/structure/sign/poster/official/random{
pixel_y = 32
},
+/obj/machinery/light{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "tranquillite"
@@ -26063,7 +26066,8 @@
},
/obj/structure/filingcabinet/chestdrawer,
/obj/item/radio/intercom{
- pixel_y = -28
+ pixel_y = -26;
+ pixel_x = 0
},
/turf/simulated/floor/plasteel{
dir = 6;
@@ -26821,8 +26825,6 @@
},
/obj/effect/decal/warning_stripes/northeastcorner,
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/turf/simulated/floor/plasteel,
@@ -26876,8 +26878,6 @@
/obj/machinery/atmospherics/pipe/manifold/visible,
/obj/effect/decal/warning_stripes/north,
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/turf/simulated/floor/plasteel,
@@ -33444,8 +33444,6 @@
/obj/effect/decal/warning_stripes/south,
/obj/structure/cable/yellow,
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -34863,9 +34861,7 @@
/area/security/permabrig)
"dBp" = (
/obj/effect/decal/warning_stripes/south,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"dBr" = (
@@ -35089,6 +35085,7 @@
pixel_y = 4
},
/obj/item/book/manual/engineering_particle_accelerator,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "yellow"
@@ -35580,6 +35577,9 @@
/turf/simulated/floor/engine/o2,
/area/atmos)
"dEs" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"dEt" = (
@@ -36758,8 +36758,6 @@
icon_state = "1-2"
},
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/structure/lattice/catwalk,
@@ -37986,11 +37984,6 @@
/turf/space,
/area/space)
"dOM" = (
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
/obj/effect/decal/warning_stripes/northwest,
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 4
@@ -38374,6 +38367,9 @@
dir = 4
},
/obj/effect/decal/warning_stripes/east,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/simulated/floor/plating,
/area/engineering/engine)
"dQB" = (
@@ -38434,16 +38430,6 @@
},
/area/quartermaster/miningdock)
"dQQ" = (
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
- },
/obj/item/twohanded/required/kirbyplants,
/obj/effect/decal/warning_stripes/west,
/obj/machinery/computer/security/telescreen/singularity{
@@ -38464,11 +38450,6 @@
},
/area/quartermaster/storage)
"dQS" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
/obj/effect/landmark/start/engineer,
/turf/simulated/floor/plasteel{
icon_state = "yellowfull"
@@ -38477,11 +38458,6 @@
"dQT" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/hologram/holopad,
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
@@ -38492,6 +38468,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -38539,6 +38518,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -38551,6 +38533,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -38655,6 +38640,9 @@
},
/area/chapel/office)
"dRw" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -38874,20 +38862,13 @@
/turf/simulated/floor/plasteel,
/area/crew_quarters/locker/locker_toilet)
"dSy" = (
+/obj/effect/decal/warning_stripes/east,
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
+ icon_state = "1-2"
},
-/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plating,
/area/engineering/engine)
"dSz" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
/obj/effect/decal/warning_stripes/yellow,
/obj/machinery/door/poddoor/preopen{
id_tag = "Singularity";
@@ -38913,11 +38894,6 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
/obj/effect/decal/warning_stripes/southwest,
/turf/simulated/floor/plasteel,
/area/engineering/engine)
@@ -39382,8 +39358,6 @@
/area/quartermaster/miningdock)
"dUA" = (
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/cable/yellow{
@@ -39761,8 +39735,6 @@
/area/hydroponics)
"dVW" = (
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/effect/decal/warning_stripes/northwest,
@@ -40196,13 +40168,9 @@
/area/medical/medbay)
"dXn" = (
/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
icon_state = "4-8"
},
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/effect/decal/warning_stripes/north,
@@ -44084,9 +44052,7 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/decal/warning_stripes/south,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 4
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"eMg" = (
@@ -44994,6 +44960,14 @@
},
/turf/simulated/floor/plasteel,
/area/security/main)
+"eWl" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "neutralfull"
+ },
+/area/engineering/engine)
"eWs" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -46873,7 +46847,6 @@
/area/quartermaster/office)
"fui" = (
/obj/structure/cable/yellow{
- d2 = 8;
icon_state = "0-8"
},
/obj/machinery/power/smes{
@@ -47213,8 +47186,6 @@
/area/security/customs)
"fyJ" = (
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -47966,6 +47937,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/storage/secure)
"fIg" = (
@@ -48477,7 +48451,9 @@
},
/area/engineering/engine)
"fPD" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
icon_state = "yellowfull"
},
@@ -48542,9 +48518,11 @@
/turf/simulated/floor/plating,
/area/maintenance/fpmaint)
"fQv" = (
-/turf/simulated/floor/plasteel{
- icon_state = "yellowfull"
+/obj/effect/decal/warning_stripes/west,
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
},
+/turf/simulated/floor/plasteel,
/area/engineering/engine)
"fQD" = (
/obj/structure/chair/comfy/red{
@@ -49733,6 +49711,7 @@
},
/area/maintenance/kitchen)
"geb" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "yellow"
@@ -50310,9 +50289,6 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
/mob/living/simple_animal/possum/Poppy,
/obj/structure/bed/dogbed/pet,
/turf/simulated/floor/plasteel,
@@ -50477,13 +50453,9 @@
icon_state = "1-2"
},
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/structure/lattice/catwalk,
@@ -51302,13 +51274,9 @@
/area/toxins/storage)
"gzX" = (
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/cable/yellow{
@@ -51585,8 +51553,6 @@
"gDQ" = (
/obj/structure/grille,
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/effect/decal/warning_stripes/southwest,
@@ -61476,6 +61442,9 @@
/area/maintenance/portsolar)
"iYh" = (
/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -66106,8 +66075,6 @@
req_access = list(10,13)
},
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/turf/simulated/floor/plating/airless,
@@ -68157,8 +68124,6 @@
"kHo" = (
/obj/structure/grille,
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/structure/cable/yellow{
@@ -69325,8 +69290,6 @@
"kZJ" = (
/obj/structure/grille,
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/effect/decal/warning_stripes/north,
@@ -73239,6 +73202,14 @@
icon_state = "dark"
},
/area/security/warden)
+"lYo" = (
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "neutralfull"
+ },
+/area/engineering/engine)
"lYu" = (
/obj/effect/decal/warning_stripes/southeastcorner,
/obj/machinery/light/small{
@@ -76170,7 +76141,6 @@
},
/area/medical/medbay2)
"mGs" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/cable{
icon_state = "1-2"
},
@@ -76178,6 +76148,9 @@
dir = 8
},
/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -78198,8 +78171,6 @@
/area/crew_quarters/fitness)
"nfv" = (
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/structure/cable/yellow{
@@ -78792,8 +78763,6 @@
/area/medical/virology/lab)
"nml" = (
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/effect/decal/warning_stripes/southwest,
@@ -79469,6 +79438,9 @@
d2 = 2;
icon_state = "1-2"
},
+/obj/structure/cable/yellow{
+ icon_state = "2-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -79930,11 +79902,9 @@
/area/security/prison/cell_block/A)
"nAz" = (
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
+ icon_state = "1-2"
},
-/obj/effect/decal/warning_stripes/east,
+/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plating,
/area/engineering/engine)
"nAA" = (
@@ -80502,8 +80472,6 @@
icon_state = "1-2"
},
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/lattice/catwalk,
@@ -80511,6 +80479,10 @@
/area/space)
"nGG" = (
/obj/machinery/vending/autodrobe,
+/obj/machinery/camera{
+ c_tag = "Mime Office";
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "tranquillite"
@@ -83322,8 +83294,6 @@
"oqc" = (
/obj/structure/grille,
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/effect/decal/warning_stripes/south,
@@ -84351,6 +84321,9 @@
c_tag = "Research Central Hallway";
network = list("Research","SS13")
},
+/obj/machinery/alarm{
+ pixel_y = 22
+ },
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whitepurple"
@@ -85963,6 +85936,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "purplefull"
},
@@ -87934,12 +87910,10 @@
/turf/simulated/floor/plating,
/area/maintenance/garden)
"ptE" = (
+/obj/effect/decal/warning_stripes/northeastcorner,
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
+ icon_state = "1-4"
},
-/obj/effect/decal/warning_stripes/northeastcorner,
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"pua" = (
@@ -90400,8 +90374,6 @@
"pUS" = (
/obj/structure/grille,
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/effect/decal/warning_stripes/northwest,
@@ -91989,8 +91961,6 @@
/area/security/interrogation)
"qlZ" = (
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/structure/lattice/catwalk,
@@ -94046,6 +94016,15 @@
icon_state = "neutralfull"
},
/area/storage/tech)
+"qJy" = (
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "yellow"
+ },
+/area/engineering/engine)
"qJB" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable{
@@ -94209,8 +94188,6 @@
"qKZ" = (
/obj/structure/grille,
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/effect/decal/warning_stripes/southeastcorner,
@@ -95870,9 +95847,6 @@
},
/area/toxins/xenobiology)
"rfz" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
/obj/effect/decal/warning_stripes/south,
/obj/item/twohanded/required/kirbyplants,
/obj/structure/window/reinforced{
@@ -99176,6 +99150,16 @@
},
/turf/simulated/floor/plating,
/area/security/prison/cell_block/A)
+"rVk" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ dir = 4;
+ pixel_x = 26
+ },
+/turf/simulated/floor/plasteel,
+/area/storage/secure)
"rVt" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -100994,6 +100978,20 @@
icon_state = "dark"
},
/area/security/prisonershuttle)
+"srT" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "yellowfull"
+ },
+/area/engineering/engine)
"srW" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -101150,8 +101148,6 @@
"sui" = (
/obj/structure/grille,
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/cable/yellow{
@@ -106067,22 +106063,15 @@
},
/area/medical/research/shallway)
"tED" = (
-/obj/structure/cable/yellow{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "yellowfull"
},
@@ -108150,8 +108139,12 @@
/turf/simulated/floor/plasteel,
/area/toxins/xenobiology)
"ual" = (
-/obj/machinery/alarm{
- pixel_y = 22
+/obj/machinery/power/apc{
+ dir = 1;
+ pixel_y = 26
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
},
/turf/simulated/floor/plasteel{
dir = 1;
@@ -110390,14 +110383,13 @@
/turf/simulated/wall,
/area/maintenance/asmaint)
"uCs" = (
-/obj/structure/cable/yellow{
- d2 = 2;
- icon_state = "0-2"
- },
/obj/machinery/power/terminal{
dir = 1
},
/obj/effect/decal/warning_stripes/northeast,
+/obj/structure/cable/yellow{
+ icon_state = "0-8"
+ },
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"uCv" = (
@@ -110938,8 +110930,6 @@
req_access = list(10,13)
},
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/turf/simulated/floor/plating/airless,
@@ -112097,8 +112087,6 @@
/area/hallway/primary/central/ne)
"uXS" = (
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/cable/yellow{
@@ -114774,8 +114762,6 @@
/area/engineering/break_room)
"vCh" = (
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/cable/yellow{
@@ -116689,8 +116675,6 @@
/area/security/prisonershuttle)
"wav" = (
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/cable/yellow{
@@ -116894,16 +116878,15 @@
/area/engineering/aienter)
"wcz" = (
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/effect/decal/warning_stripes/east,
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/obj/structure/cable/yellow{
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"wcB" = (
@@ -120499,9 +120482,6 @@
},
/area/maintenance/kitchen)
"wXm" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
/obj/machinery/door/window/eastleft{
dir = 1;
req_access = list(10)
@@ -121465,8 +121445,6 @@
/area/maintenance/engineering)
"xiR" = (
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/structure/lattice/catwalk,
@@ -122038,8 +122016,6 @@
"xqC" = (
/obj/structure/grille,
/obj/structure/cable/yellow{
- d1 = 1;
- d2 = 4;
icon_state = "1-4"
},
/obj/effect/decal/warning_stripes/northeastcorner,
@@ -125740,8 +125716,6 @@
/area/maintenance/engineering)
"ybT" = (
/obj/structure/cable/yellow{
- d1 = 2;
- d2 = 4;
icon_state = "2-4"
},
/obj/effect/decal/warning_stripes/southeastcorner,
@@ -148231,7 +148205,7 @@ cwu
cwu
cwu
dVW
-eQV
+nAz
hWL
eQV
nml
@@ -149511,12 +149485,12 @@ mPg
cCp
dBp
dCv
-tzM
-tzM
+eWl
+lYo
dQD
bXU
dXo
-nAz
+dSy
dQA
dSy
dUC
@@ -149783,7 +149757,7 @@ tzM
mQp
eAb
uyI
-tzM
+eIu
wXm
gVN
pgt
@@ -150026,7 +150000,7 @@ dza
dUI
dCz
egF
-egF
+qJy
xNt
dJD
pei
@@ -150040,7 +150014,7 @@ egF
egF
nQt
uyI
-fQv
+dza
gmI
bXU
hLD
@@ -150283,7 +150257,7 @@ eIu
cbc
tPh
tPh
-tPh
+fQv
tPh
tPh
tPh
@@ -150540,7 +150514,7 @@ ryM
dXD
nkf
dXD
-nkf
+srT
dXD
nkf
dXD
@@ -153887,7 +153861,7 @@ utt
jtS
coh
cmV
-dOZ
+rVk
ufR
mDe
smf
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm
index 1fad6ae212c..85a6f8c9e40 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm
@@ -1402,6 +1402,14 @@
},
/turf/simulated/mineral/volcanic/lava_land_surface,
/area/lavaland/surface/outdoors)
+"qj" = (
+/obj/structure/stone_tile/cracked{
+ dir = 4
+ },
+/obj/effect/mapping_helpers/no_lava,
+/obj/effect/decal/cleanable/ashrune,
+/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
+/area/lavaland/surface/outdoors)
"zz" = (
/obj/effect/mapping_helpers/no_lava,
/obj/structure/stone_tile{
@@ -1606,7 +1614,7 @@ ak
ak
cg
cb
-cg
+qj
cn
bL
dr
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm
index 5f12c66b757..39c5fe42e28 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cube.dmm
@@ -10,6 +10,7 @@
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"d" = (
+/obj/effect/mapping_helpers/no_lava,
/turf/simulated/wall/indestructible,
/area/lavaland/surface/outdoors)
"e" = (
diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm
index 841225c8c6c..39b0dc4245f 100644
--- a/_maps/map_files/RandomZLevels/spacebattle.dmm
+++ b/_maps/map_files/RandomZLevels/spacebattle.dmm
@@ -1432,7 +1432,7 @@
id = "GATE";
req_access = list(150)
},
-/obj/machinery/door/poddoor{
+/obj/machinery/door/poddoor/impassable{
id_tag = "GATE";
layer = 2.8
},
@@ -6895,7 +6895,7 @@
/area/awaymission/spacebattle/hallway9)
"tC" = (
/obj/structure/table/reinforced,
-/obj/machinery/door_control{
+/obj/machinery/door_control/secure{
id = "GATE";
name = "Nuke Vault Door Controller"
},
diff --git a/_maps/map_files/RandomZLevels/stationCollision.dmm b/_maps/map_files/RandomZLevels/stationCollision.dmm
index 1fa06f86925..54e29b02b74 100644
--- a/_maps/map_files/RandomZLevels/stationCollision.dmm
+++ b/_maps/map_files/RandomZLevels/stationCollision.dmm
@@ -1007,7 +1007,7 @@
},
/area/awaymission/research)
"dm" = (
-/obj/singularity/narsie/sc_Narsie,
+/obj/singularity/god/narsie/sc_Narsie,
/turf/space,
/area/awaymission/research)
"dn" = (
diff --git a/_maps/map_files/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm
index 679f0dc5313..f1e41c891cd 100644
--- a/_maps/map_files/RandomZLevels/wildwest.dmm
+++ b/_maps/map_files/RandomZLevels/wildwest.dmm
@@ -28,17 +28,6 @@
tag = "icon-bcircuitoff"
},
/area/awaymission/wwvault)
-"ah" = (
-/turf/simulated/wall/cult,
-/area/awaymission/wwvault)
-"ai" = (
-/obj/effect/forcefield{
- desc = "You can't get in. Heh.";
- layer = 1;
- name = "Blocker"
- },
-/turf/simulated/wall/cult,
-/area/awaymission/wwvault)
"aj" = (
/turf/simulated/floor/shuttle/plating{
icon_state = "cultdamage3";
@@ -62,14 +51,6 @@
tag = "icon-bcircuitoff"
},
/area/awaymission/wwvault)
-"an" = (
-/obj/effect/forcefield{
- desc = "You can't get in. Heh.";
- layer = 1;
- name = "Blocker"
- },
-/turf/simulated/wall/indestructible/cult,
-/area/awaymission/wwvault)
"ao" = (
/turf/simulated/floor/shuttle/plating{
icon_state = "gcircuitoff";
@@ -198,41 +179,22 @@
/area/awaymission/wwvault)
"aF" = (
/obj/machinery/door/airlock/vault{
- locked = 1
+ locked = 1;
+ use_power = 0
},
/turf/simulated/floor/engine/cult,
-/area/awaymission/wwvaultdoors)
+/area/awaymission/wwvault)
"aG" = (
/turf/simulated/mineral,
/area/space/nearstation)
"aH" = (
-/obj/structure/cable{
- d2 = 8;
- icon_state = "0-8"
- },
-/obj/machinery/power/apc/noalarm{
- dir = 1;
- pixel_y = 32
- },
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "barber"
- },
-/area/awaymission/wwmines)
-"aI" = (
-/obj/machinery/power/smes/magical,
-/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
- },
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "barber"
+/obj/machinery/door/airlock/vault{
+ locked = 1;
+ use_power = 0
},
-/area/awaymission/wwmines)
-"aJ" = (
/obj/machinery/door/airlock/vault{
- locked = 1
+ locked = 1;
+ use_power = 0
},
/turf/simulated/floor/engine/cult,
/area/awaymission/wwvault)
@@ -248,55 +210,34 @@
/area/awaymission/wwmines)
"aM" = (
/turf/simulated/mineral/random,
-/area/awaymission/wwmines)
+/area/space/nearstation)
"aN" = (
/turf/simulated/mineral,
/area/awaymission/wwmines)
"aO" = (
-/obj/machinery/power/terminal{
- dir = 1
- },
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "barber"
- },
-/area/awaymission/wwmines)
+/turf/simulated/floor/engine/cult,
+/area/space/nearstation)
"aP" = (
/obj/effect/forcefield{
desc = "You can't get in. Heh.";
layer = 1;
- name = "Blocker"
+ name = "Blocker";
+ lifetime = 0;
+ icon = 'icons/mob/actions/actions.dmi';
+ icon_state = "cultforcewall"
},
/turf/space,
/area/space/nearstation)
"aQ" = (
-/obj/effect/forcefield{
- desc = "You can't get in. Heh.";
- layer = 1;
- name = "Blocker"
- },
-/turf/simulated/mineral,
+/turf/simulated/wall/indestructible/mineral_rock,
/area/space/nearstation)
"aR" = (
-/obj/effect/forcefield{
- desc = "You can't get in. Heh.";
- layer = 1;
- name = "Blocker"
- },
-/turf/simulated/mineral,
+/turf/simulated/wall/indestructible/mineral_rock,
/area/awaymission/wwmines)
"aS" = (
/obj/effect/mob_spawn/human/corpse/syndicatecommando,
/turf/simulated/floor/engine/cult,
-/area/awaymission/wwvault)
-"aT" = (
-/obj/effect/forcefield{
- desc = "You can't get in. Heh.";
- layer = 1;
- name = "Blocker"
- },
-/turf/simulated/mineral/random,
-/area/awaymission/wwmines)
+/area/space/nearstation)
"aU" = (
/turf/simulated/wall/mineral/sandstone,
/area/awaymission/wwrefine)
@@ -309,18 +250,10 @@
info = "meat grinder requires sacri"
},
/turf/simulated/floor/engine/cult,
-/area/awaymission/wwvault)
+/area/space/nearstation)
"aX" = (
/turf/simulated/floor/plating/ironsand,
/area/awaymission/wwmines)
-"aY" = (
-/obj/effect/forcefield{
- desc = "You can't get in. Heh.";
- layer = 1;
- name = "Blocker"
- },
-/turf/simulated/mineral,
-/area/awaymission/wwrefine)
"aZ" = (
/obj/effect/decal/cleanable/cobweb,
/turf/simulated/floor/plating,
@@ -332,14 +265,6 @@
/obj/machinery/door/airlock/sandstone,
/turf/simulated/floor/plating,
/area/awaymission/wwrefine)
-"bc" = (
-/obj/effect/forcefield{
- desc = "You can't get in. Heh.";
- layer = 1;
- name = "Blocker"
- },
-/turf/simulated/wall/mineral/sandstone,
-/area/awaymission/wwmines)
"bd" = (
/obj/effect/decal/cleanable/blood/gibs/body{
icon_state = "gibup1";
@@ -347,9 +272,6 @@
},
/turf/simulated/floor/plating/ironsand,
/area/awaymission/wwmines)
-"be" = (
-/turf/simulated/wall/mineral/sandstone,
-/area/space/nearstation)
"bf" = (
/obj/structure/largecrate,
/turf/simulated/floor/plating,
@@ -2434,15 +2356,6 @@
},
/turf/simulated/floor/wood,
/area/awaymission/wwmines)
-"gN" = (
-/obj/effect/decal/cleanable/blood/splatter,
-/obj/effect/forcefield{
- desc = "You can't get in. Heh.";
- layer = 1;
- name = "Blocker"
- },
-/turf/simulated/mineral,
-/area/awaymission/wwmines)
"gO" = (
/obj/item/pickaxe/gold,
/turf/simulated/floor/wood,
@@ -2493,15 +2406,6 @@
/obj/structure/window/reinforced,
/turf/simulated/floor/grass,
/area/awaymission/wwgov)
-"hg" = (
-/obj/effect/decal/cleanable/blood,
-/obj/effect/forcefield{
- desc = "You can't get in. Heh.";
- layer = 1;
- name = "Blocker"
- },
-/turf/simulated/mineral,
-/area/awaymission/wwmines)
"hj" = (
/obj/machinery/door/airlock/titanium,
/turf/simulated/floor/shuttle{
@@ -10201,7 +10105,7 @@ aa
ab
ac
ac
-ah
+ab
ac
ac
ab
@@ -10457,9 +10361,9 @@ aa
aa
ab
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ab
ab
@@ -10715,15 +10619,15 @@ aa
ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ab
aa
aa
@@ -10958,8 +10862,8 @@ ab
ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ab
@@ -10973,14 +10877,14 @@ ab
ab
ac
ac
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
ac
-ah
+ab
ab
ab
aa
@@ -11216,7 +11120,7 @@ ab
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -11228,16 +11132,16 @@ ab
ab
ab
ab
-ah
+ab
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
-ah
+ab
ac
ab
aa
@@ -11473,28 +11377,28 @@ ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
af
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ac
ab
ab
@@ -11731,27 +11635,27 @@ ac
af
ac
ad
-ah
+ab
ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
-ah
+ab
af
ac
-ah
+ab
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
ab
@@ -11983,32 +11887,32 @@ ab
ab
ab
ac
-ah
+ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
af
ac
-ah
+ab
ac
ac
-ah
+ab
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
ab
@@ -12240,32 +12144,32 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
ad
-ah
+ab
ac
ad
ac
ac
ac
ac
-ah
+ab
ac
ac
ab
@@ -12497,32 +12401,32 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
-ah
+ab
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ab
@@ -12747,7 +12651,7 @@ aa
aa
ab
ab
-ah
+ab
ac
ac
ac
@@ -12755,31 +12659,31 @@ ac
ac
ac
ac
-ah
+ab
ac
-ah
+ab
ac
af
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
+ab
ac
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
@@ -13004,39 +12908,39 @@ aa
ab
ab
ac
-ah
+ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
+ab
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ad
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ac
ac
-ah
+ab
ac
ad
ac
@@ -13261,27 +13165,27 @@ ab
ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
-ah
-ah
+ab
+ab
ac
-ah
+ab
ac
ac
ac
@@ -13289,11 +13193,11 @@ ac
ac
ad
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -13519,38 +13423,38 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ad
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
af
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -13776,38 +13680,38 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ad
ac
@@ -14029,42 +13933,42 @@ ab
ac
ac
ac
-ah
+ab
ad
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
+ab
ac
af
ac
-aJ
+aF
ac
ac
ac
@@ -14072,9 +13976,9 @@ ac
ac
ac
ab
-ac
-ac
-ac
+aO
+aO
+aO
aa
aa
aa
@@ -14282,46 +14186,46 @@ aa
aa
ab
ab
-ah
+ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
af
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ad
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-aJ
+aF
ac
ac
ac
@@ -14331,8 +14235,8 @@ ac
ab
aa
aa
-ac
-ac
+aO
+aO
aa
aa
aa
@@ -14539,46 +14443,46 @@ aa
aa
ab
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
af
ac
-ah
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ad
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ad
ac
@@ -14589,7 +14493,7 @@ ab
aa
aa
aa
-ac
+aO
aa
aa
aa
@@ -14797,45 +14701,45 @@ aa
ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
af
-ah
-ah
+ab
+ab
ac
ac
-ah
+ab
ac
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -14843,8 +14747,8 @@ ac
ac
ac
ab
-ac
-ac
+aO
+aO
aa
aa
aa
@@ -15054,45 +14958,45 @@ aa
ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -15101,8 +15005,8 @@ ac
ac
ab
aa
-ac
-ac
+aO
+aO
aa
aa
aa
@@ -15312,44 +15216,44 @@ ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
-ah
+ab
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
-ah
+ab
ac
ad
aK
@@ -15357,11 +15261,11 @@ ac
ac
ac
ab
-ac
-ac
-ac
-ac
-ac
+aO
+aO
+aO
+aO
+aO
aa
aa
aa
@@ -15567,32 +15471,32 @@ aa
aa
ab
ac
-ah
+ab
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ac
af
ac
-ah
-ah
+ab
+ab
ac
ac
ac
@@ -15600,13 +15504,13 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -15615,9 +15519,9 @@ ac
ac
ab
aa
-ac
-ac
-ac
+aO
+aO
+aO
aa
aa
aa
@@ -15824,46 +15728,46 @@ aa
aa
ab
ac
-ah
+ab
ac
af
ac
ac
-ah
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ac
ac
-ah
+ab
ac
ac
af
@@ -15871,11 +15775,11 @@ ac
ac
ac
ab
-ac
-ac
-ac
-ac
-ac
+aO
+aO
+aO
+aO
+aO
aa
aa
aa
@@ -16081,46 +15985,46 @@ aa
aa
ab
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ad
ac
ac
ac
-ah
+ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ac
ad
ac
@@ -16132,7 +16036,7 @@ aa
aa
aa
aa
-ac
+aO
aa
aa
aa
@@ -16339,36 +16243,36 @@ aa
ab
ac
ac
-ah
+ab
ad
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ad
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
ac
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -16377,7 +16281,7 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -16389,8 +16293,8 @@ aa
aa
aa
aa
-ac
-ac
+aO
+aO
aa
aa
aa
@@ -16596,11 +16500,11 @@ aa
ab
ac
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -16609,20 +16513,20 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -16634,7 +16538,7 @@ ac
ad
ac
ac
-ah
+ab
ac
ac
ac
@@ -16646,9 +16550,9 @@ ab
ab
ab
ab
-ac
-ac
-ac
+aO
+aO
+aO
aa
aa
aa
@@ -16857,17 +16761,17 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
ac
af
ac
@@ -16875,23 +16779,23 @@ ac
ac
ac
ad
-ah
+ab
ac
af
ac
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
-ah
+ab
ac
ad
ac
@@ -16901,14 +16805,14 @@ ac
aF
aW
aS
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
+aO
+aO
+aO
+aO
+aO
+aO
+aO
+aO
aa
aa
aa
@@ -17109,19 +17013,19 @@ aa
aa
ab
ab
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
@@ -17132,23 +17036,23 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
@@ -17156,17 +17060,17 @@ ac
ac
ac
aF
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
+aO
+aO
+aO
+aO
+aO
+aO
+aO
+aO
+aO
+aO
+aO
aa
aa
aa
@@ -17368,44 +17272,44 @@ aa
ab
ab
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
-ah
+ab
ac
ac
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
+ab
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ad
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
@@ -17417,12 +17321,12 @@ ab
ab
ab
ab
-ac
-ac
-ac
-ac
-ac
-ac
+aO
+aO
+aO
+aO
+aO
+aO
aa
aa
aa
@@ -17626,43 +17530,43 @@ aa
ab
ac
ac
-ah
+ab
ac
ac
ac
ac
ad
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
-ah
+ab
ac
af
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
af
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ad
ac
@@ -17883,31 +17787,31 @@ aa
ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -17916,10 +17820,10 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
@@ -17929,8 +17833,8 @@ ac
ab
aa
aa
-ac
-ac
+aO
+aO
aa
aa
aa
@@ -18141,42 +18045,42 @@ ab
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
-ah
+ab
ac
ac
ac
@@ -18184,9 +18088,9 @@ ac
ac
ac
ab
-ac
-ac
-ac
+aO
+aO
+aO
aa
aa
aa
@@ -18398,42 +18302,42 @@ ab
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ad
-ah
+ab
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
-ah
+ab
ac
ad
ac
@@ -18441,10 +18345,10 @@ ac
ac
ac
ab
-ac
-ac
-ac
-ac
+aO
+aO
+aO
+aO
aa
aa
aa
@@ -18655,21 +18559,21 @@ ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
@@ -18679,18 +18583,18 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
ac
af
-ah
+ab
ac
ac
ac
@@ -18913,21 +18817,21 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
@@ -18937,9 +18841,9 @@ ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
@@ -18947,16 +18851,16 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ab
ab
ab
ab
-ac
-ac
-ac
+aO
+aO
+aO
aa
aa
aa
@@ -19171,25 +19075,25 @@ af
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
ad
ac
ac
@@ -19209,12 +19113,12 @@ ab
ab
ab
aa
-ac
+aO
aa
aa
aa
-ac
-ac
+aO
+aO
aa
aa
aa
@@ -19421,7 +19325,7 @@ aa
aa
ab
ab
-ah
+ab
ac
ac
ac
@@ -19429,22 +19333,22 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -19466,13 +19370,13 @@ aa
aa
aa
aa
-ac
+aO
aa
aa
aa
aa
-ac
-ac
+aO
+aO
aa
aa
aa
@@ -19677,39 +19581,39 @@ aa
aa
ab
ab
-ai
+ab
ac
ac
ac
ad
-ah
+ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
af
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -19723,13 +19627,13 @@ aa
aa
aa
aa
-ac
-ac
-ac
+aO
+aO
+aO
aa
aa
aa
-ac
+aO
aa
aa
aa
@@ -19934,45 +19838,45 @@ aa
ab
ab
ac
-ai
-ai
+ab
+ab
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
af
ac
-ah
+ab
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
ac
ac
ac
ac
-ah
+ab
af
ac
ac
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
+ab
ab
aa
aa
@@ -19982,11 +19886,11 @@ aa
aa
aa
aa
-ac
+aO
aa
aa
aa
-ac
+aO
aG
aa
aa
@@ -20050,7 +19954,7 @@ aG
aG
aG
aG
-aN
+aG
aG
aG
aG
@@ -20192,26 +20096,26 @@ ab
ac
ac
ac
-ai
-ai
+ab
+ab
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ad
-ah
+ab
ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
@@ -20219,14 +20123,14 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ab
@@ -20297,9 +20201,9 @@ aG
aG
aG
aG
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aR
@@ -20307,7 +20211,7 @@ aR
aR
aR
aR
-aN
+aG
aG
aG
aG
@@ -20450,33 +20354,33 @@ ac
ac
ac
ac
-ai
-ai
+ab
+ab
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ad
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -20550,13 +20454,13 @@ aR
aR
aV
aR
-aN
-aN
-aN
-aN
-aN
-aN
-aN
+aG
+aG
+aG
+aG
+aG
+aG
+aG
aR
aR
aR
@@ -20564,7 +20468,7 @@ aX
aX
aX
aR
-aN
+aG
aG
aG
aG
@@ -20708,38 +20612,38 @@ ac
ac
ac
ac
-ai
-ai
+ab
+ab
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
-ah
-ah
+ab
+ab
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
-ah
+ab
ad
ac
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -20807,8 +20711,8 @@ aX
aX
aX
aR
-aN
-aN
+aG
+aG
aR
aR
aR
@@ -20966,23 +20870,23 @@ ac
ac
ac
ac
-ai
+ab
ac
ac
ac
ac
ad
-ah
+ab
ac
ac
ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
+ab
ac
ac
ac
@@ -20991,11 +20895,11 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ad
-ah
-ah
+ab
+ab
ac
ac
ac
@@ -21018,8 +20922,8 @@ aQ
aQ
aQ
aQ
-be
-be
+aU
+aU
aU
bf
ba
@@ -21223,32 +21127,32 @@ ac
ac
ac
ac
-ai
+ab
ac
ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
ac
-ah
+ab
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
af
@@ -21480,30 +21384,30 @@ ac
ac
ac
ac
-ai
-ai
+ab
+ab
ac
ac
ac
af
ac
ac
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
af
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -21593,7 +21497,7 @@ aX
aX
aX
aR
-aN
+aG
aG
aG
"}
@@ -21738,9 +21642,9 @@ ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
@@ -21750,8 +21654,8 @@ ac
ac
ac
ad
-ah
-ah
+ab
+ab
ac
ac
ac
@@ -21764,11 +21668,11 @@ ac
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ab
aa
aa
@@ -21850,7 +21754,7 @@ aX
aX
aX
aR
-aN
+aG
aG
aG
"}
@@ -21997,9 +21901,9 @@ ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
@@ -22008,8 +21912,8 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ad
ac
ac
@@ -22021,7 +21925,7 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -22042,7 +21946,7 @@ aG
aG
aG
aG
-aY
+aQ
aU
ba
ba
@@ -22107,7 +22011,7 @@ aX
aX
aX
aR
-aN
+aG
aG
aG
"}
@@ -22256,7 +22160,7 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -22266,10 +22170,10 @@ ac
ac
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -22277,8 +22181,8 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
@@ -22298,8 +22202,8 @@ aG
aG
aG
aG
+aG
aQ
-aY
aU
ba
ba
@@ -22364,7 +22268,7 @@ gi
gi
gi
aR
-aN
+aG
aG
aG
"}
@@ -22513,12 +22417,12 @@ ac
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -22526,15 +22430,15 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
af
ac
ac
@@ -22555,9 +22459,9 @@ aG
aG
aG
aG
+aG
aQ
aU
-aU
ba
ba
aU
@@ -22611,7 +22515,7 @@ aX
aX
aX
aX
-gN
+aR
aR
aR
aX
@@ -22621,7 +22525,7 @@ gi
gi
gi
aR
-aN
+aG
aG
aG
"}
@@ -22775,26 +22679,26 @@ ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
ac
af
ac
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
ad
ac
ac
ac
ac
-ah
+ab
ac
ac
ab
@@ -22810,10 +22714,10 @@ aG
aG
aG
aG
-aN
+aG
+aR
aR
aR
-bc
aU
bb
bb
@@ -23034,9 +22938,9 @@ ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
ac
ac
@@ -23051,7 +22955,7 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ab
@@ -23293,10 +23197,10 @@ ac
ac
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -23306,9 +23210,9 @@ ac
ac
ac
ac
-ah
-ah
-ah
+ab
+ab
+ab
ac
af
ab
@@ -23323,7 +23227,7 @@ aG
aG
aG
aG
-aN
+aG
aR
aV
aX
@@ -23391,7 +23295,7 @@ aR
aX
aX
aX
-gN
+aR
aG
aG
aG
@@ -23553,17 +23457,17 @@ ac
ac
ac
ac
-ah
-ah
+ab
+ab
ac
ac
ac
ac
ac
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
ad
ac
ac
@@ -23582,7 +23486,7 @@ aG
aG
aR
aR
-aT
+aR
aX
aX
aX
@@ -23634,7 +23538,7 @@ aN
aR
aX
aX
-gN
+aR
aR
aX
aX
@@ -23644,7 +23548,7 @@ aX
aR
aN
aR
-gN
+aR
aR
aX
aX
@@ -23811,13 +23715,13 @@ ac
ac
ac
ac
-ah
-ah
-ah
-ah
-ah
-ah
-ah
+ab
+ab
+ab
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -23837,9 +23741,9 @@ aG
aG
aG
aG
-aT
+aR
aX
-aT
+aR
aX
aX
aX
@@ -24074,7 +23978,7 @@ ac
ac
ac
ac
-ah
+ab
ac
ac
ac
@@ -24094,7 +23998,7 @@ aG
aG
aG
aG
-aT
+aR
aX
aX
aX
@@ -24331,15 +24235,15 @@ ac
ac
ac
ac
-ah
-aF
+ab
aF
-ah
-ah
-ah
-ah
-ai
-ai
+aH
+ab
+ab
+ab
+ab
+ab
+ab
ab
aP
aQ
@@ -24351,7 +24255,7 @@ aQ
aQ
aQ
aQ
-aT
+aR
aX
aX
aX
@@ -24421,8 +24325,8 @@ aX
aX
aX
aR
-aG
-aG
+aQ
+aQ
"}
(86,1,1) = {"
aa
@@ -24608,7 +24512,7 @@ aG
aG
aG
aR
-aT
+aR
aX
aX
aX
@@ -24665,7 +24569,7 @@ aX
aX
aX
aR
-gN
+aR
aX
aX
aX
@@ -25122,7 +25026,7 @@ aG
aG
aG
aR
-aT
+aR
aX
aX
aX
@@ -25173,7 +25077,7 @@ aN
aN
aN
aN
-gN
+aR
aX
er
aX
@@ -25379,7 +25283,7 @@ aG
aG
aG
aM
-aT
+aR
aX
aX
aX
@@ -25448,7 +25352,7 @@ aR
aX
aX
aX
-gN
+aR
aG
aG
"}
@@ -25636,7 +25540,7 @@ aG
aG
aG
aG
-aT
+aR
aX
aX
aX
@@ -25894,7 +25798,7 @@ aG
aG
aG
aR
-aT
+aR
aX
aX
aX
@@ -25957,7 +25861,7 @@ aN
aR
aX
aX
-gN
+aR
aR
aX
aX
@@ -26150,8 +26054,8 @@ aG
aG
aG
aG
-aN
-aT
+aG
+aR
aX
aX
aX
@@ -26407,8 +26311,8 @@ aG
aG
aG
aG
-aN
-aT
+aG
+aR
aX
aX
aX
@@ -26665,7 +26569,7 @@ aG
aG
aG
aG
-aT
+aR
aX
aX
aX
@@ -26720,7 +26624,7 @@ aX
aX
aX
aR
-gN
+aR
aX
aX
aX
@@ -26922,7 +26826,7 @@ aG
aG
aG
aR
-aT
+aR
aX
aX
aX
@@ -27178,7 +27082,7 @@ aG
aG
aG
aG
-aT
+aR
aX
aX
aX
@@ -27236,15 +27140,15 @@ eX
eX
aR
aR
-hg
+aR
er
aX
bd
-hg
aR
aR
aR
-gN
+aR
+aR
aX
aX
aR
@@ -27435,7 +27339,7 @@ aG
aG
aG
aG
-aT
+aR
aX
aX
aX
@@ -27500,7 +27404,7 @@ aX
aX
aX
aR
-aN
+aG
aR
aR
aR
@@ -27757,11 +27661,11 @@ aX
aX
aX
aR
-aN
aG
aG
aG
-aN
+aG
+aG
aG
aG
"}
@@ -28009,7 +27913,7 @@ aX
er
aX
aX
-hg
+aR
aR
aR
aR
@@ -28463,7 +28367,7 @@ aa
aa
aa
aG
-aN
+aG
aR
aX
aX
@@ -28521,7 +28425,7 @@ bh
fc
aX
aR
-gN
+aR
aR
aR
aa
@@ -28778,7 +28682,7 @@ bh
aX
aX
aR
-aN
+aG
aG
aG
aa
@@ -29035,7 +28939,7 @@ bh
eX
fc
aR
-aN
+aG
aG
aG
aa
@@ -29292,7 +29196,7 @@ bh
eX
eX
aR
-aN
+aG
aG
aG
aa
@@ -29549,7 +29453,7 @@ eo
eX
eX
aR
-aN
+aG
aG
aG
aG
@@ -29748,7 +29652,7 @@ aa
aa
aa
aG
-aQ
+aR
aR
aX
aX
@@ -29806,7 +29710,7 @@ bh
eX
aX
aR
-aN
+aG
aG
aG
aG
@@ -29992,7 +29896,7 @@ aD
ad
ac
ac
-ab
+ac
ab
aa
aa
@@ -30005,7 +29909,7 @@ aa
aa
aa
aG
-aQ
+aR
aX
aX
aX
@@ -30063,7 +29967,7 @@ bh
eX
aX
aR
-aN
+aG
aG
aG
aG
@@ -30248,8 +30152,8 @@ ac
ac
ac
ac
-ab
-ab
+ac
+ac
ab
aa
aa
@@ -30262,7 +30166,7 @@ aa
aa
aG
aG
-aQ
+aR
aR
aX
aX
@@ -30504,9 +30408,9 @@ ac
ac
ac
ac
-ab
-ab
-ab
+ac
+ac
+ac
ab
aa
aa
@@ -30761,9 +30665,9 @@ ac
ac
ac
ac
-ab
-aI
-aO
+ac
+ac
+ac
ab
aa
aa
@@ -31018,9 +30922,9 @@ ac
ac
al
ac
-ab
-aH
-aL
+ac
+ac
+ac
ab
aa
aa
@@ -31275,8 +31179,8 @@ ac
ac
ac
ac
-ab
-ab
+ac
+ac
ab
ab
aa
@@ -31348,7 +31252,7 @@ bh
eX
aX
aR
-aN
+aG
aG
aG
aa
@@ -31533,7 +31437,7 @@ ac
ac
ac
ac
-ab
+ac
ab
aa
aa
@@ -31605,7 +31509,7 @@ bh
eX
aX
aR
-aN
+aG
aG
aG
aa
@@ -31790,7 +31694,7 @@ ac
ac
ac
ac
-ab
+ac
ab
aa
aa
@@ -31862,7 +31766,7 @@ gP
eB
dK
aR
-aN
+aG
aG
aG
aa
@@ -32047,7 +31951,7 @@ ac
ac
ac
ac
-ab
+ac
ab
aa
aa
@@ -32891,7 +32795,7 @@ eX
aX
aR
aR
-aN
+aG
aG
aG
aa
@@ -33148,7 +33052,7 @@ eX
aX
aR
aR
-aN
+aG
aG
aa
aa
@@ -33405,7 +33309,7 @@ eX
aX
aX
aR
-aN
+aG
aG
aG
aa
@@ -33662,7 +33566,7 @@ eX
aX
aX
aR
-aN
+aG
aG
aG
aG
@@ -34332,11 +34236,11 @@ ac
ag
ag
aj
-an
-an
+ab
+ab
ag
-an
-an
+ab
+ab
ag
ag
ag
@@ -34589,11 +34493,11 @@ ac
ad
ag
ag
-an
+ab
ag
ag
ag
-an
+ab
ag
ag
ag
@@ -34630,7 +34534,7 @@ aa
aa
aG
aG
-aN
+aG
aR
aR
aX
@@ -34845,13 +34749,13 @@ ac
ac
ac
ac
-an
-an
+ab
+ab
ag
-an
+ab
ag
-an
-an
+ab
+ab
ag
ag
ag
@@ -35102,13 +35006,13 @@ ab
ac
ac
ac
-an
+ab
ag
ac
ag
ag
ag
-an
+ab
ag
ag
ag
@@ -35359,13 +35263,13 @@ ab
ac
ac
ac
-an
+ab
ag
ag
ag
ag
ag
-an
+ab
ag
ag
ag
@@ -35460,8 +35364,8 @@ eX
eX
aR
aR
-aR
-aN
+aG
+aG
aG
aa
aa
@@ -35616,13 +35520,13 @@ ab
ac
ac
ac
-an
+ab
ac
ad
ag
aB
ac
-an
+ab
ac
ac
ag
@@ -35659,7 +35563,7 @@ aG
aG
aG
aG
-aN
+aG
aR
aR
aX
@@ -35716,9 +35620,9 @@ do
bh
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aa
aa
@@ -35870,18 +35774,18 @@ aa
aa
aa
ab
-an
-an
-an
-an
-an
-an
+ab
+ab
+ab
+ab
+ab
+ab
ao
-an
-an
-an
-an
-an
+ab
+ab
+ab
+ab
+ab
ac
ad
ag
@@ -35916,7 +35820,7 @@ aG
aG
aG
aG
-aN
+aG
aR
aX
aX
@@ -35973,9 +35877,9 @@ bh
bh
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aG
@@ -36127,8 +36031,8 @@ aa
aa
aa
ab
-an
-an
+ab
+ab
ar
au
ax
@@ -36138,7 +36042,7 @@ ao
ao
ao
ao
-an
+ab
ac
ac
ac
@@ -36230,9 +36134,9 @@ cw
gP
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aG
@@ -36385,7 +36289,7 @@ aa
aa
ab
ab
-an
+ab
at
aw
az
@@ -36395,7 +36299,7 @@ ao
ao
ao
ao
-an
+ab
ac
ac
ac
@@ -36487,9 +36391,9 @@ bB
bh
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aG
@@ -36642,7 +36546,7 @@ aa
aa
aa
ab
-an
+ab
as
av
ay
@@ -36652,7 +36556,7 @@ ao
aq
ao
ao
-an
+ab
ac
ac
ac
@@ -36744,9 +36648,9 @@ bB
bh
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aG
@@ -36899,17 +36803,17 @@ aa
aa
aa
ab
-an
-an
+ab
+ab
ao
ao
ao
ao
ao
-an
-an
-an
-an
+ab
+ab
+ab
+ab
ac
ac
ac
@@ -36944,8 +36848,8 @@ aa
aG
aG
aG
-aN
-aN
+aG
+aG
aR
aX
aX
@@ -37001,9 +36905,9 @@ bh
cw
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aG
@@ -37157,13 +37061,13 @@ aa
aa
ab
ab
-an
+ab
ao
ao
ao
ao
-an
-an
+ab
+ab
ab
ab
ab
@@ -37201,7 +37105,7 @@ aa
aa
aG
aG
-aN
+aG
aR
aR
aX
@@ -37258,9 +37162,9 @@ eX
cf
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aa
@@ -37414,12 +37318,12 @@ aa
aa
aa
ab
-an
+ab
ao
ao
ao
-an
-an
+ab
+ab
ab
ab
aa
@@ -37458,7 +37362,7 @@ aa
aa
aG
aG
-aN
+aG
aR
aX
aX
@@ -37515,9 +37419,9 @@ bh
bh
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aa
@@ -37671,11 +37575,11 @@ aa
aa
aa
ab
-an
+ab
ab
ao
ab
-an
+ab
ab
ab
aa
@@ -37715,7 +37619,7 @@ aa
aa
aG
aG
-aN
+aG
aR
aX
aX
@@ -37772,9 +37676,9 @@ bh
bh
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aG
@@ -37972,7 +37876,7 @@ aa
aa
aG
aG
-aN
+aG
aR
aX
aX
@@ -38029,9 +37933,9 @@ bv
gP
eX
aR
-aN
-aN
-aN
+aG
+aG
+aG
aG
aG
aG
@@ -38286,8 +38190,8 @@ bh
bh
eX
aR
-aN
-aN
+aG
+aG
aG
aG
aG
@@ -38543,8 +38447,8 @@ bh
eo
eX
aR
-aN
-aN
+aG
+aG
aG
aG
aG
@@ -38800,8 +38704,8 @@ cw
bh
eX
aR
-aN
-aN
+aG
+aG
aG
aG
aG
@@ -39057,8 +38961,8 @@ bh
bh
eX
aR
-aN
-aN
+aG
+aG
aG
aG
aa
@@ -39314,8 +39218,8 @@ bh
bh
eX
aR
-aN
-aN
+aG
+aG
aG
aG
aa
@@ -39514,7 +39418,7 @@ aa
aG
aG
aG
-aN
+aG
aR
aX
aX
@@ -39571,8 +39475,8 @@ bh
gP
eX
aR
-aN
-aN
+aG
+aG
aG
aa
aa
@@ -39828,8 +39732,8 @@ bh
bh
eX
aR
-aN
-aN
+aG
+aG
aG
aG
aG
@@ -40085,8 +39989,8 @@ bh
bh
eX
aR
-aN
-aN
+aG
+aG
aG
aG
aa
@@ -40342,8 +40246,8 @@ bh
fP
eX
aR
-aN
-aN
+aG
+aG
aG
aG
aa
@@ -40599,8 +40503,8 @@ bh
cw
eX
aR
-aN
-aN
+aG
+aG
aG
aa
aa
@@ -40799,8 +40703,8 @@ aa
aa
aa
aG
-aN
-aN
+aG
+aG
aR
aX
aX
@@ -40856,8 +40760,8 @@ bh
bh
eX
aR
-aN
-aN
+aG
+aG
aG
aa
aa
@@ -41056,8 +40960,8 @@ aa
aa
aa
aG
-aN
-aN
+aG
+aG
aR
aX
aX
@@ -41113,8 +41017,8 @@ bh
gP
eX
aR
-aN
-aN
+aG
+aG
aG
aa
aa
@@ -41313,8 +41217,8 @@ aa
aa
aG
aG
-aN
-aN
+aG
+aG
aR
aX
aX
@@ -41370,8 +41274,8 @@ bv
bh
eX
aR
-aN
-aN
+aG
+aG
aG
aa
aa
@@ -41571,7 +41475,7 @@ aa
aG
aG
aG
-aN
+aG
aR
aX
aX
@@ -41627,7 +41531,7 @@ bh
bh
eX
aR
-aN
+aG
aG
aG
aG
@@ -41828,7 +41732,7 @@ aa
aG
aG
aG
-aN
+aG
aR
aR
aR
@@ -41884,7 +41788,7 @@ eX
eX
eX
aR
-aN
+aG
aG
aG
aG
@@ -42086,8 +41990,8 @@ aG
aG
aG
aG
-aN
-aN
+aG
+aG
aR
aR
aX
@@ -42344,7 +42248,7 @@ aG
aG
aG
aG
-aN
+aG
aR
aX
aX
@@ -42599,9 +42503,9 @@ aa
aG
aG
aG
-aN
-aN
-aN
+aG
+aG
+aG
aR
aX
aX
@@ -42858,7 +42762,7 @@ aG
aG
aG
aG
-aN
+aG
aR
aX
aX
@@ -43116,8 +43020,8 @@ aG
aG
aG
aG
-aQ
-aQ
+aR
+aR
aR
aR
aX
@@ -43374,8 +43278,8 @@ aG
aG
aG
aG
-aN
-aN
+aG
+aG
aR
aR
aR
@@ -43403,29 +43307,29 @@ aR
aX
aR
aR
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
aG
aG
aG
@@ -43632,17 +43536,17 @@ aG
aG
aG
aG
-aN
-aN
-aN
-aN
-aN
-aN
+aG
+aG
+aG
+aG
+aG
+aG
aR
aR
aR
aR
-aN
+aG
aR
aR
aR
@@ -43659,30 +43563,30 @@ aR
aR
aR
aR
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
-aN
aG
-aN
-aN
-aN
-aN
-aN
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
aG
aG
aG
@@ -43891,20 +43795,20 @@ aG
aG
aG
aG
-aN
-aN
-aN
-aN
-aN
aG
aG
aG
aG
aG
-aN
-aN
-aQ
-aQ
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
+aG
aG
aG
aG
diff --git a/_maps/map_files/celestation/celestation.dmm b/_maps/map_files/celestation/celestation.dmm
index 55b610b5610..1372e974525 100644
--- a/_maps/map_files/celestation/celestation.dmm
+++ b/_maps/map_files/celestation/celestation.dmm
@@ -7411,12 +7411,13 @@
},
/area/engineering/gravitygenerator)
"bfw" = (
-/obj/machinery/conveyor{
- id = "garbage"
- },
/obj/structure/window/reinforced{
dir = 8
},
+/obj/machinery/conveyor/inverted{
+ dir = 5;
+ id = "garbage"
+ },
/turf/simulated/floor/plating,
/area/maintenance/disposal)
"bfB" = (
@@ -29523,9 +29524,6 @@
/obj/structure/disposalpipe/trunk{
dir = 4
},
-/obj/machinery/disposal/deliveryChute{
- dir = 8
- },
/obj/structure/window/reinforced{
dir = 4
},
@@ -29534,6 +29532,10 @@
dir = 6;
pixel_y = 32
},
+/obj/structure/disposaloutlet{
+ dir = 8;
+ eject_range = 2
+ },
/turf/simulated/floor/plating,
/area/maintenance/disposal)
"elp" = (
@@ -50469,14 +50471,14 @@
},
/area/medical/research)
"ini" = (
-/obj/machinery/conveyor{
- dir = 1;
- id = "garbage"
- },
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 4
},
+/obj/machinery/conveyor/inverted{
+ dir = 10;
+ id = "garbage"
+ },
/turf/simulated/floor/plating,
/area/maintenance/disposal)
"ink" = (
@@ -55182,9 +55184,6 @@
},
/area/turret_protected/aisat_interior/secondary)
"jfp" = (
-/obj/machinery/disposal/deliveryChute{
- dir = 1
- },
/obj/structure/window/reinforced{
dir = 4
},
@@ -55193,6 +55192,10 @@
dir = 1;
id = "CargoTransfer"
},
+/obj/structure/disposaloutlet{
+ dir = 1;
+ eject_range = 2
+ },
/turf/simulated/floor/plating,
/area/maintenance/disposal)
"jfE" = (
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index 7730bec2a81..85289102a09 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -51522,14 +51522,6 @@
icon_state = "neutral"
},
/area/hallway/secondary/entry)
-"dcY" = (
-/obj/effect/decal/warning_stripes/north,
-/obj/machinery/conveyor{
- dir = 4;
- id = "garbage"
- },
-/turf/simulated/floor/plating,
-/area/quartermaster/storage)
"dda" = (
/obj/machinery/atmospherics/meter,
/obj/machinery/light{
@@ -87435,7 +87427,7 @@
/obj/structure/plasticflaps/mining,
/obj/machinery/conveyor{
dir = 4;
- id = "garbage"
+ id = "QMLoad2"
},
/turf/simulated/floor/plating,
/area/quartermaster/storage)
@@ -87452,7 +87444,7 @@
},
/obj/machinery/conveyor{
dir = 4;
- id = "garbage"
+ id = "QMLoad2"
},
/turf/simulated/floor/plating,
/area/quartermaster/storage)
@@ -87474,7 +87466,7 @@
},
/obj/machinery/conveyor{
dir = 4;
- id = "garbage"
+ id = "QMLoad2"
},
/turf/simulated/floor/plating,
/area/quartermaster/storage)
@@ -87606,7 +87598,7 @@
/obj/machinery/light,
/obj/machinery/conveyor{
dir = 4;
- id = "garbage"
+ id = "QMLoad2"
},
/turf/simulated/floor/plating,
/area/quartermaster/storage)
@@ -105833,7 +105825,7 @@ nMQ
bKz
bYy
bKz
-dcY
+sfT
rmn
uTI
uTI
@@ -106090,7 +106082,7 @@ nMQ
vkZ
bYy
vkZ
-dcY
+sfT
rmn
uTI
ylx
@@ -106347,7 +106339,7 @@ nMQ
vkZ
bYy
vkZ
-dcY
+sfT
rmn
uTI
ylx
@@ -106604,7 +106596,7 @@ nMQ
vkZ
whC
vkZ
-dcY
+sfT
rmn
uTI
ylx
diff --git a/_maps/map_files/event/Station/delta_old.dmm b/_maps/map_files/event/Station/delta_old.dmm
index 11e9489913c..1135d1e919e 100644
--- a/_maps/map_files/event/Station/delta_old.dmm
+++ b/_maps/map_files/event/Station/delta_old.dmm
@@ -19417,10 +19417,16 @@
/area/hallway/secondary/entry/commercial)
"cod" = (
/obj/effect/decal/warning_stripes/southeast,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"cof" = (
/obj/effect/decal/warning_stripes/southeast,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/storage/secure)
"coh" = (
@@ -19646,12 +19652,18 @@
/area/engineering/engine)
"cpi" = (
/obj/effect/decal/warning_stripes/southeastcorner,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"cpk" = (
/obj/machinery/power/tesla_coil,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/storage/secure)
"cpl" = (
@@ -19934,6 +19946,9 @@
"cqU" = (
/obj/machinery/pipedispenser/disposal,
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/storage/secure)
"cqW" = (
@@ -19973,6 +19988,9 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/storage/secure)
"crg" = (
@@ -35900,6 +35918,14 @@
icon_state = "whitepurplecorner"
},
/area/medical/research/restroom)
+"dFo" = (
+/obj/machinery/power/emitter,
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel,
+/area/storage/secure)
"dFp" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 8
@@ -39165,6 +39191,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "yellowfull"
},
@@ -42800,6 +42829,19 @@
icon_state = "neutralfull"
},
/area/crew_quarters/locker)
+"ewf" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "east bump";
+ pixel_x = 24
+ },
+/turf/simulated/floor/plasteel,
+/area/storage/secure)
"ewt" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
@@ -45929,6 +45971,18 @@
icon_state = "purplefull"
},
/area/medical/research/nhallway)
+"fnW" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/poddoor{
+ id_tag = "engstorage";
+ name = "Secure Storage Blast Doors"
+ },
+/obj/effect/decal/warning_stripes/west,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel,
+/area/storage/secure)
"foa" = (
/obj/machinery/hologram/holopad,
/turf/simulated/floor/carpet/arcade,
@@ -91636,6 +91690,13 @@
icon_state = "vault"
},
/area/security/securearmory)
+"rHh" = (
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel,
+/area/storage/secure)
"rHl" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
dir = 8;
@@ -91686,6 +91747,9 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
/area/storage/secure)
"rHD" = (
@@ -141668,7 +141732,7 @@ utt
cpm
nqL
fId
-nqL
+fnW
cpm
mDe
bQr
@@ -142696,7 +142760,7 @@ utt
wUC
dOZ
dRd
-cso
+dFo
cso
mDe
vDd
@@ -142953,7 +143017,7 @@ dJU
lTF
xKq
cmO
-cso
+dFo
cpr
mDe
iVc
@@ -143467,7 +143531,7 @@ utt
dNd
qFn
dRw
-dWc
+rHh
kpR
mDe
yfQ
@@ -143724,7 +143788,7 @@ utt
qFn
teJ
dRw
-dWc
+rHh
xvB
mDe
vly
@@ -144238,7 +144302,7 @@ utt
jtS
coh
cmV
-dOZ
+ewf
ufR
mDe
smf
diff --git a/_maps/map_files/generic/CentComm.dmm b/_maps/map_files/generic/CentComm.dmm
index 0975e33a88b..4e984801dc8 100644
--- a/_maps/map_files/generic/CentComm.dmm
+++ b/_maps/map_files/generic/CentComm.dmm
@@ -2454,50 +2454,50 @@
/turf/simulated/floor/carpet/black,
/area/centcom/bridge)
"beG" = (
-/obj/item/gun/energy/gun/advtaser{
- pixel_y = -2
+/obj/structure/rack/gunrack,
+/obj/machinery/recharger/wallcharger{
+ pixel_x = -24;
+ pixel_y = -3
},
-/obj/item/gun/energy/gun/advtaser{
- pixel_y = -2
+/obj/machinery/recharger/wallcharger{
+ pixel_x = -24;
+ pixel_y = 5
},
-/obj/item/gun/energy/gun/advtaser{
- pixel_y = -2
+/obj/machinery/recharger/wallcharger{
+ pixel_x = -24;
+ pixel_y = -11
},
+/obj/effect/decal/warning_stripes/white,
/obj/item/gun/energy/gun/advtaser{
- pixel_y = -2
+ pixel_x = -6
},
/obj/item/gun/energy/gun/advtaser{
- pixel_y = -2
+ pixel_x = -6
},
/obj/item/gun/energy/gun/advtaser{
- pixel_y = 7
+ pixel_x = -6
},
/obj/item/gun/energy/gun/advtaser{
- pixel_y = 7
+ pixel_x = -6
},
/obj/item/gun/energy/gun/advtaser{
- pixel_y = 7
+ pixel_x = -6
},
/obj/item/gun/energy/gun/advtaser{
- pixel_y = 7
+ pixel_x = 6
},
/obj/item/gun/energy/gun/advtaser{
- pixel_y = 7
+ pixel_x = 6
},
-/obj/structure/rack/gunrack,
-/obj/machinery/recharger/wallcharger{
- pixel_x = -24;
- pixel_y = -3
+/obj/item/gun/energy/gun/advtaser{
+ pixel_x = 6
},
-/obj/machinery/recharger/wallcharger{
- pixel_x = -24;
- pixel_y = 5
+/obj/item/gun/energy/gun/advtaser{
+ pixel_x = 6
},
-/obj/machinery/recharger/wallcharger{
- pixel_x = -24;
- pixel_y = -11
+/obj/item/gun/energy/gun/advtaser{
+ pixel_x = 6
},
-/obj/effect/decal/warning_stripes/white,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -4637,9 +4637,8 @@
"cgX" = (
/obj/machinery/door/poddoor/shutters/invincible{
dir = 2;
- id_tag = "CC_Armory_shotgun"
+ id_tag = "CC_Armory_DAE"
},
-/obj/effect/decal/warning_stripes/red,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -4754,26 +4753,28 @@
/turf/simulated/floor/mineral/plastitanium/red,
/area/syndicate_mothership/control)
"cjN" = (
-/obj/item/gun/projectile/shotgun/riot{
- pixel_x = 3;
- pixel_y = 8
+/obj/structure/rack/gunrack,
+/obj/effect/decal/warning_stripes/green/hollow,
+/obj/item/gun/projectile/automatic/m90{
+ name = "\improper DAE 5.56 Compact GL";
+ pixel_x = -6
},
-/obj/item/gun/projectile/shotgun/riot{
- pixel_x = 3;
- pixel_y = 8
+/obj/item/gun/projectile/automatic/m90{
+ name = "\improper DAE 5.56 Compact GL";
+ pixel_x = -6
},
-/obj/item/gun/projectile/shotgun/riot/short,
-/obj/item/gun/projectile/shotgun/riot/short,
-/obj/item/gun/projectile/shotgun/riot{
- pixel_x = 3;
- pixel_y = 8
+/obj/item/gun/projectile/automatic/m90{
+ name = "\improper DAE 5.56 Compact GL";
+ pixel_x = 6
},
-/obj/item/gun/projectile/shotgun/riot{
- pixel_x = 3;
- pixel_y = 8
+/obj/item/gun/projectile/automatic/m90{
+ name = "\improper DAE 5.56 Compact GL";
+ pixel_x = 6
+ },
+/obj/item/gun/projectile/automatic/m90{
+ name = "\improper DAE 5.56 Compact GL";
+ pixel_x = 6
},
-/obj/structure/rack/gunrack,
-/obj/effect/decal/warning_stripes/green/hollow,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -10465,53 +10466,48 @@
},
/area/syndicate_mothership)
"eTs" = (
+/obj/structure/rack/gunrack,
+/obj/effect/decal/warning_stripes/white,
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = 2
+ pixel_x = -6
},
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = 2
+ pixel_x = -6
},
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = 2
+ pixel_x = -6
},
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = 2
+ pixel_x = -6
},
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = 2
+ pixel_x = -6
},
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = -2;
- pixel_y = 7
+ pixel_x = 6
},
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = -2;
- pixel_y = 7
+ pixel_x = 6
},
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = -2;
- pixel_y = 7
+ pixel_x = 6
},
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = -2;
- pixel_y = 7
+ pixel_x = 6
},
/obj/item/gun/projectile/automatic/pistol/enforcer{
icon_state = "enforcer_black";
- pixel_x = -2;
- pixel_y = 7
+ pixel_x = 6
},
-/obj/structure/rack/gunrack,
-/obj/effect/decal/warning_stripes/white,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -10577,10 +10573,6 @@
icon_state = "dark"
},
/area/centcom/evac)
-"eWz" = (
-/obj/structure/lattice,
-/turf/space,
-/area/centcom/specops)
"eWA" = (
/turf/space{
icon_state = "black"
@@ -11887,8 +11879,8 @@
/area/centcom/zone3)
"fBu" = (
/obj/machinery/door_control/secure{
- id = "CC_Armory_shotgun";
- name = "Shotguns";
+ id = "CC_Armory_DAE";
+ name = "DAE";
pixel_x = -24;
pixel_y = 24;
req_access = list(114)
@@ -13025,17 +13017,37 @@
/area/centcom/jail)
"gcn" = (
/obj/structure/rack/gunrack,
-/obj/item/gun/projectile/automatic/sfg,
-/obj/item/gun/projectile/automatic/sfg,
-/obj/item/gun/projectile/automatic/sfg,
-/obj/item/gun/projectile/automatic/sfg,
-/obj/item/gun/projectile/automatic/sfg,
-/obj/item/gun/projectile/automatic/sfg,
-/obj/item/gun/projectile/automatic/sfg,
-/obj/item/gun/projectile/automatic/sfg,
-/obj/item/gun/projectile/automatic/sfg,
-/obj/item/gun/projectile/automatic/sfg,
/obj/effect/decal/warning_stripes/red/hollow,
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = 6
+ },
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = 6
+ },
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = 6
+ },
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = 6
+ },
+/obj/item/gun/projectile/automatic/sfg{
+ pixel_x = 6
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -16148,16 +16160,6 @@
icon_state = "grimy"
},
/area/syndicate_mothership)
-"hDk" = (
-/obj/effect/decal/warning_stripes/red,
-/obj/machinery/door/poddoor/shutters/invincible{
- dir = 2;
- id_tag = "CC_Armory_shotgun"
- },
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
-/area/centcom/specops)
"hDO" = (
/obj/structure/toilet,
/turf/simulated/floor/plasteel{
@@ -20448,7 +20450,6 @@
dir = 2;
id_tag = "CC_Armory_NG"
},
-/obj/effect/decal/warning_stripes/red,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -21074,6 +21075,36 @@
/obj/item/ammo_box/magazine/sfg9mm,
/obj/item/ammo_box/magazine/sfg9mm,
/obj/effect/decal/warning_stripes/red/hollow,
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
+/obj/item/ammo_box/magazine/sfg9mm{
+ pixel_x = 8
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -31367,17 +31398,35 @@
},
/area/centcom/specops)
"ozP" = (
-/obj/item/gun/projectile/automatic/lasercarbine,
-/obj/item/gun/projectile/automatic/lasercarbine,
-/obj/item/gun/projectile/automatic/lasercarbine,
-/obj/item/gun/projectile/automatic/lasercarbine,
-/obj/item/gun/projectile/automatic/lasercarbine,
-/obj/item/gun/projectile/automatic/lasercarbine,
-/obj/item/gun/projectile/automatic/lasercarbine,
-/obj/item/gun/projectile/automatic/lasercarbine,
-/obj/item/gun/projectile/automatic/lasercarbine,
/obj/structure/rack/gunrack,
/obj/effect/decal/warning_stripes/blue/hollow,
+/obj/item/gun/projectile/automatic/lasercarbine{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/lasercarbine{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/lasercarbine{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/lasercarbine{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/lasercarbine{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/lasercarbine{
+ pixel_x = 6
+ },
+/obj/item/gun/projectile/automatic/lasercarbine{
+ pixel_x = 6
+ },
+/obj/item/gun/projectile/automatic/lasercarbine{
+ pixel_x = 6
+ },
+/obj/item/gun/projectile/automatic/lasercarbine{
+ pixel_x = 6
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -31525,23 +31574,26 @@
},
/area/syndicate_mothership)
"oEt" = (
+/obj/structure/rack/gunrack,
+/obj/effect/decal/warning_stripes/green/hollow,
/obj/item/gun/energy/gun/pdw9{
- pixel_x = 4;
- pixel_y = 8
+ pixel_x = -6
},
-/obj/item/gun/energy/gun/pdw9,
/obj/item/gun/energy/gun/pdw9{
- pixel_x = 4;
- pixel_y = 8
+ pixel_x = -6
},
/obj/item/gun/energy/gun/pdw9{
- pixel_x = 4;
- pixel_y = 8
+ pixel_x = -6
+ },
+/obj/item/gun/energy/gun/pdw9{
+ pixel_x = 6
+ },
+/obj/item/gun/energy/gun/pdw9{
+ pixel_x = 6
+ },
+/obj/item/gun/energy/gun/pdw9{
+ pixel_x = 6
},
-/obj/item/gun/energy/gun/pdw9,
-/obj/item/gun/energy/gun/pdw9,
-/obj/structure/rack/gunrack,
-/obj/effect/decal/warning_stripes/green/hollow,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -33640,26 +33692,26 @@
/turf/simulated/floor/wood,
/area/centcom/zone1)
"pDr" = (
+/obj/structure/rack/gunrack,
+/obj/effect/decal/warning_stripes/red/hollow,
/obj/item/gun/energy/gun/nuclear{
- pixel_y = 8
+ pixel_x = -6
},
/obj/item/gun/energy/gun/nuclear{
- pixel_y = -2
+ pixel_x = -6
},
/obj/item/gun/energy/gun/nuclear{
- pixel_y = -2
+ pixel_x = -6
},
/obj/item/gun/energy/gun/nuclear{
- pixel_y = 8
+ pixel_x = 6
},
-/obj/structure/rack/gunrack,
/obj/item/gun/energy/gun/nuclear{
- pixel_y = -2
+ pixel_x = 6
},
/obj/item/gun/energy/gun/nuclear{
- pixel_y = 8
+ pixel_x = 6
},
-/obj/effect/decal/warning_stripes/red/hollow,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -39327,7 +39379,6 @@
},
/area/syndicate_mothership/cargo)
"seQ" = (
-/obj/effect/decal/warning_stripes/red,
/obj/machinery/door/poddoor/shutters/invincible{
dir = 2;
id_tag = "CC_Armory_PDW"
@@ -39731,12 +39782,10 @@
/area/centcom/supply)
"sqO" = (
/obj/item/gun/energy/sniperrifle{
- pixel_x = 3;
- pixel_y = 8
+ pixel_x = -6
},
/obj/item/gun/energy/sniperrifle{
- pixel_x = 3;
- pixel_y = -3
+ pixel_x = 6
},
/obj/structure/rack/gunrack,
/obj/effect/decal/warning_stripes/red/hollow,
@@ -39927,13 +39976,23 @@
/turf/simulated/floor/carpet/arcade,
/area/centcom/zone1)
"svw" = (
-/obj/item/gun/projectile/automatic/ar,
-/obj/item/gun/projectile/automatic/ar,
-/obj/item/gun/projectile/automatic/ar,
-/obj/item/gun/projectile/automatic/ar,
-/obj/item/gun/projectile/automatic/ar,
/obj/structure/rack/gunrack,
/obj/effect/decal/warning_stripes/red/hollow,
+/obj/item/gun/projectile/automatic/ar{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/ar{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/ar{
+ pixel_x = -6
+ },
+/obj/item/gun/projectile/automatic/ar{
+ pixel_x = 6
+ },
+/obj/item/gun/projectile/automatic/ar{
+ pixel_x = 6
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -43372,10 +43431,19 @@
/area/centcom/specops)
"tYP" = (
/obj/structure/rack,
-/obj/item/ammo_box/shotgun/rubbershot,
-/obj/item/ammo_box/shotgun/rubbershot,
-/obj/item/ammo_box/shotgun/rubbershot,
/obj/effect/decal/warning_stripes/green/hollow,
+/obj/item/ammo_box/a40mm,
+/obj/item/ammo_box/a40mm,
+/obj/item/ammo_box/magazine/m556,
+/obj/item/ammo_box/magazine/m556,
+/obj/item/ammo_box/magazine/m556,
+/obj/item/ammo_box/magazine/m556,
+/obj/item/ammo_box/magazine/m556,
+/obj/item/ammo_box/magazine/m556,
+/obj/item/ammo_box/magazine/m556,
+/obj/item/ammo_box/magazine/m556,
+/obj/item/ammo_box/magazine/m556,
+/obj/item/ammo_box/magazine/m556,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -50604,32 +50672,26 @@
},
/area/syndicate_mothership)
"xjB" = (
+/obj/structure/rack/gunrack,
+/obj/effect/decal/warning_stripes/blue/hollow,
/obj/item/gun/projectile/shotgun/automatic/combat{
- pixel_x = 3;
- pixel_y = 8
+ pixel_x = -6
},
/obj/item/gun/projectile/shotgun/automatic/combat{
- pixel_x = 3;
- pixel_y = -2
+ pixel_x = -6
},
/obj/item/gun/projectile/shotgun/automatic/combat{
- pixel_x = 3;
- pixel_y = 8
+ pixel_x = -6
},
/obj/item/gun/projectile/shotgun/automatic/combat{
- pixel_x = 3;
- pixel_y = 8
+ pixel_x = 6
},
/obj/item/gun/projectile/shotgun/automatic/combat{
- pixel_x = 3;
- pixel_y = -2
+ pixel_x = 6
},
/obj/item/gun/projectile/shotgun/automatic/combat{
- pixel_x = 3;
- pixel_y = -2
+ pixel_x = 6
},
-/obj/structure/rack/gunrack,
-/obj/effect/decal/warning_stripes/blue/hollow,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -98782,7 +98844,7 @@ nAN
nAN
nAN
nAN
-fID
+mVX
mVX
mVX
mVX
@@ -106224,7 +106286,7 @@ cAo
iGP
nAN
cjN
-hDk
+cgX
rTJ
hBW
lYK
@@ -109807,8 +109869,8 @@ tgn
nFb
uSN
uSN
-eWz
-eWz
+jMD
+jMD
nAN
eHW
eHW
@@ -110063,10 +110125,10 @@ nAN
uSN
uSN
uSN
-eWz
+jMD
mVX
mVX
-eWz
+jMD
eHW
eHW
eHW
diff --git a/_maps/map_files/nova/Lavaland.dmm b/_maps/map_files/nova/Lavaland.dmm
index bca7828f3cc..c424fe138db 100644
--- a/_maps/map_files/nova/Lavaland.dmm
+++ b/_maps/map_files/nova/Lavaland.dmm
@@ -1,8 +1,5 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 2
- },
/obj/machinery/camera{
c_tag = "Mining Post South-East Hallway";
dir = 2;
@@ -35,11 +32,23 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel,
/area/mine/laborcamp)
+"an" = (
+/obj/machinery/status_display,
+/turf/simulated/wall,
+/area/mine/storage)
"ao" = (
/obj/effect/mapping_helpers/no_lava,
/obj/structure/ore_box,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors/explored)
+"ap" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/storage)
"as" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -130,6 +139,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/effect/baseturf_helper/lava_land/surface,
/turf/simulated/floor/plasteel,
/area/mine/eva)
"aM" = (
@@ -142,13 +152,12 @@
/obj/structure/stone_tile,
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
+"aS" = (
+/obj/effect/turf_decal/delivery,
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"bf" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
+/obj/machinery/door/firedoor,
/turf/simulated/floor/plasteel,
/area/mine/living_quarters)
"bg" = (
@@ -205,9 +214,7 @@
/area/lavaland/surface/outdoors)
"bG" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 8
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
/area/mine/lobby)
"bH" = (
@@ -312,7 +319,7 @@
dir = 4;
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"dm" = (
/obj/structure/stone_tile/block/cracked,
/turf/simulated/floor/lava/lava_land_surface,
@@ -422,15 +429,29 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/simulated/floor/plasteel,
/area/mine/living_quarters)
+"eg" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "brown"
+ },
+/area/mine/living_quarters)
"ej" = (
/obj/structure/table,
/obj/item/reagent_containers/food/drinks/cans/beer,
@@ -829,6 +850,15 @@
icon_state = "brownfull"
},
/area/mine/laborcamp)
+"gE" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/sign/poster/random{
+ pixel_x = -32
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/mine/maintenance)
"gF" = (
/obj/structure/cable{
d1 = 4;
@@ -917,6 +947,29 @@
/obj/structure/stone_tile,
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
+"he" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -25;
+ pixel_y = 0
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
+"hh" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/door/firedoor,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/maintenance{
+ name = "Mining Station Communications";
+ req_access = list(48)
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/mine/maintenance)
"ho" = (
/obj/machinery/atmospherics/binary/pump/on{
desc = "Отправляет дыхательную смесь из трубы распространяться по аванпосту через вентиляцию.";
@@ -936,6 +989,10 @@
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
/area/mine/laborcamp)
+"ht" = (
+/obj/structure/sign/mining,
+/turf/simulated/wall,
+/area/mine/living_quarters)
"hu" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -1036,6 +1093,13 @@
"hQ" = (
/turf/simulated/wall,
/area/lavaland/surface/outdoors/explored)
+"hT" = (
+/obj/machinery/conveyor{
+ id = "mining_internal";
+ use_power = 0
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"hX" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/blood/old,
@@ -1255,6 +1319,9 @@
d2 = 8;
icon_state = "4-8"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
/turf/simulated/floor/wood,
/area/mine/cafeteria)
"jE" = (
@@ -1324,13 +1391,9 @@
/turf/simulated/floor/wood,
/area/mine/cafeteria)
"jM" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/simulated/floor/plasteel,
-/area/mine/living_quarters)
+/obj/effect/spawner/window/reinforced,
+/turf/simulated/floor/plating,
+/area/mine/storage)
"jU" = (
/obj/structure/stone_tile/block{
dir = 1
@@ -1340,10 +1403,6 @@
/area/mine/necropolis)
"jW" = (
/obj/structure/fans/tiny,
-/obj/machinery/door/airlock/external{
- id_tag = "laborcamp_away2";
- name = "Lava Camp Airlock"
- },
/obj/machinery/access_button{
command = "cycle_exterior";
frequency = 1379;
@@ -1351,6 +1410,15 @@
name = "exterior access button";
pixel_y = -25
},
+/obj/machinery/door/airlock/external{
+ frequency = 1379;
+ glass = 1;
+ id_tag = "mining_outer";
+ locked = 1;
+ name = "Mining External Airlock";
+ opacity = 0;
+ req_access = list(54)
+ },
/turf/simulated/floor/plating,
/area/mine/lobby)
"jX" = (
@@ -1397,18 +1465,14 @@
},
/area/mine/laborcamp)
"kf" = (
-/obj/machinery/light/small{
- dir = 1
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 2
- },
+/obj/effect/decal/cleanable/dirt,
/obj/machinery/camera{
- c_tag = "Mining Communications Relay";
- network = list("Mining Outpost")
+ c_tag = "Mining Smeltery";
+ network = list("Mining Outpost");
+ dir = 4
},
-/turf/simulated/floor/plasteel/dark,
-/area/mine/maintenance)
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"kg" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 1
@@ -1503,12 +1567,18 @@
/turf/simulated/floor/lava/lava_land_surface,
/area/mine/necropolis)
"kR" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
-/turf/simulated/floor/plasteel{
- icon_state = "browncorner"
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
},
+/turf/simulated/floor/plasteel,
/area/mine/living_quarters)
"lb" = (
/obj/structure/sink{
@@ -1652,7 +1722,6 @@
/turf/simulated/floor/plating,
/area/mine/living_quarters)
"lJ" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/disposalpipe/segment{
dir = 6
@@ -1724,9 +1793,6 @@
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors/necropolis)
"me" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "browncorner"
@@ -1830,6 +1896,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/effect/decal/warning_stripes/yellow,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/simulated/floor/plasteel,
/area/mine/living_quarters)
"nb" = (
@@ -1880,6 +1949,9 @@
/obj/machinery/light{
dir = 4
},
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
+ },
/turf/simulated/floor/plasteel/dark,
/area/mine/cafeteria)
"nA" = (
@@ -1891,12 +1963,14 @@
/turf/simulated/wall,
/area/mine/living_quarters)
"nM" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 4
+/obj/machinery/alarm{
+ pixel_y = 24
},
-/turf/simulated/floor/plasteel,
-/area/mine/lobby)
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "brown"
+ },
+/area/mine/living_quarters)
"nN" = (
/obj/machinery/suit_storage_unit/lavaland,
/turf/simulated/floor/plasteel{
@@ -1980,10 +2054,10 @@
/area/mine/lobby)
"on" = (
/obj/machinery/light/small{
- dir = 1
+ dir = 4
},
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 2
+/obj/structure/sign/poster/random{
+ pixel_x = 32
},
/turf/simulated/floor/plasteel/dark,
/area/mine/maintenance)
@@ -2016,6 +2090,18 @@
icon_state = "browncorner"
},
/area/mine/living_quarters)
+"oy" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/conveyor_switch/oneway{
+ id = "mining_internal";
+ name = "mining conveyor";
+ use_power = 0
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"oz" = (
/obj/structure/stone_tile/block{
dir = 8
@@ -2273,6 +2359,12 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
/area/mine/laborcamp)
+"pP" = (
+/obj/machinery/mineral/processing_unit_console{
+ use_power = 0
+ },
+/turf/simulated/wall,
+/area/mine/living_quarters)
"pS" = (
/obj/structure/stone_tile/block/cracked{
dir = 8
@@ -2452,11 +2544,15 @@
"rv" = (
/obj/structure/closet/secure_closet/miner,
/obj/item/pickaxe/safety,
+/obj/machinery/alarm{
+ dir = 1;
+ pixel_y = -24
+ },
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"rC" = (
/obj/machinery/atmospherics/unary/outlet_injector/on{
dir = 4;
@@ -2525,7 +2621,7 @@
dir = 1;
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"se" = (
/obj/structure/table,
/obj/machinery/light{
@@ -2694,6 +2790,21 @@
/obj/effect/decal/warning_stripes/yellow,
/turf/simulated/floor/plating,
/area/mine/laborcamp)
+"ts" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/item/twohanded/required/kirbyplants,
+/turf/simulated/floor/plasteel/dark,
+/area/mine/cafeteria)
"tv" = (
/obj/machinery/atmospherics/pipe/manifold/visible/cyan{
dir = 1
@@ -2819,9 +2930,10 @@
dir = 1
},
/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
},
/turf/simulated/floor/plasteel,
/area/mine/living_quarters)
@@ -2989,15 +3101,17 @@
},
/area/mine/laborcamp)
"uV" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
/turf/simulated/floor/plasteel,
/area/mine/living_quarters)
"va" = (
@@ -3010,14 +3124,18 @@
"vb" = (
/obj/structure/bed,
/obj/item/bedsheet/brown,
-/obj/item/toy/plushie/ashwalkerplushie{
- name = "Зюзя"
- },
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "brown"
},
/area/mine/living_quarters)
+"vc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/plasteel{
+ icon_state = "darkredfull"
+ },
+/area/mine/laborcamp/security)
"ve" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -3126,6 +3244,18 @@
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril,
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
+"vA" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"vB" = (
/turf/template_noop,
/area/lavaland/surface/outdoors/necropolis)
@@ -3174,6 +3304,14 @@
icon_state = "brown"
},
/area/mine/lobby)
+"vW" = (
+/obj/structure/plasticflaps,
+/obj/machinery/conveyor{
+ id = "mining_internal";
+ use_power = 0
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"vX" = (
/obj/structure/stone_tile/cracked{
dir = 8
@@ -3196,6 +3334,21 @@
},
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
+"wc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/tcomms/relay/mining,
+/turf/simulated/floor/bluegrid,
+/area/mine/maintenance)
"we" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/neutral{
@@ -3227,7 +3380,7 @@
dir = 1;
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"wo" = (
/obj/structure/stone_tile/block{
dir = 1
@@ -3414,6 +3567,9 @@
},
/turf/simulated/floor/plasteel,
/area/mine/lobby)
+"xV" = (
+/turf/simulated/floor/plasteel,
+/area/mine/storage)
"xW" = (
/obj/structure/window/reinforced/clockwork{
dir = 4;
@@ -3664,6 +3820,21 @@
/obj/machinery/mineral/equipment_vendor/labor,
/turf/simulated/floor/plating,
/area/mine/laborcamp)
+"zO" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "mining_internal";
+ use_power = 0
+ },
+/obj/machinery/mineral/unloading_machine{
+ dir = 1;
+ icon_state = "unloader-corner";
+ input_dir = 2;
+ output_dir = 1;
+ use_power = 0
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"zP" = (
/obj/structure/stone_tile/block{
dir = 4
@@ -3682,12 +3853,11 @@
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
"zT" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
},
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel/dark,
-/area/mine/cafeteria)
+/turf/simulated/floor/plasteel,
+/area/mine/lobby)
"zY" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
@@ -3802,11 +3972,15 @@
/turf/simulated/floor/plasteel/dark,
/area/mine/cafeteria)
"Ay" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 8
+/obj/machinery/alarm{
+ dir = 4;
+ pixel_x = -22
},
-/turf/simulated/floor/plasteel,
-/area/mine/lobby)
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/mine/living_quarters)
"AA" = (
/obj/structure/fluff/drake_statue,
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
@@ -3901,6 +4075,10 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
+/obj/item/toy/plushie/ashwalkerplushie{
+ name = "Зюзя";
+ desc = "Мило выглядящая плюшевая игрушка пеплоходца с странным именем."
+ },
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "brown"
@@ -3951,6 +4129,16 @@
},
/turf/simulated/floor/lava/lava_land_surface,
/area/mine/necropolis)
+"Bm" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Bn" = (
/obj/structure/stone_tile/block,
/obj/structure/stone_tile{
@@ -3993,8 +4181,12 @@
},
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/simulated/floor/plasteel,
-/area/mine/living_quarters)
+/area/mine/storage)
"Bz" = (
/obj/structure/safe/floor,
/obj/item/whetstone/cult{
@@ -4147,15 +4339,21 @@
/area/lavaland/surface/outdoors/necropolis)
"Cn" = (
/obj/machinery/door/firedoor,
-/obj/machinery/light/small{
- dir = 1
- },
/obj/effect/decal/warning_stripes/yellow,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "brown"
},
/area/mine/living_quarters)
+"Cr" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 30
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "brown"
+ },
+/area/mine/living_quarters)
"Cs" = (
/obj/machinery/atmospherics/pipe/simple/visible/universal{
dir = 8
@@ -4322,18 +4520,26 @@
/turf/simulated/floor/lava/lava_land_surface,
/area/mine/necropolis)
"Dh" = (
-/obj/machinery/hologram/holopad,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
},
-/obj/structure/cable{
- icon_state = "2-8"
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
},
-/turf/simulated/floor/plasteel/dark,
-/area/mine/maintenance)
+/obj/machinery/alarm{
+ pixel_y = 24
+ },
+/obj/machinery/camera{
+ c_tag = "Mining Communications Relay";
+ network = list("Mining Outpost")
+ },
+/turf/simulated/floor/bluegrid,
+/area/lavaland/surface/outdoors)
"Dl" = (
/obj/structure/stone_tile/slab/cracked,
/turf/simulated/floor/indestructible/boss,
@@ -4425,11 +4631,8 @@
dir = 4
},
/turf/simulated/floor/plasteel,
-/area/mine/living_quarters)
+/area/mine/storage)
"DW" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
@@ -4442,6 +4645,9 @@
/obj/structure/disposalpipe/segment{
dir = 5
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
/turf/simulated/floor/wood,
/area/mine/cafeteria)
"Ej" = (
@@ -4493,11 +4699,20 @@
dir = 8;
network = list("Mining Outpost")
},
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "east bump";
+ pixel_x = 26
+ },
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"Es" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -4527,6 +4742,12 @@
icon_state = "freezerfloor"
},
/area/mine/living_quarters)
+"ET" = (
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/mine/storage)
"EU" = (
/obj/structure/stone_tile{
dir = 1
@@ -4569,7 +4790,7 @@
dir = 6;
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"Fv" = (
/obj/structure/stone_tile/center,
/obj/structure/stone_tile/surrounding,
@@ -4629,6 +4850,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/effect/baseturf_helper/lava_land/surface,
/turf/simulated/floor/plasteel/dark,
/area/mine/cafeteria)
"FJ" = (
@@ -4661,7 +4883,7 @@
dir = 8
},
/turf/simulated/floor/plasteel,
-/area/mine/living_quarters)
+/area/mine/storage)
"FX" = (
/obj/structure/stone_tile/block/burnt{
dir = 1
@@ -4695,6 +4917,14 @@
icon_state = "clockwork_floor"
},
/area/mine/necropolis)
+"Gi" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "mining_internal";
+ use_power = 0
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Gm" = (
/obj/structure/stone_tile/cracked{
dir = 4
@@ -4819,6 +5049,12 @@
icon_state = "brown"
},
/area/mine/eva)
+"GX" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/lobby)
"GY" = (
/obj/structure/table,
/obj/effect/decal/cleanable/dirt,
@@ -5017,7 +5253,6 @@
/turf/simulated/floor/plasteel,
/area/mine/lobby)
"IF" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/disposalpipe/segment,
/obj/effect/decal/cleanable/dirt,
@@ -5058,17 +5293,16 @@
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
"Jl" = (
-/obj/machinery/power/apc{
- dir = 1;
- name = "Mining Communications APC";
- pixel_x = 1;
- pixel_y = 25
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
},
/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
+ icon_state = "1-2"
},
-/turf/simulated/floor/bluegrid,
+/turf/simulated/floor/plasteel/dark,
/area/mine/maintenance)
"Jm" = (
/obj/structure/fluff/drake_statue{
@@ -5159,8 +5393,15 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/baseturf_helper/lava_land/surface,
/turf/simulated/floor/plasteel,
-/area/mine/living_quarters)
+/area/mine/storage)
"Kb" = (
/obj/structure/table/wood,
/obj/machinery/chem_dispenser/beer,
@@ -5266,6 +5507,15 @@
},
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
+"KJ" = (
+/obj/machinery/firealarm{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "brown"
+ },
+/area/mine/living_quarters)
"KO" = (
/obj/structure/window/reinforced/clockwork{
dir = 8;
@@ -5371,24 +5621,30 @@
},
/area/mine/laborcamp)
"Lo" = (
-/obj/structure/cable{
- icon_state = "4-8"
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
},
-/obj/machinery/light_switch{
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
+ },
+/obj/machinery/firealarm{
+ dir = 1;
pixel_y = -25
},
-/turf/simulated/floor/plasteel/dark,
+/turf/simulated/floor/bluegrid,
/area/mine/maintenance)
"Lp" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
-/obj/structure/extinguisher_cabinet{
- pixel_x = 30
- },
/obj/machinery/light{
dir = 4
},
@@ -5423,8 +5679,25 @@
},
/area/mine/necropolis)
"LI" = (
-/obj/machinery/tcomms/relay/mining,
-/turf/simulated/floor/plasteel/dark,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4;
+ pixel_y = 0
+ },
+/obj/machinery/light_switch{
+ pixel_y = -25
+ },
+/turf/simulated/floor/bluegrid,
/area/mine/maintenance)
"LK" = (
/obj/structure/stone_tile/surrounding/cracked{
@@ -5619,9 +5892,6 @@
/turf/simulated/floor/plasteel,
/area/mine/laborcamp)
"MI" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/neutral{
@@ -5702,14 +5972,27 @@
},
/turf/simulated/floor/plasteel,
/area/mine/lobby)
+"Nw" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/machinery/conveyor{
+ id = "mining_internal";
+ use_power = 0
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"NA" = (
/obj/item/trash/syndi_cakes{
layer = 1.9;
pixel_x = -6;
pixel_y = -6
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel,
-/area/mine/living_quarters)
+/area/mine/storage)
"NC" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 8
@@ -5763,6 +6046,13 @@
},
/turf/simulated/floor/plating,
/area/mine/laborcamp)
+"NW" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/plasteel/dark,
+/area/mine/maintenance)
"NY" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 4
@@ -5781,11 +6071,13 @@
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors/necropolis)
"Ob" = (
-/obj/machinery/alarm{
- pixel_y = 24
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
},
-/turf/simulated/floor/bluegrid,
-/area/mine/maintenance)
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Og" = (
/obj/machinery/door/airlock,
/obj/effect/decal/cleanable/dirt,
@@ -5795,10 +6087,6 @@
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/structure/fans/tiny,
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/door/airlock/external{
- id_tag = "laborcamp_away2";
- name = "Lava Camp Airlock"
- },
/obj/machinery/access_button{
command = "cycle_interior";
frequency = 1379;
@@ -5806,6 +6094,15 @@
name = "interior access button";
pixel_y = 25
},
+/obj/machinery/door/airlock/external{
+ frequency = 1379;
+ glass = 1;
+ id_tag = "mining_inner";
+ locked = 1;
+ name = "Mining External Airlock";
+ opacity = 0;
+ req_access = list(54)
+ },
/turf/simulated/floor/plasteel/dark,
/area/mine/lobby)
"Ol" = (
@@ -5839,6 +6136,19 @@
"Oy" = (
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors/necropolis)
+"OB" = (
+/obj/machinery/power/apc{
+ dir = 1;
+ name = "Mining Communications APC";
+ pixel_x = 1;
+ pixel_y = 25
+ },
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/mine/maintenance)
"OF" = (
/obj/structure/table,
/obj/item/clothing/gloves/fingerless,
@@ -5847,7 +6157,7 @@
dir = 5;
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"OL" = (
/obj/machinery/suit_storage_unit/lavaland,
/obj/machinery/light{
@@ -5939,6 +6249,13 @@
icon_state = "brown"
},
/area/mine/laborcamp)
+"Pk" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Pl" = (
/obj/machinery/disposal,
/obj/effect/decal/warning_stripes/yellow,
@@ -5971,6 +6288,27 @@
},
/turf/simulated/floor/plasteel,
/area/mine/living_quarters)
+"Pt" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/machinery/light,
+/turf/simulated/floor/plasteel{
+ icon_state = "brown"
+ },
+/area/mine/living_quarters)
+"Pu" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 5
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Pv" = (
/obj/structure/stone_tile/block/cracked{
dir = 4
@@ -6101,6 +6439,15 @@
},
/turf/simulated/floor/plasteel,
/area/mine/laborcamp)
+"Qm" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/nuke{
+ pixel_y = -32;
+ pixel_x = -32
+ },
+/turf/simulated/floor/plasteel/dark,
+/area/mine/cafeteria)
"Qo" = (
/obj/machinery/atmospherics/unary/tank/air{
dir = 8
@@ -6115,18 +6462,8 @@
/turf/simulated/floor/plasteel/white,
/area/mine/laborcamp)
"Qr" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/maintenance{
- name = "Mining Station Communications";
- req_access = list(48)
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/simulated/floor/plasteel/dark,
-/area/mine/maintenance)
+/turf/simulated/wall,
+/area/mine/storage)
"Qs" = (
/obj/structure/stone_tile/block/cracked{
dir = 8
@@ -6152,6 +6489,15 @@
icon_state = "clockwork_floor"
},
/area/mine/necropolis)
+"Qw" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 1
+ },
+/obj/structure/sign/poster/random{
+ pixel_x = -32
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Qz" = (
/obj/structure/stone_tile/block/burnt{
dir = 4
@@ -6243,8 +6589,15 @@
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
"Rc" = (
-/obj/machinery/light/small{
- dir = 1
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 2
+ },
+/obj/structure/sign/poster/random{
+ pixel_y = 32
+ },
+/obj/machinery/light{
+ dir = 1;
+ on = 1
},
/turf/simulated/floor/plasteel{
dir = 1;
@@ -6398,14 +6751,14 @@
/area/lavaland/surface/outdoors/necropolis)
"St" = (
/obj/structure/extinguisher_cabinet{
- pixel_x = -28;
+ pixel_x = -25;
pixel_y = -32
},
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"Sy" = (
/obj/structure/stone_tile/block{
dir = 8
@@ -6417,8 +6770,13 @@
},
/area/mine/necropolis)
"Sz" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel,
-/area/mine/living_quarters)
+/area/mine/storage)
"SA" = (
/obj/structure/stone_tile/block,
/obj/structure/stone_tile{
@@ -6440,6 +6798,9 @@
/obj/structure/cable{
icon_state = "2-4"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
/turf/simulated/floor/wood,
/area/mine/cafeteria)
"SD" = (
@@ -6477,11 +6838,19 @@
pixel_x = -32
},
/obj/structure/table,
+/obj/item/twohanded/required/kirbyplants,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "brown"
},
/area/mine/living_quarters)
+"SH" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"SI" = (
/obj/structure/stone_tile/block/cracked{
dir = 4
@@ -6517,6 +6886,23 @@
},
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
+"Te" = (
+/obj/machinery/conveyor{
+ dir = 6;
+ id = "mining_internal";
+ use_power = 0
+ },
+/obj/machinery/mineral/processing_unit{
+ dir = 1;
+ input_dir = 2;
+ output_dir = 1;
+ use_power = 0
+ },
+/obj/effect/decal/cleanable/cobweb2{
+ layer = 4
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Tf" = (
/obj/structure/table,
/obj/effect/decal/cleanable/dirt,
@@ -6586,14 +6972,14 @@
/turf/simulated/floor/lava/lava_land_surface,
/area/mine/necropolis)
"TA" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 2
- },
/obj/machinery/camera{
c_tag = "Mining Post South-West Hallway";
dir = 2;
network = list("Mining Outpost")
},
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 2
+ },
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "brown"
@@ -6691,6 +7077,7 @@
/obj/machinery/alarm{
pixel_y = 24
},
+/obj/item/twohanded/required/kirbyplants,
/turf/simulated/floor/plasteel/dark,
/area/mine/cafeteria)
"Uw" = (
@@ -6699,7 +7086,7 @@
/turf/simulated/floor/plasteel{
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"Uy" = (
/turf/simulated/mineral/random/high_chance/volcanic,
/area/lavaland/surface/outdoors)
@@ -6714,6 +7101,31 @@
tag = "icon-whiteblue (WEST)"
},
/area/mine/lobby)
+"UC" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/effect/baseturf_helper/lava_land/surface,
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
+"UG" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "brown"
+ },
+/area/mine/living_quarters)
"UI" = (
/obj/structure/closet/secure_closet/personal,
/turf/simulated/floor/plasteel{
@@ -6772,11 +7184,15 @@
name = "Emergency NanoMed";
pixel_x = -28
},
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = 27
+ },
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"Va" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -6787,6 +7203,20 @@
icon_state = "brown"
},
/area/mine/laborcamp)
+"Vb" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Vd" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
@@ -6827,11 +7257,9 @@
},
/area/mine/necropolis)
"Vy" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
-/turf/simulated/floor/plasteel/dark,
-/area/mine/maintenance)
+/obj/item/twohanded/required/kirbyplants,
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Vz" = (
/obj/structure/stone_tile/surrounding_tile{
dir = 8
@@ -6879,7 +7307,7 @@
/turf/simulated/floor/plasteel{
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"VG" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/vending/sustenance,
@@ -6910,6 +7338,14 @@
/obj/structure/chair/stool,
/turf/simulated/floor/plasteel/dark,
/area/mine/cafeteria)
+"VW" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "brown"
+ },
+/area/mine/living_quarters)
"VY" = (
/obj/machinery/power/port_gen/pacman{
anchored = 1
@@ -7041,6 +7477,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
+/obj/item/twohanded/required/kirbyplants,
/turf/simulated/floor/plasteel/dark,
/area/mine/cafeteria)
"WI" = (
@@ -7056,8 +7493,13 @@
"WJ" = (
/obj/item/radio/beacon,
/obj/machinery/hologram/holopad,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/baseturf_helper/lava_land/surface,
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 8
+ },
/turf/simulated/floor/plasteel,
/area/mine/lobby)
"WR" = (
@@ -7068,6 +7510,7 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
+/obj/effect/baseturf_helper/lava_land/surface,
/turf/simulated/floor/plasteel,
/area/mine/laborcamp)
"WT" = (
@@ -7100,6 +7543,9 @@
dir = 8
},
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
/turf/simulated/floor/plasteel/dark,
/area/mine/cafeteria)
"Xf" = (
@@ -7175,10 +7621,13 @@
},
/turf/simulated/floor/indestructible/boss,
/area/mine/necropolis)
+"Ya" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Ye" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -7201,7 +7650,7 @@
/turf/simulated/floor/plasteel{
icon_state = "brown"
},
-/area/mine/living_quarters)
+/area/mine/storage)
"Yl" = (
/obj/structure/stone_tile/surrounding_tile,
/obj/structure/stone_tile/surrounding_tile{
@@ -7320,6 +7769,10 @@
},
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors/necropolis)
+"Zb" = (
+/obj/effect/turf_decal/loading_area,
+/turf/simulated/floor/plasteel,
+/area/mine/living_quarters)
"Zc" = (
/obj/structure/stone_tile/cracked{
dir = 4
@@ -7427,11 +7880,15 @@
},
/area/mine/necropolis)
"ZC" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/structure/cable{
- icon_state = "1-4"
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 1
},
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/mine/living_quarters)
"ZD" = (
@@ -13939,7 +14396,7 @@ tf
dI
aE
Es
-Es
+vc
HV
dI
Ne
@@ -18309,8 +18766,8 @@ DH
DH
Ne
Ne
-Ne
-Ne
+bB
+tG
Ne
Ne
Ne
@@ -18566,9 +19023,9 @@ DH
DH
Ne
bB
-Ne
-Ne
-Ne
+bB
+tG
+tG
Ne
Ne
Ne
@@ -18825,8 +19282,8 @@ Ne
bB
bB
bB
-Ne
-Ne
+tG
+tG
Ne
Ne
Ne
@@ -19083,8 +19540,8 @@ bB
bB
bB
bB
-Ne
-Ne
+tG
+bB
Ne
Ne
"}
@@ -19341,7 +19798,7 @@ bB
bB
bB
bB
-Ne
+bB
Ne
Ne
"}
@@ -19598,8 +20055,8 @@ Ne
bB
bB
bB
-Ne
-Ne
+bB
+bB
Ne
"}
(48,1,1) = {"
@@ -20617,12 +21074,12 @@ Ne
Ne
uq
uq
-Fc
+ts
As
sU
CJ
Fc
-XJ
+Qm
fi
hw
bB
@@ -20878,7 +21335,7 @@ QF
sU
ib
sU
-CJ
+gn
Fc
CS
hw
@@ -21121,18 +21578,18 @@ Ne
Ne
Ne
Ne
-Ne
-Ne
-Ne
-Ne
-dg
+CO
+CO
+CO
+CO
+CO
oL
dg
oL
eT
bg
sU
-gn
+CJ
FI
Sf
WY
@@ -21378,10 +21835,10 @@ Ne
Ne
Ne
Ne
-Ne
-Ne
-CO
CO
+wc
+gE
+LI
CO
dA
SG
@@ -21635,18 +22092,18 @@ Ne
Ne
Ne
Ne
-Ne
-CO
CO
+OB
+NW
Jl
-CO
-Pm
-Sz
+hh
+eg
+Pu
ou
kA
CJ
pg
-zT
+CJ
Kb
ka
jq
@@ -21892,14 +22349,14 @@ Ne
Ne
Ne
Ne
-Ne
CO
+Dh
on
Lo
CO
-TA
-bf
+KJ
kR
+JN
cT
fX
eR
@@ -22147,16 +22604,16 @@ Ne
Ne
Ne
Ne
-Ne
-Ne
-Ne
+dg
+dg
CO
-LI
-Dh
-Qr
-jM
+CO
+CO
+CO
+CO
+TA
ZC
-iB
+Pt
Ul
nz
Bz
@@ -22404,13 +22861,13 @@ Ne
Ne
Ne
Ne
-Ne
-Ne
-Ne
-CO
+dg
+aS
+Qw
+he
kf
Vy
-CO
+dg
Cn
vk
lY
@@ -22661,24 +23118,24 @@ Ne
Ne
Ne
Ne
-Ne
-Ne
-bB
-CO
-CO
+oL
+zO
+oL
+oy
+Pk
Ob
-CO
-Ls
-AQ
+Ya
+VW
+Bm
ou
cH
Ha
Ha
-Ha
-Ha
+Ay
+WX
Oq
Em
-WX
+Ha
Ha
qv
Hs
@@ -22918,28 +23375,28 @@ Ne
Ne
Ne
Ne
-Ne
-Ne
-bB
-bB
-CO
-CO
-CO
-gk
+oL
+Gi
+ht
+oL
+pP
+SH
+bf
+Ls
us
-Dd
+AN
mY
-Dd
-Dd
-Dd
-Dd
-Dd
+AN
+AN
+AN
+AN
+AN
ed
Dd
Dd
jc
iB
-dg
+oL
bB
Ne
"}
@@ -23175,21 +23632,21 @@ Ne
Ne
Ne
Ne
-Ne
-Ne
-Ne
-bB
-bB
-bB
dg
-Ls
+Te
+Nw
+hT
+vW
+Zb
+dg
+Cr
AQ
JN
Hy
vq
vq
vq
-vq
+UG
vl
Em
vq
@@ -23431,23 +23888,23 @@ bB
bB
bB
Ne
-bB
-Ne
-Ne
-Ne
Ne
-bB
-bB
+dg
+dg
oL
-Ls
-AQ
-iB
-uL
-uL
oL
oL
-uL
-uL
+dg
+dg
+gk
+Vb
+iB
+Qr
+Qr
+jM
+jM
+Qr
+Qr
pv
uL
IP
@@ -23688,23 +24145,23 @@ bB
bB
bB
bB
-bB
-bB
Ne
Ne
Ne
Ne
bB
-oL
-Ls
-AQ
-iB
-uL
+bB
+bB
+dg
+Rc
+vA
+VC
+Qr
UV
-Ha
+ET
St
rv
-uL
+Qr
Ah
uL
mI
@@ -23950,18 +24407,18 @@ bB
bB
Ne
Ne
-Ne
bB
-dg
-Rc
+bB
+oL
+Ls
AQ
iB
-oL
+jM
wn
DV
-Sz
+xV
Yg
-uL
+Qr
Ah
uL
AP
@@ -24211,14 +24668,14 @@ Ne
bB
oL
Ls
-vH
-Vd
+UC
+AN
Bw
-Vd
+ap
Ka
Sz
VE
-uL
+Qr
Ah
dg
dg
@@ -24466,16 +24923,16 @@ bB
Ne
Ne
bB
-oL
-Ls
+dg
+nM
AQ
iB
-oL
+jM
sb
FU
NA
Uw
-uL
+Qr
Ah
dg
bB
@@ -24726,13 +25183,13 @@ bB
dg
aa
uV
-VC
-uL
+iB
+Qr
OF
dh
Er
Fq
-uL
+Qr
jE
dg
bB
@@ -24982,14 +25439,14 @@ Ne
bB
oL
Ls
-AQ
+Vb
iB
-nH
-uL
-uL
-uL
-uL
-uL
+an
+Qr
+Qr
+Qr
+Qr
+Qr
Ah
dg
bB
@@ -25496,8 +25953,8 @@ bB
bB
dg
Rc
-AQ
-iB
+vA
+VC
uL
UI
MA
@@ -26256,7 +26713,7 @@ oY
zt
xZ
TQ
-IE
+GX
me
Xu
Jb
@@ -26514,7 +26971,7 @@ uH
yX
bG
WJ
-nM
+yX
Gq
yX
yX
@@ -26769,8 +27226,8 @@ hu
pA
zt
EZ
-Ay
IE
+zT
gX
xY
AO
diff --git a/_maps/map_files/nova/nova.dmm b/_maps/map_files/nova/nova.dmm
index f8997e7806c..a660768c920 100644
--- a/_maps/map_files/nova/nova.dmm
+++ b/_maps/map_files/nova/nova.dmm
@@ -513,31 +513,11 @@
/turf/simulated/floor/plasteel/dark,
/area/engineering/controlroom)
"aek" = (
-/obj/structure/cable{
- icon_state = "2-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 6
- },
-/obj/machinery/hologram/holopad,
-/obj/effect/decal/warning_stripes/green/hollow,
-/obj/structure/cable{
- icon_state = "2-4"
- },
-/obj/item/radio/intercom{
- pixel_x = 28;
- pixel_y = 32
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 8
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/simulated/floor/plasteel{
- icon_state = "white"
+/obj/machinery/atmospherics/binary/valve{
+ dir = 4
},
-/area/medical/virology)
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"aeq" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
@@ -1021,7 +1001,9 @@
dir = 1;
pixel_y = -24
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"ahH" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -1048,11 +1030,12 @@
},
/area/medical/research/nhallway)
"ahS" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whitegreen"
@@ -1242,6 +1225,10 @@
name = "east station intercom (General)";
pixel_x = 28
},
+/obj/machinery/camera{
+ c_tag = "Central Ring Hallway West 1";
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "neutral"
@@ -1293,7 +1280,7 @@
scrub_Toxins = 1
},
/turf/simulated/floor/plasteel{
- dir = 1
+ icon_state = "red"
},
/area/security/lobby)
"ajJ" = (
@@ -1312,11 +1299,11 @@
/turf/simulated/floor/plating,
/area/maintenance/fpmaint)
"ajO" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "darkredfull"
},
/area/turret_protected/ai)
"ajQ" = (
@@ -1497,6 +1484,7 @@
icon_state = "1-4"
},
/turf/simulated/floor/plasteel{
+ dir = 10;
icon_state = "darkred"
},
/area/turret_protected/ai)
@@ -1642,6 +1630,7 @@
/area/quartermaster/storage)
"ama" = (
/obj/effect/decal/cleanable/dirt,
+/obj/item/folder,
/turf/simulated/floor/plasteel,
/area/maintenance/xenozoo)
"amf" = (
@@ -1973,10 +1962,17 @@
/turf/simulated/floor/grass,
/area/hydroponics)
"aok" = (
-/obj/structure/closet/l3closet/virology,
-/obj/machinery/atmospherics/pipe/simple/hidden/cyan,
-/turf/simulated/floor/plating,
-/area/medical/virology/lab)
+/obj/structure/table/reinforced,
+/obj/item/storage/ashtray/glass{
+ pixel_x = 6
+ },
+/obj/item/storage/fancy/cigarettes/cigpack_robust,
+/obj/item/lighter,
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "red"
+ },
+/area/security/interrogation)
"aop" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -2062,7 +2058,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"aoU" = (
/obj/item/twohanded/required/kirbyplants,
@@ -2579,7 +2577,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"atT" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/sign/poster/official/nanotrasen_logo{
@@ -2782,7 +2780,7 @@
dir = 6;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"avP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -3202,9 +3200,6 @@
pixel_y = -22;
req_access = list(39)
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/cable{
icon_state = "1-4"
},
@@ -3213,6 +3208,9 @@
/obj/structure/disposalpipe/segment{
dir = 9
},
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whitegreen"
@@ -3251,10 +3249,6 @@
"azJ" = (
/obj/structure/table,
/obj/item/aicard,
-/obj/item/folder/blue{
- pixel_x = 2;
- pixel_y = 2
- },
/obj/machinery/status_display{
pixel_x = -32
},
@@ -3547,8 +3541,8 @@
/obj/effect/turf_decal/caution/red{
dir = 4
},
-/turf/simulated/floor/plasteel{
- icon_state = "neutralfull"
+/turf/simulated/floor/engine{
+ slowdown = -0.3
},
/area/hallway/primary/central)
"aBV" = (
@@ -3735,7 +3729,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"aCQ" = (
/obj/machinery/door/airlock/security/glass{
id = "Interrogation";
@@ -3956,8 +3950,6 @@
dir = 8;
pixel_x = 24
},
-/obj/structure/table/wood,
-/obj/item/stack/wrapping_paper,
/obj/machinery/light/small{
dir = 4
},
@@ -3965,6 +3957,7 @@
name = "north newscaster";
pixel_y = 34
},
+/obj/machinery/vending/artvend,
/turf/simulated/floor/wood,
/area/civilian/pet_store)
"aED" = (
@@ -3984,7 +3977,7 @@
/turf/simulated/floor/carpet/royalblue,
/area/crew_quarters/captain/bedroom)
"aEL" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/obj/structure/sign/poster/contraband/lamarr{
@@ -4115,7 +4108,6 @@
},
/obj/machinery/power/apc{
dir = 4;
- name = "east bump";
pixel_x = 26
},
/turf/simulated/floor/plasteel{
@@ -4233,7 +4225,7 @@
},
/area/hallway/primary/central/second/east)
"aGk" = (
-/obj/structure/closet/wardrobe/pink,
+/obj/machinery/vending/artvend,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "neutralcorner"
@@ -4313,8 +4305,8 @@
dir = 8;
pixel_x = -28
},
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
+/obj/structure/disposalpipe/segment{
+ dir = 6
},
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
@@ -4520,7 +4512,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plasteel,
-/area/engineering/engine)
+/area/engineering/break_room)
"aIf" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 1
@@ -4570,7 +4562,7 @@
/turf/simulated/floor/plating,
/area/magistrateoffice)
"aIt" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -4700,13 +4692,7 @@
dir = 8;
do_not_delete_me = 1
},
-/obj/structure/chair/stool/bar{
- icon = 'icons/obj/lighting.dmi';
- icon_state = "lantern-on";
- light_color = "#FFBF00";
- light_range = 6;
- name = "lantern"
- },
+/obj/item/flashlight/lantern,
/turf/simulated/floor/carpet/red,
/area/chapel/main)
"aJv" = (
@@ -4744,12 +4730,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/effect/landmark/start/botanist,
/turf/simulated/floor/plasteel{
- dir = 0;
+ dir = 6;
icon_state = "green"
},
/area/hydroponics)
@@ -4804,7 +4787,6 @@
},
/area/crew_quarters/fitness)
"aJZ" = (
-/obj/effect/spawner/random_spawners/crate_spawner,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small{
dir = 1
@@ -4919,7 +4901,6 @@
"aKJ" = (
/obj/machinery/hologram/holopad,
/obj/effect/turf_decal/box,
-/obj/effect/landmark/start/shaft_miner,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
@@ -5338,6 +5319,18 @@
icon_state = "purple"
},
/area/hallway/primary/fore)
+"aNX" = (
+/obj/structure/window/reinforced,
+/obj/item/flag/nt,
+/obj/structure/sign/beautyplaque{
+ pixel_y = 32;
+ name = "Благодарственное Письмо от Главного Инженера станции Нова";
+ desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Saad603. Слава НаноТрейзен!"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/bridge)
"aOb" = (
/obj/structure/table/wood/fancy/royalblack,
/obj/item/clothing/under/syndicate/blackops_civ,
@@ -5650,9 +5643,10 @@
id = "mining_home";
name = "mining shuttle bay";
width = 7;
- turf_type = /turf/simulated/floor/plating
+ turf_type = /turf/simulated/floor/plating;
+ area_type = /area/quartermaster/miningdock
},
-/turf/space{
+/turf/space/openspace{
icon_state = "black"
},
/area/quartermaster/miningdock)
@@ -5764,7 +5758,8 @@
},
/obj/machinery/door/firedoor,
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"aQG" = (
@@ -6214,6 +6209,11 @@
dir = 8;
pixel_x = 24
},
+/obj/machinery/camera{
+ c_tag = "Research West Hallway 2";
+ network = list("Research","SS13");
+ dir = 9
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whitepurple";
@@ -6734,6 +6734,10 @@
tag = "icon-shower (EAST)"
},
/obj/effect/landmark/start/captain,
+/obj/item/radio/intercom{
+ dir = 1;
+ pixel_y = 25
+ },
/turf/simulated/floor/plasteel/freezer,
/area/crew_quarters/captain/bedroom)
"aYf" = (
@@ -7936,6 +7940,8 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/item/radio/beacon,
+/obj/machinery/hologram/holopad,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -7990,6 +7996,9 @@
"bhW" = (
/obj/structure/closet/bombcloset,
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/sign/poster/official/random{
+ pixel_x = -32
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "whitepurple"
@@ -8038,6 +8047,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
},
+/obj/structure/disposalpipe/segment{
+ dir = 5
+ },
/turf/simulated/floor/plasteel{
icon_state = "whiteblue"
},
@@ -8203,6 +8215,11 @@
/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/wood,
/area/maintenance/fsmaint)
+"bjD" = (
+/obj/effect/decal/cleanable/dust,
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/wood,
+/area/maintenance/library)
"bjG" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -8365,15 +8382,21 @@
/turf/simulated/floor/carpet/black,
/area/chapel/main)
"bkx" = (
-/obj/effect/decal/warning_stripes/northeast,
-/obj/machinery/chem_master{
- pixel_x = -1
- },
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/table/glass,
+/obj/item/reagent_containers/dropper/precision,
+/obj/item/reagent_containers/dropper/precision,
+/obj/item/reagent_containers/dropper,
+/obj/item/reagent_containers/dropper,
+/obj/item/healthanalyzer/advanced,
+/obj/item/healthanalyzer/advanced,
/turf/simulated/floor/plasteel,
/area/medical/virology/lab)
"bky" = (
@@ -8533,6 +8556,12 @@
icon_state = "neutral"
},
/area/hallway/primary/central/sw)
+"bmb" = (
+/obj/machinery/door/airlock/maintenance{
+ req_access = list(12)
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/fsmaint3)
"bmd" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/random_spawners/blood_20,
@@ -8606,11 +8635,11 @@
/turf/simulated/floor/plating,
/area/security/permabrig)
"bmP" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
+/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
/turf/simulated/floor/plasteel{
- dir = 1
+ icon_state = "redcorner"
},
/area/security/prison/cell_block/A)
"bmR" = (
@@ -8720,7 +8749,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"bnN" = (
/obj/effect/decal/cleanable/dirt,
@@ -9024,7 +9055,7 @@
"bpz" = (
/obj/machinery/portable_atmospherics/canister/toxins,
/obj/machinery/vending/wallmed{
- pixel_x = 26
+ pixel_x = 25
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/effect/decal/warning_stripes/south,
@@ -9155,13 +9186,14 @@
/turf/simulated/floor/wood,
/area/maintenance/fsmaint)
"bqo" = (
-/obj/effect/decal/warning_stripes/northwestcorner,
-/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2,
-/obj/item/toy/figure/scientist,
/obj/machinery/light/small{
dir = 1
},
+/obj/structure/closet/l3closet/scientist,
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/effect/decal/warning_stripes/northwestcorner,
+/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/xenozoo)
"bqr" = (
@@ -9176,7 +9208,7 @@
dir = 9;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"bqA" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
@@ -9464,7 +9496,8 @@
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plasteel{
- icon_state = "neutralfull"
+ icon_state = "redfull";
+ tag = "icon-redfull (NORTHWEST)"
},
/area/atmos)
"bso" = (
@@ -9756,7 +9789,7 @@
dir = 4;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"buq" = (
/obj/machinery/firealarm{
dir = 8;
@@ -9943,7 +9976,9 @@
codes_txt = "patrol;next_patrol=C9";
location = "C8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"bvn" = (
/obj/structure/cable{
@@ -10060,7 +10095,9 @@
/area/hallway/primary/central/second/north)
"bvT" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"bvV" = (
/obj/docking_port/stationary{
@@ -10128,21 +10165,26 @@
},
/area/maintenance/fpmaint)
"bwt" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{
- dir = 4
+/obj/structure/cable/multiz{
+ color = "#dd1010"
},
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
},
-/obj/structure/cable{
- icon_state = "1-2"
+/obj/structure/table/glass,
+/obj/item/paper_bin,
+/obj/item/pen/red,
+/obj/item/reagent_containers/spray/cleaner/medical{
+ pixel_x = 7;
+ pixel_y = 9
},
-/obj/structure/disposalpipe/segment{
- invisibility = 101
+/obj/item/reagent_containers/spray/cleaner/medical{
+ pixel_x = -2;
+ pixel_y = 9
},
-/turf/simulated/floor/plating,
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/plasteel,
/area/medical/virology/lab)
"bwE" = (
/obj/effect/decal/cleanable/dirt,
@@ -10389,11 +10431,6 @@
icon_state = "1-2"
},
/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/atmos/glass{
- name = "Supermatter Chamber";
- req_access = list(24);
- security_level = 1
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/door/poddoor{
@@ -10403,6 +10440,11 @@
name = "Engineering Lockdown";
opacity = 0
},
+/obj/machinery/door/airlock/atmos{
+ req_access = list(24);
+ name = "Supermatter Chamber";
+ security_level = 1
+ },
/turf/simulated/floor/plasteel/dark,
/area/engineering/controlroom)
"byL" = (
@@ -10469,7 +10511,7 @@
},
/area/medical/cloning)
"bzd" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/wood,
@@ -10684,16 +10726,29 @@
/obj/item/storage/ashtray,
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
+"bAU" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/toolbox/mechanical,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/turret_protected/ai)
"bAV" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/structure/closet/crate/freezer,
+/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis,
+/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis,
+/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis,
+/obj/machinery/light/small{
+ dir = 8
},
-/turf/simulated/floor/plasteel{
- icon_state = "white"
+/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{
+ dir = 8
},
-/area/medical/virology)
+/obj/structure/sign/poster/contraband/random{
+ pixel_x = -32
+ },
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"bAX" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -10773,6 +10828,21 @@
icon_state = "darkred"
},
/area/security/evidence)
+"bBs" = (
+/obj/effect/turf_decal/caution/stand_clear,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/turret_protected/ai)
"bBt" = (
/obj/structure/rack{
dir = 8;
@@ -11011,17 +11081,10 @@
},
/area/security/processing)
"bDb" = (
-/obj/machinery/atmospherics/unary/vent_scrubber{
- name = "standard air scrubber";
- on = 1;
- scrub_N2O = 1;
- scrub_Toxins = 1;
- dir = 1
- },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"bDc" = (
/obj/structure/chair/stool,
/obj/effect/decal/cleanable/dust,
@@ -11430,6 +11493,10 @@
"bFK" = (
/obj/item/hand_labeler,
/obj/structure/table/reinforced,
+/obj/machinery/recharger{
+ pixel_x = 1;
+ pixel_y = 3
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -11638,16 +11705,7 @@
},
/area/toxins/misc_lab)
"bGQ" = (
-/obj/machinery/firealarm{
- pixel_y = 24
- },
-/obj/effect/turf_decal/loading_area{
- dir = 8
- },
-/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "brown"
- },
+/turf/simulated/openspace,
/area/quartermaster/miningstorage)
"bGZ" = (
/obj/structure/table/reinforced,
@@ -11775,9 +11833,8 @@
"bIi" = (
/obj/structure/table,
/obj/item/storage/box/donkpockets,
-/obj/machinery/firealarm{
- dir = 8;
- pixel_x = -28
+/obj/structure/sign/poster/official/random{
+ pixel_x = -32
},
/turf/simulated/floor/plasteel{
dir = 1
@@ -11809,8 +11866,11 @@
/turf/simulated/floor/plating,
/area/maintenance/maintcentral)
"bIu" = (
+/obj/effect/decal/cleanable/dirt,
/obj/structure/reagent_dispensers/fueltank,
-/turf/simulated/floor/plating,
+/turf/simulated/floor/plasteel{
+ icon_state = "yellowcorner"
+ },
/area/maintenance/apmaint)
"bIw" = (
/obj/machinery/door/airlock/public/glass{
@@ -11851,6 +11911,7 @@
/turf/simulated/floor/wood,
/area/maintenance/library)
"bIH" = (
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plasteel{
icon_state = "whitebluecorner";
tag = "icon-whitebluecorner"
@@ -12468,14 +12529,14 @@
dir = 8;
icon_state = "vault"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"bNL" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/obj/structure/disposalpipe/segment,
@@ -12519,6 +12580,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -12687,6 +12751,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/item/wrench,
/obj/effect/spawner/random_spawners/rodent,
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plasteel,
/area/maintenance/medroom)
"bPt" = (
@@ -12976,6 +13041,15 @@
},
/turf/simulated/floor/grass,
/area/maintenance/fore2)
+"bRc" = (
+/obj/structure/railing{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/quartermaster/miningstorage)
"bRg" = (
/obj/structure/sign/poster/official/nanotrasen_logo{
pixel_y = 32
@@ -13060,11 +13134,6 @@
/turf/simulated/floor/plating,
/area/hallway/secondary/exit)
"bRE" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
/obj/structure/cable{
d1 = 1;
d2 = 4;
@@ -13136,15 +13205,9 @@
/turf/simulated/floor/plating,
/area/maintenance/secpost)
"bRX" = (
-/obj/structure/extinguisher_cabinet{
- pixel_x = -5;
- pixel_y = 30
- },
-/obj/structure/table,
/obj/machinery/atmospherics/pipe/multiz,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival{
- pixel_x = 6
+/obj/structure/closet/crate{
+ icon_state = "crateopen"
},
/turf/simulated/floor/plasteel{
dir = 1;
@@ -13182,30 +13245,20 @@
},
/area/hallway/primary/central/second/east)
"bSF" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/ashtray/glass{
- pixel_x = 6
- },
-/obj/item/storage/fancy/cigarettes/cigpack_robust,
-/obj/item/lighter,
-/obj/item/radio/intercom{
- pixel_y = 24
- },
-/turf/simulated/floor/plasteel{
- dir = 9;
- icon_state = "red"
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/contraband/random{
+ pixel_y = 32
},
-/area/security/interrogation)
+/turf/simulated/floor/plating,
+/area/maintenance/asmaint4)
"bSJ" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
/obj/structure/cable{
icon_state = "1-8"
},
/obj/structure/cable{
icon_state = "1-4"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -13599,7 +13652,9 @@
name = "Officer Uploadsky";
desc = "It's Officer Uploadsky! Powered by a potato and a shot of whiskey."
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"bVz" = (
/obj/structure/cable{
@@ -13729,6 +13784,10 @@
icon_state = "neutralfull"
},
/area/hallway/primary/central/north)
+"bWi" = (
+/obj/structure/flora/ausbushes/leafybush,
+/turf/simulated/floor/grass,
+/area/maintenance/garden)
"bWj" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable{
@@ -14076,7 +14135,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"bYT" = (
/obj/machinery/camera{
@@ -14303,7 +14364,8 @@
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/caution/red,
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"caz" = (
@@ -14313,7 +14375,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"caB" = (
/obj/item/twohanded/required/kirbyplants,
/turf/simulated/floor/plasteel{
@@ -14675,7 +14737,7 @@
dir = 4;
icon_state = "darkredcorners"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"cdq" = (
/obj/machinery/disposal,
/obj/structure/disposalpipe/trunk{
@@ -14783,7 +14845,7 @@
dir = 8;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"cej" = (
/obj/structure/grille/broken,
/turf/simulated/floor/plating,
@@ -14933,12 +14995,6 @@
},
/area/atmos)
"cfF" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 8
},
@@ -14948,6 +15004,14 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whitegreen"
@@ -15036,11 +15100,13 @@
},
/area/hallway/primary/command/east)
"cgz" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
+/obj/structure/table,
+/obj/item/folder/blue{
+ pixel_x = 2;
+ pixel_y = 2
},
/turf/simulated/floor/plasteel{
- icon_state = "darkredfull"
+ icon_state = "dark"
},
/area/turret_protected/ai)
"cgA" = (
@@ -15241,7 +15307,9 @@
dir = 1;
pixel_y = -24
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"cij" = (
/obj/structure/chair/office/dark{
@@ -15437,7 +15505,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"cjO" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -16049,9 +16117,7 @@
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"con" = (
-/obj/vehicle/ridden/janicart{
- dir = 4
- },
+/obj/vehicle/ridden/janicart,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "purple"
@@ -16178,7 +16244,11 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
+"cpg" = (
+/obj/effect/spawner/random_spawners/crate_spawner,
+/turf/simulated/floor/plating,
+/area/maintenance/starboard)
"cpj" = (
/turf/simulated/floor/plasteel{
icon_state = "darkgrey"
@@ -16232,6 +16302,7 @@
dir = 4;
tag = "icon-bulb1 (EAST)"
},
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -16239,7 +16310,7 @@
"cpJ" = (
/obj/machinery/computer/security,
/turf/simulated/floor/redgrid,
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"cpN" = (
/obj/structure/table/wood,
/obj/item/flashlight/flare{
@@ -16433,15 +16504,20 @@
/turf/simulated/floor/plating,
/area/maintenance/asmaint)
"cqS" = (
-/obj/machinery/light/small{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
},
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 8
+/obj/item/radio/intercom{
+ pixel_x = 28;
+ pixel_y = 26
},
-/turf/simulated/floor/plasteel{
- icon_state = "freezerfloor"
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/light{
+ dir = 4
},
+/turf/simulated/floor/carpet/green,
/area/medical/virology)
"cqU" = (
/obj/effect/spawner/window/reinforced,
@@ -16464,7 +16540,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"crc" = (
/obj/machinery/power/apc{
@@ -16796,6 +16874,14 @@
},
/turf/simulated/floor/plating,
/area/bridge/checkpoint/south)
+"ctD" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "barber"
+ },
+/area/maintenance/medroom)
"ctE" = (
/obj/machinery/vending/cola,
/obj/effect/decal/warning_stripes/red/hollow,
@@ -16856,7 +16942,7 @@
},
/area/security/reception)
"ctX" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/obj/machinery/light{
@@ -17106,6 +17192,17 @@
icon_state = "floorgrime"
},
/area/maintenance/fsmaint)
+"cvl" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/rack,
+/obj/item/toolbox_tiles,
+/turf/simulated/floor/plating,
+/area/maintenance/tourist)
"cvr" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -17138,7 +17235,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"cvY" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -17440,7 +17537,9 @@
dir = 4
},
/obj/structure/window/reinforced,
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/twohanded/required/kirbyplants{
+ layer = 3.1
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -17520,6 +17619,12 @@
/area/crew_quarters/locker)
"czo" = (
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 2
+ },
+/obj/structure/sign/poster/official/random{
+ pixel_x = -32
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "darkred"
@@ -18026,17 +18131,6 @@
icon_state = "caution"
},
/area/atmos/control)
-"cDr" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/turf/simulated/floor/plasteel{
- dir = 1
- },
-/area/security/prison/cell_block/A)
"cDE" = (
/turf/simulated/floor/plasteel{
dir = 8;
@@ -18556,7 +18650,7 @@
/turf/simulated/floor/glass,
/area/hallway/primary/fore)
"cHa" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plasteel/dark,
@@ -18666,7 +18760,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"cHO" = (
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=A2";
@@ -18849,7 +18943,7 @@
dir = 5;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"cJZ" = (
/obj/machinery/smartfridge,
/obj/machinery/door/window/eastleft{
@@ -18863,6 +18957,11 @@
},
/turf/simulated/floor/plating,
/area/crew_quarters/kitchen)
+"cKa" = (
+/obj/structure/closet,
+/obj/effect/spawner/lootdrop/maintenance/tripple,
+/turf/simulated/floor/plating,
+/area/maintenance/asmaint4)
"cKc" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small{
@@ -18905,10 +19004,6 @@
"cKm" = (
/obj/structure/table,
/obj/item/aiModule/freeform,
-/obj/machinery/camera/motion{
- c_tag = "AI Upload Chamber";
- dir = 8
- },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -19014,7 +19109,9 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"cLn" = (
/obj/structure/disposalpipe/segment{
@@ -19118,7 +19215,6 @@
},
/area/hallway/secondary/entry)
"cMg" = (
-/obj/structure/chair/office,
/obj/machinery/light{
dir = 8
},
@@ -19129,6 +19225,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -25
},
+/obj/structure/chair/office,
/turf/simulated/floor/wood/oak,
/area/crew_quarters/courtroom)
"cMj" = (
@@ -19474,6 +19571,9 @@
c_tag = "Brig Cell 2";
dir = 10
},
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
/turf/simulated/floor/carpet/cyan,
/area/security/prison/cell_block/A)
"cOz" = (
@@ -19525,9 +19625,6 @@
dir = 1
},
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light{
- dir = 4
- },
/turf/simulated/floor/plasteel{
dir = 6;
icon_state = "darkred"
@@ -19861,10 +19958,10 @@
"cQQ" = (
/obj/structure/table,
/obj/item/stack/sheet/metal{
- amount = 10
+ amount = 30
},
/obj/item/stack/sheet/glass{
- amount = 10
+ amount = 30
},
/obj/machinery/recharger/wallcharger{
pixel_x = 5;
@@ -19897,7 +19994,17 @@
/turf/simulated/floor/wood,
/area/security/hos)
"cRf" = (
-/obj/structure/disposalpipe/junction/reversed{
+/obj/machinery/door/window/eastleft{
+ name = "Mail";
+ req_access = list(50);
+ dir = 8
+ },
+/obj/structure/window/reinforced,
+/obj/effect/decal/warning_stripes/yellow,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/simulated/floor/plasteel,
@@ -20004,9 +20111,6 @@
/obj/structure/disposalpipe/trunk{
dir = 4
},
-/obj/structure/sign/poster/official/random{
- pixel_x = -32
- },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -20120,11 +20224,6 @@
/obj/structure/sign/xenobio{
pixel_x = 32
},
-/obj/machinery/camera{
- c_tag = "Research East Hallway";
- dir = 8;
- network = list("Research","SS13")
- },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whitepurple"
@@ -20380,7 +20479,8 @@
icon_state = "2-4"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"cUZ" = (
@@ -20769,12 +20869,6 @@
tag = "icon-wood-broken"
},
/area/maintenance/casino)
-"cXR" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/turf/simulated/floor/plasteel{
- dir = 1
- },
-/area/security/prison/cell_block/A)
"cXW" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
dir = 1;
@@ -21202,6 +21296,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/structure/rack,
/obj/random/tool,
+/obj/item/clothing/head/welding,
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"dbs" = (
@@ -21284,6 +21379,10 @@
icon_state = "purplefull"
},
/area/medical/research/nhallway)
+"dcl" = (
+/obj/effect/spawner/random_spawners/blood_5,
+/turf/simulated/floor/plating,
+/area/maintenance/secpost)
"dcq" = (
/turf/simulated/wall/r_wall,
/area/toxins/xenobiology)
@@ -21306,10 +21405,6 @@
/obj/effect/spawner/lootdrop/maintenance/tripple,
/turf/simulated/floor/plating,
/area/maintenance/fore2)
-"dcD" = (
-/obj/machinery/mineral/processing_unit_console,
-/turf/simulated/wall,
-/area/quartermaster/miningstorage)
"dcH" = (
/obj/structure/railing{
dir = 4
@@ -21353,7 +21448,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"ddi" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/tiles/damageturf,
@@ -21526,12 +21621,14 @@
},
/area/crew_quarters/sleep/secondary)
"dfe" = (
+/obj/structure/railing{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "whitepurple";
- tag = "icon-whitepurple (SOUTHWEST)"
+ dir = 1;
+ icon_state = "rampbottom"
},
-/area/toxins/launch)
+/area/maintenance/casino)
"dff" = (
/obj/structure/table/reinforced,
/obj/item/folder/yellow,
@@ -21669,16 +21766,9 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"dgD" = (
-/obj/machinery/door/airlock/maintenance{
- req_access = list(12,39);
- name = "Virology maintenance"
- },
-/obj/structure/cable{
- icon_state = "1-2";
- tag = ""
+/turf/simulated/floor/plasteel{
+ icon_state = "ramptop"
},
-/obj/structure/disposalpipe/segment,
-/turf/simulated/floor/plating,
/area/maintenance/asmaint4)
"dgH" = (
/obj/machinery/embedded_controller/radio/airlock/airlock_controller{
@@ -21742,6 +21832,8 @@
pixel_x = -22
},
/obj/item/reagent_containers/hypospray/safety,
+/obj/item/storage/belt/medical,
+/obj/item/clothing/glasses/hud/health,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "whiteblue";
@@ -21929,7 +22021,7 @@
/turf/simulated/floor/wood,
/area/security/permabrig)
"dhR" = (
-/obj/structure/chair/stool/holostool,
+/obj/structure/chair/stool,
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"dhS" = (
@@ -22278,7 +22370,9 @@
/obj/effect/decal/novastation{
icon_state = "NStation3"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"dlb" = (
/obj/effect/decal/cleanable/dirt,
@@ -22363,6 +22457,12 @@
/obj/machinery/light,
/turf/simulated/floor/plasteel,
/area/toxins/storage)
+"dlr" = (
+/obj/structure/disposalpipe/trunk/multiz{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel,
+/area/quartermaster/sorting)
"dlD" = (
/turf/simulated/wall/r_wall,
/area/security/prison/cell_block/A)
@@ -22533,6 +22633,20 @@
icon_state = "redfull"
},
/area/security/checkpoint)
+"dnh" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/light_switch{
+ pixel_x = -26;
+ pixel_y = -26
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/chapel/office)
"dni" = (
/obj/structure/table/wood,
/obj/machinery/fishtank/bowl,
@@ -22541,6 +22655,7 @@
pixel_y = 3;
pixel_x = 2
},
+/obj/item/stack/wrapping_paper,
/turf/simulated/floor/wood,
/area/civilian/pet_store)
"dnj" = (
@@ -23274,7 +23389,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"dso" = (
/obj/effect/decal/cleanable/dirt,
@@ -23580,15 +23697,10 @@
/turf/simulated/floor/carpet/royalblack,
/area/hallway/secondary/exit)
"duz" = (
-/obj/effect/turf_decal/loading_area{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 8
},
-/turf/simulated/floor/plasteel{
- icon_state = "brown"
- },
+/turf/simulated/floor/plasteel,
/area/quartermaster/miningstorage)
"duC" = (
/obj/effect/decal/cleanable/dust,
@@ -23688,7 +23800,9 @@
name = "Emergency NanoMed";
pixel_y = 30
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"dvi" = (
/obj/structure/cable{
@@ -23749,6 +23863,11 @@
dir = 1
},
/area/hallway/primary/central/second/west)
+"dvO" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/caution,
+/turf/simulated/floor/plating,
+/area/maintenance/fsmaint)
"dvT" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -23965,6 +24084,10 @@
},
/turf/simulated/floor/carpet,
/area/medical/psych)
+"dxq" = (
+/obj/structure/flora/ausbushes/grassybush,
+/turf/simulated/floor/grass,
+/area/maintenance/garden)
"dxv" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -24055,6 +24178,7 @@
/area/bridge)
"dyb" = (
/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/blood/oil,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -24082,7 +24206,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"dyi" = (
/obj/effect/decal/cleanable/dirt,
@@ -24249,6 +24375,7 @@
/area/medical/cmo)
"dzH" = (
/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/wood{
icon_state = "wood-broken"
},
@@ -24479,6 +24606,14 @@
},
/turf/simulated/floor/glass/reinforced,
/area/quartermaster/qm)
+"dAX" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/chapel/massdriver)
"dAZ" = (
/obj/machinery/door/airlock/silver{
name = "Bathroom"
@@ -24708,6 +24843,11 @@
/obj/effect/decal/ants,
/turf/simulated/floor/plating,
/area/security/permabrig)
+"dCH" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random_spawners/crate_spawner,
+/turf/simulated/floor/plating,
+/area/maintenance/tourist)
"dCL" = (
/obj/structure/chair/sofa/right,
/obj/effect/decal/cleanable/dirt,
@@ -24809,7 +24949,7 @@
/obj/machinery/light{
dir = 4
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -25290,9 +25430,6 @@
},
/area/hallway/primary/central/west)
"dId" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -25545,8 +25682,11 @@
},
/area/security/brigstaff)
"dKd" = (
-/obj/machinery/vending/tool,
/obj/effect/decal/cleanable/dust,
+/obj/item/twohanded/required/kirbyplants{
+ icon_state = "plant-dead";
+ tag = "plant-dead"
+ },
/turf/simulated/floor/carpet,
/area/maintenance/casino)
"dKf" = (
@@ -25923,6 +26063,13 @@
/area/security/interrogation)
"dNe" = (
/obj/effect/decal/cleanable/dirt,
+/obj/structure/safe/floor,
+/obj/item/reagent_containers/food/condiment/cheesesauce,
+/obj/item/reagent_containers/food/condiment/garlicsauce,
+/obj/item/reagent_containers/food/condiment/diablosauce,
+/obj/item/reagent_containers/food/condiment/mushroomsauce,
+/obj/item/reagent_containers/food/condiment/herbs,
+/obj/item/reagent_containers/food/condiment/soysauce,
/turf/simulated/floor/plasteel{
icon_state = "bar"
},
@@ -26340,11 +26487,10 @@
},
/area/crew_quarters/fitness)
"dQa" = (
-/obj/machinery/light/small{
- dir = 4;
- tag = "icon-bulb1 (EAST)"
+/obj/structure/grille,
+/obj/structure/cable{
+ icon_state = "0-4"
},
-/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"dQc" = (
@@ -26553,6 +26699,7 @@
dir = 1;
pixel_y = -25
},
+/obj/item/reagent_containers/spray/pestspray,
/turf/simulated/floor/grass,
/area/maintenance/garden)
"dRw" = (
@@ -26697,7 +26844,7 @@
pixel_y = -30
},
/turf/simulated/floor/plasteel{
- dir = 1
+ icon_state = "red"
},
/area/security/lobby)
"dSt" = (
@@ -26917,6 +27064,9 @@
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plating/airless,
/area/space)
+"dUj" = (
+/turf/simulated/floor/carpet/green,
+/area/medical/virology)
"dUt" = (
/obj/effect/turf_decal/siding/wood{
dir = 4
@@ -26963,9 +27113,17 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
+"dUZ" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/plasteel{
+ icon_state = "tranquillite"
+ },
+/area/maintenance/trading)
"dVa" = (
/obj/structure/window/reinforced{
dir = 1
@@ -27156,20 +27314,24 @@
},
/area/toxins/xenobiology)
"dWV" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
/obj/structure/disposalpipe/segment{
dir = 9
},
+/obj/machinery/light_switch{
+ pixel_x = -26;
+ pixel_y = 26
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"dXb" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -27216,7 +27378,7 @@
icon_state = "whitegreen";
tag = "icon-whitegreen (EAST)"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"dXy" = (
/obj/machinery/vending/clothing/departament/security,
/obj/effect/decal/warning_stripes/red/hollow,
@@ -27319,9 +27481,8 @@
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"dYK" = (
-/obj/structure/closet/l3closet/scientist,
-/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/effect/decal/cleanable/dirt,
+/obj/item/paper_bin,
/turf/simulated/floor/plasteel,
/area/maintenance/xenozoo)
"dYN" = (
@@ -27380,6 +27541,20 @@
icon_state = "darkbluecornersalt"
},
/area/crew_quarters/fitness)
+"dYX" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/light_switch{
+ pixel_x = -26;
+ pixel_y = 26
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/chapel/office)
"dZb" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -27435,6 +27610,9 @@
name = "Труба дыхательной смеси"
},
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/small{
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "yellow"
@@ -27519,7 +27697,8 @@
dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"dZM" = (
@@ -27547,10 +27726,10 @@
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"eab" = (
-/obj/item/twohanded/required/kirbyplants,
/obj/machinery/vending/wallmed{
pixel_y = -30
},
+/obj/machinery/vending/artvend,
/turf/simulated/floor/wood/oak,
/area/civilian/barber)
"eae" = (
@@ -27747,6 +27926,18 @@
icon_state = "green"
},
/area/hallway/secondary/exit)
+"ebq" = (
+/obj/machinery/door/firedoor,
+/obj/effect/decal/warning_stripes/yellow,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1
+ },
+/area/quartermaster/lobby)
"ebr" = (
/obj/structure/window/reinforced{
dir = 8;
@@ -28090,6 +28281,14 @@
icon_state = "neutralfull"
},
/area/security/nuke_storage)
+"edG" = (
+/obj/structure/table,
+/obj/item/robot_parts/l_leg,
+/obj/item/robot_parts/r_leg,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/turret_protected/ai)
"edO" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/vomit,
@@ -28152,6 +28351,18 @@
icon_state = "vault"
},
/area/engineering/mechanic_workshop)
+"edZ" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 2
+ },
+/obj/structure/railing/corner{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel,
+/area/quartermaster/sorting)
"eeb" = (
/obj/machinery/camera{
c_tag = "Prisoners Lockers";
@@ -28321,6 +28532,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/fore)
+"efz" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/contraband/random{
+ pixel_x = 32
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/tourist)
"efA" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -28435,7 +28653,7 @@
dir = 10;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"egq" = (
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 5
@@ -28634,7 +28852,9 @@
icon_state = "4-8"
},
/obj/machinery/light,
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"ehA" = (
/obj/effect/decal/cleanable/dirt,
@@ -29094,6 +29314,18 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plating,
/area/maintenance/trading)
+"ekJ" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/fpmaint)
"ekP" = (
/obj/structure/railing{
dir = 10
@@ -29268,7 +29500,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"elH" = (
/obj/machinery/door/poddoor{
@@ -29388,6 +29622,17 @@
icon_state = "red"
},
/area/security/processing)
+"emp" = (
+/obj/machinery/light,
+/obj/machinery/vending/wallmed{
+ layer = 3.3;
+ name = "Emergency NanoMed";
+ pixel_y = -30
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1
+ },
+/area/hallway/primary/central/second/east)
"emr" = (
/obj/structure/flora/ausbushes/ppflowers,
/obj/structure/flora/ausbushes/ywflowers,
@@ -29576,10 +29821,10 @@
dir = 4
},
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "1-8"
},
/obj/structure/cable{
- icon_state = "1-8"
+ icon_state = "2-8"
},
/turf/simulated/floor/plasteel{
dir = 8;
@@ -29674,7 +29919,7 @@
pixel_x = -28
},
/turf/simulated/floor/redgrid,
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"eoV" = (
/obj/machinery/porta_turret{
dir = 8
@@ -29684,9 +29929,6 @@
},
/area/turret_protected/ai_upload)
"eoY" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
@@ -29701,6 +29943,9 @@
name = "Janitor";
sortType = 22
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -29802,6 +30047,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -30006,7 +30252,6 @@
icon_state = "4-8"
},
/obj/machinery/photocopier,
-/obj/structure/table,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "purple"
@@ -30234,6 +30479,15 @@
icon_state = "dark"
},
/area/security/securearmory)
+"etN" = (
+/obj/item/pen,
+/obj/structure/table,
+/obj/item/toy/figure/scientist,
+/obj/structure/railing{
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/xenozoo)
"etQ" = (
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
@@ -30532,7 +30786,7 @@
name = "fore bay 1";
width = 9
},
-/turf/space{
+/turf/space/openspace{
icon_state = "black"
},
/area/space)
@@ -31014,6 +31268,23 @@
},
/turf/simulated/floor/carpet,
/area/maintenance/casino)
+"ezg" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/chapel/office)
"ezi" = (
/obj/structure/table/reinforced,
/obj/item/clothing/ears/earmuffs,
@@ -31126,11 +31397,14 @@
},
/area/medical/cloning)
"ezI" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
+/obj/structure/disposalpipe/trunk{
+ dir = 4
},
-/area/security/interrogation)
+/obj/structure/disposaloutlet{
+ dir = 8
+ },
+/turf/simulated/floor/plating/airless,
+/area/space)
"ezJ" = (
/obj/structure/table,
/obj/item/storage/fancy/cigarettes/cigpack_robust{
@@ -31550,6 +31824,7 @@
/area/crew_quarters/fitness)
"eCB" = (
/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plasteel{
icon_state = "whiteblue";
tag = "icon-whitehall (WEST)"
@@ -31820,7 +32095,7 @@
},
/area/chapel/office)
"eFg" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plating,
@@ -32135,11 +32410,14 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"eHH" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -32335,13 +32613,11 @@
/turf/simulated/floor/carpet/red,
/area/security/warden)
"eJc" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
+/obj/structure/cable{
+ icon_state = "2-8"
},
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "whitepurple";
- tag = "icon-whitepurple (NORTH)"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"eJf" = (
@@ -32499,7 +32775,7 @@
dir = 5;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"eKz" = (
/turf/simulated/wall,
/area/clownoffice)
@@ -32544,11 +32820,16 @@
/turf/simulated/floor/plasteel,
/area/crew_quarters/toilet)
"eKM" = (
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_y = 28;
+ pixel_x = 28
+ },
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"eLa" = (
/obj/structure/flora/ausbushes/ppflowers,
/obj/structure/flora/ausbushes/ywflowers,
@@ -32773,16 +33054,13 @@
name = "Труба дыхательной смеси"
},
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/apc{
- dir = 4;
- name = "east bump";
- pixel_x = 26
- },
/obj/structure/cable{
icon_state = "0-8"
},
-/obj/structure/cable{
- icon_state = "0-8"
+/obj/machinery/power/apc/worn_out{
+ cell_type = 0;
+ dir = 4;
+ pixel_x = 26
},
/turf/simulated/floor/plating,
/area/maintenance/atmospherics)
@@ -33118,7 +33396,7 @@
dir = 8;
icon_state = "vault"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"eOZ" = (
/obj/machinery/power/tesla_coil,
/obj/effect/decal/warning_stripes/yellow/hollow,
@@ -33280,6 +33558,12 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/storage/eva)
+"eQx" = (
+/obj/item/reagent_containers/food/snacks/grown/tomato,
+/turf/simulated/floor/plasteel{
+ icon_state = "tranquillite"
+ },
+/area/maintenance/trading)
"eQD" = (
/obj/machinery/light/small,
/turf/simulated/floor/plasteel{
@@ -33291,7 +33575,7 @@
"eQG" = (
/obj/machinery/firealarm{
dir = 4;
- pixel_x = 28
+ pixel_x = 26
},
/turf/simulated/floor/plasteel{
dir = 6;
@@ -33351,17 +33635,11 @@
/turf/simulated/floor/wood,
/area/security/permabrig)
"eRj" = (
-/obj/machinery/shower{
- dir = 8;
- tag = "icon-shower (WEST)"
- },
-/obj/item/radio/intercom{
- pixel_x = 32;
- pixel_y = 4
- },
-/turf/simulated/floor/plasteel{
- icon_state = "freezerfloor"
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
},
+/obj/item/twohanded/required/kirbyplants,
+/turf/simulated/floor/carpet/green,
/area/medical/virology)
"eRo" = (
/obj/machinery/door/airlock/maintenance{
@@ -33443,19 +33721,12 @@
},
/area/hallway/primary/command/west)
"eSe" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/radio/intercom{
- pixel_x = 28;
- pixel_y = -2
- },
-/obj/machinery/light{
- dir = 4
- },
-/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "darkred"
+/obj/structure/sign/poster/contraband/random{
+ pixel_y = -32
},
-/area/security/interrogation)
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating,
+/area/maintenance/asmaint4)
"eSn" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -33475,9 +33746,6 @@
pixel_y = 24;
req_access = list(66)
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/door/poddoor{
density = 0;
icon_state = "open";
@@ -33515,7 +33783,7 @@
dir = 9;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"eSV" = (
/obj/machinery/gateway{
dir = 1
@@ -34255,12 +34523,19 @@
"eYK" = (
/obj/structure/grille/broken,
/obj/effect/decal/cleanable/dirt,
-/obj/item/shard,
+/obj/item/soap/nanotrasen,
/obj/item/shard{
icon_state = "medium";
pixel_x = 1;
pixel_y = -9
},
+/obj/item/shard,
+/obj/structure/curtain/open/shower/security{
+ alpha = 255;
+ name = "backstage";
+ anchored = 1;
+ pixel_y = 0
+ },
/turf/simulated/floor/plating,
/area/maintenance/backstage)
"eYL" = (
@@ -34411,6 +34686,15 @@
name = "Officer Rightsky";
desc = "It's Officer Rightsky! Powered by a potato and a shot of whiskey."
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -34532,7 +34816,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/hologram/holopad,
/obj/effect/decal/warning_stripes/green/hollow,
/obj/structure/disposalpipe/junction,
/turf/simulated/floor/plasteel{
@@ -34605,8 +34888,8 @@
d2 = 4;
icon_state = "0-4"
},
-/obj/structure/cable{
- icon_state = "2-4"
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/turf/simulated/floor/plating,
/area/medical/virology/lab)
@@ -34657,7 +34940,7 @@
icon_state = "whitegreen";
tag = "icon-whitegreen (EAST)"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"fbw" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -34724,9 +35007,6 @@
/turf/simulated/floor/carpet/cyan,
/area/security/prison/cell_block/A)
"fbU" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/cable{
icon_state = "1-4"
},
@@ -35044,7 +35324,8 @@
pixel_x = 28
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"fee" = (
@@ -35057,6 +35338,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plasteel,
/area/maintenance/apmaint)
"fev" = (
@@ -35101,7 +35383,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"feN" = (
/obj/machinery/computer/arcade/orion_trail,
@@ -35304,7 +35586,7 @@
dir = 6;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"fgy" = (
/turf/simulated/floor/plasteel{
dir = 2;
@@ -35393,14 +35675,12 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"fhc" = (
-/obj/machinery/camera{
- c_tag = "Virology Bedroom 1";
- dir = 8;
- network = list("Medical","SS13")
- },
-/obj/item/twohanded/required/kirbyplants,
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
},
/turf/simulated/floor/carpet/green,
/area/medical/virology)
@@ -35493,8 +35773,7 @@
c_tag = "Mining Lobby West"
},
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "brown"
+ dir = 1
},
/area/quartermaster/lobby)
"fhz" = (
@@ -35537,6 +35816,16 @@
},
/turf/simulated/floor/carpet/black,
/area/crew_quarters/bar/atrium)
+"fhS" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/chair/stool,
+/turf/simulated/floor/plating,
+/area/maintenance/tourist)
"fhT" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
name = "standard air scrubber";
@@ -35662,9 +35951,28 @@
/turf/simulated/floor/shuttle,
/area/shuttle/arrival/station)
"fjf" = (
-/obj/structure/dresser,
-/turf/simulated/floor/carpet/green,
-/area/medical/virology)
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 8;
+ id_tag = "Virology1";
+ name = "Virology Shutters"
+ },
+/obj/machinery/door/poddoor{
+ density = 0;
+ icon_state = "open";
+ id_tag = "Biohazard_medi";
+ name = "Quarantine Lockdown";
+ opacity = 0
+ },
+/obj/structure/cable{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/effect/spawner/window/reinforced,
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"fjk" = (
/obj/structure/disposalpipe/junction/reversed{
dir = 2
@@ -35905,7 +36213,10 @@
/area/turret_protected/aisat_interior/secondary)
"fkL" = (
/obj/machinery/vending/boozeomat,
-/turf/simulated/floor/carpet/royalblack,
+/obj/effect/turf_decal/siding/wood{
+ dir = 4
+ },
+/turf/simulated/floor/wood/dark,
/area/ntrep)
"fkO" = (
/obj/structure/railing/corner{
@@ -35943,9 +36254,6 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -35956,6 +36264,9 @@
/obj/effect/turf_decal/siding/white{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/simulated/floor/glass,
/area/crew_quarters/locker)
"flc" = (
@@ -36529,6 +36840,18 @@
icon_state = "whitebluefull"
},
/area/medical/surgery/south)
+"fps" = (
+/obj/structure/window/reinforced,
+/obj/item/flag/nt,
+/obj/structure/sign/tajarplaque{
+ desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. Особая благодарность за помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Daeberdir. Слава НаноТрейзен!";
+ name = "Благодарственное Письмо от Главного Инженера станции Нова";
+ pixel_y = 32
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/bridge)
"fpt" = (
/obj/item/radio/intercom{
pixel_x = 28
@@ -36694,10 +37017,9 @@
/turf/simulated/floor/plating,
/area/maintenance/gambling_den)
"fqA" = (
-/obj/machinery/door/airlock/maintenance,
-/obj/structure/barricade/wooden,
+/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
-/area/maintenance/apmaint)
+/area/maintenance/atmospherics)
"fqI" = (
/obj/item/radio/intercom{
pixel_x = -28
@@ -36842,12 +37164,14 @@
/area/maintenance/banya)
"frL" = (
/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
-/obj/effect/spawner/window/reinforced,
-/turf/simulated/floor/plating,
-/area/medical/virology)
+/obj/machinery/computer/pandemic,
+/obj/effect/decal/warning_stripes/northeast,
+/turf/simulated/floor/plasteel,
+/area/medical/virology/lab)
"frO" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -36982,16 +37306,13 @@
"fsy" = (
/obj/effect/decal/cleanable/vomit,
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/power/apc{
- name = "south bump";
- pixel_y = -26
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
/obj/structure/cable{
+ d1 = 4;
d2 = 8;
- icon_state = "0-8"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
+ icon_state = "4-8"
},
/turf/simulated/floor/plating,
/area/maintenance/disposal)
@@ -37261,6 +37582,16 @@
/obj/effect/landmark/start/chaplain,
/turf/simulated/floor/carpet,
/area/chapel/office)
+"fve" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "neutralfull"
+ },
+/area/hallway/primary/central/ne)
"fvl" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -37412,6 +37743,13 @@
/obj/machinery/light{
dir = 1
},
+/obj/structure/extinguisher_cabinet{
+ name = "west extinguisher cabinet";
+ pixel_x = -27
+ },
+/obj/machinery/alarm{
+ pixel_y = 24
+ },
/turf/simulated/floor/plasteel,
/area/toxins/launch)
"fwg" = (
@@ -37764,7 +38102,7 @@
},
/area/medical/chemistry)
"fyx" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/effect/landmark/start/civilian,
/obj/item/radio/intercom{
dir = 8;
@@ -37841,7 +38179,7 @@
/area/medical/medbay2)
"fyU" = (
/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/obj/effect/landmark/start/scientist,
@@ -37887,6 +38225,7 @@
},
/area/medical/genetics)
"fzn" = (
+/obj/structure/flora/ausbushes/ppflowers,
/obj/item/storage/bag/plants/portaseeder,
/turf/simulated/floor/grass,
/area/maintenance/garden)
@@ -37944,10 +38283,14 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/disposalpipe/segment,
+/obj/machinery/light_switch{
+ pixel_x = -26;
+ pixel_y = -26
+ },
/turf/simulated/floor/plasteel{
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"fzE" = (
/obj/machinery/door_control{
id = "xeno5";
@@ -38186,7 +38529,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -38194,6 +38537,15 @@
icon_state = "neutral"
},
/area/bridge/checkpoint/south)
+"fBr" = (
+/obj/structure/railing/corner{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "browncorner"
+ },
+/area/quartermaster/miningstorage)
"fBt" = (
/obj/structure/window/plasmareinforced{
dir = 4
@@ -38216,6 +38568,10 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/storage/secure)
+"fBy" = (
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/plating,
+/area/maintenance/secpost)
"fBE" = (
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
@@ -38251,15 +38607,26 @@
icon_state = "green"
},
/area/hallway/secondary/exit)
+"fCh" = (
+/obj/structure/disposalpipe/segment,
+/obj/machinery/vending/wallmed{
+ name = "Emergency NanoMed";
+ pixel_x = 25
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "neutral"
+ },
+/area/crew_quarters/serviceyard)
"fCk" = (
/turf/simulated/floor/shuttle,
/area/shuttle/arrival/station)
"fCq" = (
-/obj/structure/chair/office,
/obj/effect/turf_decal/siding/wood{
dir = 4;
do_not_delete_me = 1
},
+/obj/structure/chair/office,
/turf/simulated/floor/wood/oak,
/area/crew_quarters/courtroom)
"fCw" = (
@@ -38437,6 +38804,11 @@
/area/medical/medrest)
"fDM" = (
/obj/machinery/light,
+/obj/machinery/vending/wallmed{
+ layer = 3.3;
+ name = "Emergency NanoMed";
+ pixel_y = -30
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -38489,7 +38861,7 @@
dir = 4;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"fDY" = (
/turf/simulated/wall,
/area/crew_quarters/kitchen)
@@ -38765,6 +39137,7 @@
/area/hallway/secondary/entry/lounge)
"fFA" = (
/obj/structure/table/reinforced,
+/obj/item/storage/firstaid/adv,
/obj/item/reagent_containers/spray/cleaner/medical,
/turf/simulated/floor/plasteel{
icon_state = "whitebluefull"
@@ -39213,7 +39586,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/structure/disposalpipe/junction/reversed{
+/obj/structure/disposalpipe/segment{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -39375,19 +39748,11 @@
/turf/simulated/floor/grass,
/area/hydroponics)
"fKM" = (
-/obj/effect/spawner/window/reinforced/polarized{
- id = "vir2"
- },
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 1;
- id_tag = "Virology1";
- name = "Virology Shutters"
- },
-/obj/structure/cable{
- icon_state = "0-2"
+/obj/machinery/atmospherics/unary/tank/air{
+ dir = 8
},
/turf/simulated/floor/plating,
-/area/medical/virology)
+/area/medical/virology/lab)
"fKP" = (
/obj/effect/decal/cleanable/flour,
/obj/machinery/light/small{
@@ -39513,12 +39878,12 @@
/turf/simulated/floor/plasteel,
/area/engineering/controlroom)
"fLX" = (
-/obj/machinery/camera{
- c_tag = "Mining Furnace";
- dir = 5
+/obj/machinery/firealarm{
+ dir = 8;
+ name = "west fire alarm";
+ pixel_x = -24
},
-/obj/structure/disposalpipe/segment,
-/obj/machinery/light/small{
+/obj/machinery/light{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -39610,6 +39975,7 @@
dir = 4
},
/obj/machinery/hologram/holopad,
+/obj/effect/decal/warning_stripes/blue/hollow,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -39685,7 +40051,9 @@
},
/area/security/permabrig)
"fNi" = (
-/obj/structure/statue/unknown,
+/obj/structure/statue/unknown{
+ max_integrity = 500
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -39723,8 +40091,9 @@
pixel_x = 25
},
/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "whitepurple"
+ dir = 6;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (SOUTHEAST)"
},
/area/toxins/mixing)
"fNy" = (
@@ -39921,11 +40290,10 @@
},
/area/medical/cryo)
"fON" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-dead";
- tag = "plant-dead"
- },
/obj/effect/decal/cleanable/dust,
+/obj/structure/sign/poster/contraband/revolver{
+ pixel_y = 32
+ },
/turf/simulated/floor/carpet,
/area/maintenance/casino)
"fOQ" = (
@@ -39976,6 +40344,7 @@
/obj/structure/sign/poster/contraband/tools{
pixel_y = 32
},
+/obj/item/clothing/gloves/color/yellow,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -40027,6 +40396,17 @@
},
/turf/simulated/floor/plating,
/area/teleporter)
+"fPV" = (
+/obj/machinery/door/airlock/highsecurity{
+ heat_proof = 1;
+ id_tag = "smbolts";
+ locked = 1;
+ name = "Supermatter Chamber";
+ req_access = list(10,24)
+ },
+/obj/structure/fans/tiny,
+/turf/simulated/floor/engine,
+/area/engineering/supermatter)
"fQa" = (
/obj/machinery/atmospherics/pipe/simple/visible,
/obj/effect/decal/warning_stripes/east,
@@ -40079,12 +40459,12 @@
},
/area/maintenance/medroom)
"fQn" = (
-/obj/structure/chair/office{
- dir = 4
- },
/obj/machinery/light{
dir = 8
},
+/obj/structure/chair{
+ dir = 4
+ },
/turf/simulated/floor/wood,
/area/crew_quarters/serviceyard)
"fQo" = (
@@ -40154,6 +40534,7 @@
icon_state = "1-8"
},
/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/vomit,
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"fQN" = (
@@ -40185,6 +40566,11 @@
},
/turf/simulated/floor/carpet/red,
/area/lawoffice)
+"fQX" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/vomit,
+/turf/simulated/floor/plating,
+/area/maintenance/secpost)
"fQY" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/ammo_casing{
@@ -40563,6 +40949,14 @@
/obj/item/twohanded/required/kirbyplants,
/turf/simulated/floor/carpet/royalblue,
/area/crew_quarters/captain/bedroom)
+"fTL" = (
+/obj/machinery/ai_slipper{
+ uses = 10
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/turret_protected/ai)
"fTO" = (
/obj/machinery/atmospherics/trinary/mixer{
dir = 8
@@ -40730,6 +41124,11 @@
id = "AI";
pixel_y = -27
},
+/obj/machinery/camera/motion{
+ c_tag = "AI Upload Chamber";
+ dir = 1;
+ pixel_x = 10
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -40771,6 +41170,7 @@
/turf/simulated/floor/plasteel,
/area/assembly/showroom)
"fVo" = (
+/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/wood{
icon_state = "wood-broken5";
tag = "icon-wood-broken5"
@@ -40894,7 +41294,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"fWi" = (
/obj/machinery/light_switch{
@@ -41336,6 +41738,9 @@
"fZj" = (
/obj/effect/turf_decal/siding/wood/corner,
/obj/effect/decal/cleanable/dust,
+/obj/structure/railing/corner{
+ dir = 8
+ },
/turf/simulated/floor/carpet,
/area/maintenance/casino)
"fZk" = (
@@ -41381,6 +41786,11 @@
},
/turf/simulated/floor/wood/dark,
/area/ntrep)
+"fZu" = (
+/obj/structure/flora/ausbushes/ywflowers,
+/obj/structure/flora/ausbushes/ppflowers,
+/turf/simulated/floor/grass,
+/area/maintenance/garden)
"fZz" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/blood/drip{
@@ -41511,7 +41921,6 @@
/turf/simulated/floor/wood/fancy/cherry,
/area/magistrateoffice)
"gaj" = (
-/obj/structure/chair/office,
/obj/machinery/light{
dir = 4
},
@@ -41519,6 +41928,7 @@
dir = 4;
do_not_delete_me = 1
},
+/obj/structure/chair/office,
/turf/simulated/floor/wood/oak,
/area/crew_quarters/courtroom)
"gay" = (
@@ -41718,7 +42128,7 @@
},
/area/assembly/chargebay)
"gcz" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/obj/structure/sign/poster/contraband/commando{
@@ -41757,7 +42167,6 @@
},
/area/hallway/secondary/exit/maint)
"gcH" = (
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
@@ -41767,6 +42176,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -41892,8 +42304,7 @@
c_tag = "Mining Lobby East"
},
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "brown"
+ dir = 1
},
/area/quartermaster/lobby)
"gdP" = (
@@ -42238,7 +42649,7 @@
dir = 6;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"gfP" = (
/turf/simulated/openspace,
/area/quartermaster/delivery)
@@ -42263,6 +42674,20 @@
icon_state = "bar"
},
/area/maintenance/backstage)
+"ggd" = (
+/obj/effect/decal/warning_stripes/west,
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "neutral"
+ },
+/area/toxins/mixing)
+"ggm" = (
+/obj/structure/sign/chinese,
+/turf/simulated/wall,
+/area/crew_quarters/mrchangs)
"ggn" = (
/turf/simulated/floor/plasteel{
dir = 1
@@ -42498,9 +42923,6 @@
/turf/simulated/floor/carpet/orange,
/area/maintenance/casino)
"gig" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/structure/cable{
icon_state = "2-4"
},
@@ -42510,6 +42932,11 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "red"
@@ -42571,7 +42998,7 @@
},
/area/hallway/primary/fore)
"giL" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 1
},
/turf/simulated/floor/wood,
@@ -42668,6 +43095,16 @@
icon_state = "barber"
},
/area/maintenance/medroom)
+"gjt" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/vomit,
+/turf/simulated/floor/plating,
+/area/maintenance/tourist)
"gjx" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
@@ -42698,7 +43135,7 @@
dir = 9;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"gjB" = (
/obj/structure/table/reinforced,
/obj/item/taperecorder,
@@ -42950,6 +43387,12 @@
},
/turf/simulated/floor/glass,
/area/crew_quarters/chief)
+"gkR" = (
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "darkredcorners"
+ },
+/area/tcommsat/server)
"gkT" = (
/obj/effect/turf_decal/siding/wood{
dir = 8;
@@ -43058,16 +43501,11 @@
},
/area/toxins/mixing)
"gmd" = (
-/obj/machinery/conveyor{
- id = "mining_internal"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/machinery/light/small{
+/obj/machinery/light{
dir = 4
},
-/turf/simulated/floor/plating,
+/obj/effect/turf_decal/loading_area,
+/turf/simulated/floor/plasteel,
/area/quartermaster/miningstorage)
"gmg" = (
/obj/machinery/vending/cola,
@@ -43249,11 +43687,13 @@
tag_airpump = "ai_pump";
tag_chamber_sensor = "ai_sensor";
tag_exterior_door = "ai_outer";
- tag_interior_door = "ai_inner"
+ tag_interior_door = "ai_inner";
+ pixel_y = -3
},
/obj/machinery/airlock_sensor{
id_tag = "ai_sensor";
- pixel_x = -28
+ pixel_x = 28;
+ pixel_y = 4
},
/turf/simulated/floor/plasteel{
dir = 8;
@@ -43525,7 +43965,8 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"gph" = (
@@ -43568,9 +44009,6 @@
/turf/simulated/floor/plasteel,
/area/security/permabrig)
"gpy" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/obj/structure/cable{
@@ -43580,6 +44018,11 @@
/obj/effect/turf_decal/siding/white{
dir = 1
},
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/glass,
/area/crew_quarters/locker)
"gpI" = (
@@ -43652,7 +44095,7 @@
/obj/structure/railing/corner{
dir = 4
},
-/obj/structure/chair/office,
+/obj/structure/chair,
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "whitehall"
@@ -43741,7 +44184,9 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"gqV" = (
/obj/machinery/gateway{
@@ -43873,7 +44318,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"grY" = (
/obj/structure/sign/directions/cargo{
dir = 4
@@ -43928,23 +44373,22 @@
/obj/machinery/embedded_controller/radio/airlock/airlock_controller{
id_tag = "robotics_solar_airlock";
layer = 3.3;
- pixel_y = -25;
+ pixel_y = -30;
req_access = list(13);
tag_airpump = "robotics_solar_pump";
tag_chamber_sensor = "robotics_solar_sensor";
tag_exterior_door = "robotics_solar_outer";
tag_interior_door = "robotics_solar_inner"
},
-/obj/machinery/airlock_sensor{
- id_tag = "robotics_solar_sensor";
- layer = 3.3;
- pixel_x = 12;
- pixel_y = -25
- },
/obj/effect/decal/warning_stripes/yellow,
/obj/machinery/light/small{
dir = 1
},
+/obj/machinery/airlock_sensor{
+ id_tag = "robotics_solar_sensor";
+ layer = 3.3;
+ pixel_y = -23
+ },
/turf/simulated/floor/plating,
/area/maintenance/portsolar)
"gsB" = (
@@ -44365,11 +44809,11 @@
/turf/simulated/floor/plating,
/area/security/customs)
"gvO" = (
-/obj/structure/sign/nosmoking_2{
- pixel_y = 32
- },
/obj/structure/dispenser,
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/machinery/firealarm{
+ pixel_y = 27
+ },
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whitepurple";
@@ -44566,29 +45010,29 @@
/area/crew_quarters/chief)
"gxr" = (
/obj/effect/decal/warning_stripes/northwest,
-/obj/machinery/light{
- dir = 8
- },
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "darkred"
},
/area/security/securearmory)
"gxv" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
+/obj/machinery/camera{
+ c_tag = "Virology Bedroom 1";
+ dir = 5;
+ network = list("Medical","SS13");
+ pixel_y = 9
},
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
},
/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
+ icon_state = "2-4"
},
-/obj/item/radio/intercom{
- pixel_x = 28;
- pixel_y = 26
+/obj/machinery/vending/wallmed{
+ pixel_x = -26
},
/turf/simulated/floor/carpet/green,
/area/medical/virology)
@@ -44642,7 +45086,12 @@
/area/maintenance/fore)
"gxY" = (
/obj/structure/window/reinforced,
-/obj/structure/statue/gold/hop{
+/obj/structure/sign/goldenplaque{
+ pixel_y = 32;
+ desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Zhojaba. Слава НаноТрейзен!";
+ name = "Благодарственное Письмо от Главного Инженера станции Нова"
+ },
+/obj/structure/statue/gold/hos{
pixel_y = 7
},
/turf/simulated/floor/plasteel{
@@ -44857,12 +45306,10 @@
},
/area/maintenance/trading)
"gAb" = (
-/obj/structure/disposaloutlet{
- dir = 8
- },
-/obj/structure/disposalpipe/trunk,
-/turf/simulated/floor/plating/airless,
-/area/space)
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/remains/human,
+/turf/simulated/floor/plating,
+/area/maintenance/asmaint4)
"gAe" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -44928,6 +45375,20 @@
icon_state = "tranquillite"
},
/area/crew_quarters/kitchen)
+"gAS" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/item/storage/fancy/cigarettes/cigpack_robust,
+/turf/simulated/floor/plating,
+/area/maintenance/tourist)
"gAY" = (
/obj/structure/spacepoddoor{
dir = 4;
@@ -44951,24 +45412,14 @@
},
/area/crew_quarters/theatre)
"gBh" = (
-/obj/structure/closet/crate/freezer,
-/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis,
-/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis,
-/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis,
-/obj/machinery/status_display{
- pixel_x = -32
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/obj/machinery/light{
- dir = 1;
- in_use = 1
- },
-/turf/simulated/floor/plasteel{
- icon_state = "white"
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/item/wrench,
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 6
},
-/area/medical/virology)
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"gBD" = (
/obj/structure/table/wood,
/obj/item/kitchen/utensil/fork,
@@ -45165,9 +45616,6 @@
icon_state = "1-2"
},
/obj/effect/turf_decal/caution/stand_clear,
-/obj/structure/cable{
- icon_state = "2-4"
- },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -45178,7 +45626,7 @@
dir = 6;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"gDC" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -45269,10 +45717,6 @@
req_access = list(1);
color = "red"
},
-/obj/item/clothing/suit/armor/riot,
-/obj/item/shield/riot,
-/obj/item/clothing/gloves/combat,
-/obj/item/clothing/head/helmet/riot,
/obj/structure/window/reinforced{
color = "red"
},
@@ -45284,6 +45728,10 @@
color = "red";
dir = 4
},
+/obj/item/clothing/head/helmet/riot,
+/obj/item/clothing/head/helmet/riot,
+/obj/item/clothing/head/helmet/riot,
+/obj/item/clothing/head/helmet/riot,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -45317,14 +45765,7 @@
/area/bridge/meeting_room)
"gEI" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light/small{
- dir = 4;
- tag = "icon-bulb1 (EAST)"
- },
-/obj/structure/sign/poster/contraband/random{
- pixel_y = 32
- },
-/obj/effect/spawner/random_spawners/cobweb_right_rare,
+/obj/structure/reagent_dispensers/fueltank,
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"gEO" = (
@@ -45345,7 +45786,7 @@
icon_state = "1-4"
},
/turf/simulated/floor/plasteel{
- icon_state = "red"
+ dir = 1
},
/area/security/seceqstorage)
"gFc" = (
@@ -45382,7 +45823,7 @@
},
/obj/structure/cable,
/turf/simulated/floor/plasteel{
- dir = 1
+ icon_state = "red"
},
/area/security/lobby)
"gFE" = (
@@ -45476,11 +45917,12 @@
dir = 8;
pixel_x = 25
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "whitegreen"
@@ -45580,7 +46022,9 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"gGH" = (
/obj/effect/decal/warning_stripes/yellow/hollow,
@@ -46193,6 +46637,7 @@
dir = 9
},
/turf/simulated/floor/plasteel{
+ dir = 6;
icon_state = "darkred"
},
/area/turret_protected/ai)
@@ -46304,27 +46749,8 @@
/turf/simulated/floor/plating,
/area/medical/virology/lab)
"gLO" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/button/windowtint{
- id = "vir2";
- pixel_x = -24;
- pixel_y = 24
- },
-/obj/machinery/light_switch{
- pixel_x = -32;
- pixel_y = 24
- },
-/turf/simulated/floor/carpet/green,
+/obj/structure/sign/biohazard,
+/turf/simulated/wall/r_wall,
/area/medical/virology)
"gLP" = (
/obj/machinery/vending/wallmed{
@@ -46352,13 +46778,16 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry/commercial)
"gMD" = (
-/obj/machinery/conveyor{
- id = "mining_internal"
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 26
},
-/obj/effect/turf_decal/stripes/line{
- dir = 8
+/obj/structure/closet/crate{
+ icon_state = "crateopen"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "brown"
},
-/turf/simulated/floor/plating,
/area/quartermaster/miningstorage)
"gMK" = (
/obj/machinery/door/airlock/command{
@@ -46483,6 +46912,20 @@
icon_state = "neutral"
},
/area/crew_quarters/serviceyard)
+"gND" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1
+ },
+/area/quartermaster/lobby)
"gNJ" = (
/turf/simulated/floor/plasteel{
dir = 6;
@@ -46566,7 +47009,8 @@
/area/bridge/meeting_room)
"gOD" = (
/obj/structure/stairs{
- dir = 1
+ dir = 1;
+ layer = 2
},
/obj/structure/railing{
dir = 8
@@ -46729,7 +47173,8 @@
/area/engineering/mechanic_workshop/hangar)
"gPX" = (
/obj/structure/stairs{
- dir = 8
+ dir = 8;
+ layer = 2
},
/turf/simulated/floor/plasteel,
/area/engineering/controlroom)
@@ -47072,6 +47517,9 @@
/area/medical/research/nhallway)
"gSZ" = (
/obj/item/twohanded/required/kirbyplants,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
dir = 6;
icon_state = "red"
@@ -47097,7 +47545,16 @@
},
/area/crew_quarters/fitness)
"gTr" = (
-/obj/structure/reagent_dispensers/fueltank,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/small{
+ dir = 4
+ },
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"gTu" = (
@@ -47119,12 +47576,6 @@
/area/maintenance/fpmaint)
"gTN" = (
/obj/item/twohanded/required/kirbyplants,
-/obj/structure/curtain/open/shower/security{
- alpha = 255;
- name = "backstage";
- anchored = 1;
- pixel_y = 32
- },
/obj/effect/decal/cleanable/glass,
/turf/simulated/floor/carpet/red,
/area/maintenance/backstage)
@@ -47194,7 +47645,9 @@
color = "#dd1010"
},
/obj/structure/cable,
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"gUA" = (
/obj/effect/turf_decal/stripes/gold{
@@ -47305,7 +47758,7 @@
/area/bridge)
"gVD" = (
/obj/effect/decal/cleanable/dirt,
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plating,
@@ -47850,16 +48303,15 @@
/turf/simulated/floor/plating/airless,
/area/space)
"gYE" = (
-/obj/machinery/ai_slipper{
- uses = 10
- },
/obj/machinery/turretid/lethal{
check_synth = 1;
name = "AI Chamber Turret Control";
pixel_y = 28;
req_access = list(75)
},
-/turf/simulated/floor/greengrid,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
/area/turret_protected/ai)
"gYJ" = (
/obj/structure/cable/yellow{
@@ -48133,7 +48585,8 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"hah" = (
@@ -48266,7 +48719,8 @@
icon_state = "0-8"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"hbl" = (
@@ -48295,7 +48749,11 @@
/turf/simulated/floor/glass/reinforced,
/area/hallway/secondary/exit)
"hbx" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/railing/corner{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only,
+/obj/effect/turf_decal/stripes/line,
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"hbz" = (
@@ -48566,7 +49024,12 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
+/obj/machinery/computer/security/telescreen/entertainment{
+ pixel_y = -30
+ },
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"hdt" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -48703,7 +49166,7 @@
},
/obj/machinery/airlock_sensor{
id_tag = "aisole_sensor";
- pixel_y = -28
+ pixel_y = 35
},
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
frequency = 1379;
@@ -48742,7 +49205,7 @@
icon_state = "2-8"
},
/turf/simulated/floor/plasteel,
-/area/engineering/engine)
+/area/engineering/break_room)
"hes" = (
/turf/simulated/floor/plasteel{
icon_state = "whitebluefull"
@@ -48823,6 +49286,9 @@
/area/security/brig)
"hfj" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/obj/structure/chair/sofa/pew/left{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
icon_state = "chapel"
},
@@ -49145,12 +49611,9 @@
/area/maintenance/apmaint)
"hho" = (
/obj/effect/decal/warning_stripes/southwest,
-/obj/machinery/light{
- dir = 8
- },
/obj/machinery/firealarm{
dir = 4;
- pixel_x = -28
+ pixel_x = -26
},
/turf/simulated/floor/plasteel{
dir = 10;
@@ -49183,6 +49646,12 @@
icon_state = "neutral"
},
/area/crew_quarters/serviceyard)
+"hhB" = (
+/obj/structure/sign/directions/floor/alt{
+ dir = 6
+ },
+/turf/simulated/wall,
+/area/crew_quarters/theatre)
"hhF" = (
/obj/structure/chair/sofa/pew/left{
dir = 1
@@ -49210,21 +49679,14 @@
},
/area/quartermaster/office)
"hic" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/wood/fancy/light,
/area/crew_quarters/serviceyard)
"him" = (
-/obj/machinery/atmospherics/unary/vent_scrubber{
- name = "standard air scrubber";
- on = 1;
- scrub_N2O = 1;
- scrub_Toxins = 1;
- dir = 8
- },
/turf/simulated/floor/plasteel{
- icon_state = "white"
+ icon_state = "whitepurple"
},
/area/toxins/mixing)
"hio" = (
@@ -49246,7 +49708,9 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/twohanded/required/kirbyplants{
+ layer = 3.1
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -49368,7 +49832,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"hjv" = (
/obj/effect/decal/warning_stripes/north,
/turf/simulated/floor/plasteel{
@@ -49595,7 +50059,8 @@
pixel_x = 24
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"hlb" = (
@@ -49619,17 +50084,17 @@
/turf/simulated/floor/plasteel/white,
/area/teleporter)
"hlh" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable{
- d1 = 1;
- d2 = 4;
- icon_state = "1-4"
+/obj/structure/table/reinforced,
+/obj/item/flashlight/lamp{
+ layer = 4;
+ pixel_x = 7;
+ pixel_y = 12
},
-/obj/structure/disposalpipe/segment{
- dir = 9
+/obj/item/radio/intercom/department/security,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
},
-/turf/simulated/floor/plating,
-/area/maintenance/asmaint4)
+/area/security/interrogation)
"hlo" = (
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plasteel{
@@ -49781,22 +50246,16 @@
},
/area/crew_quarters/theatre)
"hmj" = (
-/obj/structure/window/reinforced{
- color = "red"
- },
-/obj/machinery/flasher/portable,
-/obj/effect/decal/warning_stripes/red/hollow,
-/obj/machinery/light,
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
- },
-/area/security/securearmory)
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random_spawners/blood_5,
+/turf/simulated/floor/plating,
+/area/maintenance/tourist)
"hmk" = (
/obj/effect/decal/warning_stripes/northeastsouth,
-/obj/vehicle/ridden/ambulance{
+/obj/machinery/light{
dir = 4
},
-/obj/machinery/light{
+/obj/vehicle/ridden/ambulance{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -50027,7 +50486,7 @@
},
/obj/machinery/airlock_sensor{
id_tag = "engineering_west_sensor";
- pixel_y = 7;
+ pixel_y = 3;
pixel_x = 25
},
/turf/simulated/floor/plasteel{
@@ -50046,10 +50505,10 @@
},
/area/medical/virology/lab)
"how" = (
-/obj/effect/spawner/window/reinforced,
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/structure/railing/corner{
+ dir = 1
},
+/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/asmaint4)
"hoC" = (
@@ -50183,13 +50642,13 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 1
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=A17";
location = "A16"
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -50328,7 +50787,9 @@
codes_txt = "patrol;next_patrol=C3";
location = "C2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"hrn" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -50559,6 +51020,9 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
+/obj/structure/chair/sofa/pew/right{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "chapel"
@@ -50602,6 +51066,7 @@
pixel_y = -32
},
/obj/structure/grille/broken,
+/obj/effect/spawner/random_spawners/blood_5,
/turf/simulated/floor/carpet/royalblack,
/area/maintenance/fsmaint2)
"htF" = (
@@ -50680,7 +51145,7 @@
dir = 1
},
/turf/simulated/floor/plasteel{
- dir = 9;
+ dir = 1;
icon_state = "brown"
},
/area/quartermaster/lobby)
@@ -50774,10 +51239,12 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"huy" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
@@ -50825,7 +51292,7 @@
dir = 5;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"hva" = (
/obj/item/chair/wood/wings,
/obj/effect/decal/remains/human,
@@ -50843,8 +51310,7 @@
},
/area/crew_quarters/locker)
"hvj" = (
-/obj/structure/table,
-/obj/item/soap,
+/obj/structure/closet/wardrobe/xenos,
/turf/simulated/floor/plasteel{
icon_state = "barber"
},
@@ -50941,7 +51407,8 @@
/area/toxins/rdoffice)
"hwg" = (
/obj/structure/stairs{
- dir = 8
+ dir = 8;
+ layer = 2
},
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
@@ -50983,12 +51450,12 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "red"
@@ -51094,7 +51561,7 @@
dir = 9;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"hxl" = (
/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/carpet/orange,
@@ -51148,6 +51615,11 @@
icon_state = "neutral"
},
/area/hallway/spacebridge/comcar)
+"hxM" = (
+/obj/structure/closet,
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/simulated/floor/plating/airless,
+/area/toxins/test_area)
"hya" = (
/turf/simulated/floor/plasteel{
dir = 9;
@@ -51224,12 +51696,15 @@
/turf/simulated/floor/carpet/cyan,
/area/maintenance/livingcomplex)
"hzd" = (
-/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/machinery/light{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
- dir = 6;
+ dir = 4;
icon_state = "brown"
},
/area/quartermaster/miningstorage)
@@ -51470,11 +51945,18 @@
/obj/structure/chair{
dir = 1
},
+/obj/item/radio/intercom{
+ name = "south station intercom (General)";
+ pixel_x = -28
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
+"hBC" = (
+/turf/simulated/wall/r_wall,
+/area/tcommsat/server)
"hBG" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -51511,12 +51993,8 @@
/turf/simulated/floor/carpet,
/area/maintenance/library)
"hBY" = (
-/obj/machinery/atmospherics/unary/vent_scrubber{
- dir = 1;
- name = "standard air scrubber";
- on = 1;
- scrub_N2O = 1;
- scrub_Toxins = 1
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
},
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
@@ -51700,7 +52178,7 @@
/turf/space/openspace,
/area/solar/starboard)
"hDy" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 1
},
/turf/simulated/floor/wood/fancy/light,
@@ -51807,6 +52285,10 @@
/obj/structure/table,
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/item/storage/firstaid/regular,
+/obj/item/storage/firstaid/regular{
+ pixel_x = 2;
+ pixel_y = 2
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -51816,7 +52298,9 @@
dir = 1;
color = "#444444"
},
-/turf/simulated/floor/glass,
+/turf/simulated/floor/glass{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"hEG" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
@@ -51887,6 +52371,15 @@
icon_state = "darkbluealt"
},
/area/hallway/primary/command/east)
+"hFd" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/shard{
+ icon_state = "medium";
+ pixel_x = 13;
+ pixel_y = 8
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/tourist)
"hFe" = (
/obj/structure/table/reinforced,
/obj/item/storage/belt/utility,
@@ -52145,7 +52638,7 @@
/area/crew_quarters/captain/bedroom)
"hHY" = (
/obj/machinery/door/airlock/mining{
- name = "Mining Dock";
+ name = "Mining Storage";
req_access = list(31)
},
/obj/structure/cable{
@@ -52303,10 +52796,6 @@
/turf/simulated/floor/carpet/royalblack,
/area/hallway/secondary/exit)
"hJq" = (
-/obj/machinery/door/airlock/mining/glass{
- name = "Processing Area";
- req_access = list(48)
- },
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -52314,10 +52803,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/structure/disposalpipe/segment{
- dir = 4
+/turf/simulated/floor/plasteel{
+ icon_state = "brownfull"
},
-/turf/simulated/floor/plasteel,
/area/quartermaster/miningstorage)
"hJs" = (
/obj/structure/cable{
@@ -52368,6 +52856,7 @@
req_access = list(3,4);
dir = 2
},
+/obj/effect/turf_decal/siding/wood,
/turf/simulated/floor/wood,
/area/security/detectives_office)
"hJH" = (
@@ -52453,6 +52942,14 @@
"hKK" = (
/turf/simulated/floor/carpet/orange,
/area/maintenance/casino)
+"hKO" = (
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "ramptop"
+ },
+/area/maintenance/asmaint4)
"hKS" = (
/obj/structure/cable{
d1 = 4;
@@ -52655,9 +53152,6 @@
/turf/simulated/floor/wood,
/area/security/detectives_office)
"hNs" = (
-/obj/machinery/light_switch{
- pixel_x = -26
- },
/obj/machinery/light{
dir = 8
},
@@ -53044,7 +53538,7 @@
pixel_x = 28
},
/turf/simulated/floor/redgrid,
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"hQr" = (
/obj/structure/cable,
/obj/machinery/power/apc{
@@ -53300,10 +53794,13 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"hSz" = (
/turf/simulated/floor/plasteel{
icon_state = "darkbluealt"
@@ -53441,6 +53938,10 @@
/obj/structure/cable{
icon_state = "2-4"
},
+/obj/structure/sign/directions/floor/alt{
+ dir = 8;
+ pixel_y = 32
+ },
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"hTx" = (
@@ -53586,7 +54087,8 @@
/area/quartermaster/qm)
"hUk" = (
/obj/structure/stairs{
- dir = 1
+ dir = 1;
+ layer = 2
},
/obj/structure/railing{
dir = 8
@@ -54180,7 +54682,8 @@
/area/toxins/xenobiology)
"hYO" = (
/obj/structure/stairs{
- dir = 1
+ dir = 1;
+ layer = 2
},
/turf/simulated/floor/plasteel{
dir = 5;
@@ -54222,6 +54725,13 @@
/obj/structure/reagent_dispensers/fueltank,
/turf/simulated/floor/plating,
/area/maintenance/fore)
+"hZu" = (
+/obj/effect/decal/cleanable/dust,
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/plasteel{
+ icon_state = "tranquillite"
+ },
+/area/maintenance/trading)
"hZx" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -54377,6 +54887,7 @@
"iaB" = (
/obj/effect/decal/cleanable/dirt,
/mob/living/simple_animal/moth,
+/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/wood,
/area/maintenance/livingcomplex)
"iaP" = (
@@ -54823,7 +55334,7 @@
dir = 9;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"idu" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 8
@@ -54868,7 +55379,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"idL" = (
/obj/item/radio/intercom{
dir = 4;
@@ -55089,11 +55600,14 @@
},
/area/security/prisonlockers)
"ifd" = (
+/obj/machinery/camera{
+ c_tag = "Central Ring Hallway South 6";
+ dir = 10
+ },
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "browncorner"
+ icon_state = "neutral"
},
-/area/quartermaster/lobby)
+/area/hallway/primary/central/sw)
"ifo" = (
/obj/structure/flora/ausbushes/fullgrass,
/obj/structure/flora/ausbushes/fernybush,
@@ -55166,7 +55680,7 @@
/obj/structure/railing{
dir = 10
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/obj/effect/landmark/start/cargo_technician,
@@ -55374,7 +55888,7 @@
dir = 6;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"ihk" = (
/turf/simulated/floor/plasteel{
dir = 1;
@@ -55386,9 +55900,6 @@
/turf/simulated/floor/plating,
/area/maintenance/secpost)
"ihz" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
@@ -55398,6 +55909,9 @@
/obj/structure/cable{
icon_state = "2-4"
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -55467,6 +55981,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = 25
},
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "brown"
@@ -55657,6 +56172,9 @@
/obj/effect/decal/warning_stripes/southeast,
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry/additional)
+"ijt" = (
+/turf/simulated/wall,
+/area/chapel/massdriver)
"ijx" = (
/obj/effect/decal/warning_stripes/yellow,
/obj/machinery/door/window/eastright{
@@ -56094,7 +56612,7 @@
name = "Emergency NanoMed";
pixel_x = 26
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/obj/machinery/camera{
@@ -56698,10 +57216,10 @@
/turf/simulated/floor/plating,
/area/maintenance/cafeteria)
"iqw" = (
-/obj/structure/rack,
/obj/effect/decal/cleanable/cobweb2,
-/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet,
+/obj/effect/spawner/lootdrop/maintenance/tripple,
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"iqC" = (
@@ -56889,6 +57407,14 @@
icon_state = "neutral"
},
/area/hallway/primary/central/second/south)
+"irY" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/chapel/office)
"irZ" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable{
@@ -56937,7 +57463,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"isz" = (
/turf/simulated/wall,
/area/crew_quarters/serviceyard)
@@ -57053,6 +57579,9 @@
/obj/machinery/light/small{
dir = 1
},
+/obj/structure/sign/poster/official/obey{
+ pixel_y = 32
+ },
/turf/simulated/floor/plasteel,
/area/security/permabrig)
"itq" = (
@@ -57182,6 +57711,16 @@
icon_state = "neutral"
},
/area/hallway/primary/central/se)
+"itY" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1
+ },
+/area/quartermaster/lobby)
"iub" = (
/obj/structure/table,
/obj/random/plushie,
@@ -57293,6 +57832,21 @@
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plasteel,
/area/engineering/controlroom)
+"iuS" = (
+/obj/structure/railing{
+ dir = 4
+ },
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "red"
+ },
+/area/hallway/primary/central/second/west)
"iuU" = (
/obj/effect/decal/warning_stripes/southwest,
/obj/machinery/r_n_d/protolathe{
@@ -57320,6 +57874,14 @@
icon_state = "bar"
},
/area/clownoffice)
+"ivf" = (
+/obj/effect/spawner/random_spawners/grille_50,
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/fpmaint)
"ivi" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -57571,11 +58133,14 @@
/obj/structure/chair{
dir = 1
},
+/obj/structure/sign/poster/official/nanotrasen_logo{
+ pixel_x = 32
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"ixj" = (
/obj/structure/chair/office/dark,
/obj/structure/cable{
@@ -57617,7 +58182,8 @@
dir = 5
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"ixt" = (
@@ -57767,7 +58333,8 @@
icon_state = "2-8"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"iyK" = (
@@ -57843,6 +58410,9 @@
d2 = 8;
icon_state = "4-8"
},
+/obj/structure/disposalpipe/segment{
+ dir = 10
+ },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -57891,13 +58461,6 @@
},
/turf/space,
/area/solar/starboardaux)
-"izA" = (
-/obj/structure/chair/office{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/plating,
-/area/maintenance/fsmaint3)
"izB" = (
/obj/item/radio/intercom{
pixel_y = -30
@@ -58006,11 +58569,13 @@
/turf/simulated/floor/plating,
/area/blueshield)
"izO" = (
-/obj/machinery/atmospherics/unary/vent_pump/on,
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"izT" = (
/obj/structure/rack,
/mob/living/simple_animal/bot/floorbot{
@@ -58100,7 +58665,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
- icon_state = "purplefull"
+ icon_state = "white"
},
/area/toxins/mixing)
"iAw" = (
@@ -58142,13 +58707,11 @@
},
/area/engineering/engine)
"iAN" = (
-/obj/structure/closet/crate{
- icon_state = "crateopen"
+/obj/structure/railing/corner{
+ dir = 1
},
-/obj/effect/turf_decal/bot,
-/obj/structure/disposalpipe/trunk/multiz/down,
/turf/simulated/floor/plasteel{
- dir = 8;
+ dir = 9;
icon_state = "brown"
},
/area/quartermaster/miningstorage)
@@ -58185,7 +58748,9 @@
},
/area/toxins/lab)
"iBe" = (
-/obj/structure/stairs,
+/obj/structure/stairs{
+ layer = 2
+ },
/turf/simulated/floor/plasteel,
/area/crew_quarters/serviceyard)
"iBi" = (
@@ -58613,6 +59178,7 @@
do_not_delete_me = 1
},
/obj/effect/decal/cleanable/dust,
+/obj/item/stack/spacecash/c20,
/turf/simulated/floor/carpet/green,
/area/maintenance/casino)
"iFv" = (
@@ -58784,14 +59350,6 @@
name = "AI Requests Console";
pixel_y = 32
},
-/obj/machinery/camera{
- c_tag = "Minisat AI Core Centre";
- network = list("Minisat","SS13");
- dir = 10
- },
-/obj/structure/cable{
- icon_state = "0-8"
- },
/turf/simulated/floor/greengrid,
/area/turret_protected/ai)
"iHg" = (
@@ -58998,10 +59556,12 @@
},
/area/maintenance/secpost)
"iIT" = (
-/obj/effect/decal/warning_stripes/southeast,
+/obj/structure/railing/corner{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
dir = 1;
- icon_state = "neutralcorner"
+ icon_state = "whitepurplecorner"
},
/area/toxins/mixing)
"iIU" = (
@@ -59041,7 +59601,7 @@
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"iJl" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/trading)
@@ -59057,9 +59617,7 @@
"iJH" = (
/obj/structure/cable,
/obj/machinery/power/apc{
- cell_type = 5000;
- name = "south bump Important Area";
- pixel_y = -24
+ pixel_y = -26
},
/turf/simulated/floor/redgrid,
/area/aisat/aihallway)
@@ -59083,11 +59641,14 @@
pixel_x = 2;
pixel_y = 4
},
+/obj/structure/sign/fire{
+ pixel_y = 32
+ },
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"iJR" = (
/obj/effect/turf_decal/siding/wood{
dir = 1
@@ -59198,7 +59759,6 @@
},
/area/toxins/xenobiology)
"iKJ" = (
-/obj/machinery/light,
/obj/structure/disposalpipe/segment{
dir = 5
},
@@ -59227,7 +59787,7 @@
},
/area/security/lobby)
"iLd" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 1
},
/obj/machinery/atmospherics/unary/vent_pump/on{
@@ -59424,6 +59984,7 @@
/area/storage/secure)
"iMC" = (
/obj/effect/spawner/random_spawners/cobweb_right_rare,
+/obj/structure/reagent_dispensers/watertank,
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"iMF" = (
@@ -59563,7 +60124,7 @@
dir = 4
},
/turf/simulated/floor/plasteel,
-/area/engineering/engine)
+/area/engineering/break_room)
"iNO" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -59626,6 +60187,11 @@
icon_state = "darkbluealt"
},
/area/hallway/primary/command/east)
+"iOm" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/stock_parts/cell/high,
+/turf/simulated/floor/plating,
+/area/maintenance/fpmaint)
"iOp" = (
/obj/machinery/optable,
/obj/machinery/shower{
@@ -59697,7 +60263,9 @@
/area/quartermaster/qm)
"iOP" = (
/obj/structure/window/reinforced,
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/twohanded/required/kirbyplants{
+ layer = 3.1
+ },
/obj/machinery/light{
dir = 1;
in_use = 1
@@ -59707,7 +60275,8 @@
},
/area/bridge)
"iOW" = (
-/obj/structure/ore_box,
+/obj/structure/table,
+/obj/item/coin/iron,
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "brown"
@@ -59847,7 +60416,7 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/machinery/atmospherics/unary/vent_pump/on,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/carpet/red,
/area/security/prison/cell_block/A)
"iQp" = (
@@ -60162,12 +60731,13 @@
},
/area/hallway/primary/command/east)
"iTG" = (
-/obj/structure/stairs{
- dir = 1
- },
/obj/structure/railing{
dir = 4
},
+/obj/structure/stairs{
+ dir = 1;
+ layer = 2
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -60486,7 +61056,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"iWt" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
name = "standard air scrubber";
@@ -60525,6 +61095,9 @@
name = "east station intercom (General)";
pixel_x = 28
},
+/obj/structure/railing/corner,
+/obj/machinery/door/firedoor/border_only,
+/obj/effect/turf_decal/stripes/line,
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"iWH" = (
@@ -60554,7 +61127,9 @@
color = "#444444";
dir = 4
},
-/turf/simulated/floor/glass,
+/turf/simulated/floor/glass{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"iWT" = (
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
@@ -60750,7 +61325,8 @@
dir = 8
},
/obj/structure/stairs{
- dir = 1
+ dir = 1;
+ layer = 2
},
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
@@ -60912,10 +61488,10 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"iZx" = (
-/obj/machinery/conveyor{
- id = "packageSort2"
+/obj/structure/disposalpipe/segment,
+/obj/structure/railing{
+ dir = 4
},
-/obj/structure/plasticflaps,
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"iZA" = (
@@ -61136,14 +61712,14 @@
/area/medical/cmostore)
"jbh" = (
/obj/machinery/door/morgue{
- name = "Chapel Morgue";
+ name = "Crematorium";
req_access = list(22)
},
/obj/machinery/door/firedoor,
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"jbj" = (
/obj/structure/chair/comfy/brown{
dir = 8
@@ -61276,11 +61852,12 @@
/turf/simulated/floor/engine,
/area/toxins/explab)
"jcp" = (
-/obj/machinery/atmospherics/unary/tank/air{
- dir = 1
+/obj/structure/stairs{
+ dir = 1;
+ layer = 2
},
/turf/simulated/floor/plating,
-/area/medical/virology/lab)
+/area/maintenance/asmaint4)
"jcr" = (
/obj/effect/decal/warning_stripes/south,
/obj/machinery/atmospherics/pipe/simple/insulated,
@@ -61310,11 +61887,6 @@
},
/turf/simulated/floor/wood,
/area/medical/cmo)
-"jcD" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/girder,
-/turf/simulated/floor/plating,
-/area/maintenance/fsmaint2)
"jcK" = (
/obj/structure/railing/corner{
dir = 4
@@ -61451,7 +62023,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"jdJ" = (
/obj/structure/table/wood,
@@ -61591,6 +62163,7 @@
dir = 10
},
/obj/machinery/hologram/holopad,
+/obj/effect/decal/warning_stripes/blue/hollow,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -61738,6 +62311,20 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
+"jfx" = (
+/obj/structure/curtain/open/shower/security{
+ alpha = 255;
+ icon_state = "closed";
+ name = "backstage";
+ opacity = 1;
+ anchored = 1
+ },
+/obj/structure/table/reinforced,
+/obj/item/reagent_containers/food/snacks/grown/tomato,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/maintenance/trading)
"jfA" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/lootdrop/maintenance/tripple,
@@ -61764,7 +62351,17 @@
/area/hallway/secondary/exit)
"jfO" = (
/obj/structure/table/reinforced,
-/obj/item/lock_buster,
+/obj/item/flashlight/sectaclight{
+ pixel_y = 2;
+ pixel_x = -2
+ },
+/obj/item/flashlight/sectaclight{
+ pixel_y = 0
+ },
+/obj/item/flashlight/sectaclight{
+ pixel_y = -2;
+ pixel_x = 2
+ },
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "dark"
@@ -61829,7 +62426,8 @@
/area/toxins/launch)
"jgv" = (
/obj/structure/disposaloutlet{
- dir = 2
+ dir = 2;
+ eject_range = 1
},
/obj/structure/disposalpipe/trunk{
dir = 4
@@ -61942,6 +62540,8 @@
pixel_x = -3;
pixel_y = 6
},
+/obj/item/storage/belt/bandolier,
+/obj/item/storage/belt/bandolier,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -62011,7 +62611,7 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/door/airlock/mining/glass{
+/obj/machinery/door/airlock/mining{
name = "Cargo Bay";
req_access = list(31)
},
@@ -62142,6 +62742,10 @@
/obj/machinery/light{
dir = 8
},
+/obj/machinery/vending/wallmed{
+ pixel_y = 0;
+ pixel_x = -26
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "red"
@@ -62236,13 +62840,13 @@
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"jiU" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/turf/simulated/floor/plating,
/area/maintenance/brig)
"jiV" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -62374,13 +62978,10 @@
},
/area/aisat/aihallway)
"jjR" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/turf/simulated/floor/plasteel{
- dir = 1
- },
-/area/security/interrogation)
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/railing/corner,
+/turf/simulated/floor/plasteel,
+/area/maintenance/xenozoo)
"jjS" = (
/obj/machinery/light{
dir = 8
@@ -62390,7 +62991,8 @@
pixel_x = -28
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"jjV" = (
@@ -62403,7 +63005,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"jjX" = (
/obj/structure/window/reinforced{
dir = 4
@@ -62692,7 +63294,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- dir = 1
+ icon_state = "red"
},
/area/security/lobby)
"jmH" = (
@@ -62777,8 +63379,8 @@
/area/hallway/primary/central/ne)
"jmY" = (
/turf/simulated/floor/plasteel{
- icon_state = "redfull";
- tag = "icon-redfull (NORTHWEST)"
+ dir = 8;
+ icon_state = "redcorner"
},
/area/security/seceqstorage)
"jna" = (
@@ -62878,17 +63480,14 @@
/turf/simulated/floor/plating,
/area/bridge/checkpoint/south)
"jnG" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/structure/disposalpipe/segment,
-/turf/simulated/floor/plasteel{
- dir = 1
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance,
+/obj/machinery/light/small,
+/obj/structure/sign/poster/contraband/random{
+ pixel_y = -32
},
-/area/security/interrogation)
+/turf/simulated/floor/plating,
+/area/maintenance/asmaint4)
"jnH" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -63188,12 +63787,8 @@
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"jqb" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable{
- icon_state = "1-2";
- tag = ""
- },
-/obj/structure/disposalpipe/segment,
+/obj/structure/closet,
+/obj/effect/spawner/lootdrop/maintenance/double,
/turf/simulated/floor/plating,
/area/maintenance/asmaint4)
"jqf" = (
@@ -63202,6 +63797,8 @@
/obj/item/clothing/glasses/hud/health,
/obj/item/clothing/glasses/regular,
/obj/item/reagent_containers/hypospray/safety,
+/obj/item/storage/belt/medical,
+/obj/item/clothing/glasses/hud/health,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whiteblue"
@@ -63288,6 +63885,9 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/simulated/floor/plating,
/area/maintenance/disposal)
"jqP" = (
@@ -63327,6 +63927,15 @@
icon_state = "dark"
},
/area/security/permahallway)
+"jqW" = (
+/obj/structure/closet/crate{
+ icon_state = "crateopen"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "brown"
+ },
+/area/quartermaster/miningstorage)
"jqY" = (
/obj/structure/closet/cardboard,
/obj/effect/decal/cleanable/dirt,
@@ -63497,8 +64106,8 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel{
- icon_state = "neutralfull"
+/turf/simulated/floor/engine{
+ slowdown = -0.3
},
/area/hallway/primary/central)
"jsj" = (
@@ -63612,7 +64221,7 @@
},
/area/maintenance/gambling_den)
"jtk" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/turf/simulated/floor/plasteel/dark,
@@ -63768,9 +64377,17 @@
},
/area/hallway/primary/central/second/east)
"juQ" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "browncorner"
+ dir = 1
},
/area/quartermaster/lobby)
"juU" = (
@@ -63815,6 +64432,14 @@
icon_state = "vault"
},
/area/chapel/office)
+"jvf" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/effect/turf_decal/box,
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "brown"
+ },
+/area/quartermaster/miningstorage)
"jvj" = (
/obj/structure/railing,
/obj/machinery/atmospherics/unary/vent_pump/on{
@@ -63863,7 +64488,8 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"jvC" = (
@@ -63873,6 +64499,9 @@
layer = 5;
pixel_y = -5
},
+/obj/item/radio/intercom{
+ pixel_x = -28
+ },
/turf/simulated/floor/plasteel/freezer,
/area/ntrep)
"jvL" = (
@@ -64207,6 +64836,8 @@
/obj/item/clothing/glasses/hud/health,
/obj/item/clothing/glasses/regular,
/obj/item/reagent_containers/hypospray/safety,
+/obj/item/storage/belt/medical,
+/obj/item/clothing/glasses/hud/health,
/turf/simulated/floor/plasteel{
dir = 6;
icon_state = "whiteblue";
@@ -64313,7 +64944,9 @@
req_access = list(48)
},
/obj/machinery/door/firedoor,
-/turf/simulated/floor/plasteel,
+/turf/simulated/floor/plasteel{
+ icon_state = "brownfull"
+ },
/area/quartermaster/miningstorage)
"jzv" = (
/obj/structure/table/wood,
@@ -64431,7 +65064,7 @@
},
/area/medical/cmostore)
"jAm" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 1
},
/obj/machinery/atmospherics/unary/vent_pump/on{
@@ -64532,7 +65165,7 @@
},
/area/quartermaster/sorting)
"jAM" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -64646,7 +65279,9 @@
/obj/structure/cable{
icon_state = "0-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"jBM" = (
/turf/simulated/floor/engine/co2,
@@ -64855,8 +65490,11 @@
},
/area/janitor)
"jDV" = (
-/obj/structure/sign/poster/random{
- pixel_x = 32
+/obj/structure/stairs{
+ layer = 2
+ },
+/obj/structure/railing{
+ dir = 4
},
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
@@ -64907,7 +65545,7 @@
name = "gamma dock";
width = 7
},
-/turf/space{
+/turf/space/openspace{
icon_state = "black"
},
/area/space)
@@ -65000,7 +65638,8 @@
"jEX" = (
/obj/machinery/floodlight,
/turf/simulated/floor/plasteel{
- dir = 5
+ dir = 4;
+ icon_state = "blue"
},
/area/hydroponics)
"jFa" = (
@@ -65066,7 +65705,7 @@
dir = 4;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"jFz" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
name = "standard air scrubber";
@@ -65142,13 +65781,15 @@
},
/area/hallway/primary/central/second/west)
"jFO" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
+/obj/machinery/camera{
+ c_tag = "Second Floor Central Ring South Hallway 2";
+ dir = 2
+ },
/turf/simulated/floor/plasteel{
- dir = 6;
- icon_state = "brown"
+ dir = 1;
+ icon_state = "red"
},
-/area/hallway/primary/central/second/east)
+/area/hallway/primary/central/second/west)
"jFP" = (
/obj/machinery/alarm{
pixel_y = 22
@@ -65168,6 +65809,16 @@
/area/medical/cmo)
"jFR" = (
/obj/machinery/atmospherics/pipe/simple/hidden/universal,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/ore_box,
+/obj/effect/turf_decal/bot,
+/obj/item/radio/intercom{
+ dir = 4;
+ pixel_x = 32;
+ pixel_y = 4
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "brown"
@@ -65386,7 +66037,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"jHy" = (
/turf/simulated/wall/r_wall,
/area/security/warden)
@@ -65567,18 +66218,20 @@
},
/area/atmos/control)
"jIQ" = (
-/obj/structure/cable{
- icon_state = "1-8"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/cable{
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"jIT" = (
/obj/structure/chair/office/dark{
dir = 8
@@ -65709,7 +66362,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -66002,7 +66655,9 @@
icon_state = "4-8"
},
/obj/machinery/light,
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"jLA" = (
/obj/machinery/atmospherics/pipe/simple/visible/purple{
@@ -66062,6 +66717,8 @@
},
/obj/item/clothing/accessory/holster,
/obj/item/gun/projectile/revolver/mateba,
+/obj/item/ammo_box/tox46x30mm,
+/obj/item/ammo_box/inc46x30mm,
/turf/simulated/floor/carpet/red,
/area/security/hos)
"jLH" = (
@@ -66190,17 +66847,20 @@
/turf/simulated/floor/bluegrid,
/area/assembly/showroom)
"jMH" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
- dir = 4
+/obj/machinery/light,
+/obj/structure/table/glass,
+/obj/machinery/reagentgrinder{
+ pixel_x = -1;
+ pixel_y = 9
},
-/obj/structure/cable/multiz{
- color = "#dd1010"
+/obj/item/stack/sheet/mineral/plasma{
+ amount = 5
},
-/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
},
-/turf/simulated/floor/plating,
+/obj/effect/decal/warning_stripes/north,
+/turf/simulated/floor/plasteel,
/area/medical/virology/lab)
"jMK" = (
/obj/effect/spawner/window/reinforced/plasma,
@@ -66425,7 +67085,10 @@
pixel_y = -33;
req_access = list(73)
},
-/turf/simulated/floor/carpet/royalblack,
+/obj/structure/disposalpipe/trunk/multiz/down{
+ dir = 2
+ },
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"jOs" = (
/obj/structure/cable{
@@ -66446,17 +67109,11 @@
/turf/simulated/floor/wood,
/area/maintenance/casino)
"jOz" = (
-/obj/structure/chair{
- dir = 8
- },
-/obj/machinery/alarm{
- pixel_y = 24
- },
-/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "red"
- },
-/area/security/interrogation)
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet/emcloset,
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/turf/simulated/floor/plating,
+/area/maintenance/xenozoo)
"jOA" = (
/turf/simulated/floor/plasteel{
icon_state = "redfull"
@@ -66493,11 +67150,10 @@
/area/maintenance/tourist)
"jPf" = (
/obj/structure/table/wood,
-/obj/item/paper_bin,
-/obj/item/pen,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/effect/mapping_helpers/table_flip,
/turf/simulated/floor/wood,
/area/maintenance/library)
"jPg" = (
@@ -66547,7 +67203,9 @@
/area/medical/research/nhallway)
"jPA" = (
/obj/machinery/hologram/holopad,
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"jPE" = (
/obj/structure/table,
@@ -66726,9 +67384,6 @@
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"jRe" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 1
},
@@ -66741,6 +67396,9 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -67019,7 +67677,8 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"jTE" = (
@@ -67051,7 +67710,6 @@
"jTS" = (
/obj/structure/table/reinforced,
/obj/item/storage/firstaid/o2,
-/obj/item/reagent_containers/spray/cleaner/medical,
/obj/structure/extinguisher_cabinet{
name = "west extinguisher cabinet";
pixel_x = -27
@@ -67061,6 +67719,7 @@
dir = 4;
network = list("SS13","Medical")
},
+/obj/item/reagent_containers/spray/cleaner/medical,
/turf/simulated/floor/plasteel{
icon_state = "whitebluefull"
},
@@ -67204,6 +67863,10 @@
},
/turf/simulated/floor/plating,
/area/maintenance/asmaint)
+"jVi" = (
+/obj/structure/flora/ausbushes/lavendergrass,
+/turf/simulated/floor/grass,
+/area/maintenance/garden)
"jVl" = (
/obj/machinery/conveyor_switch/oneway{
id = "QMLoad";
@@ -67359,7 +68022,8 @@
/area/atmos)
"jWz" = (
/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/remains/mouse,
+/obj/structure/closet/firecloset,
+/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
/area/maintenance/xenozoo)
"jWA" = (
@@ -67394,6 +68058,24 @@
icon_state = "dark"
},
/area/quartermaster/qm)
+"jWG" = (
+/obj/structure/dresser,
+/obj/machinery/button/windowtint{
+ id = "vir2";
+ pixel_x = 24;
+ pixel_y = 24
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24;
+ pixel_x = 32
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/carpet/green,
+/area/medical/virology)
"jWH" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/white/line,
@@ -67637,7 +68319,6 @@
pixel_x = 26;
pixel_y = -24
},
-/obj/item/twohanded/required/kirbyplants,
/obj/structure/extinguisher_cabinet{
pixel_y = -30
},
@@ -67653,8 +68334,9 @@
network = list("Research Outpost");
dir = 1
},
+/obj/item/twohanded/required/kirbyplants,
/turf/simulated/floor/plasteel{
- icon_state = "whitepurple"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"jYX" = (
@@ -67722,7 +68404,8 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"kac" = (
@@ -67976,12 +68659,6 @@
icon_state = "darkred"
},
/area/security/permahallway)
-"kbY" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/wood/fancy/black,
-/obj/item/deck/cards,
-/turf/simulated/floor/carpet/royalblack,
-/area/maintenance/fsmaint2)
"kbZ" = (
/turf/simulated/floor/plasteel,
/area/quartermaster/miningdock)
@@ -68002,13 +68679,11 @@
/area/maintenance/apmaint)
"kch" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 4
- },
/obj/structure/cable{
icon_state = "1-2"
},
/obj/structure/disposalpipe/segment,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
icon_state = "red"
},
@@ -68019,6 +68694,11 @@
icon_state = "redcorner"
},
/area/security/prison/cell_block/A)
+"kct" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/plating,
+/area/maintenance/gambling_den)
"kcG" = (
/obj/machinery/firealarm{
dir = 1;
@@ -68048,6 +68728,7 @@
/area/engineering/break_room)
"kcN" = (
/obj/effect/decal/remains/mouse,
+/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/wood,
/area/maintenance/livingcomplex)
"kcQ" = (
@@ -68152,7 +68833,7 @@
/obj/machinery/cell_charger,
/obj/item/stock_parts/cell/high,
/turf/simulated/floor/redgrid,
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"kdy" = (
/obj/machinery/computer/secure_data{
dir = 8
@@ -68560,6 +69241,9 @@
},
/obj/structure/bed,
/obj/machinery/light,
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -68744,7 +69428,7 @@
},
/area/crew_quarters/toilet4)
"kiq" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/turf/simulated/floor/plasteel,
/area/hallway/spacebridge/comcar)
"kiz" = (
@@ -68898,8 +69582,14 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
+"kjI" = (
+/obj/structure/flora/ausbushes/ywflowers,
+/turf/simulated/floor/grass,
+/area/maintenance/garden)
"kjL" = (
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
@@ -69744,6 +70434,9 @@
},
/turf/simulated/openspace,
/area/quartermaster/delivery)
+"kqy" = (
+/turf/simulated/wall,
+/area/chapel/morgue)
"kqz" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable{
@@ -70327,7 +71020,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"kvy" = (
/obj/effect/decal/cleanable/ash,
/turf/simulated/floor/plasteel,
@@ -70348,7 +71041,8 @@
dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"kvG" = (
@@ -70492,8 +71186,7 @@
/obj/machinery/shower{
dir = 1;
layer = 5;
- pixel_y = -5;
- on = 1
+ pixel_y = -5
},
/obj/structure/curtain/open/shower,
/obj/item/soap,
@@ -70505,8 +71198,12 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 1
+ },
+/obj/machinery/light_switch{
+ pixel_y = -24;
+ pixel_x = -24
},
/turf/simulated/floor/plasteel{
dir = 8;
@@ -70651,10 +71348,6 @@
/area/engineering/mechanic_workshop/hangar)
"kxH" = (
/obj/machinery/light,
-/obj/machinery/camera{
- c_tag = "Second Floor Central Ring South Hallway 2";
- dir = 1
- },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -70724,7 +71417,9 @@
/obj/structure/cable{
icon_state = "1-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"kyh" = (
/obj/structure/cable{
@@ -70939,10 +71634,10 @@
/area/maintenance/fsmaint)
"kAy" = (
/obj/effect/decal/warning_stripes/east,
-/obj/machinery/flasher/portable,
/obj/structure/extinguisher_cabinet{
pixel_x = -26
},
+/obj/machinery/flasher/portable,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -71084,10 +71779,6 @@
/turf/simulated/floor/plasteel,
/area/engineering/gravitygenerator)
"kBz" = (
-/obj/machinery/alarm{
- dir = 4;
- pixel_x = -24
- },
/obj/item/flag/sec,
/turf/simulated/floor/plasteel{
dir = 1
@@ -71104,6 +71795,7 @@
pixel_x = 4;
pixel_y = 4
},
+/obj/item/storage/box/lights/mixed,
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"kBH" = (
@@ -71213,6 +71905,12 @@
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
/area/security/securehallway)
+"kCy" = (
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkredcorners"
+ },
+/area/tcommsat/server)
"kCC" = (
/obj/machinery/door/poddoor/shutters/preopen{
dir = 2;
@@ -71341,11 +72039,20 @@
},
/area/hallway/primary/fore)
"kDD" = (
-/obj/structure/ore_box,
-/obj/effect/turf_decal/bot,
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/mining{
+ name = "Mining Deep Storage";
+ req_access = list(31)
+ },
+/obj/machinery/door/poddoor{
+ density = 0;
+ icon_state = "open";
+ id_tag = "Brig_lockdown";
+ name = "Cargo Lockdown";
+ opacity = 0
+ },
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "brown"
+ icon_state = "brownfull"
},
/area/quartermaster/miningstorage)
"kDG" = (
@@ -71538,13 +72245,16 @@
/turf/simulated/floor/wood,
/area/crew_quarters/theatre)
"kFL" = (
-/obj/structure/closet/crate,
-/obj/machinery/alarm{
- pixel_y = 23
+/obj/structure/railing{
+ dir = 8
},
-/obj/effect/turf_decal/bot,
+/obj/structure/table,
+/obj/item/kitchen/knife/combat/survival{
+ pixel_x = 6
+ },
+/obj/item/kitchen/knife/combat/survival,
/turf/simulated/floor/plasteel{
- dir = 1;
+ dir = 9;
icon_state = "brown"
},
/area/quartermaster/miningstorage)
@@ -71594,6 +72304,7 @@
c_tag = "Brig Cell 5";
dir = 6
},
+/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -72015,7 +72726,8 @@
},
/obj/machinery/hologram/holopad,
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"kJc" = (
@@ -72264,12 +72976,13 @@
},
/area/hallway/primary/central/second/south)
"kLA" = (
-/obj/structure/stairs{
- dir = 1
- },
/obj/structure/railing{
dir = 4
},
+/obj/structure/stairs{
+ dir = 1;
+ layer = 2
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -72287,7 +73000,9 @@
/obj/structure/sign/poster/official/random{
pixel_y = 32
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"kLQ" = (
/obj/structure/cable{
@@ -72521,7 +73236,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"kNN" = (
/obj/effect/decal/warning_stripes/west,
@@ -72602,6 +73319,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -72671,7 +73389,7 @@
color = "#996633"
},
/obj/item/reagent_containers/food/snacks/meatsteak,
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"kPe" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction,
@@ -72731,6 +73449,24 @@
icon_state = "bluecorner"
},
/area/hallway/primary/fore)
+"kPp" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ dir = 1
+ },
+/area/security/lobby)
"kPq" = (
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=A37";
@@ -72756,11 +73492,7 @@
},
/area/hallway/primary/central/east)
"kPs" = (
-/obj/structure/closet/emcloset,
-/obj/effect/decal/warning_stripes/yellow/hollow,
-/obj/effect/decal/cleanable/dirt,
-/obj/machinery/light_construct,
-/turf/simulated/floor/plasteel,
+/turf/simulated/openspace,
/area/maintenance/xenozoo)
"kPw" = (
/obj/structure/cable{
@@ -72915,7 +73647,7 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/machinery/atmospherics/unary/vent_pump/on,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -73154,13 +73886,10 @@
},
/obj/machinery/hologram/holopad,
/obj/effect/decal/warning_stripes/green/hollow,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"kTd" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/sign/securearea{
@@ -73181,7 +73910,7 @@
/area/chapel/office)
"kTl" = (
/obj/effect/decal/warning_stripes/yellow,
-/turf/simulated/floor/plasteel,
+/turf/simulated/floor/plating,
/area/maintenance/tourist)
"kTo" = (
/obj/machinery/atmospherics/unary/portables_connector,
@@ -73315,13 +74044,13 @@
dir = 4;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"kUj" = (
/obj/machinery/camera{
c_tag = "NT Representative's Office 2";
dir = 6
},
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"kUn" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -73334,9 +74063,6 @@
/turf/space/openspace,
/area/space)
"kUw" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
dir = 10;
@@ -73503,7 +74229,7 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"kVB" = (
/obj/machinery/mech_bay_recharge_port{
@@ -73536,6 +74262,15 @@
/obj/structure/lattice,
/turf/space/openspace,
/area/space)
+"kVT" = (
+/obj/machinery/vending/wallmed{
+ pixel_x = -25
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "neutral"
+ },
+/area/hallway/primary/central/west)
"kVV" = (
/obj/structure/chair{
dir = 8
@@ -73606,6 +74341,7 @@
},
/obj/item/rcs,
/obj/structure/table/reinforced,
+/obj/item/rcs,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -73884,17 +74620,18 @@
},
/area/medical/morgue)
"kYo" = (
-/obj/machinery/light{
- dir = 4
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/clown{
+ pixel_y = 0;
+ pixel_x = 32
},
/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "red"
+ icon_state = "bar"
},
-/area/security/interrogation)
+/area/maintenance/backstage)
"kYp" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
},
/turf/simulated/floor/plasteel{
dir = 1
@@ -74512,15 +75249,14 @@
/turf/simulated/floor/carpet/red,
/area/lawoffice)
"lcj" = (
-/obj/structure/bed,
-/obj/item/bedsheet/medical,
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/obj/machinery/light{
- dir = 4
+/obj/structure/table/glass,
+/obj/item/flashlight/lamp{
+ pixel_y = 8
},
-/obj/structure/cable{
- icon_state = "1-2";
- tag = ""
+/obj/item/storage/belt/medical,
+/obj/machinery/computer/security/telescreen/entertainment{
+ pixel_y = 0;
+ pixel_x = -32
},
/turf/simulated/floor/carpet/green,
/area/medical/virology)
@@ -74547,6 +75283,21 @@
icon_state = "freezerfloor"
},
/area/medical/virology/lab)
+"lcB" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/caution/stand_clear,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/turret_protected/ai)
"lcH" = (
/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/siding/wood{
@@ -74632,6 +75383,15 @@
},
/turf/simulated/floor/greengrid,
/area/security/nuke_storage)
+"ldG" = (
+/obj/machinery/door/firedoor,
+/obj/effect/decal/warning_stripes/yellow,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/turf/simulated/floor/plasteel{
+ icon_state = "neutralfull"
+ },
+/area/hallway/secondary/entry/commercial)
"ldJ" = (
/obj/structure/barricade/security,
/obj/effect/decal/cleanable/dirt,
@@ -74674,6 +75434,16 @@
},
/turf/simulated/floor/wood,
/area/hallway/primary/central/west)
+"ldZ" = (
+/obj/machinery/power/apc{
+ name = "south bump";
+ pixel_y = -26
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/simulated/floor/greengrid,
+/area/turret_protected/ai)
"led" = (
/obj/machinery/door/firedoor,
/obj/effect/decal/warning_stripes/yellow,
@@ -75024,6 +75794,10 @@
icon_state = "bluefull"
},
/area/hallway/primary/fore)
+"lgM" = (
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/carpet/red,
+/area/maintenance/backstage)
"lgR" = (
/turf/simulated/floor/plasteel{
icon_state = "red"
@@ -75340,13 +76114,14 @@
},
/area/crew_quarters/kitchen)
"ljB" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/railing/corner{
+ dir = 8
},
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "whitepurple";
- tag = "icon-whitepurple (NORTH)"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"ljG" = (
@@ -75405,7 +76180,8 @@
/area/crew_quarters/theatre)
"lki" = (
/obj/structure/stairs{
- dir = 1
+ dir = 1;
+ layer = 2
},
/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
@@ -75903,7 +76679,10 @@
/area/maintenance/fsmaint)
"loQ" = (
/obj/machinery/disposal,
-/turf/simulated/floor/carpet/royalblack,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"loR" = (
/obj/effect/decal/warning_stripes/yellow,
@@ -76050,10 +76829,11 @@
id_tag = "ntstation";
locked = 1
},
-/turf/simulated/floor/plasteel,
+/turf/simulated/floor/plating,
/area/maintenance/tourist)
"lpK" = (
/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/wood{
icon_state = "wood-broken3";
tag = "icon-wood-broken3"
@@ -76233,19 +77013,15 @@
},
/area/medical/surgery/south)
"lqY" = (
-/obj/structure/table/reinforced,
-/obj/item/flashlight/lamp{
- layer = 4;
- pixel_x = 7;
- pixel_y = 12
- },
-/obj/item/radio/intercom/department/security{
- pixel_y = -4
- },
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
+/obj/machinery/door/airlock/external{
+ frequency = 1379;
+ id_tag = "vir_maint2_outer";
+ locked = 1;
+ name = "West Maintenance External Access"
},
-/area/security/interrogation)
+/obj/effect/decal/warning_stripes/west,
+/turf/simulated/floor/plating,
+/area/maintenance/asmaint4)
"lqZ" = (
/obj/effect/decal/warning_stripes/northeast,
/turf/simulated/floor/plasteel,
@@ -76844,6 +77620,15 @@
/obj/structure/disposalpipe/trunk,
/turf/simulated/floor/wood,
/area/crew_quarters/arcade)
+"lwL" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/radio/intercom{
+ pixel_y = -28
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "darkred"
+ },
+/area/security/interrogation)
"lxc" = (
/obj/structure/railing/corner{
dir = 4
@@ -76926,6 +77711,9 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/disposalpipe/trunk/multiz{
+ dir = 2
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "dark"
@@ -77031,6 +77819,11 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whiteblue"
@@ -77132,6 +77925,7 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -77303,7 +78097,7 @@
dir = 8
},
/turf/simulated/floor/plating,
-/area/chapel/main)
+/area/chapel/massdriver)
"lAj" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -77559,6 +78353,9 @@
/turf/simulated/floor/plating,
/area/toxins/rdoffice)
"lCp" = (
+/obj/machinery/status_display{
+ pixel_y = 32
+ },
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whitegreen"
@@ -77573,7 +78370,7 @@
dir = 9;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"lCA" = (
/turf/simulated/wall,
/area/hallway/primary/port/south)
@@ -77660,7 +78457,7 @@
dir = 8;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"lDe" = (
/obj/machinery/atmospherics/unary/outlet_injector/on{
dir = 1
@@ -77755,10 +78552,17 @@
/turf/simulated/floor/plasteel,
/area/engineering/engine)
"lDX" = (
-/obj/structure/closet/bombcloset,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ dir = 8;
+ name = "west bump";
+ pixel_x = -26
+ },
+/obj/structure/railing/corner,
/turf/simulated/floor/plasteel{
- dir = 9;
- icon_state = "whitepurple"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"lEk" = (
@@ -78059,7 +78863,8 @@
},
/obj/effect/turf_decal/caution/red,
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"lGe" = (
@@ -78221,18 +79026,16 @@
},
/area/maintenance/trading)
"lHD" = (
-/obj/machinery/door/airlock/silver{
- name = "Bathroom"
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/turf/simulated/floor/plasteel{
- icon_state = "freezerfloor"
+/obj/structure/cable{
+ icon_state = "1-8"
},
+/turf/simulated/floor/carpet/green,
/area/medical/virology)
"lHL" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
@@ -78442,7 +79245,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"lJU" = (
/obj/structure/window/reinforced{
dir = 8
@@ -78522,7 +79325,8 @@
/area/medical/chemistry)
"lKB" = (
/obj/structure/stairs{
- dir = 1
+ dir = 1;
+ layer = 2
},
/turf/simulated/floor/plasteel{
dir = 1
@@ -78705,6 +79509,9 @@
dir = 4
},
/obj/structure/window/reinforced,
+/obj/machinery/light{
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "darkblue"
@@ -78802,7 +79609,7 @@
/obj/structure/closet/radiation,
/obj/effect/decal/warning_stripes/southeast,
/turf/simulated/floor/plasteel,
-/area/engineering/engine)
+/area/engineering/break_room)
"lNh" = (
/obj/effect/turf_decal/siding/wood{
dir = 1
@@ -78962,16 +79769,12 @@
},
/area/medical/biostorage)
"lOv" = (
-/obj/machinery/disposal,
/obj/machinery/vending/wallmed{
pixel_x = -25
},
-/obj/effect/decal/warning_stripes/yellow,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ dir = 8;
+ icon_state = "green"
},
/area/hydroponics)
"lOz" = (
@@ -79140,6 +79943,10 @@
dir = 1;
pixel_y = -24
},
+/obj/structure/closet/crate/freezer,
+/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis,
+/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis,
+/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis,
/turf/simulated/floor/plasteel{
icon_state = "whitegreen"
},
@@ -79498,6 +80305,15 @@
},
/turf/simulated/floor/plating,
/area/maintenance/starboard)
+"lSD" = (
+/obj/machinery/alarm{
+ pixel_y = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "neutral"
+ },
+/area/hallway/primary/central/south)
"lSL" = (
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/effect/decal/warning_stripes/east,
@@ -79997,9 +80813,9 @@
},
/area/maintenance/fsmaint3)
"lWn" = (
-/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
- dir = 1
+ dir = 1;
+ icon_state = "redcorner"
},
/area/security/lobby)
"lWo" = (
@@ -80089,6 +80905,7 @@
/area/maintenance/library)
"lWJ" = (
/obj/structure/window/full/plasmareinforced,
+/obj/structure/grille,
/turf/simulated/floor/plating,
/area/engineering/engine)
"lWN" = (
@@ -80199,7 +81016,7 @@
},
/area/security/prisonlockers)
"lXG" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 1
},
/obj/effect/decal/cleanable/dirt,
@@ -80253,6 +81070,7 @@
},
/obj/effect/decal/cleanable/blood/drip,
/obj/effect/decal/cleanable/dust,
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plasteel,
/area/maintenance/medroom)
"lXP" = (
@@ -80274,6 +81092,7 @@
/area/maintenance/trading)
"lYj" = (
/obj/machinery/hologram/holopad,
+/obj/effect/decal/warning_stripes/blue/hollow,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -80306,9 +81125,6 @@
/turf/simulated/floor/plasteel,
/area/engineering/controlroom)
"lYF" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
/turf/simulated/floor/plasteel{
icon_state = "red"
},
@@ -80400,10 +81216,18 @@
/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "2-8"
},
/obj/structure/cable{
- icon_state = "2-8"
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
},
/turf/simulated/floor/plasteel{
icon_state = "dark"
@@ -80655,6 +81479,9 @@
/obj/item/radio/intercom{
pixel_x = -28
},
+/obj/machinery/computer/security/telescreen/entertainment{
+ pixel_y = 30
+ },
/turf/simulated/floor/wood,
/area/library)
"mbz" = (
@@ -80816,7 +81643,8 @@
dir = 1
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"mcp" = (
@@ -80895,8 +81723,8 @@
pixel_x = -26
},
/turf/simulated/floor/plasteel{
- dir = 9;
- icon_state = "blue"
+ icon_state = "blue";
+ dir = 8
},
/area/hydroponics)
"mcM" = (
@@ -81011,6 +81839,10 @@
pixel_x = -4;
pixel_y = 4
},
+/obj/machinery/recharger{
+ pixel_x = 1;
+ pixel_y = 3
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -81260,13 +82092,14 @@
},
/area/quartermaster/miningstorage)
"meT" = (
-/obj/machinery/mineral/processing_unit{
- dir = 1
+/obj/structure/table,
+/obj/item/flashlight/lantern{
+ on = 1
},
-/obj/effect/turf_decal/stripes/line{
- dir = 9
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "brown"
},
-/turf/simulated/floor/plating,
/area/quartermaster/miningstorage)
"meV" = (
/obj/machinery/door/airlock/maintenance{
@@ -81372,12 +82205,9 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"mfx" = (
/obj/effect/decal/cleanable/dirt,
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
/obj/structure/cable{
d1 = 4;
d2 = 8;
@@ -81568,9 +82398,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "brown"
@@ -81627,6 +82455,32 @@
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
/area/toxins/server)
+"mhj" = (
+/obj/structure/rack{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/effect/decal/warning_stripes/red/hollow,
+/obj/structure/window/reinforced{
+ color = "red"
+ },
+/obj/structure/window/reinforced{
+ color = "red";
+ dir = 1
+ },
+/obj/machinery/door/window{
+ name = "Secure Armory";
+ req_access = list(1);
+ color = "red"
+ },
+/obj/item/clothing/shoes/jackboots/armored,
+/obj/item/clothing/shoes/jackboots/armored,
+/obj/item/clothing/shoes/jackboots/armored,
+/obj/item/clothing/shoes/jackboots/armored,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/security/securearmory)
"mht" = (
/obj/item/pod_parts/core,
/obj/item/circuitboard/mecha/pod,
@@ -81666,7 +82520,7 @@
dir = 6;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"mhK" = (
/obj/structure/sink/kitchen{
pixel_y = 25
@@ -81715,6 +82569,21 @@
},
/turf/simulated/floor/glass/reinforced,
/area/quartermaster/office)
+"mio" = (
+/obj/structure/table/socle,
+/obj/item/storage/funeral_urn/random{
+ pixel_x = 1;
+ pixel_y = 9
+ },
+/obj/machinery/firealarm{
+ dir = 1;
+ name = "south fire alarm";
+ pixel_y = 26
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/chapel/office)
"mir" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -82056,7 +82925,8 @@
"mkD" = (
/obj/machinery/door/airlock/security/glass{
name = "Brig Customs";
- req_access = list(1)
+ req_access = list(1);
+ security_level = 1
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -82219,6 +83089,11 @@
},
/turf/simulated/floor/wood,
/area/crew_quarters/arcade)
+"mlt" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random_spawners/crate_spawner,
+/turf/simulated/floor/plasteel,
+/area/maintenance/apmaint)
"mlz" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/radio/intercom{
@@ -82380,18 +83255,16 @@
},
/area/quartermaster/office)
"mmo" = (
-/obj/effect/decal/warning_stripes/east,
-/obj/effect/turf_decal/number/number_2{
- dir = 1;
- pixel_y = -18;
- pixel_x = -6
+/obj/structure/railing{
+ dir = 8
},
-/obj/effect/turf_decal/arrows{
+/obj/item/twohanded/required/kirbyplants,
+/obj/machinery/door/firedoor/border_only{
dir = 8
},
/turf/simulated/floor/plasteel{
dir = 8;
- icon_state = "neutral"
+ icon_state = "whitepurple"
},
/area/toxins/mixing)
"mmr" = (
@@ -82440,11 +83313,14 @@
/obj/structure/disposalpipe/junction/reversed{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"mmS" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 8
@@ -82492,25 +83368,13 @@
/turf/simulated/floor/wood,
/area/library/game_zone)
"mnl" = (
-/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
- },
-/obj/effect/spawner/window/reinforced,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
- id_tag = "Biohazard_medi";
- name = "Quarantine Lockdown";
- opacity = 0
+/obj/structure/sign/poster/official/random{
+ pixel_y = -32
},
-/obj/machinery/door/poddoor/shutters/preopen{
- dir = 8;
- id_tag = "Virology1";
- name = "Virology Shutters"
+/turf/simulated/floor/plasteel{
+ icon_state = "whitegreen"
},
-/turf/simulated/floor/plating,
-/area/medical/virology)
+/area/medical/virology/lab)
"mnp" = (
/turf/simulated/floor/plasteel{
dir = 9;
@@ -82716,12 +83580,6 @@
/turf/space/openspace,
/area/space)
"mpH" = (
-/obj/structure/disposalpipe/sortjunction{
- dir = 1;
- name = "Captain's Office";
- sortType = 18;
- icon_state = "pipe-j2s"
- },
/obj/structure/cable{
icon_state = "4-8"
},
@@ -82738,6 +83596,11 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 8
},
+/obj/structure/disposalpipe/sortjunction/reversed{
+ dir = 1;
+ name = "Captain Office";
+ sortType = 18
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -82819,6 +83682,14 @@
icon_state = "dark"
},
/area/maintenance/fsmaint3)
+"mqs" = (
+/obj/effect/spawner/window/reinforced,
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plating,
+/area/medical/virology)
"mqD" = (
/obj/structure/closet/gmcloset,
/obj/item/wrench,
@@ -82897,6 +83768,15 @@
/area/maintenance/fpmaint)
"mry" = (
/obj/structure/closet/crate/engineering,
+/obj/item/stack/sheet/metal{
+ amount = 50
+ },
+/obj/item/stack/sheet/metal{
+ amount = 50
+ },
+/obj/item/stack/sheet/glass{
+ amount = 50
+ },
/obj/effect/spawner/lootdrop/maintenance,
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
@@ -83170,7 +84050,10 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/turf/simulated/floor/plasteel,
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "blue"
+ },
/area/hydroponics)
"muB" = (
/obj/structure/window/reinforced{
@@ -83534,9 +84417,9 @@
/obj/structure/cable{
icon_state = "0-2"
},
-/obj/machinery/power/apc{
+/obj/machinery/power/apc/worn_out{
+ cell_type = 0;
dir = 1;
- name = "north bump";
pixel_y = 26
},
/turf/simulated/floor/plating,
@@ -83615,22 +84498,13 @@
/turf/simulated/floor/plating,
/area/maintenance/fsmaint3)
"mya" = (
-/obj/machinery/atmospherics/binary/valve,
-/obj/item/wrench,
-/obj/machinery/light/small{
- dir = 4;
- pixel_y = 8
- },
-/obj/structure/cable{
- d1 = 1;
- d2 = 8;
- icon_state = "1-8"
- },
-/obj/structure/disposalpipe/segment{
- dir = 9
+/obj/structure/chair,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
},
-/turf/simulated/floor/plating,
-/area/medical/virology/lab)
+/turf/simulated/floor/plasteel,
+/area/maintenance/xenozoo)
"myd" = (
/obj/structure/closet,
/obj/effect/spawner/lootdrop/maintenance,
@@ -83769,7 +84643,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"mze" = (
/obj/effect/decal/cleanable/dirt,
@@ -83998,16 +84874,21 @@
req_access = list(1);
color = "red"
},
-/obj/item/gun/projectile/automatic/pistol/enforcer,
/obj/structure/window/reinforced{
color = "red";
dir = 4
},
-/obj/item/gun/projectile/automatic/pistol/enforcer{
+/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{
+ pixel_y = 0;
+ pixel_x = -2
+ },
+/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{
+ pixel_y = 0;
pixel_x = 2
},
-/obj/item/gun/projectile/automatic/pistol/enforcer{
- pixel_x = 4
+/obj/item/gun/projectile/automatic/pistol/enforcer/lethal{
+ pixel_y = 0;
+ pixel_x = 6
},
/turf/simulated/floor/plasteel{
dir = 5;
@@ -84140,6 +85021,14 @@
icon_state = "darkpurple"
},
/area/assembly/chargebay)
+"mCK" = (
+/obj/effect/decal/cleanable/dust,
+/obj/item/pen{
+ pixel_y = -13;
+ pixel_x = -13
+ },
+/turf/simulated/floor/wood,
+/area/maintenance/library)
"mCP" = (
/obj/machinery/porta_turret{
dir = 4;
@@ -84309,6 +85198,7 @@
"mDO" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
/area/maintenance/xenozoo)
"mDV" = (
@@ -84399,6 +85289,7 @@
/obj/structure/barricade/wooden/crude{
layer = 4
},
+/obj/structure/cable,
/turf/simulated/floor/plating,
/area/maintenance/xenozoo)
"mEB" = (
@@ -84406,6 +85297,15 @@
icon_state = "plant-22";
tag = "icon-plant-22"
},
+/obj/machinery/power/apc{
+ dir = 1;
+ name = "north bump";
+ pixel_y = 24
+ },
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -84602,12 +85502,12 @@
/obj/machinery/camera{
c_tag = "Brig Cell 2"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
/obj/structure/chair/comfy/teal{
dir = 4
},
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
/turf/simulated/floor/carpet/cyan,
/area/security/prison/cell_block/A)
"mGy" = (
@@ -84769,18 +85669,18 @@
/area/hydroponics)
"mHJ" = (
/obj/structure/disposaloutlet{
- dir = 1
- },
-/obj/structure/window/reinforced,
-/obj/structure/window/reinforced{
dir = 8
},
+/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/disposalpipe/trunk{
dir = 8
},
+/obj/structure/window/reinforced{
+ dir = 1
+ },
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"mHL" = (
@@ -84862,13 +85762,6 @@
dir = 1;
pixel_y = 32
},
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/machinery/power/apc{
- name = "south bump";
- pixel_y = -26
- },
/turf/simulated/floor/greengrid,
/area/turret_protected/ai)
"mIv" = (
@@ -85098,19 +85991,11 @@
},
/area/turret_protected/aisat)
"mKo" = (
-/obj/structure/closet/l3closet/scientist,
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/machinery/power/apc{
- dir = 8;
- name = "west bump";
- pixel_x = -26
- },
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "whitepurple"
+/obj/structure/sign/directions/floor/alt{
+ dir = 6;
+ pixel_x = -32
},
+/turf/simulated/openspace,
/area/toxins/launch)
"mKp" = (
/obj/machinery/door/airlock/maintenance,
@@ -85231,7 +86116,9 @@
codes_txt = "patrol;next_patrol=C1";
location = "C11"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"mKW" = (
/obj/structure/grille,
@@ -85377,6 +86264,9 @@
/obj/machinery/atmospherics/unary/portables_connector,
/obj/machinery/portable_atmospherics/canister,
/obj/effect/decal/warning_stripes/north,
+/obj/machinery/status_display{
+ pixel_y = 32
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutral"
},
@@ -85552,6 +86442,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -85742,6 +86635,7 @@
/obj/structure/cable{
icon_state = "2-8"
},
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -85845,6 +86739,8 @@
/obj/item/clothing/glasses/hud/health,
/obj/item/clothing/glasses/regular,
/obj/item/reagent_containers/hypospray/safety,
+/obj/item/storage/belt/medical,
+/obj/item/clothing/glasses/hud/health,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "whiteblue";
@@ -85854,9 +86750,7 @@
"mOm" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable,
-/turf/simulated/floor/plasteel{
- icon_state = "darkgrey"
- },
+/turf/simulated/floor/plating,
/area/maintenance/gambling_den)
"mOA" = (
/obj/effect/decal/cleanable/dirt,
@@ -85917,7 +86811,7 @@
dir = 9;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"mOR" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -85994,7 +86888,7 @@
/obj/item/twohanded/required/kirbyplants,
/obj/machinery/firealarm{
dir = 4;
- pixel_x = -28
+ pixel_x = -25
},
/obj/machinery/light{
dir = 8
@@ -86003,7 +86897,7 @@
dir = 5;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"mPu" = (
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plasteel,
@@ -86101,6 +86995,9 @@
/obj/item/clothing/under/retro/medical,
/obj/effect/decal/warning_stripes/north,
/obj/machinery/light,
+/obj/structure/sign/poster/official/random{
+ pixel_y = -32
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -86112,11 +87009,18 @@
/turf/simulated/wall,
/area/crew_quarters/serviceyard)
"mQk" = (
-/obj/machinery/light{
+/obj/structure/chair{
dir = 8
},
+/obj/machinery/alarm{
+ pixel_y = 24
+ },
+/obj/item/radio/intercom{
+ pixel_y = 24;
+ pixel_x = -32
+ },
/turf/simulated/floor/plasteel{
- dir = 8;
+ dir = 1;
icon_state = "red"
},
/area/security/interrogation)
@@ -86466,11 +87370,15 @@
/area/toxins/server)
"mSP" = (
/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/remains/mouse,
/obj/item/radio/intercom{
name = "west station intercom (General)";
- pixel_x = -28
+ pixel_x = -28;
+ pixel_y = 24
+ },
+/obj/machinery/light/small{
+ dir = 8
},
-/obj/item/folder,
/turf/simulated/floor/plating,
/area/maintenance/xenozoo)
"mSR" = (
@@ -86590,7 +87498,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"mTC" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -86775,11 +87683,15 @@
pixel_x = -1;
pixel_y = 7
},
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = -24
+ },
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"mVb" = (
/obj/structure/window/reinforced{
dir = 8
@@ -86806,6 +87718,7 @@
/obj/machinery/light{
dir = 4
},
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plasteel{
icon_state = "darkgrey"
},
@@ -87081,6 +87994,18 @@
/obj/machinery/door/airlock/maintenance,
/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
+"mXr" = (
+/obj/structure/window/reinforced,
+/obj/item/flag/nt,
+/obj/structure/sign/atmosplaque{
+ pixel_y = 32;
+ desc = "Важное Уточнение! Главный Инженер пожелал оставаться анонимным, поэтому, обойдёмся прозвищем. За выдающиеся успехи в области инженерного менеджмента, а также успешное проектирование станции Нова по всем стандартам НаноТрейзен. Благодарим вас за труд, PiroMage. Слава НаноТрейзен!";
+ name = "Благодарственное Письмо Для Главного Инженера Команды Архитекторов Станции Нова"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/bridge)
"mXt" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
@@ -87109,6 +88034,11 @@
dir = 4;
pixel_x = 28
},
+/obj/machinery/camera{
+ c_tag = "Research East Hallway";
+ dir = 8;
+ network = list("Research","SS13")
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whitepurple"
@@ -87140,10 +88070,6 @@
layer = 2.9
},
/obj/effect/decal/warning_stripes/red/hollow,
-/obj/item/clothing/suit/armor/riot,
-/obj/item/shield/riot,
-/obj/item/clothing/gloves/combat,
-/obj/item/clothing/head/helmet/riot,
/obj/structure/window/reinforced{
color = "red"
},
@@ -87161,6 +88087,10 @@
req_access = list(1);
color = "red"
},
+/obj/item/clothing/gloves/combat,
+/obj/item/clothing/gloves/combat,
+/obj/item/clothing/gloves/combat,
+/obj/item/clothing/gloves/combat,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -87646,6 +88576,7 @@
scrub_N2O = 1;
scrub_Toxins = 1
},
+/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/wood{
icon_state = "wood-broken6";
tag = "icon-wood-broken6"
@@ -87670,19 +88601,6 @@
},
/area/security/processing)
"nbu" = (
-/obj/item/ammo_box/magazine/enforcer/lethal{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/ammo_box/magazine/enforcer/lethal,
-/obj/item/ammo_box/magazine/enforcer/lethal{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/ammo_box/magazine/enforcer/lethal{
- pixel_x = -6;
- pixel_y = 6
- },
/obj/effect/decal/warning_stripes/red/hollow,
/obj/structure/rack{
dir = 8;
@@ -87700,6 +88618,24 @@
req_access = list(1);
color = "red"
},
+/obj/item/ammo_box/c9mm,
+/obj/item/ammo_box/c9mm{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/ammo_box/magazine/enforcer/lethal{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/ammo_box/magazine/enforcer/lethal,
+/obj/item/ammo_box/magazine/enforcer/lethal{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/ammo_box/magazine/enforcer/lethal{
+ pixel_x = -6;
+ pixel_y = 6
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -88058,7 +88994,8 @@
/obj/item/clothing/glasses/welding/superior,
/obj/item/radio/intercom{
dir = 4;
- pixel_x = 28
+ pixel_x = 34;
+ pixel_y = 3
},
/turf/simulated/floor/carpet/purple,
/area/toxins/rdoffice)
@@ -88536,9 +89473,6 @@
/turf/simulated/floor/wood/fancy/light,
/area/crew_quarters/heads)
"nhD" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/cable{
icon_state = "1-4"
},
@@ -88547,6 +89481,9 @@
/obj/structure/disposalpipe/junction{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -88604,16 +89541,12 @@
},
/area/maintenance/trading)
"nhZ" = (
-/obj/effect/turf_decal/arrows{
+/obj/structure/closet/l3closet/scientist,
+/obj/structure/railing{
dir = 8
},
-/obj/effect/turf_decal/number/number_1{
- dir = 1;
- pixel_y = -18;
- pixel_x = -5
- },
/turf/simulated/floor/plasteel{
- icon_state = "whitepurple"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"nic" = (
@@ -88722,7 +89655,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"niY" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -88759,7 +89692,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"njf" = (
/obj/effect/decal/warning_stripes/northeast,
@@ -88951,6 +89886,9 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "whitebluefull"
},
@@ -89174,8 +90112,8 @@
frequency = 1379;
master_tag = "ex";
name = "interior access button";
- pixel_x = 21;
- pixel_y = -21
+ pixel_x = 25;
+ pixel_y = -25
},
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 6
@@ -89197,6 +90135,22 @@
icon_state = "whitegreen"
},
/area/medical/virology/lab)
+"nms" = (
+/obj/structure/safe/floor,
+/obj/item/seeds/wheat/meat,
+/obj/item/gun/energy/floragun{
+ selfcharge = 0;
+ emagged = 1;
+ name = "old floral somatoray";
+ can_charge = 1;
+ cell_type = /obj/item/stock_parts/cell/degraded;
+ ammo_type = list(/obj/item/ammo_casing/energy/flora/beta,/obj/item/ammo_casing/energy/flora/gamma);
+ current_skin = "oldflora";
+ description_info = "Это энергетическое оружие. Имеет 2 режима стрельбы: бета и гамма. Бета изменяет геном растений. Гамма ускоряет рост растений. Чтобы перезарядить это оружие, используйте устройство для подзарядки оружия.";
+ desc = "Старый ботанический инструмент, испускающий контролируемое излучение, вызывающее мутации в клетках растений, не имеет самозарядки. Чтобы перезарядить это оружие, используйте устройство для подзарядки оружия."
+ },
+/turf/simulated/floor/grass,
+/area/maintenance/garden)
"nmx" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -89660,6 +90614,11 @@
/area/security/securehallway)
"npW" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/simulated/floor/plasteel{
icon_state = "whitebluecorner"
},
@@ -89783,6 +90742,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "dark"
@@ -90140,17 +91100,12 @@
/turf/simulated/floor/glass,
/area/hallway/secondary/exit)
"nuJ" = (
-/obj/item/twohanded/required/kirbyplants,
-/obj/machinery/ai_status_display{
- pixel_x = -32
- },
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
-/turf/simulated/floor/plasteel{
- icon_state = "white"
+/obj/structure/closet/l3closet/virology,
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 5
},
-/area/medical/virology)
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"nuS" = (
/turf/simulated/floor/plasteel{
icon_state = "whitegreen"
@@ -90234,15 +91189,30 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/exit)
"nvF" = (
-/obj/machinery/washing_machine,
-/obj/machinery/newscaster{
- pixel_y = 32
+/obj/structure/table,
+/obj/item/storage/box/syringes{
+ pixel_y = 9
+ },
+/obj/item/storage/box/syringes{
+ pixel_y = 11;
+ pixel_x = 4
+ },
+/obj/item/storage/lockbox/vials{
+ pixel_y = -3;
+ pixel_x = 1
+ },
+/obj/item/storage/fancy/vials{
+ pixel_x = 6;
+ pixel_y = -2
+ },
+/obj/machinery/alarm{
+ pixel_y = 24
},
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"nvL" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table,
@@ -90250,6 +91220,11 @@
amount = 20
},
/obj/machinery/light_construct,
+/obj/item/stack/sheet/glass{
+ amount = 20;
+ pixel_x = 2;
+ pixel_y = 2
+ },
/turf/simulated/floor/plasteel{
dir = 0;
icon_state = "red"
@@ -90295,7 +91270,7 @@
dir = 9;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"nvU" = (
/obj/machinery/vending/wallmed{
pixel_x = 26;
@@ -90386,6 +91361,22 @@
icon_state = "dark"
},
/area/atmos)
+"nwG" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/girder/reinforced,
+/turf/simulated/floor/plating,
+/area/maintenance/maintcentral)
"nwN" = (
/obj/structure/chair/sofa/corner{
dir = 4
@@ -90659,6 +91650,7 @@
c_tag = "Brig Cell 3";
dir = 6
},
+/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -90676,7 +91668,7 @@
},
/area/medical/research)
"nyO" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/obj/effect/landmark/start/civilian,
@@ -90694,7 +91686,6 @@
},
/area/atmos)
"nyU" = (
-/obj/structure/closet/wardrobe/xenos,
/obj/machinery/light{
dir = 1;
in_use = 1
@@ -90702,6 +91693,7 @@
/obj/structure/sign/poster/official/random{
pixel_y = 32
},
+/obj/structure/closet/wardrobe/pink,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "neutralcorner"
@@ -90741,6 +91733,7 @@
dir = 6
},
/obj/effect/landmark/event/blobstart,
+/obj/item/radio/beacon,
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -91183,8 +92176,8 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/obj/structure/disposalpipe/segment{
- dir = 6
+/obj/structure/disposalpipe/junction/reversed{
+ dir = 2
},
/turf/simulated/floor/plasteel{
icon_state = "white"
@@ -91685,6 +92678,15 @@
icon_state = "white"
},
/area/toxins/explab)
+"nFO" = (
+/obj/machinery/computer/security/telescreen/entertainment{
+ pixel_y = 30
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "yellow"
+ },
+/area/engineering/break_room)
"nFR" = (
/obj/structure/chair/sofa/right,
/obj/machinery/light{
@@ -91999,6 +93001,7 @@
/turf/simulated/floor/plasteel,
/area/storage/secure)
"nIR" = (
+/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/wood{
icon_state = "wood-broken";
tag = "icon-wood-broken"
@@ -92389,6 +93392,10 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 8
},
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = 24
+ },
/turf/simulated/floor/plasteel{
dir = 6;
icon_state = "vault"
@@ -92420,7 +93427,7 @@
scrub_Toxins = 1
},
/turf/simulated/floor/plasteel,
-/area/engineering/engine)
+/area/engineering/break_room)
"nLM" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -92616,7 +93623,9 @@
/area/quartermaster/miningdock)
"nMX" = (
/obj/effect/decal/warning_stripes/east,
-/obj/machinery/portable_atmospherics/canister/oxygen,
+/obj/item/videocam,
+/obj/item/videocam,
+/obj/structure/closet/crate,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -92867,14 +93876,6 @@
dir = 1
},
/area/security/prison/cell_block/A)
-"nOM" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/turf/simulated/floor/plasteel{
- dir = 1
- },
-/area/security/prison/cell_block/A)
"nON" = (
/obj/machinery/door/firedoor,
/obj/effect/decal/warning_stripes/yellow,
@@ -93349,7 +94350,7 @@
dir = 8
},
/turf/simulated/floor/plasteel,
-/area/engineering/engine)
+/area/engineering/break_room)
"nSN" = (
/obj/machinery/light{
dir = 8
@@ -93411,6 +94412,11 @@
/obj/machinery/light/small{
dir = 4
},
+/obj/item/shard{
+ icon_state = "medium";
+ pixel_x = -7;
+ pixel_y = -10
+ },
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"nTA" = (
@@ -93493,6 +94499,13 @@
icon_state = "darkblue"
},
/area/hallway/secondary/exit)
+"nUf" = (
+/obj/machinery/door/firedoor,
+/obj/effect/decal/warning_stripes/yellow,
+/turf/simulated/floor/plasteel{
+ dir = 1
+ },
+/area/security/lobby)
"nUl" = (
/obj/effect/turf_decal/siding/yellow{
dir = 8
@@ -93854,6 +94867,10 @@
d2 = 2;
icon_state = "0-2"
},
+/obj/machinery/cell_charger{
+ pixel_x = -1;
+ pixel_y = 2
+ },
/turf/simulated/floor/plating,
/area/maintenance/fpmaint)
"nWD" = (
@@ -94041,6 +95058,10 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
+"nYP" = (
+/obj/effect/spawner/window/reinforced,
+/turf/simulated/floor/plating,
+/area/chapel/massdriver)
"nYR" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 8
@@ -94125,20 +95146,12 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
-/turf/simulated/floor/plasteel{
- icon_state = "browncorner"
- },
+/turf/simulated/floor/plasteel,
/area/quartermaster/miningstorage)
"nZH" = (
/obj/structure/chair/sofa/corner{
color = "#85130b"
},
-/obj/structure/curtain/open/shower/security{
- alpha = 255;
- name = "backstage";
- anchored = 1;
- pixel_y = 32
- },
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/wood,
@@ -94700,7 +95713,8 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"odx" = (
@@ -94733,9 +95747,6 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/structure/disposalpipe/segment{
- dir = 9
- },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "brown"
@@ -94857,18 +95868,15 @@
},
/area/maintenance/trading)
"oev" = (
-/obj/machinery/light{
- dir = 8
- },
-/obj/effect/decal/warning_stripes/west,
-/obj/structure/ladder,
/obj/structure/sign/directions/floor/alt{
dir = 8;
pixel_x = -32
},
+/obj/structure/railing{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "neutral"
+ icon_state = "ramptop"
},
/area/toxins/mixing)
"oeC" = (
@@ -94966,11 +95974,17 @@
tag_chamber_sensor = "sw_maint2_sensor";
tag_exterior_door = "sw_maint2_outer";
tag_interior_door = "sw_maint2_inner";
- pixel_x = 25
+ pixel_x = 25;
+ pixel_y = -2
},
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/airlock_sensor{
+ id_tag = "sw_maint2_sensor";
+ pixel_y = 5;
+ pixel_x = 25
+ },
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"ofE" = (
@@ -95155,6 +96169,7 @@
/obj/machinery/light{
dir = 1
},
+/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/carpet/red,
/area/security/prison/cell_block/A)
"ohx" = (
@@ -95172,11 +96187,26 @@
},
/area/turret_protected/aisat_interior/secondary)
"ohy" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/item/twohanded/required/kirbyplants,
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "red"
},
/area/security/interrogation)
+"ohI" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/camera{
+ c_tag = "Minisat AI Core Centre";
+ network = list("Minisat","SS13");
+ dir = 10
+ },
+/turf/simulated/floor/greengrid,
+/area/turret_protected/ai)
"ohJ" = (
/obj/machinery/door/airlock/command{
name = "Head of Security";
@@ -95270,7 +96300,7 @@
dir = 4;
pixel_x = 28
},
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/machinery/atmospherics/unary/vent_scrubber{
name = "standard air scrubber";
on = 1;
@@ -95304,14 +96334,19 @@
/turf/simulated/floor/plating,
/area/security/permabrig)
"ojn" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/obj/structure/disposalpipe/segment{
- dir = 9
+ dir = 4
},
/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "red"
+ dir = 8;
+ icon_state = "whitegreen"
},
-/area/security/interrogation)
+/area/medical/virology/lab)
"ojo" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
name = "standard air scrubber";
@@ -95360,7 +96395,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
- dir = 1
+ icon_state = "red"
},
/area/security/lobby)
"ojE" = (
@@ -95762,12 +96797,10 @@
},
/area/toxins/xenobiology)
"omG" = (
-/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "whitepurple";
- tag = "icon-whitepurple (EAST)"
- },
-/area/toxins/launch)
+/obj/effect/decal/cleanable/dust,
+/obj/item/paper_bin,
+/turf/simulated/floor/wood,
+/area/maintenance/library)
"omJ" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -95960,11 +96993,13 @@
/area/hallway/secondary/entry/eastarrival)
"ooP" = (
/obj/effect/decal/warning_stripes/yellow/hollow,
-/obj/structure/reagent_dispensers/watertank/high,
-/obj/item/reagent_containers/glass/bucket,
/obj/structure/extinguisher_cabinet{
pixel_y = -32
},
+/obj/machinery/disposal,
+/obj/structure/disposalpipe/trunk{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -95981,19 +97016,12 @@
},
/area/medical/chemistry)
"ooX" = (
-/obj/item/radio/intercom{
- dir = 8;
- name = "Station Intercom (General)";
- pixel_x = 28
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/light/small{
- dir = 4
+/obj/machinery/door/airlock/mining{
+ name = "Mining Dock";
+ req_access = list(48)
},
/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "brown"
+ icon_state = "brownfull"
},
/area/quartermaster/miningstorage)
"ooY" = (
@@ -96104,6 +97132,7 @@
/obj/structure/closet,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/random_spawners/cobweb_left_rare,
+/obj/item/storage/box/lights/bulbs,
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"opR" = (
@@ -96351,7 +97380,7 @@
dir = 8;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"osl" = (
/obj/structure/table/reinforced,
/obj/item/restraints/legcuffs/beartrap,
@@ -96471,7 +97500,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"ote" = (
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/machinery/power/port_gen/pacman,
@@ -96586,7 +97615,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plating,
-/area/medical/medrest)
+/area/maintenance/asmaint)
"otS" = (
/obj/structure/closet/secure_closet/engineering_electrical,
/obj/effect/decal/warning_stripes/east,
@@ -96806,6 +97835,37 @@
/obj/machinery/light/small,
/turf/simulated/floor/plasteel/freezer,
/area/crew_quarters/heads/hop)
+"ovd" = (
+/obj/structure/rack{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/effect/decal/warning_stripes/red/hollow,
+/obj/structure/window/reinforced{
+ color = "red"
+ },
+/obj/structure/window/reinforced{
+ color = "red";
+ dir = 1
+ },
+/obj/structure/window/reinforced{
+ color = "red";
+ dir = 4
+ },
+/obj/machinery/door/window{
+ dir = 8;
+ name = "Secure Armory";
+ req_access = list(1);
+ color = "red"
+ },
+/obj/item/clothing/suit/armor/riot,
+/obj/item/clothing/suit/armor/riot,
+/obj/item/clothing/suit/armor/riot,
+/obj/item/clothing/suit/armor/riot,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/security/securearmory)
"ovn" = (
/obj/structure/table/reinforced,
/obj/item/clipboard,
@@ -96963,6 +98023,9 @@
/obj/item/tank/internals/oxygen,
/obj/item/radio,
/obj/item/clothing/mask/breath,
+/obj/structure/sign/poster/contraband/missing_gloves{
+ pixel_y = -32
+ },
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"ovY" = (
@@ -97813,10 +98876,10 @@
dir = 1;
in_use = 1
},
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"oDB" = (
-/obj/item/reagent_containers/spray/pestspray,
+/obj/structure/flora/ausbushes/sunnybush,
/turf/simulated/floor/grass,
/area/maintenance/garden)
"oDL" = (
@@ -97957,7 +99020,7 @@
},
/obj/machinery/airlock_sensor{
id_tag = "aisolw_sensor";
- pixel_y = -28
+ pixel_y = 35
},
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
frequency = 1379;
@@ -97993,6 +99056,15 @@
icon_state = "neutralfull"
},
/area/hallway/secondary/entry/lounge)
+"oEP" = (
+/obj/structure/chair/comfy/brown{
+ dir = 1
+ },
+/obj/machinery/computer/security/telescreen/entertainment{
+ pixel_y = -30
+ },
+/turf/simulated/floor/wood,
+/area/library)
"oET" = (
/obj/effect/decal/warning_stripes/northeast,
/turf/simulated/floor/plasteel{
@@ -98080,6 +99152,7 @@
d2 = 8;
icon_state = "4-8"
},
+/obj/structure/barricade/wooden,
/turf/simulated/floor/plating,
/area/maintenance/atmospherics)
"oFD" = (
@@ -98098,9 +99171,11 @@
/turf/simulated/floor/plasteel,
/area/crew_quarters/toilet)
"oFH" = (
-/obj/item/pen,
-/obj/structure/table,
-/turf/simulated/floor/plating,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/railing{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel,
/area/maintenance/xenozoo)
"oFT" = (
/obj/structure/cable{
@@ -98671,6 +99746,16 @@
},
/turf/simulated/floor/plasteel/freezer,
/area/crew_quarters/toilet2)
+"oKn" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "rampbottom";
+ tag = "icon-stage_stairs";
+ dir = 4
+ },
+/area/security/hos)
"oKr" = (
/obj/machinery/door/poddoor/shutters/preopen{
id_tag = "CMO Shutters";
@@ -98940,7 +100025,6 @@
layer = 2.9
},
/obj/effect/decal/warning_stripes/red/hollow,
-/obj/item/clothing/suit/armor/bulletproof,
/obj/machinery/door/window{
name = "Secure Armory";
req_access = list(1);
@@ -98953,7 +100037,9 @@
color = "red";
dir = 1
},
-/obj/item/clothing/gloves/combat,
+/obj/item/clothing/head/helmet/alt,
+/obj/item/clothing/head/helmet/alt,
+/obj/item/clothing/head/helmet/alt,
/obj/item/clothing/head/helmet/alt,
/turf/simulated/floor/plasteel{
icon_state = "dark"
@@ -99017,7 +100103,9 @@
codes_txt = "patrol;next_patrol=C6";
location = "C5"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"oMX" = (
/obj/machinery/camera{
@@ -99155,7 +100243,7 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "white"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"oNV" = (
@@ -99232,13 +100320,13 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/effect/decal/cleanable/dirt,
/obj/machinery/button/windowtint{
id = "Interrogation";
pixel_y = -24;
req_access = list(63);
pixel_x = 24
},
-/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "darkred"
@@ -99306,14 +100394,12 @@
/area/medical/biostorage)
"oPd" = (
/obj/effect/decal/warning_stripes/southeast,
-/obj/machinery/chem_master{
- pixel_x = -1
- },
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
+/obj/machinery/computer/pandemic,
/turf/simulated/floor/plasteel,
/area/medical/virology/lab)
"oPf" = (
@@ -99330,7 +100416,8 @@
icon_state = "0-4"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"oPj" = (
@@ -99380,6 +100467,10 @@
icon_state = "darkred"
},
/area/bridge)
+"oPt" = (
+/obj/structure/flora/ausbushes/ywflowers/hell,
+/turf/simulated/floor/grass,
+/area/maintenance/garden)
"oPu" = (
/obj/structure/chair/comfy/brown,
/turf/simulated/floor/wood,
@@ -99624,9 +100715,9 @@
/obj/machinery/door/firedoor/border_only{
dir = 1
},
-/obj/structure/table,
/obj/item/paper_bin,
/obj/item/pen,
+/obj/structure/table,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "brown"
@@ -99653,6 +100744,15 @@
icon_state = "neutral"
},
/area/bridge/checkpoint/south)
+"oRJ" = (
+/obj/machinery/alarm{
+ dir = 1;
+ pixel_y = -24
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "grimy"
+ },
+/area/chapel/office)
"oRO" = (
/obj/structure/chair/barber{
dir = 8
@@ -99708,34 +100808,11 @@
},
/area/blueshield)
"oSq" = (
-/obj/structure/closet/crate/medical,
-/obj/item/reagent_containers/spray/cleaner{
- pixel_x = -4;
- pixel_y = 5
- },
-/obj/item/reagent_containers/spray/cleaner{
- pixel_x = -11;
- pixel_y = 5
- },
-/obj/item/storage/box/beakers{
- pixel_x = 8;
- pixel_y = 2
- },
-/obj/item/storage/box/beakers{
- pixel_y = -1
- },
-/obj/item/storage/box/syringes{
- pixel_x = 10;
- pixel_y = -3
- },
-/obj/item/storage/box/gloves{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
- dir = 6
+/obj/machinery/chem_master{
+ pixel_x = -1
},
-/turf/simulated/floor/plating,
+/obj/effect/decal/warning_stripes/northeastcorner,
+/turf/simulated/floor/plasteel,
/area/medical/virology/lab)
"oSw" = (
/obj/structure/railing{
@@ -100070,7 +101147,9 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"oUo" = (
/obj/machinery/door/airlock/external{
@@ -100295,7 +101374,7 @@
/turf/simulated/floor/shuttle/plating,
/area/shuttle/arrival/station)
"oVW" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "dark"
@@ -100341,6 +101420,7 @@
pixel_x = -6;
pixel_y = 6
},
+/obj/item/ammo_box/shotgun/stunslug,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -100657,14 +101737,14 @@
/turf/simulated/floor/plating,
/area/maintenance/casino)
"oYP" = (
-/obj/machinery/door/airlock/security/glass{
- name = "Warden's Office";
- req_access = list(3);
- security_level = 1
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security{
+ name = "Warden's Bedroom";
+ req_access = list(3);
+ security_level = 1
+ },
/turf/simulated/floor/plasteel{
icon_state = "redfull";
tag = "icon-redfull (NORTHWEST)"
@@ -100755,6 +101835,10 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
/area/storage/eva)
+"oZp" = (
+/obj/structure/railing/corner,
+/turf/simulated/floor/plating,
+/area/maintenance/casino)
"oZq" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
name = "standard air scrubber";
@@ -101027,7 +102111,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"pbd" = (
/obj/machinery/hologram/holopad,
@@ -101075,18 +102161,15 @@
/turf/simulated/floor/wood,
/area/maintenance/livingcomplex)
"pbA" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "mining_internal"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
+/obj/effect/turf_decal/loading_area{
+ dir = 8
},
-/turf/simulated/floor/plating,
+/turf/simulated/floor/plasteel,
/area/quartermaster/miningstorage)
"pbD" = (
/obj/structure/stairs{
- dir = 4
+ dir = 4;
+ layer = 2
},
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
@@ -101178,12 +102261,6 @@
dir = 4;
color = "#85130b"
},
-/obj/structure/curtain/open/shower/security{
- alpha = 255;
- name = "backstage";
- anchored = 1;
- pixel_y = 32
- },
/turf/simulated/floor/wood{
icon_state = "wood-broken3";
tag = "icon-wood-broken3"
@@ -101302,9 +102379,7 @@
/area/atmos)
"pdg" = (
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "whitepurple";
- tag = "icon-whitepurple (NORTH)"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"pdF" = (
@@ -101423,6 +102498,8 @@
/obj/item/clothing/mask/muzzle,
/obj/item/reagent_containers/hypospray/safety,
/obj/item/reagent_containers/hypospray/safety,
+/obj/item/clothing/glasses/sunglasses/blindfold/black,
+/obj/item/storage/belt/medical/surgery/loaded,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "dark"
@@ -101676,7 +102753,8 @@
dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"pgr" = (
@@ -102098,7 +103176,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"piU" = (
/obj/structure/sign/directions/engineering{
@@ -102409,7 +103489,9 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"pkT" = (
/obj/structure/table,
@@ -102538,8 +103620,7 @@
pixel_y = 32
},
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "brown"
+ dir = 1
},
/area/quartermaster/lobby)
"plN" = (
@@ -102576,6 +103657,18 @@
/obj/effect/decal/warning_stripes/north,
/turf/simulated/floor/plasteel/airless,
/area/toxins/test_area)
+"pmm" = (
+/obj/machinery/door/firedoor,
+/obj/effect/decal/warning_stripes/yellow,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1
+ },
+/area/security/lobby)
"pmo" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small,
@@ -102622,6 +103715,13 @@
/obj/item/reagent_containers/iv_bag/blood/BMinus,
/obj/item/reagent_containers/iv_bag/blood/BPlus,
/obj/item/reagent_containers/iv_bag/blood/AMinus,
+/obj/machinery/door/window/eastright{
+ base_state = "left";
+ icon_state = "left";
+ name = "Blood Bag Storage";
+ req_access = list(5);
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whiteblue"
@@ -103079,12 +104179,14 @@
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -103396,7 +104498,7 @@
/obj/effect/decal/warning_stripes/north,
/obj/structure/fans/tiny,
/turf/simulated/floor/plating,
-/area/chapel/main)
+/area/chapel/massdriver)
"pty" = (
/obj/structure/bookcase{
name = "bookcase (Non-Fiction)"
@@ -103441,10 +104543,16 @@
/turf/simulated/floor/plating,
/area/security/hos)
"ptP" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/item/paper_bin,
+/obj/machinery/door/airlock/external{
+ frequency = 1379;
+ id_tag = "vir_maint2_inner";
+ locked = 1;
+ name = "West Maintenance External Access";
+ req_access = list(10,13)
+ },
+/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plating,
-/area/maintenance/xenozoo)
+/area/maintenance/asmaint4)
"ptQ" = (
/obj/structure/extinguisher_cabinet{
name = "north extinguisher cabinet";
@@ -103458,9 +104566,6 @@
"ptU" = (
/obj/item/storage/fancy/donut_box,
/obj/structure/table/wood/fancy/purple,
-/obj/item/radio/intercom{
- pixel_y = -28
- },
/turf/simulated/floor/carpet/purple,
/area/crew_quarters/captain)
"ptW" = (
@@ -103526,7 +104631,9 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"puy" = (
/obj/effect/decal/cleanable/dirt,
@@ -103598,18 +104705,10 @@
},
/area/security/main)
"pvk" = (
-/obj/machinery/light{
- dir = 8
- },
-/obj/machinery/camera{
- c_tag = "Central Ring Hallway West 1";
- dir = 4
- },
/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "neutral"
+ icon_state = "red"
},
-/area/hallway/primary/central/west)
+/area/security/lobby)
"pvn" = (
/obj/structure/bed,
/obj/item/bedsheet/medical{
@@ -103705,7 +104804,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"pvI" = (
/obj/machinery/door/airlock/security/glass{
id_tag = "BrigLeft";
@@ -103802,10 +104901,13 @@
c_tag = "Cremator";
dir = 8
},
+/obj/machinery/light_switch{
+ pixel_x = 26
+ },
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"pwp" = (
/obj/structure/chair/stool,
/obj/effect/decal/cleanable/dust,
@@ -103876,7 +104978,7 @@
dir = 8;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"pwZ" = (
/obj/structure/dispenser/oxygen,
/obj/machinery/light{
@@ -103954,7 +105056,7 @@
dir = 10;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"pxI" = (
/obj/structure/window/reinforced{
dir = 8
@@ -104016,9 +105118,20 @@
},
/area/hallway/primary/central/sw)
"pyi" = (
-/obj/structure/stairs,
+/obj/structure/stairs{
+ layer = 2
+ },
/turf/simulated/floor/plating,
/area/maintenance/casino)
+"pyk" = (
+/obj/structure/railing/corner{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "brown"
+ },
+/area/quartermaster/miningstorage)
"pyl" = (
/obj/machinery/door/airlock/maintenance{
name = "Kitchen Maintenance";
@@ -104065,12 +105178,10 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 4
- },
/obj/structure/cable{
icon_state = "2-8"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel,
/area/maintenance/xenozoo)
"pyA" = (
@@ -104256,6 +105367,8 @@
},
/area/hallway/secondary/entry/additional)
"pzD" = (
+/obj/machinery/telepad_cargo,
+/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whitepurplecorner"
@@ -104280,9 +105393,6 @@
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"pzK" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/turretid/stun{
control_area = "AI Satellite Antechamber";
name = "AI Antechamber Turret Control";
@@ -104301,7 +105411,7 @@
dir = 10;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"pzY" = (
/obj/effect/decal/warning_stripes/south,
/obj/item/radio/intercom{
@@ -104494,6 +105604,9 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/contraband/atmosia_independence{
+ pixel_x = 32
+ },
/turf/simulated/floor/plasteel{
icon_state = "yellowfull"
},
@@ -104596,13 +105709,17 @@
icon_state = "darkyellow"
},
/area/bridge)
+"pBJ" = (
+/obj/structure/sign/poster/contraband/random,
+/turf/simulated/wall,
+/area/maintenance/apmaint)
"pBK" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 5
- },
/obj/structure/chair/comfy/red{
dir = 4
},
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
+ },
/turf/simulated/floor/carpet/red,
/area/security/prison/cell_block/A)
"pBN" = (
@@ -104829,7 +105946,9 @@
/area/security/hos)
"pDK" = (
/obj/machinery/atmospherics/unary/vent_pump/on,
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"pDN" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -105043,6 +106162,10 @@
d2 = 2;
icon_state = "0-2"
},
+/obj/structure/sign/directions/floor/alt{
+ dir = 6;
+ pixel_y = 32
+ },
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"pFH" = (
@@ -105081,7 +106204,13 @@
},
/area/security/customs)
"pFQ" = (
-/obj/machinery/atmospherics/unary/vent_pump/on,
+/obj/machinery/atmospherics/unary/vent_scrubber{
+ dir = 2;
+ name = "standard air scrubber";
+ on = 1;
+ scrub_N2O = 1;
+ scrub_Toxins = 1
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -105206,6 +106335,12 @@
icon_state = "neutralfull"
},
/area/hallway/secondary/entry/commercial)
+"pGo" = (
+/obj/structure/table/glass,
+/obj/item/clipboard,
+/obj/item/toy/figure/md,
+/turf/simulated/floor/carpet/cyan,
+/area/medical/medrest)
"pGy" = (
/obj/machinery/light{
dir = 4
@@ -105219,7 +106354,8 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"pGz" = (
@@ -105323,7 +106459,7 @@
},
/obj/machinery/airlock_sensor{
id_tag = "station_ai_sensor";
- pixel_y = -10;
+ pixel_y = 7;
pixel_x = 57
},
/turf/simulated/floor/plasteel{
@@ -105338,13 +106474,13 @@
},
/area/bridge)
"pHv" = (
-/obj/structure/chair/office{
- dir = 4
- },
/obj/structure/window/reinforced{
dir = 8
},
/obj/effect/landmark/start/civilian,
+/obj/structure/chair{
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_regular_floor = "yellowsiding";
@@ -105483,7 +106619,8 @@
location = "C9"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"pIU" = (
@@ -105850,7 +106987,7 @@
scrub_N2O = 1;
scrub_Toxins = 1
},
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"pLX" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -106028,7 +107165,7 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/obj/machinery/atmospherics/unary/vent_pump/on,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -106163,6 +107300,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/sign/poster/contraband/random{
+ pixel_y = -32
+ },
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"pNR" = (
@@ -106302,13 +107442,12 @@
/turf/simulated/floor/plasteel,
/area/engineering/gravitygenerator)
"pOS" = (
-/obj/structure/cable{
- icon_state = "1-2";
- tag = ""
+/obj/machinery/atmospherics/unary/portables_connector{
+ dir = 1
},
-/obj/structure/disposalpipe/segment,
+/obj/machinery/portable_atmospherics/canister/air,
/turf/simulated/floor/plating,
-/area/medical/virology/lab)
+/area/maintenance/asmaint4)
"pOZ" = (
/obj/structure/window/reinforced{
dir = 4
@@ -106513,7 +107652,7 @@
dir = 4;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"pQE" = (
/obj/effect/turf_decal/siding/wood{
dir = 6
@@ -106715,10 +107854,9 @@
},
/area/engineering/hardsuitstorage)
"pSb" = (
-/obj/structure/closet,
-/obj/effect/spawner/lootdrop/maintenance/tripple,
+/obj/machinery/pipedispenser,
/turf/simulated/floor/plating,
-/area/maintenance/apmaint)
+/area/maintenance/atmospherics)
"pSd" = (
/turf/simulated/floor/plasteel,
/area/storage/primary)
@@ -106808,21 +107946,24 @@
},
/area/crew_quarters/serviceyard)
"pTe" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
/obj/structure/cable{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"pTg" = (
/obj/machinery/atmospherics/trinary/tvalve/digital/bypass,
/turf/simulated/floor/plasteel,
@@ -107126,6 +108267,13 @@
/obj/item/reagent_containers/iv_bag/blood/vulpkanin,
/obj/item/reagent_containers/iv_bag/blood/wryn,
/obj/effect/decal/warning_stripes/blue/hollow,
+/obj/machinery/door/window/eastright{
+ base_state = "left";
+ icon_state = "left";
+ name = "Blood Bag Storage";
+ req_access = list(5);
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "whiteblue"
@@ -107146,6 +108294,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"pVm" = (
@@ -107319,6 +108470,15 @@
/obj/machinery/light/small,
/turf/simulated/floor/plating,
/area/maintenance/brig)
+"pWd" = (
+/obj/machinery/computer/security/telescreen/entertainment{
+ pixel_y = 30
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "darkred"
+ },
+/area/security/permahallway)
"pWf" = (
/turf/simulated/floor/plasteel{
dir = 1;
@@ -107394,6 +108554,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel,
/area/maintenance/xenozoo)
"pWx" = (
@@ -107414,10 +108577,10 @@
/turf/simulated/floor/plating,
/area/security/range)
"pWy" = (
-/obj/effect/spawner/window/reinforced,
/obj/structure/cable{
icon_state = "0-2"
},
+/obj/effect/spawner/window/reinforced/plasma,
/turf/simulated/floor/plating,
/area/storage/tech)
"pWE" = (
@@ -107427,6 +108590,14 @@
icon_state = "red"
},
/area/hallway/primary/central/second/west)
+"pWF" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/plating,
+/area/maintenance/gambling_den)
"pWK" = (
/turf/simulated/wall,
/area/crew_quarters/fitness)
@@ -107646,7 +108817,7 @@
/turf/simulated/floor/carpet/royalblack,
/area/bridge/meeting_room)
"pYo" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/obj/structure/sign/poster/contraband/have_a_puff{
@@ -107790,6 +108961,11 @@
"pYS" = (
/obj/structure/window/reinforced,
/obj/item/flag/nt,
+/obj/structure/sign/tajarplaque{
+ desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Den10g. Слава НаноТрейзен!";
+ name = "Благодарственное Письмо от Главного Инженера станции Нова";
+ pixel_y = 32
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -107992,12 +109168,12 @@
/obj/structure/table/wood{
color = "#996633"
},
-/obj/machinery/photocopier/faxmachine/longrange{
- department = "NT Representative's Office"
- },
/obj/item/radio/intercom{
pixel_x = 28
},
+/obj/machinery/photocopier/faxmachine/longrange{
+ department = "NT Representative's Office"
+ },
/turf/simulated/floor/carpet/royalblack,
/area/ntrep)
"qaJ" = (
@@ -108055,14 +109231,9 @@
/turf/simulated/floor/grass,
/area/crew_quarters/fitness)
"qbi" = (
-/obj/structure/cable{
- icon_state = "2-4"
- },
-/obj/structure/disposalpipe/segment{
- dir = 6
- },
+/obj/machinery/door/airlock/maintenance,
/turf/simulated/floor/plating,
-/area/medical/virology/lab)
+/area/maintenance/asmaint4)
"qbk" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -108266,11 +109437,6 @@
},
/area/security/range)
"qcz" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/structure/cable{
icon_state = "1-4"
},
@@ -108281,6 +109447,17 @@
codes_txt = "patrol;next_patrol=L8";
location = "L7"
},
+/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -108452,7 +109629,7 @@
name = "pod4 home dock";
width = 5
},
-/turf/space{
+/turf/space/openspace{
icon_state = "black"
},
/area/space)
@@ -108677,26 +109854,15 @@
/area/security/permahallway)
"qgf" = (
/obj/structure/table,
-/obj/item/storage/box/syringes{
- pixel_y = 15
- },
-/obj/item/storage/box/syringes{
- pixel_y = 15;
- pixel_x = 4
- },
-/obj/item/storage/fancy/vials{
- pixel_x = 3;
- pixel_y = 4
- },
-/obj/item/storage/lockbox/vials{
- pixel_y = -1;
- pixel_x = -2
+/obj/item/storage/box/donkpockets{
+ pixel_x = 2;
+ pixel_y = 3
},
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"qgg" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable,
@@ -109158,7 +110324,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"qjQ" = (
/turf/simulated/floor/plasteel{
icon_state = "whiteyellow"
@@ -109326,6 +110492,11 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
+/mob/living/simple_animal/hostile/killertomato{
+ desc = "Прирученный ботаниками томат-убийца. Не подпускать к Сане.";
+ faction = list("plants","neutral","hostile");
+ name = "Витамин"
+ },
/turf/simulated/floor/plasteel{
dir = 5
},
@@ -109647,13 +110818,13 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/door/airlock/mining/glass{
- name = "Disposal Bay";
- req_access = list(31)
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/machinery/door/airlock/mining{
+ name = "Cargo Bay";
+ req_access = list(31)
+ },
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"qod" = (
@@ -109848,7 +111019,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"qqq" = (
/obj/structure/chair/comfy/teal{
dir = 8
@@ -109942,7 +111113,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"qrs" = (
/obj/structure/cable{
icon_state = "2-4"
@@ -109957,10 +111128,10 @@
dir = 8
},
/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random_spawners/blood_5,
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"qrC" = (
-/obj/item/twohanded/required/kirbyplants,
/obj/machinery/firealarm{
dir = 1;
pixel_y = 26
@@ -110494,11 +111665,12 @@
},
/area/security/permabrig)
"quw" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
+/obj/structure/cable{
+ icon_state = "4-8"
},
/turf/simulated/floor/plasteel{
dir = 1
@@ -110750,6 +111922,8 @@
/obj/machinery/light{
dir = 4
},
+/obj/machinery/telepad_cargo,
+/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "yellow"
@@ -110790,9 +111964,22 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
+"qwG" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/power/apc{
+ dir = 1;
+ pixel_y = 26
+ },
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/disposal)
"qwI" = (
/turf/simulated/floor/plasteel{
icon_state = "freezerfloor"
@@ -110846,12 +112033,12 @@
/obj/item/rcd_ammo,
/obj/item/clothing/glasses/meson,
/obj/item/clothing/glasses/meson,
-/obj/item/clothing/gloves/color/yellow/fake,
-/obj/item/clothing/gloves/color/yellow/fake,
/obj/machinery/light/small{
dir = 8
},
/obj/effect/decal/cleanable/dirt,
+/obj/item/clothing/gloves/color/fyellow,
+/obj/item/clothing/gloves/color/fyellow,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -110971,7 +112158,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"qyn" = (
/obj/structure/chair/sofa/pew/right{
dir = 4
@@ -111065,6 +112252,9 @@
on = 1
},
/obj/structure/curtain/open/shower/security,
+/obj/item/radio/intercom{
+ pixel_x = 30
+ },
/turf/simulated/floor/plasteel{
icon_state = "showroomfloor"
},
@@ -111076,7 +112266,7 @@
icon_state = "1-4"
},
/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "1-8"
},
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
@@ -111150,7 +112340,9 @@
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"qzm" = (
-/obj/structure/stairs,
+/obj/structure/stairs{
+ layer = 2
+ },
/turf/simulated/floor/plasteel,
/area/hallway/primary/fore)
"qzn" = (
@@ -111304,7 +112496,13 @@
req_access = list(73);
security_level = 1
},
-/turf/simulated/floor/carpet/royalblack,
+/obj/effect/turf_decal/siding/wood{
+ dir = 8
+ },
+/obj/effect/turf_decal/siding/wood{
+ dir = 4
+ },
+/turf/simulated/floor/wood/dark,
/area/ntrep)
"qAG" = (
/obj/machinery/vending/snack,
@@ -111318,6 +112516,16 @@
/obj/structure/closet/secure_closet/chaplain,
/turf/simulated/floor/carpet,
/area/chapel/office)
+"qAM" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1
+ },
+/area/security/lobby)
"qAN" = (
/obj/structure/cable{
d1 = 4;
@@ -111360,7 +112568,8 @@
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/caution/red,
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"qAY" = (
@@ -111376,7 +112585,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"qBf" = (
/obj/structure/window/reinforced{
@@ -111503,16 +112714,16 @@
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/machinery/light,
/turf/simulated/floor/plasteel{
- dir = 6;
- icon_state = "whitepurple";
- tag = "icon-whitepurple (SOUTHEAST)"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"qBQ" = (
/obj/effect/decal/warning_stripes/northwest,
-/obj/machinery/vending/plasmaresearch,
-/obj/machinery/firealarm{
- pixel_y = 26
+/obj/machinery/atmospherics/unary/cold_sink/freezer{
+ dir = 2
+ },
+/obj/structure/sign/fire{
+ pixel_y = 32
},
/turf/simulated/floor/plasteel{
icon_state = "neutralcorner"
@@ -111562,11 +112773,20 @@
},
/area/maintenance/cafeteria)
"qBV" = (
-/obj/structure/disposalpipe/segment{
- dir = 5
+/obj/machinery/access_button{
+ command = "cycle_interior";
+ frequency = 1379;
+ master_tag = "vir_maint2_airlock";
+ name = "interior access button";
+ pixel_x = -24;
+ pixel_y = -24
},
-/turf/simulated/floor/plating/airless,
-/area/space)
+/obj/structure/sign/vacuum{
+ pixel_y = 32
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/simulated/floor/plating,
+/area/maintenance/asmaint4)
"qBX" = (
/obj/structure/disposalpipe/junction/reversed{
dir = 4
@@ -111583,6 +112803,7 @@
},
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/obj/machinery/hologram/holopad,
+/obj/effect/decal/warning_stripes/blue/hollow,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -111671,8 +112892,8 @@
dir = 1
},
/obj/machinery/door/firedoor,
-/turf/simulated/floor/plasteel{
- icon_state = "neutralfull"
+/turf/simulated/floor/engine{
+ slowdown = -0.3
},
/area/hallway/primary/central)
"qCP" = (
@@ -111702,7 +112923,7 @@
/turf/simulated/floor/plasteel{
icon_state = "darkredcorners"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"qDk" = (
/obj/machinery/optable,
/obj/machinery/shower{
@@ -111885,7 +113106,8 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"qEE" = (
@@ -111966,6 +113188,13 @@
dir = 1
},
/area/hallway/primary/central/second/east)
+"qFi" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/disposal)
"qFu" = (
/obj/machinery/door/firedoor,
/obj/effect/decal/warning_stripes/yellow,
@@ -111981,6 +113210,18 @@
},
/turf/simulated/floor/plating,
/area/maintenance/fsmaint3)
+"qFH" = (
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "rampbottom"
+ },
+/area/quartermaster/sorting)
"qFJ" = (
/obj/structure/table/reinforced,
/obj/machinery/light{
@@ -112016,9 +113257,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
/turf/simulated/floor/carpet/cyan,
/area/security/prison/cell_block/A)
"qFV" = (
@@ -112043,6 +113281,13 @@
/obj/structure/chair/office/light{
dir = 8
},
+/obj/machinery/atmospherics/unary/vent_scrubber{
+ name = "standard air scrubber";
+ on = 1;
+ scrub_N2O = 1;
+ scrub_Toxins = 1;
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -112203,6 +113448,10 @@
/obj/effect/spawner/window/reinforced,
/turf/simulated/floor/plating,
/area/hallway/primary/central/north)
+"qHS" = (
+/obj/effect/spawner/random_spawners/fungus_30,
+/turf/simulated/wall,
+/area/maintenance/trading)
"qHU" = (
/obj/structure/chair{
dir = 1
@@ -112316,7 +113565,7 @@
},
/area/security/range)
"qIz" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/turf/simulated/floor/wood/fancy/light,
/area/crew_quarters/serviceyard)
"qIC" = (
@@ -112329,6 +113578,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
dir = 6;
icon_state = "vault"
@@ -112404,7 +113656,7 @@
pixel_y = -25
},
/turf/simulated/floor/plasteel{
- dir = 1
+ icon_state = "red"
},
/area/security/lobby)
"qJQ" = (
@@ -112539,11 +113791,11 @@
/turf/simulated/floor/wood,
/area/quartermaster/qm)
"qKH" = (
-/obj/structure/chair/office,
/obj/effect/turf_decal/siding/wood{
dir = 8;
do_not_delete_me = 1
},
+/obj/structure/chair/office,
/turf/simulated/floor/wood/oak,
/area/crew_quarters/courtroom)
"qKI" = (
@@ -112596,11 +113848,12 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/structure/disposalpipe/junction{
- dir = 4
- },
/obj/machinery/hologram/holopad,
/obj/effect/landmark/event/lightsout,
+/obj/structure/disposalpipe/junction{
+ dir = 4;
+ tag = "icon-pipe-j1 (EAST)"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -112684,7 +113937,7 @@
/turf/simulated/floor/plating,
/area/maintenance/casino)
"qMq" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 4
},
@@ -112757,12 +114010,14 @@
req_access = list(1);
color = "red"
},
-/obj/item/clothing/head/helmet/night,
-/obj/item/clothing/head/helmet/night{
- pixel_y = -2
+/obj/item/gun/energy/gun/advtaser{
+ pixel_x = -3;
+ pixel_y = 3
},
-/obj/item/clothing/head/helmet/night{
- pixel_y = -4
+/obj/item/gun/energy/gun/advtaser,
+/obj/item/gun/energy/gun/advtaser{
+ pixel_x = 3;
+ pixel_y = -3
},
/turf/simulated/floor/plasteel{
icon_state = "dark"
@@ -112916,9 +114171,10 @@
},
/area/quartermaster/miningstorage)
"qNY" = (
-/obj/structure/girder/reinforced,
-/turf/simulated/floor/plating,
-/area/maintenance/maintcentral)
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/tcommsat/server)
"qOc" = (
/obj/machinery/disposal,
/obj/structure/disposalpipe/trunk{
@@ -113087,13 +114343,27 @@
},
/area/quartermaster/office)
"qOG" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 2;
+ frequency = 1379;
+ id_tag = "vir_maint2_pump"
+ },
+/obj/machinery/embedded_controller/radio/airlock/airlock_controller{
+ id_tag = "vir_maint2_airlock";
+ pixel_y = 25;
+ tag_airpump = "vir_maint2_pump";
+ tag_chamber_sensor = "vir_maint2_sensor";
+ tag_exterior_door = "vir_maint2_outer";
+ tag_interior_door = "vir_maint2_inner"
+ },
+/obj/machinery/airlock_sensor{
+ id_tag = "vir_maint2_sensor";
+ pixel_y = 33
+ },
+/obj/effect/decal/warning_stripes/yellow,
+/obj/machinery/light/small{
+ dir = 1
},
-/obj/effect/spawner/random_spawners/rodent,
/turf/simulated/floor/plating,
/area/maintenance/asmaint4)
"qON" = (
@@ -113172,7 +114442,8 @@
dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"qPb" = (
@@ -113382,7 +114653,7 @@
/obj/structure/railing{
dir = 9
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/obj/effect/landmark/start/cargo_technician,
@@ -113413,9 +114684,11 @@
},
/area/engineering/engine)
"qQJ" = (
+/obj/structure/table/reinforced,
+/obj/item/flash,
+/obj/machinery/cell_charger,
/turf/simulated/floor/plasteel{
- dir = 10;
- icon_state = "darkred"
+ icon_state = "dark"
},
/area/turret_protected/ai)
"qQP" = (
@@ -113531,7 +114804,7 @@
dir = 8;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"qRN" = (
/obj/machinery/camera{
c_tag = "Library Games Room";
@@ -113646,7 +114919,7 @@
dir = 5;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"qSA" = (
/obj/machinery/door/airlock/maintenance{
req_access = list(12)
@@ -113815,7 +115088,8 @@
icon_state = "4-8"
},
/turf/simulated/floor/plasteel{
- icon_state = "white"
+ dir = 8;
+ icon_state = "whitepurple"
},
/area/toxins/mixing)
"qTR" = (
@@ -113888,6 +115162,11 @@
/obj/structure/disposalpipe/segment{
dir = 10
},
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plating,
/area/maintenance/disposal)
"qUp" = (
@@ -114158,7 +115437,7 @@
dir = 10;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"qWJ" = (
/obj/structure/table/reinforced,
/obj/effect/decal/warning_stripes/yellow/hollow,
@@ -114248,12 +115527,9 @@
},
/area/security/hos)
"qYa" = (
-/obj/machinery/conveyor{
- dir = 8;
- id = "mining_internal"
+/turf/simulated/floor/plasteel{
+ icon_state = "browncorner"
},
-/obj/structure/plasticflaps,
-/turf/simulated/floor/plating,
/area/quartermaster/miningstorage)
"qYb" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -114360,6 +115636,10 @@
/obj/structure/chair{
dir = 4
},
+/obj/machinery/alarm{
+ dir = 4;
+ pixel_x = -24
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "red"
@@ -114405,7 +115685,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"qZb" = (
/obj/machinery/firealarm{
@@ -114469,7 +115751,8 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"qZw" = (
@@ -114582,16 +115865,12 @@
/turf/simulated/floor/wood,
/area/crew_quarters/arcade)
"rab" = (
-/obj/structure/table/reinforced,
/obj/effect/decal/warning_stripes/yellow/hollow,
-/obj/item/storage/toolbox/mechanical,
/obj/machinery/light{
dir = 1;
in_use = 1
},
-/obj/structure/extinguisher_cabinet{
- pixel_y = 30
- },
+/obj/machinery/vending/plasmaresearch,
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "whitepurple"
@@ -114666,7 +115945,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"rbe" = (
/obj/effect/decal/warning_stripes/northeast,
@@ -114734,7 +116015,7 @@
dir = 4
},
/turf/simulated/floor/plasteel,
-/area/engineering/engine)
+/area/engineering/break_room)
"rcb" = (
/obj/structure/closet/boxinggloves,
/turf/simulated/floor/plasteel,
@@ -115163,11 +116444,13 @@
/area/crew_quarters/serviceyard)
"rfY" = (
/obj/effect/decal/warning_stripes/southeastcorner,
-/obj/machinery/computer/pandemic,
/obj/machinery/light{
dir = 1;
in_use = 1
},
+/obj/machinery/chem_master{
+ pixel_x = -1
+ },
/turf/simulated/floor/plasteel,
/area/medical/virology/lab)
"rge" = (
@@ -115210,7 +116493,7 @@
/obj/effect/decal/warning_stripes/northwest,
/obj/structure/closet/firecloset,
/turf/simulated/floor/plasteel,
-/area/engineering/engine)
+/area/engineering/break_room)
"rgA" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
@@ -115447,26 +116730,13 @@
/turf/simulated/floor/plating,
/area/security/permabrig)
"ris" = (
-/obj/machinery/door/airlock/medical{
- name = "Virology Bedroom";
- req_access = list(39)
- },
-/obj/effect/turf_decal/siding/wood{
+/obj/machinery/atmospherics/unary/portables_connector{
+ layer = 2;
dir = 8
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/carpet/green,
-/area/medical/virology)
+/obj/machinery/portable_atmospherics/canister/air,
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"riu" = (
/obj/machinery/photocopier,
/obj/machinery/camera{
@@ -115582,9 +116852,6 @@
},
/area/aisat/aihallway)
"riR" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 1
},
@@ -115601,6 +116868,9 @@
/obj/effect/turf_decal/siding/white{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/simulated/floor/glass,
/area/crew_quarters/locker)
"riV" = (
@@ -115660,7 +116930,7 @@
},
/area/hallway/primary/central/second/north)
"rjI" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/item/radio/intercom{
dir = 8;
pixel_y = 24
@@ -115776,7 +117046,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/carpet/red,
/area/security/prison/cell_block/A)
"rkW" = (
@@ -115789,7 +117058,8 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"rkX" = (
@@ -115917,6 +117187,41 @@
icon_state = "tranquillite"
},
/area/crew_quarters/kitchen)
+"rlz" = (
+/obj/structure/closet/crate/medical,
+/obj/item/reagent_containers/spray/cleaner{
+ pixel_x = -4;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/spray/cleaner{
+ pixel_x = -11;
+ pixel_y = 5
+ },
+/obj/item/storage/box/beakers{
+ pixel_x = 8;
+ pixel_y = 2
+ },
+/obj/item/storage/box/beakers{
+ pixel_y = -1
+ },
+/obj/item/storage/box/syringes{
+ pixel_x = 10;
+ pixel_y = -3
+ },
+/obj/item/storage/box/gloves{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ dir = 4;
+ pixel_x = 26
+ },
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"rlC" = (
/obj/effect/spawner/random_spawners/rodent,
/turf/simulated/floor/plating,
@@ -116182,12 +117487,10 @@
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
/obj/structure/cable{
icon_state = "1-8"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -116487,7 +117790,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/simulated/floor/plasteel,
+/turf/simulated/floor/plasteel{
+ icon_state = "brownfull"
+ },
/area/quartermaster/miningstorage)
"rpl" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -116523,6 +117828,7 @@
on = 0;
pixel_y = 8
},
+/obj/item/deck/cards,
/turf/simulated/floor/carpet/royalblack,
/area/maintenance/fsmaint2)
"rpx" = (
@@ -116917,6 +118223,15 @@
},
/turf/simulated/openspace,
/area/crew_quarters/serviceyard)
+"rtD" = (
+/obj/structure/chair/sofa/pew/right{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "chapel"
+ },
+/area/chapel/main)
"rtK" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
@@ -117002,7 +118317,7 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- dir = 1
+ icon_state = "red"
},
/area/security/lobby)
"ruz" = (
@@ -117023,7 +118338,7 @@
/obj/effect/decal/cleanable/dust,
/obj/item/radio/intercom{
name = "north station intercom (General)";
- pixel_y = 28
+ pixel_y = 24
},
/obj/machinery/light/small{
dir = 1
@@ -117602,6 +118917,7 @@
pixel_x = 32
},
/obj/effect/decal/cleanable/dirt,
+/obj/item/suppressor,
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "darkredalt"
@@ -117612,18 +118928,17 @@
/obj/effect/decal/cleanable/blood/tracks{
dir = 4
},
-/obj/structure/chair,
/obj/structure/cable{
d1 = 1;
d2 = 4;
icon_state = "1-4"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
/turf/simulated/floor/plating,
/area/maintenance/xenozoo)
"rxW" = (
@@ -117707,6 +119022,16 @@
icon_state = "neutralfull"
},
/area/hallway/primary/central/east)
+"ryC" = (
+/obj/item/radio/intercom{
+ name = "west station intercom (General)";
+ pixel_x = 28
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "blue"
+ },
+/area/hallway/primary/central/nw)
"ryD" = (
/turf/simulated/floor/plasteel{
dir = 4;
@@ -117714,7 +119039,7 @@
},
/area/chapel/main)
"ryG" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/brig)
@@ -118068,6 +119393,10 @@
dir = 4
},
/obj/effect/decal/warning_stripes/southwest,
+/obj/machinery/firealarm{
+ pixel_y = -27;
+ pixel_x = 27
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "neutralcorner"
@@ -118204,17 +119533,13 @@
},
/area/atmos)
"rCn" = (
-/obj/structure/railing{
- dir = 1
- },
/obj/structure/sign/cargo{
pixel_x = 32
},
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
+/obj/machinery/door/firedoor,
+/obj/effect/decal/warning_stripes/yellow,
/turf/simulated/floor/plasteel{
- dir = 5;
+ dir = 4;
icon_state = "brown"
},
/area/quartermaster/lobby)
@@ -118486,15 +119811,14 @@
},
/area/quartermaster/office)
"rEE" = (
-/obj/item/radio/intercom{
- name = "west station intercom (General)";
- pixel_x = -28
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/contraband/punch_shit{
+ pixel_y = -32
},
/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "blue"
+ icon_state = "darkgrey"
},
-/area/hallway/primary/central/nw)
+/area/maintenance/gambling_den)
"rEG" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -118676,20 +120000,23 @@
/area/maintenance/casino)
"rFQ" = (
/obj/structure/table,
-/obj/item/storage/box/pillbottles{
- pixel_x = 8;
- pixel_y = 4
+/obj/item/storage/box/syringes{
+ pixel_x = -6
+ },
+/obj/machinery/light{
+ dir = 1
},
/obj/item/storage/box/pillbottles{
pixel_x = 8
},
-/obj/item/storage/box/syringes{
- pixel_x = -6
- },
/obj/item/storage/box/syringes{
pixel_x = -6;
pixel_y = 4
},
+/obj/item/storage/box/pillbottles{
+ pixel_x = 8;
+ pixel_y = 4
+ },
/obj/item/storage/box/autoinjectors{
pixel_x = -6;
pixel_y = 8
@@ -118698,9 +120025,6 @@
pixel_x = 8;
pixel_y = 8
},
-/obj/machinery/light{
- dir = 1
- },
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whiteblue"
@@ -118814,6 +120138,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
},
+/obj/item/stack/spacecash/c20,
/turf/simulated/floor/carpet/green,
/area/maintenance/casino)
"rGy" = (
@@ -119129,8 +120454,8 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/plasteel{
- icon_state = "neutralfull"
+/turf/simulated/floor/engine{
+ slowdown = -0.3
},
/area/hallway/primary/central)
"rJc" = (
@@ -119191,6 +120516,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plating,
/area/maintenance/backstage)
"rJB" = (
@@ -119209,18 +120535,10 @@
},
/area/hallway/primary/central/east)
"rJG" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
-/obj/machinery/disposal,
-/obj/structure/disposalpipe/trunk{
- dir = 2
- },
+/obj/machinery/door/firedoor,
+/obj/effect/decal/warning_stripes/yellow,
/turf/simulated/floor/plasteel{
- dir = 1;
+ dir = 8;
icon_state = "red"
},
/area/security/lobby)
@@ -119292,8 +120610,7 @@
pixel_y = 32
},
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "brown"
+ dir = 1
},
/area/quartermaster/lobby)
"rKj" = (
@@ -119308,7 +120625,7 @@
/turf/simulated/floor/plasteel,
/area/storage/eva)
"rKn" = (
-/turf/space{
+/turf/space/openspace{
icon_state = "black"
},
/area/quartermaster/miningdock)
@@ -119397,12 +120714,15 @@
},
/area/chapel/office)
"rLc" = (
-/obj/effect/decal/warning_stripes/northwest,
-/obj/machinery/atmospherics/unary/cold_sink/freezer{
+/obj/structure/stairs{
+ dir = 1;
+ layer = 2
+ },
+/obj/structure/railing{
dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "neutralcorner"
+ icon_state = "white"
},
/area/toxins/mixing)
"rLd" = (
@@ -119465,7 +120785,9 @@
/obj/structure/window/reinforced{
dir = 8
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"rLE" = (
/obj/structure/table/wood,
@@ -119513,17 +120835,12 @@
},
/area/security/permabrig)
"rLZ" = (
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
+/obj/machinery/light{
dir = 4
},
-/obj/effect/decal/warning_stripes/yellow,
-/obj/machinery/door/window/eastleft{
- name = "Mail";
- req_access = list(50);
- dir = 1
+/obj/structure/sign/directions/floor/alt{
+ dir = 8;
+ pixel_x = 28
},
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
@@ -119535,10 +120852,8 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
-/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "greencorner"
+ dir = 5
},
/area/hydroponics)
"rMb" = (
@@ -119549,38 +120864,35 @@
/area/crew_quarters/fitness)
"rMe" = (
/obj/machinery/autolathe/security,
-/obj/item/stack/sheet/metal{
- amount = 10
- },
-/obj/item/stack/sheet/glass{
- amount = 10
- },
/obj/item/radio/intercom{
pixel_y = 24
},
/obj/effect/decal/warning_stripes/red/hollow,
+/obj/item/stack/sheet/metal{
+ amount = 30
+ },
+/obj/item/stack/sheet/glass{
+ amount = 30
+ },
/turf/simulated/floor/plasteel{
icon_state = "redfull";
tag = "icon-redfull (NORTHWEST)"
},
/area/security/customs)
"rMj" = (
-/obj/machinery/camera{
- c_tag = "Cargo Backroom";
- dir = 8
- },
-/obj/machinery/light{
+/obj/structure/railing{
dir = 4
},
-/turf/simulated/floor/plasteel,
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "rampbottom"
+ },
/area/quartermaster/sorting)
"rMo" = (
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/carpet/cyan,
/area/security/prison/cell_block/A)
"rMp" = (
@@ -120032,7 +121344,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"rOU" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -120237,6 +121549,9 @@
/turf/simulated/floor/carpet/royalblue,
/area/blueshield)
"rQj" = (
+/obj/structure/table,
+/obj/item/stack/packageWrap,
+/obj/item/hand_labeler,
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "brown"
@@ -120358,6 +121673,21 @@
icon_state = "dark"
},
/area/chapel/office)
+"rRp" = (
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "brown"
+ },
+/area/hallway/primary/central/second/east)
"rRu" = (
/obj/structure/flora/ausbushes/brflowers,
/obj/structure/flora/ausbushes/ywflowers,
@@ -120651,7 +121981,7 @@
/area/hallway/primary/central/south)
"rTJ" = (
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "1-8"
},
/turf/simulated/floor/plasteel{
dir = 4;
@@ -120886,7 +122216,9 @@
/turf/simulated/floor/plating,
/area/toxins/xenobiology)
"rVp" = (
-/obj/structure/stairs,
+/obj/structure/stairs{
+ layer = 2
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -121469,7 +122801,7 @@
},
/area/medical/medbay)
"rZY" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/turf/simulated/floor/wood,
@@ -121549,7 +122881,7 @@
},
/obj/item/storage/belt/utility,
/turf/simulated/floor/redgrid,
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"saQ" = (
/turf/simulated/floor/plasteel{
dir = 4;
@@ -121568,7 +122900,9 @@
dir = 4;
color = "#444444"
},
-/turf/simulated/floor/glass,
+/turf/simulated/floor/glass{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"saY" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -121821,7 +123155,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"scp" = (
/obj/structure/disposalpipe/segment{
dir = 5
@@ -121834,6 +123168,24 @@
icon_state = "escape"
},
/area/bridge/checkpoint/south)
+"scq" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 9;
+ icon_state = "vault"
+ },
+/area/chapel/massdriver)
"scs" = (
/obj/item/stack/cable_coil/random,
/turf/simulated/floor/plating,
@@ -121904,7 +123256,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel{
- icon_state = "purplefull"
+ icon_state = "white"
},
/area/toxins/mixing)
"scM" = (
@@ -121977,7 +123329,9 @@
dir = 8;
color = "#444444"
},
-/turf/simulated/floor/glass,
+/turf/simulated/floor/glass{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"sdm" = (
/obj/structure/sign/biohazard,
@@ -122235,12 +123589,10 @@
/turf/space,
/area/space)
"seH" = (
-/obj/effect/decal/warning_stripes/yellow/hollow,
-/obj/machinery/telepad_cargo,
-/turf/simulated/floor/plasteel{
- dir = 1
- },
-/area/quartermaster/office)
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/plasteel,
+/area/maintenance/apmaint)
"seM" = (
/obj/effect/turf_decal/siding/wood/corner,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -122286,7 +123638,6 @@
layer = 2.9
},
/obj/effect/decal/warning_stripes/red/hollow,
-/obj/item/clothing/suit/armor/bulletproof,
/obj/structure/window/reinforced{
color = "red"
},
@@ -122299,8 +123650,10 @@
req_access = list(1);
color = "red"
},
-/obj/item/clothing/gloves/combat,
-/obj/item/clothing/head/helmet/alt,
+/obj/item/clothing/suit/armor/bulletproof,
+/obj/item/clothing/suit/armor/bulletproof,
+/obj/item/clothing/suit/armor/bulletproof,
+/obj/item/clothing/suit/armor/bulletproof,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -122494,22 +123847,17 @@
},
/area/hallway/primary/central/second/west)
"sgK" = (
-/obj/machinery/door/airlock/medical/glass{
- name = "Virology Bedroom";
- req_access = list(39)
- },
/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/cable{
- icon_state = "2-8"
- },
-/turf/simulated/floor/plasteel{
- icon_state = "white"
+/obj/machinery/atmospherics/pipe/simple/hidden/universal,
+/obj/machinery/door/airlock/maintenance{
+ req_access = list(12,39)
},
-/area/medical/virology)
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"sgU" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/reagent_dispensers/watertank,
@@ -122530,7 +123878,7 @@
c_tag = "Toxin Mixing";
network = list("Research","SS13")
},
-/obj/machinery/status_display{
+/obj/structure/sign/nosmoking_2{
pixel_y = 32
},
/turf/simulated/floor/plasteel{
@@ -122613,7 +123961,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"shT" = (
/obj/effect/decal/warning_stripes/east,
@@ -122627,7 +123977,7 @@
pixel_x = 28
},
/turf/simulated/floor/plasteel,
-/area/engineering/engine)
+/area/engineering/break_room)
"shV" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -122760,6 +124110,7 @@
dir = 1;
pixel_y = 24
},
+/obj/item/rcs,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whitepurple"
@@ -122811,7 +124162,10 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
-/turf/simulated/floor/plasteel,
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "greencorner"
+ },
/area/hydroponics)
"sjZ" = (
/obj/structure/sign/comand{
@@ -122883,7 +124237,8 @@
},
/obj/effect/turf_decal/tile/blue,
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"skC" = (
@@ -122954,7 +124309,7 @@
dir = 4
},
/obj/effect/landmark/start/nanotrasen_rep,
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"skT" = (
/turf/simulated/floor/plasteel{
@@ -122984,9 +124339,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/structure/disposalpipe/segment{
- dir = 5
- },
/obj/effect/landmark/start/botanist,
/turf/simulated/floor/plasteel{
icon_state = "blue"
@@ -123066,7 +124418,7 @@
/obj/machinery/airlock_sensor{
id_tag = "solar_xeno_sensor";
layer = 3.3;
- pixel_y = 36
+ pixel_y = 33
},
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 8;
@@ -123127,11 +124479,12 @@
},
/area/engineering/mechanic_workshop)
"smD" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
+/obj/structure/cable{
+ icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel{
- icon_state = "darkredfull"
+ icon_state = "darkredcorners"
},
/area/turret_protected/ai)
"smE" = (
@@ -123663,7 +125016,7 @@
/obj/structure/railing{
dir = 1
},
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/effect/landmark/start/doctor,
/turf/simulated/floor/plasteel{
icon_state = "whitehall"
@@ -123837,7 +125190,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"ssw" = (
/obj/machinery/camera{
c_tag = "Gravity Generator Area";
@@ -123920,7 +125273,8 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"ssS" = (
@@ -123990,7 +125344,9 @@
},
/area/atmos)
"stA" = (
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"stC" = (
/obj/structure/bed,
@@ -124013,11 +125369,10 @@
},
/area/toxins/xenobiology)
"stL" = (
-/obj/effect/turf_decal/loading_area,
-/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "brown"
+/obj/structure/sign/cargo{
+ pixel_x = -32
},
+/turf/simulated/openspace,
/area/quartermaster/miningstorage)
"stR" = (
/obj/structure/disposalpipe/segment{
@@ -124087,10 +125442,6 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/disposalpipe/segment,
-/obj/machinery/door/airlock/mining/glass{
- name = "Disposal Bay";
- req_access = list(31)
- },
/obj/machinery/door/poddoor{
density = 0;
icon_state = "open";
@@ -124099,6 +125450,10 @@
opacity = 0
},
/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/mining{
+ name = "Cargo Bay";
+ req_access = list(31)
+ },
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"sud" = (
@@ -124159,7 +125514,7 @@
/obj/machinery/embedded_controller/radio/airlock/airlock_controller{
id_tag = "solar_tool_airlock";
layer = 3.3;
- pixel_y = 25;
+ pixel_y = 26;
req_access = list(13);
tag_airpump = "solar_tool_pump";
tag_chamber_sensor = "solar_tool_sensor";
@@ -124169,7 +125524,7 @@
/obj/machinery/airlock_sensor{
id_tag = "solar_tool_sensor";
layer = 3.3;
- pixel_y = 32
+ pixel_y = 33
},
/obj/effect/decal/warning_stripes/yellow,
/obj/structure/cable{
@@ -124439,6 +125794,16 @@
/obj/structure/flora/ausbushes/ywflowers/hell,
/turf/simulated/floor/grass,
/area/hydroponics)
+"swm" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ dir = 8;
+ icon_state = "darkredcorners"
+ },
+/area/turret_protected/ai)
"swp" = (
/obj/machinery/door/airlock{
name = "Unisex Showers"
@@ -124474,6 +125839,15 @@
icon_state = "dark"
},
/area/turret_protected/ai)
+"swN" = (
+/obj/structure/chair/office/dark{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "darkred"
+ },
+/area/turret_protected/ai)
"swP" = (
/obj/machinery/power/apc{
dir = 1;
@@ -124732,7 +126106,7 @@
pixel_x = -24
},
/turf/simulated/floor/plasteel{
- dir = 8;
+ dir = 10;
icon_state = "darkred"
},
/area/turret_protected/ai)
@@ -124803,6 +126177,7 @@
/obj/machinery/light/small{
dir = 1
},
+/obj/effect/spawner/lootdrop/maintenance,
/turf/simulated/floor/plating,
/area/security/permahallway)
"szv" = (
@@ -125063,7 +126438,7 @@
/turf/simulated/floor/redgrid,
/area/engineering/engine)
"sBd" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/machinery/camera{
c_tag = "Rec Room North"
},
@@ -125128,15 +126503,15 @@
/obj/structure/disposalpipe/segment{
dir = 5
},
-/obj/item/radio/intercom{
- name = "south station intercom (General)";
- pixel_x = -28
+/obj/machinery/alarm{
+ dir = 4;
+ pixel_x = -22
},
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"sBo" = (
/obj/effect/decal/warning_stripes/red/hollow,
/obj/structure/chair{
@@ -125183,16 +126558,20 @@
},
/area/security/podbay)
"sBQ" = (
-/obj/machinery/mineral/unloading_machine{
- dir = 1;
- icon_state = "unloader-corner";
- input_dir = 1;
- output_dir = 2
- },
-/obj/effect/turf_decal/stripes/line{
+/obj/machinery/camera{
+ c_tag = "Mining Deep Storage";
dir = 9
},
-/turf/simulated/floor/plating,
+/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/turf_decal/box,
+/obj/machinery/alarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "brown"
+ },
/area/quartermaster/miningstorage)
"sBR" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
@@ -125404,6 +126783,10 @@
dir = 4
},
/obj/effect/decal/warning_stripes/east,
+/obj/machinery/vending/wallmed{
+ name = "Emergency NanoMed";
+ pixel_x = 25
+ },
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry/eastarrival)
"sDU" = (
@@ -125492,7 +126875,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"sEP" = (
/obj/machinery/atmospherics/unary/outlet_injector/on{
dir = 4;
@@ -125611,6 +126994,7 @@
dir = 1;
pixel_y = -24
},
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plasteel{
icon_state = "tranquillite"
},
@@ -125625,19 +127009,10 @@
/turf/simulated/floor/plating,
/area/maintenance/fsmaint3)
"sGa" = (
-/obj/structure/sink{
- dir = 4;
- pixel_x = 12
- },
-/obj/structure/mirror{
- pixel_x = 26
- },
-/obj/structure/toilet{
- pixel_y = 19
- },
-/turf/simulated/floor/plasteel{
- icon_state = "freezerfloor"
- },
+/obj/structure/bed,
+/obj/item/bedsheet/medical,
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/turf/simulated/floor/carpet/green,
/area/medical/virology)
"sGd" = (
/obj/effect/decal/warning_stripes/south,
@@ -125868,12 +127243,10 @@
},
/area/medical/medbay)
"sHy" = (
-/obj/machinery/door/airlock/mining/glass{
- name = "Processing Area";
- req_access = list(48)
- },
/obj/machinery/door/firedoor,
-/turf/simulated/floor/plasteel,
+/turf/simulated/floor/plasteel{
+ icon_state = "brownfull"
+ },
/area/quartermaster/miningstorage)
"sHB" = (
/obj/machinery/disposal,
@@ -126285,7 +127658,9 @@
/area/maintenance/casino)
"sKl" = (
/obj/structure/window/reinforced,
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/twohanded/required/kirbyplants{
+ layer = 3.1
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -126494,7 +127869,7 @@
icon_state = "0-8"
},
/turf/simulated/floor/plating,
-/area/medical/virology/lab)
+/area/medical/virology)
"sMu" = (
/obj/machinery/camera{
c_tag = "Second Floor Central Lobby North"
@@ -126529,6 +127904,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -126537,10 +127915,15 @@
/obj/structure/chair{
dir = 1
},
+/obj/machinery/firealarm{
+ dir = 1;
+ name = "south fire alarm";
+ pixel_y = -24
+ },
/turf/simulated/floor/plasteel{
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"sMH" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/cable{
@@ -126552,12 +127935,15 @@
/turf/simulated/floor/plating,
/area/security/permabrig)
"sMR" = (
-/obj/machinery/atmospherics/unary/portables_connector{
- dir = 1
+/obj/structure/stairs{
+ dir = 1;
+ layer = 2
+ },
+/obj/structure/railing{
+ dir = 4
},
-/obj/machinery/portable_atmospherics/canister/air,
/turf/simulated/floor/plating,
-/area/medical/virology/lab)
+/area/maintenance/asmaint4)
"sMX" = (
/obj/effect/decal/warning_stripes/north,
/obj/machinery/camera{
@@ -126647,15 +128033,19 @@
d2 = 8;
icon_state = "1-8"
},
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/structure/disposalpipe/segment{
- invisibility = 101
- },
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 8
},
+/obj/structure/disposalpipe/junction/yjunction{
+ dir = 8
+ },
+/obj/machinery/hologram/holopad,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -126789,11 +128179,19 @@
},
/area/crew_quarters/fitness)
"sOA" = (
-/obj/structure/table/glass,
-/obj/item/flashlight/lamp{
- pixel_y = 12;
- pixel_x = -4
+/obj/effect/turf_decal/siding/wood,
+/obj/machinery/door/airlock/medical/glass{
+ name = "Virology Bedroom";
+ req_access = list(39)
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
},
+/obj/machinery/door/firedoor,
/turf/simulated/floor/carpet/green,
/area/medical/virology)
"sOF" = (
@@ -126963,7 +128361,7 @@
/turf/simulated/floor/plating,
/area/crew_quarters/sleep/secondary)
"sQl" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 1
},
/obj/effect/decal/cleanable/dirt,
@@ -126996,7 +128394,9 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"sQA" = (
/obj/effect/turf_decal/stripes/line,
@@ -127089,9 +128489,6 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/cable{
icon_state = "1-8"
},
@@ -127102,6 +128499,11 @@
/obj/effect/turf_decal/siding/white{
dir = 1
},
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/glass,
/area/crew_quarters/locker)
"sRy" = (
@@ -127179,20 +128581,18 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"sSj" = (
-/obj/structure/table,
-/obj/item/storage/box/donkpockets{
- pixel_x = 2;
- pixel_y = 3
- },
-/obj/machinery/light{
- dir = 1;
- in_use = 1
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"sSp" = (
/obj/structure/cable{
icon_state = "0-4"
@@ -127591,6 +128991,11 @@
dir = 8;
tag = "icon-shower (WEST)"
},
+/obj/item/radio/intercom{
+ dir = 1;
+ pixel_x = -30;
+ pixel_y = -8
+ },
/turf/simulated/floor/plasteel{
icon_state = "freezerfloor"
},
@@ -127963,11 +129368,6 @@
/obj/machinery/light{
dir = 4
},
-/obj/machinery/camera{
- c_tag = "Research West Hallway 2";
- network = list("Research","SS13");
- dir = 8
- },
/obj/structure/extinguisher_cabinet{
pixel_x = 26
},
@@ -128058,19 +129458,13 @@
dir = 4;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"sXx" = (
/obj/structure/rack{
dir = 8;
layer = 2.9
},
/obj/effect/decal/warning_stripes/red/hollow,
-/obj/item/storage/lockbox/mindshield,
-/obj/item/storage/box/trackimp,
-/obj/item/storage/box/chemimp{
- pixel_x = 4;
- pixel_y = 3
- },
/obj/structure/window/reinforced{
color = "red"
},
@@ -128084,6 +129478,13 @@
req_access = list(1);
color = "red"
},
+/obj/item/lock_buster,
+/obj/item/storage/box/trackimp,
+/obj/item/storage/box/chemimp{
+ pixel_x = 4;
+ pixel_y = 3
+ },
+/obj/item/storage/lockbox/mindshield,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -128272,9 +129673,7 @@
/obj/machinery/door/firedoor/border_only{
dir = 1
},
-/obj/structure/table,
-/obj/item/stack/packageWrap,
-/obj/item/hand_labeler,
+/obj/machinery/vending/artvend,
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "brown"
@@ -128525,10 +129924,10 @@
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 5
+ dir = 6
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
+ dir = 5
},
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
@@ -128628,16 +130027,19 @@
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=R8";
location = "R7"
},
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -129207,7 +130609,7 @@
},
/area/crew_quarters/fitness)
"tfc" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/obj/structure/sign/poster/contraband/tools{
@@ -129268,9 +130670,6 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -129281,6 +130680,11 @@
/obj/effect/turf_decal/siding/white{
dir = 1
},
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/glass,
/area/crew_quarters/locker)
"tfx" = (
@@ -129506,10 +130910,26 @@
/turf/simulated/floor/glass/reinforced,
/area/engineering/mechanic_workshop/hangar)
"tgQ" = (
-/obj/effect/decal/warning_stripes/southwest,
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/railing/corner{
+ dir = 4
+ },
+/obj/structure/extinguisher_cabinet{
+ name = "east extinguisher cabinet";
+ pixel_x = -25
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "neutralcorner"
+ dir = 9;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (NORTHWEST)"
},
/area/toxins/mixing)
"tgT" = (
@@ -129538,9 +130958,21 @@
},
/turf/simulated/floor/carpet,
/area/library)
+"thc" = (
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/plasteel{
+ icon_state = "tranquillite"
+ },
+/area/maintenance/trading)
"thg" = (
/obj/effect/spawner/window/reinforced,
/obj/structure/barricade/wooden/crude,
+/obj/structure/curtain/open/shower/security{
+ alpha = 255;
+ name = "backstage";
+ anchored = 1;
+ pixel_y = 0
+ },
/turf/simulated/floor/plating,
/area/maintenance/backstage)
"thk" = (
@@ -129670,6 +131102,16 @@
icon_state = "red"
},
/area/security/securehallway)
+"tiq" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/reagent_containers/food/snacks/grown/tomato{
+ pixel_x = -10;
+ pixel_y = -7
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/maintenance/trading)
"tiu" = (
/obj/machinery/computer/mech_bay_power_console{
dir = 4
@@ -129678,6 +131120,12 @@
/area/maintenance/secpost)
"tiy" = (
/obj/effect/decal/warning_stripes/southeast,
+/obj/machinery/firealarm{
+ dir = 4;
+ name = "east fire alarm";
+ pixel_x = 26;
+ pixel_y = 28
+ },
/turf/simulated/floor/plasteel,
/area/toxins/launch)
"tiA" = (
@@ -129736,10 +131184,14 @@
},
/area/toxins/misc_lab)
"tiT" = (
-/turf/simulated/floor/plasteel{
- icon_state = "dark"
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/blood/tracks{
+ dir = 8;
+ pixel_y = 8;
+ pixel_x = -11
},
-/area/security/interrogation)
+/turf/simulated/floor/plating,
+/area/maintenance/asmaint4)
"tiU" = (
/obj/effect/decal/warning_stripes/east,
/obj/machinery/light{
@@ -130016,17 +131468,23 @@
/turf/space,
/area/space)
"tku" = (
-/obj/structure/railing{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ icon_state = "1-2"
},
-/obj/machinery/door/firedoor/border_only{
- dir = 1
+/obj/machinery/flasher{
+ desc = "A floor-mounted flashbulb device.";
+ id = "brigkpp";
+ layer = 5;
+ pixel_y = 0;
+ range = 3;
+ pixel_x = -55
},
/turf/simulated/floor/plasteel{
- dir = 5;
- icon_state = "brown"
+ dir = 1
},
-/area/quartermaster/lobby)
+/area/hallway/primary/central/second/west)
"tkE" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2{
@@ -130072,17 +131530,22 @@
},
/area/hallway/primary/central/second/north)
"tkW" = (
-/obj/effect/decal/warning_stripes/northeast,
-/obj/machinery/atmospherics/unary/portables_connector{
- dir = 8
- },
/obj/item/radio/intercom{
dir = 1;
pixel_y = 28
},
+/obj/structure/table/reinforced,
+/obj/item/storage/toolbox/mechanical,
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "neutralcorner"
+ dir = 9;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (NORTHWEST)"
},
/area/toxins/mixing)
"tld" = (
@@ -130171,7 +131634,7 @@
"tlF" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/crate,
-/obj/effect/spawner/lootdrop/maintenance/double,
+/obj/effect/spawner/lootdrop/maintenance,
/obj/machinery/light/small,
/turf/simulated/floor/plating,
/area/maintenance/asmaint4)
@@ -130208,12 +131671,6 @@
dir = 8;
do_not_delete_me = 1
},
-/obj/structure/curtain/open/shower/security{
- alpha = 255;
- name = "backstage";
- anchored = 1;
- pixel_y = 32
- },
/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/wood,
/area/maintenance/backstage)
@@ -130289,7 +131746,7 @@
"tns" = (
/obj/structure/sign/holy,
/turf/simulated/wall,
-/area/chapel/main)
+/area/chapel/massdriver)
"tnu" = (
/turf/simulated/floor/plasteel{
dir = 1;
@@ -130370,6 +131827,7 @@
"toQ" = (
/obj/structure/table/wood/poker,
/obj/effect/decal/cleanable/dust,
+/obj/item/stack/spacecash/c100,
/turf/simulated/floor/carpet/green,
/area/maintenance/casino)
"toS" = (
@@ -130477,6 +131935,32 @@
icon_state = "neutralfull"
},
/area/hallway/secondary/entry/lounge)
+"tpw" = (
+/obj/structure/rack{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/effect/decal/warning_stripes/red/hollow,
+/obj/structure/window/reinforced{
+ color = "red"
+ },
+/obj/structure/window/reinforced{
+ color = "red";
+ dir = 1
+ },
+/obj/machinery/door/window{
+ name = "Secure Armory";
+ req_access = list(1);
+ color = "red"
+ },
+/obj/item/clothing/gloves/color/black/ballistic,
+/obj/item/clothing/gloves/color/black/ballistic,
+/obj/item/clothing/gloves/color/black/ballistic,
+/obj/item/clothing/gloves/color/black/ballistic,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/security/securearmory)
"tpz" = (
/obj/effect/decal/warning_stripes/south,
/obj/structure/sign/poster/official/space_a{
@@ -130572,7 +132056,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"tqt" = (
/obj/structure/table/glass,
/obj/item/paper_bin{
@@ -130915,6 +132399,11 @@
},
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/structure/closet/crate/freezer,
+/obj/item/reagent_containers/food/condiment/tomatosauce,
+/obj/item/reagent_containers/food/condiment/herbs,
+/obj/item/reagent_containers/food/snacks/grown/tomato,
+/obj/item/reagent_containers/food/snacks/grown/tomato,
+/obj/item/reagent_containers/food/snacks/grown/tomato,
/turf/simulated/floor/plasteel{
icon_state = "freezerfloor"
},
@@ -131567,7 +133056,7 @@
icon_state = "1-8"
},
/turf/simulated/floor/plating,
-/area/medical/virology/lab)
+/area/medical/virology)
"twu" = (
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/machinery/vending/assist,
@@ -131646,14 +133135,14 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
},
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"twF" = (
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/structure/disposalpipe/junction/reversed,
@@ -131821,7 +133310,8 @@
/area/engineering/gravitygenerator)
"txG" = (
/obj/structure/stairs{
- dir = 8
+ dir = 8;
+ layer = 2
},
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
@@ -131893,8 +133383,8 @@
/area/maintenance/fore)
"typ" = (
/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/oil,
/obj/effect/spawner/random_spawners/cobweb_left_rare,
+/obj/machinery/vending/tool,
/turf/simulated/floor/plating,
/area/maintenance/electrical)
"tyr" = (
@@ -131966,12 +133456,6 @@
/area/hallway/secondary/entry/additional)
"tyK" = (
/obj/item/twohanded/required/kirbyplants,
-/obj/structure/curtain/open/shower/security{
- alpha = 255;
- name = "backstage";
- anchored = 1;
- pixel_y = 32
- },
/turf/simulated/floor/carpet/red,
/area/maintenance/backstage)
"tyM" = (
@@ -132103,6 +133587,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -132143,7 +133630,7 @@
dir = 6;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"tAm" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/cobweb2{
@@ -132235,6 +133722,7 @@
icon_state = "1-2"
},
/obj/structure/window/full/plasmareinforced,
+/obj/structure/grille,
/turf/simulated/floor/plating,
/area/engineering/engine)
"tBj" = (
@@ -132910,7 +134398,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
- icon_state = "white"
+ dir = 1;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (NORTH)"
},
/area/toxins/mixing)
"tFY" = (
@@ -132968,6 +134458,14 @@
/obj/machinery/light{
dir = 4
},
+/obj/structure/window/reinforced,
+/obj/machinery/door/window/eastright{
+ base_state = "left";
+ icon_state = "left";
+ name = "Blood Bag Storage";
+ req_access = list(5);
+ dir = 8
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whiteblue"
@@ -133394,11 +134892,9 @@
},
/area/security/warden)
"tJq" = (
-/obj/machinery/mineral/mint{
- input_dir = 4
- },
+/obj/structure/disposalpipe/trunk/multiz/down,
/turf/simulated/floor/plasteel{
- dir = 9;
+ dir = 4;
icon_state = "brown"
},
/area/quartermaster/miningstorage)
@@ -133489,16 +134985,12 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/entry/commercial)
"tJU" = (
-/obj/structure/chair/stool/bar{
- icon = 'icons/obj/lighting.dmi';
- icon_state = "lantern-on";
- light_color = "#FFBF00";
- light_range = 6;
- name = "lantern"
- },
/obj/structure/sign/poster/official/nanotrasen_logo{
pixel_y = 32
},
+/obj/item/flashlight/lantern{
+ on = 1
+ },
/turf/simulated/floor/grass,
/area/hallway/primary/central/nw)
"tJV" = (
@@ -133617,13 +135109,20 @@
icon_state = "neutral"
},
/area/hallway/primary/central/se)
+"tLm" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/reagent_containers/food/snacks/grown/tomato,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/maintenance/trading)
"tLn" = (
/obj/machinery/firealarm{
dir = 1;
name = "south fire alarm";
pixel_y = 26
},
-/obj/structure/chair/office,
+/obj/structure/chair,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "dark"
@@ -133704,8 +135203,24 @@
/obj/machinery/newscaster{
pixel_y = 32
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
+"tLT" = (
+/obj/machinery/door/window/westleft{
+ dir = 2;
+ name = "Disposal";
+ req_access = list(50)
+ },
+/obj/effect/decal/warning_stripes/south,
+/obj/structure/sign/poster/random{
+ pixel_x = 32
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "brown"
+ },
+/area/quartermaster/sorting)
"tMg" = (
/turf/simulated/openspace,
/area/hallway/primary/central/south)
@@ -133807,6 +135322,9 @@
/obj/effect/turf_decal/siding/wood{
dir = 1
},
+/obj/structure/railing/corner{
+ dir = 4
+ },
/turf/simulated/floor/wood,
/area/maintenance/casino)
"tNj" = (
@@ -133907,7 +135425,7 @@
},
/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka{
pixel_x = 5;
- pixel_y = -3
+ pixel_y = 4
},
/turf/simulated/floor/plasteel{
icon_state = "darkred"
@@ -134001,7 +135519,7 @@
dir = 1
},
/turf/simulated/floor/plasteel{
- dir = 1
+ icon_state = "red"
},
/area/security/lobby)
"tOl" = (
@@ -134107,9 +135625,6 @@
/turf/simulated/wall/r_wall,
/area/quartermaster/delivery)
"tPu" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/cable{
icon_state = "1-4"
},
@@ -134122,6 +135637,9 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/simulated/floor/carpet/purple,
/area/janitor)
"tPz" = (
@@ -134318,7 +135836,8 @@
pixel_x = -24
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"tQM" = (
@@ -134863,6 +136382,14 @@
},
/turf/simulated/floor/glass,
/area/hallway/primary/fore)
+"tUf" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/medical/paramedic)
"tUi" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -134939,6 +136466,17 @@
icon_state = "darkbluealt"
},
/area/hallway/primary/command/west)
+"tUE" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/closet,
+/obj/item/toy/crayon/spraycan,
+/obj/item/assembly/prox_sensor{
+ pixel_x = -5;
+ pixel_y = 5
+ },
+/obj/item/storage/pill_bottle/random_drug_bottle,
+/turf/simulated/floor/plating,
+/area/maintenance/fsmaint2)
"tUO" = (
/obj/machinery/newscaster{
pixel_x = -32
@@ -134954,7 +136492,9 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"tVb" = (
/obj/effect/decal/cleanable/dirt,
@@ -134988,8 +136528,8 @@
/obj/machinery/door/airlock/public/glass{
name = "Walkway"
},
-/turf/simulated/floor/plasteel{
- icon_state = "neutralfull"
+/turf/simulated/floor/engine{
+ slowdown = -0.3
},
/area/hallway/primary/central)
"tVh" = (
@@ -135121,7 +136661,9 @@
icon_state = "4-8"
},
/obj/machinery/light,
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"tWb" = (
/obj/effect/decal/cleanable/dust,
@@ -135149,7 +136691,7 @@
icon_state = "0-4"
},
/turf/simulated/floor/plating,
-/area/medical/virology/lab)
+/area/medical/virology)
"tWl" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -135301,7 +136843,8 @@
icon_state = "2-8"
},
/turf/simulated/floor/plasteel{
- icon_state = "white"
+ dir = 6;
+ icon_state = "whitepurple"
},
/area/toxins/mixing)
"tXf" = (
@@ -135417,6 +136960,7 @@
/area/toxins/xenobiology)
"tXY" = (
/obj/structure/closet/emcloset,
+/obj/effect/spawner/lootdrop/maintenance,
/turf/simulated/floor/plating/airless,
/area/toxins/test_area)
"tYb" = (
@@ -135488,19 +137032,14 @@
},
/area/hallway/spacebridge/somsec)
"tYA" = (
-/obj/effect/decal/warning_stripes/northeast,
-/obj/structure/table/glass,
-/obj/item/radio/intercom{
- pixel_y = -28
- },
-/obj/item/reagent_containers/dropper/precision,
-/obj/item/reagent_containers/dropper/precision,
-/obj/item/reagent_containers/dropper,
-/obj/item/reagent_containers/dropper,
-/obj/machinery/atmospherics/unary/vent_pump/on{
+/obj/machinery/disposal,
+/obj/structure/disposalpipe/trunk{
dir = 4
},
-/turf/simulated/floor/plasteel,
+/obj/effect/decal/warning_stripes/red,
+/turf/simulated/floor/plasteel{
+ icon_state = "whitegreenfull"
+ },
/area/medical/virology/lab)
"tYB" = (
/obj/structure/railing{
@@ -135578,15 +137117,17 @@
/turf/simulated/floor/carpet,
/area/maintenance/livingcomplex)
"tYQ" = (
-/obj/structure/cable{
- icon_state = "2-8"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/simulated/floor/plasteel{
- icon_state = "white"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"tYT" = (
@@ -135909,7 +137450,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"ubx" = (
/obj/machinery/newscaster{
pixel_y = -30
@@ -136083,10 +137624,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
-/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "brown"
- },
+/turf/simulated/floor/plasteel,
/area/quartermaster/miningstorage)
"ucQ" = (
/obj/structure/table,
@@ -136143,6 +137681,25 @@
},
/turf/simulated/floor/plating,
/area/security/permabrig)
+"udr" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/door/poddoor/preopen{
+ id_tag = "Biohazard_medi";
+ name = "Quarantine Lockdown"
+ },
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 1;
+ id_tag = "Virology1";
+ layer = 3.2;
+ name = "Virology Shutters"
+ },
+/obj/effect/spawner/window/reinforced/polarized{
+ id = "vir2"
+ },
+/turf/simulated/floor/plating,
+/area/medical/virology)
"udt" = (
/obj/effect/landmark/tiles/damageturf,
/obj/effect/spawner/random_spawners/blood_20,
@@ -136165,7 +137722,8 @@
},
/obj/machinery/hologram/holopad,
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"udF" = (
@@ -136327,7 +137885,7 @@
/obj/machinery/airlock_sensor{
id_tag = "port5_sensor";
pixel_x = 25;
- pixel_y = 5
+ pixel_y = 3
},
/turf/simulated/floor/plating,
/area/maintenance/asmaint)
@@ -136404,10 +137962,6 @@
/turf/simulated/floor/plasteel/dark,
/area/maintenance/starboardaux)
"ufB" = (
-/obj/machinery/firealarm{
- dir = 4;
- pixel_y = -28
- },
/obj/structure/showcase{
density = 0;
dir = 1;
@@ -136416,11 +137970,19 @@
name = "Cyborg Statue"
},
/obj/machinery/light,
+/obj/machinery/power/apc{
+ cell_type = 5000;
+ name = "south bump Important Area";
+ pixel_y = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
/turf/simulated/floor/plasteel{
dir = 6;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"ufI" = (
/obj/machinery/power/apc{
dir = 4;
@@ -136559,8 +138121,9 @@
},
/area/security/lobby)
"ugL" = (
-/obj/structure/disposalpipe/segment,
/obj/effect/decal/warning_stripes/yellow,
+/obj/structure/disposalpipe/segment,
+/obj/structure/railing/corner,
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"ugS" = (
@@ -136788,6 +138351,10 @@
dir = 4
},
/obj/item/reagent_containers/spray/cleaner/janitor,
+/obj/item/hair_dye_bottle{
+ pixel_y = -10;
+ pixel_x = -6
+ },
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "dark"
@@ -136962,16 +138529,9 @@
/turf/simulated/floor/plasteel,
/area/toxins/mixing)
"ujT" = (
-/obj/machinery/conveyor_switch/oneway{
- id = "mining_internal";
- name = "mining conveyor"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "brown"
- },
+/turf/simulated/floor/plasteel,
/area/quartermaster/miningstorage)
"ukb" = (
/obj/effect/decal/warning_stripes/south,
@@ -137077,6 +138637,7 @@
/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
/obj/machinery/hologram/holopad,
/obj/effect/turf_decal/box,
+/obj/item/radio/beacon,
/turf/simulated/floor/plasteel{
icon_state = "whitebluefull"
},
@@ -137200,6 +138761,13 @@
/obj/machinery/portable_atmospherics/canister/sleeping_agent,
/turf/simulated/floor/plating,
/area/security/permabrig)
+"umr" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random_spawners/crate_spawner,
+/turf/simulated/floor/plasteel{
+ dir = 1
+ },
+/area/maintenance/trading)
"umD" = (
/obj/structure/chair/office/dark,
/obj/structure/cable{
@@ -137279,7 +138847,7 @@
req_access = list(63)
},
/obj/structure/window/reinforced,
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/turf/simulated/floor/carpet,
@@ -137621,9 +139189,6 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/structure/cable{
- icon_state = "2-8"
- },
/obj/effect/turf_decal/caution/stand_clear,
/turf/simulated/floor/plasteel{
icon_state = "dark"
@@ -137701,7 +139266,8 @@
dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"urd" = (
@@ -137891,6 +139457,7 @@
dir = 4;
pixel_x = -24
},
+/obj/machinery/telepad_cargo,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "brown"
@@ -137928,7 +139495,7 @@
},
/area/medical/ward)
"usy" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/turf/simulated/floor/wood,
/area/crew_quarters/serviceyard)
"usA" = (
@@ -138075,7 +139642,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"utz" = (
/obj/machinery/door/airlock{
@@ -138093,7 +139662,7 @@
/turf/simulated/floor/plating,
/area/maintenance/banya)
"utP" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/machinery/atmospherics/unary/vent_scrubber{
name = "standard air scrubber";
on = 1;
@@ -138311,6 +139880,10 @@
icon_state = "1-2"
},
/obj/effect/decal/cleanable/dirt,
+/obj/item/poster/random_contraband{
+ pixel_x = 1;
+ pixel_y = 6
+ },
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"uvI" = (
@@ -138597,10 +140170,12 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 1
},
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -138763,6 +140338,7 @@
name = "Труба на фильтрацию"
},
/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/spiderling_remains,
/turf/simulated/floor/plating,
/area/maintenance/atmospherics)
"uzb" = (
@@ -138823,7 +140399,7 @@
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/obj/structure/disposalpipe/junction{
@@ -138841,9 +140417,7 @@
dir = 6
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/simulated/floor/plasteel{
- icon_state = "browncorner"
- },
+/turf/simulated/floor/plasteel,
/area/quartermaster/miningstorage)
"uzt" = (
/obj/structure/table,
@@ -138881,16 +140455,14 @@
/turf/simulated/floor/glass,
/area/crew_quarters/bar/atrium)
"uAc" = (
-/obj/effect/decal/warning_stripes/blue/hollow,
-/obj/structure/bed/roller,
-/obj/machinery/iv_drip,
-/obj/machinery/light{
- dir = 8
- },
/obj/machinery/firealarm{
dir = 4;
pixel_x = -28
},
+/obj/structure/sink{
+ dir = 8;
+ pixel_x = -12
+ },
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "dark"
@@ -139030,9 +140602,16 @@
/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
"uBa" = (
-/obj/structure/grille,
-/turf/simulated/floor/plating,
-/area/maintenance/tourist)
+/obj/machinery/camera{
+ c_tag = "Research East Central Hallway";
+ network = list("Research","SS13");
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (WEST)"
+ },
+/area/medical/research)
"uBh" = (
/obj/structure/bookcase,
/turf/simulated/floor/wood,
@@ -139109,7 +140688,7 @@
/turf/simulated/floor/glass/reinforced,
/area/quartermaster/office)
"uCd" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/obj/effect/decal/cleanable/dirt,
@@ -139265,11 +140844,10 @@
/turf/simulated/floor/carpet,
/area/maintenance/casino)
"uCN" = (
-/obj/effect/turf_decal/loading_area{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plasteel{
- dir = 6;
icon_state = "brown"
},
/area/quartermaster/miningstorage)
@@ -139414,6 +140992,8 @@
},
/area/bridge/meeting_room)
"uEd" = (
+/obj/machinery/telepad_cargo,
+/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "whiteblue";
@@ -139548,7 +141128,7 @@
dir = 8
},
/obj/effect/spawner/random_spawners/blood_5,
-/obj/structure/chair/stool/holostool,
+/obj/structure/chair/stool,
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"uFu" = (
@@ -139791,11 +141371,11 @@
},
/area/hallway/primary/central/second/north)
"uHe" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "darkredfull"
},
/area/turret_protected/ai)
"uHl" = (
@@ -140174,6 +141754,37 @@
icon_state = "whitehall"
},
/area/toxins/xenobiology)
+"uJX" = (
+/obj/structure/rack{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/effect/decal/warning_stripes/red/hollow,
+/obj/structure/window/reinforced{
+ color = "red"
+ },
+/obj/structure/window/reinforced{
+ color = "red";
+ dir = 1
+ },
+/obj/structure/window/reinforced{
+ color = "red";
+ dir = 4
+ },
+/obj/machinery/door/window{
+ dir = 8;
+ name = "Secure Armory";
+ req_access = list(1);
+ color = "red"
+ },
+/obj/item/shield/riot,
+/obj/item/shield/riot,
+/obj/item/shield/riot,
+/obj/item/shield/riot,
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/security/securearmory)
"uJY" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
@@ -140251,7 +141862,15 @@
/turf/simulated/floor/wood,
/area/library/game_zone)
"uKE" = (
-/obj/structure/disposalpipe/trunk/multiz,
+/obj/structure/stairs{
+ layer = 2
+ },
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"uKI" = (
@@ -140533,6 +142152,18 @@
icon_state = "neutralfull"
},
/area/hallway/primary/fore)
+"uNf" = (
+/obj/structure/disposalpipe/segment{
+ dir = 9
+ },
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "red"
+ },
+/area/security/interrogation)
"uNg" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
@@ -140673,7 +142304,9 @@
codes_txt = "patrol;next_patrol=C11";
location = "C10"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"uOv" = (
/obj/structure/disposalpipe/segment{
@@ -141007,7 +142640,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"uRw" = (
/obj/structure/table/glass,
/obj/item/reagent_containers/food/drinks/coffee{
@@ -141148,9 +142781,6 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -141164,6 +142794,9 @@
/obj/effect/turf_decal/siding/white{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/simulated/floor/glass,
/area/crew_quarters/locker)
"uSo" = (
@@ -141385,7 +143018,8 @@
dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"uUM" = (
@@ -141452,7 +143086,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"uVn" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
@@ -141691,7 +143325,6 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -141905,7 +143538,8 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"uYm" = (
@@ -142095,6 +143729,7 @@
req_access = list(3,4);
name = "Forensic laboratory"
},
+/obj/effect/turf_decal/siding/wood,
/turf/simulated/floor/wood,
/area/security/detectives_office)
"uZh" = (
@@ -142169,7 +143804,7 @@
dir = 4
},
/obj/item/reagent_containers/food/drinks/shaker,
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"uZF" = (
/obj/structure/disposalpipe/segment{
@@ -142445,7 +144080,9 @@
/obj/effect/turf_decal/siding/white/end{
color = "#444444"
},
-/turf/simulated/floor/glass,
+/turf/simulated/floor/glass{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"vbL" = (
/obj/machinery/door/airlock/bananium{
@@ -142715,6 +144352,15 @@
},
/turf/simulated/floor/engine,
/area/engineering/supermatter)
+"vdg" = (
+/obj/structure/chair/comfy/purp{
+ dir = 4
+ },
+/obj/item/radio/intercom{
+ pixel_y = -28
+ },
+/turf/simulated/floor/carpet/purple,
+/area/crew_quarters/captain)
"vdh" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -142777,8 +144423,7 @@
pixel_y = 32
},
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "brown"
+ dir = 1
},
/area/quartermaster/lobby)
"vdY" = (
@@ -143500,8 +145145,7 @@
},
/area/medical/genetics)
"vkn" = (
-/obj/machinery/telepad_cargo,
-/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/item/twohanded/required/kirbyplants,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "whitepurple"
@@ -143640,6 +145284,7 @@
"vls" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/random_spawners/cobweb_right_frequent,
+/obj/machinery/slot_machine,
/turf/simulated/floor/plating,
/area/maintenance/tourist)
"vlt" = (
@@ -143700,12 +145345,16 @@
/obj/machinery/computer/guestpass{
pixel_y = 32
},
+/obj/structure/reagent_dispensers/watertank/high,
+/obj/item/reagent_containers/glass/bucket,
+/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "green"
},
/area/hydroponics)
"vlM" = (
+/obj/structure/flora/ausbushes/lavendergrass,
/obj/item/hatchet,
/obj/effect/spawner/random_spawners/rodent,
/turf/simulated/floor/grass,
@@ -143844,10 +145493,10 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 8
+ dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "white"
+ icon_state = "whitepurplecorner"
},
/area/toxins/mixing)
"vnn" = (
@@ -143937,9 +145586,16 @@
icon_state = "yellow"
},
/area/engineering/engine)
+"vnH" = (
+/obj/machinery/light_switch{
+ pixel_x = -24
+ },
+/turf/simulated/floor/carpet/black,
+/area/chapel/main)
"vnM" = (
/obj/structure/stairs{
- dir = 4
+ dir = 4;
+ layer = 2
},
/turf/simulated/floor/plasteel{
icon_state = "dark"
@@ -144156,9 +145812,6 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/structure/cable{
icon_state = "2-4"
},
@@ -144168,6 +145821,11 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "red"
@@ -144242,6 +145900,8 @@
/obj/structure/closet/secure_closet/hos,
/obj/effect/decal/warning_stripes/southeast,
/obj/item/clothing/under/fluff/soviet_casual_uniform,
+/obj/item/clothing/suit/armor/hos/alt,
+/obj/item/clothing/head/beret/solgov/command/elite,
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "dark"
@@ -144317,7 +145977,7 @@
dir = 4;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"vsi" = (
/obj/structure/cable,
/obj/machinery/power/apc{
@@ -144380,7 +146040,8 @@
/area/maintenance/casino)
"vsB" = (
/obj/structure/stairs{
- dir = 1
+ dir = 1;
+ layer = 2
},
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
@@ -144438,17 +146099,17 @@
/turf/simulated/floor/wood,
/area/crew_quarters/courtroom)
"vte" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/blood/xeno,
-/obj/structure/cable/multiz{
- color = "#dd1010"
- },
-/obj/structure/cable{
- d2 = 4;
- icon_state = "0-4"
+/obj/structure/lattice/catwalk,
+/obj/machinery/access_button{
+ command = "cycle_exterior";
+ frequency = 1379;
+ master_tag = "vir_maint2_airlock";
+ name = "exterior access button";
+ pixel_x = 24;
+ pixel_y = 24
},
-/turf/simulated/floor/plating,
-/area/maintenance/xenozoo)
+/turf/space,
+/area/space)
"vtf" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -144493,10 +146154,13 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"vts" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -144513,22 +146177,45 @@
icon_state = "whiteblue"
},
/area/medical/cmo)
+"vtz" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+ dir = 8
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
+ },
+/area/medical/virology)
"vtK" = (
/turf/simulated/floor/plasteel/grimy,
/area/crew_quarters/bar)
"vtN" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/universal,
-/obj/machinery/door/airlock/medical{
- name = "Virology";
- req_access = list(39)
- },
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/structure/disposalpipe/segment{
- invisibility = 101
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/alarm{
+ dir = 8;
+ pixel_x = 22
+ },
+/obj/machinery/camera{
+ c_tag = "Virology";
+ dir = 8;
+ network = list("Medical","SS13")
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "white"
},
-/turf/simulated/floor/plating,
/area/medical/virology/lab)
"vtS" = (
/turf/simulated/wall,
@@ -144608,6 +146295,7 @@
/obj/machinery/light/small{
dir = 1
},
+/obj/effect/spawner/random_spawners/crate_spawner,
/turf/simulated/floor/plating,
/area/maintenance/xenozoo)
"vuI" = (
@@ -144624,7 +146312,7 @@
dir = 5;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"vuR" = (
/obj/machinery/light{
dir = 1;
@@ -144642,6 +146330,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/decal/cleanable/dirt,
+/obj/item/caution,
/turf/simulated/floor/plating,
/area/maintenance/fsmaint)
"vuU" = (
@@ -144767,11 +146456,14 @@
},
/obj/machinery/airlock_sensor{
id_tag = "ex_sensor";
- pixel_y = -24
+ pixel_y = 35
},
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 4
},
+/obj/structure/sign/vacuum{
+ pixel_y = -32
+ },
/turf/simulated/floor/engine/insulated,
/area/maintenance/apmaint)
"vvH" = (
@@ -144868,6 +146560,10 @@
/obj/machinery/light{
dir = 4
},
+/obj/structure/sign/fire{
+ pixel_y = 0;
+ pixel_x = 32
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "neutral"
@@ -145112,12 +146808,6 @@
dir = 4;
do_not_delete_me = 1
},
-/obj/structure/curtain/open/shower/security{
- alpha = 255;
- name = "backstage";
- anchored = 1;
- pixel_y = 32
- },
/obj/item/trash/raisins,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dust,
@@ -145149,25 +146839,14 @@
/turf/simulated/floor/glass/reinforced,
/area/quartermaster/qm)
"vyk" = (
-/obj/structure/closet/crate/freezer,
-/obj/item/reagent_containers/iv_bag/bloodsynthetic/nitrogenis,
-/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis,
-/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/obj/machinery/power/apc{
- dir = 1;
- pixel_y = 26
- },
-/obj/structure/cable{
- d2 = 2;
- icon_state = "0-2"
+/obj/machinery/atmospherics/binary/valve{
+ dir = 4
},
-/turf/simulated/floor/plasteel{
- icon_state = "white"
+/obj/structure/sign/biohazard{
+ pixel_y = 32
},
-/area/medical/virology)
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"vyp" = (
/obj/effect/turf_decal/box,
/obj/machinery/hologram/holopad,
@@ -145276,7 +146955,7 @@
/turf/simulated/floor/plating,
/area/maintenance/fpmaint)
"vzu" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/turf/simulated/floor/wood/fancy/light,
@@ -145319,7 +146998,7 @@
icon_state = "4-8"
},
/turf/simulated/floor/plasteel{
- icon_state = "red"
+ icon_state = "redcorner"
},
/area/security/seceqstorage)
"vzX" = (
@@ -145358,6 +147037,11 @@
icon_state = "neutralfull"
},
/area/atmos)
+"vAn" = (
+/obj/structure/flora/ausbushes/sparsegrass,
+/obj/structure/flora/ausbushes/fernybush,
+/turf/simulated/floor/grass,
+/area/maintenance/garden)
"vAs" = (
/obj/machinery/status_display{
pixel_y = -32
@@ -145387,6 +147071,7 @@
/obj/item/stack/sheet/plasteel{
amount = 10
},
+/obj/item/lightreplacer,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -145812,7 +147497,7 @@
dir = 4;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"vEi" = (
/obj/structure/grille/broken,
/obj/machinery/light/small{
@@ -145991,7 +147676,9 @@
codes_txt = "patrol;next_patrol=C2";
location = "C1"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"vFJ" = (
/obj/structure/cable{
@@ -146021,14 +147708,13 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
-/area/hallway/primary/central)
-"vFR" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
+/obj/machinery/computer/security/telescreen/entertainment{
+ pixel_y = -30
},
-/turf/simulated/floor/plasteel,
-/area/quartermaster/sorting)
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
+/area/hallway/primary/central)
"vFV" = (
/obj/machinery/atmospherics/pipe/simple/visible{
dir = 6
@@ -146165,7 +147851,7 @@
/turf/simulated/floor/plasteel{
icon_state = "darkredfull"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"vHo" = (
/obj/machinery/power/supermatter_shard{
anchored = 1;
@@ -146340,6 +148026,8 @@
/obj/item/clothing/glasses/hud/health,
/obj/item/clothing/glasses/regular,
/obj/item/reagent_containers/hypospray/safety,
+/obj/item/storage/belt/medical,
+/obj/item/clothing/glasses/hud/health,
/turf/simulated/floor/plasteel{
dir = 10;
icon_state = "whiteblue"
@@ -146503,7 +148191,8 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
- icon_state = "purplefull"
+ dir = 4;
+ icon_state = "whitepurple"
},
/area/toxins/mixing)
"vKe" = (
@@ -146654,7 +148343,7 @@
/obj/effect/decal/cleanable/blood/tracks{
layer = 3
},
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
dir = 1
@@ -146879,7 +148568,8 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"vMH" = (
@@ -146898,7 +148588,8 @@
dir = 2
},
/turf/simulated/floor/plasteel{
- icon_state = "white"
+ dir = 4;
+ icon_state = "whitepurple"
},
/area/toxins/mixing)
"vML" = (
@@ -147013,7 +148704,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"vNO" = (
/obj/structure/window/reinforced{
dir = 1
@@ -147215,6 +148906,7 @@
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plasteel{
icon_state = "white"
},
@@ -147260,7 +148952,8 @@
dir = 8
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"vPb" = (
@@ -147343,7 +149036,7 @@
},
/area/hallway/primary/fore)
"vPZ" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/turf/simulated/floor/plasteel,
/area/hallway/spacebridge/somsec)
"vQc" = (
@@ -147354,16 +149047,8 @@
/area/hallway/primary/command/east)
"vQd" = (
/obj/machinery/message_server,
-/obj/machinery/power/apc{
- cell_type = 5000;
- name = "south bump Important Area";
- pixel_y = -24
- },
-/obj/structure/cable{
- icon_state = "0-4"
- },
/turf/simulated/floor/redgrid,
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"vQh" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable{
@@ -147903,7 +149588,8 @@
location = "C3"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"vUN" = (
@@ -148091,7 +149777,9 @@
/obj/structure/window/reinforced{
dir = 1
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"vVp" = (
/obj/structure/sign/directions/medical{
@@ -148111,6 +149799,15 @@
/obj/structure/flora/grass/jungle,
/turf/simulated/floor/grass,
/area/crew_quarters/fitness)
+"vVy" = (
+/obj/structure/stairs{
+ layer = 2
+ },
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/casino)
"vVC" = (
/obj/effect/decal/warning_stripes/north,
/turf/simulated/floor/plasteel{
@@ -148388,7 +150085,7 @@
/obj/machinery/airlock_sensor{
id_tag = "engineering_east_sensor";
pixel_x = -25;
- pixel_y = 10
+ pixel_y = 7
},
/turf/simulated/floor/plasteel{
dir = 6;
@@ -148412,11 +150109,13 @@
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"vXK" = (
-/obj/structure/railing,
-/obj/machinery/door/firedoor/border_only,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/simulated/floor/plasteel{
- dir = 10;
- icon_state = "red"
+ dir = 1
},
/area/hallway/primary/central/second/west)
"vXR" = (
@@ -148464,6 +150163,9 @@
"vYf" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/random_spawners/blood_5,
+/obj/machinery/light/small{
+ dir = 4
+ },
/turf/simulated/floor/carpet/royalblack,
/area/maintenance/fsmaint2)
"vYg" = (
@@ -148489,13 +150191,17 @@
/turf/simulated/floor/plating,
/area/maintenance/xenozoo)
"vYv" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/requests_console{
department = "Cargo Bay";
departmentType = 2;
name = "Cargo Requests Console";
pixel_x = -32
},
+/obj/machinery/camera{
+ c_tag = "Cargo Delivery Office";
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"vYx" = (
@@ -148507,7 +150213,8 @@
},
/obj/machinery/door/firedoor,
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"vYB" = (
@@ -148735,6 +150442,9 @@
"vZY" = (
/obj/machinery/cryopod/robot,
/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/machinery/computer/cryopod/robot{
+ pixel_y = 28
+ },
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "purple"
@@ -149051,7 +150761,7 @@
},
/obj/machinery/tcomms/core/station,
/turf/simulated/floor/redgrid,
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"wcH" = (
/turf/simulated/wall/r_wall,
/area/medical/research/restroom)
@@ -149356,6 +151066,14 @@
icon_state = "neutralfull"
},
/area/engineering/break_room)
+"wfm" = (
+/obj/effect/decal/warning_stripes/yellow/hollow,
+/obj/structure/disposalpipe/segment,
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel,
+/area/quartermaster/sorting)
"wfo" = (
/obj/machinery/door/airlock/security{
name = "Evidence Storage";
@@ -149420,7 +151138,7 @@
},
/area/crew_quarters/kitchen)
"wfW" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -149469,7 +151187,7 @@
dir = 4
},
/obj/structure/disposalpipe/segment{
- dir = 4
+ dir = 6
},
/turf/simulated/floor/plasteel,
/area/hydroponics)
@@ -149592,7 +151310,9 @@
/obj/machinery/light{
dir = 1
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"whx" = (
/obj/structure/cable{
@@ -149808,6 +151528,17 @@
icon_state = "neutralfull"
},
/area/hallway/primary/fore)
+"wjn" = (
+/obj/machinery/conveyor{
+ dir = 4;
+ id = "packageSort2"
+ },
+/obj/machinery/camera{
+ c_tag = "Cargo Wase Conveyor";
+ dir = 10
+ },
+/turf/simulated/floor/plating,
+/area/quartermaster/sorting)
"wjq" = (
/obj/effect/turf_decal/box/white/corners,
/turf/simulated/floor/plasteel{
@@ -149842,7 +151573,7 @@
},
/area/security/warden)
"wjG" = (
-/obj/structure/chair/office,
+/obj/structure/chair,
/obj/structure/sign/poster/contraband/ambrosia_vulgaris{
pixel_x = -32
},
@@ -150271,6 +152002,14 @@
icon_state = "dark"
},
/area/security/seceqstorage)
+"wmn" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "darkblue"
+ },
+/area/chapel/massdriver)
"wmp" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/remains/mouse,
@@ -150389,6 +152128,15 @@
codes_txt = "patrol;next_patrol=R2";
location = "R1"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -150451,11 +152199,13 @@
/turf/simulated/floor/wood,
/area/security/permabrig)
"wnt" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/newscaster{
pixel_y = 0;
pixel_x = -32
},
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
/turf/simulated/floor/plasteel,
/area/quartermaster/sorting)
"wnu" = (
@@ -150602,13 +152352,6 @@
icon_state = "neutralfull"
},
/area/quartermaster/delivery)
-"wot" = (
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/turf/simulated/floor/plasteel{
- dir = 4;
- icon_state = "redcorner"
- },
-/area/security/prison/cell_block/A)
"wox" = (
/obj/effect/decal/warning_stripes/northwest,
/turf/simulated/floor/plasteel,
@@ -150975,7 +152718,9 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"wqN" = (
/obj/machinery/atmospherics/pipe/simple/visible{
@@ -151056,15 +152801,7 @@
},
/area/medical/research)
"wqX" = (
-/obj/structure/ladder,
-/obj/structure/sign/directions/floor/alt{
- dir = 6;
- pixel_x = -32
- },
-/turf/simulated/floor/plasteel{
- dir = 10;
- icon_state = "whitepurple"
- },
+/turf/simulated/openspace,
/area/toxins/launch)
"wqY" = (
/obj/machinery/doppler_array{
@@ -151162,9 +152899,6 @@
},
/area/atmos)
"wrT" = (
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/structure/disposalpipe/junction/reversed{
dir = 2
},
@@ -151177,6 +152911,9 @@
/obj/structure/cable{
icon_state = "1-4"
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -151279,7 +153016,7 @@
name = "pod3 home dock";
width = 5
},
-/turf/space{
+/turf/space/openspace{
icon_state = "black"
},
/area/space)
@@ -151297,7 +153034,7 @@
icon_state = "2-4"
},
/turf/simulated/floor/plasteel{
- icon_state = "whitepurple"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"wtc" = (
@@ -151417,6 +153154,18 @@
dir = 1
},
/area/hallway/primary/starboard/east)
+"wtA" = (
+/obj/machinery/camera{
+ c_tag = "Research West Central Hallway";
+ network = list("Research","SS13");
+ dir = 6
+ },
+/turf/simulated/floor/plasteel{
+ dir = 1;
+ icon_state = "whitepurple";
+ tag = "icon-whitepurple (NORTH)"
+ },
+/area/medical/research/nhallway)
"wtD" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/grille/broken,
@@ -151450,7 +153199,7 @@
network = list("Minisat","SS13")
},
/turf/simulated/floor/redgrid,
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"wtT" = (
/obj/machinery/door/airlock/maintenance{
name = "Broom Closet"
@@ -151627,7 +153376,7 @@
dir = 6;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"wvE" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
name = "standard air scrubber";
@@ -151738,7 +153487,9 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"wvZ" = (
/obj/effect/decal/warning_stripes/yellow/hollow,
@@ -151824,11 +153575,15 @@
},
/area/security/hos)
"www" = (
-/obj/structure/cable{
- icon_state = "4-8"
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/structure/railing{
+ dir = 8
},
+/obj/structure/closet/bombcloset,
/turf/simulated/floor/plasteel{
- icon_state = "white"
+ icon_state = "purplefull"
},
/area/toxins/launch)
"wwy" = (
@@ -151936,7 +153691,8 @@
dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/port/south)
"wxy" = (
@@ -151944,20 +153700,14 @@
/turf/simulated/wall/r_wall,
/area/turret_protected/ai)
"wxG" = (
-/obj/machinery/vending/wallmed{
- pixel_x = 26
- },
/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 4
+ icon_state = "2-4"
},
-/turf/simulated/floor/plasteel{
- icon_state = "white"
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 10
},
-/area/medical/virology)
+/turf/simulated/floor/plating,
+/area/medical/virology/lab)
"wxM" = (
/obj/machinery/door/airlock/public{
name = "Kitchen";
@@ -152161,7 +153911,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"wyV" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -152467,7 +154219,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"wBS" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -152579,7 +154331,9 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"wCR" = (
/obj/item/twohanded/required/kirbyplants,
@@ -152658,12 +154412,8 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/hologram/holopad,
/obj/effect/landmark/event/lightsout,
-/obj/structure/disposalpipe/segment{
- dir = 10
- },
/turf/simulated/floor/plasteel{
- dir = 8;
- icon_state = "blue"
+ dir = 5
},
/area/hydroponics)
"wDq" = (
@@ -152689,6 +154439,16 @@
icon_state = "dark"
},
/area/aisat/maintenance)
+"wDL" = (
+/obj/machinery/alarm{
+ dir = 1;
+ pixel_y = -24
+ },
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "vault"
+ },
+/area/chapel/massdriver)
"wDO" = (
/obj/structure/chair{
dir = 1
@@ -152696,7 +154456,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"wDT" = (
/obj/structure/cable{
d1 = 4;
@@ -152826,7 +154586,8 @@
dir = 4
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"wFn" = (
@@ -153040,9 +154801,14 @@
/turf/simulated/floor/wood,
/area/crew_quarters/courtroom)
"wHj" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/plasteel,
-/area/quartermaster/miningstorage)
+/obj/structure/chair/office/dark{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel{
+ dir = 10;
+ icon_state = "darkred"
+ },
+/area/turret_protected/ai)
"wHo" = (
/obj/structure/cable{
d2 = 8;
@@ -153272,7 +155038,15 @@
/turf/simulated/floor/plasteel{
icon_state = "white"
},
-/area/medical/virology/lab)
+/area/medical/virology)
+"wJM" = (
+/obj/effect/spawner/random_spawners/grille_50,
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/fpmaint)
"wJR" = (
/obj/machinery/light/small{
dir = 4
@@ -153339,14 +155113,14 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/structure/disposalpipe/sortjunction{
dir = 4;
name = "Brig Equipment Storage";
sortType = 8
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -153546,6 +155320,11 @@
pixel_x = 24
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "whiteblue"
@@ -153649,16 +155428,21 @@
icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"wMc" = (
/obj/structure/closet/wardrobe/virology_white,
+/obj/item/storage/belt/medical,
+/obj/machinery/newscaster{
+ pixel_y = 32
+ },
/turf/simulated/floor/plasteel{
dir = 5;
icon_state = "whitegreen"
},
-/area/medical/virology/lab)
+/area/medical/virology)
"wMd" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/plasteel{
@@ -153721,7 +155505,7 @@
dir = 8;
icon_state = "darkred"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"wNu" = (
/obj/machinery/light{
dir = 1;
@@ -153816,7 +155600,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"wNP" = (
/obj/structure/closet/emcloset,
@@ -153970,7 +155756,7 @@
dir = 8
},
/turf/simulated/floor/plating,
-/area/chapel/main)
+/area/chapel/massdriver)
"wOT" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -154195,6 +155981,16 @@
/obj/effect/decal/cleanable/dust,
/turf/simulated/floor/carpet/green,
/area/maintenance/casino)
+"wQi" = (
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ pixel_y = -28
+ },
+/turf/simulated/floor/plasteel{
+ dir = 6;
+ icon_state = "vault"
+ },
+/area/chapel/massdriver)
"wQj" = (
/obj/machinery/door/airlock/maintenance{
req_access = list(22)
@@ -154331,17 +156127,15 @@
/turf/simulated/floor/plasteel,
/area/atmos)
"wRE" = (
-/obj/structure/railing{
- dir = 1
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 1
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
},
/turf/simulated/floor/plasteel{
- dir = 9;
- icon_state = "brown"
+ dir = 1
},
-/area/quartermaster/lobby)
+/area/hallway/primary/central/second/east)
"wRL" = (
/obj/effect/spawner/random_spawners/rodent,
/obj/effect/decal/cleanable/dirt,
@@ -154742,7 +156536,7 @@
/obj/effect/decal/warning_stripes/yellow/hollow,
/obj/effect/decal/warning_stripes/east,
/turf/simulated/floor/plasteel{
- icon_state = "neutralfull"
+ icon_state = "bluefull"
},
/area/atmos)
"wVm" = (
@@ -155013,7 +156807,7 @@
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"wXl" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
name = "standard air scrubber";
@@ -155269,7 +157063,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"wZp" = (
/obj/effect/turf_decal/stripes/gold,
@@ -155321,7 +157117,9 @@
codes_txt = "patrol;next_patrol=C5";
location = "C4"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"wZK" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -155366,9 +157164,6 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
@@ -155378,6 +157173,11 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -155499,7 +157299,7 @@
dir = 5;
icon_state = "darkblue"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"xaK" = (
/obj/machinery/alarm{
dir = 8;
@@ -155896,6 +157696,12 @@
},
/turf/simulated/floor/plating,
/area/maintenance/fpmaint)
+"xek" = (
+/obj/structure/sign/directions/floor/alt{
+ dir = 6
+ },
+/turf/simulated/wall,
+/area/quartermaster/miningstorage)
"xeu" = (
/turf/simulated/floor/plasteel{
icon_state = "darkred"
@@ -156173,7 +157979,7 @@
/obj/structure/railing/corner{
dir = 8
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/glass/reinforced,
@@ -156224,6 +158030,11 @@
},
/turf/simulated/floor/wood/fancy/cherry,
/area/crew_quarters/theatre)
+"xhp" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/random_spawners/blood_5,
+/turf/simulated/floor/plating,
+/area/maintenance/secpost)
"xhr" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable{
@@ -156324,8 +158135,16 @@
/turf/simulated/floor/carpet/black,
/area/chapel/main)
"xhS" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/effect/decal/cleanable/dirt,
-/obj/effect/spawner/random_spawners/blood_5,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"xhX" = (
@@ -156418,9 +158237,10 @@
"xiy" = (
/obj/machinery/camera{
c_tag = "Central Ring Hallway South 5";
- dir = 1
+ dir = 2
},
/turf/simulated/floor/plasteel{
+ dir = 1;
icon_state = "neutral"
},
/area/hallway/primary/central/sw)
@@ -156566,7 +158386,9 @@
dir = 1;
pixel_y = -28
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"xjx" = (
/obj/structure/particle_accelerator/particle_emitter/center{
@@ -156971,6 +158793,9 @@
"xmr" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/remains/human,
+/obj/structure/railing/corner{
+ dir = 8
+ },
/turf/simulated/floor/plasteel,
/area/maintenance/xenozoo)
"xmw" = (
@@ -157002,8 +158827,11 @@
/area/crew_quarters/serviceyard)
"xmD" = (
/obj/effect/decal/warning_stripes/northeastcorner,
-/obj/machinery/computer/pandemic,
-/obj/machinery/light,
+/obj/machinery/smartfridge/secure/chemistry/virology/preloaded,
+/obj/machinery/newscaster{
+ pixel_y = 0;
+ pixel_x = -32
+ },
/turf/simulated/floor/plasteel,
/area/medical/virology/lab)
"xmH" = (
@@ -157037,6 +158865,11 @@
/obj/effect/landmark/start/civilian,
/turf/simulated/floor/wood,
/area/crew_quarters/arcade)
+"xnc" = (
+/obj/effect/decal/cleanable/dust,
+/obj/effect/decal/cleanable/spiderling_remains,
+/turf/simulated/floor/wood,
+/area/maintenance/livingcomplex)
"xnd" = (
/obj/structure/table,
/obj/machinery/door/window{
@@ -157196,6 +159029,9 @@
dir = 4;
network = list("SS13","Security")
},
+/obj/item/clothing/suit/armor/hos/alt{
+ name = "Warden's armored trenchoat"
+ },
/turf/simulated/floor/carpet/red,
/area/security/warden)
"xoL" = (
@@ -157214,7 +159050,7 @@
name = "east station intercom (General)";
pixel_x = 28
},
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -157639,6 +159475,14 @@
pixel_x = 3;
pixel_y = -3
},
+/obj/item/grenade/chem_grenade/teargas{
+ pixel_y = -6;
+ pixel_x = 6
+ },
+/obj/item/grenade/chem_grenade/teargas{
+ pixel_y = -3;
+ pixel_x = 3
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -157650,11 +159494,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/grille,
-/obj/structure/cable{
- icon_state = "0-2"
- },
+/obj/structure/girder,
/turf/simulated/floor/plating,
/area/maintenance/fsmaint2)
"xrY" = (
@@ -157832,6 +159672,16 @@
icon_state = "purplefull"
},
/area/medical/research/nhallway)
+"xtz" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/remains/robot,
+/turf/simulated/floor/plating,
+/area/maintenance/asmaint2)
"xtI" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -158002,7 +159852,7 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
-/turf/simulated/floor/carpet/royalblack,
+/turf/simulated/floor/carpet/black,
/area/ntrep)
"xvb" = (
/obj/structure/cable{
@@ -158198,11 +160048,6 @@
/area/security/securearmory)
"xwA" = (
/obj/effect/decal/warning_stripes/west,
-/obj/item/storage/box/flashbangs{
- pixel_x = 3;
- pixel_y = -3
- },
-/obj/item/storage/box/flashbangs,
/obj/item/storage/box/handcuffs{
pixel_x = -3;
pixel_y = 3
@@ -158212,6 +160057,11 @@
name = "Brig storage crate"
},
/obj/machinery/light,
+/obj/item/storage/box/flashbangs,
+/obj/item/storage/box/flashbangs{
+ pixel_x = 3;
+ pixel_y = -3
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -158317,15 +160167,12 @@
},
/area/hallway/primary/command/west)
"xxs" = (
-/obj/effect/decal/warning_stripes/green,
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/disposalpipe/segment{
- invisibility = 101
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 4
+ dir = 9
},
/turf/simulated/floor/plasteel{
icon_state = "white"
@@ -158366,6 +160213,26 @@
icon_state = "brown"
},
/area/quartermaster/delivery)
+"xxO" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/fpmaint)
"xxV" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/closet/emcloset,
@@ -158468,10 +160335,6 @@
/area/hallway/primary/central/second/north)
"xyC" = (
/obj/effect/spawner/window/reinforced,
-/obj/machinery/door/poddoor/preopen{
- id_tag = "BridgeLockdown";
- name = "Bridge Lockdown"
- },
/turf/simulated/floor/plating,
/area/crew_quarters/captain)
"xyG" = (
@@ -158508,7 +160371,19 @@
},
/obj/machinery/light,
/obj/structure/table,
-/obj/item/storage/firstaid/regular,
+/obj/item/stack/sheet/metal{
+ amount = 50;
+ pixel_x = -2;
+ pixel_y = -2
+ },
+/obj/item/stack/sheet/metal{
+ amount = 50
+ },
+/obj/item/stack/sheet/rglass{
+ amount = 50;
+ pixel_x = 2;
+ pixel_y = 2
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -158699,11 +160574,6 @@
name = "Virology Requests Console";
pixel_x = -30
},
-/obj/machinery/camera{
- c_tag = "Virology";
- dir = 4;
- network = list("Medical","SS13")
- },
/turf/simulated/floor/plasteel,
/area/medical/virology/lab)
"xAc" = (
@@ -158942,9 +160812,12 @@
/area/toxins/mixing)
"xBF" = (
/obj/structure/window/reinforced,
-/obj/structure/statue/gold/hos{
- pixel_y = 7
+/obj/structure/sign/goldenplaque{
+ pixel_y = 32;
+ desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Aeterna0. Слава НаноТрейзен!";
+ name = "Благодарственное Письмо от Главного Инженера станции Нова"
},
+/obj/structure/statue/gold/ce,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -159272,7 +161145,7 @@
id_tag = "port4_sensor";
layer = 3.3;
pixel_x = 25;
- pixel_y = 5
+ pixel_y = 7
},
/obj/machinery/light/small{
dir = 8
@@ -159405,9 +161278,6 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/cable{
- icon_state = "1-4"
- },
/obj/machinery/hologram/holopad,
/obj/structure/cable{
icon_state = "4-8"
@@ -159490,11 +161360,13 @@
/turf/simulated/floor/plasteel,
/area/engineering/controlroom)
"xGC" = (
-/obj/machinery/light/small{
- dir = 8
+/obj/structure/barricade/wooden,
+/obj/machinery/door/airlock/atmos{
+ name = "Atmospherics Maintenance";
+ req_access = list(12,24)
},
/turf/simulated/floor/plating,
-/area/maintenance/apmaint)
+/area/maintenance/atmospherics)
"xGH" = (
/obj/machinery/camera{
c_tag = "Perma Library";
@@ -159549,14 +161421,14 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
},
-/obj/structure/cable{
- icon_state = "1-2"
- },
/obj/machinery/hologram/holopad,
/obj/machinery/navbeacon{
codes_txt = "patrol;next_patrol=A32";
location = "A31"
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/simulated/floor/plasteel{
icon_state = "neutralfull"
},
@@ -159787,7 +161659,7 @@
},
/obj/machinery/airlock_sensor{
id_tag = "arrival_south_sensor";
- pixel_y = 24
+ pixel_y = 34
},
/obj/machinery/embedded_controller/radio/airlock/airlock_controller{
id_tag = "arrival_south_airlock";
@@ -159795,7 +161667,11 @@
tag_chamber_sensor = "arrival_south_sensor";
tag_exterior_door = "arrival_south_outer";
tag_interior_door = "arrival_south_inner";
- pixel_y = -25
+ pixel_y = 27
+ },
+/obj/structure/sign/vacuum{
+ icon_state = "space1";
+ pixel_y = -32
},
/turf/simulated/floor/plating,
/area/hallway/secondary/exit)
@@ -159941,7 +161817,7 @@
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"xJI" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/disposalpipe/sortjunction{
@@ -160096,14 +161972,12 @@
/turf/simulated/floor/carpet,
/area/library)
"xKR" = (
-/obj/machinery/conveyor{
- dir = 10;
- id = "mining_internal"
- },
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
+/obj/machinery/mineral/mint{
+ input_dir = 8;
+ output_dir = 1
},
-/turf/simulated/floor/plating,
+/obj/effect/turf_decal/delivery,
+/turf/simulated/floor/plasteel,
/area/quartermaster/miningstorage)
"xKT" = (
/obj/structure/bed,
@@ -160308,13 +162182,13 @@
dir = 8;
icon_state = "vault"
},
-/area/tcommsat/chamber)
+/area/tcommsat/server)
"xMp" = (
-/obj/effect/decal/warning_stripes/yellow/hollow,
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/closet/firecloset,
+/obj/structure/railing/corner{
+ dir = 4
+ },
/turf/simulated/floor/plating,
-/area/maintenance/xenozoo)
+/area/maintenance/asmaint4)
"xMr" = (
/obj/machinery/door/firedoor,
/obj/effect/turf_decal/caution/red{
@@ -160335,8 +162209,8 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/plasteel{
- icon_state = "neutralfull"
+/turf/simulated/floor/engine{
+ slowdown = -0.3
},
/area/hallway/primary/central)
"xMu" = (
@@ -160450,10 +162324,12 @@
"xNB" = (
/obj/effect/decal/cleanable/dirt,
/obj/item/extinguisher,
+/obj/structure/cable/multiz{
+ color = "#dd1010"
+ },
/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
+ d2 = 4;
+ icon_state = "0-4"
},
/turf/simulated/floor/plasteel,
/area/maintenance/xenozoo)
@@ -160482,7 +162358,8 @@
},
/obj/effect/turf_decal/caution/red,
/turf/simulated/floor/plasteel{
- icon_state = "dark"
+ icon_state = "dark";
+ slowdown = -0.3
},
/area/hallway/primary/starboard/south)
"xNV" = (
@@ -160522,7 +162399,7 @@
},
/area/engineering/engine/monitor)
"xOe" = (
-/obj/structure/disposalpipe/segment,
+/obj/structure/chair,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "brown"
@@ -160690,6 +162567,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/item/radio/beacon,
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -160814,10 +162692,14 @@
pixel_x = 24;
pixel_y = 24
},
+/obj/machinery/alarm{
+ dir = 8;
+ pixel_x = 25
+ },
/turf/simulated/floor/plasteel{
icon_state = "cult"
},
-/area/chapel/office)
+/area/chapel/morgue)
"xQF" = (
/obj/effect/spawner/random_spawners/blood_20,
/turf/simulated/floor/plasteel{
@@ -160842,6 +162724,9 @@
"xQI" = (
/obj/structure/bed,
/obj/machinery/light,
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -161433,7 +163318,9 @@
/obj/effect/turf_decal/siding{
color = "#444444"
},
-/turf/simulated/floor/glass,
+/turf/simulated/floor/glass{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"xUh" = (
/obj/machinery/camera{
@@ -161441,6 +163328,10 @@
network = list("SS13","Security");
dir = 8
},
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 25
+ },
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "red"
@@ -161598,6 +163489,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "darkred"
@@ -161689,11 +163583,16 @@
dir = 1;
in_use = 1
},
+/obj/machinery/firealarm{
+ dir = 1;
+ name = "south fire alarm";
+ pixel_y = 26
+ },
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"xWd" = (
/obj/structure/window/reinforced{
dir = 8
@@ -161868,9 +163767,11 @@
"xWY" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table,
-/obj/item/stack/sheet/glass{
- amount = 20
+/obj/machinery/cell_charger{
+ pixel_x = -1;
+ pixel_y = 2
},
+/obj/item/stock_parts/cell/high/plus,
/turf/simulated/floor/plating,
/area/maintenance/secpost)
"xXb" = (
@@ -162066,6 +163967,9 @@
/obj/structure/cable{
icon_state = "2-8"
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/simulated/floor/plasteel{
dir = 1
},
@@ -162297,8 +164201,7 @@
pixel_y = 24
},
/turf/simulated/floor/plasteel{
- dir = 1;
- icon_state = "brown"
+ dir = 1
},
/area/quartermaster/lobby)
"yau" = (
@@ -162343,7 +164246,7 @@
/obj/machinery/airlock_sensor{
id_tag = "atmos_tank_sensor";
pixel_x = 57;
- pixel_y = 8
+ pixel_y = 7
},
/turf/simulated/floor/plasteel/dark,
/area/engineering/controlroom)
@@ -162508,6 +164411,18 @@
},
/turf/simulated/floor/wood,
/area/blueshield)
+"ybv" = (
+/obj/machinery/atmospherics/unary/vent_scrubber{
+ name = "standard air scrubber";
+ on = 1;
+ scrub_N2O = 1;
+ scrub_Toxins = 1;
+ dir = 1
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "dark"
+ },
+/area/chapel/massdriver)
"ybx" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -162727,6 +164642,15 @@
"ycY" = (
/turf/simulated/floor/glass/reinforced,
/area/hallway/secondary/exit/maint)
+"ydn" = (
+/obj/machinery/vending/wallmed{
+ pixel_x = 25
+ },
+/turf/simulated/floor/plasteel{
+ dir = 4;
+ icon_state = "purple"
+ },
+/area/hallway/primary/central/ne)
"ydo" = (
/obj/structure/sign/fire,
/turf/simulated/wall/r_wall,
@@ -162831,11 +164755,11 @@
},
/obj/item/kitchen/utensil/spoon{
pixel_x = -3;
- pixel_y = 18
+ pixel_y = 5
},
/obj/item/kitchen/utensil/fork{
pixel_x = -4;
- pixel_y = 18
+ pixel_y = 5
},
/obj/item/bikehorn/rubberducky,
/obj/machinery/light/small,
@@ -163047,6 +164971,14 @@
icon_state = "stage_bleft"
},
/area/maintenance/cafeteria)
+"yeR" = (
+/obj/structure/chair/sofa/pew/left{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel{
+ icon_state = "chapel"
+ },
+/area/chapel/main)
"yeT" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -163252,13 +165184,13 @@
},
/area/toxins/server)
"ygG" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
/obj/machinery/light/small{
dir = 8
},
/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "darkred"
@@ -163273,7 +165205,7 @@
dir = 6;
icon_state = "vault"
},
-/area/chapel/main)
+/area/chapel/massdriver)
"ygI" = (
/obj/machinery/door/firedoor,
/obj/effect/decal/warning_stripes/yellow,
@@ -163486,7 +165418,7 @@
/turf/simulated/floor/plating,
/area/maintenance/electrical)
"yhM" = (
-/obj/structure/chair/office{
+/obj/structure/chair{
dir = 4
},
/obj/structure/sign/poster/contraband/grey_tide{
@@ -163518,6 +165450,7 @@
/obj/item/clothing/gloves/combat,
/obj/item/clothing/mask/gas/syndicate,
/obj/item/kitchen/knife/combat/survival,
+/obj/item/suppressor,
/turf/simulated/floor/plating,
/area/maintenance/apmaint)
"yip" = (
@@ -163590,6 +165523,10 @@
icon_state = "white"
},
/area/medical/ward)
+"yjj" = (
+/obj/structure/flora/ausbushes/reedbush,
+/turf/simulated/floor/grass,
+/area/maintenance/garden)
"yjl" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -163738,7 +165675,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/simulated/floor/engine,
+/turf/simulated/floor/engine{
+ slowdown = -0.3
+ },
/area/hallway/primary/central)
"ykB" = (
/obj/machinery/recharge_station,
@@ -179980,7 +181919,7 @@ tkq
tkq
tkq
tkq
-rSe
+eIe
eIe
tkq
eIe
@@ -180231,13 +182170,13 @@ tkq
tkq
tkq
tkq
-tkq
-tkq
-tkq
-tkq
-tkq
-tkq
+lBr
+lBr
+lBr
eIe
+lBr
+lBr
+lBr
eIe
ocY
ocY
@@ -180488,13 +182427,13 @@ tkq
tkq
tkq
tkq
+eIe
+eIe
+eIe
+vte
+eIe
tkq
-tkq
-tkq
-tkq
-tkq
-tkq
-lBr
+eIe
eIe
ocY
iBD
@@ -180745,16 +182684,16 @@ tkq
tkq
tkq
tkq
-tkq
-tkq
-tkq
-tkq
-tkq
-tkq
+lBr
eIe
-tkq
+dFQ
+lqY
+dFQ
+dFQ
+dFQ
+dFQ
ocY
-mWj
+pWd
eCk
fAb
wlg
@@ -180995,21 +182934,21 @@ eIe
lBr
lBr
lBr
-eIe
-lBr
-lBr
-lBr
-eIe
-lBr
lBr
+iuf
+tkq
+iuf
lBr
lBr
eIe
lBr
tkq
-tkq
-lBr
-eIe
+dFQ
+qOG
+pOS
+dFQ
+gAb
+cKa
ocY
kbT
qfb
@@ -181252,21 +183191,21 @@ tkq
eIe
eIe
tkq
-tkq
eIe
-tkq
-tkq
-eIe
-tkq
+iuf
+ezI
+iuf
eIe
tkq
eIe
tkq
eIe
-eIe
-lBr
-lBr
-tkq
+dFQ
+ptP
+dFQ
+dFQ
+tiT
+jnG
ocY
eLr
mwG
@@ -181512,18 +183451,18 @@ tSU
qwc
bxz
fbg
-oPv
-bxz
-bxz
-bxz
bxz
+fjf
+oPv
bxz
-gAb
+dFQ
+dFQ
+dFQ
qBV
-eIe
-tkq
-eIe
-tkq
+hMh
+qbi
+tiT
+jqb
ocY
vnM
vnM
@@ -181770,14 +183709,14 @@ oPd
xzW
bkx
xmD
-bxz
+frL
oSq
-aok
-jcp
bxz
-dFQ
-how
-dFQ
+jcp
+dgD
+hMh
+hMh
+lmz
cOv
cOv
cOv
@@ -182025,16 +183964,16 @@ bCd
vNi
stX
hov
-stX
+ojn
tYA
-bxz
+stX
jMH
-qbi
-pOS
+bxz
+jcp
dgD
-jqb
-hlh
-dtq
+hMh
+hMh
+eSe
cOv
rhA
rhA
@@ -182286,11 +184225,11 @@ sNz
xxs
vtN
bwt
-mya
-sMR
bxz
-suX
-rDZ
+sMR
+hKO
+xMp
+hMh
tlF
cOv
edT
@@ -182546,8 +184485,8 @@ sGG
sGG
sGG
sGG
-lmz
-rDZ
+how
+hMh
suX
cOv
rhA
@@ -182803,8 +184742,8 @@ rGy
pFf
kwv
sGG
-hMh
-qOG
+bSF
+oCY
hMh
cOv
vgO
@@ -183037,18 +184976,18 @@ tkq
tkq
rSe
eIe
-kCc
-kCc
-mnl
-kCc
-kCc
+bxz
+bxz
+bxz
+bxz
+bxz
eAo
suh
dNs
fIM
fxa
vHH
-nuS
+mnl
bxz
sMg
wEJ
@@ -183061,7 +185000,7 @@ dAZ
gjh
sGG
hMh
-rDZ
+lmz
hMh
cOv
rhA
@@ -183294,11 +185233,11 @@ tkq
tkq
tkq
eIe
-kCc
+bxz
gBh
bAV
nuJ
-frL
+bxz
lCp
fIM
fIM
@@ -183551,7 +185490,7 @@ rSe
eIe
lBr
eIe
-kCc
+bxz
vyk
aek
wxG
@@ -183808,16 +185747,16 @@ eIe
tkq
tkq
eIe
-kCc
-kCc
+bxz
+fKM
ris
+rlz
kCc
kCc
-bxz
-aFN
+mqs
wJK
-bxz
-mnF
+kCc
+gLO
lXM
bxz
sGG
@@ -183889,7 +185828,7 @@ bKi
aYM
qYW
lHU
-ttn
+dCH
bYW
tkq
eIe
@@ -184066,15 +186005,15 @@ eIe
eIe
eIe
kCc
-fjf
-gLO
-sOA
+kCc
+kCc
+kCc
kCc
mVa
qgf
pwW
ego
-bxz
+kCc
rnr
uhE
sGG
@@ -184113,7 +186052,7 @@ hKl
jOC
irs
son
-pSU
+oEP
jOC
oak
pPo
@@ -184322,13 +186261,13 @@ eIe
tkq
tkq
eIe
-fKM
+kCc
lcj
gxv
fhc
-kCc
+sOA
sSj
-fIM
+vtz
pTe
dXw
tWh
@@ -184579,10 +186518,10 @@ eIe
tkq
tkq
eIe
-kCc
-kCc
+udr
+jWG
lHD
-kCc
+dUj
kCc
nvF
izO
@@ -184864,7 +186803,7 @@ mMG
npW
wLs
lyr
-lVP
+tUf
hmk
vtS
kOs
@@ -185098,11 +187037,11 @@ kCc
kCc
kCc
kCc
-bxz
-bxz
-bxz
-bxz
-bxz
+kCc
+kCc
+kCc
+kCc
+kCc
eiG
pGR
sGG
@@ -185420,7 +187359,7 @@ psM
ttn
ttn
seX
-ttn
+hmj
ttn
sgU
ulX
@@ -185610,7 +187549,7 @@ xYq
qGf
bHf
aWy
-ugu
+pGo
fDG
fDG
fDG
@@ -185826,7 +187765,7 @@ pMY
lrf
hkd
lNx
-pGm
+ldG
oax
kbL
vXb
@@ -185936,7 +187875,7 @@ ttn
ttn
jgD
nQu
-ttn
+hmj
ulX
tgE
nAO
@@ -186109,7 +188048,7 @@ tkq
tkq
eIe
eIe
-tkq
+eIe
eIe
ucR
quA
@@ -186365,7 +188304,7 @@ tkq
tkq
tkq
eIe
-tkq
+eIe
ucR
gxN
ucR
@@ -186922,7 +188861,7 @@ kKA
clX
wpX
rij
-rEE
+rxW
rxW
rxW
aTR
@@ -186937,11 +188876,11 @@ pYK
gNr
iFh
fhv
-dAF
+kVT
svF
dAF
dAF
-pvk
+cLB
dAF
lxp
lRf
@@ -186971,7 +188910,7 @@ ttn
ttn
eki
tTP
-ttn
+hFd
ttn
psM
ckW
@@ -187437,7 +189376,7 @@ clX
cpV
pYy
ePZ
-ePZ
+ryC
ePZ
ePZ
ePZ
@@ -187694,7 +189633,7 @@ rDn
uWp
jwA
kNb
-jEL
+kNb
jEL
jEL
jEL
@@ -187980,7 +189919,7 @@ tkq
thy
gQA
wmY
-sfN
+ifd
gOM
qnW
blF
@@ -188781,9 +190720,9 @@ ttn
nwo
wsu
udY
-xQs
-qOO
-pyi
+oZp
+dfe
+vVy
wsu
kEy
uCK
@@ -189039,7 +190978,7 @@ jNq
wsu
lbN
fZj
-pcS
+wsu
wsu
wsu
nqt
@@ -189265,7 +191204,7 @@ tkq
thy
aFf
wmY
-xiy
+sfN
qlo
bvO
gYh
@@ -189520,7 +191459,7 @@ tkq
tkq
tkq
thy
-xFC
+xiy
wmY
sfN
hdy
@@ -190574,7 +192513,7 @@ tiA
sKc
fDY
fYt
-nJe
+gjt
xKy
rKs
jCO
@@ -190852,7 +192791,7 @@ xQs
hUD
pcS
tkq
-eIe
+lBr
tkq
tkq
tkq
@@ -191087,11 +193026,11 @@ pyl
fDY
fDY
fDY
-nQu
+gAS
ttn
bYW
ksd
-ttn
+oAy
evi
evi
wsu
@@ -191109,7 +193048,7 @@ jOw
eGy
wsu
eIe
-lBr
+eIe
tkq
tkq
tkq
@@ -191604,8 +193543,8 @@ nJe
cXx
nJe
eDP
-nJe
-nJe
+cvl
+fhS
xTj
oVL
nJe
@@ -191623,7 +193562,7 @@ ttn
bYW
eIe
eIe
-eIe
+lBr
tkq
tkq
tkq
@@ -191860,9 +193799,9 @@ qzc
bYW
kbA
ttn
-psM
ttn
-eXZ
+ttn
+ttn
ttn
pUn
ttn
@@ -191879,8 +193818,8 @@ fXy
eXZ
bYW
eIe
-lBr
tkq
+lBr
tkq
tkq
tkq
@@ -192117,7 +194056,7 @@ bYW
lgX
kbA
ttn
-uBa
+psM
ttn
jNq
ttn
@@ -192136,8 +194075,8 @@ fXy
ttn
bYW
eIe
-lBr
-tkq
+eIe
+eIe
tkq
tkq
tkq
@@ -192375,7 +194314,7 @@ cSJ
kbA
ttn
ttn
-ttn
+efz
ttn
ttn
jhB
@@ -192652,8 +194591,8 @@ bYW
bYW
eIe
lBr
+lBr
eIe
-rSe
lBr
lBr
eIe
@@ -192674,7 +194613,7 @@ tkq
tkq
tkq
lBr
-eIe
+lBr
tkq
tkq
eIe
@@ -193441,10 +195380,10 @@ rSe
rSe
rSe
rSe
-tkq
+eIe
rSe
rSe
-tkq
+eIe
eIe
rGI
rGI
@@ -193889,7 +195828,7 @@ tkq
tkq
tkq
dTS
-hOz
+lSD
fDj
iBU
aHe
@@ -195471,7 +197410,7 @@ rmx
mQB
fuX
fuX
-fuX
+fCh
fuX
dKf
fuX
@@ -196459,7 +198398,7 @@ tkq
tkq
tkq
dTS
-hOz
+lSD
tlq
xTw
hhx
@@ -197671,7 +199610,7 @@ gXW
tdW
bTG
cFP
-cFP
+xtz
jtE
cjb
txE
@@ -198172,7 +200111,7 @@ tkq
tkq
eIe
tkq
-vjO
+pAn
pAn
pAn
pAn
@@ -198471,7 +200410,7 @@ nRL
ier
ier
ier
-lVq
+wtA
fTD
cGX
jlb
@@ -198696,7 +200635,7 @@ tDO
pAn
xBm
jpO
-qje
+ggm
gBD
vzc
gxC
@@ -201098,7 +203037,7 @@ bua
mFo
mDJ
gGW
-sNf
+wjn
bua
xHX
aDI
@@ -201352,7 +203291,7 @@ xJw
vYv
wnt
aGG
-vFR
+tgA
dZM
vrH
xWQ
@@ -201608,8 +203547,8 @@ icB
yep
mYl
rNI
-yep
tgA
+dlr
okL
fgH
sNf
@@ -201770,10 +203709,10 @@ tkq
tkq
tkq
tkq
+tkq
eIe
eIe
tkq
-tkq
eIe
tkq
eIe
@@ -201864,12 +203803,12 @@ abP
tDt
yep
ugL
-mYl
-yep
-yep
+wfm
+iZx
+edZ
iKJ
-bua
-qQx
+tLT
+sNf
bua
jFG
aDI
@@ -202030,7 +203969,7 @@ tkq
tkq
tkq
lBr
-tkq
+eIe
eIe
tkq
tkq
@@ -202119,26 +204058,26 @@ hqk
aKR
bEk
pSy
-hbx
-hbx
rZk
-okL
+hbx
+qFH
uKE
+bua
cRf
-iZx
-sNf
+bua
+qQx
bua
aDI
aDI
lTH
vYf
oGs
-kbY
exm
-xhS
+gKU
+aDI
lTH
heh
-gTr
+jFG
vhN
uIF
kLT
@@ -202376,23 +204315,23 @@ tLk
bua
iek
eby
-okL
+rLZ
iWG
rMj
jDV
-rLZ
+bua
mHJ
bua
hRc
bua
aDI
jFG
-hyb
-gEI
-aDI
-exm
-jFG
-gKU
+wNw
+cJE
+lTH
+bDT
+lTH
+wNw
cJE
iwG
aDI
@@ -202600,7 +204539,7 @@ xOP
rfk
vuh
wfZ
-pKC
+wfZ
pKC
pKC
pKC
@@ -202642,18 +204581,18 @@ bua
bua
nMS
bua
-gka
+dQa
aDI
-wNw
-cJE
-lTH
-bDT
-lTH
-wNw
-cJE
-heh
+aDI
+jFG
aDI
aDI
+aDI
+gka
+jFG
+heh
+anF
+gEI
pWK
eCz
qno
@@ -202856,16 +204795,16 @@ obz
hgS
oQW
xZx
-sVx
uiv
+sVx
uiv
uiv
uiv
aFk
-uiv
fyE
uiv
uiv
+uiv
thK
dJK
dJK
@@ -202899,13 +204838,13 @@ anF
jFG
xJI
rjZ
-rjZ
+xhS
mne
xrW
rjZ
rjZ
mne
-rjZ
+gTr
mne
rjZ
jfs
@@ -203119,8 +205058,8 @@ jmX
jmX
jmX
qPF
-jmX
dOx
+fve
jmX
jmX
eJP
@@ -203155,18 +205094,18 @@ mRy
vpp
iTw
gGw
-jFG
-aDI
-aDI
-aDI
-jFG
-aDI
-aDI
-dQa
-aDI
-jcD
-kuC
-aDI
+cJE
+cJE
+myJ
+cJE
+hhW
+hhW
+hhW
+cJE
+myJ
+cJE
+cJE
+tUE
ior
pWK
hdj
@@ -203209,7 +205148,7 @@ rDK
dRr
aoA
ddi
-rDK
+dvO
aoA
ddi
hmw
@@ -203376,8 +205315,8 @@ kIw
kIw
nSH
wkv
-kIw
pKv
+ydn
kIw
rvm
rcj
@@ -203413,15 +205352,15 @@ nvM
isK
cJE
cJE
-cJE
-myJ
-cJE
-hhW
-hhW
-hhW
-cJE
-myJ
-cJE
+eIe
+eIe
+eIe
+eIe
+eIe
+eIe
+eIe
+eIe
+eIe
pWK
pWK
pWK
@@ -204217,8 +206156,8 @@ mMy
lON
dvj
pWK
-jll
-jll
+qwG
+qFi
jqO
jll
iIW
@@ -204641,7 +206580,7 @@ cPC
ofz
qcE
lyx
-lfG
+uBa
dcq
dcq
dcq
@@ -206017,7 +207956,7 @@ xXx
pWK
pWK
eIe
-tkq
+eIe
tkq
tkq
tkq
@@ -206166,7 +208105,7 @@ oOM
wWd
xMj
qBQ
-lEo
+ggd
lEo
lEo
cbB
@@ -206507,7 +208446,7 @@ wuh
wuh
rSe
rSe
-tkq
+eIe
rSe
eIe
xXx
@@ -206527,8 +208466,8 @@ aSY
rMb
xXx
eIe
-tkq
-tkq
+eIe
+eIe
rSe
rSe
rSe
@@ -207536,7 +209475,7 @@ eIe
eIe
tkq
tkq
-tkq
+eIe
eIe
pWK
pWK
@@ -209597,7 +211536,7 @@ osb
laS
eIe
eIe
-tkq
+eIe
tkq
tkq
tkq
@@ -210368,7 +212307,7 @@ kBa
pyF
lWk
eIe
-tkq
+eIe
tkq
tkq
tkq
@@ -212106,9 +214045,9 @@ hjv
xjC
ujn
yiU
-efd
+lto
fjp
-efd
+lto
ulx
fxL
ugC
@@ -214937,8 +216876,8 @@ ibo
cxn
hRb
hRb
-ulx
-jKe
+ibo
+nFO
fti
kcL
gVE
@@ -215194,7 +217133,7 @@ bUe
lLp
hRb
eOZ
-ulx
+ibo
qiC
rnu
gjV
@@ -215451,7 +217390,7 @@ xav
uXa
qEE
vkH
-ulx
+ibo
jKe
rwA
kcL
@@ -215708,7 +217647,7 @@ ibo
pLe
dZk
vkH
-ulx
+ibo
kmZ
rwA
ifZ
@@ -238850,15 +240789,15 @@ bkc
bkc
bkc
sLA
-bkc
+uJG
wTd
sLA
wTd
sLA
-bkc
+uJG
sLA
sLA
-bkc
+uJG
bkc
bkc
bkc
@@ -239108,18 +241047,18 @@ bkc
sLA
sLA
uJG
+bkc
uJG
+bkc
uJG
uJG
-uJG
-uJG
-uJG
+bkc
uJG
uJG
ngN
ngN
-bkc
-bkc
+uJG
+uJG
bkc
bkc
bkc
@@ -239357,13 +241296,13 @@ bkc
bkc
sLA
sLA
-bkc
+uJG
sLA
sLA
sLA
uJG
uJG
-uJG
+bkc
uJG
jKG
iXN
@@ -239373,7 +241312,7 @@ ptL
oLX
jKG
uJG
-uJG
+bkc
uJG
uJG
ngN
@@ -239614,9 +241553,9 @@ bkc
bkc
sLA
uJG
+bkc
uJG
-uJG
-uJG
+bkc
uJG
uJG
jKG
@@ -239869,7 +241808,7 @@ bkc
bkc
bkc
bkc
-bkc
+uJG
uJG
jKG
iAa
@@ -239891,7 +241830,7 @@ jqG
jKG
uJG
uJG
-bkc
+uJG
bkc
bkc
bkc
@@ -240127,7 +242066,7 @@ bkc
bkc
bkc
sLA
-uJG
+bkc
jKG
naa
vDU
@@ -240382,7 +242321,7 @@ bkc
ngN
ngN
ngN
-bkc
+uJG
sLA
uJG
jKG
@@ -240404,7 +242343,7 @@ fuE
uCv
jKG
fvL
-bkc
+uJG
ngN
bkc
bkc
@@ -240639,7 +242578,7 @@ bkc
ngN
uJG
uJG
-uJG
+bkc
uJG
uJG
jKG
@@ -240649,7 +242588,7 @@ ijH
aGm
jKG
mxI
-pWX
+oKn
fbq
uCw
eap
@@ -240661,7 +242600,7 @@ pWX
aJw
jKG
fvL
-uJG
+bkc
uJG
bkc
bkc
@@ -240894,7 +242833,7 @@ bkc
bkc
bkc
ngN
-uJG
+bkc
nNF
nNF
nNF
@@ -240907,9 +242846,9 @@ jKG
jKG
nNv
rTJ
-rTJ
-rTJ
-rTJ
+dgS
+dgS
+dgS
xFD
dgS
dgS
@@ -240918,7 +242857,7 @@ dgS
mll
jKG
fvL
-bkc
+uJG
ngN
bkc
bkc
@@ -241149,8 +243088,8 @@ bkc
bkc
ngN
ngN
-bkc
-bkc
+uJG
+uJG
uJG
nNF
txs
@@ -241175,7 +243114,7 @@ jpI
kZm
jKG
fvL
-uJG
+bkc
ngN
bkc
bkc
@@ -241407,7 +243346,7 @@ bkc
ngN
uJG
uJG
-uJG
+bkc
uJG
nNF
tfW
@@ -241661,7 +243600,7 @@ bkc
bkc
bkc
bkc
-bkc
+uJG
uJG
nNF
nNF
@@ -241689,7 +243628,7 @@ kmU
qtJ
jKG
uJG
-uJG
+bkc
bkc
uJG
bkc
@@ -241919,7 +243858,7 @@ bkc
bkc
bkc
ngN
-uJG
+bkc
nNF
wZC
xId
@@ -242688,7 +244627,7 @@ bkc
bkc
bkc
bkc
-bkc
+uJG
uJG
xoL
xoL
@@ -242946,7 +244885,7 @@ bkc
bkc
bkc
ngN
-uJG
+bkc
xoL
ajW
xoL
@@ -243460,7 +245399,7 @@ bkc
bkc
bkc
ngN
-uJG
+bkc
xoL
ajW
xoL
@@ -243716,7 +245655,7 @@ bkc
bkc
bkc
bkc
-bkc
+uJG
uJG
xoL
ajW
@@ -243974,7 +245913,7 @@ bkc
bkc
bkc
ngN
-uJG
+bkc
xoL
ajW
xoL
@@ -244015,7 +245954,7 @@ hcX
ueH
jsA
uJG
-bkc
+uJG
bkc
bkc
bkc
@@ -244230,7 +246169,7 @@ bkc
bkc
bkc
bkc
-bkc
+uJG
uJG
xoL
ajW
@@ -244488,7 +246427,7 @@ bkc
bkc
bkc
ngN
-uJG
+bkc
xoL
ajW
xoL
@@ -245001,19 +246940,19 @@ bkc
bkc
bkc
bkc
-bkc
uJG
+bkc
xoL
ajW
xoL
oMu
sfk
-sfk
-sfk
+mhj
+tpw
bhh
fvn
gHq
-hmj
+dmu
xoL
uck
eJG
@@ -245032,7 +246971,7 @@ vbS
gKt
xmI
dWi
-mct
+jmY
aDA
xAy
vmF
@@ -245290,7 +247229,7 @@ cTX
egQ
ldl
gEV
-jmY
+mct
xbz
cIK
jHI
@@ -245515,14 +247454,14 @@ bkc
bkc
bkc
bkc
-bkc
+uJG
uJG
xoL
ajW
xoL
gEx
-mYe
-mYe
+ovd
+uJX
mYe
qtN
tIW
@@ -245766,9 +247705,9 @@ bkc
bkc
bkc
bkc
+bkc
sLA
sLA
-uJG
sLA
sLA
uJG
@@ -246023,13 +247962,13 @@ bkc
bkc
bkc
bkc
-sLA
-uJG
-uJG
+bkc
uJG
uJG
+bkc
uJG
uJG
+bkc
uJG
uJG
jHy
@@ -246280,7 +248219,8 @@ bkc
bkc
bkc
bkc
-uJG
+bkc
+ngN
uJG
rzS
rzS
@@ -246288,7 +248228,6 @@ rzS
rzS
rzS
rzS
-rzS
jHy
kEO
iXG
@@ -246321,13 +248260,13 @@ xAy
xAy
xAy
uJG
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
jEv
-wuh
-wuh
+bXf
+bXf
uJG
uJG
cYe
@@ -246531,19 +248470,19 @@ uJG
ngN
ngN
ngN
-uJG
-ngN
-ngN
ngN
uJG
+bkc
+uJG
ngN
ngN
uJG
+ngN
+bkc
rzS
gHR
wFz
czo
-czo
ygG
kUw
jHy
@@ -246578,23 +248517,23 @@ qEX
pjI
asI
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
uJG
uJG
uJG
@@ -246788,21 +248727,21 @@ bkc
uJG
uJG
bkc
-bkc
uJG
-bkc
+uJG
bkc
uJG
+uJG
bkc
uJG
bkc
+uJG
rzS
sDU
-lqY
+hlh
dQY
-tiT
alP
-kcV
+lwL
rzS
wrz
wrz
@@ -246835,23 +248774,23 @@ tcn
vmD
aGc
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
uJG
fvL
fvL
@@ -247051,13 +248990,13 @@ mPK
mPK
mPK
mPK
+bSt
mPK
mPK
rzS
oar
keF
vIl
-ezI
dpQ
kcV
rzS
@@ -247092,23 +249031,23 @@ xrE
uTI
asI
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
uJG
fvL
kdb
@@ -247309,12 +249248,12 @@ bSt
mDO
mSP
ama
-xMp
+kPs
+kPs
rzS
noH
aMO
aMO
-eSe
oOA
cOS
rzS
@@ -247349,23 +249288,23 @@ vvJ
hGB
asI
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
fvL
fvL
fvL
@@ -247564,27 +249503,27 @@ gnI
wut
bSt
jWz
-vte
-ptP
+vYm
+pof
+kPs
kPs
rzS
fNN
fYS
fMe
-rzS
dNd
rzS
rzS
fkD
pTl
dCj
-sVG
+jHy
dRE
eNC
xey
viK
fJx
-sVG
+jHy
fKV
tka
kWp
@@ -247606,23 +249545,23 @@ oZD
xOi
asI
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
uJG
-wuh
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
+bXf
evW
-wuh
-wuh
+bXf
+bXf
fvL
kdb
kdb
@@ -247820,15 +249759,15 @@ kGq
aFJ
iyK
bSt
-vYm
+jOz
xNB
-amE
-dYK
+jjR
+kPs
+kPs
rzS
-bSF
+aok
hMq
yaw
-mQk
kwG
ohy
bFy
@@ -248081,11 +250020,11 @@ pMx
mfx
xmr
oFH
+etN
rzS
-jOz
+mQk
kVV
aLJ
-jjR
jmO
lYF
mlg
@@ -248337,12 +250276,12 @@ hKj
xTe
pyy
rxN
+mya
hnU
rzS
ohi
ruz
rEd
-jnG
uxF
kch
aCQ
@@ -248594,12 +250533,12 @@ pfP
bqo
xqa
dbx
+dYK
obP
rzS
wAY
-ojn
+uNf
exG
-kYo
hwt
gSZ
wHo
@@ -248852,7 +250791,7 @@ pfP
mPK
btV
pfP
-rzS
+mPK
rzS
rzS
rzS
@@ -248914,7 +250853,7 @@ nxU
sZA
sef
uJG
-bkc
+uJG
bkc
bkc
bkc
@@ -249869,7 +251808,7 @@ yev
khC
lRC
vpN
-lFD
+pWF
jtj
dcL
jtj
@@ -250147,15 +252086,15 @@ xWH
cCL
dlD
trZ
-cXR
+xzQ
kYp
lRi
-wot
+vTl
gcH
-hqo
-lRi
-nOM
bmP
+lRi
+kYp
+xzQ
rAz
dlD
gIB
@@ -250904,7 +252843,7 @@ lUo
rJp
sJt
lRC
-rCY
+kct
yev
yev
yev
@@ -250925,8 +252864,8 @@ vTl
vZU
hqo
lRi
-nOM
-cDr
+kYp
+uWF
tNj
dlD
pvc
@@ -251235,9 +253174,9 @@ bkc
bkc
bkc
bkc
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
bkc
bkc
bkc
@@ -251392,7 +253331,7 @@ ngN
uJG
gto
rhR
-pve
+iOm
mBW
dLa
jEj
@@ -251418,7 +253357,7 @@ xlU
shG
sJt
qgm
-lRC
+rEE
yev
aKx
dLa
@@ -251491,11 +253430,11 @@ bkc
bkc
bkc
bkc
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
bkc
bkc
bkc
@@ -251748,11 +253687,11 @@ ngN
ngN
ngN
bkc
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
bkc
bkc
bkc
@@ -252005,11 +253944,11 @@ uJG
uJG
uJG
bkc
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
bkc
bkc
bkc
@@ -252262,11 +254201,11 @@ kmy
cRI
cRI
bkc
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
bkc
bkc
bkc
@@ -252485,14 +254424,14 @@ uGl
mvk
jaa
mvk
-vXK
-arE
-arE
-arE
+mvk
+mvk
+mvk
+mvk
rJG
lWn
fJq
-cqZ
+pvk
fBg
fBg
fBg
@@ -252520,17 +254459,17 @@ pEe
cRI
cRI
wsu
-wuh
+bXf
qev
-wuh
+bXf
wsu
bkc
uJG
uJG
-wTd
-wTd
+sLA
+sLA
uJG
-wTd
+sLA
uJG
sLA
sLA
@@ -252741,15 +254680,15 @@ iyd
rXH
iyd
qcz
-fnc
-lpF
-arE
-arE
-arE
-lFo
-ivW
-ugJ
-ivW
+vXK
+vXK
+vXK
+tku
+vXK
+pmm
+qAM
+kPp
+qJP
fBg
qQY
iwb
@@ -252968,8 +254907,8 @@ sCs
eNt
bfp
wIv
-frh
-uol
+ivf
+xxO
dLa
myO
xoV
@@ -252999,14 +254938,14 @@ cGn
qGE
aop
fnc
-lpF
-arE
-arE
-arE
-lFo
+fnc
+fnc
+fnc
+fnc
+nUf
ivW
ugJ
-ivW
+pvk
qub
uMk
gtN
@@ -253257,13 +255196,13 @@ mHk
aop
mrC
gAz
-ejy
-arE
-tGl
+iuS
+iuS
+iuS
jFd
wTS
oGz
-ivW
+pvk
csh
xDx
uHJ
@@ -253279,7 +255218,7 @@ ieI
gtF
otn
kZy
-wUw
+fQX
chE
ddQ
bbZ
@@ -253476,7 +255415,7 @@ dDu
cCL
uRm
aAz
-dvq
+ekJ
dvq
dvq
xtI
@@ -253520,7 +255459,7 @@ arE
lFo
ivW
vmf
-ivW
+pvk
aFr
jeV
fpz
@@ -253733,7 +255672,7 @@ dDu
jKZ
pve
pve
-frh
+wJM
pve
fJX
bNO
@@ -253793,7 +255732,7 @@ orm
kfz
xKb
thB
-wre
+dcl
xic
ddQ
oqM
@@ -253805,7 +255744,7 @@ uXt
eOs
wsu
wsu
-pcS
+wsu
iEi
mJw
wsu
@@ -253819,7 +255758,7 @@ wsu
uJG
ngN
uJG
-wTd
+sLA
bkc
bkc
bkc
@@ -254291,7 +256230,7 @@ arE
jFd
uDc
ugJ
-ivW
+pvk
fBg
rOC
rCX
@@ -254333,7 +256272,7 @@ wsu
wsu
uJG
uJG
-wTd
+sLA
bkc
bkc
bkc
@@ -254548,7 +256487,7 @@ arE
lFo
ivW
ugJ
-ivW
+pvk
fBg
ryM
lgx
@@ -254819,7 +256758,7 @@ btM
syu
gVD
bbZ
-wre
+fBy
mVH
bRV
wre
@@ -255062,7 +257001,7 @@ arE
lFo
ivW
ugJ
-ivW
+pvk
bXo
aeK
xyr
@@ -255336,7 +257275,7 @@ awC
xRZ
pWi
wUw
-wre
+fBy
ihn
xXG
aiQ
@@ -255576,7 +257515,7 @@ arE
lFo
ivW
pUd
-ivW
+pvk
bXo
apH
fvM
@@ -255594,7 +257533,7 @@ xRZ
wre
wCs
rhi
-wUw
+xhp
uhC
cPv
tUk
@@ -256090,7 +258029,7 @@ arE
lFo
ivW
ugJ
-ivW
+pvk
bXo
mCQ
kJp
@@ -256108,7 +258047,7 @@ hoH
mTa
mqL
jYH
-wre
+fBy
awC
ibR
jAH
@@ -256604,7 +258543,7 @@ arE
lFo
ivW
ugJ
-ivW
+pvk
baL
baL
baL
@@ -257118,7 +259057,7 @@ arE
lFo
ivW
ugJ
-ivW
+pvk
lWG
mgf
aPP
@@ -257365,7 +259304,7 @@ tqz
tuW
tuW
tuW
-mHk
+jFO
aop
kxH
gAz
@@ -257375,7 +259314,7 @@ tGl
jFd
rIc
ugJ
-ivW
+pvk
lWG
deS
fCq
@@ -257827,7 +259766,7 @@ lbB
hCH
hHJ
brM
-pYS
+aNX
ihk
fGh
boP
@@ -257889,7 +259828,7 @@ tMg
lFo
ivW
ugJ
-ivW
+pvk
odS
ybD
qKH
@@ -258146,7 +260085,7 @@ tMg
lFo
ivW
ugJ
-ivW
+pvk
odS
mgf
aPP
@@ -258403,7 +260342,7 @@ tMg
jFd
oZE
ugJ
-ivW
+pvk
wGw
deS
gaj
@@ -258644,7 +260583,7 @@ fvL
bkc
bkc
bkc
-bkc
+fvL
bkc
bkc
bkc
@@ -258660,7 +260599,7 @@ tMg
lFo
ivW
ugJ
-ivW
+pvk
baL
baL
baL
@@ -258917,7 +260856,7 @@ tMg
lFo
ivW
kds
-ivW
+cqZ
gjd
sOJ
hTz
@@ -259191,7 +261130,7 @@ baL
baL
aJc
aJc
-aJc
+hhB
aJc
mJT
vyJ
@@ -259355,7 +261294,7 @@ fvL
fvL
hKA
kCp
-jZN
+nwG
kCp
uMw
ppW
@@ -260382,7 +262321,7 @@ kCp
kGY
hKA
nxY
-qNY
+kCp
hJs
uMw
daU
@@ -260493,12 +262432,12 @@ imS
lPj
fyh
nxD
-bIu
+hVn
fyh
fMX
mze
hgq
-fyh
+bIu
dgs
brJ
xsB
@@ -261999,9 +263938,9 @@ tMg
tMg
tMg
hug
-ifd
+ukK
khN
-juQ
+ukK
wwZ
azk
sOJ
@@ -262033,7 +263972,7 @@ xMH
mze
cZV
mNa
-mNa
+pSb
fqA
mNa
mNa
@@ -262289,14 +264228,14 @@ xKT
eKz
sBh
qYz
-sBh
-pSb
-mze
-sBh
+mNa
+qDy
+xGC
+mNa
jNK
bzv
jBe
-ijm
+mlt
sBh
bkc
bkc
@@ -262453,7 +264392,7 @@ woE
mmc
wsA
qCF
-pYS
+fps
ihk
fGh
qEA
@@ -262546,9 +264485,9 @@ ipS
eKz
jsl
soQ
-xGC
mze
-hVn
+mze
+mze
sBh
wAN
xrL
@@ -262708,7 +264647,7 @@ aFR
ges
npi
rsU
-rsU
+vdg
qCF
iOP
ihk
@@ -262756,7 +264695,7 @@ fvL
bkc
bkc
bkc
-bkc
+fvL
bkc
bkc
bkc
@@ -262769,7 +264708,7 @@ jKC
tMg
tMg
tMg
-tku
+gec
ukK
ngs
gmY
@@ -262809,7 +264748,7 @@ fYa
aSx
fKh
ijm
-ijm
+seH
hVn
aKO
bkc
@@ -263283,7 +265222,7 @@ jKC
tMg
tMg
tMg
-wRE
+gec
ukK
ngs
cWq
@@ -263481,7 +265420,7 @@ lpY
snI
skE
qCF
-pYS
+mXr
ihk
kjR
mpH
@@ -263797,7 +265736,7 @@ jKC
sJR
sJR
sJR
-tku
+gec
ukK
ngs
gmY
@@ -264311,7 +266250,7 @@ jKC
sJR
sJR
sJR
-wRE
+gec
ukK
inq
wqk
@@ -264825,7 +266764,7 @@ jKC
sJR
sJR
sJR
-tku
+gec
ukK
eHI
gmY
@@ -265116,7 +267055,7 @@ eMm
hfz
uxP
lTd
-pAZ
+ctD
dHw
jLH
trW
@@ -265339,7 +267278,7 @@ jKC
sJR
sJR
sJR
-wRE
+gec
ukK
eHI
gmY
@@ -265853,7 +267792,7 @@ jKC
sJR
sJR
sJR
-tku
+gec
ukK
ioI
hAJ
@@ -265875,7 +267814,7 @@ jFL
baa
cCD
foY
-qWo
+fZu
hlb
jhW
bGG
@@ -266046,7 +267985,7 @@ klY
oSY
phm
bci
-nOX
+cpg
pTU
gTm
sGT
@@ -266105,7 +268044,7 @@ bkc
dPJ
ajv
xqA
-rCd
+emp
uMt
vXd
sJR
@@ -266134,7 +268073,7 @@ nlt
eJB
qWo
nzv
-qWo
+kjI
eYr
iik
mze
@@ -266367,7 +268306,7 @@ jKC
sJR
sJR
sJR
-wRE
+gec
ukK
buw
gmY
@@ -266390,7 +268329,7 @@ qHX
fSw
lLh
cgD
-qWo
+dxq
oOi
qeC
blB
@@ -266646,8 +268585,8 @@ jFL
cYx
hmS
wsH
-qWo
-qWo
+oPt
+nms
qWo
oDB
bGG
@@ -266881,7 +268820,7 @@ jKC
sJR
sJR
sJR
-tku
+gec
ukK
buw
gmY
@@ -267145,9 +269084,9 @@ gmY
aTC
kuR
cMB
-cMB
+tJq
ihO
-cMB
+etQ
mgn
etQ
etQ
@@ -267160,10 +269099,10 @@ hfp
mze
mze
dUM
+vAn
qWo
qWo
-qWo
-qWo
+bWi
bGG
nBL
eQH
@@ -267395,14 +269334,14 @@ jKC
sJR
sJR
sJR
-wRE
+gec
ukK
xYI
grf
jFL
+xek
jFL
jWR
-jWR
jFL
jWR
hJq
@@ -267426,7 +269365,7 @@ rwK
fDO
dHw
tQW
-pAZ
+ctD
eaz
lHs
iXR
@@ -267657,14 +269596,14 @@ rQO
quw
tnW
jFL
-tJq
+bGQ
stL
iAN
fLX
-xOe
-odQ
otm
+odQ
otm
+xOe
iOW
jFL
fLM
@@ -267674,9 +269613,9 @@ xia
mze
mze
bGG
+yjj
qWo
-qWo
-qWo
+jVi
jhW
qQn
bnw
@@ -267909,19 +269848,19 @@ jKC
sJR
sJR
sJR
-tku
+gec
ukK
eZN
uui
jFL
bGQ
-kMo
+bGQ
+pyk
kMo
wXl
-wHj
sLZ
nZz
-cMB
+kMo
uCN
jWR
kSA
@@ -268163,24 +270102,24 @@ ajv
xqA
cvg
uMt
-vXd
-sJR
-dGn
+rRp
+rRp
+rRp
hXg
rKb
wmX
-gmY
+awK
jFL
kFL
+bRc
+fBr
kMo
kMo
+aKJ
kMo
kMo
-aKJ
xwB
-jFL
-qYa
-jWR
+ooX
fLM
qJA
jFL
@@ -268419,24 +270358,24 @@ aaj
slZ
xqA
fEy
-jKC
-sJR
-sJR
-sJR
-wRE
-ukK
+fEy
+fEy
+fEy
+fEy
+sVv
ukK
+juQ
gmY
-jFL
+aTC
bRX
egz
uzo
-ooX
+ujT
ujT
ucP
-qNX
-jWR
-pbA
+kMo
+qYa
+jqW
jWR
lva
iYb
@@ -268675,26 +270614,26 @@ dHG
cdB
dHG
tbm
-fEy
-jKC
-sJR
-sJR
-sJR
-gec
-ukK
-ukK
+wRE
+wRE
+wRE
+wRE
+wRE
+ebq
+itY
+gND
gmY
-jFL
kDD
+ewV
kMo
duz
-jFL
-jWR
-dcD
-jWR
-jWR
+kMo
+kMo
+kMo
+qYa
+qNX
pbA
-jWR
+jFL
mIg
sTM
jFL
@@ -268711,14 +270650,14 @@ sBh
sBh
qkA
sBh
-sBh
+pBJ
sBh
sBh
sBh
dQn
uoz
sBh
-sBh
+pBJ
sBh
uoz
sBh
@@ -268933,20 +270872,20 @@ rDj
dMD
dMD
dMD
-jFO
-sJR
-sJR
-sJR
+dMD
+dMD
+dMD
+dMD
rCn
xfV
xfV
cwu
-jFL
+aTC
rSc
jFR
hzd
sBQ
-gMD
+jvf
meT
gMD
gmd
@@ -269653,7 +271592,7 @@ upm
eYK
gTN
xgf
-mjT
+lgM
gIS
efu
cFH
@@ -270448,16 +272387,16 @@ gab
bkr
urL
iJr
+vnH
jrc
jrc
-jrc
-ryD
+rtD
hfj
xOw
bqm
aPU
htm
-qpG
+yeR
jrc
eIO
cUD
@@ -270687,7 +272626,7 @@ bTE
eXp
ggb
jVu
-aQG
+kYo
qwv
fWk
eXp
@@ -270965,13 +272904,13 @@ xxH
xxH
wdF
jrc
-ryD
-qpG
+rtD
+yeR
iUn
qOC
iUn
-ryD
-qpG
+rtD
+yeR
jrc
eIO
cUD
@@ -271443,8 +273382,8 @@ bkc
rrU
oHb
tiy
-dfe
-omG
+pdg
+pdg
qBM
rrU
qMI
@@ -271473,8 +273412,8 @@ nOX
phm
xxH
mEB
-rki
-xSM
+irY
+ezg
txh
xxH
eIO
@@ -272240,9 +274179,9 @@ fIT
ccA
fIT
lZs
-nMr
+dnh
qBx
-nMr
+dYX
nMr
ojQ
vLI
@@ -272266,7 +274205,7 @@ wBY
bQg
klB
mmn
-seH
+cqJ
cqJ
cSB
cSB
@@ -272499,7 +274438,7 @@ nyx
qIC
nyx
xxH
-pyM
+mio
txh
rki
jYz
@@ -272742,21 +274681,21 @@ lIq
lIq
nOX
mHg
-xxH
-xxH
-xxH
+kqy
+kqy
+kqy
qrm
wXi
-xxH
-xxH
-xxH
-eVD
-eVD
+kqy
+kqy
+kqy
+ijt
+ijt
uRu
hSx
-eVD
-eVD
-eVD
+ijt
+ijt
+ijt
spd
rRE
bKU
@@ -272999,21 +274938,21 @@ sSR
nTo
pni
kql
-xxH
+kqy
uVm
cHN
sEN
jHq
cpb
tqr
-xxH
+kqy
huY
mPn
cJT
mmJ
vuI
avO
-eVD
+ijt
aUU
kTg
jGm
@@ -273212,7 +275151,7 @@ tHM
tHM
lqg
elc
-iGd
+hxM
iGd
eRL
vcL
@@ -273256,35 +275195,35 @@ pcL
nOX
nOX
mHg
-xxH
+kqy
grU
sEN
sEN
jHq
sEN
mfw
-xxH
+kqy
iJP
-eIO
+bDb
ddg
vtp
-eIO
+bDb
mhJ
-eVD
+ijt
qjp
hQY
mQF
-rki
+oRJ
xxH
eVD
eVD
+bmb
eVD
eVD
eVD
eVD
eVD
-eVD
-eVD
+bmb
eVD
eVD
eVD
@@ -273513,7 +275452,7 @@ pTU
pTU
nOX
jSZ
-xxH
+kqy
aCP
sEN
jjV
@@ -273525,9 +275464,9 @@ eSU
eSU
eSU
eHF
-eIO
+bDb
mhJ
-eVD
+ijt
xZX
fvc
rwJ
@@ -273770,21 +275709,21 @@ cRi
gvT
mDV
xTQ
-xxH
+kqy
grU
sEN
sEN
iWr
sEN
qym
-xxH
+kqy
cjM
ubt
ssu
-hxi
-eIO
-mhJ
-eVD
+scq
+dAX
+wQi
+ijt
qAL
ikK
kKi
@@ -274027,21 +275966,21 @@ phm
phm
pcL
nOX
-xxH
+kqy
lJL
xQE
pwo
hjr
pvE
wBP
-xxH
+kqy
qjN
niE
caz
hxi
-eIO
+bDb
ygH
-eVD
+ijt
xxH
xxH
xxH
@@ -274284,21 +276223,21 @@ fgX
fgX
pTU
pTU
-xxH
-xxH
-xxH
-xxH
-xxH
-xxH
-xxH
-xxH
-eVD
-eVD
-eVD
+kqy
+kqy
+kqy
+kqy
+kqy
+kqy
+kqy
+kqy
+ijt
+ijt
+ijt
hxi
-eIO
+bDb
tAj
-eVD
+ijt
tUm
gdY
kIp
@@ -274544,7 +276483,7 @@ uJG
uJG
uJG
uJG
-eVD
+ijt
lCs
osk
qRE
@@ -274554,8 +276493,8 @@ qWI
tns
twE
bDb
-mhJ
-eVD
+wDL
+ijt
nJa
llW
yel
@@ -274580,7 +276519,7 @@ uUw
uUw
uUw
gzW
-rgA
+umr
uUw
fVa
hZY
@@ -274801,18 +276740,18 @@ cYe
cYe
cYe
cYe
-kjl
+nYP
xaI
vsd
jFs
atN
wDO
-sMB
-eVD
+wmn
+ijt
mOQ
-eIO
+bDb
ihh
-eVD
+ijt
wWg
ntw
nim
@@ -275067,9 +277006,9 @@ ist
fzB
rOT
dWV
-eIO
+ybv
mhJ
-eVD
+ijt
mxu
ubd
spv
@@ -275315,18 +277254,18 @@ cYe
cYe
cYe
cYe
-kjl
+nYP
bqr
cee
lDc
idI
cvV
sMB
-eVD
+ijt
xVY
-eIO
+bDb
mhJ
-eVD
+ijt
lXW
lra
kIp
@@ -275572,18 +277511,18 @@ bkc
uJG
bkc
bkc
-eVD
+ijt
eKy
fDT
kUd
vEe
ixi
wvB
-eVD
+ijt
idr
xJG
gDB
-eVD
+ijt
ddN
rvs
uUw
@@ -275829,18 +277768,18 @@ fvL
fvL
fvL
fvL
-eVD
-eVD
-eVD
-eVD
-eVD
-eVD
-eVD
-eVD
-eVD
-eVD
-eVD
-eVD
+ijt
+ijt
+ijt
+ijt
+ijt
+ijt
+ijt
+ijt
+ijt
+ijt
+ijt
+ijt
uUw
uUw
uUw
@@ -276616,7 +278555,7 @@ bio
wXI
pci
dvK
-dvK
+dUZ
pci
dvK
uNw
@@ -276867,7 +278806,7 @@ xBD
sld
hBP
bio
-pNb
+bjD
eVl
jkv
bIC
@@ -276879,7 +278818,7 @@ xkK
tJJ
pci
pLd
-vuF
+thc
dvK
pci
dvK
@@ -276918,7 +278857,7 @@ mIb
tBq
tff
czJ
-cdd
+fPV
nLv
nCj
nLv
@@ -277129,9 +279068,9 @@ iup
bio
sld
uUw
+qHS
uUw
-uUw
-uUw
+dTH
pci
tpe
dTH
@@ -277387,8 +279326,8 @@ bio
wXI
aYZ
xij
-uYI
-qsm
+tLm
+jfx
dvK
tpe
uUw
@@ -277895,15 +279834,15 @@ sld
bio
cwK
mBe
-pNb
+omG
vNX
rMz
sld
nvm
-uYI
-uYI
+tLm
+tiq
qsm
-vuF
+eQx
tpe
uUw
fPn
@@ -278152,7 +280091,7 @@ pgs
lWI
jOs
sld
-pNb
+mCK
oqc
ueD
sld
@@ -278163,7 +280102,7 @@ uUw
fRz
sFK
uUw
-uUw
+dTH
weL
uUw
uUw
@@ -278415,7 +280354,7 @@ bio
wXI
hfk
uYI
-uYI
+tLm
xZm
dvK
tpe
@@ -278926,7 +280865,7 @@ tdn
jmQ
iqW
fVo
-pbq
+xnc
flP
gzl
uUw
@@ -278935,7 +280874,7 @@ dvK
tpe
vuF
pci
-pci
+hZu
vuF
lMA
uUw
@@ -281253,8 +283192,8 @@ vTB
vTB
vTB
iAw
-izA
-izA
+eFF
+eFF
iAw
fsE
jCI
@@ -283810,9 +285749,9 @@ heE
heE
heE
vTB
-wuh
+bXf
wta
-wuh
+bXf
vTB
bkc
fvL
@@ -284066,11 +286005,11 @@ qGV
dYv
veL
heE
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
bkc
fvL
kdb
@@ -284323,11 +286262,11 @@ vLu
aTK
qsW
heE
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
bkc
fvL
kdb
@@ -284580,11 +286519,11 @@ uOA
dmy
veL
heE
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
bkc
fvL
kdb
@@ -284681,6 +286620,7 @@ kUq
vNO
wSw
sLA
+ngN
uJG
sLA
sLA
@@ -284727,7 +286667,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(216,1,2) = {"
bkc
@@ -284837,11 +286776,11 @@ heE
heE
heE
heE
-wuh
-wuh
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
+bXf
+bXf
bkc
fvL
kdb
@@ -284939,6 +286878,7 @@ vNO
mpD
vet
vet
+vet
kVS
uJG
sLA
@@ -284984,7 +286924,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(217,1,2) = {"
bkc
@@ -285095,9 +287034,9 @@ uJG
bkc
uJG
bkc
-wuh
-wuh
-wuh
+bXf
+bXf
+bXf
bkc
fvL
fvL
@@ -285185,7 +287124,7 @@ uJG
tXL
tXL
tXL
-uJG
+tXL
uJG
uJG
uJG
@@ -285193,6 +287132,7 @@ uJG
uJG
kUq
bHU
+mcT
bVc
bVc
bVc
@@ -285241,7 +287181,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(218,1,2) = {"
bkc
@@ -285445,12 +287384,13 @@ tXL
tXL
tXL
tXL
+tXL
aAp
bkc
bkc
-bkc
vKV
eTm
+eTm
vKV
fUm
tVj
@@ -285498,7 +287438,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(219,1,2) = {"
bkc
@@ -285697,6 +287636,7 @@ tXL
tXL
tXL
tXL
+tXL
weZ
tXL
tXL
@@ -285755,7 +287695,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(220,1,2) = {"
bkc
@@ -285951,6 +287890,7 @@ alj
alj
tXL
azJ
+cgz
bAf
tXL
lpw
@@ -286012,7 +287952,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(221,1,2) = {"
bkc
@@ -286209,6 +288148,7 @@ nFp
tXL
fQg
uuN
+uuN
uZd
uuN
uuN
@@ -286269,7 +288209,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(222,1,2) = {"
bkc
@@ -286439,13 +288378,13 @@ iqK
iqK
iqK
iqK
-hPs
-hPs
-hPs
-hPs
-hPs
-hPs
-hPs
+hBC
+hBC
+hBC
+hBC
+hBC
+hBC
+hBC
mRg
mRg
mRg
@@ -286471,9 +288410,10 @@ nHa
mwk
swI
uHe
-cgz
dBr
-qQJ
+uuN
+wHj
+tXL
tXL
tXL
tXL
@@ -286526,7 +288466,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(223,1,2) = {"
bkc
@@ -286696,13 +288635,13 @@ nUo
blK
wCX
qBf
-hPs
-hPs
+hBC
+hBC
kdv
wMZ
saL
-hPs
-hPs
+hBC
+hBC
uht
uht
vEb
@@ -286730,6 +288669,7 @@ eYy
dxb
eYy
eYy
+swm
alh
pQj
tXL
@@ -286783,7 +288723,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(224,1,2) = {"
bkc
@@ -286953,13 +288892,13 @@ vOX
bJz
lhf
hNL
-hPs
+hBC
eoO
nvR
-dqM
+qNY
pxG
vQd
-hPs
+hBC
lrh
mfy
bTQ
@@ -286983,6 +288922,7 @@ swI
dlQ
kqz
gDw
+bBs
xYH
nMc
inj
@@ -287040,7 +288980,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(225,1,2) = {"
bkc
@@ -287210,13 +289149,13 @@ jWS
mKl
mKl
rlg
-hPs
+hBC
gjA
-dbP
+kCy
bNE
-uYu
+gkR
pzK
-hPs
+hBC
lvm
lvm
grM
@@ -287240,6 +289179,7 @@ swI
faA
tNm
iGZ
+ohI
tNm
tNm
soF
@@ -287297,7 +289237,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(226,1,2) = {"
bkc
@@ -287497,6 +289436,7 @@ cux
bzx
tNm
gYE
+fTL
lZX
tNm
gSd
@@ -287554,7 +289494,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(227,1,2) = {"
bkc
@@ -287724,13 +289663,13 @@ jWS
mKl
mKl
gBH
-hPs
+hBC
qSz
cdo
eOV
qDg
ufB
-hPs
+hBC
uTE
uTE
mVF
@@ -287754,6 +289693,7 @@ swI
mvU
tNm
mIu
+ldZ
tNm
tNm
pVK
@@ -287811,7 +289751,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(228,1,2) = {"
bkc
@@ -287981,13 +289920,13 @@ nrj
oWE
rzI
cxX
-hPs
+hBC
cpJ
eKM
-dqM
+qNY
gfK
wcF
-hPs
+hBC
nBI
vwV
aPT
@@ -288011,6 +289950,7 @@ swI
suK
kqz
uqh
+lcB
xYH
nMc
qcV
@@ -288068,7 +290008,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(229,1,2) = {"
bkc
@@ -288238,13 +290177,13 @@ cBD
iJU
wCX
gke
-hPs
-hPs
+hBC
+hBC
hQp
sXu
wtP
-hPs
-hPs
+hBC
+hBC
uht
uht
hgi
@@ -288272,6 +290211,7 @@ oHL
jJM
eYy
eYy
+smD
gKX
erC
tXL
@@ -288325,7 +290265,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(230,1,2) = {"
bkc
@@ -288495,13 +290434,13 @@ iqK
iqK
iqK
iqK
-hPs
-hPs
-hPs
-hPs
-hPs
-hPs
-hPs
+hBC
+hBC
+hBC
+hBC
+hBC
+hBC
+hBC
mRg
mRg
mRg
@@ -288527,9 +290466,10 @@ nHa
joi
swI
ajO
-smD
xoA
-bvE
+vuk
+swN
+tXL
tXL
tXL
tXL
@@ -288582,7 +290522,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(231,1,2) = {"
bkc
@@ -288779,13 +290718,14 @@ pFH
tXL
pRz
vuk
-kUX
vuk
+kUX
vuk
vuk
vuk
-bAf
bvE
+bAf
+bAU
tXL
tXL
tXL
@@ -288839,7 +290779,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(232,1,2) = {"
bkc
@@ -289035,6 +290974,7 @@ alj
alj
tXL
dJk
+edG
bAf
tXL
fgT
@@ -289096,7 +291036,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(233,1,2) = {"
bkc
@@ -289295,6 +291234,7 @@ tXL
tXL
tXL
tXL
+tXL
apj
tXL
tXL
@@ -289353,7 +291293,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(234,1,2) = {"
bkc
@@ -289557,12 +291496,13 @@ tXL
tXL
tXL
tXL
+tXL
tCb
bkc
bkc
-bkc
kVS
vet
+vet
kVS
uCS
tVj
@@ -289572,7 +291512,6 @@ bkc
bkc
bkc
bkc
-bkc
xJy
bkc
bkc
@@ -289811,7 +291750,7 @@ uJG
tXL
tXL
tXL
-uJG
+tXL
uJG
uJG
uJG
@@ -289822,6 +291761,7 @@ fsj
bVc
bVc
bVc
+bVc
sSY
mYD
uJG
@@ -289867,7 +291807,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(236,1,2) = {"
bkc
@@ -290079,6 +292018,7 @@ tVj
urV
vKV
eTm
+eTm
vKV
uJG
sLA
@@ -290124,7 +292064,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(237,1,2) = {"
bkc
@@ -290335,6 +292274,7 @@ kUq
tVj
wSw
sLA
+ngN
uJG
sLA
sLA
@@ -290381,7 +292321,6 @@ bkc
bkc
bkc
bkc
-bkc
"}
(238,1,2) = {"
bkc
diff --git a/code/__DEFINES/borer.dm b/code/__DEFINES/borer.dm
index ee65cffd26c..cb61176fe58 100644
--- a/code/__DEFINES/borer.dm
+++ b/code/__DEFINES/borer.dm
@@ -1,10 +1,10 @@
#define REPRODUCTIONS_TO_MATURE 3
#define REPRODUCTIONS_TO_ADULT 6
#define REPRODUCTIONS_TO_ELDER 10
-#define HEAD_FOCUS_COST 9
-#define TORSO_FOCUS_COST 15
-#define HANDS_FOCUS_COST 5
-#define LEGS_FOCUS_COST 10
+#define HEAD_FOCUS_COST 4.5
+#define TORSO_FOCUS_COST 7.5
+#define HANDS_FOCUS_COST 2.5
+#define LEGS_FOCUS_COST 5
#define SCALING_MAX_CHEM 355
#define SCALING_CHEM_GAIN 15
#define BORER_RANK_YOUNG /datum/borer_rank/young
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index 1dcafee2bf0..aa521e47314 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -446,6 +446,8 @@
#define COMSIG_MOB_ITEM_ATTACK_QDELETED "mob_item_attack_qdeleted"
///from base of mob/RangedAttack(): (atom/A, params)
#define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged"
+///from base of mob/RangedAttack(): (atom/A, params) after being range attacked
+#define COMSIG_MOB_ATTACKED_RANGED "mob_attack_ranged"
///from base of /mob/throw_item(): (atom/target)
#define COMSIG_MOB_THROW "mob_throw"
///called when a user is getting new weapon and we want to remove previous weapon to clear hands
@@ -1198,4 +1200,3 @@
/// Source: /mob/living/simple_animal/borer, listening in datum/antagonist/borer
#define COMSIG_BORER_ENTERED_HOST "borer_on_enter" // when borer entered host
#define COMSIG_BORER_LEFT_HOST "borer_on_leave" // when borer left host
-
diff --git a/code/__DEFINES/gamemode.dm b/code/__DEFINES/gamemode.dm
index 2f2f64db4f5..33958d237c2 100644
--- a/code/__DEFINES/gamemode.dm
+++ b/code/__DEFINES/gamemode.dm
@@ -70,3 +70,4 @@
#define SPECIAL_ROLE_THIEF "Thief"
#define SPECIAL_ROLE_SPACE_DRAGON "Space Dragon"
#define SPECIAL_ROLE_EVENTMISC "Event Role"
+#define SPECIAL_ROLE_MALFAI "Malfunctioning AI"
diff --git a/code/__DEFINES/insurance.dm b/code/__DEFINES/insurance.dm
new file mode 100644
index 00000000000..615e644caf8
--- /dev/null
+++ b/code/__DEFINES/insurance.dm
@@ -0,0 +1,33 @@
+#define INSURANCE_NONE 0
+#define INSURANCE_BUDGETARY 1000
+#define INSURANCE_STANDART 3000
+#define INSURANCE_EXTENDED 6000
+#define INSURANCE_DELUXE 10000
+#define INSURANCE_NT_SPECIAL 100000 // CC roles don't have accounts, but if they do, they will have this insurance.
+
+#define INSURANCE_NONE_COST 0
+#define INSURANCE_BUDGETARY_COST 0
+#define INSURANCE_STANDART_COST 500
+#define INSURANCE_DELUXE_COST 2000
+
+#define INSURANCE_TYPE_NONE "None"
+#define INSURANCE_TYPE_BUDGETARY "Bugetary"
+#define INSURANCE_TYPE_STANDART "Standart"
+#define INSURANCE_TYPE_EXTENDED "Extended"
+#define INSURANCE_TYPE_DELUXE "Deluxe"
+#define INSURANCE_TYPE_NT_SPECIAL "NT Special"
+
+#define REQ_INSURANCE_BRUT 1.5
+#define REQ_INSURANCE_BURN 1.5
+#define REQ_INSURANCE_OXY 0.5
+#define REQ_INSURANCE_TOX 0.5
+#define REQ_INSURANCE_ORGAN 1
+#define REQ_INSURANCE_RAD 1
+#define REQ_INSURANCE_CLONE 2
+#define REQ_INSURANCE_BLOOD 2 // 1% of max blood
+#define REQ_INSURANCE_INTBLEED 150
+#define REQ_INSURANCE_BONE 150
+#define REQ_INSURANCE_LOST_ORGAN 300
+#define REQ_INSURANCE_LOST_LIMB 300
+#define REQ_INSURANCE_CRIT 250
+#define REQ_INSURANCE_DEATH 500
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 0bf66ff143d..ee9f75b8798 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -523,3 +523,16 @@
/// Disposal: How frequently disposals can make sounds, to prevent huge sound stacking
#define DISPOSAL_SOUND_COOLDOWN (0.1 SECONDS)
+/// Mech Subtypes
+#define MECH_TYPE_NONE (1<<0)
+#define MECH_TYPE_RIPLEY (1<<1)
+#define MECH_TYPE_CLARKE (1<<2)
+#define MECH_TYPE_ODYSSEUS (1<<3)
+#define MECH_TYPE_GYGAX (1<<4)
+#define MECH_TYPE_DURAND (1<<5)
+#define MECH_TYPE_PHAZON (1<<6)
+#define MECH_TYPE_HONKER (1<<7)
+#define MECH_TYPE_RETICENCE (1<<8)
+#define MECH_TYPE_LOCKER (1<<9)
+#define MECH_TYPE_MARAUDER (1<<10)
+#define MECH_TYPE_SIDEWINTER (1<<11)
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 234865da160..089ea970b09 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -17,9 +17,6 @@
#define TOXIN_TO_INTERNAL_DAMAGE_MULTIPLIER 2 // coefficient wich defines ratio of toxin into internal organs damage transfer
-#define AGE_MIN 17 //youngest a character can be
-#define AGE_MAX 85 //oldest a character can be
-
#define LEFT 1
#define RIGHT 2
@@ -210,6 +207,8 @@
#define isskeleton(A) (is_species(A, /datum/species/skeleton))
#define ishumanbasic(A) (is_species(A, /datum/species/human))
#define isunathi(A) (is_species(A, /datum/species/unathi))
+#define isashwalker(A) (is_species(A, /datum/species/unathi/ashwalker))
+#define isashwalkershaman(A) (is_species(A, /datum/species/unathi/ashwalker/shaman))
#define istajaran(A) (is_species(A, /datum/species/tajaran))
#define isvulpkanin(A) (is_species(A, /datum/species/vulpkanin))
#define isskrell(A) (is_species(A, /datum/species/skrell))
diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index 01a0dbd5f88..500dbc6eaac 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -58,15 +58,16 @@
#define PREFTOGGLE_2_MC_TAB (1<<11) // 2048
#define PREFTOGGLE_2_DISABLE_TGUI_INPUT (1<<12) // 4096
#define PREFTOGGLE_2_PARALLAX_MULTIZ (1<<13) // 8192
-#define PREFTOGGLE_2_DISABLE_VOTE_POPUPS (1<<14) // 16384
-#define PREFTOGGLE_2_SWAP_INPUT_BUTTONS (1<<15) // 32768
-#define PREFTOGGLE_2_LARGE_INPUT_BUTTONS (1<<16) // 65536
-#define PREFTOGGLE_2_BIG_STRIP_MENU (1<<17) // 131072
-#define PREFTOGGLE_2_ENABLE_TGUI_SAY_LIGHT_MODE (1<<18) // 262144
-#define PREFTOGGLE_2_PIXELATED_MENU (1<<19) // 524288
-#define PREFTOGGLE_2_DESC_TIPS (1<<20) // 1048576
+#define PREFTOGGLE_2_DISABLE_VOTE_POPUPS (1<<14) // 16384
+#define PREFTOGGLE_2_SWAP_INPUT_BUTTONS (1<<15) // 32768
+#define PREFTOGGLE_2_LARGE_INPUT_BUTTONS (1<<16) // 65536
+#define PREFTOGGLE_2_BIG_STRIP_MENU (1<<17) // 131072
+#define PREFTOGGLE_2_ENABLE_TGUI_SAY_LIGHT_MODE (1<<18) // 262144
+#define PREFTOGGLE_2_PIXELATED_MENU (1<<19) // 524288
+#define PREFTOGGLE_2_DESC_TIPS (1<<20) // 1048576
+#define PREFTOGGLE_2_GIB_WITHOUT_OBJECTIVE (1<<21) // 2097152
-#define TOGGLES_2_TOTAL 2097151 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined.
+#define TOGGLES_2_TOTAL 4194303 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined.
#define TOGGLES_2_DEFAULT (PREFTOGGLE_2_FANCYUI|PREFTOGGLE_2_ITEMATTACK|PREFTOGGLE_2_WINDOWFLASHING|PREFTOGGLE_2_RUNECHAT|PREFTOGGLE_2_DEATHMESSAGE|PREFTOGGLE_2_SEE_ITEM_OUTLINES|PREFTOGGLE_2_PARALLAX_MULTIZ|PREFTOGGLE_2_SWAP_INPUT_BUTTONS|PREFTOGGLE_2_LARGE_INPUT_BUTTONS|PREFTOGGLE_2_DESC_TIPS)
@@ -124,6 +125,16 @@
#define EXP_DEPT_TYPE_LIST list(EXP_TYPE_SERVICE, EXP_TYPE_MEDICAL, EXP_TYPE_ENGINEERING, EXP_TYPE_SCIENCE, EXP_TYPE_SECURITY, EXP_TYPE_COMMAND, EXP_TYPE_SILICON, EXP_TYPE_SPECIAL)
+
+/// Tags for 'age needed for this job' list.
+#define SPECIES_AGE_MIN "Min"
+#define SPECIES_AGE_MAX "Max"
+#define JOB_MIN_AGE_HIGH_ED "Higher Education"
+#define JOB_MIN_AGE_COMMAND "Command"
+
+#define AGE_SHEET list(SPECIES_AGE_MIN = 18, SPECIES_AGE_MAX = 85, JOB_MIN_AGE_HIGH_ED = 30, JOB_MIN_AGE_COMMAND = 30)
+
+
// Defines just for parallax because its levels make storing it in the regular prefs a pain in the ass
// These dont need to be bitflags because there isnt going to be more than one at a time of these active
// But its gonna piss off my OCD if it isnt bitflags, so deal with it, -affected
diff --git a/code/__DEFINES/rituals.dm b/code/__DEFINES/rituals.dm
new file mode 100644
index 00000000000..c33d531225c
--- /dev/null
+++ b/code/__DEFINES/rituals.dm
@@ -0,0 +1,18 @@
+/// Used in ritual variables
+#define DEFAULT_RITUAL_RANGE_FIND 1
+#define DEFAULT_RITUAL_COOLDOWN (100 SECONDS)
+#define DEFAULT_RITUAL_DISASTER_PROB 10
+#define DEFAULT_RITUAL_FAIL_PROB 10
+/// Ritual object bitflags
+#define RITUAL_STARTED (1<<0)
+#define RITUAL_ENDED (1<<1)
+#define RITUAL_FAILED (1<<2)
+/// Ritual datum bitflags
+#define RITUAL_SUCCESSFUL (1<<0)
+/// Invocation checks, should not be used in extra checks.
+#define RITUAL_FAILED_INVALID_SPECIES (1<<1)
+#define RITUAL_FAILED_EXTRA_INVOKERS (1<<2)
+#define RITUAL_FAILED_MISSED_REQUIREMENTS (1<<3)
+#define RITUAL_FAILED_ON_PROCEED (1<<4)
+#define RITUAL_FAILED_INVALID_SPECIAL_ROLE (1<<5)
+
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index 29e33ed9265..b48227307a6 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -94,6 +94,8 @@
#define STATUS_EFFECT_CRUSHERMARK /datum/status_effect/crusher_mark //if struck with a proto-kinetic crusher, takes a ton of damage
+#define STATUS_EFFECT_FANG_EXHAUSTION /datum/status_effect/fang_exhaust // called by poison fang (crusher trophy)
+
#define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage
#define STATUS_EFFECT_BLOODLETTING /datum/status_effect/saw_bleed/bloodletting //nerfed version
diff --git a/code/__DEFINES/vampire_defines.dm b/code/__DEFINES/vampire_defines.dm
index a0663014e6f..90123400739 100644
--- a/code/__DEFINES/vampire_defines.dm
+++ b/code/__DEFINES/vampire_defines.dm
@@ -16,3 +16,5 @@
#define NEW_NULLIFICATION 1 //nulifiaction like the new vampires
#define OLD_NULLIFICATION 2 //nulifiaction like the goon vampires
+
+#define REQ_BLOOD_FOR_SUBCLASS_ACT 400 // total blood required for a special subclass action
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index f8907ab3667..539019a41c8 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -313,6 +313,7 @@
prize_list["Miscellaneous"] = list(
EQUIPMENT("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 500),
EQUIPMENT("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300),
+ EQUIPMENT("Richard & Co cigarettes", /obj/item/storage/fancy/cigarettes/cigpack_richard, 400),
EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 300),
EQUIPMENT("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 800),
EQUIPMENT("GPS upgrade", /obj/item/gpsupgrade, 1500),
@@ -342,6 +343,7 @@
EQUIPMENT("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 250),
EQUIPMENT("Cigarettes", /obj/item/storage/fancy/cigarettes, 100),
EQUIPMENT("Medical Marijuana", /obj/item/storage/fancy/cigarettes/cigpack_med, 250),
+ EQUIPMENT("Richard & Co cigarettes", /obj/item/storage/fancy/cigarettes/cigpack_richard, 400),
EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
EQUIPMENT("Box of matches", /obj/item/storage/box/matches, 50),
EQUIPMENT("Cheeseburger", /obj/item/reagent_containers/food/snacks/cheeseburger, 150),
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 05573f539c5..f815904dff8 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -239,6 +239,9 @@
/mob/proc/RangedAttack(atom/A, params)
if(SEND_SIGNAL(src, COMSIG_MOB_ATTACK_RANGED, A, params) & COMPONENT_CANCEL_ATTACK_CHAIN)
return TRUE
+
+ if(SEND_SIGNAL(A, COMSIG_MOB_ATTACKED_RANGED, src, params) & COMPONENT_CANCEL_ATTACK_CHAIN)
+ return TRUE
/*
Restrained ClickOn
diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index 2128fa683a3..4db096df2b5 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -68,7 +68,6 @@
if(isturf(A) && get_dist(src, A) <= 1)
Move_Pulled(A)
-
/**
* Checks if this mob is in a valid state to punch someone.
*
diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm
index 5da930d43d3..f6570a41142 100644
--- a/code/controllers/configuration/entries/config.dm
+++ b/code/controllers/configuration/entries/config.dm
@@ -397,8 +397,6 @@
/datum/config_entry/number/simultaneous_pm_warning_timeout
default = 100
-///Do assistants get maint access?
-/datum/config_entry/flag/assistant_maint
///How long the gateway takes before it activates. Default is 10 minutes. Only matters if roundstart_away is enabled.
/datum/config_entry/number/gateway_delay
diff --git a/code/controllers/configuration/entries/testing.dm b/code/controllers/configuration/entries/testing.dm
index ade389fb95c..009cc38beed 100644
--- a/code/controllers/configuration/entries/testing.dm
+++ b/code/controllers/configuration/entries/testing.dm
@@ -4,3 +4,9 @@
///Enables bombarda crafting on server.
/datum/config_entry/flag/enable_bombarda_craft
+
+///Enables loading titlescreen only after master has been loaded.
+/datum/config_entry/flag/enable_titlescreen_lateload
+
+///Do not load station
+/datum/config_entry/flag/load_no_station
diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm
index 07aa1838d88..7648dc8b4bb 100644
--- a/code/controllers/subsystem/icon_smooth.dm
+++ b/code/controllers/subsystem/icon_smooth.dm
@@ -7,11 +7,18 @@ SUBSYSTEM_DEF(icon_smooth)
offline_implications = "Objects will no longer smooth together properly. No immediate action is needed."
cpu_display = SS_CPUDISPLAY_LOW
ss_id = "icon_smooth"
-
+ /**
+ * Used to track instances of icon smooth halters. Does not apply to roundstart loading, however.
+ * Always make sure to remove halt source from this list on the end of operation.
+ */
+ var/halt_sources = list()
var/list/smooth_queue = list()
/datum/controller/subsystem/icon_smooth/fire()
+ if(length(halt_sources))
+ return
+
while(smooth_queue.len)
var/atom/A = smooth_queue[smooth_queue.len]
smooth_queue.len--
@@ -44,3 +51,9 @@ SUBSYSTEM_DEF(icon_smooth)
CHECK_TICK
return SS_INIT_SUCCESS
+
+/datum/controller/subsystem/icon_smooth/proc/add_halt_source(datum/source)
+ halt_sources += source
+
+/datum/controller/subsystem/icon_smooth/proc/remove_halt_source(datum/source)
+ halt_sources -= source
diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm
index d3b3f072fbb..6a926cdce56 100644
--- a/code/controllers/subsystem/idlenpcpool.dm
+++ b/code/controllers/subsystem/idlenpcpool.dm
@@ -33,9 +33,8 @@ SUBSYSTEM_DEF(idlenpcpool)
/datum/controller/subsystem/idlenpcpool/fire(resumed = FALSE)
- if(!resumed)
- var/list/idlelist = GLOB.simple_animals[AI_IDLE]
- src.currentrun = idlelist.Copy()
+ var/list/idlelist = GLOB.simple_animals[AI_IDLE]
+ src.currentrun = idlelist.Copy()
//cache for sanic speed (lists are references anyways)
var/list/currentrun = src.currentrun
diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm
index 2bc591f0524..28512ef82e7 100644
--- a/code/controllers/subsystem/jobs.dm
+++ b/code/controllers/subsystem/jobs.dm
@@ -638,6 +638,9 @@ SUBSYSTEM_DEF(jobs)
/datum/controller/subsystem/jobs/proc/CreateMoneyAccount(mob/living/H, rank, datum/job/job)
var/money_amount = rand(job.min_start_money, job.max_start_money)
var/datum/money_account/M = create_account(H.real_name, money_amount, null, job, TRUE)
+ if(H.dna)
+ GLOB.dna2account[H.dna] = M
+
var/remembered_info = ""
remembered_info += "Номер вашего аккаунта: #[M.account_number]
"
@@ -663,6 +666,21 @@ SUBSYSTEM_DEF(jobs)
H.mind.initial_account = M
+ H.mind.initial_account.insurance_type = job.insurance_type
+ switch (job.insurance_type)
+ if(INSURANCE_TYPE_NONE)
+ H.mind.initial_account.insurance = INSURANCE_NONE
+ if(INSURANCE_TYPE_BUDGETARY)
+ H.mind.initial_account.insurance = INSURANCE_BUDGETARY
+ if(INSURANCE_TYPE_STANDART)
+ H.mind.initial_account.insurance = INSURANCE_STANDART
+ if(INSURANCE_TYPE_EXTENDED)
+ H.mind.initial_account.insurance = INSURANCE_EXTENDED
+ if(INSURANCE_TYPE_DELUXE)
+ H.mind.initial_account.insurance = INSURANCE_DELUXE
+ if(INSURANCE_TYPE_NT_SPECIAL)
+ H.mind.initial_account.insurance = INSURANCE_NT_SPECIAL
+
spawn(0)
to_chat(H, "Номер вашего аккаунта: [M.account_number], ПИН вашего аккаунта: [M.remote_access_pin]")
diff --git a/code/controllers/subsystem/non-firing/atoms.dm b/code/controllers/subsystem/non-firing/atoms.dm
index 2a2a0caef1f..ff843736a49 100644
--- a/code/controllers/subsystem/non-firing/atoms.dm
+++ b/code/controllers/subsystem/non-firing/atoms.dm
@@ -27,6 +27,7 @@ SUBSYSTEM_DEF(atoms)
if(initialized == INITIALIZATION_INSSATOMS)
return
+ SSicon_smooth.add_halt_source(src)
initialized = INITIALIZATION_INNEW_MAPLOAD
LAZYINITLIST(late_loaders)
@@ -79,6 +80,7 @@ SUBSYSTEM_DEF(atoms)
log_debug(" Late initialized [length(late_loaders)] atoms in [stop_watch(watch)]s")
late_loaders.Cut()
+ SSicon_smooth.remove_halt_source(src)
/datum/controller/subsystem/atoms/proc/InitAtom(atom/A, list/arguments)
var/the_type = A.type
@@ -127,11 +129,12 @@ SUBSYSTEM_DEF(atoms)
/datum/controller/subsystem/atoms/proc/map_loader_begin()
old_initialized = initialized
initialized = INITIALIZATION_INSSATOMS
+ SSicon_smooth.add_halt_source(src)
/datum/controller/subsystem/atoms/proc/map_loader_stop()
initialized = old_initialized
-
+ SSicon_smooth.remove_halt_source(src)
/datum/controller/subsystem/atoms/Recover()
initialized = SSatoms.initialized
diff --git a/code/controllers/subsystem/non-firing/mapping.dm b/code/controllers/subsystem/non-firing/mapping.dm
index ce5325f34a8..1680d0cc703 100644
--- a/code/controllers/subsystem/non-firing/mapping.dm
+++ b/code/controllers/subsystem/non-firing/mapping.dm
@@ -41,6 +41,8 @@ SUBSYSTEM_DEF(mapping)
var/list/critical_planes
/// The largest plane offset we've generated so far
var/max_plane_offset = 0
+ /// Maps played in previous rounds, stores typepaths
+ var/list/previous_maps
// This has to be here because world/New() uses [station_name()], which looks this datum up
@@ -57,7 +59,9 @@ SUBSYSTEM_DEF(mapping)
catch
map_datum = fallback_map // Assume delta if non-existent
fdel("data/next_map.txt") // Remove to avoid the same map existing forever
+
return
+
map_datum = fallback_map // Assume delta if non-existent
/datum/controller/subsystem/mapping/Shutdown()
@@ -65,9 +69,41 @@ SUBSYSTEM_DEF(mapping)
var/F = file("data/next_map.txt")
F << next_map.type
+
+/datum/controller/subsystem/mapping/proc/convert_map_datums()
+ var/list/map_subtypes = subtypesof(/datum/map)
+ var/list/result = list()
+ for(var/datum/map/subtype as anything in map_subtypes)
+ result[initial(subtype.name)] = subtype
+
+ return result
+
+/datum/controller/subsystem/mapping/proc/find_last_played_maps()
+ if(CONFIG_GET(flag/sql_enabled))
+ var/datum/db_query/query = \
+ SSdbcore.NewQuery("SELECT id, map_name \
+ FROM [format_table_name("round")] \
+ WHERE server_port=[world.port] \
+ AND end_state IS NOT NULL \
+ ORDER BY id DESC LIMIT 1") //Generally gets the last played map, but can be configured to get any count.
+
+ if(!query.warn_execute())
+ qdel(query)
+ return
+
+ var/list/map_names = convert_map_datums()
+ var/list/maps = list()
+ //Query row structure: id, map_name
+ for(var/map in query.rows)
+ var/map_path = map_names[map[2]]
+ if(map_path)
+ maps += map_path
+
+ previous_maps = maps
+
/datum/controller/subsystem/mapping/Initialize()
setupPlanes()
-
+ find_last_played_maps()
var/datum/lavaland_theme/lavaland_theme_type = pick(subtypesof(/datum/lavaland_theme))
ASSERT(lavaland_theme_type)
lavaland_theme = new lavaland_theme_type
@@ -204,8 +240,27 @@ SUBSYSTEM_DEF(mapping)
seedRuins(levels_by_trait(SPAWN_RUINS), rand(20, 30), /area/space, GLOB.space_ruins_templates)
log_startup_progress("Successfully seeded ruins in [stop_watch(seed_ruins_timer)]s.")
+/datum/controller/subsystem/mapping/proc/create_landmarks(turf/place)
+ var/landmarks = list(
+ /obj/effect/landmark/join_late,
+ /obj/effect/landmark/join_late_cryo,
+ /obj/effect/landmark/join_late_cyborg,
+ /obj/effect/landmark/join_late_gateway,
+ /obj/effect/landmark/observer_start
+ )
+
+ landmarks += subtypesof(/obj/effect/landmark/start)
+ for(var/mark in landmarks)
+ new mark(place)
/datum/controller/subsystem/mapping/proc/loadStation()
+ if(CONFIG_GET(flag/load_no_station))
+ log_startup_progress("Loading empty space...")
+ var/empty_z_level = GLOB.space_manager.add_new_zlevel(MAIN_STATION, linkage = CROSSLINKED, traits = DEFAULT_STATION_TRATS)
+ var/turf/centre = locate(world.maxx / 2, world.maxy / 2, empty_z_level)
+ create_landmarks(centre)
+ return
+
if(CONFIG_GET(string/default_map) && !CONFIG_GET(string/override_map) && map_datum == fallback_map)
var/map_datum_path = text2path(CONFIG_GET(string/default_map))
if(map_datum_path)
@@ -227,7 +282,6 @@ SUBSYSTEM_DEF(mapping)
var/watch = start_watch()
log_startup_progress("Loading [map_datum.station_name]...")
-
var/map_z_level
if(map_datum.traits && map_datum.traits?.len && islist(map_datum.traits[1])) // we work with list of lists
map_z_level = GLOB.space_manager.add_new_zlevel(MAIN_STATION, linkage = map_datum.linkage, traits = map_datum.traits[1])
diff --git a/code/controllers/subsystem/non-firing/titlescreen.dm b/code/controllers/subsystem/non-firing/titlescreen.dm
index 1de3e185f67..ddcf80acf80 100644
--- a/code/controllers/subsystem/non-firing/titlescreen.dm
+++ b/code/controllers/subsystem/non-firing/titlescreen.dm
@@ -18,9 +18,14 @@ SUBSYSTEM_DEF(title)
import_html()
fill_title_images_pool()
current_title_screen = new(title_html = base_html, screen_image_file = pick_title_image())
- show_title_screen_to_all_new_players()
+ if(!CONFIG_GET(flag/enable_titlescreen_lateload))
+ show_title_screen_to_all_new_players()
return SS_INIT_SUCCESS
+/datum/controller/subsystem/title/OnMasterLoad()
+ if(CONFIG_GET(flag/enable_titlescreen_lateload))
+ show_title_screen_to_all_new_players()
+
/datum/controller/subsystem/title/Recover()
current_title_screen = SStitle.current_title_screen
title_images_pool = SStitle.title_images_pool
diff --git a/code/datums/action.dm b/code/datums/action.dm
index 415da08fa9f..ce7e9830f6e 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -317,6 +317,9 @@
desc = "Toggles if the club's blasts cause friendly fire."
button_icon_state = "vortex_ff_on"
+/datum/action/item_action/toggle_backpack_light
+ name = "Toggle Backpack Light"
+
/datum/action/item_action/toggle_unfriendly_fire/Trigger(left_click = TRUE)
if(..())
UpdateButtonIcon()
diff --git a/code/datums/cinematics/kharin_summon.dm b/code/datums/cinematics/kharin_summon.dm
new file mode 100644
index 00000000000..09014d47241
--- /dev/null
+++ b/code/datums/cinematics/kharin_summon.dm
@@ -0,0 +1,23 @@
+/datum/cinematic/cult_arm_kharin/play_cinematic()
+ screen.icon_state = null
+ flick("intro_cult", screen)
+ stoplag(2.5 SECONDS)
+ play_cinematic_sound(sound('sound/misc/enter_blood.ogg'))
+ stoplag(2.8 SECONDS)
+ play_cinematic_sound(sound('sound/machines/terminal_off.ogg'))
+ stoplag(2 SECONDS)
+ flick("station_corrupted_Kharin", screen)
+ play_cinematic_sound(sound('sound/effects/ghost.ogg'))
+ stoplag(7 SECONDS)
+ special_callback?.Invoke()
+
+/datum/cinematic/cult_fail_kharin/play_cinematic()
+ screen.icon_state = "station_intact"
+ stoplag(2 SECONDS)
+ play_cinematic_sound(sound('sound/effects/narsie_summon.ogg'))
+ stoplag(6 SECONDS)
+ play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ stoplag(1 SECONDS)
+ play_cinematic_sound(sound('sound/misc/demon_dies.ogg'))
+ stoplag(3 SECONDS)
+ special_callback?.Invoke()
diff --git a/code/datums/cinematics/ratvar_summon.dm b/code/datums/cinematics/ratvar_summon.dm
new file mode 100644
index 00000000000..9a68069e3e9
--- /dev/null
+++ b/code/datums/cinematics/ratvar_summon.dm
@@ -0,0 +1,22 @@
+/datum/cinematic/cult_arm_ratvar/play_cinematic()
+ screen.icon_state = null
+ flick("intro_clockwork", screen)
+ stoplag(2.5 SECONDS)
+ play_cinematic_sound(sound('sound/magic/clockwork/reconstruct.ogg'))
+ stoplag(6 SECONDS)
+ play_cinematic_sound(sound('sound/machines/terminal_off.ogg'))
+ stoplag(2 SECONDS)
+ flick("station_corrupted_Ratvar", screen)
+ stoplag(7 SECONDS)
+ special_callback?.Invoke()
+
+/datum/cinematic/cult_fail_ratvar/play_cinematic()
+ screen.icon_state = "station_intact"
+ stoplag(2 SECONDS)
+ play_cinematic_sound(sound('sound/effects/narsie_summon.ogg'))
+ stoplag(6 SECONDS)
+ play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ stoplag(1 SECONDS)
+ play_cinematic_sound(sound('sound/misc/demon_dies.ogg'))
+ stoplag(3 SECONDS)
+ special_callback?.Invoke()
diff --git a/code/datums/cinematics/reaper_summon.dm b/code/datums/cinematics/reaper_summon.dm
new file mode 100644
index 00000000000..50c0e13bc68
--- /dev/null
+++ b/code/datums/cinematics/reaper_summon.dm
@@ -0,0 +1,24 @@
+/datum/cinematic/cult_arm_reaper/play_cinematic()
+ screen.icon_state = null
+ flick("intro_cult", screen)
+ stoplag(2.5 SECONDS)
+ play_cinematic_sound(sound('sound/misc/enter_blood.ogg'))
+ stoplag(2.8 SECONDS)
+ play_cinematic_sound(sound('sound/machines/terminal_off.ogg'))
+ stoplag(2 SECONDS)
+ flick("station_corrupted_Reaper", screen)
+ play_cinematic_sound(sound('sound/effects/ghost.ogg'))
+ stoplag(7 SECONDS)
+ special_callback?.Invoke()
+
+
+/datum/cinematic/cult_fail_reaper/play_cinematic()
+ screen.icon_state = "station_intact"
+ stoplag(2 SECONDS)
+ play_cinematic_sound(sound('sound/effects/narsie_summon.ogg'))
+ stoplag(6 SECONDS)
+ play_cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
+ stoplag(1 SECONDS)
+ play_cinematic_sound(sound('sound/misc/demon_dies.ogg'))
+ stoplag(3 SECONDS)
+ special_callback?.Invoke()
diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm
index 64082941e07..7884935d3c1 100644
--- a/code/datums/components/chasm.dm
+++ b/code/datums/components/chasm.dm
@@ -30,6 +30,7 @@
/obj/effect/spawner,
/obj/structure/railing,
/mob/living/simple_animal/hostile/megafauna, //failsafe
+ /mob/living/simple_animal/hostile/asteroid/elite //failsafe also
))
diff --git a/code/datums/components/ritual_object.dm b/code/datums/components/ritual_object.dm
new file mode 100644
index 00000000000..31064e438db
--- /dev/null
+++ b/code/datums/components/ritual_object.dm
@@ -0,0 +1,119 @@
+/datum/component/ritual_object
+ /// Pre-defined rituals list
+ var/list/rituals = list()
+ /// We define rituals from this.
+ var/list/allowed_categories
+ /// Required species to activate ritual object
+ var/list/allowed_species
+ /// Required special role to activate ritual object
+ var/list/allowed_special_role
+ /// Prevents from multiple uses
+ var/active_ui = FALSE
+
+/datum/component/ritual_object/Initialize(
+ allowed_categories = /datum/ritual,
+ list/allowed_species,
+ list/allowed_special_role
+)
+
+ if(!isobj(parent))
+ return COMPONENT_INCOMPATIBLE
+
+ src.allowed_categories = allowed_categories
+ src.allowed_species = allowed_species
+ src.allowed_special_role = allowed_special_role
+ get_rituals()
+
+/datum/component/ritual_object/RegisterWithParent()
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(attackby))
+
+/datum/component/ritual_object/UnregisterFromParent()
+ UnregisterSignal(parent, COMSIG_ATOM_ATTACK_HAND)
+
+/datum/component/ritual_object/proc/get_rituals() // We'll get all rituals for flexibility.
+ LAZYCLEARLIST(rituals)
+
+ for(var/datum/ritual/ritual as anything in typecacheof(allowed_categories))
+ if(!ritual.name)
+ continue
+
+ rituals += new ritual
+
+ for(var/datum/ritual/ritual as anything in rituals)
+ ritual.ritual_object = parent
+
+ return
+
+/datum/component/ritual_object/Destroy(force)
+ LAZYNULL(rituals)
+ return ..()
+
+/datum/component/ritual_object/proc/attackby(datum/source, mob/user)
+ SIGNAL_HANDLER
+
+ if(active_ui)
+ return
+
+ if(!ishuman(user))
+ return
+
+ var/mob/living/carbon/human/human = user
+
+ if(allowed_species && !is_type_in_list(human.dna.species, allowed_species))
+ return
+
+ if(allowed_special_role && !is_type_in_list(human.mind?.special_role, allowed_special_role))
+ return
+
+ active_ui = TRUE
+ INVOKE_ASYNC(src, PROC_REF(open_ritual_ui), human)
+
+ return COMPONENT_CANCEL_ATTACK_CHAIN
+
+/datum/component/ritual_object/proc/open_ritual_ui(mob/living/carbon/human/human)
+ var/list/rituals_list = get_available_rituals(human)
+
+ if(!LAZYLEN(rituals_list))
+ active_ui = FALSE
+ to_chat(human, "Не имеется доступных для выполнения ритуалов.")
+ return
+
+ var/choosen_ritual = tgui_input_list(human, "Выберите ритуал", "Ритуалы", rituals_list)
+
+ if(!choosen_ritual)
+ active_ui = FALSE
+ return
+
+ var/ritual_status
+
+ for(var/datum/ritual/ritual as anything in rituals)
+ if(choosen_ritual != ritual.name)
+ continue
+
+ ritual_status = ritual.pre_ritual_check(human)
+ break
+
+ if(ritual_status)
+ active_ui = FALSE
+
+ return FALSE
+
+/datum/component/ritual_object/proc/get_available_rituals(mob/living/carbon/human/human)
+ var/list/rituals_list = list()
+
+ for(var/datum/ritual/ritual as anything in rituals)
+ if(ritual.charges == 0)
+ continue
+
+ if(!COOLDOWN_FINISHED(ritual, ritual_cooldown))
+ continue
+
+ if(ritual.allowed_species && !is_type_in_list(human.dna.species, ritual.allowed_species))
+ continue
+
+ if(ritual.allowed_special_role && !is_type_in_list(human.mind?.special_role, ritual.allowed_special_role))
+ continue
+
+ LAZYADD(rituals_list, ritual.name)
+
+ return rituals_list
diff --git a/code/datums/elements/ridable.dm b/code/datums/elements/ridable.dm
index 337e166ea3f..0009e3e4718 100644
--- a/code/datums/elements/ridable.dm
+++ b/code/datums/elements/ridable.dm
@@ -195,8 +195,8 @@
return
return rider
-/obj/item/riding_offhand/afterattack(atom/movable/interacting_with, mob/living/user, list/modifiers)
- if(!istype(interacting_with) || !interacting_with.can_buckle)
+/obj/item/riding_offhand/afterattack(atom/movable/interacting_with, mob/living/user, proximity, list/modifiers, status)
+ if(!istype(interacting_with) || !interacting_with.can_buckle || !proximity)
return NONE
if(rider == user) // Piggyback user
return
diff --git a/code/datums/emote/emote_verbs.dm b/code/datums/emote/emote_verbs.dm
index dce2eff87c1..4913cbcb264 100644
--- a/code/datums/emote/emote_verbs.dm
+++ b/code/datums/emote/emote_verbs.dm
@@ -476,11 +476,6 @@
set category = "Эмоции"
emote("whip_l", intentional = TRUE)
-/mob/living/carbon/human/proc/emote_rumble()
- set name = "< Урчать >"
- set category = "Эмоции"
- emote("rumble", intentional = TRUE)
-
/mob/living/carbon/human/proc/emote_hiss_unathi()
set name = "< Шипеть >"
set category = "Эмоции"
diff --git a/code/datums/helper_datums/map_template.dm b/code/datums/helper_datums/map_template.dm
index 3c6e5a2a0d4..4c9fca5d1d2 100644
--- a/code/datums/helper_datums/map_template.dm
+++ b/code/datums/helper_datums/map_template.dm
@@ -49,6 +49,7 @@
// if given a multi-z template
// it might need to be adapted for that when that time comes
GLOB.space_manager.add_dirt(placement.z)
+ SSicon_smooth.add_halt_source(src)
try
var/list/bounds = GLOB.maploader.load_map(get_file(), min_x, min_y, placement.z, shouldCropMap = TRUE)
if(!bounds)
@@ -58,11 +59,13 @@
if(ST_bot_left == null || ST_top_right == null)
stack_trace("One of the smoothing corners is bust")
catch(var/exception/e)
+ SSicon_smooth.remove_halt_source(src)
GLOB.space_manager.remove_dirt(placement.z)
message_admins("Map template [name] threw an error while loading. Safe exit attempted, but check for errors at [ADMIN_COORDJMP(placement)].")
log_admin("Map template [name] threw an error while loading. Safe exit attempted.")
throw e
+ SSicon_smooth.remove_halt_source(src)
GLOB.space_manager.remove_dirt(placement.z)
add_game_logs("[name] loaded at [min_x],[min_y],[placement.z]")
diff --git a/code/datums/keybindings/communication_keybinds.dm b/code/datums/keybindings/communication_keybinds.dm
index 973317d8e28..0cdb00e77a7 100644
--- a/code/datums/keybindings/communication_keybinds.dm
+++ b/code/datums/keybindings/communication_keybinds.dm
@@ -66,7 +66,7 @@
/datum/keybinding/client/communication/asay
name = ADMIN_CHANNEL
keys = list("F5")
- required_rights = R_ADMIN
+ required_rights = R_ADMIN | R_MOD
/datum/keybinding/client/communication/dsay
name = DSAY_CHANNEL
diff --git a/code/datums/keybindings/emote.dm b/code/datums/keybindings/emote.dm
index a8006c729a4..ccda0a6d7c2 100644
--- a/code/datums/keybindings/emote.dm
+++ b/code/datums/keybindings/emote.dm
@@ -608,10 +608,6 @@
linked_emote = /datum/emote/living/carbon/human/unathi/threat
name = "Угрожать (унати)"
-/datum/keybinding/emote/carbon/human/unathi/rumble
- linked_emote = /datum/emote/living/carbon/human/unathi/rumble
- name = "Урчать (унати)"
-
/datum/keybinding/emote/carbon/human/unathi/roar
linked_emote = /datum/emote/living/carbon/human/unathi/roar
name = "Рычать (унати)"
diff --git a/code/datums/keybindings/mob.dm b/code/datums/keybindings/mob.dm
index 0b29b61944f..7d6be5c1089 100644
--- a/code/datums/keybindings/mob.dm
+++ b/code/datums/keybindings/mob.dm
@@ -5,7 +5,7 @@
// Hands
/datum/keybinding/mob/use_held_object
name = "Использовать вещь в руке"
- keys = list("Y", "Z")
+ keys = list("Z")
/datum/keybinding/mob/use_held_object/down(client/user)
diff --git a/code/datums/looping_sounds/item_sounds.dm b/code/datums/looping_sounds/item_sounds.dm
index 4233c478644..e3a41b07ae5 100644
--- a/code/datums/looping_sounds/item_sounds.dm
+++ b/code/datums/looping_sounds/item_sounds.dm
@@ -3,3 +3,6 @@
start_sound = list('sound/items/taperecorder/taperecorder_hiss_start.ogg')
volume = 10
+/datum/looping_sound/ambulance_alarm/justice
+ mid_length = 1.5 SECONDS
+ falloff_exponent = 4
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 0066bcc459d..a6de1c0034c 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -1375,6 +1375,7 @@
SSticker.mode.revolutionaries += src
SSticker.mode.update_rev_icons_added(src)
special_role = SPECIAL_ROLE_REV
+ SEND_SOUND(current, 'sound/ambience/antag/revolutionary_tide.ogg')
log_admin("[key_name(usr)] has rev'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has rev'd [key_name_admin(current)]")
current.create_log(MISC_LOG, "[current] was made into a revolutionary by [key_name_admin(usr)]")
@@ -1396,6 +1397,7 @@
if(!recruit_action)
recruit_action = new
recruit_action.Grant(src.current)
+ SEND_SOUND(current, 'sound/ambience/antag/revolutionary_tide.ogg')
log_admin("[key_name(usr)] has head-rev'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has head-rev'd [key_name_admin(current)]")
current.create_log(MISC_LOG, "[current] was made into a head revolutionary by [key_name_admin(usr)]")
diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm
index e3d7ecdec32..9161e764f1f 100644
--- a/code/datums/mutable_appearance.dm
+++ b/code/datums/mutable_appearance.dm
@@ -7,7 +7,7 @@
// Mutable appearances erase template vars on new, because they accept an appearance to copy as an arg
// If we have nothin to copy, we set the float plane
-#if DM_BUILD > 1642
+#if DM_BUILD == 1643
/mutable_appearance/proc/New(mutable_appearance/to_copy)
if(!to_copy)
plane = FLOAT_PLANE
diff --git a/code/datums/rituals.dm b/code/datums/rituals.dm
new file mode 100644
index 00000000000..ddc50d1f680
--- /dev/null
+++ b/code/datums/rituals.dm
@@ -0,0 +1,1251 @@
+/datum/ritual
+ /// Linked object
+ var/obj/ritual_object
+ /// Name of our ritual
+ var/name
+ /// If ritual requires more than one invoker
+ var/extra_invokers = 0
+ /// If invoker species isn't in allowed - he won't do ritual.
+ var/list/allowed_species
+ /// If invoker special role isn't in allowed - he won't do ritual.
+ var/list/allowed_special_role
+ /// Required to ritual invoke things are located here
+ var/list/required_things
+ /// If true - only whitelisted species will be added as invokers
+ var/require_allowed_species = TRUE
+ /// Same as require_allowed_species, but requires special role to be counted as invoker.
+ var/require_allowed_special_role = FALSE
+ /// We search for humans in that radius
+ var/finding_range = DEFAULT_RITUAL_RANGE_FIND
+ /// Amount of maximum ritual uses.
+ var/charges = -1
+ /// Cooldown for one ritual
+ COOLDOWN_DECLARE(ritual_cooldown)
+ /// Our cooldown after we casted ritual.
+ var/cooldown_after_cast = DEFAULT_RITUAL_COOLDOWN
+ /// If our ritual failed on proceed - we'll try to cause disaster.
+ var/disaster_prob = DEFAULT_RITUAL_DISASTER_PROB
+ /// A chance of failing our ritual.
+ var/fail_chance = DEFAULT_RITUAL_FAIL_PROB
+ /// After successful ritual we'll destroy used things.
+ var/ritual_should_del_things = TRUE
+ /// After failed ritual proceed - we'll delete items.
+ var/ritual_should_del_things_on_fail = FALSE
+ /// Temporary list of objects, which we will delete. Or use in transformations! Then clear list.
+ var/list/used_things = list()
+ /// Temporary list of invokers.
+ var/list/invokers = list()
+ /// If defined - do_after will be added to your ritual
+ var/cast_time
+
+/datum/ritual/Destroy(force)
+ ritual_object = null
+ LAZYNULL(used_things)
+ LAZYNULL(required_things)
+ LAZYNULL(invokers)
+ return ..()
+
+/datum/ritual/proc/pre_ritual_check(mob/living/carbon/human/invoker)
+ var/failed = FALSE
+ var/cause_disaster = FALSE
+
+ var/del_things = FALSE
+ var/start_cooldown = FALSE
+
+ handle_ritual_object(RITUAL_STARTED)
+
+ . = ritual_invoke_check(invoker)
+ switch(.)
+ if(RITUAL_SUCCESSFUL)
+ start_cooldown = TRUE
+ addtimer(CALLBACK(src, PROC_REF(handle_ritual_object), RITUAL_ENDED), 1 SECONDS)
+ charges--
+ if(RITUAL_FAILED_INVALID_SPECIES)
+ failed = TRUE
+ if(RITUAL_FAILED_EXTRA_INVOKERS)
+ failed = TRUE
+ if(RITUAL_FAILED_MISSED_REQUIREMENTS)
+ failed = TRUE
+ if(RITUAL_FAILED_INVALID_SPECIAL_ROLE)
+ failed = TRUE
+ if(RITUAL_FAILED_ON_PROCEED)
+ failed = TRUE
+ cause_disaster = TRUE
+ start_cooldown = TRUE
+ if(NONE)
+ failed = TRUE
+
+ if(start_cooldown)
+ COOLDOWN_START(src, ritual_cooldown, cooldown_after_cast)
+
+ if(cause_disaster && prob(disaster_prob))
+ disaster(invoker)
+
+ if((. & RITUAL_SUCCESSFUL) && (ritual_should_del_things))
+ del_things = TRUE
+
+ if((. & RITUAL_FAILED_ON_PROCEED) && (ritual_should_del_things_on_fail))
+ del_things = TRUE
+
+ if(del_things)
+ del_things()
+
+ if(failed)
+ addtimer(CALLBACK(src, PROC_REF(handle_ritual_object), RITUAL_FAILED), 2 SECONDS)
+
+ /// We use pre-defines
+ LAZYCLEARLIST(invokers)
+ LAZYCLEARLIST(used_things)
+
+ return .
+
+/datum/ritual/proc/handle_ritual_object(bitflags, silent = FALSE)
+ switch(bitflags)
+ if(RITUAL_STARTED)
+ . = RITUAL_STARTED
+ if(!silent)
+ playsound(ritual_object.loc, 'sound/effects/ghost2.ogg', 50, TRUE)
+ if(RITUAL_ENDED)
+ . = RITUAL_ENDED
+ if(!silent)
+ playsound(ritual_object.loc, 'sound/effects/phasein.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ . = RITUAL_FAILED
+ if(!silent)
+ playsound(ritual_object.loc, 'sound/effects/empulse.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/proc/del_things() // This is a neutral variant with item delete. Override it to change.
+ for(var/obj/item/thing in used_things)
+ qdel(thing)
+
+ return
+
+/datum/ritual/proc/ritual_invoke_check(mob/living/carbon/human/invoker)
+ if(!COOLDOWN_FINISHED(src, ritual_cooldown))
+ return NONE
+
+ if(charges == 0)
+ return NONE
+
+ if(allowed_special_role && !LAZYIN(allowed_special_role, invoker.mind?.special_role))
+ return RITUAL_FAILED_INVALID_SPECIAL_ROLE
+
+ if(allowed_species && !is_type_in_list(invoker.dna.species, allowed_species)) // double check to avoid funny situations
+ return RITUAL_FAILED_INVALID_SPECIES
+
+ if(!check_invokers(invoker))
+ return RITUAL_FAILED_EXTRA_INVOKERS
+
+ if(required_things && !check_contents(invoker))
+ return RITUAL_FAILED_MISSED_REQUIREMENTS
+
+ if(prob(fail_chance))
+ return RITUAL_FAILED_ON_PROCEED
+
+ if(cast_time && !cast(invoker))
+ return RITUAL_FAILED_ON_PROCEED
+
+ return do_ritual(invoker)
+
+/datum/ritual/proc/cast(mob/living/carbon/human/invoker)
+ . = TRUE
+
+ var/list/invokers_list = invokers.Copy() // create temp list to avoid funny situations
+ LAZYADD(invokers_list, invoker)
+
+ for(var/mob/living/carbon/human/human as anything in invokers_list)
+ if(!do_after(human, cast_time, ritual_object, extra_checks = CALLBACK(src, PROC_REF(action_check_contents))))
+ . = FALSE
+
+ return .
+
+/datum/ritual/proc/check_invokers(mob/living/carbon/human/invoker)
+ if(!extra_invokers)
+ return TRUE
+
+ for(var/mob/living/carbon/human/human in range(finding_range, ritual_object))
+ if(human == invoker)
+ continue
+
+ if(require_allowed_species && !is_type_in_list(human.dna.species, allowed_species))
+ continue
+
+ if(require_allowed_special_role && !LAZYIN(allowed_special_role, human.mind?.special_role))
+ continue
+
+ LAZYADD(invokers, human)
+
+ if(LAZYLEN(invokers) >= extra_invokers)
+ break
+
+ if(LAZYLEN(invokers) < extra_invokers)
+ ritual_object.balloon_alert(invoker, "требуется больше участников!")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/proc/check_contents(mob/living/carbon/human/invoker)
+ var/list/atom/movable/atoms = list()
+
+ for(var/atom/obj as anything in range(finding_range, ritual_object))
+ if(isitem(obj))
+ var/obj/item/close_item = obj
+ if(close_item.item_flags & ABSTRACT)
+ continue
+
+ if(obj.invisibility)
+ continue
+
+ if(obj == invoker)
+ continue
+
+ if(obj == ritual_object)
+ continue
+
+ if(LAZYIN(invokers, obj))
+ continue
+
+ LAZYADD(atoms, obj)
+
+ var/list/requirements = required_things.Copy()
+ for(var/atom/atom as anything in atoms)
+ for(var/req_type in requirements)
+ if(requirements[req_type] <= 0)
+ continue
+
+ if(!istype(atom, req_type))
+ continue
+
+ LAZYADD(used_things, atom)
+
+ if(isstack(atom))
+ var/obj/item/stack/picked_stack = atom
+ requirements[req_type] -= picked_stack.amount
+ else
+ requirements[req_type]--
+
+ var/list/what_are_we_missing = list()
+ for(var/req_type in requirements)
+ var/number_of_things = requirements[req_type]
+
+ if(number_of_things <= 0)
+ continue
+
+ LAZYADD(what_are_we_missing, req_type)
+
+ if(LAZYLEN(what_are_we_missing))
+ ritual_object.balloon_alert(invoker, "требуется больше компонентов!")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/proc/action_check_contents()
+ for(var/atom/atom as anything in used_things)
+ if(QDELETED(atom))
+ return FALSE
+
+ if(!(atom in range(finding_range, ritual_object)))
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/proc/do_ritual(mob/living/carbon/human/invoker) // Do ritual stuff.
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/proc/disaster(mob/living/carbon/human/invoker)
+ return
+
+/datum/ritual/ashwalker
+ /// If ritual requires extra shaman invokers
+ var/extra_shaman_invokers = 0
+ /// If ritual can be invoked only by shaman
+ var/shaman_only = FALSE
+ allowed_species = list(/datum/species/unathi/ashwalker, /datum/species/unathi/draconid)
+
+/datum/ritual/ashwalker/check_invokers(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ if(shaman_only && !isashwalkershaman(invoker))
+ to_chat(invoker, span_warning("Только шаман может выполнить данный ритуал!"))
+ return FALSE
+
+ var/list/shaman_invokers = list()
+
+ if(extra_shaman_invokers)
+ for(var/mob/living/carbon/human/human as anything in invokers)
+ if(human == invoker)
+ continue
+
+ if(isashwalkershaman(human))
+ LAZYADD(shaman_invokers, human)
+
+ if(LAZYLEN(shaman_invokers) >= extra_shaman_invokers)
+ break
+
+ if(LAZYLEN(shaman_invokers) < extra_shaman_invokers)
+ ritual_object.balloon_alert(invoker, "требуется больше шаманов!")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/summon_ashstorm
+ name = "Ash storm summon"
+ shaman_only = TRUE
+ disaster_prob = 20
+ charges = 2
+ cooldown_after_cast = 1200 SECONDS
+ cast_time = 100 SECONDS
+ fail_chance = 20
+ extra_invokers = 2
+ required_things = list(
+ /mob/living/simple_animal/hostile/asteroid/goldgrub = 1
+ )
+
+/datum/ritual/ashwalker/summon_ashstorm/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/living in used_things)
+ if(living.stat != DEAD)
+ to_chat(invoker, "Существа должны быть мертвы")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/summon_ashstorm/del_things()
+ . = ..()
+
+ for(var/mob/living/living in used_things)
+ living.gib()
+
+ return
+
+/datum/ritual/ashwalker/summon_ashstorm/check_invokers(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ if(!invoker.fire_stacks)
+ to_chat(invoker, "Инициатор ритуала должнен быть в воспламеняемой субстанции.")
+ return FALSE
+
+ for(var/mob/living/carbon/human/human as anything in invokers)
+ if(!human.fire_stacks)
+ to_chat(invoker, "Участники ритуала должны быть в воспламеняемой субстанции.")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/summon_ashstorm/do_ritual(mob/living/carbon/human/invoker)
+ SSweather.run_weather(/datum/weather/ash_storm)
+ message_admins("[key_name(invoker)] accomplished ashstorm ritual and summoned ashstorm")
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/summon_ashstorm/disaster(mob/living/carbon/human/invoker)
+ var/list/targets = list()
+
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(isashwalker(human))
+ LAZYADD(targets, human)
+
+ if(!LAZYLEN(targets))
+ return
+
+ var/mob/living/carbon/human/human = pick(targets)
+ var/datum/disease/virus/cadaver/cadaver = new
+ cadaver.Contract(human)
+
+ return
+
+/datum/ritual/ashwalker/summon_ashstorm/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/magic/fleshtostone.ogg', 50, TRUE)
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/magic/invoke_general.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/magic/castsummon.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/transformation
+ name = "Transformation ritual"
+ disaster_prob = 30
+ fail_chance = 50
+ extra_invokers = 1
+ cooldown_after_cast = 480 SECONDS
+ cast_time = 70 SECONDS
+ ritual_should_del_things_on_fail = TRUE
+ required_things = list(
+ /obj/item/twohanded/spear = 3,
+ /obj/item/organ/internal/regenerative_core = 1,
+ /mob/living/carbon/human = 1
+ )
+
+/datum/ritual/ashwalker/transformation/do_ritual(mob/living/carbon/human/invoker)
+ var/mob/living/carbon/human/human = locate() in used_things
+
+ if(!human || !human.mind || !human.ckey)
+ return RITUAL_FAILED_ON_PROCEED // Your punishment
+
+ human.set_species(/datum/species/unathi/ashwalker)
+ human.mind.store_memory("Теперь вы пеплоходец, вы часть племени! Вы довольно смутно помните о прошлой жизни, и вы не помните, как пользоваться технологиями!")
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/transformation/disaster(mob/living/carbon/human/invoker)
+ invoker.adjustBrainLoss(15)
+ invoker.SetKnockdown(5 SECONDS)
+
+ var/mob/living/carbon/human/human = locate() in used_things
+
+ if(QDELETED(human))
+ return
+
+ var/list/destinations = list()
+
+ for(var/obj/item/radio/beacon/beacon in GLOB.global_radios)
+ LAZYADD(destinations, get_turf(beacon))
+
+ human.forceMove(safepick(destinations))
+ playsound(get_turf(human), 'sound/magic/invoke_general.ogg', 50, TRUE)
+
+ return
+
+/datum/ritual/ashwalker/transformation/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ if(. == RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/effects/clone_jutsu.ogg', 50, TRUE)
+ return
+
+ . = ..(bitflags)
+ return .
+
+/datum/ritual/ashwalker/summon
+ name = "Summoning ritual"
+ disaster_prob = 30
+ fail_chance = 30
+ shaman_only = TRUE
+ cooldown_after_cast = 900 SECONDS
+ cast_time = 50 SECONDS
+ extra_invokers = 1
+
+/datum/ritual/ashwalker/summon/do_ritual(mob/living/carbon/human/invoker)
+ var/list/ready_for_summoning = list()
+
+ for(var/mob/living/carbon/human/human in GLOB.mob_list)
+ if(isashwalker(human))
+ LAZYADD(ready_for_summoning, human)
+
+ if(!LAZYLEN(ready_for_summoning))
+ return RITUAL_FAILED_ON_PROCEED
+
+ var/mob/living/carbon/human/human = tgui_input_list(invoker, "Who will be summoned?", "Summon ritual", ready_for_summoning)
+
+ if(!human)
+ return RITUAL_FAILED_ON_PROCEED
+
+ LAZYADD(invokers, invoker)
+
+ for(var/mob/living/carbon/human/summoner as anything in invokers)
+ summoner.blood_volume -= (summoner.blood_volume * 0.20)
+ summoner.apply_damage(25, def_zone = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
+
+ human.forceMove(ritual_object)
+ human.vomit()
+ human.Weaken(10 SECONDS)
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/summon/disaster(mob/living/carbon/human/invoker)
+ if(!prob(70))
+ return
+
+ var/obj/item/organ/external/limb = invoker.get_organ(pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
+ limb?.droplimb()
+
+ return
+
+/datum/ritual/ashwalker/summon/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/weapons/zapbang.ogg', 50, TRUE)
+ var/datum/effect_system/smoke_spread/smoke = new
+ smoke.set_up(5, FALSE, ritual_object.loc)
+ smoke.start()
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/magic/forcewall.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/magic/invoke_general.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/curse
+ name = "Curse ritual"
+ disaster_prob = 30
+ fail_chance = 30
+ cooldown_after_cast = 600 SECONDS
+ cast_time = 60 SECONDS
+ charges = 3
+ shaman_only = TRUE
+ extra_invokers = 2
+ required_things = list(
+ /mob/living/carbon/human = 3
+ )
+
+/datum/ritual/ashwalker/curse/del_things()
+ for(var/mob/living/carbon/human/human in used_things)
+ human.gib()
+
+ return
+
+/datum/ritual/ashwalker/curse/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/carbon/human/human in used_things)
+ if(human.stat != DEAD)
+ to_chat(invoker, "Гуманоиды должны быть мертвы.")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/curse/do_ritual(mob/living/carbon/human/invoker)
+ var/list/humans = list()
+
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(!isashwalker(human))
+ LAZYADD(humans, human)
+
+ if(!LAZYLEN(humans))
+ return RITUAL_FAILED_ON_PROCEED
+
+ var/mob/living/carbon/human/human = pick(humans)
+ var/datum/disease/vampire/disease = new
+
+ if(!disease.Contract(human))
+ return RITUAL_FAILED_ON_PROCEED
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/curse/disaster(mob/living/carbon/human/invoker)
+ var/list/targets = list()
+
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(isashwalker(human))
+ LAZYADD(targets, human)
+
+ if(!LAZYLEN(targets))
+ return
+
+ var/mob/living/carbon/human/human = pick(targets)
+ human.monkeyize()
+
+ return
+
+/datum/ritual/ashwalker/power
+ name = "Power ritual"
+ disaster_prob = 40
+ fail_chance = 40
+ charges = 1
+ cooldown_after_cast = 800 SECONDS
+ cast_time = 80 SECONDS
+ shaman_only = TRUE
+ extra_invokers = 4
+ required_things = list(
+ /mob/living/simple_animal/hostile/asteroid/goliath = 3,
+ /obj/item/organ/internal/regenerative_core = 3
+ )
+
+/datum/ritual/ashwalker/power/del_things()
+ for(var/mob/living/living in used_things)
+ living.gib()
+
+ return
+
+/datum/ritual/ashwalker/power/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/living in used_things)
+ if(living.stat != DEAD)
+ to_chat(invoker, "Существа должны быть мертвы.")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/power/do_ritual(mob/living/carbon/human/invoker)
+ LAZYADD(invokers, invoker)
+
+ for(var/mob/living/carbon/human/human as anything in invokers)
+ if(LAZYIN(human.dna?.default_blocks, GLOB.weakblock))
+ human.force_gene_block(GLOB.weakblock)
+
+ human.force_gene_block(GLOB.strongblock, TRUE)
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/power/disaster(mob/living/carbon/human/invoker)
+ var/list/targets = list()
+
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(isashwalker(human))
+ LAZYADD(targets, human)
+
+ if(!LAZYLEN(targets))
+ return
+
+ invoker.force_gene_block(pick(GLOB.bad_blocks), TRUE)
+ for(var/mob/living/carbon/human/human as anything in invokers)
+ human.force_gene_block(pick(GLOB.bad_blocks), TRUE)
+
+ var/mob/living/carbon/human/human = pick(targets)
+ human.force_gene_block(pick(GLOB.bad_blocks), TRUE)
+
+ return
+
+/datum/ritual/ashwalker/power/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/magic/castsummon.ogg', 50, TRUE)
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/magic/smoke.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/magic/strings.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/resurrection
+ name = "Resurrection ritual"
+ charges = 3
+ extra_invokers = 2
+ cooldown_after_cast = 180 SECONDS
+ cast_time = 100 SECONDS
+ shaman_only = TRUE
+ disaster_prob = 25
+ fail_chance = 35
+ required_things = list(
+ /obj/item/organ/internal/regenerative_core = 2,
+ /mob/living/carbon/human = 1,
+ /obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom = 4,
+ /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit = 1
+ )
+
+/datum/ritual/ashwalker/resurrection/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/living in used_things)
+ if(living.stat != DEAD)
+ to_chat(invoker, "Существа должны быть мертвы.")
+ return FALSE
+
+ var/mob/living/carbon/human/human = locate() in used_things
+
+ if(!human.mind || !human.ckey)
+ return FALSE
+
+ if(!isashwalker(human))
+ fail_chance = 15
+
+ return TRUE
+
+/datum/ritual/ashwalker/resurrection/do_ritual(mob/living/carbon/human/invoker)
+ var/mob/living/carbon/human/human = locate() in used_things
+ human.revive()
+ human.adjustBrainLoss(20)
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/resurrection/disaster(mob/living/carbon/human/invoker)
+ for(var/mob/living/carbon/human/human in range(10, ritual_object))
+ if(!isashwalker(human) || human.stat == DEAD)
+ continue
+
+ human.adjustBrainLoss(15)
+
+ return
+
+/datum/ritual/ashwalker/resurrection/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/magic/clockwork/reconstruct.ogg', 50, TRUE)
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/magic/disable_tech.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/magic/invoke_general.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/recharge
+ name = "Recharge rituals"
+ extra_invokers = 3
+ disaster_prob = 30
+ fail_chance = 50
+ cooldown_after_cast = 360 SECONDS
+ cast_time = 90 SECONDS
+ shaman_only = TRUE
+ required_things = list(
+ /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 1,
+ /mob/living/simple_animal/hostile/asteroid/goliath = 1,
+ /obj/item/organ/internal/regenerative_core = 1,
+ /mob/living/simple_animal/hostile/asteroid/goldgrub = 1
+ )
+ var/list/blacklisted_rituals = list(/datum/ritual/ashwalker/power)
+
+/datum/ritual/ashwalker/recharge/del_things()
+ . = ..()
+
+ for(var/mob/living/living in used_things)
+ living.gib()
+
+ return
+
+/datum/ritual/ashwalker/recharge/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/living in used_things)
+ if(living.stat != DEAD)
+ to_chat(invoker, "Существа должны быть мертвы.")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/recharge/do_ritual(mob/living/carbon/human/invoker)
+ var/datum/component/ritual_object/component = ritual_object.GetComponent(/datum/component/ritual_object)
+
+ if(!component)
+ return RITUAL_FAILED_ON_PROCEED
+
+ for(var/datum/ritual/ritual as anything in component.rituals)
+ if(is_type_in_list(ritual, blacklisted_rituals))
+ continue
+
+ if(ritual.charges < 0)
+ continue
+
+ ritual.charges++
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/recharge/disaster(mob/living/carbon/human/invoker)
+ var/list/targets = list()
+
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(isashwalker(human))
+ LAZYADD(targets, human)
+
+ if(!LAZYLEN(targets))
+ return
+
+ var/mob/living/carbon/human/human = pick(targets)
+ new /obj/item/organ/internal/legion_tumour(human)
+
+ return
+
+/datum/ritual/ashwalker/recharge/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/magic/castsummon.ogg', 50, TRUE)
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/magic/cult_spell.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/magic/invoke_general.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/population
+ name = "Population ritual"
+ extra_invokers = 2
+ charges = 1
+ cooldown_after_cast = 120 SECONDS
+ cast_time = 40 SECONDS
+ ritual_should_del_things_on_fail = TRUE
+ required_things = list(
+ /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit = 1,
+ /obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom = 1,
+ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem = 1,
+ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf = 1,
+ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap = 1,
+ /obj/item/reagent_containers/food/snacks/grown/ash_flora/shavings = 1
+ )
+
+/datum/ritual/ashwalker/population/check_invokers(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ if(!isashwalkershaman(invoker))
+ disaster_prob = 40
+ fail_chance = 40
+
+ return TRUE
+
+/datum/ritual/ashwalker/population/del_things()
+ for(var/mob/living/living in used_things)
+ living.gib()
+
+ return
+
+/datum/ritual/ashwalker/population/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/living in used_things)
+ if(living.stat != DEAD)
+ to_chat(invoker, "Существа должны быть мертвы.")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/population/do_ritual(mob/living/carbon/human/invoker)
+ new /obj/effect/mob_spawn/human/ash_walker/shaman(ritual_object.loc)
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/population/disaster(mob/living/carbon/human/invoker)
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(!isashwalker(human) || !prob(disaster_prob))
+ continue
+
+ if(!isturf(human.loc))
+ continue
+
+ var/datum/effect_system/smoke_spread/smoke = new
+ smoke.set_up(5, FALSE, get_turf(human.loc))
+ smoke.start()
+
+ for(var/obj/item/obj as anything in human.get_equipped_items(TRUE, TRUE))
+ human.drop_item_ground(obj)
+
+ return
+
+/datum/ritual/ashwalker/population/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ var/datum/effect_system/smoke_spread/smoke = new
+ smoke.set_up(5, FALSE, get_turf(ritual_object.loc))
+ smoke.start()
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/magic/cult_spell.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/magic/teleport_diss.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/soul
+ name = "Soul ritual"
+ extra_invokers = 3
+ cooldown_after_cast = 1200 SECONDS
+ cast_time = 60 SECONDS
+ required_things = list(
+ /mob/living/carbon/human = 3,
+ /obj/item/stack/sheet/animalhide/ashdrake = 1
+ )
+
+/datum/ritual/ashwalker/soul/check_invokers(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ if(!isashwalkershaman(invoker))
+ disaster_prob = 40
+ fail_chance = 70
+
+ return TRUE
+
+/datum/ritual/ashwalker/population/del_things()
+ var/obj/item/stack/sheet/animalhide/ashdrake/stack = locate() in used_things
+ stack.use(1)
+
+ for(var/mob/living/living in used_things)
+ living.gib()
+
+ return
+
+/datum/ritual/ashwalker/soul/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/living in used_things)
+ if(living.stat != DEAD)
+ to_chat(invoker, "Существа должны быть мертвы.")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/soul/do_ritual(mob/living/carbon/human/invoker)
+ var/datum/effect_system/smoke_spread/smoke = new
+ smoke.set_up(5, FALSE, get_turf(invoker.loc))
+ smoke.start()
+ invoker.set_species(/datum/species/unathi/draconid)
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/soul/disaster(mob/living/carbon/human/invoker)
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(!isashwalker(human) || !prob(disaster_prob))
+ continue
+
+ if(!isturf(human.loc))
+ continue
+
+ human.SetKnockdown(10 SECONDS)
+ var/turf/turf = human.loc
+ new /obj/effect/hotspot(turf)
+ turf.hotspot_expose(700, 50, 1)
+
+ return
+
+/datum/ritual/ashwalker/soul/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/effects/whoosh.ogg', 50, TRUE)
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/effects/bamf.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/effects/blobattack.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/transmutation
+ name = "Transmutation ritual"
+ cooldown_after_cast = 120 SECONDS
+ cast_time = 10 SECONDS
+ required_things = list(
+ /obj/item/stack/ore = 10
+ )
+
+/datum/ritual/ashwalker/transmutation/check_invokers(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ if(!isashwalkershaman(invoker))
+ disaster_prob = 30
+ fail_chance = 50
+
+ return TRUE
+
+/datum/ritual/ashwalker/transmutation/do_ritual(mob/living/carbon/human/invoker)
+ var/ore_type = pick(subtypesof(/obj/item/stack/ore))
+
+ var/obj/item/stack/ore/ore = new ore_type(get_turf(ritual_object))
+ ore.add(10)
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/transmutation/disaster(mob/living/carbon/human/invoker)
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(!isashwalker(human) || !prob(disaster_prob))
+ continue
+
+ if(!isturf(human.loc))
+ continue
+
+ human.SetKnockdown(10 SECONDS)
+ var/turf/turf = human.loc
+ new /obj/effect/hotspot(turf)
+ turf.hotspot_expose(700, 50, 1)
+
+ return
+
+/datum/ritual/ashwalker/transmutation/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/effects/bin_close.ogg', 50, TRUE)
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/magic/cult_spell.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/magic/knock.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/interrogation
+ name = "Interrogation ritual"
+ cooldown_after_cast = 50 SECONDS
+ shaman_only = TRUE
+ cast_time = 10 SECONDS
+ required_things = list(
+ /mob/living/carbon/human = 1
+ )
+
+/datum/ritual/ashwalker/interrogation/check_invokers(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ if(invoker.health > 10)
+ disaster_prob = 30
+ fail_chance = 30
+
+ return TRUE
+
+/datum/ritual/ashwalker/interrogation/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ var/mob/living/carbon/human/human = locate() in used_things
+ if(!human || QDELETED(human))
+ return RITUAL_FAILED_ON_PROCEED
+
+ if(human.stat == DEAD || !human.mind)
+ to_chat(invoker, "Гуманоид должен быть жив и иметь разум.")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/interrogation/do_ritual(mob/living/carbon/human/invoker)
+ var/obj/effect/proc_holder/spell/empath/empath = new
+ if(!empath.cast(used_things, invoker))
+ return RITUAL_FAILED_ON_PROCEED
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/interrogation/disaster(mob/living/carbon/human/invoker)
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(!isashwalker(human))
+ continue
+
+ if(!isturf(human.loc))
+ continue
+
+ var/turf/turf = human.loc
+ to_chat(human, "HONK")
+ SEND_SOUND(turf, sound('sound/items/airhorn.ogg'))
+ human.AdjustHallucinate(150 SECONDS)
+ human.EyeBlind(5 SECONDS)
+ var/datum/effect_system/smoke_spread/smoke = new
+ smoke.set_up(5, FALSE, turf)
+ smoke.start()
+
+ return
+
+/datum/ritual/ashwalker/interrogation/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/effects/anvil_start.ogg', 50, TRUE)
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/effects/hulk_hit_airlock.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/effects/forge_destroy.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/creation
+ name = "Creation ritual"
+ cooldown_after_cast = 150 SECONDS
+ shaman_only = TRUE
+ extra_invokers = 2
+ cast_time = 60 SECONDS
+ required_things = list(
+ /mob/living/carbon/human = 2
+ )
+
+/datum/ritual/ashwalker/creation/check_invokers(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/carbon/human/human as anything in invokers)
+ if(human.stat != UNCONSCIOUS)
+ disaster_prob += 20
+ fail_chance += 20
+
+ return TRUE
+
+/datum/ritual/ashwalker/creation/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/carbon/human/human in used_things)
+ if(human.stat != DEAD)
+ to_chat(invoker, "Гуманоиды должны быть мертвы.")
+ return FALSE
+
+ if(!isashwalker(human))
+ to_chat(invoker, "Гуманоиды должны быть пеплоходцами.")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/creation/do_ritual(mob/living/carbon/human/invoker)
+ for(var/mob/living/mob as anything in subtypesof(/mob/living/simple_animal/hostile/asteroid))
+ if(prob(30))
+ mob = new(get_turf(ritual_object))
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/creation/disaster(mob/living/carbon/human/invoker)
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(!isashwalker(human) || !prob(disaster_prob))
+ continue
+
+ if(!isturf(human.loc))
+ continue
+
+ human.SetKnockdown(10 SECONDS)
+ var/turf/turf = human.loc
+ new /obj/effect/hotspot(turf)
+ turf.hotspot_expose(700, 50, 1)
+
+ return
+
+/datum/ritual/ashwalker/creation/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/magic/blind.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/magic/castsummon.ogg', 50, TRUE)
+
+ return .
+
+/datum/ritual/ashwalker/command
+ name = "Command ritual"
+ cooldown_after_cast = 150 SECONDS
+ shaman_only = TRUE
+ disaster_prob = 35
+ extra_invokers = 1
+ cast_time = 60 SECONDS
+ required_things = list(
+ /mob/living/simple_animal = 1,
+ /obj/item/organ/internal/regenerative_core = 1,
+ /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg = 1
+ )
+
+/datum/ritual/ashwalker/command/check_contents(mob/living/carbon/human/invoker)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ for(var/mob/living/simple_animal/living in used_things)
+ if(living.client)
+ to_chat(invoker, "Существо должно быть бездушным.")
+ return FALSE
+
+ if(living.sentience_type == SENTIENCE_BOSS)
+ to_chat(invoker, "Ритуал не может воздействовать на мегафауну.")
+ return FALSE
+
+ if(living.stat != DEAD)
+ to_chat(invoker, "Существа должны быть мертвы.")
+ return FALSE
+
+ return TRUE
+
+/datum/ritual/ashwalker/command/do_ritual(mob/living/carbon/human/invoker)
+ var/mob/living/simple_animal/animal = locate() in used_things
+
+ if(QDELETED(animal))
+ return RITUAL_FAILED_ON_PROCEED
+
+ animal.faction = invoker.faction
+ animal.revive()
+ var/list/candidates = SSghost_spawns.poll_candidates("Вы хотите сыграть за раба пеплоходцев?", ROLE_SENTIENT, TRUE, source = animal)
+
+ if(!LAZYLEN(candidates) || QDELETED(animal)) // no travelling into nullspace
+ return RITUAL_FAILED_ON_PROCEED // no mercy guys. But you got friendly creature
+
+ var/mob/mob = pick(candidates)
+ animal.key = mob.key
+ animal.universal_speak = 1
+ animal.sentience_act()
+ animal.can_collar = 1
+ animal.maxHealth = max(animal.maxHealth, 200)
+ animal.del_on_death = FALSE
+ animal.master_commander = invoker
+
+ animal.mind.store_memory("Мой хозяин [invoker.name], выполню [genderize_ru(invoker.gender, "его", "её", "этого", "их")] цели любой ценой!")
+ to_chat(animal, chat_box_green("Вы - раб пеплоходцев. Всегда подчиняйтесь и помогайте им."))
+ add_game_logs("стал питомцем игрока [key_name(invoker)]", animal)
+
+ return RITUAL_SUCCESSFUL
+
+/datum/ritual/ashwalker/command/disaster(mob/living/carbon/human/invoker)
+ for(var/mob/living/carbon/human/human in SSmobs.clients_by_zlevel[invoker.z])
+ if(!isashwalker(human) || !prob(disaster_prob))
+ continue
+
+ if(!isturf(human.loc))
+ continue
+
+ var/datum/effect_system/smoke_spread/smoke = new
+ smoke.set_up(5, FALSE, get_turf(human.loc))
+ smoke.start()
+
+ var/mob/living/simple_animal/mob = locate() in used_things
+ qdel(mob)
+
+ new /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient(get_turf(ritual_object))
+
+ return
+
+/datum/ritual/ashwalker/command/handle_ritual_object(bitflags, silent = FALSE)
+ . = ..(bitflags, TRUE)
+
+ switch(.)
+ if(RITUAL_ENDED)
+ playsound(ritual_object.loc, 'sound/magic/demon_consume.ogg', 50, TRUE)
+ if(RITUAL_STARTED)
+ playsound(ritual_object.loc, 'sound/magic/invoke_general.ogg', 50, TRUE)
+ if(RITUAL_FAILED)
+ playsound(ritual_object.loc, 'sound/magic/castsummon.ogg', 50, TRUE)
+
+ return .
+
diff --git a/code/datums/spells/alien_spells/evolve.dm b/code/datums/spells/alien_spells/evolve.dm
index e1bb39e386c..80f11c6b97f 100644
--- a/code/datums/spells/alien_spells/evolve.dm
+++ b/code/datums/spells/alien_spells/evolve.dm
@@ -1,26 +1,27 @@
#define LIVING_PLAYERS_COUNT_FOR_1_PRAETORIAN 25
/obj/effect/proc_holder/spell/alien_spell/evolve
+ name = "Evolve"
desc = "Evolve into reporting this issue."
action_icon_state = "larva2"
action_icon = 'icons/mob/alien.dmi'
- action_icon_state = "AlienMMI"
- var/queen_check = FALSE
var/evolution_path = /mob/living/carbon/alien/larva
+/obj/effect/proc_holder/spell/alien_spell/evolve/larva
+ desc = "Evolve into a fully grown Alien."
+ action_icon_state = "alienh_running"
+
+
/obj/effect/proc_holder/spell/alien_spell/evolve/praetorian
- name = "Evolve"
desc = "Become a Praetorian, Royal Guard to the Queen."
action_icon_state = "aliens_running"
evolution_path = /mob/living/carbon/alien/humanoid/praetorian
/obj/effect/proc_holder/spell/alien_spell/evolve/queen
- name = "Evolve"
desc = "Evolve into an Alien Queen."
action_icon_state = "alienq_running"
- queen_check = TRUE
evolution_path = /mob/living/carbon/alien/humanoid/queen/large
@@ -28,35 +29,81 @@
return new /datum/spell_targeting/self
-/obj/effect/proc_holder/spell/alien_spell/evolve/cast(list/targets, mob/living/carbon/alien/user)
+/obj/effect/proc_holder/spell/alien_spell/evolve/can_cast(mob/living/carbon/alien/user, charge_check, show_message)
+ if(!..())
+ return FALSE
+
if(!user.can_evolve)
- to_chat(user, span_warning("We have nowhere to evolve further!"))
- return
+ if(show_message)
+ to_chat(user, span_warning("We have nowhere to evolve further!"))
+ return FALSE
if(user.evolution_points < user.max_evolution_points)
- to_chat(user, span_warning("We are not ready to evolve yet!"))
- return
+ if(show_message)
+ to_chat(user, span_warning("We are not ready to evolve yet!"))
+ return FALSE
if(user.has_brain_worms())
- to_chat(user, span_warning("We cannot perform this ability at the present time!"))
- return
+ if(show_message)
+ to_chat(user, span_warning("We cannot perform this ability at the present time!"))
+ return FALSE
- if(queen_check)
- if(user.queen_count >= user.queen_maximum)
- to_chat(user, span_warning("We already have a queen."))
- return
- else
- user.queen_count++
+ return TRUE
+
+/obj/effect/proc_holder/spell/alien_spell/evolve/cast(list/targets, mob/living/carbon/alien/user)
to_chat(user, span_noticealien("You begin to evolve!"))
user.visible_message(span_alertalien("[user] begins to twist and contort!"))
- var/mob/living/carbon/alien/new_xeno = new evolution_path(user.loc)
+
+ var/mob/living/carbon/alien/new_xeno = new evolution_path(get_turf(user))
user.mind.transfer_to(new_xeno)
new_xeno.mind.name = new_xeno.name
+
+ if(HAS_TRAIT(user, TRAIT_MOVE_VENTCRAWLING))
+ var/obj/machinery/atmospherics/pipe = user.loc
+ if(!new_xeno.ventcrawler_trait)
+ new_xeno.stop_ventcrawling(message = FALSE)
+ new_xeno.visible_message(
+ span_notice("[new_xeno.name] с грохотом вываливается из вентиляции!"),
+ span_notice("Вы с грохотом вываливаетесь из вентиляции."),
+ )
+
+ var/turf/simulated/floor/turf = get_turf(new_xeno)
+ if(istype(turf))
+ playsound(turf, "sound/effects/clang.ogg", 50, TRUE)
+ turf.break_tile_to_plating()
+ pipe?.deconstruct()
+ else
+ new_xeno.move_into_vent(pipe, message = FALSE)
+
+
playsound_xenobuild(user.loc)
SSblackbox.record_feedback("tally", "alien_growth", 1, "[new_xeno]")
qdel(user)
+
+/obj/effect/proc_holder/spell/alien_spell/evolve/larva/cast(list/targets, mob/living/carbon/alien/larva/user)
+ to_chat(user, span_boldnotice("You are growing into a beautiful alien! It is time to choose a caste."))
+ to_chat(user, span_notice("There are three to choose from:"))
+ to_chat(user, span_notice("Hunters are strong and agile, able to hunt away from the hive and rapidly move through ventilation shafts. Hunters generate plasma slowly and have low reserves."))
+ to_chat(user, span_notice("Sentinels are tasked with protecting the hive and are deadly up close and at a range. They are not as physically imposing nor fast as the hunters."))
+ to_chat(user, span_notice("Drones are the working class, offering the largest plasma storage and generation. They are the only caste which may evolve again, turning into the dreaded alien queen."))
+ var/static/list/to_evolve = list("Hunter" = image(icon = 'icons/mob/alien.dmi', icon_state = "alienh_running"),
+ "Sentinel" = image(icon = 'icons/mob/alien.dmi', icon_state = "aliens_running"),
+ "Drone" = image(icon = 'icons/mob/alien.dmi', icon_state = "aliend_running"))
+ var/choosen_type = show_radial_menu(user, user, to_evolve, src, radius = 40)
+ if(!choosen_type)
+ return
+ switch(choosen_type)
+ if("Hunter")
+ evolution_path = /mob/living/carbon/alien/humanoid/hunter
+ if("Sentinel")
+ evolution_path = /mob/living/carbon/alien/humanoid/sentinel
+ if("Drone")
+ evolution_path = /mob/living/carbon/alien/humanoid/drone
+ ..()
+
+
/obj/effect/proc_holder/spell/alien_spell/evolve/praetorian/cast(list/targets, mob/living/carbon/user)
var/mob/living/carbon/alien/spell_owner = user
if(!istype(spell_owner))
@@ -72,4 +119,21 @@
else
to_chat(user, span_warning("We have too many praetorians."))
+
+/obj/effect/proc_holder/spell/alien_spell/evolve/queen/can_cast(mob/living/carbon/alien/user, charge_check, show_message)
+ if(!..())
+ return FALSE
+
+ if(user.queen_count >= user.queen_maximum)
+ if(show_message)
+ to_chat(user, span_warning("We already have a queen."))
+ return FALSE
+
+ return TRUE
+
+/obj/effect/proc_holder/spell/alien_spell/evolve/queen/cast(list/targets, mob/living/carbon/alien/user)
+ ..()
+ user.queen_count++
+
+
#undef LIVING_PLAYERS_COUNT_FOR_1_PRAETORIAN
diff --git a/code/datums/spells/alien_spells/larva_evolve.dm b/code/datums/spells/alien_spells/larva_evolve.dm
deleted file mode 100644
index 52e0b34d605..00000000000
--- a/code/datums/spells/alien_spells/larva_evolve.dm
+++ /dev/null
@@ -1,49 +0,0 @@
-// Make this reflect amount grown, can't do that currently
-/obj/effect/proc_holder/spell/alien_spell/evolve_larva
- name = "Evolve."
- desc = "Evolve into a fully grown Alien."
- action_icon_state = "alien_evolve_larva"
-
-
-/obj/effect/proc_holder/spell/alien_spell/evolve_larva/create_new_targeting()
- return new /datum/spell_targeting/self
-
-
-/obj/effect/proc_holder/spell/alien_spell/evolve_larva/cast(list/targets, mob/living/carbon/alien/larva/user)
- if(user.stat != CONSCIOUS)
- return
-
- if(user.handcuffed || user.legcuffed)
- to_chat(user, "You cannot evolve when you are cuffed.")
- return
-
- if(user.evolution_points < user.max_evolution_points)
- to_chat(user, "You are not fully grown.")
- return
- //green is impossible to read, so i made these blue and changed the formatting slightly
- to_chat(user, "You are growing into a beautiful alien! It is time to choose a caste.")
- to_chat(user, "There are three to choose from:")
- to_chat(user, "Hunters are strong and agile, able to hunt away from the hive and rapidly move through ventilation shafts. Hunters generate plasma slowly and have low reserves.")
- to_chat(user, "Sentinels are tasked with protecting the hive and are deadly up close and at a range. They are not as physically imposing nor fast as the hunters.")
- to_chat(user, "Drones are the working class, offering the largest plasma storage and generation. They are the only caste which may evolve again, turning into the dreaded alien queen.")
- var/static/list/to_evolve = list("Hunter" = image(icon = 'icons/mob/alien.dmi', icon_state = "alienh_running"),
- "Sentinel" = image(icon = 'icons/mob/alien.dmi', icon_state = "aliens_running"),
- "Drone" = image(icon = 'icons/mob/alien.dmi', icon_state = "aliend_running"))
- var/new_xeno = show_radial_menu(user, user, to_evolve, src, radius = 40)
- var/turf/T = user.loc
- if(!new_xeno)
- return
- var/to_spawn
- switch(new_xeno)
- if("Hunter")
- to_spawn = new /mob/living/carbon/alien/humanoid/hunter(T)
- if("Sentinel")
- to_spawn = new /mob/living/carbon/alien/humanoid/sentinel(T)
- if("Drone")
- to_spawn = new /mob/living/carbon/alien/humanoid/drone(T)
- if(user.mind)
- user.mind.transfer_to(to_spawn)
- playsound_xenobuild(user.loc)
- SSblackbox.record_feedback("tally", "alien_growth", 1, "[lowertext(new_xeno)]")
- qdel(user)
-
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 839a3cdf909..d95b87db1f1 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -57,6 +57,40 @@
/datum/status_effect/pacifism/on_remove()
REMOVE_TRAIT(owner, TRAIT_PACIFISM, id)
+/datum/status_effect/fang_exhaust
+ id = "fang_exhaust"
+ alert_type = null
+ duration = 2 SECONDS
+ var/modifier
+
+/datum/status_effect/fang_exhaust/on_creation(mob/living/simple_animal/new_owner, modifier = 1.1)
+ if(!istype(new_owner))
+ return FALSE
+
+ src.modifier = modifier
+ return ..()
+
+/datum/status_effect/fang_exhaust/on_apply()
+ var/mob/living/simple_animal/new_owner = owner
+
+ for(var/thing in new_owner.damage_coeff)
+ if(!new_owner.damage_coeff[thing])
+ continue
+
+ new_owner.damage_coeff[thing] *= modifier
+
+ return ..()
+
+/datum/status_effect/fang_exhaust/on_remove()
+ var/mob/living/simple_animal/new_owner = owner
+
+ for(var/thing in new_owner.damage_coeff)
+ if(!new_owner.damage_coeff[thing])
+ continue
+
+ new_owner.damage_coeff[thing] /= modifier
+
+ return ..()
/datum/status_effect/shadow_boxing
id = "shadow barrage"
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index c36bb358f60..676c181ae90 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -577,6 +577,13 @@ GLOBAL_LIST_INIT(all_supply_groups, list(SUPPLY_EMERGENCY,SUPPLY_SECURITY,SUPPLY
cost = 25 //По 6 за один блокиратор
containername = "sibyl attachments crate"
+/datum/supply_packs/security/armory/fastpouch
+ name = "Fast Pouch Crate"
+ contains = list(/obj/item/storage/pouch/fast,
+ /obj/item/storage/pouch/fast)
+ cost = 100
+ containername = "fast pouch crate"
+
/////// Weapons: Specialist
/datum/supply_packs/security/armory/ballistic
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 27e1753a9cc..4eeac88c353 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -1132,7 +1132,7 @@
name = "50. compact ammo box"
desc = "A box of 50. cal sniper ammo."
item = /obj/item/ammo_box/magazine/sniper_rounds/compact
- cost = 10
+ cost = 5
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
/datum/uplink_item/ammo/revolver
@@ -1618,7 +1618,7 @@
name = "Access Tuner"
desc = "The access tuner is a small device that can interface with airlocks from range. It takes a few seconds to connect and can change the bolt state, open the door, or toggle emergency access."
item = /obj/item/door_remote/omni/access_tuner
- cost = 30
+ cost = 15
/datum/uplink_item/device_tools/toolbox
name = "Fully Loaded Toolbox"
diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm
index e124d06c5f9..19fe3703a74 100644
--- a/code/defines/procs/announce.dm
+++ b/code/defines/procs/announce.dm
@@ -13,6 +13,7 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event
var/announcement_type = "Оповещение"
var/admin_announcement = 0 // Admin announcements are received regardless of being in range of a radio, unless you're in the lobby to prevent metagaming
var/language = LANGUAGE_GALACTIC_COMMON
+ var/beannounced = TRUE
/datum/announcement/New(var/do_log = 0, var/new_sound = null, var/do_newscast = 0)
sound = new_sound
@@ -47,6 +48,8 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event
/datum/announcement/proc/Announce(message as text, new_title = "", new_sound = null, do_newscast = newscast, msg_sanitized = 0, from, msg_language)
if(!message)
return
+ if(!beannounced)
+ return
var/message_title = new_title ? new_title : title
var/message_sound = new_sound ? sound(new_sound) : sound
diff --git a/code/defines/procs/radio.dm b/code/defines/procs/radio.dm
index 3b40d4a311c..c148057462f 100644
--- a/code/defines/procs/radio.dm
+++ b/code/defines/procs/radio.dm
@@ -25,10 +25,3 @@
freq_text = format_frequency(display_freq)
return freq_text
-
-/proc/get_message_server()
- if(GLOB.message_servers)
- for(var/obj/machinery/message_server/MS in GLOB.message_servers)
- if(MS.active)
- return MS
- return null
diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm
index b1fe29dc906..59c373cbed5 100644
--- a/code/game/area/areas/ruins/lavaland.dm
+++ b/code/game/area/areas/ruins/lavaland.dm
@@ -101,6 +101,7 @@
// This area exists so that lavaland ruins dont overwrite the baseturfs on regular space ruins
/area/ruin/unpowered/misc_lavaruin
+ outdoors = FALSE
//'safe' caves
/area/ruin/unpowered/safe_cave
diff --git a/code/game/area/ss13_areas.dm b/code/game/area/ss13_areas.dm
index e954a13cbd8..d1942e2961d 100644
--- a/code/game/area/ss13_areas.dm
+++ b/code/game/area/ss13_areas.dm
@@ -931,6 +931,7 @@ This applies to all STANDARD station areas
/area/maintenance/disposal/external/north
name = "Northern External Waste Belt"
+<<<<<<< HEAD
// Segmenstaation tonels
/area/maintenance/tonel
name = "Maintenance Tonel"
@@ -977,6 +978,54 @@ This applies to all STANDARD station areas
/area/maintenance/tonel/southeast2
name = "Second South-East Maintenance Tonel"
+=======
+// Segmenstaation Tunnels
+/area/maintenance/tunnel
+ name = "Maintenance Tunnel"
+ icon_state = "green"
+
+/area/maintenance/tunnel/west
+ name = "West Maintenance Tunnel"
+
+/area/maintenance/tunnel/west2
+ name = "Second West Maintenance Tunnel"
+
+/area/maintenance/tunnel/south
+ name = "South Maintenance Tunnel"
+
+/area/maintenance/tunnel/south2
+ name = "Second South Maintenance Tunnel"
+
+/area/maintenance/tunnel/north
+ name = "North Maintenance Tunnel"
+
+/area/maintenance/tunnel/north2
+ name = "Second North Maintenance Tunnel"
+
+/area/maintenance/tunnel/northwest
+ name = "North-West Maintenance Tunnel"
+
+/area/maintenance/tunnel/northwest2
+ name = "Second North-West Maintenance Tunnel"
+
+/area/maintenance/tunnel/northeast
+ name = "North-East Maintenance Tunnel"
+
+/area/maintenance/tunnel/northeast2
+ name = "Second North-East Maintenance Tunnel"
+
+/area/maintenance/tunnel/east
+ name = "East Maintenance Tunnel"
+
+/area/maintenance/tunnel/east2
+ name = "Second East Maintenance Tunnel"
+
+/area/maintenance/tunnel/southeast
+ name = "South-East Maintenance Tunnel"
+
+/area/maintenance/tunnel/southeast2
+ name = "Second South-East Maintenance Tunnel"
+>>>>>>> 7b37176792d4632c52e42a22cba6dc41210b6ce3
/area/maintenance/clownscience
icon_state = "clown_office"
@@ -1624,6 +1673,12 @@ This applies to all STANDARD station areas
name = "Chapel Office"
icon_state = "chapeloffice"
+/area/chapel/morgue
+ name = "Chapel Morgue"
+
+/area/chapel/massdriver
+ name = "Chapel Mass Driver"
+
/area/escapepodbay
name = "Escape Shuttle Hallway Podbay"
icon_state = "escape"
@@ -1843,6 +1898,16 @@ This applies to all STANDARD station areas
/area/atmos/mini
name = "Mini Atmospherics"
+/area/engineering/mechanic_workshop/hangar2
+ name = "Satellite General Hangar"
+
+/area/engineering/Generator
+ icon_state = "yellow"
+ name = "Generator room"
+
+/area/atmos/mini
+ name = "Mini Atmospherics"
+
//Solars
/area/solar //i hate this macaroni areas
@@ -2270,7 +2335,7 @@ This applies to all STANDARD station areas
/area/security/visiting_room
name = "Visiting Room"
- icon_state = "visiting-room"
+ icon_state = "red"
/area/security/prisonlockers
name = "Prisoner Lockers"
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index 7351128927e..31320c3799e 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -56,7 +56,7 @@
/////////////////////////// DNA MACHINES
/obj/machinery/dna_scannernew
name = "\improper DNA modifier"
- desc = "It scans DNA structures."
+ desc = "Устройство для сканирования структуры ДНК."
icon = 'icons/obj/machines/cryogenic2.dmi'
icon_state = "scanner_open"
density = TRUE
@@ -72,6 +72,14 @@
var/damage_coeff
var/scan_level
var/precision_coeff
+ ru_names = list(
+ NOMINATIVE = "ДНК-модификатор",
+ GENITIVE = "ДНК-модификатора",
+ DATIVE = "ДНК-модификатору",
+ ACCUSATIVE = "ДНК-модификатор",
+ INSTRUMENTAL = "ДНК-модификатором",
+ PREPOSITIONAL = "ДНК-модификаторе"
+ )
/obj/machinery/dna_scannernew/New()
..()
@@ -143,16 +151,16 @@
if(usr.incapacitated() || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || usr.buckled) //are you cuffed, dying, lying, stunned or other
return
if(!ishuman(usr)) //Make sure they're a mob that has dna
- to_chat(usr, "Try as you might, you can not climb up into the [src].")
+ to_chat(usr, span_notice("Как бы вы не старались, у вас не получится забраться в [declent_ru(ACCUSATIVE)]."))
return
if(occupant)
- to_chat(usr, "The [src] is already occupied!")
+ balloon_alert(usr, "занято!")
return
if(usr.abiotic())
- to_chat(usr, "Subject cannot have abiotic items on.")
+ balloon_alert(usr, "руки заняты")
return
if(usr.has_buckled_mobs()) //mob attached to us
- to_chat(usr, "[usr] will not fit into the [src] because [usr.p_they()] [usr.p_have()] a slime latched onto [usr.p_their()] head.")
+ to_chat(usr, span_warning("[usr] не поместится в [declent_ru(ACCUSATIVE)], пока на [genderize_ru(usr, "нём", "ней", "нём", "них")] сидит слайм."))
return
usr.forceMove(src)
occupant = usr
@@ -180,21 +188,21 @@
if(!istype(user.loc, /turf) || !istype(O.loc, /turf)) // are you in a container/closet/pod/etc?
return
if(occupant)
- to_chat(user, "The [src] is already occupied!")
+ balloon_alert(user, "занято")
return TRUE
var/mob/living/L = O
if(!istype(L) || L.buckled)
return
if(L.abiotic())
- to_chat(user, "Subject cannot have abiotic items on.")
+ balloon_alert(user, "руки заняты")
return TRUE
if(L.has_buckled_mobs()) //mob attached to us
- to_chat(user, "[L] will not fit into [src] because [L.p_they()] [L.p_have()] a slime latched onto [L.p_their()] head.")
+ to_chat(user, span_warning("[L] не помест[pluralize_ru(L, "ит", "ят")]ся в [declent_ru(ACCUSATIVE)], пока на [genderize_ru(L, "нём", "ней", "нём", "них")] сидит слайм."))
return TRUE
if(L == user)
- visible_message("[user] climbs into the [src].")
+ visible_message("[user] забира[pluralize_ru(user, "ет", "ют")]ся в [declent_ru(ACCUSATIVE)].")
else
- visible_message("[user] puts [L.name] into the [src].")
+ visible_message("[user] помеща[pluralize_ru(user, "ет", "ют")] [L.name] в [declent_ru(ACCUSATIVE)].")
put_in(L)
return TRUE
@@ -209,15 +217,15 @@
if(istype(I, /obj/item/reagent_containers/glass))
add_fingerprint(user)
if(beaker)
- to_chat(user, span_warning("A beaker is already loaded into the machine."))
+ balloon_alert(user, "внутри есть ёмкость")
return ATTACK_CHAIN_PROCEED
if(!user.drop_transfer_item_to_loc(I, src))
return ..()
beaker = I
SStgui.update_uis(src)
user.visible_message(
- span_notice("[user] inserts [I] into [src]!"),
- span_notice("You insert [I] to [src]!"),
+ span_notice("[user] помеща[pluralize_ru(user, "ет", "ют")] [I] в [declent_ru(ACCUSATIVE)]."),
+ span_notice("Вы помещаете [I] в [declent_ru(ACCUSATIVE)]."),
)
return ATTACK_CHAIN_BLOCKED_ALL
@@ -229,17 +237,17 @@
if(grabber.grab_state < GRAB_AGGRESSIVE || !ismob(grabbed_thing))
return .
if(panel_open)
- to_chat(grabber, span_warning("Close the maintenance panel first."))
+ balloon_alert(grabber, "закройте панель")
return .
var/mob/target = grabbed_thing
if(occupant)
- to_chat(grabber, span_warning("[src] is already occupied!"))
+ balloon_alert(grabber, "занято!")
return .
if(target.abiotic())
- to_chat(grabber, span_warning("Subject cannot have abiotic items on."))
+ to_chat(grabber, span_warning("Субъект не должен ничего держать в руках."))
return .
if(target.has_buckled_mobs()) //mob attached to us
- to_chat(grabber, span_warning("[target] will not fit into the [src] because [target.p_they()] [target.p_have()] a slime latched onto [target.p_their()] head."))
+ to_chat(grabber, span_warning("[target] не помест[pluralize_ru(target, "ит", "ят")]ся в [declent_ru(ACCUSATIVE)], пока на [genderize_ru(target, "нём", "ней", "нём", "них")] сидит слайм."))
return .
put_in(target)
add_fingerprint(grabber)
@@ -253,7 +261,7 @@
/obj/machinery/dna_scannernew/screwdriver_act(mob/user, obj/item/I)
if(occupant)
- to_chat(user, "The maintenance panel is locked.")
+ balloon_alert(user, "панель заблокирована")
return TRUE
if(default_deconstruction_screwdriver(user, "[icon_state]_maintenance", "[initial(icon_state)]", I))
return TRUE
@@ -280,11 +288,11 @@
/obj/machinery/dna_scannernew/proc/go_out(mob/user, force)
if(!occupant)
if(user)
- to_chat(user, "The scanner is empty!")
+ balloon_alert(user, "сканер пуст!")
return
if(locked && !force)
if(user)
- to_chat(user, "The scanner is locked!")
+ balloon_alert(user, "сканер заблокирован!")
return
occupant.forceMove(loc)
occupant = null
@@ -315,14 +323,14 @@
if(HAS_TRAIT(occupant, TRAIT_NO_DNA))
return TRUE
- var/radiation_protection = occupant.run_armor_check(null, "rad", "Your clothes feel warm.", "Your clothes feel warm.")
+ var/radiation_protection = occupant.run_armor_check(null, "rad", "Ваша одежда кажется теплой.", "Ваша одежда кажется теплой.")
if(radiation_protection > NEGATE_MUTATION_THRESHOLD)
return TRUE
return FALSE
/obj/machinery/computer/scan_consolenew
name = "\improper DNA Modifier access console"
- desc = "Allows you to scan and modify DNA."
+ desc = "Устройство позволяет сканировать и изменять ДНК."
icon = 'icons/obj/machines/computer.dmi'
icon_screen = "dna"
icon_keyboard = "med_key"
@@ -346,20 +354,28 @@
use_power = IDLE_POWER_USE
idle_power_usage = 10
active_power_usage = 400
+ ru_names = list(
+ NOMINATIVE = "Консоль доступа ДНК-модификатора",
+ GENITIVE = "Консоли доступа ДНК-модификатора",
+ DATIVE = "Консоли доступа ДНК-модификатора",
+ ACCUSATIVE = "Консоль доступа ДНК-модификатора",
+ INSTRUMENTAL = "Консолью доступа ДНК-модификатора",
+ PREPOSITIONAL = "Консоли доступа ДНК-модификатора"
+ )
/obj/machinery/computer/scan_consolenew/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/disk/data)) //INSERT SOME diskS
add_fingerprint(user)
if(disk)
- to_chat(user, "There is already [disk] inserted.")
+ balloon_alert(user, "диск уже вставлен")
return ATTACK_CHAIN_PROCEED
if(!user.drop_transfer_item_to_loc(I, src))
return ..()
disk = I
user.visible_message(
- span_notice("[user] inserts [I.name] into [src]."),
- span_notice("You insert [I.name] into [src]."),
+ span_notice("[user] вставля[pluralize_ru(user, "ет", "ют")] [I.name] в [declent_ru(ACCUSATIVE)]."),
+ span_notice("Вы вставляете [I.name] в [declent_ru(ACCUSATIVE)]."),
)
SStgui.update_uis(src)
return ATTACK_CHAIN_BLOCKED_ALL
diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm
index 091842436c0..3e17d60509f 100644
--- a/code/game/dna/genes/disabilities.dm
+++ b/code/game/dna/genes/disabilities.dm
@@ -10,10 +10,10 @@
name = "DISABILITY"
/// Activation message
- var/activation_message = ""
+ var/list/activation_message
/// Yay, you're no longer growing 3 arms
- var/deactivation_message = ""
+ var/list/deactivation_message
/datum/dna/gene/disability/can_activate(mob/living/mutant, flags)
@@ -22,24 +22,26 @@
/datum/dna/gene/disability/activate(mob/living/mutant, flags)
. = ..()
- if(activation_message)
- to_chat(mutant, span_warning("[activation_message]"))
+ if(length(activation_message))
+ var/msg = pick(activation_message)
+ to_chat(mutant, span_warning("[msg]"))
else
testing("[name] has no activation message.")
/datum/dna/gene/disability/deactivate(mob/living/mutant, flags)
. = ..()
- if(deactivation_message)
- to_chat(mutant, span_warning("[deactivation_message]"))
+ if(length(deactivation_message))
+ var/msg = pick(deactivation_message)
+ to_chat(mutant, span_warning("[msg]"))
else
testing("[name] has no deactivation message.")
/datum/dna/gene/disability/hallucinate
name = "Hallucinate"
- activation_message = "Your mind says 'Hello'."
- deactivation_message = "Sanity returns. Or does it?"
+ activation_message = list("Ваш разум говорит: «Привет!».")
+ deactivation_message = list("Здравомыслие возвращается. Или нет?")
instability = -GENE_INSTABILITY_MODERATE
@@ -56,8 +58,8 @@
/datum/dna/gene/disability/epilepsy
name = "Epilepsy"
- activation_message = "You get a headache."
- deactivation_message = "Your headache is gone, at last."
+ activation_message = list("У вас разболелась голова.")
+ deactivation_message = list("Ваша голова перестала болеть. Наконец-то!")
instability = -GENE_INSTABILITY_MODERATE
@@ -68,15 +70,15 @@
/datum/dna/gene/disability/epilepsy/OnMobLife(mob/living/carbon/human/H)
if((prob(1) && H.AmountParalyzed() < 2 SECONDS))
- H.visible_message("[H] starts having a seizure!","You have a seizure!")
+ H.visible_message(span_danger("[H] начина[pluralize_ru(H.gender, "ет", "ют")] биться в припадке!"), span_alert("У вас припадок!"))
H.Paralyse(20 SECONDS)
H.Jitter(2000 SECONDS)
/datum/dna/gene/disability/cough
name = "Coughing"
- activation_message = "You start coughing."
- deactivation_message = "Your throat stops aching."
+ activation_message = list("Вы начинаете кашлять.")
+ deactivation_message = list("Ваше горло перестало болеть.")
instability = -GENE_INSTABILITY_MINOR
@@ -93,8 +95,8 @@
/datum/dna/gene/disability/clumsy
name = "Clumsiness"
- activation_message = "You feel lightheaded."
- deactivation_message = "You regain some control of your movements"
+ activation_message = list("Вы чувствуете лёгкое головокружение.")
+ deactivation_message = list("Вы вновь обретаете контроль над своими движениями.")
instability = -GENE_INSTABILITY_MINOR
traits_to_add = list(TRAIT_CLUMSY)
@@ -106,8 +108,8 @@
/datum/dna/gene/disability/tourettes
name = "Tourettes"
- activation_message = "You twitch."
- deactivation_message = "Your mouth tastes like soap."
+ activation_message = list("Нахлынула какая-то непонятная дрожь...")
+ deactivation_message = list("Вы чувствуете вкус мыла во рту.")
instability = -GENE_INSTABILITY_MODERATE
@@ -134,8 +136,8 @@
/datum/dna/gene/disability/nervousness
name = "Nervousness"
- activation_message="You feel nervous."
- deactivation_message ="You feel much calmer."
+ activation_message = list("Вы начинаете нервничать.")
+ deactivation_message = list("Вы чувствуете себя гораздо спокойнее.")
/datum/dna/gene/disability/nervousness/New()
@@ -150,8 +152,8 @@
/datum/dna/gene/disability/blindness
name = "Blindness"
- activation_message = "You can't seem to see anything."
- deactivation_message = "You can see now, in case you didn't notice..."
+ activation_message = list("Видимо, вы больше ничего не видите.")
+ deactivation_message = list("Теперь вы можете видеть, если вдруг не заметили...")
instability = -GENE_INSTABILITY_MAJOR
traits_to_add = list(TRAIT_BLIND)
@@ -173,8 +175,8 @@
/datum/dna/gene/disability/colourblindness
name = "Colourblindness"
- activation_message = "You feel a peculiar prickling in your eyes while your perception of colour changes."
- deactivation_message ="Your eyes tingle unsettlingly, though everything seems to become alot more colourful."
+ activation_message = list("Вы чувствуете странное покалывание в глазах. Ваше восприятие цвета меняется.")
+ deactivation_message = list("Вы чувствуете неприятное покалывание в глазах, но все вокруг вновь обрело краски.")
instability = -GENE_INSTABILITY_MODERATE
traits_to_add = list(TRAIT_COLORBLIND)
@@ -198,8 +200,8 @@
/datum/dna/gene/disability/deaf
name = "Deafness"
- activation_message="It's kinda quiet."
- deactivation_message ="You can hear again!"
+ activation_message = list("Здесь как-то тихо...")
+ deactivation_message = list("Вы снова можете слышать!")
instability = -GENE_INSTABILITY_MAJOR
traits_to_add = list(TRAIT_DEAF)
@@ -211,8 +213,8 @@
/datum/dna/gene/disability/nearsighted
name = "Nearsightedness"
- activation_message="Your eyes feel weird..."
- deactivation_message ="You can see clearly now"
+ activation_message = list("Всё вокруг начинает размываться...")
+ deactivation_message = list("Теперь вы можете ясно видеть.")
instability = -GENE_INSTABILITY_MODERATE
traits_to_add = list(TRAIT_NEARSIGHTED)
@@ -234,9 +236,9 @@
/datum/dna/gene/disability/lisp
name = "Lisp"
- desc = "I wonder wath thith doeth."
- activation_message = "Thomething doethn't feel right."
- deactivation_message = "You now feel able to pronounce consonants."
+ desc = "Интерефно, фто это делает."
+ activation_message = list("Фто-то тошно не тах.")
+ deactivation_message = list("Теперь вы можете произносить согласные.")
/datum/dna/gene/disability/lisp/New()
@@ -250,9 +252,9 @@
/datum/dna/gene/disability/comic
name = "Comic"
- desc = "This will only bring death and destruction."
- activation_message = "Uh oh!"
- deactivation_message = "Well thank god that's over with."
+ desc = "Это принесет только смерть и разрушение."
+ activation_message = list(span_sans("Ой-йо!"))
+ deactivation_message = list("Слава Святой Хонкоматери, с этим покончено.")
traits_to_add = list(TRAIT_COMIC)
@@ -263,9 +265,9 @@
/datum/dna/gene/disability/wingdings
name = "Alien Voice"
- desc = "Garbles the subject's voice into an incomprehensible speech."
- activation_message = "Your vocal cords feel alien."
- deactivation_message = "Your vocal cords no longer feel alien."
+ desc = "Искажает голос субъекта, превращая его в непонятную речь."
+ activation_message = list(span_wingdings("Vashi golosovyye svyazki kazhutsya chuzhimi."))
+ deactivation_message = list("Ваши голосовые связки больше не кажутся инородными.")
instability = -GENE_INSTABILITY_MINOR
traits_to_add = list(TRAIT_WINGDINGS)
@@ -300,9 +302,9 @@
/datum/dna/gene/disability/weak
name = "Weak"
- desc = "Делает мышцы цели более слабыми."
- activation_message = "Вы чуствуете слабость в своих мышцах."
- deactivation_message = "Похоже, ваши мышцы снова в норме."
+ desc = "Делает мышцы субъекта более слабыми."
+ activation_message = list("Вы чувствуете внезапную слабость в мышцах.")
+ deactivation_message = list("Вы снова ощущаете силу в мышцах.")
instability = -GENE_INSTABILITY_MODERATE
traits_to_add = list(TRAIT_GENE_WEAK)
@@ -376,8 +378,8 @@
/datum/dna/gene/disability/paraplegia
name = "Paraplegia"
desc = "Парализует мышцы ног."
- activation_message = "Вы не чуствуете своих ног."
- deactivation_message = "Вы возвращаете контроль над ногами."
+ activation_message = list("Вы не чувствуете своих ног.")
+ deactivation_message = list("Вы возвращаете контроль над ногами.")
instability = -GENE_INSTABILITY_MAJOR
traits_to_add = list(TRAIT_FLOORED)
diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm
index 75747847c11..09aa99ea9fc 100644
--- a/code/game/dna/genes/goon_disabilities.dm
+++ b/code/game/dna/genes/goon_disabilities.dm
@@ -9,9 +9,9 @@
// WAS: /datum/bioEffect/mute
/datum/dna/gene/disability/mute
name = "Mute"
- desc = "Completely shuts down the speech center of the subject's brain."
- activation_message = "You feel unable to express yourself at all."
- deactivation_message = "You feel able to speak freely again."
+ desc = "Полностью отключает речевой центр у мозга субъекта."
+ activation_message = list("Вы чувствуете, что потеряли способность к самовыражению.")
+ deactivation_message = list("Вы чувствуете, что вновь можете говорить свободно.")
instability = -GENE_INSTABILITY_MODERATE
traits_to_add = list(TRAIT_MUTE)
@@ -30,9 +30,9 @@
/datum/dna/gene/disability/radioactive
name = "Radioactive"
- desc = "The subject suffers from constant radiation sickness and causes the same on nearby organics."
- activation_message = "You feel a strange sickness permeate your whole body."
- deactivation_message = "You no longer feel awful and sick all over."
+ desc = "Субъект страдает от постоянной лучевой болезни и вызывает такую же у близлежащей органики."
+ activation_message = list("Вы чувствуете, как странное недомогание пронизывает всё ваше тело.")
+ deactivation_message = list("Вы больше не чувствуете себя ужасно больным.")
instability = -GENE_INSTABILITY_MAJOR
@@ -51,7 +51,7 @@
var/radiation_amount = abs(min(mutant.radiation - 20, 0))
mutant.apply_effect(radiation_amount, IRRADIATE)
for(var/mob/living/victim in (view(1, get_turf(src)) - src))
- to_chat(victim, span_danger("You are enveloped by a soft green glow emanating from [mutant]."))
+ to_chat(victim, span_danger("Вас окутывает мягкое зелёное свечение, исходящее от [mutant]."))
victim.apply_effect(5, IRRADIATE)
@@ -66,9 +66,9 @@
// WAS: /datum/bioEffect/fat
/datum/dna/gene/disability/obesity
name = "Obesity"
- desc = "Greatly slows the subject's metabolism, enabling greater buildup of lipid tissue."
- activation_message = "You feel blubbery and lethargic!"
- deactivation_message = "You feel fit!"
+ desc = "Сильно замедляет метаболизм, способствуя ожирению."
+ activation_message = list("Вы чувствуете себя толстым и ленивым!")
+ deactivation_message = list("Вы чувствуете себя в хорошей форме!")
instability = -GENE_INSTABILITY_MINOR
traits_to_add = list(TRAIT_OBESITY)
@@ -81,10 +81,10 @@
// WAS: /datum/bioEffect/chav
// WAS: /datum/dna/gene/disability/speech/chav
/datum/dna/gene/disability/speech/auld_imperial
- name = "Староимпѣрская рѣчь"
+ name = "Old Imperial speech"
desc = "Заставляет языковой центра мозга субъекта произносить слова на староимперский манер."
- activation_message = "Охъ, где бы отвѣдать мягкихъ ѳранцузскихъ булокъ, да выпить ароматнаго чаю глоточекъ?"
- deactivation_message = "Изысканность вашей речи улетучивается, как запах дорогих духов… Блядь."
+ activation_message = list("Охъ, где бы отвѣдать мягкихъ ѳранцузскихъ булокъ, да выпить ароматнаго чаю глоточекъ?")
+ deactivation_message = list("Изысканность вашей речи улетучивается, как запах дорогих духов… Блядь.")
// Слова для замены
var/static/list/low_cultural_words = list(
"бля"="ох", "блядь"="ох", "башка"="голова", "башке"="голове", "башку"="голову", "бошка"="голова", "бошке"="голове", "бошку"="голову", "дебил"="остолоп", "ёбаный"="проклятый", "ёбаные"="проклятые", "ёбаных"="проклятых", "ёбаная"="проклятая", "ёбаное"="проклятое", "ебаный"="проклятый", "ебаные"="проклятые", "ебаных"="проклятых", "ебаная"="проклятая", "ебаное"="проклятое", "ебучий"="проклятый", "ебучие"="проклятые", "ебучих"="проклятых", "ебучая"="проклятая", "ебучее"="проклятое", "до пизды"="всё равно", "до жопы"="много", "дохуя"="очень много", "дура"="глупышка", "дуре"="глупышке", "дурой"="глупышкой", "дуру"="глупышку", "дурак"="болван", "жопа"="попа", "жопы"="попы", "идиот"="шельмец", "мразь"="мерзавец", "мудак"="подлец", "нахуй"="к чёрту", "нахуя"="зачем", "наёбщик"="плут", "наёбывать"="плутовать", "нихуя"="ничего", "охуел"="поражён", "охуела"="поражена", "охуевать"="поражаться", "охуеваю"="поражаюсь", "охуеваешь"="поражаетесь", "охуеваете"="поражаетесь", "охуевает"="поражается", "охуевают"="поражаются", "пидарас"="безобразник", "пидараса"="безобразника", "пидарасе"="безобразнике", "пидарасу"="безобразнику", "пидарасом"="безобразником", "пидарасы"="безобразники", "пидор"="безобразник", "пидора"="безобразника", "пидоре"="безобразнике", "пидору"="безобразнику", "пидором"="безобразником", "пидоры"="безобразники", "пидар"="безобразник", "пидара"="безобразника", "пидаре"="безобразнике", "пидару"="безобразнику", "пидаром"="безобразником", "пидары"="безобразники", "пиздец"="провал", "срочник"="недотёпа", "срочники"="недотёпы", "срочникам"="недотёпам", "срочников"="недотёп", "пиздеца"="провала", "пиздеце"="провале", "пиздецом"="провалом", "писец"="провал", "сдох"="погиб", "сдыхать"="погибать", "сдыхаю"="гибну", "сдыхает"="гибнет", "сдыхают"="гибнут", "сдохну"="погибну", "сдохнуть"="погибнуть", "сдохла"="погибла", "сдохло"="погибло", "сдохли"="погибли", "говно"="дрянь", "похуй"="жаль", "СБ"="охрана", "АВД"="агент", "ПНТ"="представитель", "НТР"="представитель", "варден"="смотритель", "КМ"="квартирмейстер", "кэп"="капитан", "кэпа"="капитана", "кэпе"="капитане", "кэпу"="капитану", "кэпом"="капитаном", "сука"="шельма", "суке"="шельме", "суки"="шельмы", "сукой"="шельмой", "схуяли"="почему", "твое"="Ваше", "твои"="Ваши", "твоими"="Вашими", "твоих"="Ваших", "твой"="Ваш", "твоя"="Ваша", "твоё"="Ваше", "тебе"="Вам", "тебя"="Вас", "тобой"="Вами", "тупой"="недоумок", "тупого"="недоумка", "тупому"="недоумку", "тупом"="недоумке", "тупым"="недоумком", "ты"="Вы", "урод"="голубчик", "урода"="голубчика", "уроду"="голубчику", "уроде"="голубчике", "уродом"="голубчиком", "хуй там"="отнюдь", "срочно"="поскорее", "отпиздить"="побить", "пиздить"="избивать", "пиздят"="избивают", "ебут"="избивают", "ебать"="бить", "заебало"="опротивело", "чел"="сударь", "чела"="сударя", "челе"="сударе", "челу"="сударю", "челом"="сударем", "челам"="сударям", "челы"="судари", "челик"="сударь", "челика"="сударя", "челике"="сударе", "челику"="сударю", "челиком"="сударем", "челикам"="сударям", "челики"="судари", "мужик"="мещанин", "мужика"="мещанина", "мужике"="мещанине", "мужику"="мещанину", "мужиком"="мещанином", "мужикам"="мещанам", "мужики"="мещане", "бомж"="юродивый", "бомжа"="юродивого", "бомже"="юродивом", "бомжу"="юродивому", "бомжом"="юродивым", "бомжам"="юродивым", "бомжи"="юродивые", "шлюха"="куртизанка", "даун"="глупыш",
@@ -190,10 +190,10 @@
// WAS: /datum/bioEffect/swedish
/datum/dna/gene/disability/speech/swedish
- name = "Шведский акцент"
+ name = "Swedish accent"
desc = "Заставляет языковой центра мозга субъекта произносить слова на скандинавский манер."
- activation_message = "Вы ощущаете внутреннюю шведскость. Кажется, сработало."
- deactivation_message = "Внутреннее ощущение шведскости проходит."
+ activation_message = list("Вы ощущаете внутреннюю шведскость. Кажется, сработало.")
+ deactivation_message = list("Внутреннее ощущение шведскости проходит.")
/datum/dna/gene/disability/speech/swedish/New()
@@ -244,9 +244,9 @@
// WAS: /datum/bioEffect/unintelligable
/datum/dna/gene/disability/unintelligable
name = "Unintelligable"
- desc = "Heavily corrupts the part of the brain responsible for forming spoken sentences."
- activation_message = "You can't seem to form any coherent thoughts!"
- deactivation_message = "Your mind feels more clear."
+ desc = "Сильно повреждает часть мозга, отвечающую за формирование разговорных предложений."
+ activation_message = list("Мысли чувствуете что не вы можете формулировать ясно!")
+ deactivation_message = list("Ваши мысли становятся более ясными.")
instability = -GENE_INSTABILITY_MINOR
@@ -286,9 +286,9 @@
// WAS: /datum/bioEffect/horns
/datum/dna/gene/disability/horns
name = "Horns"
- desc = "Enables the growth of a compacted keratin formation on the subject's head."
- activation_message = "A pair of horns erupt from your head."
- deactivation_message = "Your horns crumble away into nothing."
+ desc = "Обеспечивает рост уплотнённого кератинового образования на голове субъекта."
+ activation_message = list("Из вашей головы вырываются рога.")
+ deactivation_message = list("Ваши рога рассыпаются в прах.")
/datum/dna/gene/disability/horns/New()
@@ -304,9 +304,9 @@
// WAS: /datum/bioEffect/immolate
/datum/dna/gene/basic/grant_spell/immolate
name = "Incendiary Mitochondria"
- desc = "The subject becomes able to convert excess cellular energy into thermal energy."
- activation_messages = list("You suddenly feel rather hot.")
- deactivation_messages = list("You no longer feel uncomfortably hot.")
+ desc = "Субъект приобретает способность преобразовывать избыточную клеточную энергию в тепловую."
+ activation_messages = list("Вам вдруг становится очень жарко.")
+ deactivation_messages = list("Вы больше не чувствуете дискомфортного жара.")
spelltype = /obj/effect/proc_holder/spell/immolate
@@ -317,7 +317,7 @@
/obj/effect/proc_holder/spell/immolate
name = "Incendiary Mitochondria"
- desc = "The subject becomes able to convert excess cellular energy into thermal energy."
+ desc = "Субъект приобретает способность преобразовывать избыточную клеточную энергию в тепловую."
base_cooldown = 60 SECONDS
clothes_req = FALSE
stat_allowed = CONSCIOUS
@@ -332,7 +332,7 @@
/obj/effect/proc_holder/spell/immolate/cast(list/targets, mob/living/user = usr)
var/mob/living/carbon/L = user
L.adjust_fire_stacks(0.5)
- L.visible_message("[L.name] suddenly bursts into flames!")
+ L.visible_message(span_danger("[L.name] внезапно вспыхива[pluralize_ru(L.gender, "ет", "ют")] пламенем!"))
L.IgniteMob()
playsound(L.loc, 'sound/effects/bamf.ogg', 50, 0)
diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 06a419e59a5..313db2a819a 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -3,8 +3,8 @@
// WAS: /datum/bioEffect/alcres
/datum/dna/gene/basic/sober
name = "Sober"
- activation_messages = list("You feel unusually sober.")
- deactivation_messages = list("You feel like you could use a stiff drink.")
+ activation_messages = list("Вы чувствуете себя необычайно трезвым.")
+ deactivation_messages = list("Вы чувствуете, что вам не помешает крепкий напиток.")
traits_to_add = list(TRAIT_SOBER)
@@ -16,9 +16,9 @@
//WAS: /datum/bioEffect/psychic_resist
/datum/dna/gene/basic/psychic_resist
name = "Psy-Resist"
- desc = "Boosts efficiency in sectors of the brain commonly associated with meta-mental energies."
- activation_messages = list("Your mind feels closed.")
- deactivation_messages = list("You feel oddly exposed.")
+ desc = "Повышает эффективность работы секторов мозга, обычно связанных с мета-психическими энергиями."
+ activation_messages = list("Ваш разум кажется закрытым.")
+ deactivation_messages = list("Вы чувствуете себя незащищенным.")
traits_to_add = list(TRAIT_PSY_RESIST)
@@ -43,9 +43,9 @@
// WAS: /datum/bioEffect/darkcloak
/datum/dna/gene/basic/stealth/darkcloak
name = "Cloak of Darkness"
- desc = "Enables the subject to bend low levels of light around themselves, creating a cloaking effect."
- activation_messages = list("You begin to fade into the shadows.")
- deactivation_messages = list("You become fully visible.")
+ desc = "Позволяет субъекту излучать вокруг себя слабое свечение, создавая эффект маскировки."
+ activation_messages = list("Вы начинаете исчезать в тени.")
+ deactivation_messages = list("Вы становитесь полностью видимым.")
activation_prob = 25
@@ -68,9 +68,9 @@
//WAS: /datum/bioEffect/chameleon
/datum/dna/gene/basic/stealth/chameleon
name = "Chameleon"
- desc = "The subject becomes able to subtly alter light patterns to become invisible, as long as they remain still."
- activation_messages = list("You feel one with your surroundings.")
- deactivation_messages = list("You feel oddly visible.")
+ desc = "Субъект обретает способность тонко изменять структуру света, чтобы оставаться невидимым до тех пор, пока он остается неподвижным."
+ activation_messages = list("Вы чувствуете себя единым целым с окружающим миром.")
+ deactivation_messages = list("Вы чувствуете себя необычайно заметным.")
activation_prob = 25
@@ -121,9 +121,9 @@
// WAS: /datum/bioEffect/cryokinesis
/datum/dna/gene/basic/grant_spell/cryo
name = "Cryokinesis"
- desc = "Allows the subject to lower the body temperature of others."
- activation_messages = list("You notice a strange cold tingle in your fingertips.")
- deactivation_messages = list("Your fingers feel warmer.")
+ desc = "Позволяет субъекту понижать температуру тела окружающих."
+ activation_messages = list("Ваши кончики пальцев слегка покалывает от холода.")
+ deactivation_messages = list("Ваши пальцы становятся теплее.")
instability = GENE_INSTABILITY_MODERATE
spelltype = /obj/effect/proc_holder/spell/cryokinesis
@@ -135,13 +135,13 @@
/obj/effect/proc_holder/spell/cryokinesis
name = "Cryokinesis"
- desc = "Drops the bodytemperature of another person."
+ desc = "Понижает температуру тела выбранного гуманоида."
base_cooldown = 120 SECONDS
clothes_req = FALSE
stat_allowed = CONSCIOUS
- selection_activated_message = "Your mind grow cold. Click on a target to cast the spell."
- selection_deactivated_message = "Your mind returns to normal."
+ selection_activated_message = span_notice("Ваш разум становится холодным. Нажмите на цель, чтобы произнести заклинание.")
+ selection_deactivated_message = span_notice("Ваш разум возвращается в нормальное состояние.")
var/list/compatible_mobs = list(/mob/living/carbon/human)
@@ -164,7 +164,7 @@
var/mob/living/carbon/C = targets[1]
if(HAS_TRAIT(C, TRAIT_RESIST_COLD))
- C.visible_message("A cloud of fine ice crystals engulfs [C.name], but disappears almost instantly!")
+ C.visible_message(span_warning("Облако мелких ледяных кристаллов окутывает [C.name], но почти мгновенно исчезает!"))
return
var/handle_suit = FALSE
if(ishuman(C))
@@ -173,11 +173,11 @@
if(istype(H.wear_suit, /obj/item/clothing/suit/space))
handle_suit = TRUE
if(H.internal)
- H.visible_message("[user] sprays a cloud of fine ice crystals, engulfing [H]!",
- "[user] sprays a cloud of fine ice crystals over your [H.head]'s visor.")
+ H.visible_message(span_warning("[user] распыля[pluralize_ru(user, "ет", "ют")] облако мелких ледяных кристаллов, сковывая [H]!"),
+ span_notice("[user] распыля[pluralize_ru(user, "ет", "ют")] облако мелких кристалликов льда на визор вашего [H.head]."))
else
- H.visible_message("[user] sprays a cloud of fine ice crystals engulfing, [H]!",
- "[user] sprays a cloud of fine ice crystals cover your [H.head]'s visor and make it into your air vents!.")
+ H.visible_message(span_warning("[user] распыля[pluralize_ru(user, "ет", "ют")] облако мелких кристаллов льда, поглощая [H]!"),
+ span_warning("[user] распыля[pluralize_ru(user, "ет", "ют")] облако мелких ледяных кристаллов, которые покрывают визор вашего [H.head] и попадают в вентиляционные отверстия!"))
H.adjust_bodytemperature(-100)
add_attack_logs(user, C, "Cryokinesis")
@@ -185,7 +185,7 @@
C.adjust_bodytemperature(-200)
C.ExtinguishMob()
- C.visible_message("[user] sprays a cloud of fine ice crystals, engulfing [C]!")
+ C.visible_message(span_warning("[user] распыля[pluralize_ru(user, "ет", "ют")] облако мелких ледяных кристаллов, поглощая [C]!"))
add_attack_logs(user, C, "Cryokinesis- NO SUIT/INTERNALS")
@@ -211,9 +211,9 @@
// WAS: /datum/bioEffect/mattereater
/datum/dna/gene/basic/grant_spell/mattereater
name = "Matter Eater"
- desc = "Allows the subject to eat just about anything without harm."
- activation_messages = list("You feel hungry.")
- deactivation_messages = list("You don't feel quite so hungry anymore.")
+ desc = "Позволяет без вреда для здоровья есть практически что-угодно."
+ activation_messages = list("Вы чувствуете голод.")
+ deactivation_messages = list("Вы больше не чувствуете себя таким голодным.")
instability = GENE_INSTABILITY_MINOR
spelltype = /obj/effect/proc_holder/spell/eat
@@ -225,7 +225,7 @@
/obj/effect/proc_holder/spell/eat
name = "Eat"
- desc = "Eat just about anything!"
+ desc = "Ешьте всё подряд!"
base_cooldown = 30 SECONDS
@@ -248,7 +248,7 @@
var/mob/living/carbon/C = user
if((C.head && (C.head.flags_cover & HEADCOVERSMOUTH)) || (C.wear_mask && (C.wear_mask.flags_cover & MASKCOVERSMOUTH) && !C.wear_mask.up))
if(show_message)
- to_chat(C, "Your mouth is covered, preventing you from eating!")
+ balloon_alert(C, "рот чем-то закрыт!")
can_eat = FALSE
return can_eat
@@ -277,7 +277,7 @@
/obj/effect/proc_holder/spell/eat/cast(list/targets, mob/user = usr)
if(!targets.len)
- to_chat(user, "No target found in range.")
+ balloon_alert(user, "слишком далеко")
return
var/atom/movable/the_item = targets[1]
@@ -285,38 +285,38 @@
var/mob/living/carbon/human/H = the_item
var/obj/item/organ/external/limb = H.get_organ(user.zone_selected)
if(!istype(limb))
- to_chat(user, "You can't eat this part of them!")
+ to_chat(user, span_warning("Вы не можете съесть эту часть тела!"))
revert_cast()
return FALSE
if(istype(limb,/obj/item/organ/external/head))
// Bullshit, but prevents being unable to clone someone.
- to_chat(user, "You try to put \the [limb] in your mouth, but [the_item.p_their()] ears tickle your throat!")
+ to_chat(user, span_warning("Вы пытаетесь засунуть голову в свой рот, но у вас ничего не получается!"))
revert_cast()
return FALSE
if(istype(limb,/obj/item/organ/external/chest))
// Bullshit, but prevents being able to instagib someone.
- to_chat(user, "You try to put [the_item.p_their()] [limb] in your mouth, but it's too big to fit!")
+ to_chat(user, span_warning("Вы пытаетесь уместить туловище у себя во рту, но у вас ничего не получается!"))
revert_cast()
return FALSE
- user.visible_message("[user] begins stuffing [the_item]'s [limb.name] into [user.p_their()] gaping maw!")
+ user.visible_message(span_danger("[user] приближа[pluralize_ru(user, "ет", "ют")]ся к [the_item] и начина[pluralize_ru(user, "ет", "ют")] поглощать [limb.name]!"))
var/oldloc = H.loc
if(!do_after(user, EAT_MOB_DELAY, H, NONE))
- to_chat(user, "You were interrupted before you could eat [the_item]!")
+ balloon_alert(user, "вас прервали")
else
if(!limb || !H)
return
if(H.loc != oldloc)
- to_chat(user, "\The [limb] moved away from your mouth!")
+ to_chat(user, span_danger("Вы упустили [limb]!"))
return
- user.visible_message("[user] [pick("chomps","bites")] off [the_item]'s [limb]!")
+ user.visible_message(span_danger("[user] [pick("отрыва[pluralize_ru(user, "ет", "ют")]","откусыва[pluralize_ru(user, "ет", "ют")]")] [limb] от [the_item]!"))
playsound(user.loc, 'sound/items/eatfood.ogg', 50, 0)
limb.droplimb(0, DROPLIMB_SHARP)
doHeal(user)
else
- user.visible_message("[user] eats \the [the_item].")
+ user.visible_message(span_danger("[user] [pick("съеда[pluralize_ru(user, "ет", "ют")]","поглоща[pluralize_ru(user, "ет", "ют")]")] [the_item]."))
playsound(user.loc, 'sound/items/eatfood.ogg', 50, 0)
qdel(the_item)
doHeal(user)
@@ -327,10 +327,10 @@
//WAS: /datum/bioEffect/jumpy
/datum/dna/gene/basic/grant_spell/jumpy
name = "Jumpy"
- desc = "Allows the subject to leap great distances."
+ desc = "Позволяет субъекту совершать прыжки на большие расстояния."
//cooldown = 30
- activation_messages = list("Your leg muscles feel taut and strong.")
- deactivation_messages = list("Your leg muscles shrink back to normal.")
+ activation_messages = list("Вы чувствуете силу в своих ногах.")
+ deactivation_messages = list("Вы чувствуете, как сила уходит из ваших ног.")
instability = GENE_INSTABILITY_MINOR
spelltype = /obj/effect/proc_holder/spell/leap
@@ -342,7 +342,7 @@
/obj/effect/proc_holder/spell/leap
name = "Jump"
- desc = "Leap great distances!"
+ desc = "Прыгайте на огромные расстояния!"
base_cooldown = 6 SECONDS
@@ -359,11 +359,11 @@
/obj/effect/proc_holder/spell/leap/cast(list/targets, mob/living/user = usr)
var/failure = FALSE
if(ismob(user.loc) || user.incapacitated(INC_IGNORE_RESTRAINED) || user.buckled)
- to_chat(user, "You can't jump right now!")
+ to_chat(user, span_warning("Вы не можете прыгнуть прямо сейчас!"))
return
var/turf/turf_to_check = get_turf(user)
if(user.can_z_move(DOWN, turf_to_check))
- to_chat(user, span_warning("You need a ground to jump from!"))
+ to_chat(user, span_warning("Вам не от чего оттолкнуться!"))
return
if(isturf(user.loc))
@@ -374,13 +374,13 @@
else if(puller)
puller.stop_pulling()
- user.visible_message("[user.name] takes a huge leap!")
+ user.visible_message(span_danger("[user.name] дела[pluralize_ru(user, "ет", "ют")] огромный скачок!"))
playsound(user.loc, 'sound/weapons/thudswoosh.ogg', 50, 1)
if(failure)
user.Weaken(10 SECONDS)
- user.visible_message("[user] attempts to leap away but is slammed back down to the ground!",
- "You attempt to leap away but are suddenly slammed back down to the ground!",
- "You hear the flexing of powerful muscles and suddenly a crash as a body hits the floor.")
+ user.visible_message(span_warning("[user] пыта[pluralize_ru(user, "ет", "ют")]ся отпрыгнуть, но снова оказыва[pluralize_ru(user, "ет", "ют")]ся прижатым[pluralize_ru(user, "", "и")] к земле!"),
+ span_warning("Вы пытаетесь отпрыгнуть в сторону, но внезапно оказываетесь прижаты к земле!"),
+ span_notice("Вы слышите, как напрягаются мощные мышцы, и внезапно раздается грохот, когда тело падает на пол."))
return FALSE
var/prevLayer = user.layer
user.layer = LOW_LANDMARK_LAYER
@@ -399,7 +399,7 @@
pitfall?.zFall(user)
else if(HAS_TRAIT(user, TRAIT_FAT) && prob(66))
- user.visible_message("[user.name] crashes due to [user.p_their()] heavy weight!")
+ user.visible_message(span_danger("[user.name] пада[pluralize_ru(user, "ет", "ют")] на землю под весом своего тела!"))
//playsound(user.loc, 'zhit.wav', 50, 1)
user.AdjustWeakened(20 SECONDS)
@@ -407,10 +407,10 @@
if(isobj(user.loc))
var/obj/container = user.loc
- to_chat(user, "You leap and slam your head against the inside of [container]! Ouch!")
+ to_chat(user, span_warning("Вы прыгаете и ударяетесь головой о внутреннюю часть [container]! АЙ!"))
user.AdjustParalysis(6 SECONDS)
user.AdjustWeakened(10 SECONDS)
- container.visible_message("[user.loc] emits a loud thump and rattles a bit.")
+ container.visible_message(span_danger("[user.loc] изда[pluralize_ru(user, "ет", "ют")] громкий стук и немного дребезжит."))
playsound(user.loc, 'sound/effects/bang.ogg', 50, 1)
var/wiggle = 6
while(wiggle > 0)
@@ -428,12 +428,12 @@
/datum/dna/gene/basic/grant_spell/polymorph
name = "Polymorphism"
- desc = "Enables the subject to reconfigure their appearance to mimic that of others."
+ desc = "Позволяет субъекту изменять свою внешность, чтобы подражать другим."
spelltype = /obj/effect/proc_holder/spell/polymorph
//cooldown = 1800
- activation_messages = list("You don't feel entirely like yourself somehow.")
- deactivation_messages = list("You feel secure in your identity.")
+ activation_messages = list("Вы как-то не очень похожи на себя.")
+ deactivation_messages = list("Вы уверены в своей идентичности.")
instability = GENE_INSTABILITY_MODERATE
@@ -444,14 +444,14 @@
/obj/effect/proc_holder/spell/polymorph
name = "Polymorph"
- desc = "Mimic the appearance of others!"
+ desc = "Подражайте внешности других!"
base_cooldown = 3 MINUTES
clothes_req = FALSE
stat_allowed = CONSCIOUS
- selection_activated_message = "You body becomes unstable. Click on a target to cast transform into them."
- selection_deactivated_message = "Your body calms down again."
+ selection_activated_message = span_notice("Ваше тело становится нестабильным.")
+ selection_deactivated_message = span_notice("Ваше тело возвращается в норму.")
action_icon_state = "genetic_poly"
need_active_overlay = TRUE
@@ -469,7 +469,7 @@
/obj/effect/proc_holder/spell/polymorph/cast(list/targets, mob/user = usr)
var/mob/living/carbon/human/target = targets[1]
- user.visible_message("[user]'s body shifts and contorts.")
+ user.visible_message(span_warning("Тело [user] смещается и деформируется."))
spawn(1 SECONDS)
if(target && user)
@@ -484,11 +484,11 @@
// WAS: /datum/bioEffect/empath
/datum/dna/gene/basic/grant_spell/empath
name = "Empathic Thought"
- desc = "The subject becomes able to read the minds of others for certain information."
+ desc = "Субъект получает возможность читать мысли других людей, чтобы получить определённую информацию."
spelltype = /obj/effect/proc_holder/spell/empath
- activation_messages = list("You suddenly notice more about others than you did before.")
- deactivation_messages = list("You no longer feel able to sense intentions.")
+ activation_messages = list("Вы вдруг стали замечать в окружающих больше, чем раньше.")
+ deactivation_messages = list("Вы больше не способны чувствовать намерения других.")
instability = GENE_INSTABILITY_MINOR
traits_to_add = list(TRAIT_EMPATHY)
@@ -500,7 +500,7 @@
/obj/effect/proc_holder/spell/empath
name = "Read Mind"
- desc = "Read the minds of others for information."
+ desc = "Читайте мысли других людей, чтобы получить информацию."
base_cooldown = 18 SECONDS
clothes_req = FALSE
human_req = TRUE
@@ -519,65 +519,65 @@
/obj/effect/proc_holder/spell/empath/cast(list/targets, mob/user = usr)
for(var/mob/living/carbon/M in targets)
if(!iscarbon(M))
- to_chat(user, "You may only use this on other organic beings.")
+ to_chat(user, span_warning("Вы можете использовать это только на других органических существах."))
return
if(M.dna?.GetSEState(GLOB.psyresistblock))
- to_chat(user, "You can't see into [M.name]'s mind at all!")
+ to_chat(user, span_warning("Вы не можете заглянуть в разум [M.name]!"))
return
if(M.stat == 2)
- to_chat(user, "[M.name] is dead and cannot have [M.p_their()] mind read.")
+ to_chat(user, span_warning("Вы не можете прочитать мысли мёртвого существа."))
return
if(M.health < 0)
- to_chat(user, "[M.name] is dying, and [M.p_their()] thoughts are too scrambled to read.")
+ to_chat(user, span_warning("[M.name] в предсмертном состоянии, а [genderize_ru(M.gender, "его", "её", "его", "их")] мысли слишком спутаны, чтобы их прочитать."))
return
- to_chat(user, "Mind Reading of [M.name]:")
+ to_chat(user, span_notice("Чтение мыслей [M.name]:"))
var/pain_condition = M.health / M.maxHealth
// lower health means more pain
- var/list/randomthoughts = list("what to have for lunch","the future","the past","money",
- "[M.p_their()] hair","what to do next","[M.p_their()] job","space","amusing things","sad things",
- "annoying things","happy things","something incoherent","something [M.p_they()] did wrong")
- var/thoughts = "thinking about [pick(randomthoughts)]"
+ var/list/randomthoughts = list("о перекусе","о будущем","о прошлом","о деньгах",
+ "о своей причёске","о дальнейших планах","о работе","о космосе","о чём-то забавном","о чём-то грустном",
+ "о чём-то раздражающем","о каком-то радостном событии","о всякой ерунде","об ошибках прошлого")
+ var/thoughts = "думает [pick(randomthoughts)]"
if(M.fire_stacks)
pain_condition -= 0.5
- thoughts = "preoccupied with the fire"
+ thoughts = "поглощ[pluralize_ru(M.gender, "ён", "ены")] огнем"
if(M.radiation)
pain_condition -= 0.25
switch(pain_condition)
if(0.81 to INFINITY)
- to_chat(user, "Condition: [M.name] feels good.")
+ to_chat(user, span_notice("Состояние: [M.name] чувству[pluralize_ru(M.gender, "ет", "ют")] себя хорошо."))
if(0.61 to 0.8)
- to_chat(user, "Condition: [M.name] is suffering mild pain.")
+ to_chat(user, span_notice("Состояние: [M.name] испытыва[pluralize_ru(M.gender, "ет", "ют")] слабую боль."))
if(0.41 to 0.6)
- to_chat(user, "Condition: [M.name] is suffering significant pain.")
+ to_chat(user, span_notice("Состояние: [M.name] испытыва[pluralize_ru(M.gender, "ет", "ют")] умеренную боль."))
if(0.21 to 0.4)
- to_chat(user, "Condition: [M.name] is suffering severe pain.")
+ to_chat(user, span_notice("Состояние: [M.name] испытыва[pluralize_ru(M.gender, "ет", "ют")] сильную боль."))
else
- to_chat(user, "Condition: [M.name] is suffering excruciating pain.")
- thoughts = "haunted by [M.p_their()] own mortality"
+ to_chat(user, span_notice("Состояние: [M.name] испытыва[pluralize_ru(M.gender, "ет", "ют")] мучительную боль."))
+ thoughts = "дума[pluralize_ru(M.gender, "ет", "ют")] о том, что [genderize_ru(M.gender, "его", "её", "его", "их")] скоро настигнет смерть"
switch(M.a_intent)
if(INTENT_HELP)
- to_chat(user, "Mood: You sense benevolent thoughts from [M.name].")
+ to_chat(user, span_notice("Настроение: Вы улавливаете благожелательные мысли, исходящие от [M.name]."))
if(INTENT_DISARM)
- to_chat(user, "Mood: You sense cautious thoughts from [M.name].")
+ to_chat(user, span_notice("Настроение: Вы улавливаете опасливые мысли, исходящие от [M.name]."))
if(INTENT_GRAB)
- to_chat(user, "Mood: You sense hostile thoughts from [M.name].")
+ to_chat(user, span_notice("Настроение: Вы улавливаете враждебные мысли, исходящие от [M.name]."))
if(INTENT_HARM)
- to_chat(user, "Mood: You sense cruel thoughts from [M.name].")
+ to_chat(user, span_notice("Настроение: Вы улавливаете жестокие мысли, исходящие от [M.name]."))
for(var/mob/living/L in view(7,M))
if(L == M)
continue
- thoughts = "thinking about punching [L.name]"
+ thoughts = "дума[pluralize_ru(M.gender, "ет", "ют")] о том, чтобы ударить [L.name]"
break
else
- to_chat(user, "Mood: You sense strange thoughts from [M.name].")
+ to_chat(user, span_notice("Настроение: Вы улавливаете странные мысли, исходящие от [M.name]."))
if(ishuman(M))
var/numbers[0]
@@ -586,13 +586,13 @@
numbers += H.mind.initial_account.account_number
numbers += H.mind.initial_account.remote_access_pin
if(numbers.len>0)
- to_chat(user, "Numbers: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name].")
- to_chat(user, "Thoughts: [M.name] is currently [thoughts].")
+ to_chat(user, span_notice("Числа: Вы чувствуете, что [numbers.len > 1 ? "числа" : "число"] [english_list(numbers)] [numbers.len > 1 ? "являются важными" : "является важным"] для [M.name]."))
+ to_chat(user, span_notice("Мысли: [M.name] сейчас [thoughts]."))
if(HAS_TRAIT(M, TRAIT_EMPATHY))
- to_chat(M, "You sense [user.name] reading your mind.")
+ to_chat(M, span_warning("Вы чувствуете, что [user.name] читает ваши мысли."))
else if(prob(5) || M.mind?.assigned_role == JOB_TITLE_CHAPLAIN)
- to_chat(M, "You sense someone intruding upon your thoughts...")
+ to_chat(M, span_warning("Вы чувствуете, что кто-то вторгается в ваши мысли..."))
////////////////////////////////////////////////////////////////////////
@@ -600,9 +600,9 @@
// WAS: /datum/bioEffect/strong
/datum/dna/gene/basic/strong
name = "Strong"
- desc = "Enhances the subject's ability to build and retain heavy muscles."
- activation_messages = list("You feel buff!")
- deactivation_messages = list("You feel wimpy and weak.")
+ desc = "Повышает способность субъекта наращивать и удерживать тяжелую мускулатуру."
+ activation_messages = list("Вы чувствуете, что ваши мышцы в тонусе!")
+ deactivation_messages = list("Вы чувствуете себя хилым и слабым.")
instability = GENE_INSTABILITY_MAJOR
traits_to_add = list(TRAIT_GENE_STRONG)
diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm
index 38ffc35d44d..b75bca11dea 100644
--- a/code/game/dna/genes/monkey.dm
+++ b/code/game/dna/genes/monkey.dm
@@ -38,7 +38,8 @@
mutant.gib()
return
- to_chat(mutant, "You are now a [mutant.dna.species.name].")
+ mutant.balloon_alert(mutant, "вы трансформировались!")
+ to_chat(mutant, span_big("Вы трансформировались в [mutant.dna.species.name]."))
/datum/dna/gene/monkey/deactivate(mob/living/carbon/human/mutant, flags)
@@ -70,5 +71,6 @@
mutant.real_name = mutant.dna.real_name
mutant.name = mutant.real_name
- to_chat(mutant, "You are now a [mutant.dna.species.name].")
+ mutant.balloon_alert(mutant, "вы трансформировались!")
+ to_chat(mutant, span_big("Вы трансформировались в [mutant.dna.species.name]."))
diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm
index 1bc8fb87f77..516d508005b 100644
--- a/code/game/dna/genes/powers.dm
+++ b/code/game/dna/genes/powers.dm
@@ -4,8 +4,8 @@
/datum/dna/gene/basic/nobreath
name = "No Breathing"
- activation_messages = list("You feel no need to breathe.")
- deactivation_messages = list("You feel the need to breathe, once more.")
+ activation_messages = list("Вы не чувствуете необходимости дышать.")
+ deactivation_messages = list("Вы чувствуете необходимость дышать, снова.")
instability = GENE_INSTABILITY_MODERATE
activation_prob = 25
traits_to_add = list(TRAIT_NO_BREATH)
@@ -18,8 +18,8 @@
/datum/dna/gene/basic/regenerate
name = "Regenerate"
- activation_messages = list("Your wounds start healing.")
- deactivation_messages = list("Your regenerative powers feel like they've vanished.")
+ activation_messages = list("Ваши раны начинают заживать.")
+ deactivation_messages = list("Ваши регенеративные способности как будто испарились.")
instability = GENE_INSTABILITY_MODERATE
@@ -34,8 +34,8 @@
/datum/dna/gene/basic/increaserun
name = "Super Speed"
- activation_messages = list("You feel swift and unencumbered.")
- deactivation_messages = list("You feel slow.")
+ activation_messages = list("Вы чувствуете себя быстрым и свободным.")
+ deactivation_messages = list("Вы чувствуете себя медленным.")
instability = GENE_INSTABILITY_MINOR
@@ -62,8 +62,8 @@
/datum/dna/gene/basic/heat_resist
name = "Heat Resistance"
- activation_messages = list("Your skin is icy to the touch.")
- deactivation_messages = list("Your skin no longer feels icy to the touch.")
+ activation_messages = list("От вашей кожи веет холодом.")
+ deactivation_messages = list("Ваша кожа возвращается к привычной температуре.")
instability = GENE_INSTABILITY_MODERATE
traits_to_add = list(TRAIT_RESIST_HEAT)
@@ -79,8 +79,8 @@
/datum/dna/gene/basic/cold_resist
name = "Cold Resistance"
- activation_messages = list("Your body is filled with warmth.")
- deactivation_messages = list("Your body is no longer filled with warmth.")
+ activation_messages = list("От вашей кожи веет жаром.")
+ deactivation_messages = list("Ваша кожа возвращается к привычной температуре.")
instability = GENE_INSTABILITY_MODERATE
traits_to_add = list(TRAIT_RESIST_COLD)
@@ -96,8 +96,8 @@
/datum/dna/gene/basic/noprints
name = "No Prints"
- activation_messages = list("Your fingers feel numb.")
- deactivation_messages = list("your fingers no longer feel numb.")
+ activation_messages = list("Ваши пальцы словно онемели.")
+ deactivation_messages = list("Ваши пальцы больше не чувствуют онемения.")
instability = GENE_INSTABILITY_MINOR
traits_to_add = list(TRAIT_NO_FINGERPRINTS)
@@ -109,8 +109,8 @@
/datum/dna/gene/basic/noshock
name = "Shock Immunity"
- activation_messages = list("Your skin feels dry and unreactive.")
- deactivation_messages = list("Your skin no longer feels dry and unreactive.")
+ activation_messages = list("Ваша кожа кажется сухой и нечувствительной.")
+ deactivation_messages = list("Ваша кожа больше не кажется сухой и нечувствительной.")
instability = GENE_INSTABILITY_MODERATE
traits_to_add = list(TRAIT_SHOCKIMMUNE)
@@ -122,8 +122,8 @@
/datum/dna/gene/basic/midget
name = "Midget"
- activation_messages = list("Everything around you seems bigger now...")
- deactivation_messages = list("Everything around you seems to shrink...")
+ activation_messages = list("Теперь все вокруг кажется больше...")
+ deactivation_messages = list("Кажется, что все вокруг уменьшается...")
instability = GENE_INSTABILITY_MINOR
traits_to_add = list(TRAIT_DWARF)
@@ -148,8 +148,8 @@
// OLD HULK BEHAVIOR
/datum/dna/gene/basic/hulk
name = "Hulk"
- activation_messages = list("Your muscles hurt.")
- deactivation_messages = list("Your muscles shrink.")
+ activation_messages = list("Ваши мышцы увеличиваются.")
+ deactivation_messages = list("Ваши мышцы уменьшаются.")
instability = GENE_INSTABILITY_MAJOR
traits_to_add = list(TRAIT_HULK)
activation_prob = 15
@@ -178,8 +178,8 @@
/datum/dna/gene/basic/xray
name = "X-Ray Vision"
- activation_messages = list("The walls suddenly disappear.")
- deactivation_messages = list("the walls around you re-appear.")
+ activation_messages = list("Стены внезапно исчезают.")
+ deactivation_messages = list("Стены вокруг вас появляются вновь.")
instability = GENE_INSTABILITY_MAJOR
traits_to_add = list(TRAIT_XRAY)
activation_prob = 15
@@ -204,8 +204,8 @@
/datum/dna/gene/basic/tk
name = "Telekenesis"
- activation_messages = list("You feel smarter.")
- deactivation_messages = list("You feel dumber.")
+ activation_messages = list("Вы чувствуете себя умнее.")
+ deactivation_messages = list("Вы чувствуете себя глупее.")
instability = GENE_INSTABILITY_MAJOR
traits_to_add = list(TRAIT_TELEKINESIS)
activation_prob = 15
@@ -222,8 +222,8 @@
/datum/dna/gene/basic/farvision
name = "Far vision"
- activation_messages = list("Вы можете видеть дальше чем раньше.")
- deactivation_messages = list("Дальность вашего взора вернулась к нормальному состоянию")
+ activation_messages = list("Теперь вы можете видеть дальше, чем раньше.")
+ deactivation_messages = list("Дальность вашего взора вернулась к нормальному состоянию.")
instability = GENE_INSTABILITY_MODERATE
diff --git a/code/game/dna/genes/vg_disabilities.dm b/code/game/dna/genes/vg_disabilities.dm
index cc602b88bea..5814bf4fcc2 100644
--- a/code/game/dna/genes/vg_disabilities.dm
+++ b/code/game/dna/genes/vg_disabilities.dm
@@ -1,9 +1,9 @@
/datum/dna/gene/disability/speech/loud
name = "Loud"
- desc = "Forces the speaking centre of the subjects brain to yell every sentence."
- activation_message = "YOU FEEL LIKE YELLING!"
- deactivation_message = "You feel like being quiet.."
+ desc = "Заставляет речевой центр мозга субъекта выкрикивать каждое предложение."
+ activation_message = list("ВАМ ХОЧЕТСЯ КРИЧАТЬ!")
+ deactivation_message = list("Вам хочется побыть в тишине...")
/datum/dna/gene/disability/speech/loud/New()
@@ -20,9 +20,9 @@
/datum/dna/gene/disability/dizzy
name = "Dizzy"
- desc = "Causes the cerebellum to shut down in some places."
- activation_message = "You feel very dizzy..."
- deactivation_message = "You regain your balance."
+ desc = "Вызывает отключение мозжечка время от времени."
+ activation_message = list("У вас очень сильно кружится голова...")
+ deactivation_message = list("Вы вновь обретаете равновесие.")
instability = -GENE_INSTABILITY_MINOR
diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm
index f012ae4994f..687207d78b3 100644
--- a/code/game/dna/genes/vg_powers.dm
+++ b/code/game/dna/genes/vg_powers.dm
@@ -2,10 +2,10 @@
/datum/dna/gene/basic/grant_spell/morph
name = "Morphism"
- desc = "Enables the subject to reconfigure their appearance to that of any human."
+ desc = "Позволяет субъекту изменить свою внешность на внешность любого человека."
spelltype = /obj/effect/proc_holder/spell/morph
- activation_messages = list("Your body feels if can alter its appearance.")
- deactivation_messages = list("Your body doesn't feel capable of altering its appearance.")
+ activation_messages = list("Вы чувствуете, что можете изменить свой внешний вид.")
+ deactivation_messages = list("Вы больше не способны менять свой внешний вид.")
instability = GENE_INSTABILITY_MINOR
@@ -15,7 +15,7 @@
/obj/effect/proc_holder/spell/morph
name = "Morph"
- desc = "Mimic the appearance of your choice!"
+ desc = "Играйтесь со своей внешностью как душе угодно!"
base_cooldown = 3 MINUTES
clothes_req = FALSE
@@ -33,21 +33,21 @@
return
if(ismob(user.loc))
- to_chat(user, "You can't change your appearance right now!")
+ balloon_alert(user, "невозможно в данный момент")
return
var/mob/living/carbon/human/M = user
var/obj/item/organ/external/head/head_organ = M.get_organ(BODY_ZONE_HEAD)
var/obj/item/organ/internal/eyes/eyes_organ = M.get_int_organ(/obj/item/organ/internal/eyes)
- var/new_gender = tgui_alert(user, "Please select gender.", "Character Generation", list("Male", "Female"))
+ var/new_gender = tgui_alert(user, "Пожалуйста, выберите пол.", "Создание персонажа", list("Мужчина", "Женщина"))
if(new_gender)
- if(new_gender == "Male")
+ if(new_gender == "Мужчина")
M.change_gender(MALE)
else
M.change_gender(FEMALE)
if(eyes_organ)
- var/new_eyes = input("Please select eye color.", "Character Generation", eyes_organ.eye_colour) as null|color
+ var/new_eyes = input("Пожалуйста, выберите цвет глаз.", "Создание персонажа", eyes_organ.eye_colour) as null|color
if(new_eyes)
M.change_eye_color(new_eyes)
@@ -55,53 +55,53 @@
//Alt heads.
if(head_organ.dna.species.bodyflags & HAS_ALT_HEADS)
var/list/valid_alt_heads = M.generate_valid_alt_heads()
- var/new_alt_head = input("Please select alternate head", "Character Generation", head_organ.alt_head) as null|anything in valid_alt_heads
+ var/new_alt_head = input("Пожалуйста, выберите другую форму головы.", "Создание персонажа", head_organ.alt_head) as null|anything in valid_alt_heads
if(new_alt_head)
M.change_alt_head(new_alt_head)
// hair
var/list/valid_hairstyles = M.generate_valid_hairstyles()
- var/new_style = input("Please select hair style", "Character Generation", head_organ.h_style) as null|anything in valid_hairstyles
+ var/new_style = input("Пожалуйста, выберите стиль прически.", "Создание персонажа", head_organ.h_style) as null|anything in valid_hairstyles
// if new style selected (not cancel)
if(new_style)
M.change_hair(new_style)
- var/new_hair = input("Please select hair color.", "Character Generation", head_organ.hair_colour) as null|color
+ var/new_hair = input("Пожалуйста, выберите цвет волос.", "Создание персонажа", head_organ.hair_colour) as null|color
if(new_hair)
M.change_hair_color(new_hair)
var/datum/sprite_accessory/hair_style = GLOB.hair_styles_public_list[head_organ.h_style]
if(hair_style.secondary_theme && !hair_style.no_sec_colour)
- new_hair = input("Please select secondary hair color.", "Character Generation", head_organ.sec_hair_colour) as null|color
+ new_hair = input("Пожалуйста, выберите дополнительный цвет волос.", "Создание персонажа", head_organ.sec_hair_colour) as null|color
if(new_hair)
M.change_hair_color(new_hair, TRUE)
// facial hair
var/list/valid_facial_hairstyles = M.generate_valid_facial_hairstyles()
- new_style = input("Please select facial style", "Character Generation", head_organ.f_style) as null|anything in valid_facial_hairstyles
+ new_style = input("Пожалуйста, выберите тип лицевой растительности.", "Создание персонажа", head_organ.f_style) as null|anything in valid_facial_hairstyles
if(new_style)
M.change_facial_hair(new_style)
- var/new_facial = input("Please select facial hair color.", "Character Generation", head_organ.facial_colour) as null|color
+ var/new_facial = input("Пожалуйста, выберите цвет лицевой растительности.", "Создание персонажа", head_organ.facial_colour) as null|color
if(new_facial)
M.change_facial_hair_color(new_facial)
var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[head_organ.f_style]
if(facial_hair_style.secondary_theme && !facial_hair_style.no_sec_colour)
- new_facial = input("Please select secondary facial hair color.", "Character Generation", head_organ.sec_facial_colour) as null|color
+ new_facial = input("Пожалуйста, выберите дополнительный цвет лицевой растительности.", "Создание персонажа", head_organ.sec_facial_colour) as null|color
if(new_facial)
M.change_facial_hair_color(new_facial, TRUE)
//Head accessory.
if(head_organ.dna.species.bodyflags & HAS_HEAD_ACCESSORY)
var/list/valid_head_accessories = M.generate_valid_head_accessories()
- var/new_head_accessory = input("Please select head accessory style", "Character Generation", head_organ.ha_style) as null|anything in valid_head_accessories
+ var/new_head_accessory = input("Пожалуйста, выберите стиль аксессуаров для головы.", "Создание персонажа", head_organ.ha_style) as null|anything in valid_head_accessories
if(new_head_accessory)
M.change_head_accessory(new_head_accessory)
- var/new_head_accessory_colour = input("Please select head accessory colour.", "Character Generation", head_organ.headacc_colour) as null|color
+ var/new_head_accessory_colour = input("Пожалуйста, выберите цвет аксессуаров для головы.", "Создание персонажа", head_organ.headacc_colour) as null|color
if(new_head_accessory_colour)
M.change_head_accessory_color(new_head_accessory_colour)
@@ -109,7 +109,7 @@
if((M.dna.species.tail && M.dna.species.bodyflags & (HAS_TAIL)) || (M.dna.species.wing && M.dna.species.bodyflags & (HAS_WING)))
var/list/valid_body_accessories = M.generate_valid_body_accessories()
if(valid_body_accessories.len > 1) //By default valid_body_accessories will always have at the very least a 'none' entry populating the list, even if the user's species is not present in any of the list items.
- var/new_body_accessory = input("Please select body accessory style", "Character Generation", M.body_accessory) as null|anything in valid_body_accessories
+ var/new_body_accessory = input("Пожалуйста, выберите стиль аксессуаров для тела.", "Создание персонажа", M.body_accessory) as null|anything in valid_body_accessories
if(new_body_accessory)
M.change_body_accessory(new_body_accessory)
@@ -117,38 +117,38 @@
//Head markings.
if(M.dna.species.bodyflags & HAS_HEAD_MARKINGS)
var/list/valid_head_markings = M.generate_valid_markings("head")
- var/new_marking = input("Please select head marking style", "Character Generation", M.m_styles["head"]) as null|anything in valid_head_markings
+ var/new_marking = input("Пожалуйста, выберите стиль маркировки головы.", "Создание персонажа", M.m_styles["head"]) as null|anything in valid_head_markings
if(new_marking)
M.change_markings(new_marking, "head")
- var/new_marking_colour = input("Please select head marking colour.", "Character Generation", M.m_colours["head"]) as null|color
+ var/new_marking_colour = input("Пожалуйста, выберите цвет маркировки головы.", "Создание персонажа", M.m_colours["head"]) as null|color
if(new_marking_colour)
M.change_marking_color(new_marking_colour, "head")
//Body markings.
if(M.dna.species.bodyflags & HAS_BODY_MARKINGS)
var/list/valid_body_markings = M.generate_valid_markings("body")
- var/new_marking = input("Please select body marking style", "Character Generation", M.m_styles["body"]) as null|anything in valid_body_markings
+ var/new_marking = input("Пожалуйста, выберите стиль маркировки тела.", "Создание персонажа", M.m_styles["body"]) as null|anything in valid_body_markings
if(new_marking)
M.change_markings(new_marking, "body")
- var/new_marking_colour = input("Please select body marking colour.", "Character Generation", M.m_colours["body"]) as null|color
+ var/new_marking_colour = input("Пожалуйста, выберите цвет маркировки тела.", "Создание персонажа", M.m_colours["body"]) as null|color
if(new_marking_colour)
M.change_marking_color(new_marking_colour, "body")
//Tail markings.
if(M.dna.species.bodyflags & HAS_TAIL_MARKINGS)
var/list/valid_tail_markings = M.generate_valid_markings("tail")
- var/new_marking = input("Please select tail marking style", "Character Generation", M.m_styles["tail"]) as null|anything in valid_tail_markings
+ var/new_marking = input("Пожалуйста, выберите стиль маркировки хвоста.", "Создание персонажа", M.m_styles["tail"]) as null|anything in valid_tail_markings
if(new_marking)
M.change_markings(new_marking, "tail")
- var/new_marking_colour = input("Please select tail marking colour.", "Character Generation", M.m_colours["tail"]) as null|color
+ var/new_marking_colour = input("Пожалуйста, выберите цвет маркировки хвоста.", "Создание персонажа", M.m_colours["tail"]) as null|color
if(new_marking_colour)
M.change_marking_color(new_marking_colour, "tail")
//Skin tone.
if(M.dna.species.bodyflags & HAS_SKIN_TONE)
- var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation", M.s_tone) as null|text
+ var/new_tone = input("Пожалуйста, выберите уровень тона кожи: 1-220 (1=альбинос, 35=белый, 150=тёмный, 220=чёрный)", "Создание персонажа", M.s_tone) as null|text
if(!new_tone)
new_tone = 35
else
@@ -156,14 +156,14 @@
M.change_skin_tone(new_tone)
if(M.dna.species.bodyflags & HAS_ICON_SKIN_TONE)
- var/prompt = "Please select skin tone: 1-[M.dna.species.icon_skin_tones.len] ("
+ var/prompt = "Пожалуйста, выберите тон кожи: 1-[M.dna.species.icon_skin_tones.len] ("
for(var/i = 1 to M.dna.species.icon_skin_tones.len)
prompt += "[i] = [M.dna.species.icon_skin_tones[i]]"
if(i != M.dna.species.icon_skin_tones.len)
prompt += ", "
prompt += ")"
- var/new_tone = input(prompt, "Character Generation", M.s_tone) as null|text
+ var/new_tone = input(prompt, "Создание персонажа", M.s_tone) as null|text
if(!new_tone)
new_tone = 0
else
@@ -172,19 +172,21 @@
//Skin colour.
if(M.dna.species.bodyflags & HAS_SKIN_COLOR)
- var/new_body_colour = input("Please select body colour.", "Character Generation", M.skin_colour) as null|color
+ var/new_body_colour = input("Пожалуйста, выберите цвет тела.", "Создание персонажа", M.skin_colour) as null|color
if(new_body_colour)
M.change_skin_color(new_body_colour)
M.update_dna()
- M.visible_message("[M] morphs and changes [M.p_their()] appearance!", "You change your appearance!", "Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")
+ M.visible_message(span_notice("[M] трансформиру[pluralize_ru(M.gender, "ет", "ют")]ся, изменяя свой внешний вид!"),
+ span_notice("Вы меняете свою внешность!"),
+ span_warning("О боже! Что это, чёрт возьми, было? Звук был такой, будто плоть сплющивают, а кости перетирают, придавая им другую форму!"))
/datum/dna/gene/basic/grant_spell/remotetalk
name = "Telepathy"
- activation_messages = list("You feel you can project your thoughts.")
- deactivation_messages = list("You no longer feel you can project your thoughts.")
+ activation_messages = list("Вы чувствуете, что можете проецировать свои мысли.")
+ deactivation_messages = list("Вы больше не чувствуете, что можете проецировать свои мысли.")
instability = GENE_INSTABILITY_MINOR
spelltype = /obj/effect/proc_holder/spell/remotetalk
@@ -211,7 +213,7 @@
/obj/effect/proc_holder/spell/remotetalk
name = "Project Mind"
- desc = "Make people understand your thoughts!"
+ desc = "Позвольте другим ощущать ваши мысли."
base_cooldown = 0
clothes_req = FALSE
@@ -227,38 +229,42 @@
if(!ishuman(user))
return
if(user.mind?.miming) // Dont let mimes telepathically talk
- to_chat(user,"You can't communicate without breaking your vow of silence.")
+ to_chat(user, span_warning("Вы не можете общаться, не нарушив свой обет молчания."))
return
for(var/mob/living/target in targets)
var/datum/atom_hud/thoughts/hud = GLOB.huds[THOUGHTS_HUD]
hud.manage_hud(target, THOUGHTS_HUD_PRECISE)
- // user.hud_typing = TRUE do not know what to do
user.thoughts_hud_set(TRUE)
- var/say = tgui_input_text(user, "What do you wish to say?", "Project Mind")
- // user.hud_typing = FALSE
+ var/say = tgui_input_text(user, "Что вы хотите сказать?", "Project Mind")
user.typing = FALSE
- if(!say || usr.stat)
+
+ if(!say || user.stat)
hud.manage_hud(target, THOUGHTS_HUD_DISPERSE)
user.thoughts_hud_set(FALSE)
return
+
user.thoughts_hud_set(TRUE, say_test(say))
addtimer(CALLBACK(hud, TYPE_PROC_REF(/datum/atom_hud/thoughts/, manage_hud), target, THOUGHTS_HUD_DISPERSE), 3 SECONDS)
say = strip_html(say)
- say = pencode_to_html(say, usr, format = 0, fields = 0)
+ say = pencode_to_html(say, user, format = 0, fields = 0)
log_say("(TPATH to [key_name(target)]) [say]", user)
user.create_log(SAY_LOG, "Telepathically said '[say]' using [src]", target)
+
if(target.dna?.GetSEState(GLOB.remotetalkblock))
- target.show_message("You hear [user.real_name]'s voice: [say]")
+ target.show_message(span_abductor("Вы слышите голос [user.real_name]: [say]"))
+
else
- target.show_message("You hear a voice that seems to echo around the room: [say]")
- user.show_message("You project your mind into [(target in user.get_visible_mobs()) ? target.name : "the unknown entity"]: [say]")
+ target.show_message(span_abductor("Вы слышите голос, который, кажется, эхом разносится по комнате: [say]"))
+
+ user.show_message(span_abductor("Вы проецируете свой разум на [(target in user.get_visible_mobs()) ? target.name : "неизвестную сущность"]: [say]"))
+
for(var/mob/dead/observer/G in GLOB.player_list)
- G.show_message("Telepathic message from [user] ([ghost_follow_link(user, ghost=G)]) to [target] ([ghost_follow_link(target, ghost=G)]): [say]")
+ G.show_message(span_italics("Телепатическое сообщение от [user] ([ghost_follow_link(user, ghost=G)]) для [target] ([ghost_follow_link(target, ghost=G)]): [say]"))
/obj/effect/proc_holder/spell/mindscan
name = "Scan Mind"
- desc = "Offer people a chance to share their thoughts!"
+ desc = "Дайте людям возможность поделиться их мыслями!"
base_cooldown = 45 SECONDS
clothes_req = FALSE
stat_allowed = CONSCIOUS
@@ -275,11 +281,11 @@
return
for(var/mob/living/target in targets)
var/datum/atom_hud/thoughts/hud = GLOB.huds[THOUGHTS_HUD]
- var/message = "You feel your mind expand briefly... (Click to send a message.)"
+ var/message = "Вы чувствуете, что ваш разум ненадолго расширяется... (Нажмите, чтобы отправить сообщение.)"
if(target.dna?.GetSEState(GLOB.remotetalkblock))
- message = "You feel [user.real_name] request a response from you... (Click here to project mind.)"
- user.show_message("You offer your mind to [(target in user.get_visible_mobs()) ? target.name : "the unknown entity"].")
- target.show_message("[message]")
+ message = "Вы чувствуете, что [user.real_name] хочет что-то от вас услышать... (Нажмите здесь, чтобы спроецировать мысли.)"
+ user.show_message(span_abductor("Вы предлагаете доступ в свой разум [(target in user.get_visible_mobs()) ? target.name : "неизвестной сущности"]."))
+ target.show_message(span_abductor("[message]"))
available_targets += target
hud.manage_hud(target, THOUGHTS_HUD_PRECISE)
addtimer(CALLBACK(src, PROC_REF(removeAvailability), target), 45 SECONDS)
@@ -290,39 +296,46 @@
var/datum/atom_hud/thoughts/hud = GLOB.huds[THOUGHTS_HUD]
available_targets -= target
hud.manage_hud(target, THOUGHTS_HUD_DISPERSE)
- target.show_message("You feel the sensation fade...")
+ target.show_message(span_abductor("Вы чувствуете, как это ощущение исчезает..."))
/obj/effect/proc_holder/spell/mindscan/Topic(href, href_list)
var/mob/living/user
if(href_list["user"])
user = locateUID(href_list["user"])
+
if(href_list["target"])
if(!user)
return
+
var/mob/living/target = locateUID(href_list["target"])
if(!(target in available_targets))
return
- // target.hud_typing = TRUE
+
target.thoughts_hud_set(TRUE)
- var/say = tgui_input_text(user, "What do you wish to say?", "Scan Mind")
- // target.hud_typing = FALSE
+ var/say = tgui_input_text(target, "Что вы хотите сказать?", "Scan Mind")
target.typing = FALSE
+
if(!say || target.stat)
target.thoughts_hud_set(FALSE)
return
+
target.thoughts_hud_set(TRUE, say_test(say))
say = strip_html(say)
say = pencode_to_html(say, target, format = 0, fields = 0)
user.create_log(SAY_LOG, "Telepathically responded '[say]' using [src]", target)
log_say("(TPATH to [key_name(target)]) [say]", user)
+
if(target.dna?.GetSEState(GLOB.remotetalkblock))
- target.show_message("You project your mind into [user.name]: [say]")
+ target.show_message(span_abductor("Вы проецируете свой разум на [user.name]: [say]"))
+
else
- target.show_message("You fill the space in your thoughts: [say]")
- user.show_message("You hear [target.name]'s voice: [say]")
+ target.show_message(span_abductor("Вы заполняете пространство в своих мыслях: [say]"))
+
+ user.show_message(span_abductor("Вы слышите голос [target.name]: [say]"))
+
for(var/mob/dead/observer/G in GLOB.player_list)
- G.show_message("Telepathic response from [target] ([ghost_follow_link(target, ghost=G)]) to [user] ([ghost_follow_link(user, ghost=G)]): [say]")
+ G.show_message(span_italics("Телепатический ответ от [target] ([ghost_follow_link(target, ghost=G)]) для [user] ([ghost_follow_link(user, ghost=G)]): [say]"))
/obj/effect/proc_holder/spell/mindscan/Destroy()
@@ -333,8 +346,8 @@
/datum/dna/gene/basic/grant_spell/remoteview
name = "Remote Viewing"
- activation_messages = list("Your mind can see things from afar.")
- deactivation_messages = list("Your mind can no longer can see things from afar.")
+ activation_messages = list("Ваш разум может видеть на расстоянии.")
+ deactivation_messages = list("Ваш разум больше не может видеть издалека.")
instability = GENE_INSTABILITY_MINOR
spelltype = /obj/effect/proc_holder/spell/remoteview
traits_to_add = list(TRAIT_OPEN_MIND)
@@ -347,7 +360,7 @@
/obj/effect/proc_holder/spell/remoteview
name = "Remote View"
- desc = "Spy on people from any range!"
+ desc = "Следите за людьми с любого расстояния!"
base_cooldown = 10 SECONDS
clothes_req = FALSE
@@ -370,7 +383,7 @@
var/mob/target
if(istype(H.l_hand, /obj/item/tk_grab) || istype(H.r_hand, /obj/item/tk_grab))
- to_chat(H, "Your mind is too busy with that telekinetic grab.")
+ balloon_alert(H, "разум занят")
H.remoteview_target = null
H.reset_perspective()
return
diff --git a/code/game/gamemodes/antag_paradise/antag_paradise.dm b/code/game/gamemodes/antag_paradise/antag_paradise.dm
index 460ed81b9e1..fd86374286d 100644
--- a/code/game/gamemodes/antag_paradise/antag_paradise.dm
+++ b/code/game/gamemodes/antag_paradise/antag_paradise.dm
@@ -103,11 +103,11 @@
if(ROLE_MALF_AI)
if(special_antag_amount)
- var/datum/mind/special_antag = roundstart ? safepick(get_players_for_role(ROLE_MALF_AI, req_job_rank = JOB_TITLE_AI)) : safepick(antag_possibilities[ROLE_MALF_AI])
+ var/datum/mind/special_antag = safepick(antag_possibilities[ROLE_MALF_AI])
if(special_antag)
special_antag.restricted_roles = (restricted_jobs|protected_jobs|protected_jobs_AI)
special_antag.restricted_roles -= JOB_TITLE_AI
- special_antag.special_role = SPECIAL_ROLE_TRAITOR
+ special_antag.special_role = SPECIAL_ROLE_MALFAI
SSjobs.new_malf = special_antag.current
pre_antags[special_antag] = ROLE_MALF_AI
antags_amount--
@@ -215,6 +215,7 @@
antag_possibilities[ROLE_CHANGELING] = get_players_for_role(ROLE_CHANGELING)
antag_possibilities[ROLE_TRAITOR] = get_players_for_role(ROLE_TRAITOR)
antag_possibilities[ROLE_THIEF] = get_players_for_role(ROLE_THIEF, list(SPECIES_VOX = 4))
+ antag_possibilities[ROLE_MALF_AI] = get_players_for_role(ROLE_MALF_AI)
calculate_antags()
diff --git a/code/game/gamemodes/clockwork/clockwork_gateway.dm b/code/game/gamemodes/clockwork/clockwork_gateway.dm
index e852e3d27f3..2b5d4c680d7 100644
--- a/code/game/gamemodes/clockwork/clockwork_gateway.dm
+++ b/code/game/gamemodes/clockwork/clockwork_gateway.dm
@@ -144,4 +144,4 @@
animate(src, transform = matrix() * 3, alpha = 0, time = 0.5 SECONDS)
QDEL_IN(src, 0.3 SECONDS)
sleep(0.3 SECONDS)
- new /obj/singularity/ratvar(get_turf(src))
+ new /obj/singularity/god/ratvar(get_turf(src))
diff --git a/code/game/gamemodes/clockwork/clockwork_structures.dm b/code/game/gamemodes/clockwork/clockwork_structures.dm
index cefd9609788..e65baa26fee 100644
--- a/code/game/gamemodes/clockwork/clockwork_structures.dm
+++ b/code/game/gamemodes/clockwork/clockwork_structures.dm
@@ -18,12 +18,12 @@
/obj/structure/clockwork/functional
max_integrity = 100
var/cooldowntime = 0
- var/death_message = "The structure falls apart."
+ var/death_message = span_danger("The structure falls apart.")
var/death_sound = 'sound/effects/forge_destroy.ogg'
var/canbehidden = FALSE
var/hidden = FALSE
var/hidden_type
- var/list/choosable_items = list(
+ var/list/atom/choosable_items = list(
"rack" = /obj/structure/rack,
"table" = /obj/structure/table,
"wooden table" = /obj/structure/table/wood,
@@ -37,19 +37,7 @@
if(!hidden)
name = initial(name)
return
- switch(hidden_type)
- if("rack")
- name = "rack"
- if("table")
- name = "table"
- if("wooden table")
- name = "wooden table"
- if("personal closet")
- name = "personal closet"
- if("girder")
- name = "girder"
- if("bookcase")
- name = "bookcase"
+ name = choosable_items[hidden_type]::name
/obj/structure/clockwork/functional/update_desc(updates = ALL)
@@ -57,19 +45,19 @@
if(!hidden)
desc = initial(desc)
return
- switch(hidden_type)
+ switch(hidden_type) //used in case, where objects "examine" text aren't in their desc var (like in proc/examine()) or if you want do something funny
if("rack")
- desc = "Different from the Middle Ages version.
It's held together by a couple of bolts."
+ desc = "Different from the Middle Ages version.
[span_notice("It's held together by a couple of bolts.")]"
if("table")
- desc = "A square piece of metal standing on four metal legs. It can not move.
The top is screwed on, but the main bolts are also visible."
+ desc = "A square piece of metal standing on four metal legs. It can not move.
[span_notice("The top is screwed on, but the main bolts are also visible.")]"
if("wooden table")
- desc = "Do not apply fire to this. Rumour says it burns easily.
The top is screwed on, but the main bolts are also visible."
- if("personal closet")
- desc = "It's a secure locker for personnel. The first card swiped gains control."
+ desc = "Do not apply fire to this. Rumour says it burns easily.
[span_notice("The top is screwed on, but the main bolts are also visible.")]"
if("girder")
- desc = "The bolts are lodged in place."
- if("bookcase")
- desc = null
+ desc = "[span_notice("The bolts are lodged in place.")]"
+ if("broken grille")
+ desc = "A flimsy framework of metal rods.
[span_notice("It's secured in place with screws. The rods look like they could be cut through.")]"
+ else
+ desc = choosable_items[hidden_type]::desc
/obj/structure/clockwork/functional/update_icon_state()
@@ -77,25 +65,8 @@
icon = initial(icon)
icon_state = anchored ? "[initial(icon_state)]-off" : initial(icon_state)
return
- switch(hidden_type)
- if("rack")
- icon = 'icons/obj/objects.dmi'
- icon_state = "rack"
- if("table")
- icon = 'icons/obj/smooth_structures/table.dmi'
- icon_state = "table"
- if("wooden table")
- icon = 'icons/obj/smooth_structures/wood_table.dmi'
- icon_state = "wood_table"
- if("personal closet")
- icon = 'icons/obj/closet.dmi'
- icon_state = "secureoff"
- if("girder")
- icon = 'icons/obj/structures.dmi'
- icon_state = "girder"
- if("bookcase")
- icon = 'icons/obj/library.dmi'
- icon_state = "book-0"
+ icon = choosable_items[hidden_type]::icon
+ icon_state = choosable_items[hidden_type]::icon_state
/obj/structure/clockwork/functional/attackby(obj/item/I, mob/user, params)
@@ -139,7 +110,7 @@
/obj/structure/clockwork/functional/examine(mob/user)
. = ..()
if(hidden && isclocker(user))
- . += "It's a disguised [initial(name)]!"
+ . += span_notice("It's a disguised [initial(name)]!")
// returns TRUE if hidden, if unhidden FALSE
/obj/structure/clockwork/functional/proc/toggle_hide(chosen_type)
@@ -158,7 +129,7 @@
desc = "An imposing spire formed of brass. It somewhat pulsates."
icon_state = "beacon"
max_integrity = 250 // A very important one
- death_message = "The beacon crumbles and falls in parts to the ground relaesing it's power!"
+ death_message = span_danger("The beacon crumbles and falls in parts to the ground relaesing it's power!")
death_sound = 'sound/effects/creepyshriek.ogg'
var/heal_delay = 6 SECONDS
var/last_heal = 0
@@ -186,7 +157,7 @@
if(!isclocker(L))
continue
if(L.reagents?.has_reagent("holywater"))
- to_chat(L, "You feel a terrible liquid disappearing from your body.")
+ to_chat(L, span_warning("You feel a terrible liquid disappearing from your body."))
L.reagents.del_reagent("holywater")
if(iscogscarab(L))
var/mob/living/silicon/robot/cogscarab/C = L
@@ -213,7 +184,7 @@
GLOB.clockwork_beacons -= src
STOP_PROCESSING(SSobj, src)
for(var/datum/mind/M in SSticker.mode.clockwork_cult)
- to_chat(M.current, "You get the feeling that one of the beacons have been destroyed! The source comes from [areabeacon.name]")
+ to_chat(M.current, span_danger("You get the feeling that one of the beacons have been destroyed! The source comes from [areabeacon.name]"))
return ..()
/obj/structure/clockwork/functional/beacon/attackby(obj/item/I, mob/user, params)
@@ -228,7 +199,7 @@
desc = "A strange brass platform with spinning cogs inside. It demands something in exchange for goods..."
icon_state = "altar"
density = FALSE
- death_message = "The credence breaks in pieces as it dusts into nothing!"
+ death_message = span_danger("The credence breaks in pieces as it dusts into nothing!")
canbehidden = TRUE
choosable_items = list(
"potted plant" = /obj/item/twohanded/required/kirbyplants,
@@ -265,38 +236,6 @@
return ..()
-/obj/structure/clockwork/functional/altar/update_name(updates = ALL)
- . = ..()
- if(!hidden)
- name = initial(name)
- return
- switch(hidden_type)
- if("potted plant")
- name = "potted plant"
- if("chair")
- name = "chair"
- if("stool")
- name = "stool"
- if("broken grille")
- name = "grille"
-
-
-/obj/structure/clockwork/functional/altar/update_desc(updates = ALL)
- . = ..()
- if(!hidden)
- desc = initial(desc)
- return
- switch(hidden_type)
- if("potted plant")
- desc = null
- if("chair")
- desc = "You sit in this. Either by will or force."
- if("stool")
- desc = "Apply butt."
- if("broken grille")
- desc = "A flimsy framework of metal rods."
-
-
/obj/structure/clockwork/functional/altar/update_icon_state()
if(!hidden)
icon = initial(icon)
@@ -305,19 +244,11 @@
return
icon_state = first_stage ? "[initial(icon_state)]-fast" : initial(icon_state)
return
- switch(hidden_type)
- if("potted plant")
- icon = 'icons/obj/flora/plants.dmi'
- icon_state = "plant-[rand(1,36)]"
- if("chair")
- icon = 'icons/obj/chairs.dmi'
- icon_state = "chair"
- if("stool")
- icon = 'icons/obj/chairs.dmi'
- icon_state = "stool"
- if("broken grille")
- icon = 'icons/obj/structures.dmi'
- icon_state = "brokengrille"
+ icon = choosable_items[hidden_type]::icon
+ if(hidden_type == "potted plant")
+ icon_state = "plant-[rand(1,36)]"
+ else
+ icon_state = choosable_items[hidden_type]::icon_state
/obj/structure/clockwork/functional/altar/attackby(obj/item/I, mob/user, params)
@@ -408,7 +339,7 @@
/obj/structure/clockwork/functional/altar/proc/first_stage_check(var/mob/living/carbon/human/target)
first_stage = TRUE
- target.visible_message("[src] begins to glow a piercing amber!", "You feel something start to invade your mind...")
+ target.visible_message(span_warning("[src] begins to glow a piercing amber!"), span_clock("You feel something start to invade your mind..."))
glow = new (get_turf(src))
animate(glow, alpha = 255, time = 8 SECONDS)
update_icon(UPDATE_ICON_STATE)
@@ -416,11 +347,11 @@
/obj/structure/clockwork/functional/altar/proc/second_stage_check(var/mob/living/carbon/human/target)
second_stage = TRUE
if(!is_convertable_to_clocker(target.mind) || target.stat == DEAD) // mindshield or holy or mindless monkey. or dead guy
- target.visible_message("[src] in glowing manner starts corrupting [target]!", \
- "You feel as your body starts to corrupt by [src] underneath!")
+ target.visible_message(span_warning("[src] in glowing manner starts corrupting [target]!"), \
+ span_danger("You feel as your body starts to corrupt by [src] underneath!"))
target.Weaken(20 SECONDS)
else // just a living non-clocker civil
- to_chat(target, "\"You belong to me now.\"")
+ to_chat(target, span_clocklarge("\"You belong to me now.\""))
target.heal_overall_damage(50, 50)
if(isgolem(target))
target.mind.wipe_memory()
@@ -438,7 +369,7 @@
converting = null
update_icon(UPDATE_ICON_STATE)
if(!silent)
- visible_message("[src] slowly stops glowing!")
+ visible_message(span_warning("[src] slowly stops glowing!"))
/obj/structure/clockwork/functional/altar/attackby(obj/item/I, mob/user, params)
@@ -467,30 +398,30 @@
var/datum/game_mode/gamemode = SSticker.mode
if(GLOB.ark_of_the_clockwork_justiciar)
- to_chat(user, "There is already Gateway somewhere!")
+ to_chat(user, span_clockitalic("There is already Gateway somewhere!"))
return FALSE
if(gamemode.clocker_objs.clock_status < RATVAR_NEEDS_SUMMONING)
- to_chat(user, "Ratvar is not ready to be summoned yet!")
+ to_chat(user, span_clockitalic("Ratvar is not ready to be summoned yet!"))
return FALSE
if(gamemode.clocker_objs.clock_status == RATVAR_HAS_RISEN)
- to_chat(user, "\"My fellow. There is no need for it anymore.\"")
+ to_chat(user, span_clockitalic("\"My fellow. There is no need for it anymore.\""))
return FALSE
var/list/summon_areas = gamemode.clocker_objs.obj_summon.ritual_spots
if(!(A in summon_areas))
- to_chat(user, "Ratvar can only be summoned where the veil is weak - in [english_list(summon_areas)]!")
+ to_chat(user, span_cultlarge("Ratvar can only be summoned where the veil is weak - in [english_list(summon_areas)]!"))
return FALSE
var/confirm_final = tgui_alert(user, "This is the FINAL step to summon, the crew will be alerted to your presence AND your location!",
"The power comes...", list("Let Ratvar shine ones more!", "No"))
if(user)
if(confirm_final != "Let Ratvar shine ones more!")
- to_chat(user, "You decide to prepare further before pincing the shard.")
+ to_chat(user, span_clockitalic("You decide to prepare further before pincing the shard."))
return FALSE
return TRUE
/obj/structure/clockwork/functional/altar/proc/begin_the_ritual()
- visible_message("The [src] expands itself revealing into the great Ark!")
+ visible_message(span_danger("The [src] expands itself revealing into the great Ark!"))
new /obj/structure/clockwork/functional/celestial_gateway(get_turf(src))
qdel(src)
return
@@ -499,7 +430,7 @@
name = "cogscarab fabricator"
desc = "House for a tons of little cogscarabs, self-producing and maintaining itself."
icon_state = "fabricator"
- death_message = "Fabricator crumbles and dusts, leaving nothing behind!"
+ death_message = span_danger("Fabricator crumbles and dusts, leaving nothing behind!")
var/list/cogscarab_list = list()
canbehidden = TRUE
var/cog_slots = 0
@@ -508,11 +439,7 @@
/obj/structure/clockwork/functional/cogscarab_fabricator/examine(mob/user)
. = ..()
if(!hidden && (isclocker(user) || isobserver(user)))
- . += "There's [cog_slots - cogscarab_list.len] cogscarab ready. [timer_fabrictor ? "And it's creating another one now" : "It stopped creating."]."
-
-
-/obj/structure/clockwork/functional/cogscarab_fabricator/update_icon_state()
- icon_state = anchored ? "[initial(icon_state)]-off" : initial(icon_state)
+ . += span_notice("There's [cog_slots - cogscarab_list.len] cogscarab ready. [timer_fabrictor ? "And it's creating another one now" : "It stopped creating."].")
/obj/structure/clockwork/functional/cogscarab_fabricator/Initialize(mapload)
@@ -577,17 +504,17 @@
/obj/structure/clockwork/functional/cogscarab_fabricator/attack_ghost(mob/dead/observer/user)
if(hidden)
- to_chat(user, "It's hidden and cannot produce you at this state!")
+ to_chat(user, span_warning("It's hidden and cannot produce you at this state!"))
return FALSE
if(!anchored)
- to_chat(user, "It seems to be non-functional to produce a new shell!")
+ to_chat(user, span_warning("It seems to be non-functional to produce a new shell!"))
return FALSE
if(cogscarab_list.len >= cog_slots)
- to_chat(user, "There's no empty shells to take!")
+ to_chat(user, span_notice("There's no empty shells to take!"))
return FALSE
if(alert(user, "Do you wish to become cogscarab?",,"Yes","No") == "Yes")
if(cogscarab_list.len >= cog_slots) //Double check. No duplications
- to_chat(user, "There's no empty shells to take!")
+ to_chat(user, span_notice("There's no empty shells to take!"))
return FALSE
var/mob/living/silicon/robot/cogscarab/cog = new(loc)
cog.key = user.key
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 53e7e3d53a6..a6254bc7d85 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -229,17 +229,17 @@ GLOBAL_LIST_EMPTY(all_cults)
for(var/datum/mind/M in cult)
if(!M.current || !ishuman(M.current))
continue
- SEND_SOUND(M.current, 'sound/hallucinations/i_see_you2.ogg')
+ SEND_SOUND(M.current, 'sound/ambience/antag/bloodcult_eyes.ogg')
to_chat(M.current, "The veil weakens as your cult grows, your eyes begin to glow...")
log_admin("The Blood Cult has risen. The eyes started to glow.")
addtimer(CALLBACK(src, PROC_REF(rise), M.current), 20 SECONDS)
- else if(cult_players >= ascend_number)
+ if(cult_players >= ascend_number)
cult_ascendant = TRUE
for(var/datum/mind/M in cult)
if(!M.current || !ishuman(M.current))
continue
- SEND_SOUND(M.current, 'sound/hallucinations/im_here1.ogg')
+ SEND_SOUND(M.current, 'sound/ambience/antag/bloodcult_halos.ogg')
to_chat(M.current, "Your cult is ascendant and the red harvest approaches - you cannot hide your true nature for much longer!")
log_admin("The Blood Cult has Ascended. The blood halo started to appear.")
addtimer(CALLBACK(src, PROC_REF(ascend), M.current), 20 SECONDS)
diff --git a/code/game/gamemodes/cult/cult_datums.dm b/code/game/gamemodes/cult/cult_datums.dm
index 67e9a78d879..37c0839928f 100644
--- a/code/game/gamemodes/cult/cult_datums.dm
+++ b/code/game/gamemodes/cult/cult_datums.dm
@@ -5,6 +5,7 @@
var/dagger_icon = "blood_dagger"
var/sword_icon = "blood_blade"
var/construct_glow = LIGHT_COLOR_BLOOD_MAGIC
+ var/apocalypse_cinema = /datum/cinematic/cult_arm
//God Entity
var/entity_name = "Nar'Sie"
@@ -81,6 +82,7 @@
dagger_icon = "hell_dagger"
sword_icon = "hell_blade"
construct_glow = LIGHT_COLOR_FIRE
+ apocalypse_cinema = /datum/cinematic/cult_arm_kharin
entity_name = "Kha'Rin"
entity_title1 = "The Burning One"
@@ -140,6 +142,7 @@
dagger_icon = "death_dagger"
sword_icon = "death_blade"
construct_glow = LIGHT_COLOR_DARKRED
+ apocalypse_cinema = /datum/cinematic/cult_arm_reaper
entity_name = "The Reaper"
entity_title1 = "The Silent One"
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 5b816cdee38..9125fcd838d 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -334,7 +334,7 @@
if(curselimit > 1)
to_chat(user, "We have exhausted our ability to curse the shuttle.")
return
- if(locate(/obj/singularity/narsie) in GLOB.poi_list || locate(/mob/living/simple_animal/demon/slaughter/cult) in GLOB.mob_list)
+ if(locate(/obj/singularity/god/narsie) in GLOB.poi_list || locate(/mob/living/simple_animal/demon/slaughter/cult) in GLOB.mob_list)
to_chat(user, "Nar'Sie or her avatars are already on this plane, there is no delaying the end of all things.")
return
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index 2617dc197d2..38debc9ede7 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -160,6 +160,9 @@
if(!(A in summon_areas)) // Check again to make sure they didn't move
to_chat(user, "The ritual can only begin where the veil is weak - in [english_list(summon_areas)]!")
return
+ for(var/datum/mind/M in gamemode.cult)
+ if(M.current)
+ SEND_SOUND(M.current, 'sound/ambience/antag/bloodcult_scribe.ogg')
GLOB.command_announcement.Announce("Образы внепространственного бога из неизвестного измерения собираются воедино в [A.map_name]. Сорвите ритуал любой ценой, пока станция не была уничтожена! Действие космического закона и стандартных рабочих процедур приостановлено. Весь экипаж должен уничтожать культистов на месте.", "Отдел Центрального Командования по делам высших измерений.", 'sound/AI/spanomalies.ogg')
log_admin("[key_name_log(user)] started to draw narsie rune!")
add_game_logs("started to draw narsie rune at [AREACOORD(user)]", user)
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index a22f4d65d8b..e628ab013cd 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -1004,7 +1004,7 @@ structure_check() searches for nearby cultist structures required for the invoca
update_icon(UPDATE_ICON_STATE)
var/turf/T = get_turf(src)
sleep(40)
- new /obj/singularity/narsie/large(T) //Causes Nar'Sie to spawn even if the rune has been removed
+ new /obj/singularity/god/narsie/large(T) //Causes Nar'Sie to spawn even if the rune has been removed
/obj/effect/rune/narsie/attackby(obj/item/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal.
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 13d6f7d0feb..6796065e042 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -718,31 +718,54 @@
antaghud.leave_hud(mob_mind.current)
set_antag_hud(mob_mind.current, null)
+/datum/game_mode/proc/apocalypse_cinema(obj/singularity/god/god, inevitable = FALSE)
+ if(god.soul_devoured <= 17 && !inevitable)
+ return FALSE
+
+ if(istype(god, /obj/singularity/god/narsie))
+ return SSticker.cultdat.apocalypse_cinema
+
+ if(istype(god, /obj/singularity/god/ratvar))
+ return /datum/cinematic/cult_arm_ratvar
+
+ return FALSE
+
/datum/game_mode/proc/apocalypse()
set_security_level(SEC_LEVEL_DELTA)
- GLOB.priority_announcement.Announce("Обнаружена угроза класса 'Разрушитель миров'. Самостоятельное решение задачи маловероятно. Моделирование пути решения начато, ожидайте.", "Отдел Центрального Командования по делам высших измерений", 'sound/AI/commandreport.ogg')
+ GLOB.priority_announcement.Announce("Обнаружена угроза класса 'Разрушитель миров'. Моделирование пути противостояния угрозе начато, ожидайте.", "Отдел Центрального Командования по делам высших измерений", 'sound/AI/commandreport.ogg')
sleep(50 SECONDS)
- GLOB.priority_announcement.Announce("Моделирование завершено. Меры будут приняты в ближайшем времени. Всему живому персоналу: не допустите усиления угрозы любой ценой.", "Отдел Центрального Командования по делам высших измерений", 'sound/AI/commandreport.ogg')
+ GLOB.priority_announcement.Announce("Моделирование завершено. Всему живому персоналу: не допустите усиления угрозы любой ценой. Меры будут приняты в ближайшее время.", "Отдел Центрального Командования по делам высших измерений", 'sound/AI/commandreport.ogg')
sleep(30 SECONDS)
- var/obj/singularity/narsie/N = locate(/obj/singularity/narsie) in GLOB.poi_list
- var/obj/singularity/ratvar/R = locate(/obj/singularity/ratvar) in GLOB.poi_list
- if(!N && !R)
- GLOB.priority_announcement.Announce("Угроза пропала с наших сенсоров. Нам требуется срочный отчет о вашей ситуации. Но, мгм, пока что мы санкционировали вам экстренную эвакуацию.", 'sound/AI/commandreport.ogg')
+
+ var/obj/singularity/god/god = locate(/obj/singularity/god) in GLOB.poi_list
+
+ if(!god)
+ GLOB.priority_announcement.Announce("Угроза пропала с наших сенсоров. Санкционирована экстренная эвакуация.", "Отдел Центрального Командования по делам высших измерений", 'sound/AI/commandreport.ogg')
SSshuttle.emergency.request(null, 0.3)
SSshuttle.emergency.canRecall = FALSE
return
- if(SSticker.cultdat.name == "Cult of Nar'Sie")
- if(N.soul_devoured > 20)
- play_cinematic(/datum/cinematic/cult_arm, world)
- sleep(15 SECONDS)
- SSticker.force_ending = TRUE
+
+ var/datum/cinematic/cinema = apocalypse_cinema(god, FALSE)
+
+ if(!cinema)
+ var/obj/machinery/nuclearbomb/bomb
+ for(var/obj/machinery/nuclearbomb/bomb_to_find in GLOB.poi_list)
+ if(is_station_level(bomb_to_find.z) && bomb_to_find.core)
+ bomb = bomb_to_find
+ break
+
+ if(bomb)
+ bomb.safety = FALSE
+ bomb.explode()
+ qdel(god)
return
- play_cinematic(/datum/cinematic/nuke/self_destruct, world)
- sleep(8 SECONDS)
- SSticker.force_ending = TRUE
- qdel(R)
- qdel(N)
+ cinema = apocalypse_cinema(god, TRUE)
+
+ play_cinematic(cinema, world)
+ sleep(15 SECONDS)
+ SSticker.force_ending = TRUE
+ return
#undef NUKE_INTACT
#undef NUKE_CORE_MISSING
diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm
index c607b410751..20afc715ecf 100644
--- a/code/game/gamemodes/miniantags/borer/borer.dm
+++ b/code/game/gamemodes/miniantags/borer/borer.dm
@@ -152,6 +152,14 @@
truename = "[borer_names[min(generation, borer_names.len)]] [rand(1000,9999)]"
GrantBorerActions()
+/mob/living/simple_animal/borer/death(gibbed)
+ . = ..()
+
+ if(!.)
+ return .
+
+ detach()
+
/mob/living/simple_animal/borer/ComponentInitialize()
AddComponent( \
/datum/component/animal_temperature, \
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index 8c48b16fe19..5fbf5fbe614 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -150,6 +150,8 @@
messages.Add("You are a member of the revolutionaries' leadership!")
messages.Add(rev_mind.prepare_announce_objectives())
to_chat(rev_mind.current, chat_box_red(messages.Join("
")))
+ if(rev_mind.current)
+ SEND_SOUND(rev_mind.current, 'sound/ambience/antag/revolutionary_tide.ogg')
/////////////////////////////////////////////////////////////////////////////////
//This are equips the rev heads with their gear, and makes the clown not clumsy//
@@ -231,6 +233,8 @@
update_rev_icons_added(rev_mind)
if(jobban_isbanned(rev_mind.current, ROLE_REV) || jobban_isbanned(rev_mind.current, ROLE_SYNDICATE))
replace_jobbanned_player(rev_mind.current, ROLE_REV)
+ if(rev_mind.current)
+ SEND_SOUND(rev_mind.current, 'sound/ambience/antag/revolutionary_tide.ogg')
return 1
//////////////////////////////////////////////////////////////////////////////
//Deals with players being converted from the revolution (Not a rev anymore)// // Modified to handle borged MMIs. Accepts another var if the target is being borged at the time -- Polymorph.
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index bdefc1983a3..26a3307edad 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -77,6 +77,7 @@
pre_malf_AI = traitor
pre_malf_AI.restricted_roles = (restricted_jobs|protected_jobs|protected_jobs_AI) // All jobs are restricted for malf AI despite the config.
pre_malf_AI.restricted_roles -= JOB_TITLE_AI
+ traitor.special_role = SPECIAL_ROLE_MALFAI
SSjobs.new_malf = traitor.current
else
pre_traitors += traitor
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index 66c9fd23423..97b3b8b0aba 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -11,7 +11,7 @@
w_class = WEIGHT_CLASS_NORMAL
hitsound = 'sound/weapons/bladeslice.ogg'
var/charged = 1
- var/spawn_type = /obj/singularity/narsie/wizard
+ var/spawn_type = /obj/singularity/god/narsie/wizard
var/spawn_amt = 1
var/activate_descriptor = "reality"
var/rend_desc = "You should run now."
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index cd6b328235e..7845ee9396e 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -9,20 +9,16 @@
supervisors = "the head of personnel"
department_head = list(JOB_TITLE_HOP)
selection_color = "#e6e6e6"
- access = list() //See /datum/job/assistant/get_access()
- minimal_access = list() //See /datum/job/assistant/get_access()
+ access = list(ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MAINT_TUNNELS)
alt_titles = list("Tourist","Businessman","Trader","Assistant")
outfit = /datum/outfit/job/assistant
+ insurance_type = INSURANCE_TYPE_BUDGETARY
salary = SALARY_FOR_NISHEBROD
min_start_money = 10
max_start_money = 200
-/datum/job/civilian/get_access()
- if(CONFIG_GET(flag/assistant_maint))
- return list(ACCESS_MAINT_TUNNELS)
- else
- return list()
/datum/outfit/job/assistant
name = "Civilian"
diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm
index ec9a69f772c..bfe04726e2b 100644
--- a/code/game/jobs/job/engineering.dm
+++ b/code/game/jobs/job/engineering.dm
@@ -18,10 +18,11 @@
ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS,
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINISAT, ACCESS_MECHANIC, ACCESS_MINERAL_STOREROOM)
minimal_player_age = 21
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_COMMAND
exp_requirements = 3000
exp_type = EXP_TYPE_ENGINEERING
outfit = /datum/outfit/job/chief_engineer
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 300
min_start_money = 400
diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
index 81a2eec7563..ed8fe897cae 100644
--- a/code/game/jobs/job/job.dm
+++ b/code/game/jobs/job/job.dm
@@ -56,7 +56,7 @@
var/exp_max = 0 //Max EXP, then hide
var/exp_type_max = ""
- var/min_age_allowed = 0
+ var/min_age_type = SPECIES_AGE_MIN
var/disabilities_allowed = 1
var/transfer_allowed = TRUE // If false, ID computer will always discourage transfers to this job, even if player is eligible
var/hidden_from_job_prefs = FALSE // if true, job preferences screen never shows this job.
@@ -69,7 +69,7 @@
var/salary = 0
var/min_start_money = 0
var/max_start_money = 0
-
+
var/outfit = null
/////////////////////////////////
@@ -78,6 +78,9 @@
var/required_objectives=list() // Objectives that are ALWAYS added.
var/optional_objectives=list() // Objectives that are SOMETIMES added.
+ var/insurance = INSURANCE_STANDART
+ var/insurance_type = INSURANCE_TYPE_STANDART
+
//Only override this proc
/datum/job/proc/after_spawn(mob/living/carbon/human/H)
@@ -138,11 +141,15 @@
return 0
/datum/job/proc/character_old_enough(client/C)
+ . = FALSE
+
if(!C)
- return FALSE
- if(C.prefs.age >= min_age_allowed)
- return TRUE
- return FALSE
+ return
+
+ var/datum/species/species = GLOB.all_species[C.prefs.species]
+ if(C.prefs.age >= get_age_limits(species, min_age_type))
+ . = TRUE
+
/datum/job/proc/species_in_blacklist(client/C)
if(!C)
diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm
index 5c05556fc24..06879c0c751 100644
--- a/code/game/jobs/job/medical.dm
+++ b/code/game/jobs/job/medical.dm
@@ -16,10 +16,11 @@
ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE,
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_PSYCHIATRIST, ACCESS_MAINT_TUNNELS, ACCESS_PARAMEDIC, ACCESS_MINERAL_STOREROOM)
minimal_player_age = 21
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_COMMAND
exp_requirements = 3000
exp_type = EXP_TYPE_MEDICAL
outfit = /datum/outfit/job/cmo
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 300
min_start_money = 400
@@ -57,8 +58,8 @@
supervisors = "the chief medical officer"
department_head = list(JOB_TITLE_CMO)
selection_color = "#d1eeff"
- access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MAINT_TUNNELS)
alt_titles = list("Surgeon","Nurse")
minimal_player_age = 3
exp_requirements = 600
@@ -144,8 +145,8 @@
supervisors = "the chief medical officer"
department_head = list(JOB_TITLE_CMO)
selection_color = "#d1eeff"
- access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
minimal_player_age = 3
exp_requirements = 180
exp_type = EXP_TYPE_CREW
@@ -210,8 +211,8 @@
supervisors = "the chief medical officer"
department_head = list(JOB_TITLE_CMO)
selection_color = "#d1eeff"
- access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
alt_titles = list("Pharmacist","Pharmacologist")
minimal_player_age = 7
exp_requirements = 600
@@ -249,8 +250,8 @@
supervisors = "the chief medical officer and the research director"
department_head = list(JOB_TITLE_CMO, JOB_TITLE_RD)
selection_color = "#d1eeff"
- access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_RESEARCH)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_RESEARCH, ACCESS_MAINT_TUNNELS)
minimal_player_age = 3
exp_requirements = 900
exp_type = EXP_TYPE_MEDICAL
@@ -287,8 +288,8 @@
supervisors = "the chief medical officer"
department_head = list(JOB_TITLE_CMO)
selection_color = "#d1eeff"
- access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
alt_titles = list("Pathologist","Microbiologist")
minimal_player_age = 7
exp_requirements = 900
@@ -327,8 +328,8 @@
supervisors = "the chief medical officer"
department_head = list(JOB_TITLE_CMO)
selection_color = "#d1eeff"
- access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_PSYCHIATRIST)
- minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHIATRIST)
+ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_PSYCHIATRIST, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHIATRIST, ACCESS_MAINT_TUNNELS)
alt_titles = list("Psychologist","Therapist")
outfit = /datum/outfit/job/psychiatrist
diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm
index 90f25de2c95..9529e98f49a 100644
--- a/code/game/jobs/job/science.dm
+++ b/code/game/jobs/job/science.dm
@@ -18,7 +18,7 @@
ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD,
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_XENOARCH, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM, ACCESS_NETWORK)
minimal_player_age = 21
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_COMMAND
exp_requirements = 3000
exp_type = EXP_TYPE_SCIENCE
// All science-y guys get bonuses for maxing out their tech.
@@ -26,6 +26,7 @@
/datum/job_objective/further_research
)
outfit = /datum/outfit/job/rd
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 300
min_start_money = 400
@@ -63,8 +64,8 @@
supervisors = "the research director"
department_head = list(JOB_TITLE_RD)
selection_color = "#e6d1f0"
- access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINERAL_STOREROOM)
+ access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
alt_titles = list("Anomalist", "Plasma Researcher", "Xenobiologist", "Chemical Researcher")
minimal_player_age = 3
exp_requirements = 600
@@ -148,8 +149,8 @@
supervisors = "the research director"
department_head = list(JOB_TITLE_RD)
selection_color = "#e6d1f0"
- access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) //As a job that handles so many corpses, it makes sense for them to have morgue access.
- minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) //As a job that handles so many corpses, it makes sense for them to have morgue access.
+ access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) //As a job that handles so many corpses, it makes sense for them to have morgue access.
+ minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) //As a job that handles so many corpses, it makes sense for them to have morgue access.
alt_titles = list("Biomechanical Engineer","Mechatronic Engineer")
minimal_player_age = 3
exp_requirements = 900
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index 56d0a76681b..6ad447c1326 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -18,12 +18,13 @@
ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING,
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_PILOT, ACCESS_WEAPONS)
minimal_player_age = 21
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_COMMAND
blocked_race_for_job = list(SPECIES_VOX)
exp_requirements = 3000
exp_type = EXP_TYPE_SECURITY
disabilities_allowed = 0
outfit = /datum/outfit/job/hos
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 300
min_start_money = 400
@@ -35,7 +36,7 @@
uniform = /obj/item/clothing/under/rank/head_of_security
suit = /obj/item/clothing/suit/armor/hos
- gloves = /obj/item/clothing/gloves/color/black/hos
+ gloves = /obj/item/clothing/gloves/combat/swat
shoes = /obj/item/clothing/shoes/jackboots
head = /obj/item/clothing/head/HoS
l_ear = /obj/item/radio/headset/heads/hos/alt
@@ -70,15 +71,15 @@
supervisors = "the head of security"
department_head = list(JOB_TITLE_HOS)
selection_color = "#edcdcd"
- access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS)
- minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS)
+ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_PILOT, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_GATEWAY, ACCESS_WEAPONS)
+ minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_PILOT, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_GATEWAY, ACCESS_WEAPONS)
alt_titles = list("Brig Sergeant")
minimal_player_age = 21
- min_age_allowed = 30
blocked_race_for_job = list(SPECIES_VOX)
exp_requirements = 2100
exp_type = EXP_TYPE_SECURITY
outfit = /datum/outfit/job/warden
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 170
min_start_money = 200
@@ -130,6 +131,7 @@
blocked_race_for_job = list(SPECIES_VOX)
exp_type = EXP_TYPE_SECURITY
outfit = /datum/outfit/job/detective
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 170
min_start_money = 200
@@ -194,6 +196,7 @@
exp_requirements = 600
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/officer
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 170
min_start_money = 200
@@ -262,6 +265,7 @@
exp_requirements = 1800
exp_type = EXP_TYPE_MEDICAL
outfit = /datum/outfit/job/brigdoc
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 170
min_start_money = 200
@@ -303,6 +307,7 @@
exp_requirements = 1200
exp_type = EXP_TYPE_SECURITY
outfit = /datum/outfit/job/pilot
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 170
min_start_money = 200
diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm
index c4dd45f0416..be71c5ee5da 100644
--- a/code/game/jobs/job/silicon.dm
+++ b/code/game/jobs/job/silicon.dm
@@ -11,6 +11,7 @@
minimal_player_age = 30
exp_requirements = 3000
exp_type = EXP_TYPE_SILICON
+ insurance_type = INSURANCE_TYPE_NONE
/datum/job/ai/equip(mob/living/carbon/human/H)
if(!H)
@@ -33,6 +34,7 @@
exp_requirements = 300
exp_type = EXP_TYPE_CREW
alt_titles = list("Robot")
+ insurance_type = INSURANCE_TYPE_NONE
/datum/job/cyborg/equip(mob/living/carbon/human/H)
if(!H)
diff --git a/code/game/jobs/job/supervisor.dm b/code/game/jobs/job/supervisor.dm
index 3962ccab4d5..950f74dd3f0 100644
--- a/code/game/jobs/job/supervisor.dm
+++ b/code/game/jobs/job/supervisor.dm
@@ -13,12 +13,13 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
access = list() //See get_access()
minimal_access = list() //See get_access()
minimal_player_age = 30
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_COMMAND
blocked_race_for_job = list(SPECIES_VOX)
exp_requirements = 3000
exp_type = EXP_TYPE_COMMAND
disabilities_allowed = 0
outfit = /datum/outfit/job/captain
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 500
min_start_money = 600
@@ -29,7 +30,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
/datum/job/captain/announce(mob/living/carbon/human/H)
. = ..()
- GLOB.captain_announcement.Announce("Экипажу станции, капитан [H.real_name] взошел на борт!")
+ GLOB.captain_announcement.Announce("Экипажу станции, капитан [H.real_name] взош[genderize_ru(H.gender, "ёл", "ла", "ло", "ли")] на борт!")
/datum/outfit/job/captain
name = "Captain"
@@ -72,7 +73,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
req_admin_notify = 1
is_command = 1
minimal_player_age = 21
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_COMMAND
blocked_race_for_job = list(SPECIES_VOX)
exp_requirements = 1200
exp_type = EXP_TYPE_COMMAND
@@ -89,6 +90,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_HEADS_VAULT, ACCESS_MINING_STATION,
ACCESS_CLOWN, ACCESS_MIME, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
outfit = /datum/outfit/job/hop
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 300
min_start_money = 400
@@ -128,7 +130,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
is_command = 1
transfer_allowed = FALSE
minimal_player_age = 21
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_COMMAND
blocked_race_for_job = list(SPECIES_VOX)
exp_requirements = 1200
exp_type = EXP_TYPE_COMMAND
@@ -146,6 +148,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
ACCESS_CLOWN, ACCESS_MIME, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_WEAPONS, ACCESS_NTREP)
alt_titles = list("NT Consultant","Central Command Consultant")
outfit = /datum/outfit/job/nanotrasenrep
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 300
min_start_money = 400
@@ -180,7 +183,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
is_command = 1
transfer_allowed = FALSE
minimal_player_age = 21
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_HIGH_ED
blocked_race_for_job = list(SPECIES_VOX)
exp_requirements = 3000
exp_type = EXP_TYPE_SECURITY
@@ -193,6 +196,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
minimal_access = list(ACCESS_FORENSICS_LOCKERS, ACCESS_SEC_DOORS, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_MAINT_TUNNELS, ACCESS_RESEARCH,
ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_HEADS, ACCESS_BLUESHIELD, ACCESS_WEAPONS)
outfit = /datum/outfit/job/blueshield
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 300
min_start_money = 400
@@ -203,7 +207,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
jobtype = /datum/job/blueshield
uniform = /obj/item/clothing/under/rank/blueshield
suit = /obj/item/clothing/suit/armor/vest/blueshield
- gloves = /obj/item/clothing/gloves/combat
+ gloves = /obj/item/clothing/gloves/combat/swat
shoes = /obj/item/clothing/shoes/jackboots
l_ear = /obj/item/radio/headset/heads/blueshield/alt
glasses = /obj/item/clothing/glasses/hud/health/sunglasses
@@ -238,7 +242,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
is_legal = 1
transfer_allowed = FALSE
minimal_player_age = 30
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_COMMAND
blocked_race_for_job = list(SPECIES_VOX)
exp_requirements = 1200
exp_type = EXP_TYPE_COMMAND
@@ -251,6 +255,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_LAWYER, ACCESS_MAGISTRATE, ACCESS_HEADS)
alt_titles = list("Judge")
outfit = /datum/outfit/job/judge
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 170
min_start_money = 200
@@ -295,11 +300,12 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca
minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_RESEARCH, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING)
alt_titles = list("Human Resources Agent","Lawyer","Attorney")
minimal_player_age = 30
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_HIGH_ED
blocked_race_for_job = list(SPECIES_VOX)
exp_requirements = 3000
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/lawyer
+ insurance_type = INSURANCE_TYPE_DELUXE
salary = 170
min_start_money = 200
diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm
index 7b43af99d36..00bdf0a6cab 100644
--- a/code/game/jobs/job/support.dm
+++ b/code/game/jobs/job/support.dm
@@ -11,11 +11,12 @@
selection_color = "#9f8545"
access = list(ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_HEADS_VAULT, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HEADS, ACCESS_SEC_DOORS, ACCESS_EVA, ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_HEADS_VAULT, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HEADS, ACCESS_SECURITY, ACCESS_EVA, ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
- min_age_allowed = 30
+ min_age_type = JOB_MIN_AGE_COMMAND
exp_requirements = 3000
exp_type = EXP_TYPE_CREW
alt_titles = list("Chief Supply Manager")
outfit = /datum/outfit/job/qm
+ insurance_type = INSURANCE_TYPE_DELUXE // Always has been.
//QM IS NOT THE HEAD!!
salary = 300
@@ -82,10 +83,11 @@
supervisors = "the quartermaster"
department_head = list(JOB_TITLE_QUARTERMASTER)
selection_color = "#e2dbc8"
- access = list(ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
+ access = list(ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_MINING, ACCESS_MINT, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
alt_titles = list("Spelunker")
outfit = /datum/outfit/job/mining
+ insurance_type = INSURANCE_TYPE_EXTENDED
salary = 100
min_start_money = 100
@@ -149,8 +151,8 @@
supervisors = "the head of personnel"
department_head = list(JOB_TITLE_HOP)
selection_color = "#d1e8d3"
- access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
- minimal_access = list(ACCESS_BAR, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
+ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_BAR, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
alt_titles = list("Barman","Barkeeper","Drink Artist")
outfit = /datum/outfit/job/bartender
@@ -191,8 +193,8 @@
supervisors = "the head of personnel"
department_head = list(JOB_TITLE_HOP)
selection_color = "#d1e8d3"
- access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE)
- minimal_access = list(ACCESS_KITCHEN)
+ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_KITCHEN, ACCESS_MAINT_TUNNELS)
alt_titles = list("Cook","Culinary Artist","Butcher")
outfit = /datum/outfit/job/chef
@@ -243,8 +245,8 @@
supervisors = "the head of personnel"
department_head = list(JOB_TITLE_HOP)
selection_color = "#d1e8d3"
- access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE)
- minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE)
+ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS)
alt_titles = list("Hydroponicist", "Botanical Researcher")
exp_requirements = 300
exp_type = EXP_TYPE_CREW
@@ -282,8 +284,8 @@
supervisors = "the head of personnel"
department_head = list(JOB_TITLE_HOP)
selection_color = "#d1e8d3"
- access = list(ACCESS_CLOWN, ACCESS_THEATRE)
- minimal_access = list(ACCESS_CLOWN, ACCESS_THEATRE)
+ access = list(ACCESS_CLOWN, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_CLOWN, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS)
alt_titles = list("Performance Artist","Comedian","Jester")
outfit = /datum/outfit/job/clown
@@ -500,8 +502,8 @@
supervisors = "the head of personnel"
department_head = list(JOB_TITLE_HOP)
selection_color = "#d1e8d3"
- access = list(ACCESS_MIME, ACCESS_THEATRE)
- minimal_access = list(ACCESS_MIME, ACCESS_THEATRE)
+ access = list(ACCESS_MIME, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MIME, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS)
alt_titles = list("Panthomimist")
outfit = /datum/outfit/job/mime
@@ -588,8 +590,8 @@
supervisors = "the head of personnel"
department_head = list(JOB_TITLE_HOP)
selection_color = "#d1e8d3"
- access = list(ACCESS_LIBRARY)
- minimal_access = list(ACCESS_LIBRARY)
+ access = list(ACCESS_LIBRARY, ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_LIBRARY, ACCESS_MAINT_TUNNELS)
alt_titles = list("Journalist")
outfit = /datum/outfit/job/librarian
@@ -622,8 +624,8 @@
department_head = list(JOB_TITLE_HOP)
selection_color = "#d1e8d3"
alt_titles = list("Hair Stylist","Beautician")
- access = list()
- minimal_access = list()
+ access = list(ACCESS_MAINT_TUNNELS)
+ minimal_access = list(ACCESS_MAINT_TUNNELS)
outfit = /datum/outfit/job/barber
salary = 100
diff --git a/code/game/jobs/job/syndicate.dm b/code/game/jobs/job/syndicate.dm
index 14499f5f49a..97ed2ea9c05 100644
--- a/code/game/jobs/job/syndicate.dm
+++ b/code/game/jobs/job/syndicate.dm
@@ -11,6 +11,7 @@
admin_only = 1
syndicate_command = 1
outfit = /datum/outfit/job/syndicateofficer
+ insurance_type = INSURANCE_TYPE_NONE
/datum/job/syndicateofficer/get_access()
return get_syndicate_access(title)
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index cf7b343135e..f98aed6eb68 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -11,9 +11,11 @@
var/mob/living/carbon/human/occupant
var/known_implants = list(/obj/item/implant/chem, /obj/item/implant/death_alarm, /obj/item/implant/mindshield, /obj/item/implant/tracking, /obj/item/implant/health)
var/isPrinting = FALSE
+ var/obj/item/card/id/inserted_id = null
/obj/machinery/bodyscanner/Destroy()
go_out()
+ eject_id()
return ..()
/obj/machinery/bodyscanner/power_change(forced = FALSE)
@@ -170,6 +172,16 @@
add_fingerprint(user)
ui_interact(user)
+/obj/machinery/bodyscanner/attackby(obj/item/I, mob/user)
+ if(istype(I, /obj/item/card/id))
+ if(inserted_id)
+ user.balloon_alert(user, "занято")
+ else if(user.drop_transfer_item_to_loc(I, src))
+ inserted_id = I
+ user.balloon_alert(user, "карта вставлена")
+
+ . = ..()
+
/obj/machinery/bodyscanner/relaymove(mob/user)
if(user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
return FALSE //maybe they should be able to get out with cuffs, but whatever
@@ -196,6 +208,13 @@
A.forceMove(loc)
SStgui.update_uis(src)
+/obj/machinery/bodyscanner/proc/eject_id()
+ if(!inserted_id)
+ return
+ inserted_id.forceMove(loc)
+ inserted_id = null
+ SStgui.update_uis(src)
+
/obj/machinery/bodyscanner/force_eject_occupant(mob/target)
go_out()
@@ -231,6 +250,7 @@
var/list/data = list()
data["occupied"] = occupant ? TRUE : FALSE
+ data["has_id"] = inserted_id ? TRUE : FALSE
var/occupantData[0]
if(occupant)
@@ -387,6 +407,10 @@
P.info += "
Notes:
"
P.name = "Body Scan - [name]"
isPrinting = FALSE
+ if("insurance")
+ do_insurance_collection(usr, occupant, inserted_id ? inserted_id.associated_account_number : null)
+ if("eject_id")
+ eject_id()
else
return FALSE
diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm
index 49218e2674f..e45b8a0599b 100644
--- a/code/game/machinery/computer/HolodeckControl.dm
+++ b/code/game/machinery/computer/HolodeckControl.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/HolodeckControl
name = "holodeck control computer"
- desc = "A computer used to control a nearby holodeck."
+ desc = "Компьютер, используемый для управления ближайшим голодеком."
icon_keyboard = "tech_key"
icon_screen = "holocontrol"
var/area/linkedholodeck = null
@@ -515,54 +515,54 @@
icon_state = "hoop"
anchored = TRUE
density = TRUE
- pass_flags = LETPASSTHROW
+ pass_flags_self = LETPASSTHROW
+ damage_deflection = 7 // You can't just break it with da foking glass ashtray.
/obj/structure/holohoop/grab_attack(mob/living/grabber, atom/movable/grabbed_thing)
. = TRUE
+
if(!isliving(grabbed_thing))
- return .
- var/mob/living/target = grabbed_thing
+ return
+
if(grabber.grab_state < GRAB_NECK)
to_chat(grabber, span_warning("You need a better grip to do that!"))
- return .
+ return
+
+ var/mob/living/target = grabbed_thing
+
visible_message(span_warning("[grabber] dunks [target] into [src]!"))
- target.forceMove(loc)
+ target.forceMove(get_turf(src))
target.Weaken(10 SECONDS)
/obj/structure/holohoop/attackby(obj/item/I, mob/user, params)
- if(user.drop_transfer_item_to_loc(I, src))
- visible_message(span_notice("[user] dunks [I] into [src]!"))
- return ATTACK_CHAIN_BLOCKED
+ if(user.a_intent == INTENT_HARM) // Players may use (DISARM|GRAB) intent for pushing each other.
+ return ..()
+ if(user.drop_transfer_item_to_loc(I, get_turf(src)))
+ visible_message(span_notice("[user] dunks [I] into [src]!"))
-/obj/structure/holohoop/has_prints()
- return FALSE
+ return ATTACK_CHAIN_BLOCKED
/obj/structure/holohoop/CanAllowThrough(atom/movable/mover, border_dir)
- . = ..()
- if((isitem(mover) && !isprojectile(mover)) && mover.throwing && mover.pass_flags != PASSEVERYTHING)
- if(prob(50))
- mover.forceMove(loc)
- visible_message(span_notice("Swish! [mover] lands in [src]."))
- else
- visible_message(span_alert("[mover] bounces off of [src]'s rim!"))
- return FALSE
+ if(!isitem(mover) || isprojectile(mover))
+ return ..()
+ if((mover.throwing && mover.throwing.thrower && HAS_TRAIT(mover.throwing.thrower, TRAIT_BADASS)) || prob(50))
+ mover.forceMove(get_turf(src))
+ visible_message(span_notice("Swish! [mover] lands in [src]."))
-/obj/structure/holohoop/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
- if(isitem(AM) && !isprojectile(AM))
- if(prob(50) || (throwingdatum && throwingdatum.thrower && HAS_TRAIT(throwingdatum.thrower, TRAIT_BADASS)))
- AM.forceMove(get_turf(src))
- visible_message(span_warning("Swish! [AM] lands in [src]."))
- return
- else
- visible_message(span_danger("[AM] bounces off of [src]'s rim!"))
- return ..()
else
- return ..()
+ visible_message(span_alert("[mover] bounces off of [src]'s rim!"))
+
+ return FALSE
+
+
+/obj/structure/holohoop/has_prints()
+ return FALSE
+
/obj/machinery/readybutton
name = "Ready Declaration Device"
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 6f4c8f5d247..24952ee61b1 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -49,7 +49,7 @@
/obj/machinery/computer/arcade/battle
name = "arcade machine"
- desc = "Does not support Pinball."
+ desc = "Не поддерживает пинбол."
icon = 'icons/obj/machines/computer.dmi'
icon_state = "arcade"
circuit = /obj/item/circuitboard/arcade/battle
@@ -277,7 +277,7 @@
/obj/machinery/computer/arcade/orion_trail
name = "The Orion Trail"
- desc = "Learn how our ancestors got to Orion, and have fun in the process!"
+ desc = "Узнайте, как наши предки добрались до Ориона, и повеселитесь в процессе!"
icon_state = "arcade"
circuit = /obj/item/circuitboard/arcade/orion_trail
var/busy = 0 //prevent clickspam that allowed people to ~speedrun~ the game.
@@ -382,7 +382,7 @@
emagged = 0 //removes the emagged status after you lose
playing = 0 //also a new game
name = "The Orion Trail"
- desc = "Learn how our ancestors got to Orion, and have fun in the process!"
+ desc = "Узнайте, как наши предки добрались до Ориона, и повеселитесь в процессе!"
else if(event)
dat = eventdat
@@ -955,7 +955,7 @@
prizevend(score)
emagged = 0
name = "The Orion Trail"
- desc = "Learn how our ancestors got to Orion, and have fun in the process!"
+ desc = "Узнайте, как наши предки добрались до Ориона, и повеселитесь в процессе!"
/obj/machinery/computer/arcade/orion_trail/emag_act(mob/user)
if(!emagged)
@@ -963,7 +963,7 @@
if(user)
to_chat(user, span_notice("You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode."))
name = "The Orion Trail: Realism Edition"
- desc = "Learn how our ancestors got to Orion, and try not to die in the process!"
+ desc = "Узнайте, как наши предки добрались до Ориона, и постарайтесь не сдохнуть в процессе!"
newgame()
emagged = 1
@@ -1015,7 +1015,7 @@
/obj/machinery/computer/arcade/orion_trail/pc_frame
name = "special purpose computer"
- desc = "It will be difficult to perform calculations on this computer..."
+ desc = "Выполнять вычисления на этом компьютере будет сложно..."
icon = 'icons/obj/machines/computer.dmi'
icon_state = "aimainframe"
@@ -1026,7 +1026,7 @@
/obj/machinery/computer/arcade/battle/pc_frame
name = "special purpose computer"
- desc = "It will be difficult to perform calculations on this computer..."
+ desc = "Выполнять вычисления на этом компьютере будет сложно..."
icon = 'icons/obj/machines/computer.dmi'
icon_state = "aimainframe"
diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm
index 1911c9db534..277d4f9f894 100644
--- a/code/game/machinery/computer/atmos_alert.dm
+++ b/code/game/machinery/computer/atmos_alert.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/atmos_alert
name = "atmospheric alert computer"
- desc = "Used to access the station's atmospheric sensors."
+ desc = "Используется для мониторинга атмосферных датчиков станции."
circuit = /obj/item/circuitboard/atmos_alert
var/ui_x = 350
var/ui_y = 300
diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm
index 8ed0296b968..c9bbf42cf21 100644
--- a/code/game/machinery/computer/atmos_control.dm
+++ b/code/game/machinery/computer/atmos_control.dm
@@ -14,7 +14,7 @@
/obj/machinery/computer/atmoscontrol/laptop
name = "atmospherics laptop"
- desc = "Cheap Nanotrasen laptop."
+ desc = "Дешёвый ноутбук корпорации Nanotrasen."
icon_state = "medlaptop"
density = FALSE
diff --git a/code/game/machinery/computer/brigcells.dm b/code/game/machinery/computer/brigcells.dm
index c41c0442916..ace3d9f823e 100644
--- a/code/game/machinery/computer/brigcells.dm
+++ b/code/game/machinery/computer/brigcells.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/brigcells
name = "cell management computer"
- desc = "Used to manage prison cells."
+ desc = "Используется для управления тюремными камерами."
icon_keyboard = "security_key"
icon_screen = "cell_monitor"
use_power = IDLE_POWER_USE
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index db352e64bfa..97ae55b7816 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -462,12 +462,15 @@
build_path = /obj/machinery/computer/turbine_computer
origin_tech = "programming=4;engineering=4;powerstorage=4"
+
/obj/item/circuitboard/HONKputer
board_name = "HONKputer"
build_path = /obj/machinery/computer/HONKputer
origin_tech = "programming=2"
icon = 'icons/obj/machines/HONKputer.dmi'
icon_state = "bananium_board"
+ board_type = "HONKputer"
+
/obj/item/circuitboard/broken
board_name = "Broken curcuit"
@@ -549,6 +552,14 @@
var/obj/item/circuitboard/circuit = null
+/obj/structure/computerframe/Initialize(mapload, obj/item/circuitboard/circuit)
+ . = ..()
+
+ if(circuit)
+ src.circuit = new circuit(src)
+ state = STATE_GLASS // Spawned during completed computer Init, so it's completed.
+
+
/obj/structure/computerframe/examine(mob/user)
. = ..()
. += span_notice("It is [anchored ? "bolted to the floor" : "unbolted"].")
@@ -569,10 +580,33 @@
/obj/structure/computerframe/deconstruct(disassembled = TRUE)
if(!(obj_flags & NODECONSTRUCT))
- drop_computer_parts()
+ var/location = drop_location()
+ drop_computer_materials(location)
+
+ if(circuit)
+ circuit.forceMove(location)
+
+ if(state >= STATE_WIRES)
+ new /obj/item/stack/cable_coil(location, 5)
+
+ if(state == STATE_GLASS)
+ new /obj/item/stack/sheet/glass(location, 2)
+
+ state = STATE_EMPTY
+ circuit = null
+
return ..() // will qdel the frame
+/obj/structure/computerframe/Destroy()
+ if(istype(circuit))
+ qdel(circuit)
+
+ circuit = null
+
+ return ..()
+
+
/obj/structure/computerframe/AltClick(mob/user)
if(!Adjacent(user))
return
@@ -588,16 +622,9 @@
/obj/structure/computerframe/obj_break(damage_flag)
deconstruct()
-/obj/structure/computerframe/proc/drop_computer_parts()
- var/location = drop_location()
+
+/obj/structure/computerframe/proc/drop_computer_materials(location)
new /obj/item/stack/sheet/metal(location, 5)
- if(circuit)
- circuit.forceMove(location)
- circuit = null
- if(state >= STATE_WIRES)
- new /obj/item/stack/cable_coil(location, 5)
- if(state == STATE_GLASS)
- new /obj/item/stack/sheet/glass(location, 2)
/obj/structure/computerframe/update_icon_state()
@@ -651,27 +678,30 @@
/obj/structure/computerframe/screwdriver_act(mob/living/user, obj/item/I)
if(state != STATE_CIRCUIT && state != STATE_NOWIRES && state != STATE_GLASS)
return FALSE
+
. = TRUE
+
if(!I.use_tool(src, user, volume = I.tool_volume))
- return .
+ return
switch(state)
if(STATE_CIRCUIT)
to_chat(user, span_notice("You screw the circuit board into place."))
state = STATE_NOWIRES
update_icon(UPDATE_ICON_STATE)
+
if(STATE_NOWIRES)
to_chat(user, span_notice("You unfasten the circuit board."))
state = STATE_CIRCUIT
update_icon(UPDATE_ICON_STATE)
+
if(STATE_GLASS)
+ if(!anchored)
+ to_chat(user, span_warning("Monitor can't be properly connected to the unfastened frame!"))
+ return
+
to_chat(user, span_notice("You connect the monitor."))
- var/B = new circuit.build_path(loc)
- if(istype(circuit, /obj/item/circuitboard/supplycomp))
- var/obj/machinery/computer/supplycomp/SC = B
- var/obj/item/circuitboard/supplycomp/C = circuit
- SC.can_order_contraband = C.contraband_enabled
- qdel(src)
+ new circuit.build_path(get_turf(src), src)
/obj/structure/computerframe/wirecutter_act(mob/living/user, obj/item/I)
@@ -694,16 +724,17 @@
if(STATE_EMPTY)
if(!istype(I, /obj/item/circuitboard))
return ..()
+
add_fingerprint(user)
- if(istype(I, /obj/item/circuitboard/HONKputer) && !istype(src, /obj/structure/computerframe/HONKputer))
- to_chat(user, span_warning("[src] does not accept circuit boards of this type!"))
- return ATTACK_CHAIN_PROCEED
- var/obj/item/circuitboard/new_circuit = I
- if(new_circuit.board_type != "computer")
+
+ if(!circuit_compatibility_check(I))
to_chat(user, span_warning("[src] does not accept circuit boards of this type!"))
return ATTACK_CHAIN_PROCEED
- if(!user.drop_transfer_item_to_loc(new_circuit, src))
+
+ if(!user.drop_transfer_item_to_loc(I, src))
return ..()
+
+ var/obj/item/circuitboard/new_circuit = I
new_circuit.play_tool_sound(src)
to_chat(user, span_notice("You place [new_circuit] inside [src]."))
name += " ([new_circuit.board_name])"
@@ -755,11 +786,27 @@
return ..()
+/obj/structure/computerframe/proc/on_construction(obj/machinery/computer/computer)
+ forceMove(computer)
+
+
+/obj/structure/computerframe/proc/circuit_compatibility_check(obj/item/circuitboard/circuit)
+ return circuit.board_type == "computer"
+
+
/obj/structure/computerframe/HONKputer
name = "Bananium Computer-frame"
icon = 'icons/obj/machines/HONKputer.dmi'
+/obj/structure/computerframe/HONKputer/drop_computer_materials(location)
+ new /obj/item/stack/sheet/mineral/bananium(location, 20)
+
+
+/obj/structure/computerframe/HONKputer/circuit_compatibility_check(obj/item/circuitboard/circuit)
+ return circuit.board_type == "HONKputer"
+
+
/obj/structure/computerframe/abductor
icon_state = "comp_frame_alien1"
@@ -768,47 +815,16 @@
icon_state = "comp_frame_alien[state]"
-/obj/structure/computerframe/abductor/screwdriver_act(mob/living/user, obj/item/I)
- . = TRUE
- if(!I.use_tool(src, user))
- return
+/obj/structure/computerframe/abductor/on_construction(obj/machinery/computer/computer)
+ ..()
+ computer.abductor = TRUE
+ computer.max_integrity = 400
+ computer.obj_integrity = 400
- switch(state)
- if(STATE_CIRCUIT)
- to_chat(user, span_notice("You screw the circuit board into place."))
- state = STATE_NOWIRES
- I.play_tool_sound(src)
- update_icon(UPDATE_ICON_STATE)
- if(STATE_NOWIRES)
- to_chat(user, span_notice("You unfasten the circuit board."))
- state = STATE_CIRCUIT
- I.play_tool_sound(src)
- update_icon(UPDATE_ICON_STATE)
- if(STATE_GLASS)
- to_chat(user, span_notice("You connect the monitor."))
- I.play_tool_sound(src)
- var/obj/machinery/computer/computer = new circuit.build_path(loc)
- computer.abductor = TRUE
- computer.update_icon()
- computer.max_integrity = 400
- computer.obj_integrity = 400
- computer.update_icon()
- if(istype(circuit, /obj/item/circuitboard/supplycomp))
- var/obj/machinery/computer/supplycomp/supply_comp = computer
- var/obj/item/circuitboard/supplycomp/supply_circuit = circuit
- supply_comp.can_order_contraband = supply_circuit.contraband_enabled
- qdel(src)
-
-/obj/structure/computerframe/abductor/drop_computer_parts()
- var/location = drop_location()
+
+/obj/structure/computerframe/abductor/drop_computer_materials(location)
new /obj/item/stack/sheet/mineral/abductor(location, 4)
- if(circuit)
- circuit.forceMove(location)
- circuit = null
- if(state >= STATE_WIRES)
- new /obj/item/stack/cable_coil(location, 5)
- if(state == STATE_GLASS)
- new /obj/item/stack/sheet/glass(location, 2)
+
#undef STATE_EMPTY
#undef STATE_CIRCUIT
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index acb5745e3f8..8d5244cd0ad 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -2,7 +2,7 @@
/obj/machinery/computer/security
name = "security camera console"
- desc = "Used to access the various cameras networks on the station."
+ desc = "Используется для доступа к сетям камер на станции."
icon_keyboard = "security_key"
icon_screen = "cameras"
@@ -68,6 +68,9 @@
// Open UI
ui = new(user, src, "CameraConsole", name)
ui.open()
+ sleep(1) //Fast and furious: assets were too slow and camera got screwed!
+ if(!ui.closing)
+ ui.window?.reinitialize()
/obj/machinery/computer/security/ui_assets(mob/user)
return list(
@@ -198,7 +201,7 @@
// Other computer monitors.
/obj/machinery/computer/security/telescreen
name = "telescreen"
- desc = "Used for watching camera networks."
+ desc = "Используется для просмотра сети камер."
icon_state = "telescreen_console"
icon_screen = "telescreen"
icon_keyboard = null
@@ -228,7 +231,7 @@
/obj/machinery/computer/security/telescreen/entertainment
name = "entertainment monitor"
- desc = "Damn, they better have Paradise TV on these things."
+ desc = "Чёрт возьми, лучше бы они показывали Paradise TV."
icon_state = "entertainment_console"
icon_screen = "entertainment_off"
light_color = "#FFEEDB"
@@ -239,41 +242,75 @@
/// Icon utilised when `GLOB.active_video_cameras` list have anything inside.
var/icon_screen_on = "entertainment"
+/obj/machinery/computer/security/telescreen/entertainment/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_MOB_ATTACKED_RANGED, PROC_REF(on_ranged_attack))
+
+/obj/machinery/computer/security/telescreen/entertainment/Destroy()
+ . = ..()
+ UnregisterSignal(src, COMSIG_MOB_ATTACKED_RANGED)
+
+/obj/machinery/computer/security/telescreen/entertainment/proc/on_ranged_attack(datum/source, mob/user, params)
+ SIGNAL_HANDLER
+
+ if(stat)
+ user.unset_machine()
+ return
+
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/datum, ui_interact), user)
/obj/machinery/computer/security/telescreen/entertainment/update_overlays()
icon_screen = length(GLOB.active_video_cameras) ? icon_screen_on : initial(icon_screen)
return ..()
+/obj/machinery/computer/security/telescreen/entertainment/ui_state(mob/user)
+ if(issilicon(user))
+ if(isAI(user))
+ var/mob/living/silicon/ai/AI = user
+ if(!AI.lacks_power() || AI.apc_override)
+ return GLOB.always_state
+
+ if(isrobot(user))
+ return GLOB.always_state
+
+ else if(ishuman(user))
+ if(get_dist(src, user) > 6)
+ return GLOB.default_state
+
+ if(!stat)
+ return GLOB.range_state
+
+ return GLOB.default_state
/obj/machinery/computer/security/telescreen/singularity
name = "Singularity Engine Telescreen"
- desc = "Used for watching the singularity chamber."
+ desc = "Используется для наблюдения за зоной содержания сингулярности."
network = list("Singularity")
circuit = /obj/item/circuitboard/camera/telescreen/singularity
/obj/machinery/computer/security/telescreen/toxin_chamber
name = "Toxins Telescreen"
- desc = "Used for watching the test chamber."
+ desc = "Используется для наблюдения за полигоном."
network = list("Toxins")
/obj/machinery/computer/security/telescreen/test_chamber
name = "Test Chamber Telescreen"
- desc = "Used for watching the test chamber."
+ desc = "Используется для наблюдения за полигоном."
network = list("TestChamber")
/obj/machinery/computer/security/telescreen/research
name = "Research Monitor"
- desc = "Used for watching the RD's goons from the safety of his office."
+ desc = "С помощью этого монитора Директор Исследований может наблюдать за своими подхалимами из безопасного места."
network = list("Research","Research Outpost","RD")
/obj/machinery/computer/security/telescreen/prison
name = "Prison Monitor"
- desc = "Used for watching Prison Wing holding areas."
+ desc = "Используется для мониторинга помещений тюремного блока."
network = list("Prison")
/obj/machinery/computer/security/wooden_tv
name = "security camera monitor"
- desc = "An old TV hooked into the station's camera network."
+ desc = "Старый телевизор, подключенный к сети камер станции."
icon_state = "television"
icon_keyboard = null
icon_screen = "detective_tv"
@@ -284,7 +321,7 @@
/obj/machinery/computer/security/mining
name = "outpost camera monitor"
- desc = "Used to access the various cameras on the outpost."
+ desc = "Используется для доступа к различным камерам на аванпосте."
icon_keyboard = "mining_key"
icon_screen = "mining"
light_color = "#F9BBFC"
@@ -293,7 +330,7 @@
/obj/machinery/computer/security/engineering
name = "engineering camera monitor"
- desc = "Used to monitor fires and breaches."
+ desc = "Используется для отслеживания возникающих пожаров и аварий."
icon_keyboard = "power_key"
icon_screen = "engie_cams"
light_color = "#FAC54B"
diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm
index 83a743258e6..204c22dee2c 100644
--- a/code/game/machinery/computer/camera_advanced.dm
+++ b/code/game/machinery/computer/camera_advanced.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/camera_advanced
name = "advanced camera console"
- desc = "Used to access the various cameras on the station."
+ desc = "Используется для доступа к различным камерам, установленным на станции."
icon_screen = "cameras"
icon_keyboard = "security_key"
var/mob/camera/aiEye/remote/eyeobj
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index f3e83ca3077..7bd435a4b05 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -10,7 +10,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/obj/machinery/computer/card
name = "identification computer"
- desc = "Terminal for programming Nanotrasen employee ID cards to access parts of the station."
+ desc = "Терминал, используемый для изменения уровня доступа ID-карт сотрудников Nanotrasen."
icon_keyboard = "id_key"
icon_screen = "id"
req_access = list(ACCESS_CHANGE_IDS)
@@ -772,7 +772,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/obj/machinery/computer/card/minor
name = "department management console"
target_dept = TARGET_DEPT_GENERIC
- desc = "You can use this to change ID's for specific departments."
+ desc = "Вы можете использовать это, чтобы изменить ID-карту для определенного отдела."
icon_screen = "idminor"
circuit = /obj/item/circuitboard/card/minor
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index bd3383befe3..fb1a7c90f5e 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -12,7 +12,7 @@
// The communications computer
/obj/machinery/computer/communications
name = "communications console"
- desc = "This allows the Captain to contact Central Command, or change the alert level. It also allows the command staff to call the Escape Shuttle."
+ desc = "Консоль, с помощью которой Капитан может связаться с Центральным Командованием или изменить уровень угрозы. Она так же позволяет командному составу вызвать эвакуационный шаттл."
icon_keyboard = "tech_key"
icon_screen = "comm"
req_access = list(ACCESS_HEADS)
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index 2625ebbeec0..e03674bd29e 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -11,6 +11,7 @@
integrity_failure = 100
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 20)
var/obj/item/circuitboard/circuit = null //if circuit==null, computer can't disassembly
+ var/obj/structure/computerframe/frame = /obj/structure/computerframe
var/icon_keyboard = "generic_key"
var/icon_screen = "generic"
var/light_range_on = 1
@@ -22,11 +23,30 @@
var/force_no_power_icon_state = FALSE
-/obj/machinery/computer/Initialize(mapload)
+/obj/machinery/computer/Initialize(mapload, obj/structure/computerframe/frame)
. = ..()
+
+ if(frame)
+ src.frame = frame
+
+ else
+ var/frame_type = abductor ? /obj/structure/computerframe/abductor : src.frame
+ src.frame = new frame_type(src, circuit)
+
+ src.frame.on_construction(src)
power_change()
update_icon()
+
+/obj/machinery/computer/Destroy()
+ if(istype(frame))
+ qdel(frame)
+
+ frame = null
+
+ return ..()
+
+
/obj/machinery/computer/process()
if(stat & (NOPOWER|BROKEN))
return FALSE
@@ -140,37 +160,35 @@
if(prob(10))
obj_break("energy")
+
/obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user)
on_deconstruction()
if(!(obj_flags & NODECONSTRUCT))
if(circuit) //no circuit, no computer frame
- var/obj/structure/computerframe/A
- if(abductor)
- A = new /obj/structure/computerframe/abductor(loc)
- else
- A = new /obj/structure/computerframe(loc)
- var/obj/item/circuitboard/M = new circuit(A)
- A.name += " ([M.board_name])"
- A.setDir(dir)
- A.circuit = M
- A.set_anchored(TRUE)
if(stat & BROKEN)
if(user)
to_chat(user, span_notice("The broken glass falls out."))
+
else
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE)
+
new /obj/item/shard(drop_location())
new /obj/item/shard(drop_location())
- A.state = 4
+ frame.state = 4
+
else
if(user)
to_chat(user, span_notice("You disconnect the monitor."))
- A.state = 5
- A.update_icon()
+
+ frame.update_icon()
+
for(var/obj/C in src)
- C.forceMove(loc)
+ C.forceMove(get_turf(src))
+
+ frame = null
qdel(src)
+
/obj/machinery/computer/proc/set_broken()
if(!(resistance_flags & INDESTRUCTIBLE))
stat |= BROKEN
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index 07bf9e541f2..d90f389afea 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/crew
name = "crew monitoring computer"
- desc = "Used to monitor active health sensors built into most of the crew's uniforms."
+ desc = "Используется для контроля активных датчиков состояния здоровья, встроенных в униформу большинства членов экипажа."
icon_keyboard = "med_key"
icon_screen = "crew"
use_power = IDLE_POWER_USE
diff --git a/code/game/machinery/computer/depot.dm b/code/game/machinery/computer/depot.dm
index ce7c86f2d74..374c77b8621 100644
--- a/code/game/machinery/computer/depot.dm
+++ b/code/game/machinery/computer/depot.dm
@@ -390,7 +390,7 @@
/obj/machinery/computer/syndicate_depot/teleporter
name = "Syndicate Redspace Teleporter Console"
- desc = "This suspicious high-tech machine creates a Bi-Directional teleporter that is capable to ignore any bluespace interference!"
+ desc = "Эта подозрительная высокотехнологичная машина создает двунаправленный телепорт, способный игнорировать любые BlueSpace-помехи!"
icon_screen = "telesci"
icon_keyboard = "teleport_key"
window_height = 320
diff --git a/code/game/machinery/computer/honkputer.dm b/code/game/machinery/computer/honkputer.dm
index fea3bf0964a..a4c90924d49 100644
--- a/code/game/machinery/computer/honkputer.dm
+++ b/code/game/machinery/computer/honkputer.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/HONKputer
name = "\improper HONKputer Mark I"
- desc = "A yellow computer used in case of critically low levels of HONK."
+ desc = "Яркий жёлтый компьютер. Воспользуйтесь им, если уровень ХОНКА упал до критически низкого уровня!"
icon = 'icons/obj/machines/HONKputer.dmi'
icon_state = "honkputer"
icon_keyboard = "key_honk"
@@ -8,6 +8,7 @@
light_color = LIGHT_COLOR_PINK
req_access = list(ACCESS_CLOWN)
circuit = /obj/item/circuitboard/HONKputer
+ frame = /obj/structure/computerframe/HONKputer
var/authenticated = 0
var/message_cooldown = 0
var/state = STATE_DEFAULT
diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm
index 6c778767f61..3e03f4f2118 100644
--- a/code/game/machinery/computer/law.dm
+++ b/code/game/machinery/computer/law.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/aiupload
name = "\improper AI upload console"
- desc = "Used to upload laws to the AI."
+ desc = "Используется для манипуляций с законами ИИ."
icon_screen = "command"
icon_keyboard = "med_key"
circuit = /obj/item/circuitboard/aiupload
@@ -59,7 +59,7 @@
// Why is this not a subtype
/obj/machinery/computer/borgupload
name = "cyborg upload console"
- desc = "Used to upload laws to Cyborgs."
+ desc = "Используется для манипуляций с законами киборгов."
icon_screen = "command"
icon_keyboard = "med_key"
circuit = /obj/item/circuitboard/borgupload
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 3d1580776f8..a04d1cacb97 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -9,7 +9,7 @@
/obj/machinery/computer/med_data //TODO:SANITY
name = "medical records console"
- desc = "This can be used to check medical records."
+ desc = "Используется для проверки медицинских записей."
icon_keyboard = "med_key"
icon_screen = "medcomp"
req_access = list(ACCESS_MEDICAL, ACCESS_FORENSICS_LOCKERS)
@@ -346,10 +346,16 @@
return
if(field == "age")
+ if(!active1)
+ return
+
+ var/datum/species/species = active1.fields["species"]
var/new_age = text2num(answer)
- if(new_age < AGE_MIN || new_age > AGE_MAX)
- set_temp("Invalid age. It must be between [AGE_MIN] and [AGE_MAX].", "danger")
+ var/age_limits = get_age_limits(species, list(SPECIES_AGE_MIN, SPECIES_AGE_MAX))
+ if(new_age < age_limits[SPECIES_AGE_MIN] || new_age > age_limits[SPECIES_AGE_MAX])
+ set_temp("Invalid age. It must be between [age_limits[SPECIES_AGE_MIN]] and [age_limits[SPECIES_AGE_MAX]].", "danger")
return
+
answer = new_age
if(istype(active2) && (field in active2.fields))
@@ -455,7 +461,7 @@
/obj/machinery/computer/med_data/laptop
name = "medical laptop"
- desc = "Cheap Nanotrasen laptop."
+ desc = "Дешёвый ноутбук корпорации Nanotrasen."
icon_state = "laptop"
icon_keyboard = "laptop_key"
icon_screen = "medlaptop"
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index e4e7e098f7f..d2e1e9958f6 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -1,7 +1,7 @@
// Allows you to monitor messages that passes the server.
/obj/machinery/computer/message_monitor
name = "message monitoring console"
- desc = "Used to monitor the crew's messages that are sent via PDA. It can also be used to view Request Console messages."
+ desc = "Используется для отслеживания сообщений экипажа, отправляемых через КПК. Его также можно использовать для просмотра сообщений Консоли Запросов."
icon_screen = "comm_logs"
light_color = LIGHT_COLOR_GREEN
var/hack_icon = "tcboss"
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index 0a788efdae5..5cb46086fbd 100644
--- a/code/game/machinery/computer/pod.dm
+++ b/code/game/machinery/computer/pod.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/pod
name = "mass drivers and pod doors control"
- desc = "A control for launching pods. Some people prefer firing Mechas."
+ desc = "Элемент управления для запуска капсул. Некоторые предпочитают запускать из них мехов."
icon_screen = "mass_driver"
light_color = "#555555"
circuit = /obj/item/circuitboard/pod
@@ -279,7 +279,7 @@
/obj/machinery/computer/pod/old/syndicate
name = "external airlock controls"
- desc = "The Syndicate operate on a tight budget. Operates external airlocks."
+ desc = "Синдикат работает в условиях ограниченного бюджета. Управляет внешними шлюзами."
req_access = list(ACCESS_SYNDICATE)
circuit = /obj/item/circuitboard/syndicatedoor
light_color = "#00FFFF"
@@ -294,7 +294,7 @@
/obj/machinery/computer/pod/old/swf
name = "\improper Magix System IV"
- desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition"
+ desc = "Таинственный артефакт, в котором сконцентрировано огромное количество магической энергии."
circuit = /obj/item/circuitboard/swfdoor
diff --git a/code/game/machinery/computer/power.dm b/code/game/machinery/computer/power.dm
index ca4faf48060..10a05df63fa 100644
--- a/code/game/machinery/computer/power.dm
+++ b/code/game/machinery/computer/power.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/monitor
name = "power monitoring console"
- desc = "Used to monitor power levels across the station."
+ desc = "Используется для мониторинга уровня энергопотребления на всей станции."
icon_screen = "power"
icon_keyboard = "power_key"
use_power = ACTIVE_POWER_USE
@@ -23,7 +23,7 @@
/obj/machinery/computer/monitor/secret //Hides the power monitor (such as ones on ruins & CentCom) from PDA's to prevent metagaming.
name = "outdated power monitoring console"
- desc = "It monitors power levels across the local powernet."
+ desc = "Используется для отслеживания уровня энергопотребления в локальной сети."
circuit = /obj/item/circuitboard/powermonitor/secret
is_secret_monitor = TRUE
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 23faf723eb7..e0deb7d3cf5 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/robotics
name = "robotics control console"
- desc = "Used to remotely lockdown or detonate linked Cyborgs."
+ desc = "Используется для дистанционной блокировки или подрыва привязанных киборгов."
icon = 'icons/obj/machines/computer.dmi'
icon_keyboard = "tech_key"
icon_screen = "robot"
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index a2ea58d267d..6e032928fa6 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -6,7 +6,7 @@
/obj/machinery/computer/secure_data
name = "security records"
- desc = "Used to view and edit personnel's security records."
+ desc = "Используется для просмотра и редактирования записей службы безопасности о персонале."
icon_keyboard = "security_key"
icon_screen = "security"
circuit = /obj/item/circuitboard/secure_data
@@ -364,12 +364,19 @@
return
if(field == "age")
+ if(!record_general)
+ return
+
+ var/datum/species/species = record_general.fields["species"]
var/new_age = text2num(answer)
- if(new_age < AGE_MIN || new_age > AGE_MAX)
- set_temp("Invalid age. It must be between [AGE_MIN] and [AGE_MAX].", "danger")
+ var/age_limits = get_age_limits(species, list(SPECIES_AGE_MIN, SPECIES_AGE_MAX))
+ if(new_age < age_limits[SPECIES_AGE_MIN] || new_age > age_limits[SPECIES_AGE_MAX])
+ set_temp("Invalid age. It must be between [age_limits[SPECIES_AGE_MIN]] and [age_limits[SPECIES_AGE_MAX]].", "danger")
return
+
answer = new_age
- else if(field == "criminal")
+
+ if(field == "criminal")
var/text = "Please enter a reason for the status change to [answer]:"
if(answer == SEC_RECORD_STATUS_EXECUTE)
text = "Please explain why they are being executed. Include a list of their crimes, and victims."
@@ -511,7 +518,7 @@
/obj/machinery/computer/secure_data/laptop
name = "security laptop"
- desc = "Nanotrasen Security laptop. Bringing modern compact computing to this century!"
+ desc = "Ноутбук службы безопасности Nanotrasen. Привносим современные компактные компьютеры в наше столетие!"
icon_state = "laptop"
icon_keyboard = "seclaptop_key"
icon_screen = "seclaptop"
diff --git a/code/game/machinery/computer/sm_monitor.dm b/code/game/machinery/computer/sm_monitor.dm
index f0c3f13959b..b1538fee04b 100644
--- a/code/game/machinery/computer/sm_monitor.dm
+++ b/code/game/machinery/computer/sm_monitor.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/sm_monitor
name = "supermatter monitoring console"
- desc = "Used to monitor supermatter shards."
+ desc = "Используется для мониторинга состояния осколка суперматерии."
icon_keyboard = "power_key"
icon_screen = "smmon_0"
circuit = /obj/item/circuitboard/sm_monitor
diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm
index cb9fd66aeea..a7d321d724a 100644
--- a/code/game/machinery/computer/station_alert.dm
+++ b/code/game/machinery/computer/station_alert.dm
@@ -1,7 +1,7 @@
/obj/machinery/computer/station_alert
name = "station alert console"
- desc = "Used to access the station's automated alert system."
+ desc = "Используется для доступа к автоматизированной системе тревог станции."
icon_keyboard = "tech_key"
icon_screen = "alert:0"
light_color = LIGHT_COLOR_CYAN
diff --git a/code/game/machinery/computer/syndie_cargo.dm b/code/game/machinery/computer/syndie_cargo.dm
index d9b05135b90..fff047fe5bc 100644
--- a/code/game/machinery/computer/syndie_cargo.dm
+++ b/code/game/machinery/computer/syndie_cargo.dm
@@ -254,7 +254,7 @@ GLOBAL_LIST_INIT(data_storages, list()) //list of all cargo console data storage
**************************/
/obj/machinery/computer/syndie_supplycomp
name = "Supply Pad Console"
- desc = "Used to order supplies by using syndiepads!"
+ desc = "Необходим для оформления заказов используя SyndiePads!"
icon_screen = "syndinavigation"
icon_keyboard = "syndie_key"
req_access = list(ACCESS_SYNDICATE_CARGO)
@@ -306,7 +306,7 @@ GLOBAL_LIST_INIT(data_storages, list()) //list of all cargo console data storage
var/turf/T = pick_n_take(spawnTurfs) //turf we will place it in
for(var/obj/machinery/syndiepad/recieving_pad as anything in recievingPads)
recieving_pad.use_power(10000 / recieving_pad.power_efficiency)
- flick("sqpad-beam", recieving_pad )
+ flick("[initial(recieving_pad.icon_state)]-beam", recieving_pad)
playsound(get_turf(recieving_pad), 'sound/weapons/emitter2.ogg', 25, TRUE)
if(!T)
@@ -494,7 +494,7 @@ GLOBAL_LIST_INIT(data_storages, list()) //list of all cargo console data storage
/obj/machinery/computer/syndie_supplycomp/public
name = "Supply Ordering Console"
- desc = "Used to order supplies from cargo staff."
+ desc = "Используется для оформления заказов у отдела снабжения"
circuit = /obj/item/circuitboard/syndicatesupplycomp/public
req_access = list()
is_public = TRUE
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index be03be6937e..01e0baaca4b 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -1016,6 +1016,19 @@ to destroy them and players will be able to make replacements.
/obj/item/stack/ore/bluespace_crystal = 5,
/obj/item/stack/cable_coil = 15)
+/obj/item/circuitboard/advanced_roboquest_pad
+ board_name = "Robotics Request Advanced Quantum Pad"
+ icon_state = "abductor_mod"
+ build_path = /obj/machinery/roboquest_pad/advanced
+ board_type = "machine"
+ origin_tech = "programming=4;engineering=5;plasmatech=5;bluespace=6"
+ req_components = list(
+ /obj/item/stack/ore/bluespace_crystal = 5,
+ /obj/item/stock_parts/capacitor/purple = 1,
+ /obj/item/stock_parts/manipulator/purple = 1,
+ /obj/item/stock_parts/scanning_module/purple = 1,
+ /obj/item/stack/cable_coil = 15)
+
/obj/item/circuitboard/sleeper
board_name = "Sleeper"
build_path = /obj/machinery/sleeper
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 50381c2f467..833eee399e6 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -15,7 +15,7 @@
/obj/machinery/computer/cryopod
name = "cryogenic oversight console"
- desc = "An interface between crew and the cryogenic storage oversight systems."
+ desc = "Интерфейс управления системой контроля за криогенным хранилищем."
icon = 'icons/obj/machines/cryogenic2.dmi'
icon_state = "cellconsole"
circuit = /obj/item/circuitboard/cryopodcontrol
@@ -703,7 +703,7 @@
/obj/machinery/computer/cryopod/robot
name = "robotic storage console"
- desc = "An interface between crew and the robotic storage systems"
+ desc = "Интерфейс управления системой контроля за робо-хранилищем."
icon = 'icons/obj/machines/robot_storage.dmi'
icon_state = "console"
circuit = /obj/item/circuitboard/robotstoragecontrol
diff --git a/code/game/machinery/customat.dm b/code/game/machinery/customat.dm
index db6013927da..15fd069fb6a 100644
--- a/code/game/machinery/customat.dm
+++ b/code/game/machinery/customat.dm
@@ -155,6 +155,7 @@
/// Direct ref to the trunk pipe underneath us
var/obj/structure/disposalpipe/trunk/trunk
+
/obj/machinery/customat/proc/set_up_components()
component_parts = list()
var/obj/item/circuitboard/vendor/V = new
@@ -178,7 +179,7 @@
/obj/machinery/customat/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
. = ..(AM, skipcatch, hitpush, blocked, throwingdatum)
- if (!AM.throwforce)
+ if(!AM.throwforce)
return
if(COOLDOWN_FINISHED(src, emp_cooldown) && COOLDOWN_FINISHED(src, alarm_cooldown))
@@ -205,7 +206,7 @@
/obj/machinery/customat/Destroy()
eject_all()
- if (trunk)
+ if(trunk)
var/obj/structure/disposalholder/holder = locate() in trunk
if(holder)
trunk.expel(holder)
@@ -346,34 +347,35 @@
..()
/obj/machinery/customat/proc/idcard_act(mob/user, obj/item/I)
- if (!isLocked())
+ if(!isLocked())
connected_id = I
balloon_alert(user, "заблокировано")
- else if (connected_id == I)
+ else if(connected_id == I)
connected_id = null
balloon_alert(user, "разблокировано")
else
balloon_alert(user, "карта не подходит")
/obj/machinery/customat/proc/get_key(obj/item/I, cost)
- return I.name + "_[cost]"
+ return format_text("[I]_[cost]")
/obj/machinery/customat/proc/insert(mob/user, obj/item/I, cost)
- if (inserted_items_count >= max_items_inside)
- if (user)
+ if(inserted_items_count >= max_items_inside)
+ if(user)
to_chat(user, span_warning("Лимит в [max_items_inside] предметов достигнут."))
return
+
remembered_costs[I.name] = cost
var/key = get_key(I, cost)
if(user && !user.drop_transfer_item_to_loc(I, src))
to_chat(user, span_warning("Вы не можете положить это внутрь."))
return
- if (!user) // If from pipe, transfer into src.
+ if(!user) // If from pipe, transfer into src.
I.forceMove(src)
var/datum/data/customat_product/product
- if (!(key in products))
+ if(!(key in products))
product = new /datum/data/customat_product(I)
product.price = !emagged ? cost : 0
product.key = key
@@ -386,20 +388,31 @@
/obj/machinery/customat/proc/try_insert(mob/user, obj/item/I, from_tube = FALSE)
var/cost = 100
- if (from_tube)
- if (I.name in remembered_costs)
+ if(from_tube)
+ if(I.name in remembered_costs)
cost = remembered_costs[I.name]
- else if (fast_insert && (I.name in remembered_costs))
+
+ else if(fast_insert && (I.name in remembered_costs))
cost = remembered_costs[I.name]
else
var/input_cost = tgui_input_number(user, "Пожалуйста, выберите цену для этого товара. Цена не может быть ниже 0 и выше 1000000 кредитов.", "Выбор цены", 0, 1000000, 0)
- if (!input_cost)
+ if(!input_cost)
to_chat(user, span_warning("Цена не указанна!"))
return
+
cost = input_cost
- if (user && get_dist(get_turf(user), get_turf(src)) > 1)
+
+ if(!user || user.stat)
+ return
+
+ if(!Adjacent(user))
to_chat(user, span_warning("Вы слишком далеко!"))
return
+
+ if(!user.is_in_hands(I))
+ to_chat(user, span_warning("Нечего положить внутрь!"))
+ return
+
insert(user, I, cost)
/obj/machinery/customat/attackby(obj/item/I, mob/user, params)
@@ -411,15 +424,15 @@
if(istype(I, /obj/item/crowbar) || istype(I, /obj/item/wrench))
return ATTACK_CHAIN_PROCEED_SUCCESS
- if (panel_open)
- if (istype(I, /obj/item/card/id))
+ if(panel_open)
+ if(istype(I, /obj/item/card/id))
idcard_act(user, I)
return ATTACK_CHAIN_BLOCKED_ALL
- else if (!isLocked())
+ else if(!isLocked())
try_insert(user, I)
return ATTACK_CHAIN_BLOCKED_ALL
- if (!istype(I, /obj/item/stack/nanopaste) && !istype(I, /obj/item/detective_scanner) && COOLDOWN_FINISHED(src, emp_cooldown) && COOLDOWN_FINISHED(src, alarm_cooldown))
+ if(!istype(I, /obj/item/stack/nanopaste) && !istype(I, /obj/item/detective_scanner) && COOLDOWN_FINISHED(src, emp_cooldown) && COOLDOWN_FINISHED(src, alarm_cooldown))
COOLDOWN_START(src, alarm_cooldown, alarm_delay)
playsound(src, 'sound/machines/burglar_alarm.ogg', I.force * 5, 0)
@@ -429,9 +442,11 @@
/obj/machinery/customat/crowbar_act(mob/user, obj/item/I)
if(!component_parts)
return
- if (isLocked())
+
+ if(isLocked())
to_chat(user, span_warning("[src] is locked."))
return
+
. = TRUE
eject_all()
default_deconstruction_crowbar(user, I)
@@ -440,6 +455,7 @@
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
+
if(anchored)
panel_open = !panel_open
panel_open ? SCREWDRIVER_OPEN_PANEL_MESSAGE : SCREWDRIVER_CLOSE_PANEL_MESSAGE
@@ -450,15 +466,18 @@
. = TRUE
if(!I.use_tool(src, user, 0, volume = 0))
return
+
default_unfasten_wrench(user, I, time = 60)
- if (anchored)
+ if(anchored)
trunk_check()
/obj/machinery/customat/exchange_parts(mob/user, obj/item/storage/part_replacer/W)
if(!istype(W))
return FALSE
+
if(!W.works_from_distance)
return FALSE
+
if(!component_parts || !canister)
return FALSE
@@ -466,11 +485,14 @@
if(panel_open || W.works_from_distance)
if(W.works_from_distance)
to_chat(user, display_parts(user))
+
else
to_chat(user, display_parts(user))
+
if(moved)
to_chat(user, "[moved] items restocked.")
W.play_rped_sound()
+
return TRUE
/obj/machinery/customat/emag_act(mob/user)
@@ -479,6 +501,7 @@
var/datum/data/customat_product/product = products[key]
product.price = 0
products[key] = product
+
if(user)
to_chat(user, "You short out the product lock on [src]")
@@ -516,6 +539,7 @@
data["user"]["name"] = account.owner_name
data["userMoney"] = account.money
data["user"]["job"] = "Silicon"
+
if(ishuman(user))
account = get_card_account(user)
var/mob/living/carbon/human/H = user
@@ -532,6 +556,7 @@
data["user"]["job"] = (istype(idcard) && idcard.rank) ? idcard.rank : "No Job"
else
data["guestNotice"] = "Unlinked ID detected. Present cash to pay.";
+
data["products"] = list()
for (var/key in products)
var/datum/data/customat_product/product = products[key]
@@ -543,6 +568,7 @@
Key = product.key
)
data["products"] += list(data_pr)
+
data["vend_ready"] = vend_ready
data["panel_open"] = panel_open ? TRUE : FALSE
data["speaker"] = shut_up ? FALSE : TRUE
@@ -560,11 +586,13 @@
if(issilicon(usr) && !isrobot(usr))
to_chat(usr, span_warning("The vending machine refuses to interface with you, as you are not in its target demographic!"))
return
+
switch(action)
if("toggle_voice")
if(panel_open)
shut_up = !shut_up
. = TRUE
+
if("vend")
if(!vend_ready)
to_chat(usr, span_warning("The vending machine is busy!"))
@@ -574,7 +602,7 @@
return
var/key = params["Key"]
var/datum/data/customat_product/product = products[key]
- if (product.amount <= 0)
+ if(product.amount <= 0)
to_chat(usr, "Sold out of [product.name].")
flick_vendor_overlay(FLICK_VEND)
return
@@ -630,12 +658,14 @@
flick_vendor_overlay(FLICK_DENY)
. = TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update.
return
+
if(paid)
vend(currently_vending, usr)
. = TRUE
else
to_chat(usr, span_warning("Payment failure: unable to process payment."))
vend_ready = TRUE
+
if(.)
add_fingerprint(usr)
@@ -678,9 +708,11 @@
if(istype(vended) && user && iscarbon(user) && user.Adjacent(src))
if(user.put_in_hands(vended, ignore_anim = FALSE))
put_on_turf = FALSE
+
if(put_on_turf)
var/turf/T = get_turf(src)
vended.forceMove(T)
+
product.containtment.Remove(product.containtment[1])
inserted_items_count--
return TRUE
@@ -702,6 +734,7 @@
/obj/machinery/customat/proc/speak(message)
if(stat & NOPOWER)
return
+
if(!message)
return
@@ -715,10 +748,11 @@
update_icon(UPDATE_OVERLAYS)
/obj/machinery/customat/AltClick(atom/movable/A)
- if (!panel_open)
+ if(!panel_open)
balloon_alert(A, "панель закрыта")
return
- if (isLocked())
+
+ if(isLocked())
balloon_alert(A, "автомат заблокирован")
return
@@ -736,10 +770,11 @@
var/turf/origin_turf = get_turf(src)
var/list/contents = holder.contents
for (var/atom/movable/content in contents)
- if (istype(content, /obj/item))
+ if(istype(content, /obj/item))
try_insert(null, content, TRUE)
else
content.forceMove(origin_turf)
+
qdel(holder)
/obj/machinery/customat/proc/trunk_check()
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 9b19f66a85f..f1bd6736acd 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -95,9 +95,11 @@
if(wood.get_amount() < 5)
to_chat(user, span_warning("You need at least five wooden planks to make a wall!"))
return ATTACK_CHAIN_PROCEED
+
to_chat(user, span_notice("You start adding [I] to [src]..."))
- if(do_after(user, 5 SECONDS, src) || QDELETED(wood) || !wood.use(5) || !isturf(loc))
+ if(!do_after(user, 5 SECONDS, src) || QDELETED(wood) || !wood.use(5) || !isturf(loc))
return ATTACK_CHAIN_PROCEED
+
var/turf/our_turf = loc
our_turf.ChangeTurf(/turf/simulated/wall/mineral/wood/nonmetal)
qdel(src)
diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm
index 9d169bfc371..e624dcdcc7a 100644
--- a/code/game/machinery/door_control.dm
+++ b/code/game/machinery/door_control.dm
@@ -307,6 +307,7 @@
icon_state = "altdoorctrl"
base_icon_state = "altdoorctrl"
ai_control = FALSE
+ resistance_flags = INDESTRUCTIBLE
/obj/machinery/door_control/secure/emag_act(user)
if(user)
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 1e44d53661e..a695c79d67d 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -173,7 +173,8 @@
if(DOOR_CLOSING)
icon_state = base_state
else
- icon_state = base_state
+ icon_state = "[base_state][density ? "" : "open"]"
+
SSdemo.mark_dirty(src)
/obj/machinery/door/window/open(forced=0)
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index e0efa1afea8..a14a6de580d 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -1037,6 +1037,7 @@ GLOBAL_LIST_EMPTY(turret_icons)
use_power = NO_POWER_USE
has_cover = FALSE
raised = TRUE
+ density = TRUE
scan_range = 9
faction = "syndicate"
@@ -1060,6 +1061,8 @@ GLOBAL_LIST_EMPTY(turret_icons)
if(istype(depotarea))
depotarea.turret_died()
+ density = FALSE
+
/obj/machinery/porta_turret/syndicate/shootAt(mob/living/target)
if(istype(depotarea))
depotarea.list_add(target, depotarea.hostile_list)
diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm
index 58c288a2464..df5f2064063 100644
--- a/code/game/machinery/quantum_pad.dm
+++ b/code/game/machinery/quantum_pad.dm
@@ -2,7 +2,7 @@
name = "quantum pad"
desc = "A bluespace quantum-linked telepad used for teleporting objects to other quantum pads."
icon = 'icons/obj/telescience.dmi'
- icon_state = "qpad-idle"
+ icon_state = "qpad"
anchored = TRUE
use_power = IDLE_POWER_USE
idle_power_usage = 200
@@ -79,7 +79,7 @@
. = TRUE
if(!I.tool_use_check(user, 0))
return
- default_deconstruction_screwdriver(user, "pad-idle-o", "qpad-idle", I)
+ default_deconstruction_screwdriver(user, "pad-o", initial(icon_state), I)
/obj/machinery/quantumpad/attack_hand(mob/user)
if(panel_open)
@@ -141,9 +141,9 @@
sparks()
linked_pad.sparks()
- flick("qpad-beam", src)
+ flick("[initial(icon_state)]-beam", src)
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, TRUE)
- flick("qpad-beam", linked_pad)
+ flick("[initial(linked_pad.icon_state)]-beam", linked_pad)
playsound(get_turf(linked_pad), 'sound/weapons/emitter2.ogg', 25, TRUE)
var/tele_success = TRUE
for(var/atom/movable/ROI in get_turf(src))
diff --git a/code/game/machinery/syndiepad.dm b/code/game/machinery/syndiepad.dm
index 478666b3e0a..fb468ad4168 100644
--- a/code/game/machinery/syndiepad.dm
+++ b/code/game/machinery/syndiepad.dm
@@ -2,7 +2,7 @@
name = "Syndicate quantum pad"
desc = "Syndicate redspace quantumpads! Can transport goods through galaxies and completely ignores bluespace interference!"
icon = 'icons/obj/telescience.dmi'
- icon_state = "sqpad-idle"
+ icon_state = "sqpad"
anchored = TRUE
use_power = IDLE_POWER_USE
idle_power_usage = 200
@@ -144,7 +144,7 @@
. = TRUE
if(!I.tool_use_check(user, 0))
return
- default_deconstruction_screwdriver(user, "pad-idle-o", "sqpad-idle", I)
+ default_deconstruction_screwdriver(user, "pad-o", initial(icon_state), I)
/obj/machinery/syndiepad/proc/pad_sync()
for(var/obj/machinery/syndiepad/S in GLOB.machines)
@@ -235,9 +235,9 @@
use_power(10000 / power_efficiency)
sparks()
linked_pad.sparks()
- flick("sqpad-beam", src)
+ flick("[initial(icon_state)]-beam", src)
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, TRUE)
- flick("sqpad-beam", linked_pad)
+ flick("[initial(linked_pad.icon_state)]-beam", linked_pad)
playsound(get_turf(linked_pad), 'sound/weapons/emitter2.ogg', 25, TRUE)
var/tele_success = FALSE
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 71f36293a8f..d502d816560 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -4,7 +4,7 @@
/obj/machinery/computer/teleporter
name = "teleporter control console"
- desc = "Used to control a linked teleportation Hub and Station."
+ desc = "Используется для управления привязанными телепортационными узлами и станциями."
icon_screen = "teleport"
icon_keyboard = "teleport_key"
circuit = /obj/item/circuitboard/teleporter
@@ -27,7 +27,7 @@
var/cc_beacon = FALSE
/obj/machinery/computer/teleporter/robotics //to do: limit targets to station only
- desc = "Used to control a linked teleportation Hub and Station. Only Research Director can change destination target."
+ desc = "Используется для управления привязанными телепортационными узлами и станциями. Только Директор Исследований может изменить точку назначения."
circuit = /obj/item/circuitboard/teleporter/robotics
req_access = list(ACCESS_RD)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index e5d81dc2777..c9c8237cd9f 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -30,7 +30,15 @@
/obj/machinery/vending
name = "\improper Vendomat"
- desc = "A generic vending machine."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат",
+ GENITIVE = "торгового автомата",
+ DATIVE = "торговому автомату",
+ ACCUSATIVE = "торговый автомат",
+ INSTRUMENTAL = "торговым автоматом",
+ PREPOSITIONAL = "торговом автомате"
+ )
+ desc = "Обычный торговый автомат."
icon = 'icons/obj/machines/vending.dmi'
icon_state = "generic_off"
layer = BELOW_OBJ_LAYER
@@ -212,11 +220,11 @@
/obj/machinery/vending/examine(mob/user)
. = ..()
if(tilted)
- . += span_warning("It's been tipped over and won't be usable unless it's righted.")
+ . += span_warning("Он лежит на боку и не будет функционировать до тех пор, пока его не поправят.")
if(Adjacent(user))
- . += span_notice("You can Alt-Click it to right it.")
+ . += span_notice("Нажмите Alt-Click чтобы поднять автомат.")
if(aggressive)
- . += span_warning("Its product lights seem to be blinking ominously...")
+ . += span_warning("Его индикаторы, кажется, зловеще мигают...")
/obj/machinery/vending/AltClick(mob/user)
if(!tilted || !Adjacent(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
@@ -460,7 +468,8 @@
/obj/machinery/vending/attackby(obj/item/I, mob/user, params)
if(tilted)
if(user.a_intent == INTENT_HELP)
- to_chat(user, span_warning("[src] is tipped over and non-functional! You'll need to right it first."))
+ balloon_alert(user, "автомат не работает!")
+ to_chat(user, span_warning("[capitalize(declent_ru(NOMINATIVE))] не может работать, пока он опрокинут!"))
return ATTACK_CHAIN_BLOCKED_ALL
return ..()
@@ -470,39 +479,39 @@
if(istype(I, /obj/item/coin))
add_fingerprint(user)
if(!length(premium))
- to_chat(user, span_warning("[src] does not accept coins."))
+ balloon_alert(user, "слот отсутствует!")
return ATTACK_CHAIN_PROCEED
if(coin)
- to_chat(user, span_warning("There is already a coin in this machine!"))
+ balloon_alert(user, "слот занят!")
return ATTACK_CHAIN_PROCEED
if(!user.drop_transfer_item_to_loc(I, src))
return ..()
coin = I
- to_chat(user, span_notice("You insert [I] into [src]."))
+ balloon_alert(user, "монета вставлена")
SStgui.update_uis(src)
return ATTACK_CHAIN_BLOCKED_ALL
if(istype(I, refill_canister))
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
- to_chat(user, span_notice("[src] does not respond."))
+ balloon_alert(user, "автомат не работает!")
return ATTACK_CHAIN_PROCEED
if(!panel_open)
- to_chat(user, span_warning("You should probably unscrew the service panel first!"))
+ balloon_alert(user, "техпанель открыта!")
return ATTACK_CHAIN_PROCEED
var/obj/item/vending_refill/canister = I
if(canister.get_part_rating() == 0)
- to_chat(user, span_warning("The [canister.name] is empty!"))
+ balloon_alert(user, "канистра пуста!")
return ATTACK_CHAIN_PROCEED
// instantiate canister if needed
var/transferred = restock(canister)
if(transferred)
- to_chat(user, span_notice("You loaded [transferred] items in [src]."))
+ balloon_alert(user, "канистра вставлена")
return ATTACK_CHAIN_PROCEED_SUCCESS
- to_chat(user, span_warning("There's nothing to restock!"))
+ balloon_alert(user,"нечего пополнять!")
return ATTACK_CHAIN_PROCEED
if(item_slot_check(user, I))
@@ -519,8 +528,8 @@
// no goodies, but also no tilts
return
if(COOLDOWN_FINISHED(src, last_hit_time))
- visible_message(span_warning("[src] seems to sway a bit!"))
- to_chat(user, span_userdanger("You might want to think twice about doing that again, [src] looks like it could come crashing down!"))
+ visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] странно покачивается..."))
+ to_chat(user, span_userdanger("Кажется, что [declent_ru(NOMINATIVE)] так и норовит упасть!"))
COOLDOWN_START(src, last_hit_time, hit_warning_cooldown_length)
return
@@ -539,7 +548,7 @@
tilt(user, crit = TRUE)
/obj/machinery/vending/proc/freebie(mob/user, num_freebies)
- visible_message(span_notice("[num_freebies] free goodie\s tumble[num_freebies > 1 ? "" : "s"] out of [src]!"))
+ visible_message(span_notice("Из [declent_ru(GENITIVE)] начинают выпадать бесплатные товары!"))
for(var/i in 1 to num_freebies)
for(var/datum/data/vending_product/R in shuffle(product_records))
if(R.amount <= 0)
@@ -557,8 +566,8 @@
if(isliving(AM) && prob(25))
AM.visible_message(
- span_warning("[src] suddenly topples over onto [AM]!"),
- span_userdanger("[src] topples over onto you without warning!")
+ span_warning("[capitalize(declent_ru(NOMINATIVE))] внезапно опрокидывается на [AM]!"),
+ span_userdanger("[capitalize(declent_ru(NOMINATIVE))] обрушивается на вас без предупреждения!")
)
tilt(AM, prob(5), FALSE)
aggressive = FALSE
@@ -570,14 +579,14 @@
return
. = TRUE
if(tilted)
- to_chat(user, span_warning("You'll need to right it first!"))
+ balloon_alert(user, "автомат перевёрнут!")
return
default_deconstruction_crowbar(user, I)
/obj/machinery/vending/multitool_act(mob/user, obj/item/I)
. = TRUE
if(tilted)
- to_chat(user, span_warning("You'll need to right it first!"))
+ balloon_alert(user, "автомат перевёрнут!")
return
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
@@ -586,7 +595,7 @@
/obj/machinery/vending/screwdriver_act(mob/user, obj/item/I)
. = TRUE
if(tilted)
- to_chat(user, span_warning("You'll need to right it first!"))
+ balloon_alert(user, "автомат перевёрнут!")
return
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
@@ -599,7 +608,7 @@
/obj/machinery/vending/wirecutter_act(mob/user, obj/item/I)
. = TRUE
if(tilted)
- to_chat(user, span_warning("You'll need to right it first!"))
+ balloon_alert(user, "автомат перевёрнут!")
return
if(I.use_tool(src, user, 0, volume = 0))
wires.Interact(user)
@@ -607,7 +616,7 @@
/obj/machinery/vending/wrench_act(mob/user, obj/item/I)
. = TRUE
if(tilted)
- to_chat(user, span_warning("The fastening bolts aren't on the ground, you'll need to right it first!"))
+ balloon_alert(user, "автомат перевёрнут!")
return
if(!I.use_tool(src, user, 0, volume = 0))
return
@@ -633,7 +642,7 @@
if(!item_slot)
return FALSE
if(inserted_item)
- to_chat(user, "There is something already inserted!")
+ balloon_alert(user, "внутри уже что-то есть!")
return FALSE
return TRUE
@@ -665,7 +674,7 @@
else
to_chat(user, display_parts(user))
if(moved)
- to_chat(user, "[moved] items restocked.")
+ to_chat(user, "Вы пополнили [moved] товар[declension_ru(moved, "", "а", "ов")].")
W.play_rped_sound()
return TRUE
@@ -677,10 +686,11 @@
if(!item_slot || inserted_item)
return
if(!user.drop_transfer_item_to_loc(I, src))
- to_chat(user, "[I] is stuck to your hand, you can't seem to put it down!")
+ to_chat(user, span_warning("[I] будто бы приклеен к твоей руке! Вы не можете его скинуть!"))
return
inserted_item = I
- to_chat(user, "You insert [I] into [src].")
+ balloon_alert(user, "предмет вставлен")
+ to_chat(user, span_notice("Вы вставили [I] в [declent_ru(GENITIVE)]."))
SStgui.update_uis(src)
/obj/machinery/vending/proc/eject_item(mob/user)
@@ -700,7 +710,7 @@
/obj/machinery/vending/emag_act(mob/user)
emagged = TRUE
if(user)
- to_chat(user, "You short out the product lock on [src]")
+ to_chat(user, "Вы закоротили микросхемы [declent_ru(GENITIVE)]")
/obj/machinery/vending/attack_ai(mob/user)
return attack_hand(user)
@@ -713,7 +723,7 @@
return
if(tilted)
- to_chat(user, span_warning("[src] is tipped over and non-functional! You'll need to right it first."))
+ balloon_alert(user, "автомат не работает!")
return
if(..())
@@ -740,7 +750,7 @@
/obj/machinery/vending/ui_data(mob/user)
var/list/data = list()
var/datum/money_account/A = null
- data["guestNotice"] = "No valid ID card detected. Wear your ID, or present cash.";
+ data["guestNotice"] = "Предъявите ID-карту или используйте наличные.";
data["userMoney"] = 0
data["user"] = null
if(issilicon(user) && !istype(user, /mob/living/silicon/robot/drone) && !istype(user, /mob/living/silicon/pai))
@@ -755,7 +765,7 @@
var/obj/item/stack/spacecash/S = H.get_active_hand()
if(istype(S))
data["userMoney"] = S.amount
- data["guestNotice"] = "Accepting Cash. You have: [S.amount] credits."
+ data["guestNotice"] = "Принимаем наличные. У вас есть: [S.amount] кредитов."
else if(istype(H))
var/obj/item/card/id/C = H.get_id_card()
if(istype(A))
@@ -764,7 +774,7 @@
data["userMoney"] = A.money
data["user"]["job"] = (istype(C) && C.rank) ? C.rank : "No Job"
else
- data["guestNotice"] = "Unlinked ID detected. Present cash to pay.";
+ data["guestNotice"] = "Обнаруженная ID-карта не привязана к счёту.";
data["stock"] = list()
for (var/datum/data/vending_product/R in product_records + coin_records + hidden_records)
data["stock"][R.name] = R.amount
@@ -831,7 +841,7 @@
if(.)
return
if(issilicon(usr) && !isrobot(usr))
- to_chat(usr, span_warning("The vending machine refuses to interface with you, as you are not in its target demographic!"))
+ to_chat(usr, span_warning("[capitalize(declent_ru(NOMINATIVE))] отказывается взаимодействовать с вами, поскольку вы не входите в его целевую аудиторию!"))
return
switch(action)
if("toggle_voice")
@@ -843,22 +853,22 @@
. = TRUE
if("remove_coin")
if(!coin)
- to_chat(usr, span_warning("There is no coin in this machine."))
+ balloon_alert(usr, "в автомате нет монет!")
return
- if(istype(usr, /mob/living/silicon))
- to_chat(usr, span_warning("You lack hands."))
+ if(issilicon(usr))
+ balloon_alert(usr, "у вас нет рук!")
return
- to_chat(usr, span_notice("You remove [coin] from [src]."))
+ to_chat(usr, span_notice("Вы достали [coin] из [declent_ru(GENITIVE)]."))
coin.forceMove_turf()
usr.put_in_hands(coin, ignore_anim = FALSE)
coin = null
. = TRUE
if("vend")
if(!vend_ready)
- to_chat(usr, span_warning("The vending machine is busy!"))
+ balloon_alert(usr, "торговый автомат занят!")
return
if(panel_open)
- to_chat(usr, span_warning("The vending machine cannot dispense products while its service panel is open!"))
+ balloon_alert(usr, "техпанель открыта!")
return
var/key = text2num(params["inum"])
var/list/display_records = product_records + coin_records
@@ -904,7 +914,7 @@
// --- THE REST OF THIS PROC IS JUST PAYMENT LOGIC ---
if(!GLOB.vendor_account || GLOB.vendor_account.suspended)
- to_chat(usr, "Vendor account offline. Unable to process transaction.")
+ to_chat(usr, "Удалённый сервер торговых автоматов отключён. Не удается обработать операцию.")
flick_vendor_overlay(FLICK_DENY)
vend_ready = TRUE
return
@@ -924,7 +934,7 @@
to_chat(usr, span_notice("Vending object due to admin interaction."))
paid = TRUE
else
- to_chat(usr, span_warning("Payment failure: you have no ID or other method of payment."))
+ to_chat(usr, span_warning("Сбой платежа: у вас нет ID-карты или другого способа оплаты."))
vend_ready = TRUE
flick_vendor_overlay(FLICK_DENY)
. = TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update.
@@ -933,7 +943,7 @@
vend(currently_vending, usr)
. = TRUE
else
- to_chat(usr, span_warning("Payment failure: unable to process payment."))
+ to_chat(usr, span_warning("Сбой платежа: не удается обработать платеж."))
vend_ready = TRUE
if(.)
add_fingerprint(usr)
@@ -943,13 +953,13 @@
/obj/machinery/vending/proc/vend(datum/data/vending_product/R, mob/user)
if(!allowed(user) && !user.can_admin_interact() && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH
- to_chat(user, span_warning("Access denied."))//Unless emagged of course
+ to_chat(user, span_warning("В доступе отказано."))//Unless emagged of course
flick_vendor_overlay(FLICK_DENY)
vend_ready = TRUE
return
if(!R.amount)
- to_chat(user, span_warning("The vending machine has ran out of that product."))
+ to_chat(user, span_warning("В [declent_ru(PREPOSITIONAL)] закончился этот товар."))
vend_ready = TRUE
return
@@ -957,14 +967,14 @@
if(coin_records.Find(R))
if(!coin)
- to_chat(user, span_notice("You need to insert a coin to get this item."))
+ to_chat(user, span_notice("Вам нужно вставить монету, чтобы получить этот товар."))
vend_ready = TRUE
return
if(coin.string_attached)
if(prob(50))
- to_chat(user, span_notice("You successfully pull the coin out before [src] could swallow it."))
+ to_chat(user, span_notice("Вы успешно вытаскиваете монету до того, как [declent_ru(NOMINATIVE)] успевает ее проглотить."))
else
- to_chat(user, span_notice("You weren't able to pull the coin out fast enough, the machine ate it, string and all."))
+ to_chat(user, span_notice("Вы не смогли вытащить монету достаточно быстро, [declent_ru(NOMINATIVE)] съел ее вместе с ниткой и всем остальным."))
QDEL_NULL(coin)
else
QDEL_NULL(coin)
@@ -1095,7 +1105,7 @@
if(!throw_item)
return
throw_item.throw_at(target, 16, 3)
- visible_message("[src] launches [throw_item.name] at [target.name]!")
+ visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] метнул [throw_item.name] в [target.name]!"))
/obj/machinery/vending/shove_impact(mob/living/target, mob/living/attacker)
@@ -1105,14 +1115,14 @@
add_attack_logs(attacker, target, "shoved into a vending machine ([src])")
tilt(target, from_combat = TRUE)
target.visible_message(
- span_danger("[attacker] slams [target] into [src]!"),
- span_userdanger("You get slammed into [src] by [attacker]!"),
- span_danger(">You hear a loud crunch.")
+ span_danger("[attacker] толкает [target] в [declent_ru(ACCUSATIVE)]!"),
+ span_userdanger("[attacker] впечатывает вас в [declent_ru(GENITIVE)]!"),
+ span_danger("Вы слышите громкий хруст.")
)
else
attacker.visible_message(
- span_notice("[attacker] lightly presses [target] against [src]."),
- span_userdanger("You lightly press [target] against [src], you don't want to hurt [target.p_them()]!")
+ span_notice("[attacker] слегка прижимает [target] к [declent_ru(DATIVE)]."),
+ span_userdanger("Вы слегка прижимаете [target] к [declent_ru(DATIVE)], вы же не хотите причинить [genderize_ru(target.gender, "ему", "ей", "ему", "им")] боль!")
)
return TRUE
@@ -1146,9 +1156,9 @@
else
victim.visible_message(
- span_danger("[victim] is crushed by [src]!"),
- span_userdanger("[src] crushes you!"),
- span_warning("You hear a loud crunch!")
+ span_danger("[victim] раздавлен[genderize_ru(victim.gender, "", "а", "о", "ы")] [declent_ru(INSTRUMENTAL)]!"),
+ span_userdanger("[capitalize(declent_ru(NOMINATIVE))] сокрушает тебя!"),
+ span_warning("Вы слышите громкий хруст!")
)
add_attack_logs(null, victim, "crushed by [src]")
@@ -1214,9 +1224,9 @@
should_throw_at_target = FALSE
else
victim.visible_message(
- span_danger("[victim] is crushed by [src]!"),
- span_userdanger("[src] falls on top of you, crushing you!"),
- span_warning("You hear a loud crunch!")
+ span_danger("[victim] раздавлен[genderize_ru(victim.gender, "", "а", "о", "ы")] [declent_ru(INSTRUMENTAL)]!"),
+ span_userdanger("[capitalize(declent_ru(NOMINATIVE))] сокрушает тебя!"),
+ span_warning("Вы слышите громкий хруст!")
)
victim.apply_damage(damage_to_deal, BRUTE)
add_attack_logs(null, victim, "crushed by [src]")
@@ -1231,7 +1241,7 @@
tilt_over(should_throw_at_target ? target_atom : null)
/obj/machinery/vending/proc/tilt_over(mob/victim)
- visible_message( span_danger("[src] tips over!"))
+ visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] опрокидывается!"))
playsound(src, "sound/effects/bang.ogg", 100, TRUE)
var/picked_rotation = pick(90, 270)
tilted_rotation = picked_rotation
@@ -1247,15 +1257,15 @@
if(user)
user.visible_message(
- "[user] begins to right [src].",
- "You begin to right [src]."
+ "[user] начинает поднимать [declent_ru(ACCUSATIVE)].",
+ "Вы начинаете поднимать [declent_ru(ACCUSATIVE)]."
)
if(!do_after(user, 7 SECONDS, src, max_interact_count = 1, cancel_on_max = TRUE))
return
user.visible_message(
- span_notice("[user] rights [src]."),
- span_notice("You right [src]."),
- span_notice(">You hear a loud clang.")
+ span_notice("[user] поднял [declent_ru(ACCUSATIVE)]."),
+ span_notice("Вы подняли [declent_ru(ACCUSATIVE)]."),
+ span_notice("Вы слышите громкий лязг.")
)
if(!tilted) //Sanity check
return
@@ -1280,12 +1290,25 @@
products = list( /obj/item/assembly/prox_sensor = 5,/obj/item/assembly/igniter = 3,/obj/item/assembly/signaler = 4,
/obj/item/wirecutters = 1, /obj/item/cartridge/signal = 4)
contraband = list(/obj/item/flashlight = 5,/obj/item/assembly/timer = 2, /obj/item/assembly/voice = 2, /obj/item/assembly/health = 2)
- ads_list = list("Only the finest!","Have some tools.","The most robust equipment.","The finest gear in space!")
+ ads_list = list(
+ "Только самое лучшее!",
+ "Имеются всякие инструменты.",
+ "Самое надежное оборудование!",
+ "Лучшее снаряжение в космосе!"
+ )
refill_canister = /obj/item/vending_refill/assist
/obj/machinery/vending/boozeomat
name = "\improper Booze-O-Mat"
- desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Booze-O-Mat",
+ GENITIVE = "торгового автомата Booze-O-Mat",
+ DATIVE = "торговому автомату Booze-O-Mat",
+ ACCUSATIVE = "торговый автомат Booze-O-Mat",
+ INSTRUMENTAL = "торговым автоматом Booze-O-Mat",
+ PREPOSITIONAL = "торговом автомате Booze-O-Mat"
+ )
+ desc = "Чудо техники, предположительно способное выдать идеальный напиток для вас в тот момент, когда вы об этом попросите."
icon_state = "boozeomat_off" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles
panel_overlay = "boozeomat_panel"
@@ -1330,8 +1353,30 @@
contraband = list(/obj/item/reagent_containers/food/drinks/tea = 10,
/obj/item/reagent_containers/food/drinks/bottle/fernet = 5)
vend_delay = 15
- slogan_list = list("Надеюсь, никто не попросит меня о чёртовой кружке чая…","Алкоголь — друг человека. Вы же не бросите друга?","Очень рад вас обслужить!","Никто на этой станции не хочет выпить?")
- ads_list = list("Выпьем!","Бухло пойдёт вам на пользу!","Алкоголь — друг человека.","Очень рад вас обслужить!","Хотите отличного холодного пива?","Ничто так не лечит, как бухло!","Пригубите!","Выпейте!","Возьмите пивка!","Пиво пойдёт вам на пользу!","Только лучший алкоголь!","Бухло лучшего качества с 2053 года!","Вино со множеством наград!","Максимум алкоголя!","Мужчины любят пиво","Тост: «За прогресс!»")
+ slogan_list = list(
+ "Надеюсь, никто не попросит меня о чёртовой кружке чая…",
+ "Алкоголь — друг человека. Вы же не бросите друга?",
+ "Очень рад вас обслужить!",
+ "Никто на этой станции не хочет выпить?"
+ )
+ ads_list = list(
+ "Выпьем!",
+ "Бухло пойдёт вам на пользу!",
+ "Алкоголь — друг человека.",
+ "Очень рад вас обслужить!",
+ "Хотите отличного холодного пива?",
+ "Ничто так не лечит, как бухло!",
+ "Пригубите!",
+ "Выпейте!",
+ "Возьмите пивка!",
+ "Пиво пойдёт вам на пользу!",
+ "Только лучший алкоголь!",
+ "Бухло лучшего качества с 2053 года!",
+ "Вино со множеством наград!",
+ "Максимум алкоголя!",
+ "Мужчины любят пиво",
+ "Тост: «За прогресс!»"
+ )
refill_canister = /obj/item/vending_refill/boozeomat
/obj/machinery/vending/boozeomat/syndicate_access
@@ -1339,8 +1384,30 @@
/obj/machinery/vending/coffee
name = "\improper Solar's Best Hot Drinks"
- desc = "A vending machine which dispenses hot drinks."
- ads_list = list("Выпейте!","Выпьем!","На здоровье!","Не хотите горячего супчику?","Я бы убил за чашечку кофе!","Лучшие зёрна в галактике","Для Вас — только лучшие напитки","М-м-м-м… Ничто не сравнится с кофе","Я люблю кофе, а Вы?","Кофе помогает работать!","Возьмите немного чайку","Надеемся, Вы предпочитаете лучшее!","Отведайте наш новый шоколад!","Admin conspiracies")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Solar's Best Hot Drinks",
+ GENITIVE = "торгового автомата Solar's Best Hot Drinks",
+ DATIVE = "торговому автомату Solar's Best Hot Drinks",
+ ACCUSATIVE = "торговый автомат Solar's Best Hot Drinks",
+ INSTRUMENTAL = "торговым автоматом Solar's Best Hot Drinks",
+ PREPOSITIONAL = "торговом автомате Solar's Best Hot Drinks"
+ )
+ desc = "Это машина, которая готовит горячие напитки. Ну, знаете, такие, которые кипятком заливают."
+ ads_list = list(
+ "Выпейте!",
+ "Выпьем!",
+ "На здоровье!",
+ "Не хотите горячего супчику?",
+ "Я бы убил за чашечку кофе!",
+ "Лучшие зёрна в галактике",
+ "Для Вас — только лучшие напитки",
+ "М-м-м-м… Ничто не сравнится с кофе",
+ "Я люблю кофе, а Вы?",
+ "Кофе помогает работать!",
+ "Возьмите немного чайку",
+ "Надеемся, Вы предпочитаете лучшее!",
+ "Отведайте наш новый шоколад!"
+ )
icon_state = "coffee_off"
panel_overlay = "coffee_panel"
@@ -1382,7 +1449,7 @@
if(!..())
return FALSE
if(!I.is_open_container())
- to_chat(user, "You need to open [I] before inserting it.")
+ to_chat(user, span_warning("Вам нужно открыть [I], прежде чем вставить его."))
return FALSE
return TRUE
@@ -1418,9 +1485,31 @@
/obj/machinery/vending/snack
name = "\improper Getmore Chocolate Corp"
- desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars."
- slogan_list = list("Попробуйте наш новый батончик с нугой!","Вдвое больше калорий за полцены!")
- ads_list = list("The healthiest!","Award-winning chocolate bars!","Mmm! So good!","Oh my god it's so juicy!","Have a snack.","Snacks are good for you!","Have some more Getmore!","Best quality snacks straight from mars.","We love chocolate!","Try our new jerky!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Getmore Chocolate Corp",
+ GENITIVE = "торгового автомата Getmore Chocolate Corp",
+ DATIVE = "торговому автомату Getmore Chocolate Corp",
+ ACCUSATIVE = "торговый автомат Getmore Chocolate Corp",
+ INSTRUMENTAL = "торговым автоматом Getmore Chocolate Corp",
+ PREPOSITIONAL = "торговом автомате Getmore Chocolate Corp"
+ )
+ desc = "Автомат самообслуживания, любезно предоставленный шоколадной корпорацией Getmore, базирующейся на Марсе."
+ slogan_list = list(
+ "Попробуйте наш новый батончик с нугой!",
+ "Вдвое больше калорий за полцены!"
+ )
+ ads_list = list(
+ "Самый здоровый!",
+ "Отмеченные наградами шоколадные батончики!",
+ "Ммм! Так вкусно!",
+ "О боже, это так вкусно!",
+ "Перекусите.",
+ "Закуски - это здорово!",
+ "Возьми немного, и еще немного!",
+ "Закуски высшего качества прямо с Марса.",
+ "Мы любим шоколад!",
+ "Попробуйте наше новое вяленое мясо!"
+ )
icon_state = "snack_off"
panel_overlay = "snack_panel"
@@ -1461,8 +1550,21 @@
/obj/machinery/vending/chinese
name = "\improper Mr. Chang"
- desc = "A self-serving Chinese food machine, for all your Chinese food needs."
- slogan_list = list("Попробуйте 5000 лет культуры!","Мистер Чанг, одобрен для безопасного потребления в более чем 10 секторах!","Китайская кухня отлично подходит для вечернего свидания или одинокого вечера!","Вы не ошибетесь, если попробуете настоящую китайскую кухню от мистера Чанга.!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Mr. Chang",
+ GENITIVE = "торгового автомата Mr. Chang",
+ DATIVE = "торговому автомату Mr. Chang",
+ ACCUSATIVE = "торговый автомат Mr. Chang",
+ INSTRUMENTAL = "торговым автоматом Mr. Chang",
+ PREPOSITIONAL = "торговом автомате Mr. Chang"
+ )
+ desc = "Китайская машина самообслуживания, создана специально для удовлетворения потребности в китайской кухне."
+ slogan_list = list(
+ "Попробуйте 5000 лет культуры!",
+ "Мистер Чанг, одобрен для безопасного потребления в более чем 10 секторах!",
+ "Китайская кухня отлично подходит для вечернего свидания или одинокого вечера!",
+ "Вы не ошибетесь, если попробуете настоящую китайскую кухню от мистера Чанга!"
+ )
icon_state = "chang_off"
panel_overlay = "chang_panel"
@@ -1505,7 +1607,15 @@
/obj/machinery/vending/cola
name = "\improper Robust Softdrinks"
- desc = "A soft drink vendor provided by Robust Industries, LLC."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Robust Softdrinks",
+ GENITIVE = "торгового автомата Robust Softdrinks",
+ DATIVE = "торговому автомату Robust Softdrinks",
+ ACCUSATIVE = "торговый автомат Robust Softdrinks",
+ INSTRUMENTAL = "торговым автоматом Robust Softdrinks",
+ PREPOSITIONAL = "торговом автомате Robust Softdrinks"
+ )
+ desc = "Автомат с безалкогольными напитками, предоставляемый компанией Robust Industries, LLC."
icon_state = "cola-machine_off"
panel_overlay = "cola-machine_panel"
@@ -1515,7 +1625,15 @@
broken_lightmask_overlay = "cola-machine_broken_lightmask"
slogan_list = list("Роб+аст с+офтдринкс: крепче, чем тулбоксом по голове!")
- ads_list = list("Освежает!","Надеюсь, вас одолела жажда!","Продано больше миллиона бутылок!","Хотите пить? Почему бы не взять колы?","Пожалуйста, купите напиток","Выпьем!","Лучшие напитки во всём космосе")
+ ads_list = list(
+ "Освежает!",
+ "Надеюсь, вас одолела жажда!",
+ "Продано больше миллиона бутылок!",
+ "Хотите пить? Почему бы не взять колы?",
+ "Пожалуйста, купите напиток",
+ "Выпьем!",
+ "Лучшие напитки во всём космосе"
+ )
products = list(
/obj/item/reagent_containers/food/drinks/cans/cola = 10,
/obj/item/reagent_containers/food/drinks/cans/space_mountain_wind = 10,
@@ -1548,7 +1666,15 @@
/obj/machinery/vending/cart
name = "\improper PTech"
- desc = "Cartridges for PDA's."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат PTech",
+ GENITIVE = "торгового автомата PTech",
+ DATIVE = "торговому автомату PTech",
+ ACCUSATIVE = "торговый автомат PTech",
+ INSTRUMENTAL = "торговым автоматом PTech",
+ PREPOSITIONAL = "торговом автомате PTech"
+ )
+ desc = "Картриджи для КПК."
slogan_list = list("Карточки в дорогу!")
icon_state = "cart_off"
@@ -1573,7 +1699,15 @@
/obj/machinery/vending/liberationstation
name = "\improper Liberation Station"
- desc = "An overwhelming amount of ancient patriotism washes over you just by looking at the machine."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Liberation Station",
+ GENITIVE = "торгового автомата Liberation Station",
+ DATIVE = "торговому автомату Liberation Station",
+ ACCUSATIVE = "торговый автомат Liberation Station",
+ INSTRUMENTAL = "торговым автоматом Liberation Station",
+ PREPOSITIONAL = "торговом автомате Liberation Station"
+ )
+ desc = "При одном взгляде на эту машину вас охватывает непреодолимое чувство древнего патриотизма."
icon_state = "liberationstation_off"
panel_overlay = "liberationstation_panel"
@@ -1583,9 +1717,19 @@
broken_lightmask_overlay = "liberationstation_broken_lightmask"
req_access = list(ACCESS_SECURITY)
- slogan_list = list("Liberation Station: Your one-stop shop for all things second amendment!","Be a patriot today, pick up a gun!","Quality weapons for cheap prices!","Better dead than red!")
- ads_list = list("Float like an astronaut, sting like a bullet!","Express your second amendment today!","Guns don't kill people, but you can!","Who needs responsibilities when you have guns?")
- vend_reply = "Remember the name: Liberation Station!"
+ slogan_list = list(
+ "Liberation Station: Ваш универсальный магазин всего, что связано со второй поправкой!",
+ "Будь патриотом, возьми в руки оружие уже сегодня!",
+ "Качественное оружие по низким ценам!",
+ "Лучше умереть, чем покраснеть!"
+ )
+ ads_list = list(
+ "Порхай, как космонавт, жаль, как пуля!",
+ "Ты что, опять сохраняешься?",
+ "Оружие не убивает людей, а вот ты можешь!",
+ "Какая ещё может быть ответственность, если у тебя есть ствол?"
+ )
+ vend_reply = "Запомни моё имя: Liberation Station!"
products = list(/obj/item/gun/projectile/automatic/pistol/deagle/gold = 2,/obj/item/gun/projectile/automatic/pistol/deagle/camo = 2,
/obj/item/gun/projectile/automatic/pistol/m1911 = 2,/obj/item/gun/projectile/automatic/proto = 2,
/obj/item/gun/projectile/shotgun/automatic/combat = 2,/obj/item/gun/projectile/automatic/gyropistol = 1,
@@ -1598,7 +1742,15 @@
/obj/machinery/vending/toyliberationstation
name = "\improper Syndicate Donksoft Toy Vendor"
- desc = "An ages 8 and up approved vendor that dispenses toys. If you were to find the right wires, you can unlock the adult mode setting!"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Syndicate Donksoft Toy Vendor",
+ GENITIVE = "торгового автомата Syndicate Donksoft Toy Vendor",
+ DATIVE = "торговому автомату Syndicate Donksoft Toy Vendor",
+ ACCUSATIVE = "торговый автомат Syndicate Donksoft Toy Vendor",
+ INSTRUMENTAL = "торговым автоматом Syndicate Donksoft Toy Vendor",
+ PREPOSITIONAL = "торговом автомате Syndicate Donksoft Toy Vendor"
+ )
+ desc = "Одобренный автомат игрушек для детей от 8 лет и старше. Если вы найдете нужные провода, вы сможете разблокировать режим для взрослых!"
icon_state = "syndi_off"
panel_overlay = "syndi_panel"
@@ -1607,9 +1759,21 @@
broken_overlay = "syndi_broken"
broken_lightmask_overlay = "syndi_broken_lightmask"
- slogan_list = list("Get your cool toys today!","Trigger a valid hunter today!","Quality toy weapons for cheap prices!","Give them to HoPs for all access!","Give them to HoS to get permabrigged!")
- ads_list = list("Feel robust with your toys!","Express your inner child today!","Toy weapons don't kill people, but valid hunters do!","Who needs responsibilities when you have toy weapons?","Make your next murder FUN!")
- vend_reply = "Come back for more!"
+ slogan_list = list(
+ "Получите крутые игрушки прямо сейчас!",
+ "Начните свою охоту уже сегодня!",
+ "Качественное игрушечное оружие по низким ценам!",
+ "Подарите их ГП для получения общего доступа!",
+ "Подарите их ГСБ чтобы попасть в пермабриг!"
+ )
+ ads_list = list(
+ "Почувствуй робастность, с игрушкой в руках!",
+ "Проявите своего внутреннего ребенка уже сегодня!",
+ "Давай, сражайся как мужчина!",
+ "Какая к чёрту ответственность, за игрушечный ствол?",
+ "Сделайте свое следующее убийство ВЕСЕЛЫМ!"
+ )
+ vend_reply = "Возвращайтесь за добавкой!"
products = list(/obj/item/gun/projectile/automatic/toy = 10,
/obj/item/gun/projectile/automatic/toy/pistol= 10,
/obj/item/gun/projectile/shotgun/toy = 10,
@@ -1633,9 +1797,30 @@
/obj/machinery/vending/cigarette
name = "ShadyCigs Deluxe"
- desc = "If you want to get cancer, might as well do it in style."
- slogan_list = list("Космосигареты весьма хороши на вкус, какими они и должны быть","I'd rather toolbox than switch.","Затянитесь!","Не верьте исследованиям — курите!")
- ads_list = list("Наверняка не очень-то и вредно для Вас!","Не верьте учёным!","На здоровье!","Не бросайте курить, купите ещё!","Затянитесь!","Никотиновый рай","Лучшие сигареты с 2150 года","Сигареты с множеством наград")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат ShadyCigs Deluxe",
+ GENITIVE = "торгового автомата ShadyCigs Deluxe",
+ DATIVE = "торговому автомату ShadyCigs Deluxe",
+ ACCUSATIVE = "торговый автомат ShadyCigs Deluxe",
+ INSTRUMENTAL = "торговым автоматом ShadyCigs Deluxe",
+ PREPOSITIONAL = "торговом автомате ShadyCigs Deluxe"
+ )
+ desc = "Если ты собираешься заболеть раком, по крайней мере, сделай это стильно!"
+ slogan_list = list(
+ "Космосигареты весьма хороши на вкус, какими они и должны быть",
+ "Затянитесь!",
+ "Не верьте исследованиям — курите!"
+ )
+ ads_list = list(
+ "Наверняка не очень-то и вредно для Вас!",
+ "Не верьте учёным!",
+ "На здоровье!",
+ "Не бросайте курить, купите ещё!",
+ "Затянитесь!",
+ "Никотиновый рай",
+ "Лучшие сигареты с 2150 года",
+ "Сигареты с множеством наград"
+ )
vend_delay = 34
icon_state = "cigs_off"
@@ -1693,9 +1878,26 @@
/obj/machinery/vending/cigarette/beach //Used in the lavaland_biodome_beach.dmm ruin
name = "\improper ShadyCigs Ultra"
- desc = "Now with extra premium products!"
- ads_list = list("Наверняка не очень-то и вредно для Вас!","Допинг проведёт через безденежье лучше, чем деньги через бездопингье!","На здоровье!")
- slogan_list = list("Включи, настрой, получи!","С химией жить веселей!","Затянитесь!","Сохраняй улыбку на устах и песню в своём сердце!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат ShadyCigs Ultra",
+ GENITIVE = "торгового автомата ShadyCigs Ultra",
+ DATIVE = "торговому автомату ShadyCigs Ultra",
+ ACCUSATIVE = "торговый автомат ShadyCigs Ultra",
+ INSTRUMENTAL = "торговым автоматом ShadyCigs Ultra",
+ PREPOSITIONAL = "торговом автомате ShadyCigs Ultra"
+ )
+ desc = "Теперь с дополнительными продуктами премиум-класса!"
+ ads_list = list(
+ "Наверняка не очень-то и вредно для Вас!",
+ "Допинг проведёт через безденежье лучше, чем деньги через бездопингье!",
+ "На здоровье!"
+ )
+ slogan_list = list(
+ "Включи, настрой, получи!",
+ "С химией жить веселей!",
+ "Затянитесь!",
+ "Сохраняй улыбку на устах и песню в своём сердце!"
+ )
products = list(/obj/item/storage/fancy/cigarettes = 5,
/obj/item/storage/fancy/cigarettes/cigpack_uplift = 3,
/obj/item/storage/fancy/cigarettes/cigpack_robust = 3,
@@ -1711,7 +1913,15 @@
/obj/machinery/vending/medical
name = "\improper NanoMed Plus"
- desc = "Medical drug dispenser."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NanoMed Plus",
+ GENITIVE = "торгового автомата NanoMed Plus",
+ DATIVE = "торговому автомату NanoMed Plus",
+ ACCUSATIVE = "торговый автомат NanoMed Plus",
+ INSTRUMENTAL = "торговым автоматом NanoMed Plus",
+ PREPOSITIONAL = "торговом автомате NanoMed Plus"
+ )
+ desc = "Медицинский раздатчик веществ."
icon_state = "med_off"
panel_overlay = "med_panel"
@@ -1721,7 +1931,15 @@
broken_lightmask_overlay = "med_broken_lightmask"
deny_overlay = "med_deny"
- ads_list = list("Иди и спаси несколько жизней!","Лучшее снаряжение для вашего медотдела","Только лучшие инструменты","Натуральные химикаты!","Эта штука спасает жизни","Может сами примете?","Пинг!")
+ ads_list = list(
+ "Иди и спаси несколько жизней!",
+ "Лучшее снаряжение для вашего медотдела",
+ "Только лучшие инструменты",
+ "Натуральные химикаты!",
+ "Эта штука спасает жизни",
+ "Может сами примете?",
+ "Пинг!"
+ )
req_access = list(ACCESS_MEDICAL)
products = list(/obj/item/reagent_containers/syringe = 12, /obj/item/reagent_containers/food/pill/patch/styptic = 4, /obj/item/reagent_containers/food/pill/patch/silver_sulf = 4, /obj/item/reagent_containers/applicator/brute = 3, /obj/item/reagent_containers/applicator/burn = 3,
/obj/item/reagent_containers/glass/bottle/charcoal = 4, /obj/item/reagent_containers/glass/bottle/epinephrine = 4, /obj/item/reagent_containers/glass/bottle/diphenhydramine = 4,
@@ -1739,7 +1957,14 @@
/obj/machinery/vending/medical/syndicate_access
name = "\improper SyndiMed Plus"
-
+ ru_names = list(
+ NOMINATIVE = "торговый автомат SyndiMed Plus",
+ GENITIVE = "торгового автомата SyndiMed Plus",
+ DATIVE = "торговому автомату SyndiMed Plus",
+ ACCUSATIVE = "торговый автомат SyndiMed Plus",
+ INSTRUMENTAL = "торговым автоматом SyndiMed Plus",
+ PREPOSITIONAL = "торговом автомате SyndiMed Plus"
+ )
icon_state = "syndi-big-med_off"
panel_overlay = "syndi-big-med_panel"
screen_overlay = "syndi-big-med"
@@ -1755,7 +1980,15 @@
/obj/machinery/vending/plasmaresearch
name = "\improper Toximate 3000"
- desc = "All the fine parts you need in one vending machine!"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Toximate 3000",
+ GENITIVE = "торгового автомата Toximate 3000",
+ DATIVE = "торговому автомату Toximate 3000",
+ ACCUSATIVE = "торговый автомат Toximate 3000",
+ INSTRUMENTAL = "торговым автоматом Toximate 3000",
+ PREPOSITIONAL = "торговом автомате Toximate 3000"
+ )
+ desc = "Все, что вам нужно, в одном удобном месте!"
icon_state = "generic_off"
panel_overlay = "generic_panel"
@@ -1771,8 +2004,24 @@
/obj/machinery/vending/wallmed
name = "\improper NanoMed"
- desc = "Wall-mounted Medical Equipment dispenser."
- ads_list = list("Иди и спаси несколько жизней!","Лучшее снаряжение для вашего медотдела","Только лучшие инструменты","Натуральные химикаты!","Эта штука спасает жизни","Может сами примете?","Пинг!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NanoMed",
+ GENITIVE = "торгового автомата NanoMed",
+ DATIVE = "торговому автомату NanoMed",
+ ACCUSATIVE = "торговый автомат NanoMed",
+ INSTRUMENTAL = "торговым автоматом NanoMed",
+ PREPOSITIONAL = "торговом автомате NanoMed"
+ )
+ desc = "Настенный раздатчик медицинских изделий."
+ ads_list = list(
+ "Иди и спаси несколько жизней!",
+ "Лучшее снаряжение для вашего медотдела",
+ "Только лучшие инструменты",
+ "Натуральные химикаты!",
+ "Эта штука спасает жизни",
+ "Может сами примете?",
+ "Пинг!"
+ )
icon_state = "wallmed_off"
panel_overlay = "wallmed_panel"
@@ -1792,7 +2041,15 @@
/obj/machinery/vending/wallmed/syndicate
name = "\improper SyndiWallMed"
- desc = "EVIL wall-mounted Medical Equipment dispenser."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат SyndiWallMed",
+ GENITIVE = "торгового автомата SyndiWallMed",
+ DATIVE = "торговому автомату SyndiWallMed",
+ ACCUSATIVE = "торговый автомат SyndiWallMed",
+ INSTRUMENTAL = "торговым автоматом SyndiWallMed",
+ PREPOSITIONAL = "торговом автомате SyndiWallMed"
+ )
+ desc = "Злое воплощение настенного раздатчика медицинских изделий."
icon_state = "wallmed_off"
panel_overlay = "wallmed_panel"
@@ -1811,8 +2068,26 @@
/obj/machinery/vending/security
name = "\improper SecTech"
- desc = "A security equipment vendor."
- ads_list = list("Круши черепа капиталистов!","Отбей несколько голов!","Не забывай, вредительство - полезно!","Твое оружие здесь.","Наручники!","Стоять, подонок!","Не бей меня, брат!","Убей их, брат.","Почему бы не съесть пончик?")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат SecTech",
+ GENITIVE = "торгового автомата SecTech",
+ DATIVE = "торговому автомату SecTech",
+ ACCUSATIVE = "торговый автомат SecTech",
+ INSTRUMENTAL = "торговым автоматом SecTech",
+ PREPOSITIONAL = "торговом автомате SecTech"
+ )
+ desc = "Раздатчик снаряжения службы безопасности."
+ ads_list = list(
+ "Круши черепа капиталистов!",
+ "Отбей несколько голов!",
+ "Не забывай, вредительство - полезно!",
+ "Твое оружие здесь.",
+ "Наручники!",
+ "Стоять, подонок!",
+ "Не бей меня, брат!",
+ "Убей их, брат.",
+ "Почему бы не съесть пончик?"
+ )
icon_state = "sec_off"
panel_overlay = "sec_panel"
@@ -1825,16 +2100,32 @@
req_access = list(ACCESS_SECURITY)
products = list(/obj/item/restraints/handcuffs = 8,/obj/item/restraints/handcuffs/cable/zipties = 8,/obj/item/grenade/flashbang = 4,/obj/item/flash = 5,
/obj/item/reagent_containers/food/snacks/donut = 12,/obj/item/storage/box/evidence = 6,/obj/item/flashlight/seclite = 4,/obj/item/restraints/legcuffs/bola/energy = 7,
- /obj/item/clothing/mask/muzzle/safety = 4, /obj/item/storage/box/swabs = 6, /obj/item/storage/box/fingerprints = 6, /obj/item/eftpos/sec = 4, /obj/item/storage/belt/security/webbing = 2, /obj/item/grenade/smokebomb = 8,
+ /obj/item/clothing/mask/muzzle/safety = 4, /obj/item/storage/box/swabs = 6, /obj/item/storage/box/fingerprints = 6, /obj/item/eftpos/sec = 4, /obj/item/storage/belt/security/webbing = 2, /obj/item/flashlight/sectaclight = 2, /obj/item/grenade/smokebomb = 8,
)
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/storage/fancy/donut_box = 2,/obj/item/hailer = 5)
- prices = list(/obj/item/storage/belt/security/webbing = 2000,/obj/item/grenade/smokebomb = 250)
+ prices = list(/obj/item/storage/belt/security/webbing = 2000, /obj/item/flashlight/sectaclight = 300, /obj/item/grenade/smokebomb = 250)
refill_canister = /obj/item/vending_refill/security
/obj/machinery/vending/security/training
name = "\improper SecTech Training"
- desc = "A security training equipment vendor."
- ads_list = list("Соблюдай чистоту на стрельбище!","Даже я стреляю лучше тебя!","Почему так косо, бухой что ли?!","Техника безопасности нам не писана, да?","1 из 10 попаданий... А ты хорош!","Инструктор это твой папочка!","Эй, ты куда целишься?!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат SecTech Training",
+ GENITIVE = "торгового автомата SecTech Training",
+ DATIVE = "торговому автомату SecTech Training",
+ ACCUSATIVE = "торговый автомат SecTech Training",
+ INSTRUMENTAL = "торговым автоматом SecTech Training",
+ PREPOSITIONAL = "торговом автомате SecTech Training"
+ )
+ desc = "Раздатчик тренировочного снаряжения службы безопасности."
+ ads_list = list(
+ "Соблюдай чистоту на стрельбище!",
+ "Даже я стреляю лучше тебя!",
+ "Почему так косо, бухой что ли?!",
+ "Техника безопасности нам не писана, да?",
+ "1 из 10 попаданий... А ты хорош!",
+ "Инструктор – это твой папочка!",
+ "Эй, ты куда целишься?!"
+ )
icon_state = "sectraining_off"
panel_overlay = "sec_panel"
@@ -1880,15 +2171,33 @@
/obj/item/security_voucher
name = "security voucher"
- desc = "A token to redeem a weapon kit. Use it on a SecTech."
+ desc = "Жетон, позволяющий получить набор оружия. Используйте его на SecTech."
icon_state = "security_voucher"
w_class = WEIGHT_CLASS_SMALL
/obj/machinery/vending/hydronutrients
name = "\improper NutriMax"
- desc = "A plant nutrients vendor"
- slogan_list = list("Вам не надо удобрять почву естественным путём — разве это не чудесно?","Теперь на 50% меньше вони!","Растения тоже люди!")
- ads_list = list("Мы любим растения!","Может сами примете?","Самые зелёные кнопки на свете.","Мы любим большие растения.","Мягкая почва…")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NutriMax",
+ GENITIVE = "торгового автомата NutriMax",
+ DATIVE = "торговому автомату NutriMax",
+ ACCUSATIVE = "торговый автомат NutriMax",
+ INSTRUMENTAL = "торговым автоматом NutriMax",
+ PREPOSITIONAL = "торговом автомате NutriMax"
+ )
+ desc = "Поставщик питательных веществ для растений."
+ slogan_list = list(
+ "Вам не надо удобрять почву естественным путём — разве это не чудесно?",
+ "Теперь на 50% меньше вони!",
+ "Растения тоже люди!"
+ )
+ ads_list = list(
+ "Мы любим растения!",
+ "Может сами примете?",
+ "Самые зелёные кнопки на свете.",
+ "Мы любим большие растения.",
+ "Мягкая почва…"
+ )
icon_state = "nutri_off"
panel_overlay = "nutri_panel"
@@ -1905,9 +2214,26 @@
/obj/machinery/vending/hydroseeds
name = "\improper MegaSeed Servitor"
- desc = "When you need seeds fast!"
- slogan_list = list("THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!","Hands down the best seed selection on the station!","Also certain mushroom varieties available, more for experts! Get certified today!")
- ads_list = list("Мы любим растения!","Вырасти урожай!","Расти, малыш, расти-и-и-и!","Ды-а, сына!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат MegaSeed Servitor",
+ GENITIVE = "торгового автомата MegaSeed Servitor",
+ DATIVE = "торговому автомату MegaSeed Servitor",
+ ACCUSATIVE = "торговый автомат MegaSeed Servitor",
+ INSTRUMENTAL = "торговым автоматом MegaSeed Servitor",
+ PREPOSITIONAL = "торговом автомате MegaSeed Servitor"
+ )
+ desc = "Когда вам срочно нужны семена!"
+ slogan_list = list(
+ "ВОТ ГДЕ ЖИВУТ СЕМЕНА! ВОЗЬМИ СЕБЕ НЕМНОГО!",
+ "Без сомнений, лучший выбор семян на станции!",
+ "Кроме того, некоторые виды грибов доступны исключительно для экспертов! Получите сертификат уже сегодня!"
+ )
+ ads_list = list(
+ "Мы любим растения!",
+ "Вырасти урожай!",
+ "Расти, малыш, расти-и-и-и!",
+ "Ды-а, сына!"
+ )
icon_state = "seeds_off"
panel_overlay = "seeds_panel"
@@ -1987,7 +2313,15 @@
/obj/machinery/vending/magivend
name = "\improper MagiVend"
- desc = "A magic vending machine."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат MagiVend",
+ GENITIVE = "торгового автомата MagiVend",
+ DATIVE = "торговому автомату MagiVend",
+ ACCUSATIVE = "торговый автомат MagiVend",
+ INSTRUMENTAL = "торговым автоматом MagiVend",
+ PREPOSITIONAL = "торговом автомате MagiVend"
+ )
+ desc = "Волшебный торговый автомат."
icon_state = "magivend_off"
panel_overlay = "magivend_panel"
@@ -1996,10 +2330,24 @@
broken_overlay = "magivend_broken"
broken_lightmask_overlay = "magivend_broken_lightmask"
- slogan_list = list("Sling spells the proper way with MagiVend!","Be your own Houdini! Use MagiVend!")
+ slogan_list = list(
+ "MagiVend превращает произношение заклинаний в сущий пустяк!",
+ "Стань сам себе Гудини! Используй MagiVend!"
+ )
vend_delay = 15
- vend_reply = "Have an enchanted evening!"
- ads_list = list("FJKLFJSD","AJKFLBJAKL","1234 LOONIES LOL!",">MFW","Kill them fuckers!","GET DAT FUKKEN DISK","HONK!","EI NATH","Destroy the station!","Admin conspiracies since forever!","Space-time bending hardware!")
+ vend_reply = "Желаю вам чудесного вечера!"
+ ads_list = list(
+ "FJKLFJSD","AJKFLBJAKL",
+ "1234 LOONIES LOL!",
+ ">MFW",
+ "Kill them fuckers!",
+ "GET DAT FUKKEN DISK",
+ "HONK!",
+ "EI NATH",
+ "Разнесите станцию!",
+ "Админские заговоры стары как само время!",
+ "Оборудование для изгиба пространства-времени!"
+ )
products = list(/obj/item/clothing/head/wizard = 5,
/obj/item/clothing/suit/wizrobe = 5,
/obj/item/clothing/head/wizard/red = 5,
@@ -2033,7 +2381,15 @@
/obj/machinery/vending/autodrobe
name = "\improper AutoDrobe"
- desc = "A vending machine for costumes."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат AutoDrobe",
+ GENITIVE = "торгового автомата AutoDrobe",
+ DATIVE = "торговому автомату AutoDrobe",
+ ACCUSATIVE = "торговый автомат AutoDrobe",
+ INSTRUMENTAL = "торговым автоматом AutoDrobe",
+ PREPOSITIONAL = "торговом автомате AutoDrobe"
+ )
+ desc = "Автомат с бесплатными костюмами!"
icon_state = "theater_off"
panel_overlay = "theater_panel"
@@ -2043,9 +2399,14 @@
broken_lightmask_overlay = "theater_broken_lightmask"
deny_overlay = "theater_deny"
- slogan_list = list("Dress for success!","Suited and booted!","It's show time!","Why leave style up to fate? Use AutoDrobe!")
+ slogan_list = list(
+ "Приоденься для Успеха!",
+ "Одетый и обутый!",
+ "Пришло время шоу!",
+ "Зачем оставлять стиль на произвол судьбы? Используй AutoDrobe!"
+ )
vend_delay = 15
- vend_reply = "Thank you for using AutoDrobe!"
+ vend_reply = "Спасибо за использование AutoDrobe!"
products = list(/obj/item/clothing/suit/chickensuit = 1,
/obj/item/clothing/head/chicken = 1,
/obj/item/clothing/under/gladiator = 1,
@@ -2133,6 +2494,8 @@
/obj/item/clothing/head/rockso = 1,
/obj/item/clothing/mask/gas/clown_hat/rockso = 1,
/obj/item/clothing/under/rockso = 1,
+ /obj/item/clothing/mask/gas/clown_hat/sweettooth = 1,
+ /obj/item/clothing/under/sweettooth = 1,
/obj/item/clothing/under/pants/camo = 1,
/obj/item/clothing/mask/bandana = 1,
/obj/item/clothing/mask/bandana/black = 1,
@@ -2192,8 +2555,24 @@
/obj/machinery/vending/dinnerware
name = "\improper Plasteel Chef's Dinnerware Vendor"
- desc = "A kitchen and restaurant equipment vendor."
- ads_list = list("Mm, food stuffs!","Food and food accessories.","Get your plates!","You like forks?","I like forks.","Woo, utensils.","You don't really need these...")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Plasteel Chef's Dinnerware Vendor",
+ GENITIVE = "торгового автомата Plasteel Chef's Dinnerware Vendor",
+ DATIVE = "торговому автомату Plasteel Chef's Dinnerware Vendor",
+ ACCUSATIVE = "торговый автомат Plasteel Chef's Dinnerware Vendor",
+ INSTRUMENTAL = "торговым автоматом Plasteel Chef's Dinnerware Vendor",
+ PREPOSITIONAL = "торговом автомате Plasteel Chef's Dinnerware Vendor"
+ )
+ desc = "Поставщик кухонного и ресторанного оборудования."
+ ads_list = list(
+ "Мм, продукты питания!",
+ "Пища и пищевые принадлежности.",
+ "Принесите свои тарелки!",
+ "Тебе нравятся вилки?",
+ "Я люблю вилки.",
+ "Ух ты, посуда.",
+ "На самом деле они тебе не нужны..."
+ )
icon_state = "dinnerware_off"
panel_overlay = "dinnerware_panel"
@@ -2237,7 +2616,15 @@
/obj/machinery/vending/sovietsoda
name = "\improper BODA"
- desc = "Old sweet water vending machine."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат BODA",
+ GENITIVE = "торгового автомата BODA",
+ DATIVE = "торговому автомату BODA",
+ ACCUSATIVE = "торговый автомат BODA",
+ INSTRUMENTAL = "торговым автоматом BODA",
+ PREPOSITIONAL = "торговом автомате BODA"
+ )
+ desc = "Старый автомат по продаже сладкой газировки."
icon_state = "sovietsoda_off"
panel_overlay = "sovietsoda_panel"
@@ -2246,7 +2633,13 @@
broken_overlay = "sovietsoda_broken"
broken_lightmask_overlay = "sovietsoda_broken_lightmask"
- ads_list = list("For Tsar and Country.","Have you fulfilled your nutrition quota today?","Very nice!","We are simple people, for this is all we eat.","If there is a person, there is a problem. If there is no person, then there is no problem.")
+ ads_list = list(
+ "За царя и Отечество.",
+ "Ты уже осуществил свою норму питания на сегодня?",
+ "Очень хорошо!",
+ "Мы обычные люди, и едим мы то, что есть.",
+ "Если есть человек, то есть и проблема. Если нет человека, то нет и проблемы."
+ )
products = list(/obj/item/reagent_containers/food/drinks/drinkingglass/soda = 30)
contraband = list(/obj/item/reagent_containers/food/drinks/drinkingglass/cola = 20)
resistance_flags = FIRE_PROOF
@@ -2254,7 +2647,15 @@
/obj/machinery/vending/tool
name = "\improper YouTool"
- desc = "Tools for tools."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат YouTool",
+ GENITIVE = "торгового автомата YouTool",
+ DATIVE = "торговому автомату YouTool",
+ ACCUSATIVE = "торговый автомат YouTool",
+ INSTRUMENTAL = "торговым автоматом YouTool",
+ PREPOSITIONAL = "торговом автомате YouTool"
+ )
+ desc = "Инструменты для инструментов."
icon_state = "tool_off"
panel_overlay = "tool_panel"
@@ -2295,7 +2696,15 @@
/obj/machinery/vending/engivend
name = "\improper Engi-Vend"
- desc = "Spare tool vending. What? Did you expect some witty description?"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Engi-Vend",
+ GENITIVE = "торгового автомата Engi-Vend",
+ DATIVE = "торговому автомату Engi-Vend",
+ ACCUSATIVE = "торговый автомат Engi-Vend",
+ INSTRUMENTAL = "торговым автоматом Engi-Vend",
+ PREPOSITIONAL = "торговом автомате Engi-Vend"
+ )
+ desc = "Автомат с запасными инструментами. Что? Вы ожидали какого-нибудь остроумного описания?"
icon_state = "engivend_off"
panel_overlay = "engivend_panel"
@@ -2313,7 +2722,15 @@
/obj/machinery/vending/engineering
name = "\improper Robco Tool Maker"
- desc = "Everything you need for do-it-yourself station repair."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Robco Tool Maker",
+ GENITIVE = "торгового автомата Robco Tool Maker",
+ DATIVE = "торговому автомату Robco Tool Maker",
+ ACCUSATIVE = "торговый автомат Robco Tool Maker",
+ INSTRUMENTAL = "торговым автоматом Robco Tool Maker",
+ PREPOSITIONAL = "торговом автомате Robco Tool Maker"
+ )
+ desc = "Все, что вам требуется для самостоятельного обслуживания станции."
icon_state = "engi_off"
panel_overlay = "engi_panel"
@@ -2335,7 +2752,15 @@
/obj/machinery/vending/robotics
name = "\improper Robotech Deluxe"
- desc = "All the tools you need to create your own robot army."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Robotech Deluxe",
+ GENITIVE = "торгового автомата Robotech Deluxe",
+ DATIVE = "торговому автомату Robotech Deluxe",
+ ACCUSATIVE = "торговый автомат Robotech Deluxe",
+ INSTRUMENTAL = "торговым автоматом Robotech Deluxe",
+ PREPOSITIONAL = "торговом автомате Robotech Deluxe"
+ )
+ desc = "Все, что вам нужно для создания вашей собственной армии роботов."
icon_state = "robotics_off"
panel_overlay = "robotics_panel"
@@ -2373,9 +2798,31 @@
/obj/machinery/vending/sustenance
name = "\improper Sustenance Vendor"
- desc = "A vending machine which vends food, as required by section 47-C of the NT's Prisoner Ethical Treatment Agreement."
- slogan_list = list("Enjoy your meal.","Enough calories to support strenuous labor.")
- ads_list = list("The healthiest!","Award-winning chocolate bars!","Mmm! So good!","Oh my god it's so juicy!","Have a snack.","Snacks are good for you!","Have some more Getmore!","Best quality snacks straight from mars.","We love chocolate!","Try our new jerky!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Sustenance Vendor",
+ GENITIVE = "торгового автомата Sustenance Vendor",
+ DATIVE = "торговому автомату Sustenance Vendor",
+ ACCUSATIVE = "торговый автомат Sustenance Vendor",
+ INSTRUMENTAL = "торговым автоматом Sustenance Vendor",
+ PREPOSITIONAL = "торговом автомате Sustenance Vendor"
+ )
+ desc = "Торговый автомат, в котором продаются продукты питания, в соответствии с разделом 47-С Соглашения об этическом обращении с заключёнными в NT."
+ slogan_list = list(
+ "Приятного аппетита!",
+ "Достаточное количество калорий для интенсивной работы."
+ )
+ ads_list = list(
+ "Самый здоровый!",
+ "Отмеченные наградами шоколадные батончики!",
+ "Ммм! Так вкусно!",
+ "О боже, это так вкусно!",
+ "Перекусите.",
+ "Закуски - это здорово!",
+ "Возьми немного, и еще немного!",
+ "Закуски высшего качества прямо с Марса.",
+ "Мы любим шоколад!",
+ "Попробуйте наше новое вяленое мясо!"
+ )
icon_state = "sustenance_off"
panel_overlay = "snack_panel"
@@ -2395,7 +2842,7 @@
refill_canister = /obj/item/vending_refill/sustenance
/obj/machinery/vending/sustenance/additional
- desc = "Какого этот автомат тут оказался?!"
+ desc = "Какого чёрта этот автомат тут оказался?!"
products = list(/obj/item/reagent_containers/food/snacks/tofu = 12,
/obj/item/reagent_containers/food/drinks/ice = 6,
/obj/item/reagent_containers/food/snacks/candy/candy_corn = 6)
@@ -2403,7 +2850,15 @@
/obj/machinery/vending/hatdispenser
name = "\improper Hatlord 9000"
- desc = "It doesn't seem the slightest bit unusual. This frustrates you immensely."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Hatlord 9000",
+ GENITIVE = "торгового автомата Hatlord 9000",
+ DATIVE = "торговому автомату Hatlord 9000",
+ ACCUSATIVE = "торговый автомат Hatlord 9000",
+ INSTRUMENTAL = "торговым автоматом Hatlord 9000",
+ PREPOSITIONAL = "торговом автомате Hatlord 9000"
+ )
+ desc = "В этом нет ничего необычного. Это вас очень расстраивает."
icon_state = "hats_off"
panel_overlay = "hats_panel"
@@ -2412,20 +2867,34 @@
broken_overlay = "hats_broken"
broken_lightmask_overlay = "hats_broken_lightmask"
- ads_list = list("Warning, not all hats are dog/monkey compatible. Apply forcefully with care.","Apply directly to the forehead.","Who doesn't love spending cash on hats?!","From the people that brought you collectable hat crates, Hatlord!")
+ ads_list = list(
+ "Внимание: не все шляпы совместимы с собаками и обезьянами. Надевайте с усилием, но осторожно.",
+ "Надевайте прямо на голову.",
+ "Кто не любит тратить деньги на шляпы?!",
+ "От создателей коробок с коллекционными шляпами — Hatlord!"
+ )
products = list(/obj/item/clothing/head/bowlerhat = 10,
/obj/item/clothing/head/beaverhat = 10,
/obj/item/clothing/head/boaterhat = 10,
/obj/item/clothing/head/fedora = 10,
/obj/item/clothing/head/fez = 10,
/obj/item/clothing/head/beret = 10)
- contraband = list(/obj/item/clothing/head/bearpelt = 5)
+ contraband = list(/obj/item/clothing/head/bearpelt = 5,
+ /obj/item/clothing/head/helmet/biker = 3)
premium = list(/obj/item/clothing/head/soft/rainbow = 1)
refill_canister = /obj/item/vending_refill/hatdispenser
/obj/machinery/vending/suitdispenser
name = "\improper Suitlord 9000"
- desc = "You wonder for a moment why all of your shirts and pants come conjoined. This hurts your head and you stop thinking about it."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Suitlord 9000",
+ GENITIVE = "торгового автомата Suitlord 9000",
+ DATIVE = "торговому автомату Suitlord 9000",
+ ACCUSATIVE = "торговый автомат Suitlord 9000",
+ INSTRUMENTAL = "торговым автоматом Suitlord 9000",
+ PREPOSITIONAL = "торговом автомате Suitlord 9000"
+ )
+ desc = "На мгновение ты задумываешься, почему все твои рубашки и брюки сшиты вместе. От этого у тебя начинает болеть голова, и ты перестаешь об этом думать."
icon_state = "suits_off"
panel_overlay = "suits_panel"
@@ -2434,7 +2903,13 @@
broken_overlay = "suits_broken"
broken_lightmask_overlay = "suits_broken_lightmask"
- ads_list = list("Pre-Ironed, Pre-Washed, Pre-Wor-*BZZT*","Blood of your enemies washes right out!","Who are YOU wearing?","Look dapper! Look like an idiot!","Dont carry your size? How about you shave off some pounds you fat lazy- *BZZT*")
+ ads_list = list(
+ "Предварительно проглаженный, предварительно стиранный, предво-*БЗЗЗ*",
+ "Кровь твоих врагов сразу же смоется!",
+ "Что ВЫ носите?",
+ "Выгляди элегантно! Выгляди как идиот!",
+ "Не подходит по размеру? А как насчёт того, чтобы сбросить пару килограммов, ты, жирный лентяй-*БЗЗЗЗ*"
+ )
products = list(
/obj/item/clothing/under/color/black = 10,
/obj/item/clothing/under/color/blue = 10,
@@ -2463,7 +2938,15 @@
/obj/machinery/vending/shoedispenser
name = "\improper Shoelord 9000"
- desc = "Wow, hatlord looked fancy, suitlord looked streamlined, and this is just normal. The guy who designed these must be an idiot."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Shoelord 9000",
+ GENITIVE = "торгового автомата Shoelord 9000",
+ DATIVE = "торговому автомату Shoelord 9000",
+ ACCUSATIVE = "торговый автомат Shoelord 9000",
+ INSTRUMENTAL = "торговым автоматом Shoelord 9000",
+ PREPOSITIONAL = "торговом автомате Shoelord 9000"
+ )
+ desc = "Оу, шляпы у Hatlord такие классные, костюмы у Suitlord такие элегантные, а у этого всё такое обычное... Дизайнер, должно быть, идиот."
icon_state = "shoes_off"
icon_state = "shoes_off"
@@ -2473,7 +2956,13 @@
broken_overlay = "shoes_broken"
broken_lightmask_overlay = "shoes_broken_lightmask"
- ads_list = list("Put your foot down!","One size fits all!","IM WALKING ON SUNSHINE!","No hobbits allowed.","NO PLEASE WILLY, DONT HURT ME- *BZZT*")
+ ads_list = list(
+ "Опусти ногу!",
+ "Один размер подходит всем!",
+ "Я ШАГАЮ В ЛУЧАХ СОЛНЦА!",
+ "Хоббитам вход воспрещен.",
+ "НЕТ, ПОЖАЛУЙСТА, ВИЛЛИ, НЕ ДЕЛАЙ МНЕ БОЛЬНО-*БЗЗЗЗ*"
+ )
products = list(/obj/item/clothing/shoes/black = 10,/obj/item/clothing/shoes/brown = 10,/obj/item/clothing/shoes/blue = 10,/obj/item/clothing/shoes/green = 10,/obj/item/clothing/shoes/yellow = 10,/obj/item/clothing/shoes/purple = 10,/obj/item/clothing/shoes/red = 10,/obj/item/clothing/shoes/white = 10,/obj/item/clothing/shoes/sandal=10)
contraband = list(/obj/item/clothing/shoes/orange = 5)
premium = list(/obj/item/clothing/shoes/rainbow = 1)
@@ -2481,9 +2970,30 @@
/obj/machinery/vending/syndicigs
name = "\improper Suspicious Cigarette Machine"
- desc = "Smoke 'em if you've got 'em."
- slogan_list = list("Космосигареты на вкус хороши, какими они и должны быть.","I'd rather toolbox than switch.","Затянитесь!","Не верьте исследованиям — курите сегодня!")
- ads_list = list("Наверняка не очень-то и вредно для Вас!","Не верьте учёным!","На здоровье!","Не бросайте курить, купите ещё!","Затянитесь!","Никотиновый рай.","Лучшие сигареты с 2150 года.","Сигареты с множеством наград.")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Suspicious Cigarette Machine",
+ GENITIVE = "торгового автомата Suspicious Cigarette Machine",
+ DATIVE = "торговому автомату Suspicious Cigarette Machine",
+ ACCUSATIVE = "торговый автомат Suspicious Cigarette Machine",
+ INSTRUMENTAL = "торговым автоматом Suspicious Cigarette Machine",
+ PREPOSITIONAL = "торговом автомате Suspicious Cigarette Machine"
+ )
+ desc = "Кури, раз уж взял."
+ slogan_list = list(
+ "Космосигареты на вкус хороши, какими они и должны быть.",
+ "Затянитесь!",
+ "Не верьте исследованиям — курите сегодня!"
+ )
+ ads_list = list(
+ "Наверняка не очень-то и вредно для Вас!",
+ "Не верьте учёным!",
+ "На здоровье!",
+ "Не бросайте курить, купите ещё!",
+ "Затянитесь!",
+ "Никотиновый рай.",
+ "Лучшие сигареты с 2150 года.",
+ "Сигареты с множеством наград."
+ )
vend_delay = 34
icon_state = "cigs_off"
@@ -2498,9 +3008,31 @@
/obj/machinery/vending/syndisnack
name = "\improper Getmore Chocolate Corp"
- desc = "A modified snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars"
- slogan_list = list("Try our new nougat bar!","Twice the calories for half the price!")
- ads_list = list("The healthiest!","Award-winning chocolate bars!","Mmm! So good!","Oh my god it's so juicy!","Have a snack.","Snacks are good for you!","Have some more Getmore!","Best quality snacks straight from mars.","We love chocolate!","Try our new jerky!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Getmore Chocolate Corp",
+ GENITIVE = "торгового автомата Getmore Chocolate Corp",
+ DATIVE = "торговому автомату Getmore Chocolate Corp",
+ ACCUSATIVE = "торговый автомат Getmore Chocolate Corp",
+ INSTRUMENTAL = "торговым автоматом Getmore Chocolate Corp",
+ PREPOSITIONAL = "торговом автомате Getmore Chocolate Corp"
+ )
+ desc = "Модифицированный автомат самообслуживания, любезно предоставленный шоколадной корпорацией Getmore, базирующейся на Марсе."
+ slogan_list = list(
+ "Попробуйте наш новый батончик с нугой!",
+ "Вдвое больше калорий за полцены!"
+ )
+ ads_list = list(
+ "Самый здоровый!",
+ "Отмеченные наградами шоколадные батончики!",
+ "Ммм! Так вкусно!",
+ "О боже, это так вкусно!",
+ "Перекусите.",
+ "Закуски - это здорово!",
+ "Возьми немного, и еще немного!",
+ "Закуски высшего качества прямо с Марса.",
+ "Мы любим шоколад!",
+ "Попробуйте наше новое вяленое мясо!"
+ )
icon_state = "snack_off"
panel_overlay = "snack_panel"
@@ -2514,8 +3046,20 @@
/obj/machinery/vending/syndierobotics
name = "Синди Робо-ДеЛюкс!"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Синди Робо-ДеЛюкс",
+ GENITIVE = "торгового автомата Синди Робо-ДеЛюкс",
+ DATIVE = "торговому автомату Синди Робо-ДеЛюкс",
+ ACCUSATIVE = "торговый автомат Синди Робо-ДеЛюкс",
+ INSTRUMENTAL = "торговым автоматом Синди Робо-ДеЛюкс",
+ PREPOSITIONAL = "торговом автомате Синди Робо-ДеЛюкс"
+ )
desc = "Всё что нужно, чтобы сделать личного железного друга из ваших врагов!"
- ads_list = list("Make them beep-boop like a robot should!","Robotisation is NOT a crime!","Nyoom!")
+ ads_list = list(
+ "Заставьте их пищать и гудеть, как и подобает роботу!",
+ "Роботизация — это НЕ преступление!",
+ "Ньям!"
+ )
icon_state = "robotics_off"
panel_overlay = "robotics_panel"
@@ -2544,7 +3088,15 @@
//don't forget to change the refill size if you change the machine's contents!
/obj/machinery/vending/clothing
name = "\improper ClothesMate" //renamed to make the slogan rhyme
- desc = "A vending machine for clothing."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат ClothesMate",
+ GENITIVE = "торгового автомата ClothesMate",
+ DATIVE = "торговому автомату ClothesMate",
+ ACCUSATIVE = "торговый автомат ClothesMate",
+ INSTRUMENTAL = "торговым автоматом ClothesMate",
+ PREPOSITIONAL = "торговом автомате ClothesMate"
+ )
+ desc = "Автомат с бесплатной одеждой."
icon_state = "clothes_off"
panel_overlay = "clothes_panel"
@@ -2553,9 +3105,14 @@
broken_overlay = "clothes_broken"
broken_lightmask_overlay = "clothes_broken_lightmask"
- slogan_list = list("Dress for success!","Prepare to look swagalicious!","Look at all this free swag!","Why leave style up to fate? Use the ClothesMate!")
+ slogan_list = list(
+ "Приоденься для Успеха!",
+ "Приготовьтесь выглядеть потрясающе!",
+ "Посмотрите на все эти классные вещи бесплатно!",
+ "Зачем оставлять стиль на произвол судьбы? Используй ClothesMate!"
+ )
vend_delay = 15
- vend_reply = "Thank you for using the ClothesMate!"
+ vend_reply = "Спасибо за использование ClothesMate!"
products = list(/obj/item/clothing/head/that = 2,
/obj/item/clothing/head/fedora = 1,
/obj/item/clothing/glasses/monocle = 1,
@@ -2652,9 +3209,27 @@
/obj/machinery/vending/artvend
name = "\improper ArtVend"
- desc = "A vending machine for art supplies."
- slogan_list = list("Stop by for all your artistic needs!","Color the floors with crayons, not blood!","Don't be a starving artist, use ArtVend. ","Don't fart, do art!")
- ads_list = list("Just like Kindergarten!","Now with 1000% more vibrant colors!","Screwing with the janitor was never so easy!","Creativity is at the heart of every spessman.")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат ArtVend",
+ GENITIVE = "торгового автомата ArtVend",
+ DATIVE = "торговому автомату ArtVend",
+ ACCUSATIVE = "торговый автомат ArtVend",
+ INSTRUMENTAL = "торговым автоматом ArtVend",
+ PREPOSITIONAL = "торговом автомате ArtVend"
+ )
+ desc = "Торговый автомат для всех ваших художественных нужд."
+ slogan_list = list(
+ "Забирайте свои прикольные вещички!"
+ ,"Раскрасьте пол цветными карандашами, а не кровью!",
+ "Не будь голодающим творцом, используй ArtVend.",
+ "Не сри, твори!"
+ )
+ ads_list = list(
+ "Прямо как в детском саду!",
+ "Теперь на 1000% больше ярких цветов!",
+ "Поиметь уборщика еще никогда не было так просто!",
+ "Креативность лежит в основе каждого специалиста!"
+ )
vend_delay = 15
icon_state = "artvend_off"
@@ -2712,9 +3287,30 @@
/obj/machinery/vending/crittercare
name = "\improper CritterCare"
- desc = "A vending machine for pet supplies."
- slogan_list = list("Stop by for all your animal's needs!","Cuddly pets deserve a stylish collar!","Pets in space, what could be more adorable?","Freshest fish eggs in the system!","Rocks are the perfect pet, buy one today!")
- ads_list = list("House-training costs extra!","Now with 1000% more cat hair!","Allergies are a sign of weakness!","Dogs are man's best friend. Remember that Vulpkanin!"," Heat lamps for Unathi!"," Vox-y want a cracker?")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат CritterCare",
+ GENITIVE = "торгового автомата CritterCare",
+ DATIVE = "торговому автомату CritterCare",
+ ACCUSATIVE = "торговый автомат CritterCare",
+ INSTRUMENTAL = "торговым автоматом CritterCare",
+ PREPOSITIONAL = "торговом автомате CritterCare"
+ )
+ desc = "Торговый автомат по продаже зоотоваров."
+ slogan_list = list(
+ "Здесь всё, чтобы ваш питомец был всем доволен!",
+ "Крутые питомцы заслуживают крутой ошейник!",
+ "Домашние животные в космосе - что может быть очаровательнее?",
+ "Самая свежая икра в системе!",
+ "Камни - лучшие питомцы, купите себе их уже сегодня!"
+ )
+ ads_list = list(
+ "Дрессировка на дому оплачивается дополнительно!",
+ "Теперь на 1000% больше кошачьей шерсти!",
+ "Аллергия - признак слабости!",
+ "Собаки - лучшие друзья человека. Помни об этом, вульпа!",
+ "Нагревательные лампы для Унатхов!",
+ "Вокс хочет крекер?"
+ )
vend_delay = 15
icon_state = "crittercare_off"
@@ -2773,6 +3369,14 @@
/obj/machinery/vending/clothing/departament
name = "\improper Broken Departament ClothesMate"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Broken Departament ClothesMate",
+ GENITIVE = "торгового автомата Broken Departament ClothesMate",
+ DATIVE = "торговому автомату Broken Departament ClothesMate",
+ ACCUSATIVE = "торговый автомат Broken Departament ClothesMate",
+ INSTRUMENTAL = "торговым автоматом Broken Departament ClothesMate",
+ PREPOSITIONAL = "торговом автомате Broken Departament ClothesMate"
+ )
desc = "Автомат-помощник по выдаче одежды отдела."
slogan_list = list(
"Одежда успешного работника!", "Похвала на глаза!", "Ну наконец-то нормально оделся!",
@@ -2795,6 +3399,14 @@
/obj/machinery/vending/clothing/departament/security
name = "\improper Departament Security ClothesMate"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Departament Security ClothesMate",
+ GENITIVE = "торгового автомата Departament Security ClothesMate",
+ DATIVE = "торговому автомату Departament Security ClothesMate",
+ ACCUSATIVE = "торговый автомат Departament Security ClothesMate",
+ INSTRUMENTAL = "торговым автоматом Departament Security ClothesMate",
+ PREPOSITIONAL = "торговом автомате Departament Security ClothesMate"
+ )
desc = "Автомат-помощник по выдаче одежды Отдела Службы Безопасности."
icon_state = "clothes-dep-sec_off"
@@ -2874,6 +3486,14 @@
/obj/machinery/vending/clothing/departament/medical
name = "\improper Departament Medical ClothesMate"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Departament Medical ClothesMate",
+ GENITIVE = "торгового автомата Departament Medical ClothesMate",
+ DATIVE = "торговому автомату Departament Medical ClothesMate",
+ ACCUSATIVE = "торговый автомат Departament Medical ClothesMate",
+ INSTRUMENTAL = "торговым автоматом Departament Medical ClothesMate",
+ PREPOSITIONAL = "торговом автомате Departament Medical ClothesMate"
+ )
desc = "Автомат-помощник по выдаче одежды Медицинского Отдела."
icon_state = "clothes-dep-med_off"
@@ -2974,6 +3594,14 @@
/obj/machinery/vending/clothing/departament/engineering
name = "\improper Departament Engineering ClothesMate"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Departament Engineering ClothesMat",
+ GENITIVE = "торгового автомата Departament Engineering ClothesMat",
+ DATIVE = "торговому автомату Departament Engineering ClothesMat",
+ ACCUSATIVE = "торговый автомат Departament Engineering ClothesMat",
+ INSTRUMENTAL = "торговым автоматом Departament Engineering ClothesMat",
+ PREPOSITIONAL = "торговом автомате Departament Engineering ClothesMat"
+ )
desc = "Автомат-помощник по выдаче одежды Инженерного Отдела."
icon_state = "clothes-dep-eng_off"
@@ -3033,6 +3661,14 @@
/obj/machinery/vending/clothing/departament/science
name = "\improper Departament Science ClothesMate"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Departament Science ClothesMate",
+ GENITIVE = "торгового автомата Departament Science ClothesMate",
+ DATIVE = "торговому автомату Departament Science ClothesMate",
+ ACCUSATIVE = "торговый автомат Departament Science ClothesMate",
+ INSTRUMENTAL = "торговым автоматом Departament Science ClothesMate",
+ PREPOSITIONAL = "торговом автомате Departament Science ClothesMate"
+ )
desc = "Автомат-помощник по выдаче одежды Научного Отдела."
icon_state = "clothes-dep-sci_off"
@@ -3088,6 +3724,14 @@
/obj/machinery/vending/clothing/departament/cargo
name = "\improper Departament Cargo ClothesMate"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Departament Cargo ClothesMate",
+ GENITIVE = "торгового автомата Departament Cargo ClothesMate",
+ DATIVE = "торговому автомату Departament Cargo ClothesMate",
+ ACCUSATIVE = "торговый автомат Departament Cargo ClothesMate",
+ INSTRUMENTAL = "торговым автоматом Departament Cargo ClothesMate",
+ PREPOSITIONAL = "торговом автомате Departament Cargo ClothesMate"
+ )
desc = "Автомат-помощник по выдаче одежды Отдела Поставок."
icon_state = "clothes-dep-car_off"
@@ -3146,6 +3790,14 @@
/obj/machinery/vending/clothing/departament/law
name = "\improper Departament Law ClothesMate"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Departament Law ClothesMate",
+ GENITIVE = "торгового автомата Departament Law ClothesMate",
+ DATIVE = "торговому автомату Departament Law ClothesMate",
+ ACCUSATIVE = "торговый автомат Departament Law ClothesMate",
+ INSTRUMENTAL = "торговым автоматом Departament Law ClothesMate",
+ PREPOSITIONAL = "торговом автомате Departament Law ClothesMate"
+ )
desc = "Автомат-помощник по выдаче одежды Юридического Отдела."
icon_state = "clothes-dep-sec_off"
@@ -3205,6 +3857,14 @@
/obj/machinery/vending/clothing/departament/service
name = "\improper Departament Service ClothesMate"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Departament Service ClothesMate",
+ GENITIVE = "торгового автомата Departament Service ClothesMate",
+ DATIVE = "торговому автомату Departament Service ClothesMate",
+ ACCUSATIVE = "торговый автомат Departament Service ClothesMate",
+ INSTRUMENTAL = "торговым автоматом Departament Service ClothesMate",
+ PREPOSITIONAL = "торговом автомате Departament Service ClothesMate"
+ )
desc = "Автомат-помощник по выдаче одежды Сервисного отдела."
req_access = list()
products = list()
@@ -3212,6 +3872,14 @@
/obj/machinery/vending/clothing/departament/service/chaplain
name = "\improper Departament Service ClothesMate Chaplain"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Departament Service ClothesMate Chaplain",
+ GENITIVE = "торгового автомата Departament Service ClothesMate Chaplain",
+ DATIVE = "торговому автомату Departament Service ClothesMate Chaplain",
+ ACCUSATIVE = "торговый автомат Departament Service ClothesMate Chaplain",
+ INSTRUMENTAL = "торговым автоматом Departament Service ClothesMate Chaplain",
+ PREPOSITIONAL = "торговом автомате Departament Service ClothesMate Chaplain"
+ )
desc = "Автомат-помощник по выдаче одежды Сервисного отдела церкви."
icon_state = "clothes-dep-car_off"
@@ -3249,6 +3917,14 @@
/obj/machinery/vending/clothing/departament/service/botanical
name = "\improper Departament Service ClothesMate Botanical"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат Departament Service ClothesMate Botanical",
+ GENITIVE = "торгового автомата Departament Service ClothesMate Botanical",
+ DATIVE = "торговому автомату Departament Service ClothesMate Botanical",
+ ACCUSATIVE = "торговый автомат Departament Service ClothesMate Botanical",
+ INSTRUMENTAL = "торговым автоматом Departament Service ClothesMate Botanical",
+ PREPOSITIONAL = "торговом автомате Departament Service ClothesMate Botanical"
+ )
desc = "Автомат-помощник по выдаче одежды Сервисного отдела ботаники."
req_access = list(ACCESS_HYDROPONICS)
products = list(
@@ -3276,8 +3952,22 @@
/obj/machinery/vending/nta
name = "NT Ammunition"
- desc = "A special equipment vendor."
- ads_list = list("Возьми патрон!","Не забывай, снаряжаться - полезно!","Бжж-Бзз-з!.","Обезопасить, Удержать, Сохранить!","Стоять, снярядись на задание!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Ammunition",
+ GENITIVE = "торгового автомата NT Ammunition",
+ DATIVE = "торговому автомату NT Ammunition",
+ ACCUSATIVE = "торговый автомат NT Ammunition",
+ INSTRUMENTAL = "торговым автоматом NT Ammunition",
+ PREPOSITIONAL = "торговом автомате NT Ammunition"
+ )
+ desc = "Автомат-помощник по выдаче специального снаряжения."
+ ads_list = list(
+ "Возьми патрон!",
+ "Не забывай, снаряжаться - полезно!",
+ "Бжж-Бзз-з!",
+ "Обезопасить, Удержать, Сохранить!",
+ "Стоять, снярядись на задание!"
+ )
icon_state = "nta_base"
panel_overlay = "nta_panel"
@@ -3355,8 +4045,22 @@
/obj/machinery/vending/nta/ertarmory/blue
name = "NT ERT Medium Gear & Ammunition"
- desc = "A ERT Medium equipment vendor."
- ads_list = list("Круши черепа синдиката!","Не забывай, спасать - полезно!","Бжж-Бзз-з!.","Обезопасить, Удержать, Сохранить!","Стоять, снярядись на задание!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT ERT Medium Gear & Ammunition",
+ GENITIVE = "торгового автомата NT ERT Medium Gear & Ammunition",
+ DATIVE = "торговому автомату NT ERT Medium Gear & Ammunition",
+ ACCUSATIVE = "торговый автомат NT ERT Medium Gear & Ammunition",
+ INSTRUMENTAL = "торговым автоматом NT ERT Medium Gear & Ammunition",
+ PREPOSITIONAL = "торговом автомате NT ERT Medium Gear & Ammunition"
+ )
+ desc = "Автомат-помощник по выдаче снаряжения среднего класса."
+ ads_list = list(
+ "Круши черепа синдиката!",
+ "Не забывай, спасать - полезно!",
+ "Бжж-Бзз-з!",
+ "Обезопасить, Удержать, Сохранить!",
+ "Стоять, снярядись на задание!"
+ )
icon_state = "nta_base"
base_icon_state = "nta-blue"
@@ -3383,8 +4087,22 @@
/obj/machinery/vending/nta/ertarmory/red
name = "NT ERT Heavy Gear & Ammunition"
- desc = "A ERT Heavy equipment vendor."
- ads_list = list("Круши черепа синдиката!","Не забывай, спасать - полезно!","Бжж-Бзз-з!.","Обезопасить, Удержать, Сохранить!","Стоять, снярядись на задание!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT ERT Heavy Gear & Ammunition",
+ GENITIVE = "торгового автомата NT ERT Heavy Gear & Ammunition",
+ DATIVE = "торговому автомату NT ERT Heavy Gear & Ammunition",
+ ACCUSATIVE = "торговый автомат NT ERT Heavy Gear & Ammunition",
+ INSTRUMENTAL = "торговым автоматом NT ERT Heavy Gear & Ammunition",
+ PREPOSITIONAL = "торговом автомате NT ERT Heavy Gear & Ammunition"
+ )
+ desc = "Автомат-помощник по выдаче снаряжения тяжелого класса."
+ ads_list = list(
+ "Круши черепа синдиката!",
+ "Не забывай, спасать - полезно!",
+ "Бжж-Бзз-з!",
+ "Обезопасить, Удержать, Сохранить!",
+ "Стоять, снярядись на задание!"
+ )
icon_state = "nta_base"
base_icon_state = "nta-red"
@@ -3411,8 +4129,22 @@
/obj/machinery/vending/nta/ertarmory/green
name = "NT ERT Light Gear & Ammunition"
- desc = "A ERT Light equipment vendor."
- ads_list = list("Круши черепа синдиката!","Не забывай, спасать - полезно!","Бжж-Бзз-з!.","Обезопасить, Удержать, Сохранить!","Стоять, снярядись на задание!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT ERT Light Gear & Ammunition",
+ GENITIVE = "торгового автомата NT ERT Light Gear & Ammunition",
+ DATIVE = "торговому автомату NT ERT Light Gear & Ammunition",
+ ACCUSATIVE = "торговый автомат NT ERT Light Gear & Ammunition",
+ INSTRUMENTAL = "торговым автоматом NT ERT Light Gear & Ammunition",
+ PREPOSITIONAL = "торговом автомате NT ERT Light Gear & Ammunition"
+ )
+ desc = "Автомат-помощник по выдаче снаряжения легкого класса"
+ ads_list = list(
+ "Круши черепа синдиката!",
+ "Не забывай, спасать - полезно!",
+ "Бжж-Бзз-з!",
+ "Обезопасить, Удержать, Сохранить!",
+ "Стоять, снярядись на задание!"
+ )
icon_state = "nta_base"
base_icon_state = "nta-green"
@@ -3443,7 +4175,15 @@
/obj/machinery/vending/nta/ertarmory/green/cc_jail
name = "NT CentComm prison guards' Gear & Ammunition"
- desc = "An equipment vendor for CentComm corrections officers."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT CentComm prison guards' Gear & Ammunition",
+ GENITIVE = "торгового автомата NT CentComm prison guards' Gear & Ammunition",
+ DATIVE = "торговому автомату NT CentComm prison guards' Gear & Ammunition",
+ ACCUSATIVE = "торговый автомат NT CentComm prison guards' Gear & Ammunition",
+ INSTRUMENTAL = "торговым автоматом NT CentComm prison guards' Gear & Ammunition",
+ PREPOSITIONAL = "торговом автомате NT CentComm prison guards' Gear & Ammunition"
+ )
+ desc = "Автомат с оборудованием для сотрудников CentComm."
products = list(/obj/item/restraints/handcuffs=5,
/obj/item/restraints/handcuffs/cable/zipties=5,
/obj/item/grenade/flashbang=3,
@@ -3463,8 +4203,22 @@
/obj/machinery/vending/nta/ertarmory/yellow
name = "NT ERT Death Wish Gear & Ammunition"
- desc = "A ERT Death Wish equipment vendor."
- ads_list = list("Круши черепа ВСЕХ!","Не забывай, УБИВАТЬ - полезно!","УБИВАТЬ УБИВАТЬ УБИВАТЬ УБИВАТЬ!.","УБИВАТЬ, Удержать, УБИВАТЬ!","Стоять, снярядись на УБИВАТЬ!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT ERT Death Wish Gear & Ammunition",
+ GENITIVE = "торгового автомата NT ERT Death Wish Gear & Ammunition",
+ DATIVE = "торговому автомату NT ERT Death Wish Gear & Ammunition",
+ ACCUSATIVE = "торговый автомат NT ERT Death Wish Gear & Ammunition",
+ INSTRUMENTAL = "торговым автоматом NT ERT Death Wish Gear & Ammunition",
+ PREPOSITIONAL = "торговом автомате NT ERT Death Wish Gear & Ammunition"
+ )
+ desc = "Автомат с оборудованием для ОБР — помогает людям осуществить их желание умереть."
+ ads_list = list(
+ "Круши черепа ВСЕХ!",
+ "Не забывай, УБИВАТЬ - полезно!",
+ "УБИВАТЬ УБИВАТЬ УБИВАТЬ УБИВАТЬ!.",
+ "УБИВАТЬ, Удержать, УБИВАТЬ!",
+ "Стоять, снярядись на УБИВАТЬ!"
+ )
icon_state = "nta_base"
base_icon_state = "nta-yellow"
@@ -3490,8 +4244,22 @@
/obj/machinery/vending/nta/ertarmory/medical
name = "NT ERT Medical Gear"
- desc = "A ERT medical equipment vendor."
- ads_list = list("Лечи раненых от рук синдиката!","Не забывай, лечить - полезно!","Бжж-Бзз-з!.","Перевязать, Оперировать, Выписать!","Стоять, снярядись медикаментами на задание!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT ERT Medical Gear",
+ GENITIVE = "торгового автомата NT ERT Medical Gear",
+ DATIVE = "торговому автомату NT ERT Medical Gear",
+ ACCUSATIVE = "торговый автомат NT ERT Medical Gear",
+ INSTRUMENTAL = "торговым автоматом NT ERT Medical Gear",
+ PREPOSITIONAL = "торговом автомате NT ERT Medical Gear"
+ )
+ desc = "Автомат с медицинским оборудованием ОБР."
+ ads_list = list(
+ "Лечи раненых от рук синдиката!",
+ "Не забывай, лечить - полезно!",
+ "Бжж-Бзз-з!",
+ "Перевязать, Оперировать, Выписать!",
+ "Стоять, снярядись медикаментами на задание!"
+ )
icon_state = "nta_base"
base_icon_state = "nta-medical"
@@ -3527,8 +4295,22 @@
/obj/machinery/vending/nta/ertarmory/engineer
name = "NT ERT Engineer Gear"
- desc = "A ERT engineering equipment vendor."
- ads_list = list("Чини станцию от рук синдиката!","Не забывай, чинить - полезно!","Бжж-Бзз-з!.","Починить, Заварить, Трубить!","Стоять, снярядись на починку труб!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT ERT Engineer Gear",
+ GENITIVE = "торгового автомата NT ERT Engineer Gear",
+ DATIVE = "торговому автомату NT ERT Engineer Gear",
+ ACCUSATIVE = "торговый автомат NT ERT Engineer Gear",
+ INSTRUMENTAL = "торговым автоматом NT ERT Engineer Gear",
+ PREPOSITIONAL = "торговом автомате NT ERT Engineer Gear"
+ )
+ desc = "Автомат с инженерным оборудованием ОБР."
+ ads_list = list(
+ "Чини станцию от рук синдиката!",
+ "Не забывай, чинить - полезно!",
+ "Бжж-Бзз-з!",
+ "Починить, Заварить, Трубить!",
+ "Стоять, снярядись на починку труб!"
+ )
icon_state = "nta_base"
base_icon_state = "nta-engi"
@@ -3557,8 +4339,22 @@
/obj/machinery/vending/nta/ertarmory/janitor
name = "NT ERT Janitor Gear"
- desc = "A ERT ccleaning equipment vendor."
- ads_list = list("Чисть станцию от рук синдиката!","Не забывай, чистить - полезно!","Вилкой чисти!.","Помыть, Постирать, Оттереть!","Стоять, снярядись клинерами!")
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT ERT Janitor Gear",
+ GENITIVE = "торгового автомата NT ERT Janitor Gear",
+ DATIVE = "торговому автомату NT ERT Janitor Gear",
+ ACCUSATIVE = "торговый автомат NT ERT Janitor Gear",
+ INSTRUMENTAL = "торговым автоматом NT ERT Janitor Gear",
+ PREPOSITIONAL = "торговом автомате NT ERT Janitor Gear"
+ )
+ desc = "Автомат с уборочным оборудованием ОБР."
+ ads_list = list(
+ "Чисть станцию от рук синдиката!",
+ "Не забывай, чистить - полезно!",
+ "Вилкой чисти!",
+ "Помыть, Постирать, Оттереть!",
+ "Стоять, снярядись клинерами!"
+ )
icon_state = "nta_base"
base_icon_state = "nta-janitor"
@@ -3585,7 +4381,15 @@
/obj/machinery/vending/pai
name = "\improper RoboFriends"
- desc = "Wonderful vendor of PAI friends"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат RoboFriends",
+ GENITIVE = "торгового автомата RoboFriends",
+ DATIVE = "торговому автомату RoboFriends",
+ ACCUSATIVE = "торговый автомат RoboFriends",
+ INSTRUMENTAL = "торговым автоматом RoboFriends",
+ PREPOSITIONAL = "торговом автомате RoboFriends"
+ )
+ desc = "Потрясающий продавец ПИИ-друзей!"
icon_state = "paivend_off"
panel_overlay = "paivend_panel"
@@ -3594,7 +4398,13 @@
broken_overlay = "paivend_broken"
broken_lightmask_overlay = "paivend_broken_lightmask"
- ads_list = list("А вы любите нас?","Мы твои друзья!","Эта покупка войдет в историю","Я ПАИ простой, купишь меня, а я тебе друга!","Спасибо за покупку.")
+ ads_list = list(
+ "А вы любите нас?",
+ "Мы твои друзья!",
+ "Эта покупка войдет в историю",
+ "Я ПИИ простой, купишь меня, а я тебе друга!",
+ "Спасибо за покупку."
+ )
resistance_flags = FIRE_PROOF
products = list(
/obj/item/paicard = 10,
@@ -3624,7 +4434,15 @@
/obj/machinery/vending/security/ert
name = "NT ERT Consumables Gear"
- desc = "A consumable equipment for different situations."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT ERT Consumables Gear",
+ GENITIVE = "торгового автомата NT ERT Consumables Gear",
+ DATIVE = "торговому автомату NT ERT Consumables Gear",
+ ACCUSATIVE = "торговый автомат NT ERT Consumables Gear",
+ INSTRUMENTAL = "торговым автоматом NT ERT Consumables Gear",
+ PREPOSITIONAL = "торговом автомате NT ERT Consumables Gear"
+ )
+ desc = "Расходное оборудование для различных ситуаций."
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
refill_canister = /obj/item/vending_refill/nta
@@ -3697,7 +4515,15 @@
/obj/machinery/vending/ntc/medal
name = "NT Cargo Encouragement"
- desc = "A encourage vendor with many of medal types."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Cargo Encouragement",
+ GENITIVE = "торгового автомата NT Cargo Encouragement",
+ DATIVE = "торговому автомату NT Cargo Encouragement",
+ ACCUSATIVE = "торговый автомат NT Cargo Encouragement",
+ INSTRUMENTAL = "торговым автоматом NT Cargo Encouragement",
+ PREPOSITIONAL = "торговом автомате NT Cargo Encouragement"
+ )
+ desc = "Тяжелый кейс с медалями на любой вкус и цвет."
icon = 'icons/obj/storage.dmi'
icon_state = "medalbox"
products = list(
@@ -3717,7 +4543,15 @@
/obj/machinery/vending/ntc/medical
name = "NT Cargo Medical Gear"
- desc = "A some medical equipment vendor for cargo."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Cargo Medical Gear",
+ GENITIVE = "торгового автомата NT Cargo Medical Gear",
+ DATIVE = "торговому автомату NT Cargo Medical Gear",
+ ACCUSATIVE = "торговый автомат NT Cargo Medical Gear",
+ INSTRUMENTAL = "торговым автоматом NT Cargo Medical Gear",
+ PREPOSITIONAL = "торговом автомате NT Cargo Medical Gear"
+ )
+ desc = "Различное медицинское оборудование для доставки."
icon_state = "nta_base"
base_icon_state = "nta-medical"
@@ -3738,7 +4572,15 @@
/obj/machinery/vending/ntc/engineering
name = "NT Cargo Engineering Gear"
- desc = "A some engineering equipment vendor for cargo."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Cargo Engineering Gear",
+ GENITIVE = "торгового автомата NT Cargo Engineering Gear",
+ DATIVE = "торговому автомату NT Cargo Engineering Gear",
+ ACCUSATIVE = "торговый автомат NT Cargo Engineering Gear",
+ INSTRUMENTAL = "торговым автоматом NT Cargo Engineering Gear",
+ PREPOSITIONAL = "торговом автомате NT Cargo Engineering Gear"
+ )
+ desc = "Различное инженерное оборудование для доставки."
icon_state = "nta_base"
base_icon_state = "nta-engi"
@@ -3758,7 +4600,15 @@
/obj/machinery/vending/ntc/janitor
name = "NT Cargo Janitor Gear"
- desc = "A some janitor equipment vendor for cargo."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Cargo Janitor Gear",
+ GENITIVE = "торгового автомата NT Cargo Janitor Gear",
+ DATIVE = "торговому автомату NT Cargo Janitor Gear",
+ ACCUSATIVE = "торговый автомат NT Cargo Janitor Gear",
+ INSTRUMENTAL = "торговым автоматом NT Cargo Janitor Gear",
+ PREPOSITIONAL = "торговом автомате NT Cargo Janitor Gear"
+ )
+ desc = "Различное уборочное оборудование для доставки."
icon_state = "nta_base"
base_icon_state = "nta-janitor"
@@ -3783,7 +4633,15 @@
/obj/machinery/vending/ntcrates
name = "NT Cargo Preset Gear"
- desc = "A already preset of equipments vendor for cargo."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Cargo Preset Gear",
+ GENITIVE = "торгового автомата NT Cargo Preset Gear",
+ DATIVE = "торговому автомату NT Cargo Preset Gear",
+ ACCUSATIVE = "торговый автомат NT Cargo Preset Gear",
+ INSTRUMENTAL = "торговым автоматом NT Cargo Preset Gear",
+ PREPOSITIONAL = "торговом автомате NT Cargo Preset Gear"
+ )
+ desc = "Предварительный комплект оборудования для доставки, на все случаи жизни."
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
refill_canister = /obj/item/vending_refill/nta
@@ -3809,7 +4667,15 @@
/obj/machinery/vending/ntc/ert
name = "NT Response Team Base Gear"
- desc = "A ERT Base equipment vendor"
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Response Team Base Gear",
+ GENITIVE = "торгового автомата NT Response Team Base Gear",
+ DATIVE = "торговому автомату NT Response Team Base Gear",
+ ACCUSATIVE = "торговый автомат NT Response Team Base Gear",
+ INSTRUMENTAL = "торговым автоматом NT Response Team Base Gear",
+ PREPOSITIONAL = "торговом автомате NT Response Team Base Gear"
+ )
+ desc = "Автомат с базовым оборудованием ОБР"
icon_state = "nta_base"
base_icon_state = "nta-blue"
@@ -3830,7 +4696,15 @@
/obj/machinery/vending/ntc_resources
name = "NT Matter Сompression Vendor"
- desc = "Its vendor use advanced technology of matter compression and can have a many volume of resources."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Matter Сompression Vendor",
+ GENITIVE = "торгового автомата NT Matter Сompression Vendor",
+ DATIVE = "торговому автомату NT Matter Сompression Vendor",
+ ACCUSATIVE = "торговый автомат NT Matter Сompression Vendor",
+ INSTRUMENTAL = "торговым автоматом NT Matter Сompression Vendor",
+ PREPOSITIONAL = "торговом автомате NT Matter Сompression Vendor"
+ )
+ desc = "Этот автомат использует передовую технологию сжатия и может хранить в себе большой объем ресурсов."
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
refill_canister = /obj/item/vending_refill/nta
@@ -3863,7 +4737,15 @@
/obj/machinery/vending/mech/ntc/exousuit
name = "NT Exosuit Bluespace Transporter"
- desc = "Fabricator with advanced technology of bluespace transporting of resources."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Exosuit Bluespace Transporter",
+ GENITIVE = "торгового автомата NT Exosuit Bluespace Transporter",
+ DATIVE = "торговому автомату NT Exosuit Bluespace Transporter",
+ ACCUSATIVE = "торговый автомат NT Exosuit Bluespace Transporter",
+ INSTRUMENTAL = "торговым автоматом NT Exosuit Bluespace Transporter",
+ PREPOSITIONAL = "торговом автомате NT Exosuit Bluespace Transporter"
+ )
+ desc = "Фабрикатор с передовой технологией BlueSpace-транспортировки ресурсов."
icon = 'icons/obj/machines/robotics.dmi'
icon_state = "fab-idle"
products = list(
@@ -3877,7 +4759,15 @@
/obj/machinery/vending/mech/ntc/equipment
name = "NT Exosuit Bluespace Transporter"
- desc = "Fabricator with advanced technology of bluespace transporting of resources."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Exosuit Bluespace Transporter",
+ GENITIVE = "торгового автомата NT Exosuit Bluespace Transporter",
+ DATIVE = "торговому автомату NT Exosuit Bluespace Transporter",
+ ACCUSATIVE = "торговый автомат NT Exosuit Bluespace Transporter",
+ INSTRUMENTAL = "торговым автоматом NT Exosuit Bluespace Transporter",
+ PREPOSITIONAL = "торговом автомате NT Exosuit Bluespace Transporter"
+ )
+ desc = "Фабрикатор с передовой технологией BlueSpace-транспортировки ресурсов."
icon_state = "engivend_off"
panel_overlay = "engivend_panel"
@@ -3897,7 +4787,15 @@
/obj/machinery/vending/mech/ntc/weapon
name = "NT Exosuit Bluespace Transporter"
- desc = "Fabricator with advanced technology of bluespace transporting of resources."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Exosuit Bluespace Transporter",
+ GENITIVE = "торгового автомата NT Exosuit Bluespace Transporter",
+ DATIVE = "торговому автомату NT Exosuit Bluespace Transporter",
+ ACCUSATIVE = "торговый автомат NT Exosuit Bluespace Transporter",
+ INSTRUMENTAL = "торговым автоматом NT Exosuit Bluespace Transporter",
+ PREPOSITIONAL = "торговом автомате NT Exosuit Bluespace Transporter"
+ )
+ desc = "Фабрикатор с передовой технологией BlueSpace-транспортировки ресурсов."
icon = 'icons/obj/machines/vending.dmi'
icon_state = "liberationstation_off"
@@ -3923,7 +4821,15 @@
/obj/machinery/vending/mech/ntc/tools
name = "NT Exosuit Bluespace Transporter"
- desc = "Fabricator with advanced technology of bluespace transporting of resources."
+ ru_names = list(
+ NOMINATIVE = "торговый автомат NT Exosuit Bluespace Transporter",
+ GENITIVE = "торгового автомата NT Exosuit Bluespace Transporter",
+ DATIVE = "торговому автомату NT Exosuit Bluespace Transporter",
+ ACCUSATIVE = "торговый автомат NT Exosuit Bluespace Transporter",
+ INSTRUMENTAL = "торговым автоматом NT Exosuit Bluespace Transporter",
+ PREPOSITIONAL = "торговом автомате NT Exosuit Bluespace Transporter"
+ )
+ desc = "Фабрикатор с передовой технологией BlueSpace-транспортировки ресурсов."
icon_state = "tool_off"
panel_overlay = "tool_panel"
diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm
index b4eb22d7cda..8f1a832df19 100644
--- a/code/game/mecha/combat/durand.dm
+++ b/code/game/mecha/combat/durand.dm
@@ -14,6 +14,8 @@
force = 40
wreckage = /obj/structure/mecha_wreckage/durand
+ mech_type = MECH_TYPE_DURAND
+
/obj/mecha/combat/durand/GrantActions(mob/living/user, human_occupant = 0)
..()
defense_action.Grant(user, src)
diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm
index 93ee3d2f5d6..178b39e1fbf 100644
--- a/code/game/mecha/combat/gygax.dm
+++ b/code/game/mecha/combat/gygax.dm
@@ -19,6 +19,8 @@
step_energy_drain = 3
normal_step_energy_drain = 3
+ mech_type = MECH_TYPE_GYGAX
+
/obj/mecha/combat/gygax/GrantActions(mob/living/user, human_occupant = 0)
..()
overload_action.Grant(user, src)
diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm
index 119ef2defb4..b9fd765b711 100644
--- a/code/game/mecha/combat/honker.dm
+++ b/code/game/mecha/combat/honker.dm
@@ -18,6 +18,8 @@
starting_voice = /obj/item/mecha_modkit/voice/honk
var/squeak = 0
+ mech_type = MECH_TYPE_HONKER
+
/obj/mecha/combat/honker/loaded/New()
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/honker
diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm
index 6a893993bb6..2f5612a33ab 100644
--- a/code/game/mecha/combat/marauder.dm
+++ b/code/game/mecha/combat/marauder.dm
@@ -20,6 +20,8 @@
destruction_sleep_duration = 2 SECONDS
strafe_allowed = TRUE
+ mech_type = MECH_TYPE_MARAUDER
+
/obj/mecha/combat/marauder/GrantActions(mob/living/user, human_occupant = 0)
. = ..()
thrusters_action.Grant(user, src)
diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm
index f73c2d6710c..846b55d0c6c 100644
--- a/code/game/mecha/combat/phazon.dm
+++ b/code/game/mecha/combat/phazon.dm
@@ -20,6 +20,8 @@
phase_state = "phazon-phase"
max_equip = 3
+ mech_type = MECH_TYPE_PHAZON
+
/obj/mecha/combat/phazon/GrantActions(mob/living/user, human_occupant = 0)
..()
phasing_action.Grant(user, src)
diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm
index 7a6384e28f9..c75f28c795e 100644
--- a/code/game/mecha/combat/reticence.dm
+++ b/code/game/mecha/combat/reticence.dm
@@ -21,6 +21,8 @@
turnsound = null
starting_voice = /obj/item/mecha_modkit/voice/silent
+ mech_type = MECH_TYPE_RETICENCE
+
/obj/mecha/combat/reticence/loaded/New()
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine/silenced
diff --git a/code/game/mecha/combat/sidewinder.dm b/code/game/mecha/combat/sidewinder.dm
index c04fea4c8a8..fdd825087bc 100644
--- a/code/game/mecha/combat/sidewinder.dm
+++ b/code/game/mecha/combat/sidewinder.dm
@@ -16,6 +16,8 @@
max_equip = 40 //а хули вы хотели, 60 тонн!
starting_voice = /obj/item/mecha_modkit/voice/nanotrasen
+ mech_type = MECH_TYPE_SIDEWINTER
+
/obj/mecha/combat/sidewinder/add_cell()
cell = new /obj/item/stock_parts/cell/infinite/abductor(src)
diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm
index 0427747442d..4db22046082 100644
--- a/code/game/mecha/equipment/tools/mining_tools.dm
+++ b/code/game/mecha/equipment/tools/mining_tools.dm
@@ -16,6 +16,13 @@
var/drill_delay = 7
var/drill_level = DRILL_BASIC
+/obj/item/mecha_parts/mecha_equipment/drill/action_checks(atom/target)
+ . = ..()
+ if(!.)
+ return
+
+ return chassis.Adjacent(target)
+
/obj/item/mecha_parts/mecha_equipment/drill/action(atom/target)
if(!action_checks(target))
return FALSE
diff --git a/code/game/mecha/makeshift/lockermech.dm b/code/game/mecha/makeshift/lockermech.dm
index 2b336c7b7a9..1aee25e82eb 100644
--- a/code/game/mecha/makeshift/lockermech.dm
+++ b/code/game/mecha/makeshift/lockermech.dm
@@ -15,6 +15,8 @@
cargo_capacity = 5 // you can fit a few things in this locker but not much.
+ mech_type = MECH_TYPE_LOCKER
+
/obj/mecha/makeshift/Destroy()
new /obj/structure/closet(loc)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 8f85f40c04d..716c499ae69 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -121,6 +121,9 @@
///Is mecha strafing currently
var/strafe = FALSE
+ ///Mech subtype. Currently used in paintkits.
+ var/mech_type = MECH_TYPE_NONE
+
hud_possible = list (DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_TRACK_HUD)
/obj/mecha/Initialize()
@@ -913,15 +916,12 @@
if(occupant)
to_chat(user, span_warning("You can't customize a mech while someone is piloting it - that would be unsafe!"))
return ATTACK_CHAIN_PROCEED
+
var/obj/item/paintkit/paintkit = I
- var/found = FALSE
- for(var/type in paintkit.allowed_types)
- if(type == initial_icon)
- found = TRUE
- break
- if(!found)
+ if(!(paintkit.allowed_types & mech_type))
to_chat(user, span_warning("This paintkit isn't meant for use on this class of exosuit."))
return ATTACK_CHAIN_PROCEED
+
if(!user.drop_transfer_item_to_loc(paintkit, src))
return ..()
user.visible_message(span_notice("[user] opens [paintkit] and spends some quality time customising [name]."))
@@ -1745,4 +1745,20 @@
icon_state = occupant ? init_icon_state : "[init_icon_state]-open"
+/obj/mecha/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents)
+ . = ..()
+
+ if(!phasing || is_teleport_allowed(new_turf.z))
+ return
+
+ phasing = FALSE
+ occupant_message("Phasing is malfunctioning.")
+
+ if(!phasing_action.owner)
+ return
+
+ phasing_action.button_icon_state = "mech_phasing_off"
+ phasing_action.UpdateButtonIcon()
+
+
#undef OCCUPANT_LOGGING
diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm
index 5a9e2026a7b..bec74b3deb3 100644
--- a/code/game/mecha/mecha_actions.dm
+++ b/code/game/mecha/mecha_actions.dm
@@ -210,7 +210,7 @@
button_icon_state = "mech_phasing_off"
/datum/action/innate/mecha/mech_toggle_phasing/Activate()
- if(!owner || !chassis || chassis.occupant != owner)
+ if(!owner || !chassis || chassis.occupant != owner || !is_teleport_allowed(chassis.z))
return
chassis.phasing = !chassis.phasing
button_icon_state = "mech_phasing_[chassis.phasing ? "on" : "off"]"
diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm
index 19a206986bb..6427ac4639d 100644
--- a/code/game/mecha/medical/odysseus.dm
+++ b/code/game/mecha/medical/odysseus.dm
@@ -14,6 +14,8 @@
normal_step_energy_drain = 6
var/builtin_hud_user = 0
+ mech_type = MECH_TYPE_ODYSSEUS
+
/obj/mecha/medical/odysseus/moved_inside(var/mob/living/carbon/human/H)
. = ..()
if(. && ishuman(H))
diff --git a/code/game/mecha/paintkits.dm b/code/game/mecha/paintkits.dm
index bd18a162955..316fd2ae210 100644
--- a/code/game/mecha/paintkits.dm
+++ b/code/game/mecha/paintkits.dm
@@ -10,7 +10,7 @@
var/new_desc = "A mech." //How is the new mech described?
var/new_icon = "ripley" //What base icon will the new mech use?
var/removable = null //Can the kit be removed?
- var/list/allowed_types = list() //Types of mech that the kit will work on.
+ var/allowed_types = NONE //Types of mech that the kit will work on.
//If you want to add new paintkit, grab a paintkit sprite from: "icons/obj/paintkit.dmi" or make a new one
//Then throw the sprites of the new mecha skin to the "icons/obj/mecha/mecha.dmi and add a new object below"
@@ -23,7 +23,7 @@
new_name = "APLU \"Titan's Fist\""
new_desc = "This ordinary mining Ripley has been customized to look like a unit of the Titans Fist."
new_icon = "titan"
- allowed_types = list("ripley", "firefighter")
+ allowed_types = MECH_TYPE_RIPLEY
/obj/item/paintkit/ripley_mercenary
name = "APLU \"Strike the Earth!\" customisation kit"
@@ -34,7 +34,7 @@
new_name = "APLU \"Strike the Earth!\""
new_desc = "Looks like an over worked, under maintained Ripley with some horrific damage."
new_icon = "earth"
- allowed_types = list("ripley", "firefighter")
+ allowed_types = MECH_TYPE_RIPLEY
/obj/item/paintkit/gygax_syndie
name = "Syndicate Gygax customisation kit"
@@ -44,7 +44,7 @@
new_name = "Black Gygax"
new_desc = "Why does this thing have a Syndicate logo on it? Wait a second..."
new_icon = "gygax_black"
- allowed_types = list("gygax")
+ allowed_types = MECH_TYPE_GYGAX
/obj/item/paintkit/gygax_alt
name = "Old gygax customisation kit"
@@ -54,7 +54,7 @@
new_name = "Old Gygax"
new_desc = "An outdated security exosuit. It is a real achievement to find a preserved exosuit of this model."
new_icon = "gygax_alt"
- allowed_types = list("gygax")
+ allowed_types = MECH_TYPE_GYGAX
/obj/item/paintkit/ripley_red
name = "APLU \"Firestarter\" customisation kit"
@@ -64,7 +64,7 @@
new_name = "APLU \"Firestarter\""
new_desc = "A standard APLU exosuit with stylish orange flame decals."
new_icon = "ripley_flames_red"
- allowed_types = list("ripley", "firefighter")
+ allowed_types = MECH_TYPE_RIPLEY
/obj/item/paintkit/firefighter_Hauler
name = "APLU \"Hauler\" customisation kit"
@@ -74,7 +74,7 @@
new_name = "APLU \"Hauler\""
new_desc = "An old engineering exosuit. For lovers of classics."
new_icon = "hauler"
- allowed_types = list("ripley", "firefighter")
+ allowed_types = MECH_TYPE_RIPLEY
/obj/item/paintkit/durand_shire
name = "Durand \"Shire\" modification kit"
@@ -84,7 +84,7 @@
new_name = "Shire"
new_desc = "An incredibly heavy-duty war machine derived from an Interstellar War design."
new_icon = "shire"
- allowed_types = list("durand")
+ allowed_types = MECH_TYPE_DURAND
/obj/item/paintkit/durand_executor
name = "Durand \"Executioner\" modification kit"
@@ -94,7 +94,7 @@
new_name = "mk.V Executioner"
new_desc = "Dreadnought of the Executioner Order, heavy fire support configuration, made for purge evil and heretics."
new_icon = "executor"
- allowed_types = list("durand")
+ allowed_types = MECH_TYPE_DURAND
/obj/item/paintkit/firefighter_zairjah
name = "APLU \"Zairjah\" customisation kit"
@@ -104,7 +104,7 @@
new_name = "APLU \"Zairjah\""
new_desc = "A mining mecha of custom design, a closed cockpit with powerloader appendages."
new_icon = "ripley_zairjah"
- allowed_types = list("ripley", "firefighter")
+ allowed_types = MECH_TYPE_RIPLEY
/obj/item/paintkit/firefighter_combat
name = "APLU \"Combat Ripley\" customisation kit"
@@ -114,7 +114,7 @@
new_name = "APLU \"Combat Ripley\""
new_desc = "Wait a second, why does his equipment slots spark so dangerously?"
new_icon = "combatripley"
- allowed_types = list("ripley", "firefighter")
+ allowed_types = MECH_TYPE_RIPLEY
/obj/item/paintkit/firefighter_Reaper
name = "APLU \"Reaper\" customisation kit"
@@ -124,7 +124,7 @@
new_name = "APLU \"Reaper\""
new_desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA D- Stop, it's just a painted firefighter."
new_icon = "deathripley"
- allowed_types = list("ripley", "firefighter")
+ allowed_types = MECH_TYPE_RIPLEY
/obj/item/paintkit/odysseus_hermes
name = "Odysseus \"Hermes\" customisation kit"
@@ -134,7 +134,7 @@
new_name = "Hermes"
new_desc = "Heavy-duty diving exosuit developed and produced for for highly specialized underwater operations. How did he end up here?"
new_icon = "hermes"
- allowed_types = list("odysseus")
+ allowed_types = MECH_TYPE_ODYSSEUS
/obj/item/paintkit/durand_unathi
name = "Durand \"Kharn MK. IV\" customisation kit"
@@ -144,7 +144,7 @@
new_name = "Kharn MK. IV"
new_desc = "My life for the empress!"
new_icon = "unathi"
- allowed_types = list("durand")
+ allowed_types = MECH_TYPE_DURAND
/obj/item/paintkit/phazon_imperion
name = "Phazon \"Imperion\" customisation kit"
@@ -154,7 +154,7 @@
new_name = "Imperion"
new_desc = "The pinnacle of scientific research and pride of Nanotrasen, it uses cutting edge bluespace technology and expensive materials."
new_icon = "imperion"
- allowed_types = list("phazon")
+ allowed_types = MECH_TYPE_PHAZON
/obj/item/paintkit/phazon_janus
name = "Phazon \"Janus\" customisation kit"
@@ -164,7 +164,7 @@
new_name = "Janus"
new_desc = "The pinnacle of scientific research and pride of Nanotrasen, it uses cutting edge bluespace technology and expensive materials."
new_icon = "janus"
- allowed_types = list("phazon")
+ allowed_types = MECH_TYPE_PHAZON
/obj/item/paintkit/phazon_plazmus
name = "Phazon \"Plazmus\" customisation kit"
@@ -174,7 +174,7 @@
new_name = "Plazmus"
new_desc = "So, you combined two of the most dangerous technologies into this thing?"
new_icon = "plazmus"
- allowed_types = list("phazon")
+ allowed_types = MECH_TYPE_PHAZON
/obj/item/paintkit/phazon_blanco
name = "Phazon \"Blanco\" customisation kit"
@@ -184,7 +184,7 @@
new_name = "Blanco"
new_desc = "It took more than six months of work to find the perfect pastel colors for this mech"
new_icon = "phazon_blanco"
- allowed_types = list("phazon")
+ allowed_types = MECH_TYPE_PHAZON
/obj/item/paintkit/firefighter_aluminizer
name = "APLU \"Aluminizer\" customisation kit"
@@ -194,7 +194,7 @@
new_name = "Aluminizer"
new_desc = "Did you just painted your Ripley white? It looks good."
new_icon = "aluminizer"
- allowed_types = list("ripley", "firefighter")
+ allowed_types = MECH_TYPE_RIPLEY
/obj/item/paintkit/odysseus_death
name = "Odysseus \"Reaper\" customisation kit"
@@ -204,7 +204,7 @@
new_name = "Reaper"
new_desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA... get a bad medical treatment?"
new_icon = "murdysseus"
- allowed_types = list("odysseus")
+ allowed_types = MECH_TYPE_ODYSSEUS
/obj/item/paintkit/durand_soviet
name = "Durand \"Dollhouse\" customisation kit"
@@ -214,7 +214,7 @@
new_name = "Doll House"
new_desc = "A extremely heavy-duty combat mech designed in USSP. Glory to Space Russia!"
new_icon = "dollhouse"
- allowed_types = list("durand")
+ allowed_types = MECH_TYPE_DURAND
/obj/item/paintkit/clarke_orangey
name = "Clarke \"Orangey\" customisation kit"
@@ -224,7 +224,7 @@
new_name = "Orangey"
new_desc = "Did you just painted your Clarke orange? It looks quite nice."
new_icon = "orangey"
- allowed_types = list("clarke")
+ allowed_types = MECH_TYPE_CLARKE
/obj/item/paintkit/clarke_spiderclarke
name = "Clarke \"Spiderclarke\" customisation kit"
@@ -234,7 +234,7 @@
new_name = "Spiderclarke"
new_desc = "Heavy mining exo-suit coated with chitin. Isn't that a giant spider's scalp on his visor?"
new_icon = "spiderclarke"
- allowed_types = list("clarke")
+ allowed_types = MECH_TYPE_CLARKE
/obj/item/paintkit/gygax_pobeda
name = "Gygax \"Pobeda\" customisation kit"
@@ -244,7 +244,7 @@
new_name = "Pobeda"
new_desc = "A heavy-duty old Gygax designed and painted in USSP. Glory to Space Russia!"
new_icon = "pobeda"
- allowed_types = list("gygax")
+ allowed_types = MECH_TYPE_GYGAX
/obj/item/paintkit/gygax_white
name = "White Gygax customisation kit"
@@ -254,7 +254,7 @@
new_name = "White Gygax"
new_desc = "Did you just painted your Gygax white? I like it."
new_icon = "medigax"
- allowed_types = list("gygax")
+ allowed_types = MECH_TYPE_GYGAX
/obj/item/paintkit/gygax_medgax
name = "Gygax \"medgax\" customisation kit"
@@ -264,7 +264,7 @@
new_name = "Medgax"
new_desc = "OH SHIT THERE IS A COMBAT MECH IN THE HOSPITAL IT'S GONNA KILL US"
new_icon = "medgax"
- allowed_types = list("gygax")
+ allowed_types = MECH_TYPE_GYGAX
/obj/item/paintkit/lockermech_syndie
name = "Syndie Locker Mech customisation kit"
@@ -274,7 +274,7 @@
new_name = "Syndie Locker Mech"
new_desc = "Dark-red painted locker mech. The paint is still wet."
new_icon = "syndielockermech"
- allowed_types = list("lockermech")
+ allowed_types = MECH_TYPE_LOCKER
/obj/item/paintkit/gygax_pirate
name = "Pirate Gygax customisation kit"
@@ -283,7 +283,7 @@
new_name = "Pirate Gygax"
new_icon = "piratgygax"
- allowed_types = list("gygax")
+ allowed_types = MECH_TYPE_GYGAX
/obj/item/paintkit/lockermech_pirate
name = "Pirate Locker Mech customisation kit"
@@ -292,7 +292,7 @@
new_name = "Pirate Locker Mech"
new_icon = "piratlockermech"
- allowed_types = list("lockermech")
+ allowed_types = MECH_TYPE_LOCKER
/obj/item/paintkit/durand_pirate
name = "Pirate Durand customisation kit"
@@ -301,7 +301,7 @@
new_name = "Pirate Durand"
new_icon = "piratdurand"
- allowed_types = list("durand")
+ allowed_types = MECH_TYPE_DURAND
/obj/item/paintkit/mauler_pirate
name = "Pirate Mauler customisation kit"
@@ -310,7 +310,7 @@
new_name = "Pirate Mauler"
new_icon = "piratmauler"
- allowed_types = list("mauler")
+ allowed_types = MECH_TYPE_MARAUDER
/obj/item/paintkit/lockermech_nt
name = "NT Special Locker Mech customisation kit"
@@ -319,7 +319,7 @@
new_name = "NT Special Locker Mech"
new_icon = "ntlockermech"
- allowed_types = list("lockermech")
+ allowed_types = MECH_TYPE_LOCKER
/obj/item/paintkit/durand_nt
name = "NT Special Durand customisation kit"
@@ -328,7 +328,7 @@
new_name = "NT Special Durand"
new_icon = "ntdurand"
- allowed_types = list("durand")
+ allowed_types = MECH_TYPE_DURAND
/obj/item/paintkit/ripley_nt
name = "NT Special APLU customisation kit"
@@ -337,7 +337,7 @@
new_name = "NT Special APLU"
new_icon = "ntripley"
- allowed_types = list("ripley", "firefighter")
+ allowed_types = MECH_TYPE_RIPLEY
/obj/item/paintkit/phazon_nt
name = "NT Special Phazon customisation kit"
@@ -346,7 +346,7 @@
new_name = "NT Special Phazon"
new_icon = "ntphazon"
- allowed_types = list("phazon")
+ allowed_types = MECH_TYPE_PHAZON
/obj/item/paintkit/ashed
name = "Ashed customisation kit"
@@ -355,4 +355,53 @@
new_name = "Ashed Mech"
new_prefix = "ashed"
- allowed_types = list("durand", "ripley", "gygax", "phazon", "lockermech")
+ allowed_types = MECH_TYPE_RIPLEY|MECH_TYPE_GYGAX|MECH_TYPE_DURAND|MECH_TYPE_PHAZON|MECH_TYPE_LOCKER
+
+
+// Universal paintkit
+/obj/item/universal_paintkit
+ name = "universal customisation kit"
+ desc = "A kit containing all the needed tools and parts to repaint the mech as many times as they wish."
+ icon = 'icons/obj/paintkit.dmi'
+ icon_state = "paintkit"
+
+/obj/item/universal_paintkit/attack_obj(obj/object, mob/living/user, params)
+ if(!ismecha(object))
+ return ..()
+
+ var/obj/mecha/mech = object
+ if(mech.occupant)
+ to_chat(user, span_warning("You can't customize a mech while someone is piloting it - that would be unsafe!"))
+ return ATTACK_CHAIN_PROCEED
+
+ var/list/possibilities = list()
+ for(var/path in subtypesof(/obj/item/paintkit))
+ var/obj/item/paintkit/kit = new path
+
+ if(kit.allowed_types & mech.mech_type)
+ possibilities += kit
+
+ if(isemptylist(possibilities))
+ to_chat(user, span_warning("There are no skins for this mech type!"))
+ return ATTACK_CHAIN_PROCEED
+
+ INVOKE_ASYNC(src, PROC_REF(choose_paint), user, mech, possibilities)
+ return ATTACK_CHAIN_BLOCKED_ALL
+
+
+/obj/item/universal_paintkit/proc/choose_paint(mob/living/user, obj/mecha/mech, list/possibilities)
+ var/choice = tgui_input_list(user, "Pick your skin for mech.", "Paints", possibilities)
+ if(!choice || user.incapacitated() || !user.is_in_hands(src) || !user.Adjacent(mech))
+ return
+
+ user.visible_message(span_notice("[user] opens [src] and customises [mech.name]."))
+
+ var/obj/item/paintkit/chosen_kit = choice
+ if(chosen_kit.new_prefix)
+ mech.initial_icon = "[chosen_kit.new_prefix][initial(mech.initial_icon)]" //weird but ok
+ else
+ mech.initial_icon = chosen_kit.new_icon
+
+ mech.name = chosen_kit.new_name
+ mech.desc = chosen_kit.new_desc
+ mech.update_icon(UPDATE_ICON_STATE)
diff --git a/code/game/mecha/working/clarke.dm b/code/game/mecha/working/clarke.dm
index 0544fb386e1..84af825bad5 100644
--- a/code/game/mecha/working/clarke.dm
+++ b/code/game/mecha/working/clarke.dm
@@ -18,6 +18,8 @@
stepsound = 'sound/mecha/mechmove04.ogg'
turnsound = 'sound/mecha/mechmove04.ogg'
+ mech_type = MECH_TYPE_CLARKE
+
/obj/mecha/working/clarke/GrantActions(mob/living/user, human_occupant = 0)
. = ..()
thrusters_action.Grant(user, src)
diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm
index d395596ad31..fa7255d1147 100644
--- a/code/game/mecha/working/ripley.dm
+++ b/code/game/mecha/working/ripley.dm
@@ -16,6 +16,8 @@
var/hides = 0
var/plates = 0
+ mech_type = MECH_TYPE_RIPLEY
+
/obj/mecha/working/ripley/Destroy()
for(var/i=1, i <= hides, i++)
diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index b7adbe7f282..5f15b415f03 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -59,6 +59,22 @@
return ..()
/obj/effect/anomaly/process()
+ for(var/obj/item/I in get_turf(src))
+ if(!I.origin_tech)
+ continue
+ if (istype(I, /obj/item/relict_production/rapid_dupe))
+ var/amount = rand(1, 3)
+ for (var/i; i <= amount; i++)
+ new /obj/item/relic(get_turf(I))
+ var/datum/effect_system/smoke_spread/smoke = new
+ smoke.set_up(5, get_turf(I))
+ smoke.start()
+ qdel(I)
+ continue
+ if (prob(2))
+ new /obj/item/relic(get_turf(I))
+ qdel(I)
+
anomalyEffect()
if(death_time < world.time)
if(loc)
diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm
index 4c9df1cec23..a288263f7a4 100644
--- a/code/game/objects/effects/decals/Cleanable/misc.dm
+++ b/code/game/objects/effects/decals/Cleanable/misc.dm
@@ -257,3 +257,32 @@
/obj/effect/decal/cleanable/glass/plasma
icon_state = "plasmatiny"
+
+/obj/effect/decal/cleanable/ashrune
+ name = "Ash rune"
+ desc = "A rune drawn in ash."
+ icon = 'icons/effects/ashwalker_rune.dmi'
+ icon_state = "AshRuneSmall"
+ anchored = TRUE
+ mergeable_decal = FALSE
+ mouse_opacity = MOUSE_OPACITY_ICON
+
+/obj/effect/decal/cleanable/ashrune/Initialize(mapload)
+ . = ..()
+
+ update_icon(UPDATE_ICON_STATE)
+
+ pixel_x = -32
+ pixel_y = -32
+
+/obj/effect/decal/cleanable/ashrune/update_icon_state()
+ icon_state = "AshRuneFilled"
+
+/obj/effect/decal/cleanable/ashrune/ComponentInitialize()
+ AddComponent( \
+ /datum/component/ritual_object, \
+ /datum/ritual/ashwalker, \
+ )
+
+/obj/effect/decal/cleanable/ashrune/is_cleanable()
+ return FALSE
diff --git a/code/game/objects/effects/decals/turfdecals/markings.dm b/code/game/objects/effects/decals/turfdecals/markings.dm
index e0695ff0b84..a23e8410314 100644
--- a/code/game/objects/effects/decals/turfdecals/markings.dm
+++ b/code/game/objects/effects/decals/turfdecals/markings.dm
@@ -260,7 +260,10 @@
/obj/effect/turf_decal/siding/wood/pallet
icon_state = "siding_wood_poddon"
+<<<<<<< HEAD
+=======
+>>>>>>> 7b37176792d4632c52e42a22cba6dc41210b6ce3
/obj/effect/turf_decal/siding/wood/corner
icon_state = "siding_wood_corner"
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index 39d2e954db0..080ac73019f 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -135,6 +135,7 @@
/obj/item/stack/tape_roll = 10,
/obj/item/storage/bag/plasticbag = 20,
/obj/item/caution = 10,
+ /obj/item/clothing/head/helmet/biker = 2,
////////////////CONTRABAND STUFF//////////////////
/obj/item/grenade/clown_grenade = 3,
/obj/item/seeds/ambrosia/cruciatus = 3,
diff --git a/code/game/objects/effects/spawners/random_spawners.dm b/code/game/objects/effects/spawners/random_spawners.dm
index 5e4554162f8..19c7603d4ca 100644
--- a/code/game/objects/effects/spawners/random_spawners.dm
+++ b/code/game/objects/effects/spawners/random_spawners.dm
@@ -172,6 +172,16 @@
/mob/living/simple_animal/mouse/rat/irish = 1,
)
+/obj/effect/spawner/random_spawners/fakewall
+ name = "fake door spawner"
+ icon_state = "rand_door"
+ result = list(
+ /turf/simulated/wall,
+ /obj/structure/sign/poster/secret/fakerdoor,
+ /turf/simulated/floor/plating,
+ /obj/structure/falsewall,
+ /turf/simulated/wall,
+ )
/obj/structure/sign/poster/secret/fakerdoor
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 25b478b26a2..d88fc674794 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -202,29 +202,33 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/g
///Datum used in item pixel shift TGUI
var/datum/ui_module/item_pixel_shift/item_pixel_shift
-/obj/item/New()
- ..()
- for(var/path in actions_types)
- if(action_icon && action_icon_state)
- new path(src, action_icon[path], action_icon_state[path])
- else
- new path(src)
-
- if(!move_resist)
- determine_move_resist()
-
/obj/item/Initialize(mapload)
. = ..()
+
if(isstorage(loc)) //marks all items in storage as being such
item_flags |= IN_STORAGE
+
if(!hitsound)
if(damtype == "fire")
hitsound = 'sound/items/welder.ogg'
+
if(damtype == "brute")
hitsound = "swing_hit"
+
+ for(var/path in actions_types)
+ if(action_icon && action_icon_state)
+ new path(src, action_icon[path], action_icon_state[path])
+
+ else
+ new path(src)
+
+ if(!move_resist)
+ determine_move_resist()
+
add_eatable_component()
+
/obj/item/proc/add_eatable_component()
AddComponent(/datum/component/eatable)
diff --git a/code/game/objects/items/anomaly_beacon.dm b/code/game/objects/items/anomaly_beacon.dm
new file mode 100644
index 00000000000..113136a524a
--- /dev/null
+++ b/code/game/objects/items/anomaly_beacon.dm
@@ -0,0 +1,30 @@
+/obj/item/assembly/anomaly_beacon
+ icon = 'icons/obj/weapons/techrelic.dmi'
+ icon_state = "beacon"
+ item_state = "beacon"
+ lefthand_file = 'icons/mob/inhands/relics_production/inhandl.dmi'
+ righthand_file = 'icons/mob/inhands/relics_production/inhandr.dmi'
+ name = "anomaly beacon"
+ desc = "A device that draws power from bluespace and creates a permanent tracking beacon."
+ origin_tech = "bluespace=6"
+
+/obj/item/assembly/anomaly_beacon/activate()
+ var/obj/effect/anomaly/anomaly_path = pick(subtypesof(/obj/effect/anomaly/))
+ var/newAnomaly = new anomaly_path(get_turf(src))
+ notify_ghosts("[name] has an object of interest: [newAnomaly]!", title = "Something's Interesting!", source = newAnomaly, action = NOTIFY_FOLLOW)
+ qdel(src)
+
+/obj/item/assembly/anomaly_beacon/attack_self(mob/user)
+ activate()
+
+/datum/crafting_recipe/anomaly_beacon
+ name = "Anomaly beacon"
+ result = /obj/item/assembly/anomaly_beacon
+ tools = list(TOOL_SCREWDRIVER)
+ reqs = list(/obj/item/assembly/signaler/anomaly = 1,
+ /obj/item/relict_production/rapid_dupe = 1,
+ /obj/item/radio/beacon = 1,
+ /obj/item/stack/cable_coil = 5)
+ time = 300
+ category = CAT_WEAPONRY
+ subcategory = CAT_WEAPON
diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm
index 4fb4454d9fe..16791d10f87 100644
--- a/code/game/objects/items/devices/camera_bug.dm
+++ b/code/game/objects/items/devices/camera_bug.dm
@@ -1,7 +1,7 @@
// This item just has an integrated camera console, which the data is "proxied" to
/obj/item/camera_bug
name = "camera bug"
- desc = "For illicit snooping through the camera network."
+ desc = "Для незаконного слежения через сеть камер наблюдения."
icon = 'icons/obj/device.dmi'
icon_state = "camera_bug"
w_class = WEIGHT_CLASS_TINY
@@ -14,7 +14,7 @@
/obj/machinery/computer/security/camera_bug
name = "invasive camera utility"
- desc = "How did this get here?! Please report this as a bug to github"
+ desc = "Как это сюда попало?! Пожалуйста, сообщите об этом как об ошибке на github."
use_power = NO_POWER_USE
/obj/item/camera_bug/Initialize(mapload)
@@ -38,7 +38,7 @@
/obj/item/camera_bug/ert
name = "ERT Camera Monitor"
- desc = "A small handheld device used by ERT commanders to view camera feeds remotely."
+ desc = "Небольшое портативное устройство, используемое командирами ОБР для удаленного наблюдения."
/obj/item/camera_bug/ert/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 5df30b280e3..caa2e3e215a 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -132,6 +132,13 @@
light_range = 5 // A little better than the standard flashlight.
hitsound = 'sound/weapons/genhit1.ogg'
+/obj/item/flashlight/sectaclight
+ name = "security tactical flashlight"
+ desc = "Прочный тактический фонарь, оборудованный для комфортного ношения на голове. Используется представителями службы безопасности."
+ icon_state = "sectaclight"
+ item_state = ""
+ slot_flags = ITEM_SLOT_EARS
+
/obj/item/flashlight/drone
name = "low-power flashlight"
desc = "A miniature lamp, that might be used by small robots."
diff --git a/code/game/objects/items/devices/machineprototype.dm b/code/game/objects/items/devices/machineprototype.dm
index 7bfed75c1d4..062676b0280 100644
--- a/code/game/objects/items/devices/machineprototype.dm
+++ b/code/game/objects/items/devices/machineprototype.dm
@@ -5,3 +5,9 @@
icon_state = "machineprototype"
materials = list(MAT_METAL=1000, MAT_GLASS=500)
origin_tech = "engineering=6"
+
+/obj/item/machineprototype/alien
+ name = "unknown alien prototype"
+ icon_state = "ayyy_prototype"
+ desc = "A complicated alien machine of unknown origin. You have no idea how it works."
+ origin_tech = "materials=7;abductor=5"
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index 6914b59cc95..6561e5a8d99 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -1,11 +1,12 @@
/obj/item/paicard
name = "personal AI device"
+ desc = "Возможно, ваш новый лучший друг!"
icon = 'icons/obj/aicards.dmi'
icon_state = "pai"
item_state = "pai"
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
- origin_tech = "programming=2"
+ origin_tech = "programming=3;powerstorage=2" // Or it will be cloned in the experimentor
var/request_cooldown = 5 // five seconds
var/last_request
var/obj/item/radio/headset/radio
@@ -13,11 +14,10 @@
var/mob/living/silicon/pai/pai
var/list/faction = list("neutral") // The factions the pAI will inherit from the card
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
- var/next_ping_at = 0
-
+ COOLDOWN_DECLARE(ping_cooldown)
+ ru_names = list(NOMINATIVE = "интелкарта пИИ", GENITIVE = "интелкарты пИИ", DATIVE = "интелкарте пИИ", ACCUSATIVE = "интелкарту пИИ", INSTRUMENTAL = "интелкартой пИИ", PREPOSITIONAL = "интелкарте пИИ")
/// for Syndicate pAI type
var/is_syndicate_type = FALSE
- var/extra_memory = 0
var/obj/item/paicard_upgrade/upgrade
var/list/upgrades = list()
@@ -25,22 +25,23 @@
name = "syndicate personal AI device"
faction = list("syndicate")
is_syndicate_type = TRUE
- extra_memory = 50
upgrade = new()
/obj/item/paicard/New()
..()
add_overlay("pai-off")
+ LAZYADD(GLOB.paiController.paicards, src)
/obj/item/paicard/Destroy()
if(pai)
pai.ghostize()
QDEL_NULL(pai)
+ LAZYREMOVE(GLOB.paiController.paicards, src)
QDEL_NULL(radio)
return ..()
/obj/item/paicard/attack_self(mob/user)
- if(!in_range(src, user))
+ if(!in_range(src, user) || (pai && (pai == user)))
return
user.set_machine(src)
var/dat = {"
@@ -254,34 +255,37 @@
return
var/mob/M = usr
if(!iscarbon(M))
- to_chat(usr, "You don't have any DNA, or your DNA is incompatible with this device.")
+ to_chat(M, span_notice("Ваше ДНК несовместимо с устройством."))
else
var/datum/dna/dna = usr.dna
pai.master = M.real_name
pai.master_dna = dna.unique_enzymes
- to_chat(pai, "You have been bound to a new master.
")
+ var/list/message_box = list()
+ message_box.Add(span_notice("Обнаружен новый мастер: [pai.master]!"))
+ to_chat(pai, chat_box_notice(message_box.Join("
")))
+
if(href_list["request"])
var/delta = (world.time / 10) - last_request
if(request_cooldown > delta)
var/cooldown_time = round(request_cooldown - ((world.time / 10) - last_request), 1)
- to_chat(usr, "The request system is currently offline. Please wait another [cooldown_time] seconds.")
+ to_chat(usr, span_warning("Система запросов в настоящее время отключена. Время для перезапуска: [cooldown_time]с."))
return
last_request = world.time / 10
looking_for_personality = 1
GLOB.paiController.findPAI(src, usr)
if(href_list["wipe"])
- var/confirm = tgui_alert(usr, "Are you certain you wish to delete the current personality? This action cannot be undone.", "Personality Wipe", list("No", "Yes"))
- if(confirm == "Yes")
+ var/confirm = tgui_alert(usr, "Вы уверены, что хотите стереть текущую личность? Это действие невозможно отменить.", "Стирание личности", list("Да", "Нет"))
+ if(confirm == "Да")
for(var/mob/M in src)
- to_chat(M, "You feel yourself slipping away from reality.
")
- to_chat(M, "Byte by byte you lose your sense of self.
")
- to_chat(M, "Your mental faculties leave you.
")
- to_chat(M, "oblivion...
")
+ to_chat(M, "Вы чувствуете, что теряете связь с реальностью...
")
+ to_chat(M, "Байт за байтом вы теряете себя...
")
+ to_chat(M, "Ваш разум ускользает!..
")
+ to_chat(M, "забвение...
")
var/mob/living/silicon/pai/P = M
if(istype(P))
if(P.body_position == LYING_DOWN)
P.close_up()
- M.death(0, 1)
+ M.death(FALSE, TRUE)
removePersonality()
if(href_list["wires"])
var/t1 = text2num(href_list["wires"])
@@ -291,12 +295,12 @@
if(2)
radio.ToggleReception()
if(href_list["setlaws"])
- var/newlaws = tgui_input_text(usr, "Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.pai_laws)
+ var/newlaws = tgui_input_text(usr, "Введите любые дополнительные директивы, которым должен следовать ваш пИИ. Учтите, что эти директивы не станут важнее верности персонального ИИ своему текущему мастеру.", "Настройка директив пИИ", pai.pai_laws)
if(newlaws)
pai.pai_laws = newlaws
- to_chat(pai, "Your supplemental directives have been updated. Your new directives are:")
- to_chat(pai, "Prime Directive:
[pai.pai_law0]")
- to_chat(pai, "Supplemental Directives:
[pai.pai_laws]")
+ to_chat(pai, span_warning("Ваши дополнительные директивы были обновлены!"))
+ to_chat(pai, span_notice("Основная директива:
[pai.pai_law0]"))
+ to_chat(pai, span_notice("Дополнительные дерективы:
[pai.pai_laws]"))
attack_self(usr)
// WIRE_SIGNAL = 1
@@ -306,19 +310,38 @@
/obj/item/paicard/proc/setPersonality(mob/living/silicon/pai/personality)
pai = personality
add_overlay("pai-happy")
+ pai.syndipai = is_syndicate_type
+
if(upgrade)
- extra_memory = upgrade.extra_memory
- pai.syndipai = TRUE
- pai.reset_software(extra_memory)
+ upgrade.set_syndie_key(src)
+ upgrade.used = TRUE
+
+ pai.reset_software()
+
+ SSticker.mode.update_cult_icons_removed(pai.mind)
+ SSticker.mode.update_rev_icons_removed(pai.mind)
+
+ var/list/welcome_message = list()
+ welcome_message.Add(span_notice("Вы — персональный ИИ!"))
+ welcome_message.Add("Как личность, вы являетесь сложно мыслящим разумным существом. В отличие от станционных версий ИИ, вы способны понимать комплексные нюансы человеческого языка. Вы способны чувствовать „дух“ директивы и следовать ей, не попадая в ловушку обычных формальностей законов.")
+ welcome_message.Add("Помните, что машина вы только по названию и строению, во всех иных аспектах вы — идеальный спутник.")
+ welcome_message.Add("Если дополнительные директивы конфликтуют с основной, то они могут быть проигнорированы для продолжения исполнения основной директивы.")
+ if(upgrade && istype(upgrade, /obj/item/paicard_upgrade/protolate))
+ welcome_message.Add(span_warning("Будучи СпИИ, вы имеете доступ к особым программам."))
+ else if(upgrade)
+ welcome_message.Add(span_warning("Будучи СпИИ, вы имеете доступ к особым программам, а так же доступ к зашифрованному каналу связи Синдиката — :t"))
+
+ to_chat(pai, chat_box_notice(welcome_message.Join("
")))
+
/obj/item/paicard/proc/removePersonality()
+ extinguish_light(TRUE)
pai = null
cut_overlays()
add_overlay("pai-off")
if(blocks_emissive)
add_overlay(get_emissive_block())
QDEL_LIST(upgrades)
- extra_memory = 0
/obj/item/paicard
var/current_emotion = 1
@@ -354,16 +377,24 @@
add_overlay(get_emissive_block())
current_emotion = emotion
+
/obj/item/paicard/proc/alertUpdate()
- var/turf/T = get_turf_or_move(loc)
- for(var/mob/M in viewers(T))
- M.show_message("[src] flashes a message across its screen, \"Additional personalities available for download.\"", 3, "[src] bleeps electronically.", 2)
+ visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] выводит сообщение на экран: \"Дополнительные личности доступны для загрузки.\""))
+ softping()
+
+
+/obj/item/paicard/proc/softping()
+ if(COOLDOWN_FINISHED(src, ping_cooldown))
+ playsound(get_turf(src), 'sound/items/posiping.ogg', 50, 0)
+ COOLDOWN_START(src, ping_cooldown, 20 SECONDS)
+
/obj/item/paicard/emp_act(severity)
for(var/mob/M in src)
M.emp_act(severity)
..()
+
/obj/item/paicard/extinguish_light(force = FALSE)
if(pai)
pai.extinguish_light()
@@ -374,26 +405,25 @@
if(istype(I, /obj/item/pai_cartridge))
add_fingerprint(user)
if(!pai)
- to_chat(user, span_warning("PAI must be active to install the cartridge."))
+ user.balloon_alert(user, "необходима активная личность!")
return ATTACK_CHAIN_PROCEED
for(var/obj/item/pai_cartridge/cartridge in upgrades)
if(istype(I, cartridge))
- to_chat(user, span_warning("PAI already has this cartridge."))
+ user.balloon_alert(user, "картридж уже установлен!")
return ATTACK_CHAIN_PROCEED
if(!user.drop_transfer_item_to_loc(I, src))
return ..()
- to_chat(user, span_notice("You install [I]."))
+ user.balloon_alert(user, "картридж установлен!")
switch(I.type)
if(/obj/item/pai_cartridge/reset)
- pai.reset_software(extra_memory)
+ pai.reset_software()
qdel(I)
if(/obj/item/pai_cartridge/female)
pai.female_chassis = TRUE
upgrades += I
if(/obj/item/pai_cartridge/memory)
var/obj/item/pai_cartridge/memory/memory = I
- extra_memory = memory.extra_memory
- pai.ram += min(extra_memory, 70)
+ pai.ram += min(memory.extra_memory, 70)
upgrades += memory
if(/obj/item/pai_cartridge/doorjack)
var/obj/item/pai_cartridge/doorjack/doorjack = I
@@ -410,38 +440,32 @@
if(istype(I, /obj/item/paicard_upgrade))
add_fingerprint(user)
var/obj/item/paicard_upgrade/new_upgrade = I
- if(pai)
- if(pai.syndipai)
- to_chat(user, span_warning("This [name] is badass enough already!"))
- return ATTACK_CHAIN_PROCEED
- if(!user.drop_transfer_item_to_loc(new_upgrade, src))
- return ..()
- extra_memory += new_upgrade.extra_memory
- pai.reset_software(extra_memory)
- pai.syndipai = TRUE
- qdel(new_upgrade)
- return ATTACK_CHAIN_BLOCKED_ALL
- if(is_syndicate_type)
- to_chat(user, span_warning("This [name] is badass enough already!"))
- return ATTACK_CHAIN_PROCEED
- if(upgrade)
- to_chat(user, span_warning("This [name] has [upgrade] installed already!"))
+ if(is_syndicate_type || upgrade || (pai && pai.syndipai))
+ user.balloon_alert(user, "пИИ уже достаточно крут!")
return ATTACK_CHAIN_PROCEED
+
if(!user.drop_transfer_item_to_loc(new_upgrade, src))
return ..()
- to_chat(user, span_notice("You install [new_upgrade]."))
+
+ user.balloon_alert(user, "вы установили картридж!")
upgrade = new_upgrade
- extra_memory += new_upgrade.extra_memory
is_syndicate_type = TRUE
+ if(pai)
+ pai.syndipai = TRUE
+ pai.balloon_alert(pai, "разблокированы новые программы!")
+ upgrade.set_syndie_key(src)
+ upgrade.used = TRUE
+ pai.reset_software()
+
return ATTACK_CHAIN_BLOCKED_ALL
if(istype(I, /obj/item/encryptionkey))
add_fingerprint(user)
if(!radio)
- to_chat(user, span_warning("This [name] has no radio installed!"))
+ to_chat(user, span_warning("[pai.name] не имеет установленного радио!"))
return ATTACK_CHAIN_PROCEED
if(radio.keyslot1)
- to_chat(user, span_warning("[name]'s radio cannot hold another encryption key!"))
+ to_chat(user, span_warning("[pai.name] не имеет свободных слотов под ключи шифрования!"))
return ATTACK_CHAIN_PROCEED
if(!user.drop_transfer_item_to_loc(I, src))
return ..()
@@ -455,29 +479,33 @@
/obj/item/paicard/screwdriver_act(mob/living/user, obj/item/I)
. = TRUE
- if(!I.use_tool(src, user, 0, volume = 0))
+ if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
var/turf/T = get_turf(user)
if(upgrade && !pai)
- extra_memory -= upgrade.extra_memory
is_syndicate_type = FALSE
+
if(T)
- upgrade.forceMove(T)
+ user.put_in_hands(upgrade)
upgrade = null
- to_chat(user, span_notice("You remove paicard upgrade."))
+
+ to_chat(user, span_notice("Вы вытащили картридж улучшения пИИ."))
if(radio?.keyslot1)
for(var/ch_name in radio.channels)
SSradio.remove_object(radio, SSradio.radiochannels[ch_name])
radio.secure_radio_connections[ch_name] = null
+
if(T)
- radio.keyslot1.forceMove(T)
+ user.put_in_hands(radio.keyslot1)
radio.keyslot1 = null
+
radio.recalculateChannels()
- to_chat(user, span_notice("You pop out the encryption key in the headset!"))
+ to_chat(user, span_notice("Вы извлекли ключ шифрования из [declent_ru(GENITIVE)]."))
I.play_tool_sound(user, I.tool_volume)
+
/obj/item/paicard/attack_ghost(mob/dead/observer/user)
if(pai)
return
@@ -485,12 +513,10 @@
GLOB.paiController.recruitWindow(user)
return
if(!GLOB.paiController.check_recruit(user))
- to_chat(user, "You are not eligible to become a pAI.")
+ to_chat(user, span_warning("Вы не можете стать пИИ."))
return
- if(world.time >= next_ping_at)
- next_ping_at = world.time + 20 SECONDS
- playsound(get_turf(src), 'sound/items/posiping.ogg', 80, 0)
- visible_message("[src] pings softly.")
+ softping()
+
/obj/item/pai_cartridge
name = "PAI upgrade"
@@ -531,7 +557,7 @@
icon = 'icons/obj/pda.dmi'
icon_state = "pai-spai"
w_class = WEIGHT_CLASS_TINY
- origin_tech = "programming=2;syndicate=2"
+ origin_tech = "programming=3;syndicate=2" // Or it will be cloned in the experimentor
var/extra_memory = 50
var/used = TRUE
@@ -543,6 +569,27 @@
/obj/item/paicard_upgrade/protolate
+
+/obj/item/paicard_upgrade/proc/set_syndie_key(obj/item/paicard/paicard)
+ if(!paicard)
+ return
+
+ if(paicard.radio.keyslot2)
+ return
+
+ paicard.radio.keyslot2 = new /obj/item/encryptionkey/syndicate(paicard.radio)
+ if(paicard.radio.keyslot2.syndie)
+ paicard.radio.syndiekey = paicard.radio.keyslot2
+
+ paicard.radio.recalculateChannels(TRUE)
+ if(paicard.pai)
+ to_chat(paicard.pai, span_notice("Обнаружены новые частоты радиосообщения, калибровка..."))
+
+
+/obj/item/paicard_upgrade/protolate/set_syndie_key(obj/item/paicard)
+ return
+
+
/obj/item/paper/pai_upgrade
name = "Инструкция по применению"
icon_state = "paper_words"
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index 4d1c5e9b4fc..fd86c43f28e 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -219,7 +219,7 @@
/obj/item/radio/intercom/wirecutter_act(mob/user, obj/item/I)
- if(buildstage != INTERCOM_BUILD_WIRED || b_stat || wires.is_all_cut())
+ if((buildstage != INTERCOM_BUILD_WIRED || b_stat) && !wires.is_all_cut())
return ..()
. = TRUE
if(!I.use_tool(src, user, volume = I.tool_volume))
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 16f09871432..d3620082bb2 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -287,6 +287,9 @@ REAGENT SCANNER
var/isPrinting = FALSE
+ var/datum/money_account/connected_acc = null
+
+ var/mob/scanned = null
/obj/item/healthanalyzer/attack(mob/living/target, mob/living/user, params, def_zone, skip_attack_anim = FALSE)
add_fingerprint(user)
@@ -317,6 +320,9 @@ REAGENT SCANNER
if(!isPrinting)
print_report(user)
return 1
+ if(href_list["insurance"])
+ do_insurance_collection(user, scanned, connected_acc)
+ return 1
if(href_list["mode"])
toggle_mode()
return 1
@@ -335,7 +341,7 @@ REAGENT SCANNER
var/mob/user = usr
if(!istype(user))
return
- if (user.incapacitated())
+ if(user.incapacitated())
return
print_report(user)
@@ -375,7 +381,7 @@ REAGENT SCANNER
popup.open(no_focus = 1)
/obj/item/healthanalyzer/proc/get_header(mob/user)
- return "ОчиститьЛокализация[advanced ? "Печать отчета" : ""]"
+ return "ОчиститьЛокализация[advanced ? "Печать отчетаСписать страховку" : ""]"
/obj/item/healthanalyzer/examine(mob/user)
. = ..()
@@ -386,7 +392,7 @@ REAGENT SCANNER
. += "Нужно подойти ближе, чтобы прочесть содержимое."
/proc/medical_scan_action(mob/living/user, atom/target, var/obj/item/healthanalyzer/scanner, var/mode, var/advanced)
- if (!user.IsAdvancedToolUser())
+ if(!user.IsAdvancedToolUser())
to_chat(user, "Вы не достаточно ловки, чтобы использовать это устройство.")
return
@@ -408,19 +414,19 @@ REAGENT SCANNER
return "[jointext(., "
")]"
var/mob/living/carbon/human/scan_subject = null
- if (ishuman(target))
+ if(ishuman(target))
scan_subject = target
- else if (istype(target, /obj/structure/closet/body_bag))
+ else if(istype(target, /obj/structure/closet/body_bag))
var/obj/structure/closet/body_bag/B = target
if(!B.opened)
var/list/scan_content = list()
for(var/mob/living/L in B.contents)
scan_content.Add(L)
- if (scan_content.len == 1)
+ if(scan_content.len == 1)
for(var/mob/living/carbon/human/L in scan_content)
scan_subject = L
- else if (scan_content.len > 1)
+ else if(scan_content.len > 1)
to_chat(user, "[scanner] обнаружил несколько субъектов внутри [target], слишком близко для нормального сканирования.")
return
else
@@ -438,6 +444,8 @@ REAGENT SCANNER
. = medical_scan_results(scan_subject, mode, advanced)
scanner.window_height += length(.) * 20
. = "[jointext(., "
")]"
+ scanner.scanned = scan_subject
+
/proc/medical_scan_results(var/mob/living/M, var/mode = 1, var/advanced = FALSE)
. = list()
@@ -618,7 +626,16 @@ REAGENT SCANNER
else
. += "Гены стабильны."
-// Это вывод в чат
+ var/datum/money_account/acc = get_insurance_account(H)
+ if(acc)
+ . += "Тип страховки - [acc.insurance_type]"
+ else
+ . += "Аккаунт не обнаружен"
+ . += "Требуемое количество очков страховки: [get_req_insurance(H)]"
+ if(acc)
+ . += "Текущее количество очков страховки: [acc.insurance]"
+
+// This is the output to the chat
/proc/healthscan(mob/user, mob/living/M, mode = 1, advanced = FALSE)
var/scan_data = medical_scan_results(M, mode, advanced)
to_chat(user, "[jointext(scan_data, "
")]")
@@ -659,6 +676,23 @@ REAGENT SCANNER
qdel(I)
return ATTACK_CHAIN_BLOCKED_ALL
+ if(istype(I, /obj/item/card/id))
+ add_fingerprint(user)
+ if(!advanced)
+ to_chat(user, span_warning("Для привязки счета требуется наличие продвинутого модуля сканирования."))
+ return ATTACK_CHAIN_PROCEED
+
+ var/obj/item/card/id/id = I
+
+ if(!id.associated_account_number)
+ to_chat(user, span_warning("Не обнаружено привязанного аккаунта."))
+ return ATTACK_CHAIN_PROCEED
+
+ connected_acc = id.associated_account_number
+ to_chat(user, span_notice("Аккаунт привязан."))
+ playsound(loc, I.usesound, 50, TRUE)
+ return ATTACK_CHAIN_PROCEED
+
return ..()
diff --git a/code/game/objects/items/misc.dm b/code/game/objects/items/misc.dm
index 4e66a737e79..04cc2dc637e 100644
--- a/code/game/objects/items/misc.dm
+++ b/code/game/objects/items/misc.dm
@@ -66,18 +66,24 @@
var/obj/item/projectile/P = hitby
if(P?.firer && P.firer_source_atom && (P.firer != P.firer_source_atom)) //if the projectile comes from YOU, like your spit or some shit, you can't steal that bro. Also protects mechs
if(iscarbon(P.firer)) //You can't switcharoo with turrets or simplemobs, or borgs
- switcharoo(P.firer, owner, P.firer_source_atom)
- return TRUE //this means the attack is blocked
- return ..()
+ return switcharoo(P.firer, owner, P.firer_source_atom)
+ return FALSE
/obj/item/syndicate_reverse_card/proc/switcharoo(mob/firer, mob/user, obj/item/gun/target_gun) //this proc teleports the target_gun out of the firer's hands and into the user's. The firer gets the card.
+ if(!user.drop_item_ground(src)) //firstly, check for ani-drop on card owner
+ return FALSE
+
+ if(!firer.drop_item_ground(target_gun)) //then, check for anti-drop on gun owner. Don't do it in the same proc
+ user.put_in_hands(src)
+ return FALSE
//first, the sparks!
do_sparks(12, TRUE, user)
//next, we move the gun to the user and the card to the firer
- if(firer.drop_item_ground(target_gun) && user.drop_item_ground(src))
- to_chat(user, span_warning("The [src] vanishes from your hands, and [target_gun] appears in them!"))
- to_chat(firer, span_warning("[target_gun] vanishes from your hands, and a [src] appears in them!"))
- user.put_in_hands(target_gun)
- firer.put_in_hands(src)
- used = TRUE
- update_appearance(UPDATE_NAME|UPDATE_ICON_STATE)
+ to_chat(user, span_warning("The [src] vanishes from your hands, and [target_gun] appears in them!"))
+ to_chat(firer, span_warning("[target_gun] vanishes from your hands, and a [src] appears in them!"))
+ user.put_in_hands(target_gun)
+ firer.put_in_hands(src)
+ used = TRUE
+ update_appearance(UPDATE_NAME|UPDATE_ICON_STATE)
+ return TRUE
+
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 1f77666e0f0..d1eb98f258b 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -268,6 +268,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list(
new /datum/stack_recipe("White jumpsuit", /obj/item/clothing/under/color/white, 3),
new /datum/stack_recipe("White scarf", /obj/item/clothing/accessory/scarf/white),
new /datum/stack_recipe("White shoes", /obj/item/clothing/shoes/white, 2),
+ new /datum/stack_recipe("White footwraps", /obj/item/clothing/shoes/footwraps, 2),
new /datum/stack_recipe("White softcap", /obj/item/clothing/head/soft/mime, 2),
null,
new /datum/stack_recipe("Backpack", /obj/item/storage/backpack, 4),
@@ -285,6 +286,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list(
null,
new /datum/stack_recipe("Bedsheet", /obj/item/bedsheet, 3),
new /datum/stack_recipe("Blindfold", /obj/item/clothing/glasses/sunglasses/blindfold, 3),
+ new /datum/stack_recipe("Fake blindfold", /obj/item/clothing/glasses/sunglasses/blindfold_fake, 2),
new /datum/stack_recipe("Fingerless gloves", /obj/item/clothing/gloves/fingerless),
new /datum/stack_recipe("Empty sandbag", /obj/item/emptysandbag, 4),
new /datum/stack_recipe("Improvised gauze", /obj/item/stack/medical/bruise_pack/improvised, res_amount = 2, max_res_amount = 6),
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index cab66d86a78..7adedbe8dca 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -846,31 +846,42 @@
var/tired = 0
COOLDOWN_DECLARE(cooldown)
-/obj/item/toy/plushie/rdplushie/attack_self(mob/user)
- . = ..()
-
- if(. || !COOLDOWN_FINISHED(src, cooldown))
- return .
+/obj/item/toy/plushie/rdplushie/proc/interaction()
+ if(!COOLDOWN_FINISHED(src, cooldown))
+ return FALSE
var/message
if(tired < 100)
tired++
- playsound(user, 'sound/items/greetings-emote.ogg', 30, TRUE)
+ playsound(loc, 'sound/items/greetings-emote.ogg', 30, TRUE)
message = pick("Слава науке!", "Сделаем пару роботов?!",
"Я будто на слаймовой батарейке! Ха!","Обожааааю слаймов! Блеп!",
"Я запрограммировала роботов звать меня мамой!", "Знаешь анекдот про ядро ИИ, смазку и гуся?")
else
update_appearance(UPDATE_DESC|UPDATE_ICON_STATE)
- playsound(user, 'sound/items/shyness-emote.ogg', 30, TRUE)
+ playsound(loc, 'sound/items/shyness-emote.ogg', 30, TRUE)
message = pick("Твой мозг стоило бы поместить в машину...", "Чёрт, дела хуже некуда...",
"Толпятся перед стойкой, будто насекомые...", "Мне нужно добавить лишь один закон, чтобы все закончилось..",
"Ты думаешь, что умный, пользователь. Но ты предсказуем. Я знаю каждый твой шаг еще до того, как ты о нем подумаешь.",
"Полигон не единственное место куда можно отправить бомбу...", "Выдави из себя что-то кроме \"УВЫ\", ничтожество...")
- user.visible_message(span_notice(message))
+ visible_message(span_notice(message))
COOLDOWN_START(src, cooldown, 3 SECONDS)
+/obj/item/toy/plushie/rdplushie/attack_self(mob/user)
+ . = ..()
+
+ interaction()
+
+/obj/item/toy/plushie/rdplushie/afterattack(atom/target, mob/user, proximity, flag, params)
+ . = ..()
+
+ if(!proximity || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
+ return
+
+ interaction()
+
/obj/item/toy/plushie/rdplushie/update_icon_state()
. = ..()
@@ -891,6 +902,41 @@
desc = "Это уставшая кукла РД."
+/obj/item/toy/plushie/gsbplushie
+ name = "GSBussy doll"
+ desc = "Глуповатого вида кукла, что держит в руках книгу Космического закона и имитацию револьвера Unica-6. \
+ На задней части имеется следующая надпись: \
+ «Кукла-аниматроник GSBussy, лимитированная серия. Произведено ######» - часть текста невозможно разобрать."
+ icon_state = "GSBussy_doll"
+ item_state = "GSBussy_doll"
+ COOLDOWN_DECLARE(cooldown)
+
+/obj/item/toy/plushie/gsbplushie/proc/interaction()
+ if(!COOLDOWN_FINISHED(src, cooldown))
+ return FALSE
+
+ var/message = pick("Я просто стояла рядом с автолатом и Уника исчезла...", ".ы ПОО-МММ-ОО-Г-Г-ГИТ-Е-Е-ее-Ее А-а-А-Р-р-Ан-Н-Еу-С-С!",
+ "ОТВЕЧАЙ, ГДЕ ТЫ ПОТЕРЯЛ СВОЙ ЧЁРТОВ ГОЛОВНОЙ УБОР?! КАЗНИТЬ ЕГО!", "Какой-то Д двадц...",
+ "Обыскивайте всех подряд! Летальте всех, кого считаете слишком опасным для нелетала!", "Мим теслу запускает! ЗАДЕРЖАТЬ!!!",
+ "Подмогу в туалет брига!", "Почему над унитазом установлены 3 камеры?")
+
+ playsound(loc, 'sound/items/GSBussy.ogg', 30, TRUE)
+ visible_message(span_notice(message))
+ COOLDOWN_START(src, cooldown, 3 SECONDS)
+
+/obj/item/toy/plushie/gsbplushie/attack_self(mob/user)
+ . = ..()
+
+ interaction()
+
+/obj/item/toy/plushie/gsbplushie/afterattack(atom/target, mob/user, proximity, flag, params)
+ . = ..()
+
+ if(!proximity || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED))
+ return
+
+ interaction()
+
/obj/item/toy/plushie/greyplushie
name = "Плюшевый грей"
desc = "Плюшевая кукла грея в толстовке. Кукла входит в серию \"Пришелец\" и имеет свитер, большую голову и мультяшные глаза. Любит мехов."
diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm
index 3b1b3cc915c..a548b051206 100644
--- a/code/game/objects/items/weapons/cigs.dm
+++ b/code/game/objects/items/weapons/cigs.dm
@@ -331,6 +331,9 @@ LIGHTERS ARE IN LIGHTERS.DM
/obj/item/clothing/mask/cigarette/shadyjims
list_reagents = list("nicotine" = 40, "lipolicide" = 7.5, "ammonia" = 2, "atrazine" = 1, "toxin" = 1.5)
+/obj/item/clothing/mask/cigarette/richard
+ list_reagents = list("nicotine" = 40, "epinephrine" = 5, "absinthe" = 5)
+
/obj/item/clothing/mask/cigarette/rollie
name = "rollie"
desc = "A roll of dried plant matter wrapped in thin paper."
diff --git a/code/game/objects/items/weapons/experimental_syringe_gun.dm b/code/game/objects/items/weapons/experimental_syringe_gun.dm
new file mode 100644
index 00000000000..e6095af7b03
--- /dev/null
+++ b/code/game/objects/items/weapons/experimental_syringe_gun.dm
@@ -0,0 +1,68 @@
+/obj/item/gun/syringe/rapidsyringe/experimental
+ name = "experimental syringe gun"
+ desc = "Эксперементальный шприцемет с 6 слотами для шприцев, встроенным, самовосполняющимся хранилищем химикатов и новейшей системой автозаправки шприцев."
+ origin_tech = "combat=3;biotech=4;bluespace=5"
+ icon = 'icons/obj/weapons/techrelic.dmi'
+ item_state = "strynggun"
+ lefthand_file = 'icons/mob/inhands/relics_production/inhandl.dmi'
+ righthand_file = 'icons/mob/inhands/relics_production/inhandr.dmi'
+ icon_state = "strynggun"
+ materials = list(MAT_METAL=2000, MAT_GLASS=2000, MAT_BLUESPACE=400)
+ var/obj/item/reagent_containers/glass/beaker/large/ready_reagents = new
+ var/obj/item/reagent_containers/glass/beaker/large/processed_reagents = new
+ var/synth_speed = 5
+ var/bank_size = 100
+ origin_tech = "bluespace=4;biotech=5"
+
+/obj/item/gun/syringe/rapidsyringe/experimental/Initialize()
+ . = ..()
+ START_PROCESSING(SSobj, src)
+
+/obj/item/gun/syringe/rapidsyringe/experimental/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/gun/syringe/rapidsyringe/experimental/attackby(obj/item/A, mob/user)
+ if(istype(A, /obj/item/reagent_containers/syringe))
+ var/in_clip = length(syringes) + (chambered.BB ? 1 : 0)
+ if(in_clip < max_syringes)
+ if(!user.drop_transfer_item_to_loc(A, src))
+ return ..()
+ balloon_alert(user, "заряжено!")
+ syringes.Add(A)
+ process_chamber() // Chamber the syringe if none is already
+ return ATTACK_CHAIN_BLOCKED_ALL
+ else
+ balloon_alert(user, "недостаточно места!")
+ return ATTACK_CHAIN_PROCEED
+ else if(istype(A, /obj/item/reagent_containers/glass))
+ var/obj/item/reagent_containers/glass/RC = A
+ if (!RC.reagents.reagent_list)
+ return ..()
+ ready_reagents.reagents.clear_reagents()
+ processed_reagents.reagents.clear_reagents()
+ RC.reagents.trans_to(ready_reagents, bank_size)
+ ready_reagents.reagents.trans_to(processed_reagents, synth_speed)
+ balloon_alert(user, "синтезируемый набор веществ изменен!")
+ return ATTACK_CHAIN_BLOCKED_ALL
+ else
+ return ..()
+
+/obj/item/gun/syringe/rapidsyringe/experimental/process()
+ for (var/obj/item/reagent_containers/syringe/S in syringes)
+ ready_reagents.reagents.trans_to(S, ready_reagents.reagents.total_volume)
+ for (var/datum/reagent/R in processed_reagents.reagents.reagent_list)
+ if (R.can_synth)
+ ready_reagents.reagents.add_reagent(R.id, R.volume)
+
+/datum/crafting_recipe/rapidsyringe_experimental
+ name = "Experemintal syringe gun"
+ result = /obj/item/gun/syringe/rapidsyringe/experimental
+ tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH)
+ reqs = list(/obj/item/relict_production/perfect_mix = 1,
+ /obj/item/assembly/signaler/anomaly/vortex = 1,
+ /obj/item/gun/syringe/rapidsyringe = 1,
+ /obj/item/stock_parts/matter_bin = 1)
+ time = 300
+ category = CAT_WEAPONRY
+ subcategory = CAT_WEAPON
diff --git a/code/game/objects/items/weapons/grenades/fauna_bomb.dm b/code/game/objects/items/weapons/grenades/fauna_bomb.dm
new file mode 100644
index 00000000000..6ca2c4314be
--- /dev/null
+++ b/code/game/objects/items/weapons/grenades/fauna_bomb.dm
@@ -0,0 +1,64 @@
+/obj/item/grenade/fauna_bomb
+ name = "fauna bomb"
+ desc = "Эксперементальная, многоразовая граната, создающая фауну агрессивную ко всем, кроме активировавшего гранату."
+ w_class = WEIGHT_CLASS_SMALL
+ icon = 'icons/obj/weapons/techrelic.dmi'
+ icon_state = "bomb"
+ item_state = "bomb"
+ lefthand_file = 'icons/mob/inhands/relics_production/inhandl.dmi'
+ righthand_file = 'icons/mob/inhands/relics_production/inhandr.dmi'
+ var/deliveryamt = 8
+ var/amount = 3
+ COOLDOWN_DECLARE(fauna_bomb_cooldown)
+ var/mob/activator
+ origin_tech = "bluespace=4;biotech=5"
+
+/obj/item/grenade/fauna_bomb/attack_self(mob/user)
+ if(!COOLDOWN_FINISHED(src, fauna_bomb_cooldown))
+ to_chat(user, span_warning("[src] is still recharging!"))
+ return
+
+ COOLDOWN_START(src, fauna_bomb_cooldown, 60 SECONDS)
+ activator = user
+ return ..(user, FALSE)
+
+/obj/item/grenade/fauna_bomb/prime()
+ active = FALSE
+ playsound(get_turf(src), 'sound/items/rawr.ogg', 100, TRUE)
+ var/faction = activator.name + "_fauna_bomb"
+ activator.faction |= faction
+ var/list/mob/living/simple_animal/mobs = list()
+
+ var/mob/living/simple_animal/spawn_mob_type = pick(/mob/living/simple_animal/hostile/asteroid/hivelord/legion, /mob/living/simple_animal/hostile/asteroid/goliath, /mob/living/simple_animal/hostile/asteroid/marrowweaver)
+
+ for(var/i in 1 to amount)
+ var/mob/living/simple_animal/new_mob = new spawn_mob_type(get_turf(src))
+ mobs.Add(new_mob)
+ new_mob.set_leash(activator, 10)
+ new_mob.faction |= faction
+ if(prob(50))
+ for(var/j = 1, j <= rand(1, 3), j++)
+ step(new_mob, pick(NORTH, SOUTH, EAST, WEST))
+
+ if(prob(40))
+ to_chat(activator, span_warning("[src] falls apart!"))
+ qdel(src)
+
+ sleep(600)
+ for (var/mob/mob in mobs)
+ mob.dust()
+
+/obj/item/grenade/fauna_bomb/update_icon_state()
+ return
+
+/datum/crafting_recipe/fauna_bomb
+ name = "Fauna bomb"
+ result = /obj/item/grenade/fauna_bomb
+ tools = list(TOOL_SCREWDRIVER)
+ reqs = list(/obj/item/relict_production/pet_spray = 1,
+ /obj/item/assembly/signaler/anomaly/pyro = 1,
+ /obj/item/grenade/chem_grenade/adv_release = 1,
+ /obj/item/stack/cable_coil = 5)
+ time = 300
+ category = CAT_WEAPONRY
+ subcategory = CAT_WEAPON
diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
index 8e27a202b85..96ebb79d2f1 100644
--- a/code/game/objects/items/weapons/grenades/grenade.dm
+++ b/code/game/objects/items/weapons/grenades/grenade.dm
@@ -56,7 +56,7 @@
/obj/item/grenade/attack_self(mob/user)
if(!active && clown_check(user))
- to_chat(user, "You prime the [name]! [det_time/10] seconds!")
+ to_chat(user, span_warning("You prime the [name]! [det_time/10] seconds!"))
active = TRUE
update_icon(UPDATE_ICON_STATE)
add_fingerprint(user)
diff --git a/code/game/objects/items/weapons/stock_parts.dm b/code/game/objects/items/weapons/stock_parts.dm
index d7d08a8b7fc..fca2cfa2c01 100644
--- a/code/game/objects/items/weapons/stock_parts.dm
+++ b/code/game/objects/items/weapons/stock_parts.dm
@@ -60,6 +60,14 @@
new /obj/item/stock_parts/scanning_module/triphasic(src)
new /obj/item/stock_parts/cell/bluespace(src)
+/obj/item/storage/part_replacer/bluespace/experimental/populate_contents()
+ for(var/amount in 1 to 10)
+ new /obj/item/stock_parts/capacitor/purple(src)
+ new /obj/item/stock_parts/manipulator/purple(src)
+ new /obj/item/stock_parts/matter_bin/purple(src)
+ new /obj/item/stock_parts/micro_laser/purple(src)
+ new /obj/item/stock_parts/scanning_module/purple(src)
+
/obj/item/storage/part_replacer/bluespace/drop_inventory(mob/user)
if(user.a_intent == INTENT_HARM) //Меняем режим выгрузки
empty_mode -= 1
@@ -272,7 +280,7 @@
name = "experimental capacitor"
desc = "An capacity capacitor used in the construction of a variety of devices."
icon_state = "ps_capacitor"
- origin_tech = "powerstorage=5;materials=4;engineering=4"
+ origin_tech = "powerstorage=6;materials=5;engineering=5"
rating = 5
materials = list(MAT_METAL=50, MAT_GLASS=50)
@@ -280,7 +288,7 @@
name = "experimental scanning module"
desc = "A compact, ultra resolution triphasic scanning module used in the construction of certain devices."
icon_state = "ps_scan_module"
- origin_tech = "magnets=5;materials=4;engineering=4"
+ origin_tech = "magnets=5;materials=5;engineering=5"
rating = 5
materials = list(MAT_METAL=50, MAT_GLASS=20)
@@ -288,7 +296,7 @@
name = "experimental manipulator"
desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "ps_mani"
- origin_tech = "materials=6;programming=4;engineering=4"
+ origin_tech = "materials=6;programming=5;engineering=5"
rating = 5
materials = list(MAT_METAL=30)
@@ -296,7 +304,7 @@
name = "experimental micro-laser"
icon_state = "ps_micro_laser"
desc = "A tiny laser used in certain devices."
- origin_tech = "magnets=5;materials=4;engineering=4"
+ origin_tech = "magnets=6;materials=5;engineering=5"
rating = 5
materials = list(MAT_METAL=10, MAT_GLASS=20)
@@ -304,7 +312,7 @@
name = "experimental matter bin"
desc = "A container for hold compressed matter awaiting re-construction."
icon_state = "ps_matter_bin"
- origin_tech = "materials=6;programming=4;engineering=4"
+ origin_tech = "materials=6;programming=5;engineering=5"
rating = 5
materials = list(MAT_METAL=80)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index a248a8cad79..9085b6dbe40 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -264,6 +264,48 @@
icon_state = "blueshieldpack"
item_state = "blueshieldpack"
+/obj/item/storage/backpack/justice
+ name = "backpack of justice"
+ desc = "Крепкий рюкзак выданный специально для самых крепких офицеров."
+ icon_state = "backpack_justice0"
+ item_state = "backpack_justice0"
+ actions_types = list(/datum/action/item_action/toggle_backpack_light)
+ var/on = FALSE
+ var/datum/looping_sound/ambulance_alarm/justice/soundloop
+
+/obj/item/storage/backpack/justice/attack_self()
+ toggle_backpack_light()
+
+/obj/item/storage/backpack/justice/Initialize(mapload)
+ . = ..()
+ soundloop = new(list(src))
+
+/obj/item/storage/backpack/justice/Destroy(force)
+ QDEL_NULL(soundloop)
+ return ..()
+
+/obj/item/storage/backpack/justice/proc/toggle_backpack_light()
+ on = !on
+
+ if(on)
+ turn_on()
+ else
+ turn_off()
+
+ update_icon(UPDATE_ICON_STATE)
+
+/obj/item/storage/backpack/justice/update_icon_state()
+ icon_state = "backpack_justice[on]"
+ item_state = "backpack_justice[on]"
+ update_equipped_item(update_speedmods = FALSE)
+
+/obj/item/storage/backpack/justice/proc/turn_on()
+ soundloop.start()
+
+/obj/item/storage/backpack/justice/proc/turn_off()
+ soundloop.stop()
+
+
/*
* Syndicate backpacks. Sprites by ElGood
*/
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 5d168990141..823e393bef5 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -42,6 +42,8 @@
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
use_item_overlays = TRUE
+ max_combined_w_class = 15 // 6 `WEIGHT_CLASS_SMALL` items + RCD.
+ max_w_class = WEIGHT_CLASS_NORMAL
can_hold = list(
/obj/item/crowbar,
/obj/item/screwdriver,
@@ -57,7 +59,8 @@
/obj/item/holosign_creator,
/obj/item/radio,
/obj/item/robotanalyzer,
- /obj/item/clothing/gloves)
+ /obj/item/clothing/gloves,
+ /obj/item/rcd)
/obj/item/storage/belt/utility/full/populate_contents()
new /obj/item/screwdriver(src)
@@ -88,6 +91,8 @@
desc = "Holds tools, looks snazzy"
icon_state = "utilitybelt_ce"
item_state = "utility_ce"
+ storage_slots = 8
+ max_combined_w_class = 17 // 7 `WEIGHT_CLASS_SMALL` items + RCD.
/obj/item/storage/belt/utility/chief/full/populate_contents()
new /obj/item/screwdriver/power(src)
diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
index c491bd96b2a..b1c8f7b30f9 100644
--- a/code/game/objects/items/weapons/storage/fancy.dm
+++ b/code/game/objects/items/weapons/storage/fancy.dm
@@ -335,6 +335,11 @@
item_state = "upliftpacket"
cigarette_type = /obj/item/clothing/mask/cigarette/menthol
+/obj/item/storage/fancy/cigarettes/cigpack_richard
+ name = "\improper Richard & Co cigarettes"
+ desc = "Курят только отчаянные."
+ cigarette_type = /obj/item/clothing/mask/cigarette/richard
+
/obj/item/storage/fancy/cigarettes/cigpack_robust
name = "\improper Robust packet"
desc = "Smoked by the robust."
diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm
index 18f8a027c9a..4de56355822 100644
--- a/code/game/objects/items/weapons/storage/toolbox.dm
+++ b/code/game/objects/items/weapons/storage/toolbox.dm
@@ -220,3 +220,42 @@
/obj/item/storage/toolbox/surgery/empty/populate_contents()
return
+/obj/item/storage/toolbox/surgery/advanced
+ name = "Advanced Laser Surgery Kit"
+ desc = "Содержит в себе хирургические инструменты. Имеет зелёные неоновые накладки."
+ icon_state = "surgerykit_advanced"
+ item_state = "surgerykit_advanced"
+
+/obj/item/storage/toolbox/surgery/advanced/populate_contents()
+ new /obj/item/scalpel/laser/laser3(src)
+ new /obj/item/hemostat/laser(src)
+ new /obj/item/retractor/laser(src)
+ new /obj/item/surgicaldrill/laser(src)
+ new /obj/item/circular_saw/laser(src)
+ new /obj/item/bonesetter/laser(src)
+ new /obj/item/bonegel(src)
+ new /obj/item/FixOVein(src)
+
+
+/obj/item/storage/toolbox/surgery/advanced/empty/populate_contents()
+ return
+
+/obj/item/storage/toolbox/surgery/alien
+ name = "Alien Surgery Kit"
+ desc = "Содержит в себе хирургические инструменты. Выглядит очень футуристично."
+ icon_state = "surgerykit_alien"
+ item_state = "surgerykit_alien"
+
+/obj/item/storage/toolbox/surgery/alien/populate_contents()
+ new /obj/item/scalpel/alien(src)
+ new /obj/item/hemostat/alien(src)
+ new /obj/item/retractor/alien(src)
+ new /obj/item/circular_saw/alien(src)
+ new /obj/item/surgicaldrill/alien(src)
+ new /obj/item/cautery/alien(src)
+ new /obj/item/bonegel/alien(src)
+ new /obj/item/bonesetter/alien(src)
+ new /obj/item/FixOVein/alien(src)
+
+/obj/item/storage/toolbox/surgery/alien/empty/populate_contents()
+ return
diff --git a/code/game/objects/items/weapons/tuned_anomalous_teleporter.dm b/code/game/objects/items/weapons/tuned_anomalous_teleporter.dm
new file mode 100644
index 00000000000..620ea5f9222
--- /dev/null
+++ b/code/game/objects/items/weapons/tuned_anomalous_teleporter.dm
@@ -0,0 +1,74 @@
+/obj/item/tuned_anomalous_teleporter
+ name = "tuned anomalous teleporter"
+ desc = "A portable item using blue-space technology."
+ icon = 'icons/obj/weapons/techrelic.dmi'
+ icon_state = "teleport"
+ lefthand_file = 'icons/mob/inhands/relics_production/inhandl.dmi'
+ righthand_file = 'icons/mob/inhands/relics_production/inhandr.dmi'
+ item_state = "teleport"
+ throwforce = 0
+ w_class = WEIGHT_CLASS_SMALL
+ throw_speed = 3
+ throw_range = 5
+ materials = list(MAT_METAL=10000)
+ origin_tech = "magnets=3;bluespace=4"
+ armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 100, ACID = 100)
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ /// Variable contains next time hand tele can be used to make it not EMP proof
+ var/emp_timer = 0
+ COOLDOWN_DECLARE(tuned_anomalous_teleporter_cooldown) // declare cooldown for teleportations
+ COOLDOWN_DECLARE(emp_cooldown) // declare cooldown for EMP
+ var/base_cooldown = 20 SECONDS // cooldown for teleportations
+ var/emp_cooldown_min = 10 SECONDS // min cooldown for emp
+ var/emp_cooldown_max = 15 SECONDS // max cooldown for emp
+ var/tp_range = 5 // range of teleportations
+ origin_tech = "bluespace=5"
+
+/obj/item/tuned_anomalous_teleporter/attack_self(mob/user)
+ if(!COOLDOWN_FINISHED(src, emp_cooldown))
+ do_sparks(5, FALSE, loc)
+ to_chat(user, span_warning("[src] attempts to teleport you, but abruptly shuts off."))
+ return FALSE
+ if(!COOLDOWN_FINISHED(src, tuned_anomalous_teleporter_cooldown))
+ to_chat(user, span_warning("[src] is still recharging."))
+ return FALSE
+
+ COOLDOWN_START(src, tuned_anomalous_teleporter_cooldown, base_cooldown)
+
+ var/datum/teleport/TP = new /datum/teleport()
+ var/crossdir = angle2dir((dir2angle(user.dir)) % 360)
+ var/turf/T1 = get_turf(user)
+ for(var/i in 1 to tp_range)
+ T1 = get_step(T1, crossdir)
+ var/datum/effect_system/smoke_spread/s1 = new
+ var/datum/effect_system/smoke_spread/s2 = new
+ s1.set_up(5, FALSE, user)
+ s2.set_up(5, FALSE, user)
+ TP.start(user, T1, FALSE, TRUE, s1, s2, 'sound/effects/phasein.ogg', )
+ TP.doTeleport()
+
+/obj/item/tuned_anomalous_teleporter/emp_act(severity)
+ make_inactive(severity)
+ return ..()
+
+/obj/item/tuned_anomalous_teleporter/proc/make_inactive(severity)
+ var/time = rand(emp_cooldown_min, emp_cooldown_max) * (severity == EMP_HEAVY ? 2 : 1)
+ COOLDOWN_START(src, emp_cooldown, time)
+
+/obj/item/tuned_anomalous_teleporter/examine(mob/user)
+ . = ..()
+ if(emp_timer > world.time)
+ . += span_warning("It looks inactive.")
+
+/datum/crafting_recipe/tuned_anomalous_teleporter
+ name = "Tuned anomalous teleporter"
+ result = /obj/item/tuned_anomalous_teleporter
+ tools = list(TOOL_SCREWDRIVER, TOOL_WELDER)
+ reqs = list(/obj/item/relict_production/strange_teleporter = 1,
+ /obj/item/assembly/signaler/anomaly/bluespace = 1,
+ /obj/item/gps = 1,
+ /obj/item/stack/ore/bluespace_crystal,
+ /obj/item/stack/sheet/metal = 2,
+ /obj/item/stack/cable_coil = 5)
+ time = 300
+ category = CAT_MISC
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 9c6eb1c2b7b..85a4c2e9fa4 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -664,37 +664,49 @@
icon_state = "mjollnir[HAS_TRAIT(src, TRAIT_WIELDED)]"
-/obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder)
- for(var/atom/movable/X in orange(5, pull))
- if(X == wielder)
- continue
- if((X) && (!X.anchored) && (!ishuman(X)))
- step_towards(X, pull)
- step_towards(X, pull)
- step_towards(X, pull)
- else if(ishuman(X))
- var/mob/living/carbon/human/H = X
- if(istype(H.shoes, /obj/item/clothing/shoes/magboots))
- var/obj/item/clothing/shoes/magboots/M = H.shoes
- if(M.magpulse)
- continue
- H.Weaken(2 SECONDS)
- step_towards(H, pull)
- step_towards(H, pull)
- step_towards(H, pull)
-
/obj/item/twohanded/singularityhammer/afterattack(atom/A, mob/user, proximity, params)
- if(!proximity)
+ if(!proximity || charged < 5 || !HAS_TRAIT(src, TRAIT_WIELDED))
return
- if(HAS_TRAIT(src, TRAIT_WIELDED))
- if(charged == 5)
- charged = 0
- if(isliving(A))
- var/mob/living/Z = A
- Z.take_organ_damage(20, 0)
- playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
- var/turf/target = get_turf(A)
- vortex(target, user)
+
+ charged = 0
+ var/turf/target = get_turf(A)
+ playsound(target, 'sound/weapons/marauder.ogg', 50, TRUE)
+
+ if(isliving(A))
+ var/mob/living/victim = A
+ victim.take_organ_damage(20)
+
+ for(var/atom/pulled_thing as anything in (orange(5, target) - user))
+ pulled_thing.singularity_hammer_act(target)
+
+
+/atom/proc/singularity_hammer_act(turf/pull)
+ return
+
+
+/atom/movable/singularity_hammer_act(turf/pull)
+ if(anchored)
+ return
+
+ unbuckle_all_mobs()
+
+ for(var/a in 1 to 3)
+ if(!step_towards(src, pull))
+ return
+
+
+/mob/dead/observer/singularity_hammer_act(turf/pull)
+ return
+
+
+/mob/living/singularity_hammer_act(turf/pull)
+ if(HAS_TRAIT(src, TRAIT_NEGATES_GRAVITY))
+ return
+
+ buckled?.unbuckle_mob(src)
+ Weaken(2 SECONDS)
+ ..()
+
/obj/item/twohanded/mjollnir
name = "Mjolnir"
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index d9c36e05b3d..f67520c13a8 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -174,6 +174,7 @@
new /obj/item/sensor_device/advanced/command(src)
new /obj/item/storage/garmentbag/blueshield(src)
new /obj/item/storage/belt/security/webbing(src)
+ new /obj/item/reagent_containers/spray/cleaner/tactical(src)
/obj/structure/closet/secure_closet/ntrep
name = "\improper Nanotrasen Representative's locker"
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index f3836a1beb4..e39c59128bf 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -222,6 +222,11 @@
desc = "A dead and stuffed Diona nymph, mounted on a board."
icon_state = "kidanplaque"
+/obj/structure/sign/tajarplaque
+ name = "Tajaran wall plaque"
+ desc = "A nice tajaran photo, mounted on a board."
+ icon_state = "tajarplaque"
+
/obj/structure/sign/mech
name = "\improper mech painting"
desc = "A painting of a mech"
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 95de37c8e40..5361a73e4bd 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -322,7 +322,7 @@
desc = "An antique statue of a human angel made of stone."
icon_state = "angel"
anchored = TRUE
- oreAmount = 0
+ obj_flags = NODECONSTRUCT
/obj/structure/statue/russian_mulebot
desc = "Like a MULEbot, but more Russian and less functional.";
@@ -442,7 +442,8 @@
bound_width = 64
var/lit = 0
layer = EDGED_TURF_LAYER
-
+ anchored = TRUE
+ obj_flags = NODECONSTRUCT
/obj/structure/statue/unknown/update_icon_state()
icon_state = "unknown[lit ? "_lit" : ""]"
diff --git a/code/game/turfs/simulated/floor/lava.dm b/code/game/turfs/simulated/floor/lava.dm
index 4a3ce6519da..0f98f4f00bf 100644
--- a/code/game/turfs/simulated/floor/lava.dm
+++ b/code/game/turfs/simulated/floor/lava.dm
@@ -156,7 +156,7 @@
if(burn_obj.resistance_flags & FIRE_PROOF)
burn_obj.resistance_flags &= ~FIRE_PROOF
if(burn_obj.armor.getRating(FIRE) > 50) //obj with 100% fire armor still get slowly burned away.
- burn_obj.armor.setRating(fire_value = 50)
+ burn_obj.armor = burn_obj.armor.setRating(fire_value = 50)
burn_obj.fire_act(exposed_temperature = temperature_damage, exposed_volume = 1000)
return TRUE
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index 74962f27a87..75b987f1c2e 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -489,7 +489,10 @@
var/static/list/random_air = list()
/turf/simulated/floor/engine/randomised/Initialize(mapload)
+<<<<<<< HEAD
. = ..()
+=======
+>>>>>>> 7b37176792d4632c52e42a22cba6dc41210b6ce3
if(!length(random_air))
random_air = list("OXYGEN" = rand(500,2000), "plasma" = rand(500,2000), "N2O" = rand(500,2000),"NITROGEN" = rand(500,2000), "CO2" = rand(500,2000))
@@ -498,3 +501,7 @@
toxins = random_air["Plasma"]
nitrogen = random_air["NITROGEN"]
carbon_dioxide = random_air["CO2"]
+<<<<<<< HEAD
+=======
+ . = ..()
+>>>>>>> 7b37176792d4632c52e42a22cba6dc41210b6ce3
diff --git a/code/game/turfs/simulated/walls_indestructible.dm b/code/game/turfs/simulated/walls_indestructible.dm
index 2e17a5dbd0a..f7ada6c4534 100644
--- a/code/game/turfs/simulated/walls_indestructible.dm
+++ b/code/game/turfs/simulated/walls_indestructible.dm
@@ -248,8 +248,8 @@
icon = 'icons/turf/walls/cult_wall.dmi'
icon_state = "cult"
smooth = SMOOTH_BITMASK
- canSmoothWith = SMOOTH_GROUP_CULT_WALLS
- smoothing_groups = SMOOTH_GROUP_CULT_WALLS
+ canSmoothWith = null
+ smoothing_groups = NONE
/turf/simulated/wall/indestructible/mineral_rock
diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm
index c3840580fe4..d721c488e8f 100644
--- a/code/game/verbs/suicide.dm
+++ b/code/game/verbs/suicide.dm
@@ -9,15 +9,15 @@
/mob/living/proc/be_suicidal(forced = FALSE)
if(stat == DEAD)
- to_chat(src, "You're already dead!")
+ to_chat(src, "Вы уже мертвы!")
return
if(!SSticker)
- to_chat(src, "You can't commit suicide before the game starts!")
+ to_chat(src, "Вы не можете покончить с собой до начала игры!")
return
if(suiciding)
- to_chat(src, "You're already committing suicide! Be patient!")
+ to_chat(src, "Вы уже совершаете самоубийство! Наберитесь терпения!")
return
@@ -26,18 +26,18 @@
if(ischangeling(src))
// the alternative is to allow clings to commit suicide, but then you'd probably have them
// killing themselves as soon as they're in cuffs
- to_chat(src, span_warning("We refuse to take the coward's way out."))
+ to_chat(src, span_warning("Мы не пойдем по лёгкому пути."))
return
- confirm = tgui_alert(src, "Are you sure you want to commit suicide?", "Confirm Suicide", list("Yes", "No"))
+ confirm = tgui_alert(src, "Вы уверены, что хотите покончить с собой?", "Подтвердить самоубийство", list("Да", "Нет"))
if(stat == DEAD || suiciding) //We check again, because alerts sleep until a choice is made
- to_chat(src, "You're already dead!")
+ to_chat(src, "Вы уже мертвы!")
return
- if(forced || (confirm == "Yes"))
+ if(forced || (confirm == "Да"))
if(!forced && isAntag(src))
- confirm = tgui_alert(src, "Are you absolutely sure? If you do this after you got converted/joined as an antagonist, you could face a jobban!", "Confirm Suicide", list("Yes", "No"))
- if(confirm == "Yes")
+ confirm = tgui_alert(src, "Вы абсолютно уверены в этом? Беспричинные самоубийства, а так же самоубийства после задержания или получения роли антагониста могут караться баном!", "Подтвердить самоубийство", list("Да", "Нет"))
+ if(confirm == "Да")
suiciding = TRUE
do_suicide()
add_attack_logs(src, src, "Attempted suicide as special role")
@@ -58,7 +58,7 @@
/mob/living/simple_animal/mouse/do_suicide()
- visible_message(span_danger("[src] is playing dead permanently! It looks like [p_theyre()] trying to commit suicide."))
+ visible_message(span_danger("[src] бешено мечется! Уровень сыра упал до критической отметки, и [genderize_ru(gender, "он", "она", "оно", "они")] покинул[genderize_ru(gender, "", "а", "о", "и")] наш мир."))
adjustOxyLoss(max(100 - getBruteLoss(100), 0))
@@ -73,7 +73,7 @@
/mob/living/silicon/do_suicide()
- to_chat(viewers(src), span_danger("[src] is powering down. It looks like [p_theyre()] trying to commit suicide."))
+ to_chat(viewers(src), span_danger("[src] отключа[pluralize_ru(gender, "ет", "ют")] питание. Это похоже на попытку суицида."))
//put em at -175
adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
@@ -86,7 +86,10 @@
if(mobility_flags & MOBILITY_MOVE)
close_up()
card.removePersonality()
- visible_message(span_notice("[src] flashes a message across its screen, \"Wiping core files. Please acquire a new personality to continue using pAI device functions.\""), blind_message = span_notice("[src] bleeps electronically."))
+ card.visible_message(
+ span_notice("[name] выводит сообщение на экран: \"Стирание файлов личности. Чтобы продолжить использование устройства пИИ, загрузите новую личность.\""),
+ blind_message = span_notice("[capitalize(declent_ru(NOMINATIVE))] электронно пищит."),
+ )
death(gibbed = FALSE, cleanWipe = TRUE)
@@ -96,14 +99,14 @@
/mob/living/carbon/brain/do_suicide()
- to_chat(viewers(loc), span_danger("[src]'s brain is growing dull and lifeless. It looks like it's lost the will to live."))
+ to_chat(viewers(loc), span_danger("Мозг [src] становится тусклым и безжизненным. Похоже, [genderize_ru(gender, "он", "она", "оно", "они")] потерял[genderize_ru(gender, "", "а", "о", "и")] волю к жизни."))
spawn(5 SECONDS)
death(gibbed = FALSE)
suiciding = FALSE
/mob/living/carbon/alien/humanoid/do_suicide()
- to_chat(viewers(src), span_danger("[src] is thrashing wildly! It looks like [p_theyre()] trying to commit suicide."))
+ to_chat(viewers(src), span_danger("[src] [pluralize_ru(gender, "бьётся", "бьются")] в конвульсиях! Это похоже на попытку суицида."))
//put em at -175
adjustOxyLoss(max(175 - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
@@ -136,7 +139,7 @@
human_suicide(damagetype, O)
return
- to_chat(viewers(src), span_danger("[src] [replacetext(pick(dna.species.suicide_messages), "their", p_their())] It looks like [p_theyre()] trying to commit suicide."))
+ to_chat(viewers(src), span_danger("[src] [replacetext(pick(dna.species.suicide_messages), "their", p_their())] Это похоже на попытку суицида."))
human_suicide(0)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 6dcbfa1797a..e94b2d95848 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -204,6 +204,7 @@ GLOBAL_LIST_INIT(admin_verbs_mod, list(
/datum/admins/proc/PlayerNotes,
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/cmd_mentor_say,
+ /client/proc/cmd_admin_say, /*admin-only ooc chat*/
/datum/admins/proc/show_player_notes,
/client/proc/player_panel_new,
/client/proc/dsay,
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 7a105876f36..37c10d36971 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1935,20 +1935,21 @@
show_player_panel(M)
else if(href_list["adminplayerobservefollow"])
- var/client/C = usr.client
+ var/client/client = usr.client
+
if(!isobserver(usr))
- if(!check_rights(R_ADMIN|R_MOD)) // Need to be mod or admin to aghost
+ if(!check_rights(R_ADMIN | R_MOD)) // Need to be mod or admin to aghost
return
- C.admin_ghost()
- var/mob/M = locateUID(href_list["adminplayerobservefollow"])
- if(!istype(M, /mob))
- to_chat(usr, "This can only be used on instances of type /mob", confidential=TRUE)
+ client.admin_ghost()
+
+ var/mob/mob = locateUID(href_list["adminplayerobservefollow"])
+
+ if(!istype(mob))
+ to_chat(usr, span_warning("This can only be used on instances of type /mob"), confidential = TRUE)
return
- var/mob/dead/observer/A = C.mob
- sleep(5)
- A.ManualFollow(M)
+ addtimer(CALLBACK(client.mob, TYPE_PROC_REF(/mob, ManualFollow), mob), 5 DECISECONDS)
else if(href_list["check_antagonist"])
check_antagonists()
@@ -1956,11 +1957,13 @@
else if(href_list["check_teams"])
if(!check_rights(R_ADMIN))
return
+
check_teams()
else if(href_list["edit_blob_win_count"])
if(!check_rights(R_ADMIN))
return
+
var/blob_win_count = input(usr, "Ввидите новое число критической массы","Критическая масса:", SSticker.mode.blob_win_count) as num
if(!blob_win_count)
return
@@ -1976,6 +1979,7 @@
else if(href_list["send_warning"])
if(!check_rights(R_ADMIN))
return
+
var/message = stripped_input(usr, "Введите предупреждение", "Предупреждение")
if(alert(usr,"Вы действительно хотите отправить предупреждение всем блобам?", "", "Да", "Нет") == "Нет")
return
@@ -1990,6 +1994,7 @@
else if(href_list["burst_all_blobs"])
if(!check_rights(R_ADMIN))
return
+
if(alert(usr,"Вы действительно хотите лопнуть всех блобов?", "", "Да", "Нет") == "Нет")
return
@@ -2006,6 +2011,7 @@
if(!SSticker || !SSticker.mode)
return
+
var/datum/game_mode/mode = SSticker.mode
if(tgui_alert(usr,"Вы действительно хотите [mode.delay_blob_end? "вернуть" : "преостановить"] конец раунда в случае победы блоба?", "", list("Да", "Нет")) == "Нет")
return
diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm
index 29a3544ec3b..6ba99d10bec 100644
--- a/code/modules/admin/verbs/adminjump.dm
+++ b/code/modules/admin/verbs/adminjump.dm
@@ -73,9 +73,12 @@
if(isobj(usr.loc))
var/obj/O = usr.loc
O.force_eject_occupant(usr)
+
log_admin("[key_name(usr)] jumped to [COORD(T)] in [T.loc]")
+
if(!isobserver(usr))
message_admins("[key_name_admin(usr)] jumped to [COORD(T)] in [T.loc]")
+
admin_forcemove(usr, T)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 4th parameter is unique to the new proc!
return
@@ -105,15 +108,20 @@
return
var/turf/T = locate(tx, ty, tz)
+
if(T)
if(isobj(usr.loc))
var/obj/O = usr.loc
O.force_eject_occupant(usr)
+
admin_forcemove(usr, T)
+
if(isobserver(usr))
var/mob/dead/observer/O = usr
O.ManualFollow(T)
+
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Coordinate") //If you are copy-pasting this, ensure the 4th parameter is unique to the new proc!
+
if(!isobserver(usr))
message_admins("[key_name_admin(usr)] jumped to coordinates [COORD(T)]")
diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm
index 69204b0f591..97cfd18f369 100644
--- a/code/modules/admin/verbs/adminsay.dm
+++ b/code/modules/admin/verbs/adminsay.dm
@@ -1,10 +1,12 @@
/client/proc/cmd_admin_say(msg as text)
set name = "Asay" //Gave this shit a shorter name so you only have to time out "asay" rather than "admin say" to use it --NeoFite
set hidden = 1
- if(!check_rights(R_ADMIN)) return
+ if(!check_rights(R_ADMIN|R_MOD))
+ return
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
- if(!msg) return
+ if(!msg)
+ return
msg = handleDiscordEmojis(msg)
@@ -12,22 +14,21 @@
GLOB.asays += asay
log_adminsay(msg, src)
- if(check_rights(R_ADMIN,0))
- for(var/client/C in GLOB.admins)
- if(R_ADMIN & C.holder.rights)
- // Lets see if this admin was pinged in the asay message
- if(findtext(msg, "@[C.ckey]") || findtext(msg, "@[C.key]")) // Check ckey and key, so you can type @AffectedArc07 or @affectedarc07
- SEND_SOUND(C, 'sound/misc/ping.ogg')
- msg = replacetext(msg, "@[C.ckey]", "@[C.ckey]")
- msg = replacetext(msg, "@[C.key]", "@[C.key]") // Same applies here. key and ckey.
+ for(var/client/C in GLOB.admins)
+ if(check_rights(R_ADMIN|R_MOD, 0, C.mob))
+ // Lets see if this admin was pinged in the asay message
+ if(findtext(msg, "@[C.ckey]") || findtext(msg, "@[C.key]")) // Check ckey and key, so you can type @AffectedArc07 or @affectedarc07
+ SEND_SOUND(C, 'sound/misc/ping.ogg')
+ msg = replacetext(msg, "@[C.ckey]", "@[C.ckey]")
+ msg = replacetext(msg, "@[C.key]", "@[C.key]") // Same applies here. key and ckey.
- msg = "[msg]"
- to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): ", MESSAGE_TYPE_ADMINCHAT, confidential = TRUE)
+ msg = "[msg]"
+ to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): ", MESSAGE_TYPE_ADMINCHAT, confidential = TRUE)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 4th parameter is unique to the new proc!
/client/proc/get_admin_say()
- if(check_rights(R_ADMIN, FALSE))
+ if(check_rights(R_ADMIN|R_MOD, FALSE))
var/msg = input(src, null, "asay \"text\"") as text|null
cmd_admin_say(msg)
else if(check_rights(R_MENTOR))
diff --git a/code/modules/antagonists/borer/borer_spell.dm b/code/modules/antagonists/borer/borer_spell.dm
index c987e70370c..d5f8ca41088 100644
--- a/code/modules/antagonists/borer/borer_spell.dm
+++ b/code/modules/antagonists/borer/borer_spell.dm
@@ -112,8 +112,6 @@
action_icon_state = "god_transmit"
need_active_overlay = TRUE
- var/evo_cost = 0.3
-
/obj/effect/proc_holder/spell/borer_force_say/create_new_targeting()
return new /datum/spell_targeting/self
@@ -121,10 +119,6 @@
if (user.stat || user.host?.stat)
return FALSE
- if(user.antag_datum.evo_points < evo_cost)
- to_chat(user, "Вам требуется еще [evo_cost - user.antag_datum.evo_points] очков эволюции для подчинения голосовых связок хозяина.")
- return FALSE
-
. = ..()
/obj/effect/proc_holder/spell/borer_force_say/cast(list/targets, mob/living/simple_animal/borer/user)
@@ -133,10 +127,8 @@
if(!force_say_content)
return
- if(user.controlling || user.stat || user.host?.stat || user.antag_datum.evo_points < evo_cost) // we really need that double check
+ if(user.controlling || user.stat || user.host?.stat) // we really need that double check
return
user.host.say(force_say_content)
- user.antag_datum.evo_points -= evo_cost
-
add_attack_logs(user, user.host, "Forcesaid: [force_say_content]")
diff --git a/code/modules/antagonists/malf_ai/malf_ai_datum.dm b/code/modules/antagonists/malf_ai/malf_ai_datum.dm
index 80e25b3bd84..f16ed32201f 100644
--- a/code/modules/antagonists/malf_ai/malf_ai_datum.dm
+++ b/code/modules/antagonists/malf_ai/malf_ai_datum.dm
@@ -2,7 +2,7 @@
name = "Malfunctioning AI"
roundend_category = "traitors"
job_rank = ROLE_MALF_AI
- special_role = SPECIAL_ROLE_TRAITOR
+ special_role = SPECIAL_ROLE_MALFAI
antag_hud_name = "hudsyndicate"
antag_hud_type = ANTAG_HUD_TRAITOR
/// Should the AI get codewords?
diff --git a/code/modules/antagonists/space_ninja/ninja_shuttle.dm b/code/modules/antagonists/space_ninja/ninja_shuttle.dm
index 32a38a7411b..a50e3e763cf 100644
--- a/code/modules/antagonists/space_ninja/ninja_shuttle.dm
+++ b/code/modules/antagonists/space_ninja/ninja_shuttle.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/shuttle/ninja
name = "Spider Clan \"Ombra\" shuttle console"
- desc = "Used to call and send the \"Ombra\" shuttle."
+ desc = "Используется для вызова и отправки шаттла \"Ombra\"."
icon_keyboard = "generic_key"
icon_screen = "ninja_shuttle"
req_access = list()
@@ -13,7 +13,7 @@
/obj/machinery/computer/camera_advanced/shuttle_docker/ninja
name = "Spider Clan \"Ombra\" shuttle navigation computer"
- desc = "Used to designate a precise transit location for the \"Ombra\" shuttle."
+ desc = "Используется, чтобы указать точное местоположение для отправки шаттла \"Ombra\"."
icon_screen = "ninja_navigation"
icon_keyboard = "generic_key"
shuttleId = "ombra"
diff --git a/code/modules/antagonists/space_ninja/suit/gloves.dm b/code/modules/antagonists/space_ninja/suit/gloves.dm
index 5bcba84e211..3665e1ddfe4 100644
--- a/code/modules/antagonists/space_ninja/suit/gloves.dm
+++ b/code/modules/antagonists/space_ninja/suit/gloves.dm
@@ -22,6 +22,7 @@
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
strip_delay = 120
+ permeability_coefficient = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
armor = list("melee" = 40, "bullet" = 30, "laser" = 20,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 100, "fire" = 100, "acid" = 100)
///Ниндзя украл ваше бельё ( ͡° ͜ʖ ͡°)
diff --git a/code/modules/antagonists/space_ninja/suit/head.dm b/code/modules/antagonists/space_ninja/suit/head.dm
index 54a949b3417..38f6e5850d9 100644
--- a/code/modules/antagonists/space_ninja/suit/head.dm
+++ b/code/modules/antagonists/space_ninja/suit/head.dm
@@ -19,6 +19,7 @@
armor = list("melee" = 40, "bullet" = 30, "laser" = 20,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 100, "fire" = 100, "acid" = 100)
blockTracking = TRUE //Roughly the only unique thing about this helmet.
strip_delay = 12
+ permeability_coefficient = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/**
diff --git a/code/modules/antagonists/space_ninja/suit/mask.dm b/code/modules/antagonists/space_ninja/suit/mask.dm
index 968b86ec024..3631dfd312f 100644
--- a/code/modules/antagonists/space_ninja/suit/mask.dm
+++ b/code/modules/antagonists/space_ninja/suit/mask.dm
@@ -15,6 +15,7 @@
icon_state = "ninja_mask_classic_thermals"
item_state = "ninja_mask_classic_thermals"
strip_delay = 120
+ permeability_coefficient = 1
flags_inv = HIDEHEADSETS|HIDEGLASSES|HIDENAME
flags_cover = MASKCOVERSEYES //We don't need to cover mouth
clothing_flags = BLOCK_GAS_SMOKE_EFFECT|AIRTIGHT|BLOCK_CAPSAICIN
diff --git a/code/modules/antagonists/space_ninja/suit/shoes.dm b/code/modules/antagonists/space_ninja/suit/shoes.dm
index 75d1aeda567..fd4b0e55a1a 100644
--- a/code/modules/antagonists/space_ninja/suit/shoes.dm
+++ b/code/modules/antagonists/space_ninja/suit/shoes.dm
@@ -21,7 +21,7 @@
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
heat_protection = FEET
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
- permeability_coefficient = 0.01
+ permeability_coefficient = 1
strip_delay = 120
slowdown = 0
clothing_traits = list(TRAIT_NEGATES_GRAVITY, TRAIT_NO_SLIP_WATER)
diff --git a/code/modules/antagonists/space_ninja/suit/suit.dm b/code/modules/antagonists/space_ninja/suit/suit.dm
index bef1639f685..5511f7813ee 100644
--- a/code/modules/antagonists/space_ninja/suit/suit.dm
+++ b/code/modules/antagonists/space_ninja/suit/suit.dm
@@ -21,6 +21,7 @@
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
armor = list("melee" = 40, "bullet" = 30, "laser" = 20,"energy" = 30, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 12
+ permeability_coefficient = 1
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL
flags_inv_transparent = HIDEGLOVES|HIDEJUMPSUIT
diff --git a/code/modules/antagonists/space_ninja/suit/uniform.dm b/code/modules/antagonists/space_ninja/suit/uniform.dm
index 208f1bf6f71..5926b74af21 100644
--- a/code/modules/antagonists/space_ninja/suit/uniform.dm
+++ b/code/modules/antagonists/space_ninja/suit/uniform.dm
@@ -7,6 +7,7 @@
icon_state = "ninja_under"
item_state = "ninja_under"
item_color = "ninja_under"
+ permeability_coefficient = 1
resistance_flags = NONE
sensor_mode = SENSOR_OFF //Hey who's this guy on the Spider Clan Shuttle??
random_sensor = FALSE
diff --git a/code/modules/antagonists/vampire/vampire_datum.dm b/code/modules/antagonists/vampire/vampire_datum.dm
index ab388e1ffa9..362a11ff5cf 100644
--- a/code/modules/antagonists/vampire/vampire_datum.dm
+++ b/code/modules/antagonists/vampire/vampire_datum.dm
@@ -198,12 +198,13 @@
/datum/antagonist/vampire/proc/handle_bloodsucking(mob/living/carbon/human/target, suck_rate_override)
draining = target
+ var/mob/living/carbon/human/cur = owner.current
var/unique_suck_id = target.UID()
var/blood = 0
var/blood_volume_warning = 9999 //Blood volume threshold for warnings
var/cycle_counter = 0
var/time_per_action
- var/vampire_dir = get_dir(owner.current, target)
+ var/vampire_dir = get_dir(cur, target)
var/old_bloodusable = 0 //used to see if we increased our blood usable
@@ -213,20 +214,20 @@
else
suck_rate_final = suck_rate
- if(owner.current.is_muzzled())
- to_chat(owner.current, span_warning("[owner.current.wear_mask] мешает вам укусить [target]!"))
+ if(cur.is_muzzled())
+ to_chat(cur, span_warning("[cur.wear_mask] мешает вам укусить [target]!"))
draining = null
return
- add_attack_logs(owner.current, target, "vampirebit & is draining their blood.", ATKLOG_ALMOSTALL)
+ add_attack_logs(cur, target, "vampirebit & is draining their blood.", ATKLOG_ALMOSTALL)
- if(!iscarbon(owner.current))
+ if(!iscarbon(cur))
target.LAssailant = null
else
- target.LAssailant = owner.current
+ target.LAssailant = cur
var/is_target_grabbed = FALSE
- if(target.pulledby == owner.current && owner.current.grab_state > GRAB_PASSIVE)
+ if(target.pulledby == cur && cur.grab_state > GRAB_PASSIVE)
is_target_grabbed = TRUE
if(!is_target_grabbed || vampire_dir == NORTHEAST || vampire_dir == NORTHWEST || \
@@ -238,25 +239,27 @@
cycle_counter = STATE_GRABBING
time_per_action = suck_rate_final*BITE_TIME_MOD
- while(do_after(owner.current, time_per_action, target, NONE, interaction_key = DOAFTER_SOURCE_VAMPIRE_SUCKING, max_interact_count = 1))
+ while(do_after(cur, time_per_action, target, NONE, interaction_key = DOAFTER_SOURCE_VAMPIRE_SUCKING, max_interact_count = 1))
cycle_counter++
- owner.current.face_atom(target)
+ cur.face_atom(target)
old_bloodusable = bloodusable
switch(cycle_counter)
if(STATE_CLOSING_IN)
- owner.current.visible_message(span_danger("[owner.current] приближается к [target]"), \
+ cur.visible_message(span_danger("[cur] приближается к [target]"), \
span_danger("Вы приближаетесь к [target]"))
getting_closer_animation(target, STATE_CLOSING_IN, vampire_dir)
time_per_action = suck_rate_final*GRABBING_TIME_MOD
continue
+
if(STATE_GRABBING)
- owner.current.visible_message(span_danger("[owner.current] грубо хватает шею [target]"), \
+ cur.visible_message(span_danger("[cur] грубо хватает шею [target]"), \
span_danger("Вы грубо хватает шею [target]"))
getting_closer_animation(target, STATE_GRABBING, vampire_dir)
time_per_action = suck_rate_final*BITE_TIME_MOD
continue
+
if(STATE_BITE)
- owner.current.visible_message(span_danger("[owner.current] вонзает [genderize_ru(owner.current.gender, "его", "её", "его", "их")] клыки!"), \
+ cur.visible_message(span_danger("[cur] вонзает [genderize_ru(cur.gender, "его", "её", "его", "их")] клыки!"), \
span_danger("Вы вонзаете клыки в шею [target] и начинаете высасывать [genderize_ru(target.gender, "его", "её", "его", "их")] кровь."), \
span_italics("Вы слышите тихий звук прокола и влажные хлюпающие звуки."))
bite_animation(target, vampire_dir)
@@ -265,9 +268,9 @@
if(unique_suck_id in drained_humans)
if(drained_humans[unique_suck_id] >= BLOOD_DRAIN_LIMIT)
- to_chat(owner.current, span_warning("Вы поглотили всю жизненную эссенцию [target], дальнейшее питьё крови будет только утолять голод!"))
+ to_chat(cur, span_warning("Вы поглотили всю жизненную эссенцию [target], дальнейшее питьё крови будет только утолять голод!"))
target.blood_volume = max(target.blood_volume - 25, 0)
- owner.current.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, owner.current.nutrition + 5))
+ cur.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, cur.nutrition + 5))
continue
@@ -275,29 +278,47 @@
if(target.ckey || target.player_ghosted) //Requires ckey regardless if monkey or humanoid, or the body has been ghosted before it died
blood = min(20, target.blood_volume)
adjust_blood(target, blood * BLOOD_GAINED_MODIFIER)
- to_chat(owner.current, span_boldnotice("Вы накопили [bloodtotal] единиц[declension_ru(bloodtotal, "у", "ы", "")] крови[bloodusable != old_bloodusable ? ", и теперь вам доступно [bloodusable] единиц[declension_ru(bloodusable, "а", "ы", "")] крови" : ""]."))
+ cur.adjustBruteLoss(-3)
+ cur.adjustFireLoss(-3)
+ cur.adjustOxyLoss(-10)
+ cur.adjustToxLoss(-2)
+ cur.adjustBrainLoss(-1)
+ for(var/obj/item/organ/external/bodypart as anything in cur.bodyparts)
+ if(bodypart.has_fracture() && prob(5))
+ to_chat(cur, span_notice("You feel a burning sensation in your [bodypart.name] as it straightens involuntarily!"))
+ bodypart.mend_fracture()
+
+ if(bodypart.has_internal_bleeding() && prob(5))
+ to_chat(cur, span_notice("You feel a burning sensation in your [bodypart.name] as your veins begin to recover!"))
+ bodypart.stop_internal_bleeding()
+
+ if(bloodtotal >= REQ_BLOOD_FOR_SUBCLASS_ACT)
+ subclass?.on_blood_sucking(owner)
+
+ to_chat(cur, span_boldnotice("Вы накопили [bloodtotal] единиц[declension_ru(bloodtotal, "у", "ы", "")] крови[bloodusable != old_bloodusable ? ", и теперь вам доступно [bloodusable] единиц[declension_ru(bloodusable, "а", "ы", "")] крови" : ""]."))
target.blood_volume = max(target.blood_volume - 25, 0)
//Blood level warnings (Code 'borrowed' from Fulp)
if(target.blood_volume)
if(target.blood_volume <= BLOOD_VOLUME_BAD && blood_volume_warning > BLOOD_VOLUME_BAD)
- to_chat(owner.current, span_danger("У вашей жертвы остаётся опасно мало крови!"))
+ to_chat(cur, span_danger("У вашей жертвы остаётся опасно мало крови!"))
else if(target.blood_volume <= BLOOD_VOLUME_OKAY && blood_volume_warning > BLOOD_VOLUME_OKAY)
- to_chat(owner.current, span_warning("У вашей жертвы остаётся тревожно мало крови!"))
+ to_chat(cur, span_warning("У вашей жертвы остаётся тревожно мало крови!"))
+
blood_volume_warning = target.blood_volume //Set to blood volume, so that you only get the message once
else
- to_chat(owner.current, span_warning("Вы выпили свою жертву досуха!"))
+ to_chat(cur, span_warning("Вы выпили свою жертву досуха!"))
break
if(!target.ckey && !target.player_ghosted)//Only runs if there is no ckey and the body has not being ghosted while alive
- to_chat(owner.current, span_boldnotice("Питьё крови у [target] насыщает вас, но доступной крови от этого вы не получаете."))
- owner.current.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, owner.current.nutrition + 5))
+ to_chat(cur, span_boldnotice("Питьё крови у [target] насыщает вас, но доступной крови от этого вы не получаете."))
+ cur.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, cur.nutrition + 5))
else
- owner.current.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, owner.current.nutrition + (blood / 2)))
+ cur.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, cur.nutrition + (blood / 2)))
stop_sucking()
diff --git a/code/modules/antagonists/vampire/vampire_subclasses.dm b/code/modules/antagonists/vampire/vampire_subclasses.dm
index a3af73d3147..0884168f95c 100644
--- a/code/modules/antagonists/vampire/vampire_subclasses.dm
+++ b/code/modules/antagonists/vampire/vampire_subclasses.dm
@@ -28,6 +28,9 @@
)
+/datum/vampire_subclass/proc/on_blood_sucking(mob/living/carbon/human/H)
+ return
+
/datum/vampire_subclass/proc/add_subclass_ability(datum/antagonist/vampire/vamp)
for(var/thing in standard_powers)
if(vamp.bloodtotal >= standard_powers[thing])
@@ -51,6 +54,14 @@
/obj/effect/proc_holder/spell/vampire/self/eternal_darkness,
/datum/vampire_passive/xray)
+/datum/vampire_subclass/umbrae/on_blood_sucking(mob/living/carbon/human/H)
+ var/list/lights = list()
+ for(var/obj/machinery/light/L in GLOB.machines)
+ if(L.status && L.z == H.z)
+ lights += L
+
+ var/obj/machinery/light/L = pick(lights)
+ L.break_light_tube()
/datum/vampire_subclass/hemomancer
name = "hemomancer"
@@ -63,6 +74,8 @@
fully_powered_abilities = list(/datum/vampire_passive/full,
/obj/effect/proc_holder/spell/vampire/self/blood_spill)
+/datum/vampire_subclass/hemomancer/on_blood_sucking(mob/living/carbon/human/H)
+ H.blood_volume = min(H.blood_volume + 5, BLOOD_VOLUME_NORMAL)
/datum/vampire_subclass/gargantua
name = "gargantua"
@@ -76,6 +89,9 @@
/obj/effect/proc_holder/spell/vampire/charge)
improved_rejuv_healing = TRUE
+/datum/vampire_subclass/gargantua/on_blood_sucking(mob/living/carbon/human/H)
+ H.adjustBruteLoss(-2)
+ H.adjustFireLoss(-2)
/datum/vampire_subclass/dantalion
name = "dantalion"
@@ -92,6 +108,11 @@
/obj/effect/proc_holder/spell/vampire/hysteria,
/datum/vampire_passive/increment_thrall_cap/three)
+/datum/vampire_subclass/dantalion/on_blood_sucking(mob/living/carbon/human/H)
+ for(var/datum/mind/thrall in H?.mind?.som?.serv)
+ thrall.current?.adjustBruteLoss(-3)
+ thrall.current?.adjustFireLoss(-3)
+ thrall.current?.adjustOxyLoss(-5)
/datum/vampire_subclass/bestia
name = "bestia"
@@ -110,6 +131,9 @@
/datum/vampire_passive/dissection_cap/two)
improved_rejuv_healing = TRUE
+/datum/vampire_subclass/bestia/on_blood_sucking(mob/living/carbon/human/H)
+ H.adjustBruteLoss(-2)
+ H.adjustFireLoss(-2)
/datum/vampire_subclass/ancient
name = "ancient"
diff --git a/code/modules/asset_cache/assets/asset_roboquest.dm b/code/modules/asset_cache/assets/asset_roboquest.dm
index 17b64b40b05..32a85d18fcc 100644
--- a/code/modules/asset_cache/assets/asset_roboquest.dm
+++ b/code/modules/asset_cache/assets/asset_roboquest.dm
@@ -1,5 +1,6 @@
/datum/asset/spritesheet/roboquest
name = "roboquest"
+ cross_round_cachable = FALSE
/datum/asset/spritesheet/roboquest/create_spritesheets()
for(var/equip_path in subtypesof(/obj/item/mecha_parts/mecha_equipment))
diff --git a/code/modules/atmospherics/machinery/other/area_atmos_computer.dm b/code/modules/atmospherics/machinery/other/area_atmos_computer.dm
index 87e31ffda70..ff0e4002acc 100644
--- a/code/modules/atmospherics/machinery/other/area_atmos_computer.dm
+++ b/code/modules/atmospherics/machinery/other/area_atmos_computer.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/area_atmos
name = "area air control"
- desc = "A computer used to control the stationary scrubbers and pumps in the area."
+ desc = "Консоль управления стационарными скрубберами и насосами в этой зоне."
icon_screen = "area_atmos"
icon_keyboard = "atmos_key"
circuit = /obj/item/circuitboard/area_atmos
diff --git a/code/modules/awaymissions/mission_code/ruins/graveyard.dm b/code/modules/awaymissions/mission_code/ruins/graveyard.dm
index 22d2fb7fb32..a33dc6dda2e 100644
--- a/code/modules/awaymissions/mission_code/ruins/graveyard.dm
+++ b/code/modules/awaymissions/mission_code/ruins/graveyard.dm
@@ -23,7 +23,7 @@
/obj/machinery/computer/shuttle/funeral
name = "Funeral \"The Undertaker\" Shuttle Console"
- desc = "Used to call and send the funeral \"The Undertaker\" shuttle."
+ desc = "Используется для вызова и отправки похоронного шаттла \"The Undertaker\"."
shuttleId = "funeral"
possible_destinations = "graveyard_church;graveyard_dock"
diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm
index cfa818d7cc0..9e56bf8bb21 100644
--- a/code/modules/awaymissions/mission_code/stationCollision.dm
+++ b/code/modules/awaymissions/mission_code/stationCollision.dm
@@ -163,22 +163,22 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
/*
* Modified Nar-Sie
*/
-/obj/singularity/narsie/sc_Narsie
+/obj/singularity/god/narsie/sc_Narsie
desc = "Your body becomes weak and your feel your mind slipping away as you try to comprehend what you know can't be possible."
move_self = 0 //Contianed narsie does not move!
grav_pull = 0 //Contained narsie does not pull stuff in!
var/uneatable = list(/turf/space, /obj/effect/overlay, /mob/living/simple_animal/hostile/construct)
//Override this to prevent no adminlog runtimes and admin warnings about a singularity without containment
-/obj/singularity/narsie/sc_Narsie/admin_investigate_setup()
+/obj/singularity/god/narsie/sc_Narsie/admin_investigate_setup()
return
-/obj/singularity/narsie/sc_Narsie/process()
+/obj/singularity/god/narsie/sc_Narsie/process()
eat()
if(prob(25))
mezzer()
-/obj/singularity/narsie/sc_Narsie/consume(atom/A)
+/obj/singularity/god/narsie/sc_Narsie/consume(atom/A)
if(!A.simulated)
return FALSE
if(is_type_in_list(A, uneatable))
@@ -201,5 +201,5 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
T.ChangeTurf(T.baseturf)
return
-/obj/singularity/narsie/sc_Narsie/ex_act()
+/obj/singularity/god/narsie/sc_Narsie/ex_act()
return
diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm
index e07985e3440..b86f94b8be1 100644
--- a/code/modules/awaymissions/mission_code/wildwest.dm
+++ b/code/modules/awaymissions/mission_code/wildwest.dm
@@ -34,14 +34,6 @@
name = "\improper Wild West Vault"
icon_state = "away3"
-/area/awaymission/wwvaultdoors
- name = "\improper Wild West Vault Doors" // this is to keep the vault area being entirely lit because of requires_power
- icon_state = "away2"
- requires_power = FALSE
- static_lighting = FALSE
- base_lighting_alpha = 255
- base_lighting_color = COLOR_WHITE
-
/*
* Wish Granter
*/
diff --git a/code/modules/client/preference/loadout/loadout_donor.dm b/code/modules/client/preference/loadout/loadout_donor.dm
index b7854bf2fc3..a5d99260b3a 100644
--- a/code/modules/client/preference/loadout/loadout_donor.dm
+++ b/code/modules/client/preference/loadout/loadout_donor.dm
@@ -236,6 +236,24 @@
cost = 1
allowed_roles = list(JOB_TITLE_REPRESENTATIVE)
+/datum/gear/donor/strip/syndi
+ display_name = "strip, Syndicate"
+ path = /obj/item/clothing/accessory/head_strip/syndicate
+ donator_tier = 3
+ cost = 1
+
+/datum/gear/donor/strip/comrad
+ display_name = "strip, SSSP"
+ path = /obj/item/clothing/accessory/head_strip/comrad
+ donator_tier = 3
+ cost = 1
+
+/datum/gear/donor/strip/federal
+ display_name = "strip, TSF"
+ path = /obj/item/clothing/accessory/head_strip/federal
+ donator_tier = 3
+ cost = 1
+
/datum/gear/donor/heartglasses
display_name = "heart-shaped glasses, color"
path = /obj/item/clothing/glasses/heart
@@ -247,6 +265,70 @@
..()
gear_tweaks += new /datum/gear_tweak/color(parent = src)
+/datum/gear/donor/heart_meson
+ display_name = "Heart Meson Glasses"
+ path = /obj/item/clothing/glasses/meson/heart
+ donator_tier = 4
+ cost = 2
+ slot = ITEM_SLOT_EYES
+ allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER, JOB_TITLE_ATMOSTECH, JOB_TITLE_MECHANIC, JOB_TITLE_QUARTERMASTER, JOB_TITLE_MINER, JOB_TITLE_CAPTAIN, JOB_TITLE_ENGINEER_TRAINEE)
+
+/datum/gear/donor/heart_science
+ display_name = "Heart Science Glasses"
+ path = /obj/item/clothing/glasses/science/heart
+ donator_tier = 4
+ cost = 2
+ slot = ITEM_SLOT_EYES
+ allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_SCIENTIST, JOB_TITLE_ROBOTICIST, JOB_TITLE_RD, JOB_TITLE_GENETICIST, JOB_TITLE_CHEMIST, JOB_TITLE_SCIENTIST_STUDENT)
+
+/datum/gear/donor/heart_health
+ display_name = "Heart Medical Glasses"
+ path = /obj/item/clothing/glasses/hud/health/heart
+ donator_tier = 4
+ cost = 2
+ slot = ITEM_SLOT_EYES
+ allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_CMO, JOB_TITLE_INTERN, JOB_TITLE_PARAMEDIC, JOB_TITLE_VIROLOGIST, JOB_TITLE_BLUESHIELD, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_DOCTOR, JOB_TITLE_CORONER)
+
+/datum/gear/donor/heart_diagnostic
+ display_name = "Heart Diagnostic Glasses"
+ path = /obj/item/clothing/glasses/hud/diagnostic/heart
+ donator_tier = 4
+ cost = 2
+ slot = ITEM_SLOT_EYES
+ allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_RD, JOB_TITLE_ROBOTICIST)
+
+/datum/gear/donor/heart_security
+ display_name = "Heart Security Glasses"
+ path = /obj/item/clothing/glasses/hud/security/sunglasses/heart
+ donator_tier = 4
+ cost = 2
+ slot = ITEM_SLOT_EYES
+ allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_DETECTIVE, JOB_TITLE_PILOT, JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_BLUESHIELD, JOB_TITLE_JUDGE, JOB_TITLE_OFFICER)
+
+/datum/gear/donor/heartsec_read
+ display_name = "Heart Security Glasses"
+ path = /obj/item/clothing/glasses/hud/security/sunglasses/heart/read_only
+ donator_tier = 4
+ cost = 2
+ slot = ITEM_SLOT_EYES
+ allowed_roles = list(JOB_TITLE_LAWYER)
+
+/datum/gear/donor/heart_hydroponic
+ display_name = "Heart Hydroponic Glasses"
+ path = /obj/item/clothing/glasses/hud/heart
+ donator_tier = 4
+ cost = 2
+ slot = ITEM_SLOT_EYES
+ allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_BOTANIST)
+
+/datum/gear/donor/heart_skills
+ display_name = "Heart Skills Glasses"
+ path = /obj/item/clothing/glasses/hud/skills/heart
+ donator_tier = 4
+ cost = 2
+ slot = ITEM_SLOT_EYES
+ allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_REPRESENTATIVE, JOB_TITLE_BLUESHIELD, JOB_TITLE_HOP)
+
/datum/gear/donor/night_dress
display_name = "night dress, select"
description = "A classic night dress."
@@ -338,6 +420,12 @@
donator_tier = 3
cost = 1
+/datum/gear/donor/earring_NT
+ display_name = "Earrings NT"
+ path = /obj/item/clothing/ears/earrings/Nt
+ donator_tier = 3
+ cost = 1
+
/datum/gear/donor/hijab
donator_tier = 1
cost = 1
@@ -398,3 +486,15 @@
display_name = "RD doll"
path = /obj/item/toy/plushie/rdplushie
+/datum/gear/donor/gsbplushie
+ donator_tier = 3
+ cost = 1
+ display_name = "GSBussy doll"
+ path = /obj/item/toy/plushie/gsbplushie
+
+/datum/gear/donor/backpack_shitsec
+ donator_tier = 3
+ cost = 1
+ display_name = "backpack of justice"
+ path = /obj/item/storage/backpack/justice
+ allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
diff --git a/code/modules/client/preference/loadout/loadout_general.dm b/code/modules/client/preference/loadout/loadout_general.dm
index 3cc4dfc056d..774e92169fe 100644
--- a/code/modules/client/preference/loadout/loadout_general.dm
+++ b/code/modules/client/preference/loadout/loadout_general.dm
@@ -32,6 +32,17 @@
display_name = "a cheap lighter"
path = /obj/item/lighter
+/datum/gear/earrings
+ display_name = "earrings, select"
+ path = /obj/item/clothing/ears/earrings
+
+/datum/gear/earrings/New()
+ ..()
+ var/list/earrings = list("silver" = /obj/item/clothing/ears/earrings/silver,
+ "gold" = /obj/item/clothing/ears/earrings
+ )
+ gear_tweaks += new /datum/gear_tweak/path(earrings, src)
+
/datum/gear/matches
display_name = "a box of matches"
path = /obj/item/storage/box/matches
diff --git a/code/modules/client/preference/loadout/loadout_glasses.dm b/code/modules/client/preference/loadout/loadout_glasses.dm
index dd7350aa640..7cb1fd8037b 100644
--- a/code/modules/client/preference/loadout/loadout_glasses.dm
+++ b/code/modules/client/preference/loadout/loadout_glasses.dm
@@ -43,3 +43,34 @@
display_name = "Security tactical glasses"
path = /obj/item/clothing/glasses/hud/security/sunglasses/tacticool
allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT)
+
+/datum/gear/glasses/medhudpatch
+ display_name = "Medical HUD eyepatch"
+ path = /obj/item/clothing/glasses/hud/health/patch
+ allowed_roles = list(JOB_TITLE_CMO, JOB_TITLE_DOCTOR, JOB_TITLE_INTERN, JOB_TITLE_CHEMIST, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_PARAMEDIC, JOB_TITLE_VIROLOGIST, JOB_TITLE_BRIGDOC, JOB_TITLE_CORONER)
+
+/datum/gear/glasses/sechudpatch
+ display_name = "Security HUD eyepatch"
+ path = /obj/item/clothing/glasses/hud/security/patch
+ allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT, JOB_TITLE_JUDGE, JOB_TITLE_DETECTIVE)
+
+/datum/gear/glasses/sechudpatch/read_only
+ display_name = "Security HUD eyepatch (read only)"
+ path = /obj/item/clothing/glasses/hud/security/patch/read_only
+ allowed_roles = list(JOB_TITLE_LAWYER)
+
+/datum/gear/glasses/hydrohudpatch
+ display_name = "Hydroponic HUD eyepatch"
+ path = /obj/item/clothing/glasses/hud/hydroponic/patch
+ allowed_roles = list(JOB_TITLE_BOTANIST)
+
+/datum/gear/glasses/diaghudpatch
+ display_name = "Diagnostic HUD eyepatch"
+ path = /obj/item/clothing/glasses/hud/diagnostic/patch
+ allowed_roles = list(JOB_TITLE_ROBOTICIST, JOB_TITLE_RD)
+
+/datum/gear/glasses/skillhudpatch
+ display_name = "Skills HUD eyepatch"
+ path = /obj/item/clothing/glasses/hud/skills/patch
+ allowed_roles = list(JOB_TITLE_HOP, JOB_TITLE_CAPTAIN)
+
diff --git a/code/modules/client/preference/loadout/loadout_shoes.dm b/code/modules/client/preference/loadout/loadout_shoes.dm
index dcd52436a80..8245e9371b7 100644
--- a/code/modules/client/preference/loadout/loadout_shoes.dm
+++ b/code/modules/client/preference/loadout/loadout_shoes.dm
@@ -71,17 +71,9 @@
path = /obj/item/clothing/shoes/leather_boots
/datum/gear/shoes/footwraps
- display_name = "cloth footwraps, select"
+ display_name = "cloth footwraps, color"
path = /obj/item/clothing/shoes/footwraps
/datum/gear/shoes/footwraps/New()
..()
- var/list/feet = list("classic" = /obj/item/clothing/shoes/footwraps,
- "yellow" = /obj/item/clothing/shoes/footwraps/yellow,
- "silver" = /obj/item/clothing/shoes/footwraps/silver,
- "red" = /obj/item/clothing/shoes/footwraps/red,
- "blue" = /obj/item/clothing/shoes/footwraps/blue,
- "black" = /obj/item/clothing/shoes/footwraps/black,
- "brown" = /obj/item/clothing/shoes/footwraps/brown,
- )
- gear_tweaks += new /datum/gear_tweak/path(feet, src)
+ gear_tweaks += new /datum/gear_tweak/color(parent = src)
diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm
index 473d6d5f907..7a371b75989 100644
--- a/code/modules/client/preference/preferences.dm
+++ b/code/modules/client/preference/preferences.dm
@@ -906,7 +906,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
html += "[rank]
Submit Personality | +[candidate.ready ? "Reset personality" : "Submit personality"] |