diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 3e2742de11..46e509cb8f 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -125,6 +125,9 @@ var/path_type = /obj/item/baseball_bat
var/path_type = "/obj/item/baseball_bat"
```
+### Use var/name format when declaring variables
+While DM allows other ways of declaring variables, this one should be used for consistency.
+
### Tabs, not spaces
You must use tabs to indent your code, NOT SPACES.
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index f1e726c515..3b1daafc62 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,3 +1,3 @@
-[Note]: # (Please enter the `Round ID` from the `Status` panel if you can! If you believe the issue to be caused by a testmerge, please report it in its relative PR thread. State what the issue is from a "whats wrong" prospective. Issue reports should clearly allow maintainers to understand whats wrong and how to test/reproduce if that is not obvious. Avoid ambiguity. Start your issue report below both of these lines (or remove them))
+[Directions]: # (Include the Round ID from the Status panel or retrieve it from https://atlantaned.space/newSS13tools/round.php ! If you believe the issue to be caused by a testmerge [OOC tab -> Show Server Revision], report it in the pull request's comment section instead. Explain your issue in detail, including the steps to reproduce it.)
-[Admins]: # (If you are reporting a bug that occured AFTER you used varedit/admin buttons to alter an object out of normal operating conditions, please verify that you can re-create the bug without the varedit usage/admin buttons before reporting the issue.)
+[For Admins]: # (Oddities induced by var-edits and other admin tools are not necessarily bugs. Verify that your issues occur under regular circumstances before reporting them.)
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index f67f095a4f..1332358e04 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,5 +1,4 @@
-[Changelogs]: # (Please make a changelog if you're adding, removing or changing content that'll affect players. This includes, but is not limited to, new features, sprites, sounds; balance changes; map edits and important fixes)
-[]: # (See here for how to easily make a changelog: https://github.com/tgstation/tgstation/wiki/Changelogs. An example changelog has been provided below. Please edit or remove)
+[Changelogs]: # (Please make a changelog if you're adding, removing or changing content that'll affect players. This includes, but is not limited to, new features, sprites, sounds; balance changes; map edits and important fixes. An example changelog has been provided below for you to edit or remove. If you need help, read https://github.com/tgstation/tgstation/wiki/Changelogs)
:cl: optional name here
@@ -18,4 +17,4 @@ spellcheck: fixed a few typos
experiment: added an experimental thingy
/:cl:
-[why]: # (Please add a short description [on the next line] of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding:)
+[why]: # (Please add a short description [two lines down] of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding.)
diff --git a/.travis.yml b/.travis.yml
index ba11b40c97..b353761b2d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,5 @@
language: generic
sudo: false
-dist: precise
-
env:
global:
- BYOND_MAJOR="511"
@@ -23,12 +21,15 @@ cache:
addons:
apt:
+ sources:
+ - sourceline: 'ppa:ondrej/php'
packages:
- libc6-i386
- libgcc1:i386
- libstdc++6:i386
- python
- python-pip
+ - php5.6
install:
- tools/travis/install_build_tools.sh
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
index d02d4ced34..214ff213c8 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
@@ -1,4 +1,4 @@
-//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/turf/template_noop,
/area/template_noop)
@@ -47,7 +47,7 @@
/area/ruin/powered/animal_hospital)
"al" = (
/obj/structure/table/wood,
-/obj/item/toy/carpplushie,
+/obj/item/toy/plush/carpplushie,
/turf/open/floor/plasteel/cmo,
/area/ruin/powered/animal_hospital)
"am" = (
@@ -166,7 +166,7 @@
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"aF" = (
-/obj/machinery/door/unpowered/shuttle{
+/obj/machinery/door/airlock/shuttle{
name = "Restroom"
},
/turf/open/floor/plasteel/bar,
@@ -263,6 +263,9 @@
/area/ruin/powered/animal_hospital)
"aX" = (
/obj/item/stack/cable_coil/random,
+/obj/item/stack/sheet/mineral/titanium{
+ amount = 30
+ },
/turf/open/floor/plating,
/area/ruin/powered/animal_hospital)
"aY" = (
@@ -335,6 +338,9 @@
/area/ruin/powered/animal_hospital)
"bk" = (
/obj/structure/reagent_dispensers/fueltank,
+/obj/item/device/flashlight/glowstick/blue,
+/obj/item/device/flashlight/glowstick/blue,
+/obj/item/device/flashlight/glowstick/blue,
/turf/open/floor/plating,
/area/ruin/powered/animal_hospital)
"bl" = (
@@ -373,16 +379,15 @@
},
/area/ruin/powered/animal_hospital)
"bn" = (
-/obj/structure/bed/dogbed,
-/obj/machinery/light/small{
- dir = 1
+/obj/machinery/sleeper{
+ dir = 4
},
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"bo" = (
-/obj/item/reagent_containers/glass/bowl,
-/obj/item/reagent_containers/food/snacks/cheesewedge,
-/obj/item/reagent_containers/food/snacks/cheesewedge,
+/obj/machinery/light/small{
+ dir = 1
+ },
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"bp" = (
@@ -420,10 +425,8 @@
},
/area/ruin/powered/animal_hospital)
"bv" = (
-/obj/effect/mob_spawn/mouse{
- dir = 4;
- flavour_text = "You're a mousey! You're getting pretty old as mice go, and you haven't been feeling well as of late. Your master loves you a lot so he took you to this place so you can get better! You can't wait to see him again!";
- mob_name = "Stallman Jr."
+/obj/effect/mob_spawn/human/doctor/alive/lavaland{
+ dir = 4
},
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
@@ -433,8 +436,7 @@
/area/ruin/powered/animal_hospital)
"bx" = (
/obj/machinery/door/airlock/medical{
- name = "Patient Room";
- req_access_txt = "0"
+ name = "Rejuvenation Pods"
},
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
@@ -468,12 +470,11 @@
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"bD" = (
-/obj/structure/table/glass,
-/obj/item/reagent_containers/glass/bottle/cyanide{
- desc = "A cocktail of chemotherapy drugs intended to treat bladder cancer.";
- name = "MVAC regimen"
+/mob/living/simple_animal/bot/medbot{
+ desc = "A little medical robot. It's programmed to only act in emergencies.";
+ heal_threshold = 40;
+ name = "emergency Medibot"
},
-/obj/item/reagent_containers/syringe,
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"bE" = (
@@ -553,16 +554,12 @@
},
/area/lavaland/surface/outdoors)
"bP" = (
-/obj/structure/chair/office/light{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
+/obj/structure/table/glass,
+/obj/item/storage/firstaid/fire,
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"bQ" = (
-/obj/structure/table/glass,
-/obj/item/clothing/neck/petcollar,
-/obj/item/pen/blue,
+/obj/machinery/light/small,
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"bR" = (
@@ -582,6 +579,8 @@
/obj/item/defibrillator/loaded,
/obj/item/storage/belt/medical,
/obj/item/clothing/glasses/hud/health,
+/obj/item/clothing/glasses/hud/health,
+/obj/item/clothing/glasses/hud/health,
/turf/open/floor/plasteel/blue/side{
dir = 6
},
@@ -664,46 +663,46 @@
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"cg" = (
-/obj/machinery/door/unpowered/shuttle{
+/obj/machinery/door/airlock/shuttle{
name = "Break Room"
},
/turf/open/floor/plasteel/cmo,
/area/ruin/powered/animal_hospital)
"ch" = (
-/obj/machinery/door/unpowered/shuttle{
- name = "Emergency Care"
+/obj/machinery/door/airlock/shuttle{
+ name = "Operating Theatre"
},
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"ci" = (
-/obj/machinery/door/unpowered/shuttle{
- desc = "There's a note wedged in the seam saying something about directing pizza here.";
+/obj/structure/fans/tiny/invisible,
+/obj/machinery/door/airlock/shuttle{
+ desc = "There's a smudged note wedged into it that says something about pizza dropoffs.";
name = "Staff Entrance"
},
-/obj/structure/fans/tiny/invisible,
/turf/open/floor/plating,
/area/ruin/powered/animal_hospital)
"cj" = (
-/obj/machinery/door/unpowered/shuttle{
+/obj/machinery/door/airlock/shuttle{
name = "Morgue"
},
/turf/open/floor/plating,
/area/ruin/powered/animal_hospital)
"ck" = (
-/obj/machinery/door/unpowered/shuttle{
+/obj/machinery/door/airlock/shuttle{
name = "Medical Supplies"
},
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"cl" = (
-/obj/machinery/door/unpowered/shuttle{
+/obj/machinery/door/airlock/shuttle{
name = "Safety Supplies"
},
/turf/open/floor/plasteel/white,
/area/ruin/powered/animal_hospital)
"cm" = (
-/obj/machinery/door/unpowered/shuttle{
- name = "Tool Storage"
+/obj/machinery/door/airlock/shuttle{
+ name = "Storage"
},
/turf/open/floor/plating,
/area/ruin/powered/animal_hospital)
@@ -811,6 +810,33 @@
/obj/effect/baseturf_helper/lava_land/surface,
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/ruin/powered/animal_hospital)
+"cG" = (
+/obj/machinery/door/airlock/shuttle{
+ desc = "There's a smudged note wedged into it that says something about pizza dropoffs.";
+ name = "Staff Entrance"
+ },
+/turf/open/floor/plasteel/cmo,
+/area/ruin/powered/animal_hospital)
+"cH" = (
+/mob/living/simple_animal/bot/cleanbot,
+/turf/open/floor/plasteel/blue/side{
+ dir = 0
+ },
+/area/ruin/powered/animal_hospital)
+"cI" = (
+/obj/structure/table/glass,
+/obj/item/storage/firstaid/toxin,
+/turf/open/floor/plasteel/white,
+/area/ruin/powered/animal_hospital)
+"cJ" = (
+/obj/machinery/sleeper{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 8
+ },
+/turf/open/floor/plasteel/white,
+/area/ruin/powered/animal_hospital)
(1,1,1) = {"
aa
@@ -1037,7 +1063,7 @@ cw
ae
aV
ba
-bh
+cI
aG
aL
br
@@ -1092,7 +1118,7 @@ aj
at
as
ae
-ct
+aL
aK
ck
ao
@@ -1122,7 +1148,7 @@ ak
as
az
ae
-aM
+cv
aP
ae
ae
@@ -1152,7 +1178,7 @@ al
au
as
ae
-ct
+aL
aK
cl
ao
@@ -1181,9 +1207,9 @@ ae
am
cs
as
-cg
+cG
aK
-aP
+cH
ae
aW
ao
@@ -1249,12 +1275,12 @@ ae
ae
ae
ae
+bh
+bv
+bv
+cJ
bn
bv
-bC
-ae
-bn
-bN
bP
ae
cE
@@ -1280,10 +1306,10 @@ be
bk
ae
bo
-bw
+ao
bD
-ae
-bK
+ao
+ao
ao
bQ
ae
@@ -1311,11 +1337,11 @@ ae
ae
af
bx
-ae
+af
ae
af
bx
-ae
+af
ae
aa
aa
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
index 3c7cb364c6..5d192d2a7c 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
@@ -76,8 +76,7 @@
/area/ruin/powered/syndicate_lava_base)
"al" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/vault,
/area/ruin/powered/syndicate_lava_base)
@@ -320,8 +319,7 @@
/area/ruin/powered/syndicate_lava_base)
"aS" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/vault{
dir = 5
@@ -413,8 +411,7 @@
/area/ruin/powered/syndicate_lava_base)
"bd" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/light/small,
/turf/open/floor/plasteel/black,
@@ -702,8 +699,7 @@
/area/ruin/powered/syndicate_lava_base)
"bK" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/vault{
dir = 8
@@ -969,8 +965,7 @@
/area/ruin/powered/syndicate_lava_base)
"cq" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/podhatch{
dir = 5
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm
index 588000378b..14ef2b80cd 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm
@@ -48,7 +48,7 @@
/area/ruin/unpowered)
"j" = (
/obj/machinery/abductor/experiment{
- team = 100
+ team_number = 100
},
/turf/open/floor/plating/abductor{
initial_gas_mix = "o2=16;n2=23;TEMP=300"
@@ -61,7 +61,7 @@
/area/ruin/unpowered)
"l" = (
/obj/machinery/abductor/pad{
- team = 100
+ team_number = 100
},
/turf/open/floor/plating/abductor{
initial_gas_mix = "o2=16;n2=23;TEMP=300"
diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm
index f9144cd3ef..a083ac48f6 100644
--- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm
+++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm
@@ -252,7 +252,9 @@
/turf/open/floor/plating/airless,
/area/template_noop)
"aF" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/obj/structure/window/reinforced,
/turf/open/floor/plating,
/area/ruin/space/derelict/solar_control)
@@ -416,7 +418,9 @@
/turf/open/floor/plasteel,
/area/ruin/space/derelict/solar_control)
"bc" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/ruin/space/derelict/solar_control)
"bd" = (
@@ -985,7 +989,9 @@
/turf/open/floor/plating,
/area/ruin/space/derelict/bridge/access)
"cU" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/ruin/space/derelict/bridge/access)
"cV" = (
@@ -1018,11 +1024,15 @@
/turf/open/floor/plasteel,
/area/ruin/space/derelict/bridge/access)
"cY" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 10
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/gravity_generator)
"cZ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/gravity_generator)
"da" = (
@@ -1033,11 +1043,15 @@
/turf/open/floor/plasteel,
/area/ruin/space/derelict/gravity_generator)
"db" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/gravity_generator)
"dc" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 5
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/gravity_generator)
"dd" = (
@@ -1488,15 +1502,19 @@
/turf/open/floor/plating/airless,
/area/ruin/unpowered/no_grav)
"ev" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional,
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"ew" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 6
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"ex" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 4
+ },
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 8
@@ -1663,7 +1681,9 @@
/turf/template_noop,
/area/template_noop)
"eW" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 9
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"eX" = (
@@ -1697,11 +1717,15 @@
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"fc" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"fd" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 5
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"fe" = (
@@ -1783,7 +1807,9 @@
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/bridge)
"fq" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 8
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"fr" = (
@@ -1807,7 +1833,9 @@
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"ft" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"fu" = (
@@ -1890,7 +1918,9 @@
},
/area/ruin/space/derelict/singularity_engine)
"fI" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 10
+ },
/turf/open/floor/plasteel/airless{
icon_state = "damaged2"
},
@@ -2128,7 +2158,9 @@
},
/area/ruin/space/derelict/singularity_engine)
"gt" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 9
+ },
/obj/item/shard{
icon_state = "medium"
},
@@ -2146,7 +2178,9 @@
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"gw" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"gx" = (
@@ -2194,7 +2228,9 @@
},
/area/ruin/unpowered/no_grav)
"gE" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"gF" = (
@@ -2292,7 +2328,9 @@
/turf/closed/wall,
/area/ruin/space/derelict/singularity_engine)
"gZ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 10
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/singularity_engine)
"ha" = (
@@ -2408,7 +2446,9 @@
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/medical)
"hx" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/medical)
"hy" = (
@@ -2691,7 +2731,9 @@
/turf/template_noop,
/area/template_noop)
"iu" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 6
+ },
/turf/template_noop,
/area/template_noop)
"iv" = (
@@ -3129,7 +3171,9 @@
/turf/open/floor/plating,
/area/ruin/space/derelict/arrival)
"jK" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/ruin/space/derelict/arrival)
"jL" = (
@@ -3548,11 +3592,15 @@
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/hallway/primary)
"kP" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/hallway/primary)
"kQ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/hallway/primary)
"kR" = (
@@ -3772,7 +3820,9 @@
/turf/open/floor/plasteel/airless,
/area/ruin/unpowered/no_grav)
"lD" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/ruin/unpowered/no_grav)
"lE" = (
@@ -3850,7 +3900,9 @@
/turf/open/floor/plasteel/airless,
/area/ruin/unpowered/no_grav)
"lR" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/ruin/unpowered/no_grav)
"lS" = (
@@ -4062,7 +4114,9 @@
/turf/open/floor/plasteel/airless,
/area/ruin/space/derelict/hallway/secondary)
"mD" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/hallway/secondary)
"mE" = (
@@ -4174,7 +4228,9 @@
/turf/open/floor/plasteel/airless,
/area/ruin/space/derelict/hallway/secondary)
"mY" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/hallway/secondary)
"mZ" = (
@@ -4366,7 +4422,7 @@
/turf/template_noop,
/area/ruin/space/derelict/hallway/secondary)
"ny" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional,
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/hallway/secondary)
"nz" = (
@@ -4417,7 +4473,9 @@
/turf/open/floor/plasteel/airless,
/area/ruin/space/derelict/hallway/secondary)
"nH" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/derelict/hallway/secondary)
"nI" = (
diff --git a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm
index 11dcb8561f..c08a68b6c7 100644
--- a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm
+++ b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm
@@ -36,11 +36,15 @@
/turf/open/floor/plating/airless,
/area/ruin/space/abandoned_tele)
"j" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/abandoned_tele)
"k" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/abandoned_tele)
"l" = (
@@ -78,7 +82,9 @@
/turf/open/floor/plating/airless,
/area/ruin/space/abandoned_tele)
"t" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/ruin/space/abandoned_tele)
"u" = (
diff --git a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm
index 819e11bb0e..66c738fb77 100644
--- a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm
+++ b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm
@@ -743,10 +743,7 @@
/turf/open/floor/plasteel/darkgreen,
/area/ruin/space/has_grav/abandonedzoo)
"bN" = (
-/obj/structure/grille{
- density = 0;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/item/shard{
icon_state = "small"
},
@@ -799,10 +796,7 @@
/turf/open/floor/plating/airless,
/area/ruin/space/has_grav/abandonedzoo)
"bU" = (
-/obj/structure/grille{
- density = 0;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/turf/open/floor/plating/airless,
/area/ruin/space/has_grav/abandonedzoo)
"bV" = (
diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
index d2a416bba2..2f395e4f1c 100644
--- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
+++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm
@@ -590,9 +590,9 @@
"bW" = (
/obj/structure/closet/crate/secure/gear,
/obj/item/ammo_box/c10mm,
-/obj/item/ammo_casing/shotgun/meteorshot,
-/obj/item/ammo_casing/shotgun/meteorshot,
-/obj/item/ammo_casing/shotgun/meteorshot,
+/obj/item/ammo_casing/shotgun/meteorslug,
+/obj/item/ammo_casing/shotgun/meteorslug,
+/obj/item/ammo_casing/shotgun/meteorslug,
/turf/open/floor/mineral/titanium/yellow/airless,
/area/ruin/unpowered)
"bX" = (
diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm
index f577ec5143..5016189876 100644
--- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm
+++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm
@@ -17,7 +17,9 @@
/turf/closed/wall/mineral/titanium/overspace,
/area/awaymission/BMPship/Aft)
"af" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/engine,
/area/awaymission/BMPship/Aft)
"ag" = (
@@ -38,7 +40,9 @@
/turf/open/floor/plating,
/area/awaymission/BMPship/Aft)
"aj" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/awaymission/BMPship/Aft)
"ak" = (
@@ -54,7 +58,9 @@
/area/template_noop)
"an" = (
/obj/structure/window/reinforced,
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/awaymission/BMPship/Aft)
"ao" = (
@@ -224,7 +230,9 @@
/turf/open/floor/plating,
/area/awaymission/BMPship/Aft)
"aQ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/awaymission/BMPship/Fore)
"aR" = (
@@ -350,7 +358,9 @@
/turf/open/floor/plating,
/area/awaymission/BMPship/Aft)
"bl" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/awaymission/BMPship/Fore)
"bm" = (
@@ -394,7 +404,9 @@
/area/awaymission/BMPship/Aft)
"bt" = (
/obj/structure/window/reinforced,
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/awaymission/BMPship/Fore)
"bu" = (
@@ -1165,7 +1177,9 @@
/turf/open/floor/plasteel,
/area/awaymission/BMPship/Aft)
"dG" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/BMPship/Fore)
"dH" = (
@@ -1372,7 +1386,9 @@
/turf/open/floor/plasteel,
/area/awaymission/BMPship/Aft)
"ed" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/BMPship/Fore)
"ee" = (
@@ -1592,7 +1608,9 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/effect/spawner/structure/window/hollow/reinforced/corner,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 6
+ },
/turf/open/floor/plating,
/area/awaymission/BMPship/Fore)
"eI" = (
@@ -2115,7 +2133,9 @@
/turf/open/floor/plasteel,
/area/awaymission/BMPship/Aft)
"gk" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/awaymission/BMPship/Fore)
"gl" = (
@@ -2247,7 +2267,9 @@
/turf/open/floor/plating/asteroid/airless,
/area/awaymission/BMPship)
"gF" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 4
+ },
/obj/item/shard{
icon_state = "small"
},
@@ -2308,7 +2330,9 @@
/turf/open/floor/plating/asteroid/airless,
/area/awaymission/BMPship)
"gR" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 6
+ },
/turf/open/floor/plating/airless,
/area/awaymission/BMPship/Fore)
"gS" = (
@@ -2448,7 +2472,9 @@
/turf/open/floor/plating/asteroid/airless,
/area/awaymission/BMPship)
"ho" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/engine,
/area/awaymission/BMPship/Aft)
"hp" = (
diff --git a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm
index 193242e689..dab408a8b1 100644
--- a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm
@@ -451,11 +451,15 @@
/turf/open/floor/plasteel/airless/black,
/area/tcommsat/chamber)
"bA" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating/airless,
/area/tcommsat/chamber)
"bB" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/tcommsat/chamber)
"bC" = (
@@ -463,7 +467,9 @@
/turf/open/floor/plating/airless,
/area/tcommsat/chamber)
"bD" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/tcommsat/chamber)
"bE" = (
@@ -512,7 +518,9 @@
/turf/open/floor/plasteel/airless/black,
/area/tcommsat/chamber)
"bK" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 9
+ },
/turf/open/floor/plating,
/area/tcommsat/chamber)
"bL" = (
@@ -520,7 +528,9 @@
/turf/open/floor/plating,
/area/tcommsat/chamber)
"bM" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/tcommsat/chamber)
"bN" = (
@@ -540,7 +550,9 @@
/turf/open/floor/plasteel/airless/black,
/area/tcommsat/chamber)
"bP" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/tcommsat/chamber)
"bQ" = (
@@ -553,7 +565,9 @@
/turf/open/floor/plasteel/airless/black,
/area/tcommsat/chamber)
"bS" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/obj/structure/window/reinforced,
/turf/open/floor/plating,
/area/tcommsat/chamber)
@@ -609,7 +623,9 @@
/turf/open/floor/plasteel/airless/black,
/area/tcommsat/chamber)
"cc" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/tcommsat/chamber)
"cd" = (
@@ -632,7 +648,9 @@
/turf/open/floor/plasteel/airless/black,
/area/tcommsat/chamber)
"ch" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 10
+ },
/turf/open/floor/plating,
/area/tcommsat/chamber)
"ci" = (
diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 32ed7321e7..8e636c03f9 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -53,7 +53,9 @@
/turf/closed/wall/rust,
/area/ruin/space/has_grav/ancientstation/comm)
"al" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/obj/machinery/door/poddoor{
id = "ancient"
},
@@ -67,7 +69,9 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/comm)
"an" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/obj/machinery/door/poddoor{
id = "ancient"
},
@@ -483,11 +487,15 @@
/turf/closed/wall/rust,
/area/ruin/space/has_grav/ancientstation/comm)
"bz" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/comm)
"bA" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/comm)
"bB" = (
@@ -900,7 +908,9 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
"cK" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/template_noop)
"cL" = (
@@ -946,7 +956,9 @@
/turf/closed/wall/rust,
/area/ruin/space/has_grav/ancientstation/hydroponics)
"cR" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/hydroponics)
"cS" = (
@@ -954,7 +966,9 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/hydroponics)
"cT" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/hydroponics)
"cU" = (
@@ -1794,7 +1808,9 @@
/turf/open/floor/plating/airless,
/area/template_noop)
"fb" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/engi)
"fc" = (
@@ -1978,7 +1994,9 @@
/turf/open/floor/plating/airless,
/area/template_noop)
"fB" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/engi)
"fC" = (
@@ -1986,7 +2004,9 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/engi)
"fD" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 6
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/engi)
"fE" = (
@@ -2805,7 +2825,9 @@
/turf/open/floor/plasteel/airless/floorgrime,
/area/template_noop)
"gV" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 5
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/engi)
"gW" = (
@@ -2869,7 +2891,9 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
"hf" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/rnd)
@@ -2879,7 +2903,9 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/rnd)
"hh" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/rnd)
@@ -3736,7 +3762,9 @@
/turf/closed/wall/rust,
/area/ruin/space/has_grav/ancientstation/engi)
"iY" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/kitchen)
"iZ" = (
@@ -3744,7 +3772,9 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/kitchen)
"ja" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/kitchen)
"jb" = (
@@ -4069,11 +4099,15 @@
/turf/open/floor/plating/airless,
/area/template_noop)
"jS" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation)
"jT" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation)
"jU" = (
@@ -4227,7 +4261,9 @@
/turf/open/floor/engine/airless,
/area/ruin/space/has_grav/ancientstation/atmo)
"ko" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating/airless,
/area/template_noop)
"kp" = (
@@ -4238,7 +4274,7 @@
dir = 6
},
/obj/effect/decal/cleanable/dirt,
-/obj/structure/showcase/oldpod,
+/obj/structure/showcase/machinery/oldpod,
/turf/open/floor/plasteel/floorgrime,
/area/ruin/space/has_grav/ancientstation)
"kq" = (
@@ -4250,7 +4286,7 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/structure/showcase/oldpod,
+/obj/structure/showcase/machinery/oldpod,
/turf/open/floor/plasteel/floorgrime,
/area/ruin/space/has_grav/ancientstation)
"kr" = (
@@ -4329,7 +4365,9 @@
/turf/open/floor/engine/airless,
/area/ruin/space/has_grav/ancientstation/atmo)
"kB" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/template_noop)
"kC" = (
@@ -4583,11 +4621,15 @@
/turf/closed/mineral/plasma,
/area/ruin/unpowered)
"li" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/proto)
"lj" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation/proto)
"lk" = (
diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm
index 16d0d80887..dd653c3947 100644
--- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm
+++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm
@@ -1225,10 +1225,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/onehalf/bridge)
"dc" = (
-/obj/structure/grille{
- density = 0;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/structure/cable{
d1 = 1;
d2 = 2;
diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm
index f62787babf..e652a73e95 100644
--- a/_maps/RandomZLevels/centcomAway.dmm
+++ b/_maps/RandomZLevels/centcomAway.dmm
@@ -9,7 +9,9 @@
/turf/closed/wall/r_wall,
/area/awaymission/centcomAway/cafe)
"ad" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/cafe)
"ae" = (
@@ -17,7 +19,9 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/cafe)
"af" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/cafe)
"ag" = (
@@ -101,7 +105,9 @@
},
/area/awaymission/centcomAway/cafe)
"at" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/cafe)
"au" = (
@@ -136,7 +142,9 @@
},
/area/awaymission/centcomAway/cafe)
"aB" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/cafe)
"aC" = (
@@ -223,7 +231,9 @@
},
/area/awaymission/centcomAway/maint)
"aS" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/closed/wall/r_wall,
/area/awaymission/centcomAway/maint)
"aT" = (
@@ -231,7 +241,9 @@
/turf/closed/wall/r_wall,
/area/awaymission/centcomAway/maint)
"aU" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/closed/wall/r_wall,
/area/awaymission/centcomAway/maint)
"aV" = (
@@ -582,7 +594,9 @@
/turf/open/floor/plasteel/hydrofloor,
/area/awaymission/centcomAway/cafe)
"ci" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/maint)
"cj" = (
@@ -632,7 +646,9 @@
/turf/open/floor/plasteel/hydrofloor,
/area/awaymission/centcomAway/cafe)
"cu" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/maint)
"cv" = (
@@ -1016,11 +1032,15 @@
/turf/closed/wall/mineral/titanium,
/area/awaymission/centcomAway/hangar)
"dS" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/cafe)
"dT" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/cafe)
"dU" = (
@@ -1178,7 +1198,9 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/maint)
"ey" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/maint)
"ez" = (
@@ -1387,7 +1409,9 @@
/turf/open/floor/plasteel/black,
/area/awaymission/centcomAway/courtroom)
"fn" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/hangar)
"fo" = (
@@ -1395,7 +1419,9 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/hangar)
"fp" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/hangar)
"fq" = (
@@ -1415,7 +1441,9 @@
/turf/closed/wall/r_wall,
/area/awaymission/centcomAway/general)
"fu" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"fv" = (
@@ -1423,11 +1451,15 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"fw" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"fx" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"fy" = (
@@ -1618,11 +1650,15 @@
},
/area/awaymission/centcomAway/general)
"gd" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 9
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"ge" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"gf" = (
@@ -1637,7 +1673,9 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"gh" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 5
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"gi" = (
@@ -1808,7 +1846,9 @@
/turf/open/floor/plasteel/black,
/area/awaymission/centcomAway/general)
"gM" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"gN" = (
@@ -1868,7 +1908,9 @@
},
/area/awaymission/centcomAway/general)
"gX" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"gY" = (
@@ -1973,11 +2015,15 @@
},
/area/awaymission/centcomAway/general)
"hq" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/closed/wall/r_wall,
/area/awaymission/centcomAway/courtroom)
"hr" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/courtroom)
"hs" = (
@@ -1985,7 +2031,9 @@
/turf/open/floor/carpet,
/area/awaymission/centcomAway/courtroom)
"ht" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/courtroom)
"hu" = (
@@ -2049,7 +2097,9 @@
/turf/open/floor/plasteel/black,
/area/awaymission/centcomAway/courtroom)
"hF" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/courtroom)
"hG" = (
@@ -2279,7 +2329,9 @@
/turf/closed/wall/r_wall,
/area/awaymission/centcomAway/courtroom)
"ix" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/closed/wall/r_wall,
/area/awaymission/centcomAway/courtroom)
"iy" = (
@@ -2309,7 +2361,9 @@
},
/area/awaymission/centcomAway/hangar)
"iC" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"iD" = (
@@ -2658,7 +2712,9 @@
},
/area/awaymission/centcomAway/general)
"jH" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plasteel{
name = "plating"
},
@@ -2670,13 +2726,17 @@
},
/area/awaymission/centcomAway/general)
"jJ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plasteel{
name = "plating"
},
/area/awaymission/centcomAway/general)
"jK" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/obj/structure/window/reinforced,
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
@@ -2736,7 +2796,9 @@
/turf/open/floor/plasteel,
/area/awaymission/centcomAway/general)
"jT" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"jU" = (
@@ -2785,7 +2847,9 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/hangar)
"kb" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"kc" = (
@@ -2846,12 +2910,16 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"kl" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/obj/structure/window/reinforced,
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"km" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"kn" = (
@@ -2904,7 +2972,9 @@
},
/area/awaymission/centcomAway/general)
"kv" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 10
+ },
/obj/structure/window/reinforced{
dir = 4
},
@@ -3015,7 +3085,9 @@
},
/area/awaymission/centcomAway/general)
"kM" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/general)
"kN" = (
@@ -3218,7 +3290,9 @@
/turf/open/floor/plasteel/black,
/area/awaymission/centcomAway/thunderdome)
"lw" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/thunderdome)
"lx" = (
@@ -3226,7 +3300,9 @@
/turf/open/floor/plating,
/area/awaymission/centcomAway/thunderdome)
"ly" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/centcomAway/thunderdome)
"lz" = (
diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/challenge.dmm
index a50ac00aab..f22805b750 100644
--- a/_maps/RandomZLevels/challenge.dmm
+++ b/_maps/RandomZLevels/challenge.dmm
@@ -248,11 +248,15 @@
/turf/open/floor/plating/airless,
/area/awaymission/challenge/main)
"aY" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 8
+ },
/turf/open/floor/plating/airless,
/area/awaymission/challenge/main)
"aZ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating/airless,
/area/awaymission/challenge/main)
"ba" = (
@@ -874,7 +878,9 @@
/turf/open/space,
/area/space)
"cM" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 9
+ },
/turf/open/floor/plating,
/area/awaymission/challenge/end)
"cN" = (
@@ -882,11 +888,15 @@
/turf/open/floor/plating,
/area/awaymission/challenge/end)
"cO" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 5
+ },
/turf/open/floor/plating,
/area/awaymission/challenge/end)
"cP" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/challenge/end)
"cQ" = (
@@ -1044,7 +1054,9 @@
/turf/open/floor/plasteel/black,
/area/awaymission/challenge/end)
"dl" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/challenge/end)
"dm" = (
diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm
index 44c5d01da5..4c9a995864 100644
--- a/_maps/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/RandomZLevels/moonoutpost19.dmm
@@ -1922,11 +1922,7 @@
name = "Syndicate Outpost"
})
"cG" = (
-/obj/structure/grille{
- density = 0;
- broken = 1;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/item/stack/rods,
/obj/item/stack/rods,
/obj/item/shard,
@@ -4885,11 +4881,7 @@
name = "MO19 Research"
})
"gE" = (
-/obj/structure/grille{
- density = 0;
- broken = 1;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/item/stack/rods,
/obj/item/stack/rods,
/obj/item/shard,
@@ -5523,11 +5515,7 @@
name = "MO19 Research"
})
"hx" = (
-/obj/structure/grille{
- density = 0;
- broken = 1;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/item/stack/rods,
/obj/item/stack/rods,
/obj/item/shard{
@@ -6778,7 +6766,6 @@
"jq" = (
/obj/item/twohanded/required/kirbyplants{
desc = "A plastic potted plant.";
- layer = 4.1;
pixel_y = 3
},
/turf/open/floor/plasteel{
@@ -7787,11 +7774,7 @@
})
"kP" = (
/obj/item/stack/rods,
-/obj/structure/grille{
- density = 0;
- broken = 1;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/item/stack/rods,
/obj/item/shard{
icon_state = "medium"
@@ -7805,11 +7788,7 @@
name = "MO19 Arrivals"
})
"kQ" = (
-/obj/structure/grille{
- density = 0;
- broken = 1;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/item/stack/rods,
/turf/open/floor/plating{
broken = 1;
@@ -9320,11 +9299,7 @@
name = "MO19 Arrivals"
})
"ns" = (
-/obj/structure/grille{
- density = 0;
- broken = 1;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/item/stack/rods,
/turf/open/floor/plating{
heat_capacity = 1e+006
@@ -9470,11 +9445,7 @@
poweralm = 0
})
"nD" = (
-/obj/structure/grille{
- density = 0;
- broken = 1;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/item/stack/rods,
/obj/item/shard,
/obj/effect/decal/cleanable/blood/tracks{
@@ -9809,7 +9780,6 @@
"ob" = (
/obj/item/twohanded/required/kirbyplants{
desc = "A plastic potted plant.";
- layer = 4.1;
pixel_y = 3
},
/turf/open/floor/plasteel/neutral/side{
@@ -9933,11 +9903,7 @@
poweralm = 0
})
"oj" = (
-/obj/structure/grille{
- density = 0;
- broken = 1;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/turf/open/floor/mineral/titanium,
/area/awaycontent/a3{
always_unpowered = 1;
diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm
index 0841c32e24..9a85544ca9 100644
--- a/_maps/RandomZLevels/research.dmm
+++ b/_maps/RandomZLevels/research.dmm
@@ -119,7 +119,6 @@
"ax" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-20";
- layer = 4.1;
pixel_y = 3
},
/turf/open/floor/plasteel/whiteyellow/corner{
@@ -1317,8 +1316,7 @@
/area/awaymission/research/interior/secure)
"dN" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-16";
- layer = 4.1
+ icon_state = "plant-16"
},
/turf/open/floor/plasteel/darkpurple,
/area/awaymission/research/interior/genetics)
@@ -2824,8 +2822,7 @@
/area/awaymission/research/interior/genetics)
"hV" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/darkpurple,
/area/awaymission/research/interior/genetics)
@@ -3306,8 +3303,7 @@
/area/awaymission/research/interior/dorm)
"jm" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-14";
- layer = 4.1
+ icon_state = "plant-14"
},
/turf/open/floor/plasteel/yellowsiding{
dir = 9
@@ -4053,8 +4049,7 @@
/area/awaymission/research/interior/medbay)
"ly" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-16";
- layer = 4.1
+ icon_state = "plant-16"
},
/turf/open/floor/plasteel/yellowsiding{
dir = 10
@@ -4459,9 +4454,7 @@
},
/area/awaymission/research/interior/escapepods)
"mJ" = (
-/obj/item/twohanded/required/kirbyplants{
- layer = 4.1
- },
+/obj/item/twohanded/required/kirbyplants,
/turf/open/floor/plasteel/whitegreen/side{
dir = 8
},
@@ -4495,8 +4488,7 @@
/area/awaymission/research/interior/escapepods)
"mN" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "applebush";
- layer = 4.1
+ icon_state = "applebush"
},
/turf/open/floor/plasteel/whitegreen/side{
dir = 4
diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm
index a18c9f18c8..e77a80ec67 100644
--- a/_maps/RandomZLevels/snowdin.dmm
+++ b/_maps/RandomZLevels/snowdin.dmm
@@ -633,12 +633,7 @@
},
/area/awaymission/snowdin/base)
"bC" = (
-/obj/structure/showcase{
- desc = "A strange machine thats supposedly used to help pick up and decrypt wave signals. ";
- icon = 'icons/obj/machines/telecomms.dmi';
- icon_state = "processor";
- name = "subsystem signal decrypter"
- },
+/obj/structure/showcase/machinery/signal_decrypter,
/turf/open/floor/plating{
baseturf = /turf/open/floor/plating/asteroid/snow
},
@@ -2498,12 +2493,7 @@
/area/awaymission/snowdin/post)
"gL" = (
/obj/machinery/light/small,
-/obj/structure/showcase{
- desc = "A strange machine thats supposedly used to help pick up and decrypt wave signals. ";
- icon = 'icons/obj/machines/telecomms.dmi';
- icon_state = "processor";
- name = "subsystem signal decrypter"
- },
+/obj/structure/showcase/machinery/signal_decrypter,
/turf/open/floor/plating{
baseturf = /turf/open/floor/plating/asteroid/snow
},
@@ -3909,10 +3899,7 @@
},
/area/awaymission/snowdin)
"kA" = (
-/obj/structure/grille{
- density = 0;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/turf/open/floor/plating{
baseturf = /turf/open/floor/plating/asteroid/snow;
icon = 'icons/turf/snow.dmi';
diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm
index 1b803966d3..4339d91cfa 100644
--- a/_maps/RandomZLevels/spacebattle.dmm
+++ b/_maps/RandomZLevels/spacebattle.dmm
@@ -842,7 +842,9 @@
/turf/open/floor/plasteel,
/area/awaymission/spacebattle/cruiser)
"cY" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
"cZ" = (
@@ -865,7 +867,9 @@
/turf/open/floor/mineral/plastitanium,
/area/awaymission/spacebattle/cruiser)
"dd" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/obj/structure/window/reinforced,
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
@@ -1002,7 +1006,9 @@
/turf/open/floor/plating/airless,
/area/awaymission/spacebattle/cruiser)
"dE" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 9
+ },
/turf/open/floor/engine,
/area/awaymission/spacebattle/cruiser)
"dF" = (
@@ -1010,11 +1016,15 @@
/turf/open/floor/engine,
/area/awaymission/spacebattle/cruiser)
"dG" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 1
+ },
/turf/open/floor/engine,
/area/awaymission/spacebattle/cruiser)
"dH" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 5
+ },
/turf/open/floor/engine,
/area/awaymission/spacebattle/cruiser)
"dI" = (
@@ -1109,7 +1119,9 @@
/turf/open/floor/plating/airless,
/area/awaymission/spacebattle/cruiser)
"dY" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/awaymission/spacebattle/cruiser)
"dZ" = (
@@ -1130,7 +1142,9 @@
},
/area/awaymission/spacebattle/cruiser)
"eb" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
"ec" = (
@@ -1296,7 +1310,9 @@
/turf/open/floor/plasteel/blue,
/area/awaymission/spacebattle/cruiser)
"eF" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
"eG" = (
@@ -1345,7 +1361,9 @@
/turf/open/floor/plasteel/blue,
/area/awaymission/spacebattle/cruiser)
"eQ" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
"eR" = (
@@ -2063,7 +2081,9 @@
/turf/open/floor/plating/airless,
/area/awaymission/spacebattle/cruiser)
"hi" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/awaymission/spacebattle/syndicate7)
"hj" = (
@@ -2122,7 +2142,9 @@
/turf/closed/wall/r_wall,
/area/awaymission/spacebattle/cruiser)
"hu" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/awaymission/spacebattle/syndicate7)
"hv" = (
@@ -2912,7 +2934,9 @@
/turf/open/floor/plasteel/white,
/area/awaymission/spacebattle/cruiser)
"ki" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/engine/vacuum,
/area/awaymission/spacebattle/cruiser)
"kj" = (
@@ -2941,7 +2965,9 @@
/turf/open/floor/plating,
/area/awaymission/spacebattle/cruiser)
"ko" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/turf/open/floor/engine/vacuum,
/area/awaymission/spacebattle/cruiser)
"kp" = (
@@ -2958,7 +2984,9 @@
/turf/open/floor/engine/vacuum,
/area/awaymission/spacebattle/cruiser)
"kr" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical,
+/obj/effect/spawner/structure/window/hollow/reinforced/middle{
+ dir = 4
+ },
/turf/open/floor/engine/vacuum,
/area/awaymission/spacebattle/cruiser)
"ks" = (
@@ -2983,11 +3011,13 @@
/turf/open/floor/engine/vacuum,
/area/awaymission/spacebattle/cruiser)
"kw" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 10
+ },
/turf/open/floor/engine/vacuum,
/area/awaymission/spacebattle/cruiser)
"kx" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional,
/turf/open/floor/engine/vacuum,
/area/awaymission/spacebattle/cruiser)
"ky" = (
@@ -2995,7 +3025,9 @@
/turf/open/floor/engine/vacuum,
/area/awaymission/spacebattle/cruiser)
"kz" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/corner,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 6
+ },
/turf/open/floor/engine/vacuum,
/area/awaymission/spacebattle/cruiser)
"kA" = (
diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm
index a1ddd715b1..bdf5091d25 100644
--- a/_maps/RandomZLevels/undergroundoutpost45.dmm
+++ b/_maps/RandomZLevels/undergroundoutpost45.dmm
@@ -14188,8 +14188,7 @@
/obj/machinery/atmospherics/components/trinary/filter{
dir = 4;
filter_type = "n2";
- on = 1;
- req_access = null
+ on = 1
},
/turf/open/floor/plasteel/red/side{
dir = 10;
@@ -14238,8 +14237,7 @@
/obj/machinery/atmospherics/components/trinary/filter{
dir = 4;
filter_type = "o2";
- on = 1;
- req_access = null
+ on = 1
},
/turf/open/floor/plasteel/blue/side{
dir = 10;
@@ -17520,11 +17518,7 @@
poweralm = 0
})
"yN" = (
-/obj/structure/grille{
- density = 0;
- broken = 1;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/turf/open/floor/mineral/titanium/blue,
/area/awaycontent/a7{
always_unpowered = 1;
diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm
index 237fa11a45..139f974861 100644
--- a/_maps/RandomZLevels/wildwest.dmm
+++ b/_maps/RandomZLevels/wildwest.dmm
@@ -447,7 +447,9 @@
/obj/structure/window/reinforced{
icon_state = "fwindow"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 8
+ },
/turf/open/floor/plating/ironsand{
icon_state = "ironsand1"
},
@@ -549,7 +551,9 @@
icon_state = "fwindow";
dir = 8
},
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 1
+ },
/turf/open/floor/plating/ironsand{
icon_state = "ironsand1"
},
@@ -870,7 +874,9 @@
icon_state = "fwindow";
dir = 4
},
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 1
+ },
/turf/open/floor/plating/ironsand{
icon_state = "ironsand1"
},
@@ -1696,7 +1702,7 @@
icon_state = "fwindow";
dir = 4
},
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional,
/turf/open/floor/plasteel,
/area/awaymission/wwrefine)
"fB" = (
@@ -2141,7 +2147,9 @@
/turf/open/floor/mineral/titanium/yellow,
/area/awaymission/wwrefine)
"gX" = (
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/obj/structure/window/reinforced{
icon_state = "fwindow"
},
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 90dbdd9a27..656507316d 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -2422,8 +2422,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_y = 32
},
/turf/open/floor/mineral/titanium/blue,
@@ -3244,9 +3242,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/obj/item/reagent_containers/blood/empty,
/turf/open/floor/plasteel/whitered/side{
dir = 5
@@ -8057,8 +8053,6 @@
/area/lawoffice)
"asa" = (
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/turf/open/floor/plasteel/red/corner{
@@ -13340,6 +13334,7 @@
id = "chapelgun";
name = "Chapel Launcher Door"
},
+/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/chapel/main)
"aEo" = (
@@ -14799,8 +14794,6 @@
/area/shuttle/arrival)
"aHu" = (
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/turf/open/floor/plasteel/white/corner{
@@ -17310,8 +17303,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/turf/open/floor/plasteel/bar,
@@ -18091,10 +18082,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
"aPE" = (
-/obj/machinery/status_display{
- density = 0;
- layer = 4
- },
+/obj/machinery/status_display,
/turf/closed/wall,
/area/crew_quarters/locker)
"aPF" = (
@@ -18206,10 +18194,7 @@
d2 = 8;
icon_state = "0-8"
},
-/obj/machinery/status_display{
- density = 0;
- layer = 4
- },
+/obj/machinery/status_display,
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/preopen{
id = "bridge blast";
@@ -18248,10 +18233,7 @@
icon_state = "0-4";
d2 = 4
},
-/obj/machinery/status_display{
- density = 0;
- layer = 4
- },
+/obj/machinery/status_display,
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/preopen{
id = "bridge blast";
@@ -19445,8 +19427,6 @@
"aTr" = (
/obj/machinery/door/firedoor,
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/turf/open/floor/plasteel,
@@ -23450,8 +23430,6 @@
},
/obj/structure/disposalpipe/segment,
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = -32
},
/turf/open/floor/plasteel/blue/corner{
@@ -24399,10 +24377,7 @@
/turf/closed/wall/r_wall,
/area/ai_monitored/turret_protected/ai_upload)
"bfw" = (
-/obj/machinery/status_display{
- density = 0;
- layer = 4
- },
+/obj/machinery/status_display,
/turf/closed/wall/r_wall,
/area/ai_monitored/turret_protected/ai_upload)
"bfx" = (
@@ -26461,8 +26436,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/obj/machinery/aug_manipulator,
@@ -26546,7 +26519,6 @@
/area/quartermaster/office)
"bkx" = (
/obj/machinery/status_display{
- density = 0;
pixel_y = 2;
supply_display = 1
},
@@ -27431,8 +27403,6 @@
},
/obj/machinery/door/firedoor,
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = -32
},
/turf/open/floor/plasteel/brown/corner{
@@ -27933,6 +27903,7 @@
id = "trash";
name = "disposal bay door"
},
+/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/maintenance/disposal)
"bnw" = (
@@ -30353,8 +30324,6 @@
/area/medical/medbay/central)
"bsz" = (
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = -32
},
/turf/open/floor/plasteel/white/side{
@@ -31908,7 +31877,6 @@
},
/obj/machinery/light,
/obj/machinery/status_display{
- density = 0;
pixel_y = -30;
supply_display = 1
},
@@ -34176,7 +34144,6 @@
pixel_y = -35
},
/obj/machinery/status_display{
- density = 0;
pixel_x = -32;
supply_display = 1
},
@@ -37437,8 +37404,6 @@
"bIe" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = -32
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -39079,6 +39044,7 @@
id = "toxinsdriver";
name = "toxins launcher bay door"
},
+/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/science/mixing)
"bLm" = (
@@ -40580,7 +40546,6 @@
"bOP" = (
/obj/structure/table/glass,
/obj/structure/reagent_dispensers/virusfood{
- density = 0;
pixel_x = -30
},
/obj/item/book/manual/wiki/infections{
@@ -41444,8 +41409,7 @@
/area/science/misc_lab)
"bQV" = (
/obj/machinery/atmospherics/components/trinary/filter{
- dir = 4;
- req_access = null
+ dir = 4
},
/turf/open/floor/engine,
/area/science/misc_lab)
@@ -52694,8 +52658,6 @@
dir = 8
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_y = 32
},
/turf/open/floor/mineral/titanium/blue,
@@ -54591,13 +54553,8 @@
/turf/open/floor/plating,
/area/ai_monitored/turret_protected/aisat/atmos)
"cup" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -54622,13 +54579,8 @@
},
/area/ai_monitored/turret_protected/aisat/atmos)
"cur" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -54637,13 +54589,8 @@
},
/area/ai_monitored/turret_protected/aisat_interior)
"cus" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -54680,13 +54627,8 @@
/turf/open/floor/plasteel/black,
/area/ai_monitored/turret_protected/aisat_interior)
"cuv" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -56052,8 +55994,6 @@
dir = 8
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_y = 32
},
/turf/open/floor/mineral/titanium/blue,
@@ -56982,8 +56922,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_y = 32
},
/turf/open/floor/mineral/titanium/blue,
@@ -57581,13 +57519,8 @@
d2 = 2;
icon_state = "1-2"
},
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -57597,13 +57530,8 @@
/turf/open/floor/plasteel/black,
/area/ai_monitored/turret_protected/ai)
"cAW" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -83901,7 +83829,7 @@ bHE
bYu
bZk
bCq
-cTG
+cTF
bCq
bCq
bCq
@@ -85197,7 +85125,7 @@ bCq
bCq
bCq
bCq
-cTH
+cTF
bCq
bLv
bLv
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index b5a0bf5dd4..5809176275 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -186,8 +186,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/obj/machinery/computer/shuttle/pod{
@@ -208,8 +206,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/obj/machinery/computer/shuttle/pod{
@@ -3514,6 +3510,8 @@
"ahP" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -5120,7 +5118,7 @@
/area/maintenance/starboard/fore)
"alA" = (
/obj/structure/table/wood,
-/obj/item/toy/carpplushie,
+/obj/item/toy/plush/carpplushie,
/obj/effect/decal/cleanable/cobweb,
/turf/open/floor/plasteel/vault{
dir = 8
@@ -6351,6 +6349,8 @@
req_access_txt = "12"
},
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -9542,7 +9542,6 @@
/area/quartermaster/storage)
"aut" = (
/obj/machinery/status_display{
- density = 0;
name = "cargo display";
supply_display = 1
},
@@ -18930,7 +18929,6 @@
/area/quartermaster/storage)
"aNe" = (
/obj/machinery/status_display{
- density = 0;
name = "cargo display";
supply_display = 1
},
@@ -19935,12 +19933,9 @@
},
/area/security/prison)
"aOV" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "permacell3";
- name = "Cell Shutters";
- opacity = 0
+ name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
id_tag = "permabolt3";
@@ -19956,12 +19951,9 @@
/turf/open/floor/plasteel,
/area/security/prison)
"aOW" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "permacell2";
- name = "Cell Shutters";
- opacity = 0
+ name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
id_tag = "permabolt2";
@@ -19981,12 +19973,9 @@
/turf/open/floor/plasteel,
/area/security/prison)
"aOX" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "permacell1";
- name = "Cell Shutters";
- opacity = 0
+ name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
id_tag = "permabolt1";
@@ -24309,8 +24298,7 @@
/area/quartermaster/office)
"aWW" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-18";
- layer = 4.1
+ icon_state = "plant-18"
},
/turf/open/floor/plasteel/brown,
/area/quartermaster/office)
@@ -24726,8 +24714,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_y = 32
},
/obj/machinery/computer/shuttle/pod{
@@ -24804,8 +24790,7 @@
icon_state = "pipe-c"
},
/obj/structure/fireaxecabinet{
- pixel_x = -32;
- pixel_y = 0
+ pixel_x = -32
},
/turf/open/floor/plasteel/caution{
dir = 8
@@ -30338,8 +30323,8 @@
/obj/item/stack/sheet/metal{
amount = 50
},
-/obj/item/grenade/chem_grenade/metalfoam,
-/obj/item/grenade/chem_grenade/metalfoam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
/obj/machinery/newscaster{
pixel_y = -32
},
@@ -46594,8 +46579,7 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/captain)
"bMJ" = (
-/obj/structure/sign/goldenplaque{
- name = "The Most Robust Captain Award for Robustness";
+/obj/structure/sign/goldenplaque/captain{
pixel_x = 32
},
/turf/open/floor/wood,
@@ -46749,9 +46733,6 @@
/turf/open/floor/carpet,
/area/security/detectives_office)
"bMX" = (
-/obj/machinery/computer/security/wooden_tv{
- density = 0
- },
/obj/structure/table/wood,
/obj/machinery/button/door{
id = "detectivewindows";
@@ -46765,15 +46746,16 @@
pixel_y = -26
},
/obj/structure/disposalpipe/segment,
+/obj/item/device/flashlight/lamp,
+/obj/item/reagent_containers/food/drinks/flask/det,
/turf/open/floor/carpet,
/area/security/detectives_office)
"bMY" = (
/obj/structure/table/wood,
-/obj/item/device/flashlight/lamp,
/obj/item/storage/secure/safe{
pixel_x = 32
},
-/obj/item/reagent_containers/food/drinks/flask/det,
+/obj/machinery/computer/security/wooden_tv,
/turf/open/floor/carpet,
/area/security/detectives_office)
"bMZ" = (
@@ -47907,13 +47889,8 @@
},
/area/aisat)
"bPb" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -47968,13 +47945,8 @@
/turf/open/floor/plating,
/area/ai_monitored/turret_protected/aisat_interior)
"bPg" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -48018,13 +47990,8 @@
/turf/open/floor/plasteel/grimy,
/area/ai_monitored/turret_protected/aisat_interior)
"bPm" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -48078,13 +48045,8 @@
/turf/open/floor/plasteel/vault,
/area/ai_monitored/turret_protected/aisat_interior)
"bPr" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -50681,13 +50643,8 @@
/turf/closed/wall/r_wall,
/area/ai_monitored/turret_protected/aisat_interior)
"bTA" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -50737,13 +50694,8 @@
/turf/closed/wall/r_wall,
/area/ai_monitored/turret_protected/aisat_interior)
"bTF" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -50792,13 +50744,8 @@
/turf/open/floor/plasteel/grimy,
/area/ai_monitored/turret_protected/aisat_interior)
"bTL" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -54955,9 +54902,7 @@
dir = 8
},
/obj/item/twohanded/required/kirbyplants/random,
-/obj/structure/sign/kiddieplaque{
- desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside.";
- name = "Library Rules Sign";
+/obj/structure/sign/kiddieplaque/library{
pixel_x = -32
},
/turf/open/floor/wood,
@@ -54995,9 +54940,7 @@
},
/area/library)
"cbD" = (
-/obj/structure/sign/kiddieplaque{
- desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside.";
- name = "Library Rules Sign";
+/obj/structure/sign/kiddieplaque/library{
pixel_x = -32
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -58758,9 +58701,7 @@
icon_state = "1-2"
},
/obj/structure/table/reinforced,
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-07";
- name = "Photosynthetic Potted plant";
+/obj/item/twohanded/required/kirbyplants/photosynthetic{
pixel_y = 10
},
/turf/open/floor/plasteel/vault{
@@ -64260,8 +64201,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/effect/decal/cleanable/dirt,
@@ -64745,9 +64684,7 @@
dir = 8
},
/obj/machinery/disposal/bin,
-/obj/structure/sign/kiddieplaque{
- desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside.";
- name = "Library Rules Sign";
+/obj/structure/sign/kiddieplaque/library{
pixel_x = -32
},
/obj/structure/disposalpipe/trunk{
@@ -65551,12 +65488,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/structure/showcase{
- desc = "A stand with an empty old Nanotrasen Corporation combat mech bolted to it. It is described as the premier unit used to defend corporate interests and employees.";
- icon = 'icons/mecha/mecha.dmi';
- icon_state = "marauder";
- name = "combat mech exhibit"
- },
+/obj/structure/showcase/mecha/marauder,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/grimy,
/area/bridge/showroom/corporate)
@@ -65623,12 +65555,8 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/structure/showcase{
- desc = "A flimsy model of a standard Nanotrasen automated loyalty implant machine. With secure positioning harnesses and a robotic surgical injector, brain damage and other serious medical anomalies are now up to 60% less likely!";
- icon = 'icons/obj/machines/implantchair.dmi';
- icon_state = "implantchair";
+/obj/structure/showcase/machinery/implanter{
layer = 2.7;
- name = "Nanotrasen automated loyalty implanter exhibit";
pixel_y = 4
},
/turf/open/floor/plasteel/grimy,
@@ -67328,7 +67256,7 @@
pixel_x = -26
},
/obj/structure/table/reinforced,
-/obj/item/grenade/chem_grenade/metalfoam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
/turf/open/floor/plasteel/vault{
dir = 8
},
@@ -68491,8 +68419,7 @@
/area/crew_quarters/locker)
"cCc" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-18";
- layer = 4.1
+ icon_state = "plant-18"
},
/turf/open/floor/plasteel/vault{
dir = 5
@@ -70025,6 +69952,8 @@
/area/maintenance/port)
"cEW" = (
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -71405,9 +71334,7 @@
"cHm" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/blue/corner{
dir = 4
},
@@ -78510,9 +78437,7 @@
},
/area/medical/chemistry)
"cVO" = (
-/obj/machinery/chem_master{
- density = 0
- },
+/obj/machinery/chem_master,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -78904,6 +78829,8 @@
dir = 8
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plating,
@@ -79637,9 +79564,7 @@
/area/medical/abandoned)
"cYb" = (
/obj/structure/bed/roller,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/medical/abandoned)
@@ -79660,9 +79585,7 @@
/area/medical/abandoned)
"cYd" = (
/obj/structure/bed/roller,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/whiteblue/corner{
dir = 4
@@ -81004,6 +80927,8 @@
/area/maintenance/port)
"daZ" = (
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -81027,6 +80952,8 @@
"dbb" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -81048,6 +80975,8 @@
"dbd" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -81611,9 +81540,7 @@
/turf/open/floor/plating,
/area/medical/abandoned)
"dcm" = (
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/medical/abandoned)
@@ -83187,7 +83114,9 @@
d2 = 2;
icon_state = "0-2"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 1
+ },
/obj/structure/cable/white{
d2 = 4;
icon_state = "0-4"
@@ -83216,7 +83145,9 @@
d2 = 4;
icon_state = "0-4"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 9
+ },
/obj/structure/cable/white{
d1 = 4;
d2 = 8;
@@ -83233,7 +83164,9 @@
d2 = 8;
icon_state = "0-8"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"dfJ" = (
@@ -83246,7 +83179,9 @@
icon_state = "0-8"
},
/obj/structure/cable/white,
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 5
+ },
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"dfK" = (
@@ -83369,9 +83304,7 @@
/area/science/explab)
"dfZ" = (
/obj/machinery/atmospherics/components/trinary/filter{
- density = 0;
- dir = 8;
- req_access = "0"
+ dir = 8
},
/turf/open/floor/plasteel/whitepurple/corner{
dir = 1
@@ -83758,7 +83691,9 @@
d2 = 2;
icon_state = "0-2"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/west,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"dgT" = (
@@ -83779,7 +83714,9 @@
d2 = 2;
icon_state = "0-2"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"dgW" = (
@@ -86356,7 +86293,9 @@
d2 = 2;
icon_state = "0-2"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/corner,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 6
+ },
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"dma" = (
@@ -87555,7 +87494,9 @@
d2 = 4;
icon_state = "0-4"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional{
+ dir = 10
+ },
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"doH" = (
@@ -87567,7 +87508,7 @@
d2 = 8;
icon_state = "0-8"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side,
+/obj/effect/spawner/structure/window/hollow/reinforced/directional,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"doI" = (
@@ -87576,7 +87517,9 @@
d2 = 8;
icon_state = "0-8"
},
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east,
+/obj/effect/spawner/structure/window/hollow/reinforced/end{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"doJ" = (
@@ -94047,9 +93990,7 @@
/area/science/mixing)
"dBf" = (
/obj/machinery/atmospherics/components/trinary/filter{
- density = 0;
- dir = 8;
- req_access = "0"
+ dir = 8
},
/turf/open/floor/plasteel/neutral/side{
dir = 1
@@ -98141,6 +98082,7 @@
/area/security/checkpoint/customs)
"dJd" = (
/obj/structure/cable/white{
+ d2 = 2;
icon_state = "0-2"
},
/obj/effect/spawner/structure/window/reinforced,
@@ -98725,6 +98667,7 @@
/area/medical/virology)
"dKq" = (
/obj/structure/cable/white{
+ d2 = 2;
icon_state = "0-2"
},
/obj/effect/spawner/structure/window/reinforced,
@@ -98807,9 +98750,7 @@
/area/maintenance/port/aft)
"dKD" = (
/obj/machinery/atmospherics/components/trinary/filter{
- density = 0;
- dir = 8;
- req_access = "0"
+ dir = 8
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/neutral,
@@ -100724,10 +100665,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/structure/sign/atmosplaque{
- desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom.";
- icon_state = "kiddieplaque";
- name = "Remembrance Plaque";
+/obj/structure/sign/kiddieplaque/badger{
pixel_y = 32
},
/turf/open/floor/plasteel/vault{
@@ -105600,10 +105538,7 @@
/area/shuttle/escape)
"dYc" = (
/obj/structure/lattice,
-/obj/structure/grille{
- density = 0;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/turf/open/space,
/area/space)
"dYd" = (
@@ -105932,6 +105867,7 @@
/area/security/checkpoint/checkpoint2)
"dYE" = (
/obj/structure/cable/white{
+ d2 = 2;
icon_state = "0-2"
},
/obj/effect/spawner/structure/window/reinforced,
@@ -108434,8 +108370,8 @@
amount = 50
},
/obj/item/crowbar,
-/obj/item/grenade/chem_grenade/metalfoam,
-/obj/item/grenade/chem_grenade/metalfoam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
/obj/effect/turf_decal/bot,
/obj/structure/sign/poster/official/report_crimes{
pixel_y = 32
@@ -109672,24 +109608,32 @@
/area/hallway/primary/aft)
"eiL" = (
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral,
/area/hallway/primary/aft)
"eiM" = (
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral,
/area/hallway/primary/aft)
"eiN" = (
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral,
/area/hallway/primary/aft)
"eiO" = (
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral,
@@ -109795,6 +109739,8 @@
/area/crew_quarters/dorms)
"ejb" = (
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
@@ -109818,6 +109764,8 @@
/area/crew_quarters/dorms)
"ejd" = (
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -136748,7 +136696,7 @@ aae
aae
aae
aaf
-dYc
+aBW
aae
aae
aaa
@@ -136999,7 +136947,7 @@ aaa
aaa
aae
aaf
-dYc
+aBW
aae
aae
aaa
@@ -137525,7 +137473,7 @@ dZB
eab
ear
aaa
-dYc
+aBW
aaa
aaa
aaa
@@ -139581,7 +139529,7 @@ dZB
eaf
ear
aaa
-dYc
+aBW
aae
aae
aae
@@ -140595,7 +140543,7 @@ dVy
dUl
aaf
aaf
-dYc
+aBW
aaa
dZB
eag
@@ -140609,7 +140557,7 @@ dZB
eag
ear
aaa
-dYc
+aBW
aaa
aaa
aaa
@@ -141112,14 +141060,14 @@ aaf
aae
aae
aae
-dYc
+aBW
aae
aaa
aaa
aaf
aaa
aaa
-dYc
+aBW
aae
aae
aaf
@@ -141376,7 +141324,7 @@ aae
aaf
aae
aae
-dYc
+aBW
aaa
aaa
aaa
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index fec17f558a..67107bf501 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -216,8 +216,7 @@
icon_state = "1-2"
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-03";
- layer = 4.1
+ icon_state = "plant-03"
},
/turf/open/floor/plasteel/floorgrime,
/area/security/prison)
@@ -237,9 +236,7 @@
d2 = 2;
icon_state = "1-2"
},
-/obj/item/twohanded/required/kirbyplants{
- layer = 4.1
- },
+/obj/item/twohanded/required/kirbyplants,
/turf/open/floor/plasteel/floorgrime,
/area/security/prison)
"aaE" = (
@@ -583,8 +580,6 @@
/area/security/prison)
"abr" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/barber{
@@ -1488,12 +1483,9 @@
/turf/closed/wall/r_wall,
/area/security/prison)
"adb" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "permacell3";
- name = "Cell Shutters";
- opacity = 0
+ name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
id_tag = "permabolt3";
@@ -1506,12 +1498,9 @@
/turf/closed/wall,
/area/security/prison)
"add" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "permacell2";
- name = "Cell Shutters";
- opacity = 0
+ name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
id_tag = "permabolt2";
@@ -1526,12 +1515,9 @@
/turf/open/floor/plasteel/floorgrime,
/area/security/prison)
"ade" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "permacell1";
- name = "Cell Shutters";
- opacity = 0
+ name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
id_tag = "permabolt1";
@@ -1787,8 +1773,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/obj/machinery/computer/shuttle/pod{
@@ -1953,13 +1937,9 @@
"adX" = (
/obj/structure/bed/roller,
/obj/structure/bed/roller,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/whitered/side{
dir = 2
},
@@ -2667,8 +2647,7 @@
dir = 9
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-16";
- layer = 4.1
+ icon_state = "plant-16"
},
/obj/structure/sign/securearea{
desc = "A warning sign which reads 'WARNING: Criminally Insane Inmates', describing the possible hazards of those contained within.";
@@ -2744,8 +2723,6 @@
/area/crew_quarters/heads/hos)
"afj" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_x = -32;
pixel_y = 32
},
@@ -2777,8 +2754,6 @@
/area/crew_quarters/heads/hos)
"afn" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_x = 32;
pixel_y = 32
},
@@ -2922,8 +2897,7 @@
/area/maintenance/solars/port/fore)
"afF" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "applebush";
- layer = 4.1
+ icon_state = "applebush"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
@@ -3614,6 +3588,7 @@
pixel_y = 3
},
/obj/item/gun/ballistic/shotgun/riot,
+/obj/item/gun/ballistic/shotgun/riot,
/turf/open/floor/plasteel/vault{
dir = 1
},
@@ -3847,35 +3822,26 @@
d2 = 2;
icon_state = "1-2"
},
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "Prison Gate";
- name = "Security Blast Door";
- opacity = 0
+ name = "Security Blast Door"
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/security/brig)
"ahz" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "Prison Gate";
- name = "Security Blast Door";
- opacity = 0
+ name = "Security Blast Door"
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/security/brig)
"ahA" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "Prison Gate";
- name = "Security Blast Door";
- opacity = 0
+ name = "Security Blast Door"
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
@@ -4216,6 +4182,7 @@
id = "trash";
name = "disposal bay door"
},
+/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/maintenance/disposal)
"aig" = (
@@ -7359,9 +7326,7 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/whitered/side,
/area/security/brig)
"aoq" = (
@@ -8054,9 +8019,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/structure/sign/kiddieplaque{
- desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside.";
- name = "Library Rules Sign";
+/obj/structure/sign/kiddieplaque/library{
pixel_y = -32
},
/turf/open/floor/plasteel/neutral/corner{
@@ -13187,7 +13150,6 @@
"azl" = (
/obj/structure/closet/emcloset,
/obj/machinery/status_display{
- density = 0;
pixel_y = 32;
supply_display = 1
},
@@ -13580,11 +13542,6 @@
/turf/open/floor/carpet,
/area/security/detectives_office)
"azU" = (
-/obj/machinery/computer/security/wooden_tv{
- density = 0;
- pixel_x = 3;
- pixel_y = 2
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
@@ -13595,6 +13552,11 @@
network = list("Prison");
pixel_y = 30
},
+/obj/item/device/flashlight/lamp/green{
+ pixel_x = 1;
+ pixel_y = 5
+ },
+/obj/item/restraints/handcuffs,
/turf/open/floor/carpet,
/area/security/detectives_office)
"azV" = (
@@ -13602,17 +13564,16 @@
/obj/item/storage/secure/safe{
pixel_x = 32
},
-/obj/item/device/flashlight/lamp/green{
- pixel_x = 1;
- pixel_y = 5
- },
-/obj/item/restraints/handcuffs,
/obj/machinery/button/door{
id = "detective_shutters";
name = "detective's office shutters control";
pixel_y = 26;
req_access_txt = "4"
},
+/obj/machinery/computer/security/wooden_tv{
+ pixel_x = 3;
+ pixel_y = 2
+ },
/turf/open/floor/carpet,
/area/security/detectives_office)
"azW" = (
@@ -14518,7 +14479,6 @@
/obj/effect/decal/cleanable/cobweb,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-20";
- layer = 4.1;
pixel_y = 3
},
/obj/effect/turf_decal/bot{
@@ -15474,8 +15434,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/red/corner{
@@ -17432,8 +17390,8 @@
amount = 50
},
/obj/item/crowbar,
-/obj/item/grenade/chem_grenade/metalfoam,
-/obj/item/grenade/chem_grenade/metalfoam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
/obj/effect/turf_decal/bot{
dir = 1
},
@@ -18051,7 +18009,6 @@
pixel_y = 23
},
/obj/machinery/status_display{
- density = 0;
pixel_y = 32;
supply_display = 1
},
@@ -18550,8 +18507,6 @@
name = "Judge"
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/light{
@@ -18642,8 +18597,7 @@
pixel_y = 24
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/wood,
/area/lawoffice)
@@ -19662,9 +19616,7 @@
c_tag = "AI Upload Chamber - Fore";
network = list("SS13","RD","AIUpload")
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-07";
- name = "Photosynthetic Potted plant";
+/obj/item/twohanded/required/kirbyplants/photosynthetic{
pixel_y = 10
},
/turf/open/floor/plasteel/black,
@@ -19811,8 +19763,6 @@
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/obj/machinery/portable_atmospherics/scrubber,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 30
},
/obj/effect/turf_decal/delivery,
@@ -21847,8 +21797,6 @@
icon_state = "0-4"
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/camera{
@@ -21917,8 +21865,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_y = 32
},
/obj/machinery/computer/shuttle/pod{
@@ -22042,7 +21988,6 @@
/obj/item/clipboard,
/obj/item/stamp/qm,
/obj/machinery/status_display{
- density = 0;
pixel_x = 32;
supply_display = 1
},
@@ -22174,8 +22119,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_x = 32
},
/obj/machinery/flasher{
@@ -22240,8 +22183,7 @@
pixel_x = -27
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-03";
- layer = 4.1
+ icon_state = "plant-03"
},
/turf/open/floor/plasteel/neutral/corner{
dir = 1
@@ -23358,7 +23300,6 @@
dir = 8
},
/obj/machinery/status_display{
- density = 0;
pixel_x = 32;
supply_display = 1
},
@@ -23496,6 +23437,7 @@
/turf/open/floor/plating,
/area/storage/primary)
"aTi" = (
+/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/highsecurity{
locked = 0;
name = "AI Upload";
@@ -24564,21 +24506,14 @@
/area/ai_monitored/turret_protected/ai)
"aVm" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/turf/open/floor/plasteel/black,
/area/ai_monitored/turret_protected/ai)
"aVn" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 2;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_y = 20
},
/turf/open/floor/plasteel/black,
@@ -24589,13 +24524,8 @@
dir = 2;
network = list("RD")
},
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 2;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_y = 20
},
/obj/structure/cable{
@@ -24608,8 +24538,6 @@
/area/ai_monitored/turret_protected/ai)
"aVq" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/atmospherics/components/unary/vent_pump/on,
@@ -24627,8 +24555,7 @@
/area/hallway/secondary/entry)
"aVt" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-13";
- layer = 4.1
+ icon_state = "plant-13"
},
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -24678,8 +24605,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/effect/turf_decal/stripes/line{
@@ -24783,7 +24708,6 @@
/area/hallway/secondary/entry)
"aVG" = (
/obj/machinery/status_display{
- density = 0;
supply_display = 1
},
/turf/closed/wall,
@@ -24934,6 +24858,7 @@
/turf/closed/wall/r_wall,
/area/ai_monitored/turret_protected/ai_upload_foyer)
"aVY" = (
+/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/highsecurity{
name = "Secure Network Access";
req_access_txt = "19"
@@ -24954,8 +24879,7 @@
pixel_y = 23
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "applebush";
- layer = 4.1
+ icon_state = "applebush"
},
/turf/open/floor/plasteel/neutral/side{
dir = 9
@@ -24976,8 +24900,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/neutral/side{
@@ -25047,8 +24969,7 @@
pixel_x = 27
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-16";
- layer = 4.1
+ icon_state = "plant-16"
},
/obj/item/device/radio/intercom{
freerange = 0;
@@ -25169,8 +25090,6 @@
pixel_y = 25
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/structure/extinguisher_cabinet{
@@ -26249,13 +26168,8 @@
dir = 4;
network = list("RD")
},
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -26281,13 +26195,8 @@
/turf/open/floor/circuit,
/area/ai_monitored/turret_protected/ai)
"aYB" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -26313,8 +26222,7 @@
/area/hallway/secondary/entry)
"aYF" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-05";
- layer = 4.1
+ icon_state = "plant-05"
},
/obj/effect/turf_decal/stripes/line{
dir = 10
@@ -27457,7 +27365,6 @@
"baA" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/machinery/status_display{
- density = 0;
pixel_y = 32;
supply_display = 1
},
@@ -28117,13 +28024,8 @@
},
/area/security/checkpoint/engineering)
"bbF" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -28152,13 +28054,8 @@
dir = 8;
network = list("RD")
},
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -28256,7 +28153,6 @@
"bbS" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/machinery/status_display{
- density = 0;
pixel_y = 32;
supply_display = 1
},
@@ -28335,8 +28231,6 @@
pixel_x = -29
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_x = -32
},
/turf/open/floor/plasteel/neutral/corner{
@@ -29091,8 +28985,6 @@
/area/crew_quarters/heads/captain/private)
"bdI" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -30282,12 +30174,9 @@
/turf/open/floor/plasteel/black,
/area/aisat)
"bfT" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "Engineering";
- name = "Engineering Security Doors";
- opacity = 0
+ name = "Engineering Security Doors"
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -30681,7 +30570,6 @@
/area/quartermaster/sorting)
"bgL" = (
/obj/machinery/status_display{
- density = 0;
pixel_y = 32;
supply_display = 1
},
@@ -30994,8 +30882,6 @@
/area/bridge)
"bhk" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/item/folder/yellow{
@@ -31613,8 +31499,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = -32
},
/turf/open/floor/plasteel/black,
@@ -33342,8 +33226,6 @@
"blC" = (
/obj/machinery/teleport/station,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/vault{
@@ -33363,13 +33245,8 @@
/turf/open/floor/plasteel/black,
/area/ai_monitored/turret_protected/ai)
"blF" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 2;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_y = 20
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -33384,13 +33261,8 @@
/turf/open/floor/plasteel/black,
/area/ai_monitored/turret_protected/aisat_interior)
"blH" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 2;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_y = 20
},
/turf/open/floor/plasteel/darkblue/corner{
@@ -33437,8 +33309,6 @@
"blK" = (
/obj/machinery/recharge_station,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/structure/cable/yellow{
@@ -34000,8 +33870,6 @@
"bmJ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_x = -32
},
/obj/structure/disposalpipe/segment,
@@ -34372,13 +34240,8 @@
dir = 1;
pixel_y = 1
},
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -34394,13 +34257,8 @@
/turf/closed/wall/r_wall,
/area/aisat)
"bnw" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 4;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = -9;
pixel_y = 2
},
@@ -34565,13 +34423,8 @@
/turf/open/floor/plasteel/black,
/area/ai_monitored/storage/satellite)
"bnI" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -35015,8 +34868,6 @@
pixel_y = 5
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/wood,
@@ -35339,12 +35190,9 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"bpm" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "transittube";
- name = "Transit Tube Blast Door";
- opacity = 0
+ name = "Transit Tube Blast Door"
},
/obj/structure/cable{
d1 = 4;
@@ -36157,8 +36005,6 @@
/area/crew_quarters/heads/hop)
"bqF" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/darkblue/corner{
@@ -36417,6 +36263,7 @@
d2 = 4;
icon_state = "0-4"
},
+/obj/item/paper_bin,
/obj/item/stack/cable_coil/random,
/obj/item/stack/cable_coil/random,
/obj/item/stack/cable_coil/random,
@@ -36437,6 +36284,7 @@
/area/storage/art)
"brf" = (
/obj/structure/table,
+/obj/item/paper_bin/construction,
/obj/item/airlock_painter,
/obj/machinery/airalarm{
dir = 8;
@@ -36941,13 +36789,8 @@
/area/aisat)
"brU" = (
/obj/structure/window/reinforced,
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 8;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_x = 9;
pixel_y = 2
},
@@ -37066,8 +36909,6 @@
/area/ai_monitored/turret_protected/aisat_interior)
"bse" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/porta_turret/ai{
@@ -37338,8 +37179,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = -32
},
/turf/open/floor/plasteel/neutral/corner{
@@ -37456,8 +37295,6 @@
/area/crew_quarters/heads/hop)
"bsP" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/structure/bed/dogbed/ian,
@@ -38002,8 +37839,7 @@
/area/hallway/secondary/entry)
"btR" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-18";
- layer = 4.1
+ icon_state = "plant-18"
},
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -38032,8 +37868,7 @@
/area/hallway/secondary/entry)
"btU" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-08";
- layer = 4.1
+ icon_state = "plant-08"
},
/turf/open/floor/plasteel/grimy,
/area/hallway/primary/port)
@@ -38045,8 +37880,7 @@
/area/hallway/primary/port)
"btW" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-03";
- layer = 4.1
+ icon_state = "plant-03"
},
/turf/open/floor/plasteel/grimy,
/area/hallway/primary/port)
@@ -38663,23 +38497,17 @@
/turf/open/floor/plating,
/area/engine/break_room)
"bvj" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "atmos";
- name = "Atmos Blast Door";
- opacity = 0
+ name = "Atmos Blast Door"
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/engine/break_room)
"bvk" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "atmos";
- name = "Atmos Blast Door";
- opacity = 0
+ name = "Atmos Blast Door"
},
/obj/structure/cable/yellow{
d1 = 1;
@@ -38693,12 +38521,9 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"bvl" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "atmos";
- name = "Atmos Blast Door";
- opacity = 0
+ name = "Atmos Blast Door"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -38800,13 +38625,8 @@
/area/engine/break_room)
"bvw" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 2;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_y = 20
},
/turf/open/floor/plasteel/grimy,
@@ -38824,13 +38644,8 @@
/obj/machinery/light_switch{
pixel_y = 28
},
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 2;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_y = 20
},
/turf/open/floor/plasteel/grimy,
@@ -38866,8 +38681,7 @@
/area/tcommsat/computer)
"bvB" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-20";
- layer = 4.1
+ icon_state = "plant-20"
},
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -39276,8 +39090,6 @@
"bwu" = (
/obj/machinery/holopad,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/light{
@@ -39820,8 +39632,6 @@
network = list("SS13")
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = -32
},
/obj/effect/turf_decal/stripes/line,
@@ -39974,8 +39784,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = -32
},
/turf/open/floor/plasteel/neutral/side,
@@ -40195,13 +40003,10 @@
name = "Reception Window";
req_access_txt = "0"
},
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "hop";
layer = 3.1;
- name = "privacy shutters";
- opacity = 0
+ name = "privacy shutters"
},
/turf/open/floor/plasteel,
/area/crew_quarters/heads/hop)
@@ -40468,12 +40273,9 @@
/turf/open/floor/carpet,
/area/crew_quarters/theatre)
"byK" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "Engineering";
- name = "Engineering Security Doors";
- opacity = 0
+ name = "Engineering Security Doors"
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
@@ -40567,8 +40369,6 @@
/area/engine/atmos)
"byS" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/light{
@@ -41067,8 +40867,6 @@
/area/hallway/secondary/command)
"bzN" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/effect/turf_decal/bot,
@@ -41409,12 +41207,9 @@
/area/hallway/primary/starboard)
"bAA" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "atmos";
- name = "Atmos Blast Door";
- opacity = 0
+ name = "Atmos Blast Door"
},
/obj/structure/cable/yellow{
d2 = 2;
@@ -41476,8 +41271,8 @@
/obj/item/stack/sheet/metal{
amount = 50
},
-/obj/item/grenade/chem_grenade/metalfoam,
-/obj/item/grenade/chem_grenade/metalfoam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
/turf/open/floor/plasteel/caution{
dir = 8
},
@@ -41592,8 +41387,6 @@
/obj/structure/table/wood,
/obj/item/folder/blue,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 31
},
/obj/item/folder/blue,
@@ -41937,13 +41730,10 @@
/area/hallway/primary/port)
"bBH" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "council blast";
layer = 2.9;
- name = "Council Blast Doors";
- opacity = 0
+ name = "Council Blast Doors"
},
/obj/structure/cable/yellow{
d2 = 4;
@@ -41953,13 +41743,10 @@
/area/bridge)
"bBI" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "council blast";
layer = 2.9;
- name = "Council Blast Doors";
- opacity = 0
+ name = "Council Blast Doors"
},
/obj/structure/cable/yellow{
d2 = 4;
@@ -41973,13 +41760,10 @@
/area/bridge)
"bBJ" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "council blast";
layer = 2.9;
- name = "Council Blast Doors";
- opacity = 0
+ name = "Council Blast Doors"
},
/obj/structure/cable/yellow{
d2 = 2;
@@ -41997,13 +41781,10 @@
/area/bridge)
"bBK" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "council blast";
layer = 2.9;
- name = "Council Blast Doors";
- opacity = 0
+ name = "Council Blast Doors"
},
/obj/structure/cable/yellow{
d2 = 8;
@@ -42017,13 +41798,10 @@
/area/bridge)
"bBL" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "council blast";
layer = 2.9;
- name = "Council Blast Doors";
- opacity = 0
+ name = "Council Blast Doors"
},
/obj/structure/cable/yellow{
d2 = 8;
@@ -42205,8 +41983,7 @@
density = 0;
icon_state = "pdoor0";
id = "atmos";
- name = "Atmos Blast Door";
- opacity = 0
+ name = "Atmos Blast Door"
},
/obj/machinery/door/window/northleft{
dir = 4;
@@ -42218,12 +41995,9 @@
/obj/item/folder/yellow,
/obj/item/pen,
/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "atmos";
- name = "Atmos Blast Door";
- opacity = 0
+ name = "Atmos Blast Door"
},
/obj/effect/turf_decal/delivery,
/obj/structure/cable/yellow{
@@ -42703,8 +42477,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
@@ -42846,8 +42618,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
@@ -43162,13 +42932,8 @@
/turf/open/floor/circuit/green/telecomms/mainframe,
/area/tcommsat/server)
"bEg" = (
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 2;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_y = 20
},
/turf/open/floor/plasteel/black/telecomms/mainframe,
@@ -43218,8 +42983,6 @@
icon_state = "1-2"
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_x = 32
},
/turf/open/floor/plasteel/arrival{
@@ -44195,12 +43958,9 @@
freq = 1400;
location = "Atmospherics"
},
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "atmos";
- name = "Atmos Blast Door";
- opacity = 0
+ name = "Atmos Blast Door"
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
@@ -45799,8 +45559,7 @@
/area/tcommsat/server)
"bJh" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/grimy,
/area/tcommsat/computer)
@@ -46265,8 +46024,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/vault{
@@ -46631,8 +46388,7 @@
/area/aisat)
"bKS" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-06";
- level = 4.1
+ icon_state = "plant-06"
},
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -47047,8 +46803,6 @@
"bLH" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_x = -32
},
/obj/machinery/camera{
@@ -47512,8 +47266,7 @@
pixel_y = -32
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-03";
- layer = 4.1
+ icon_state = "plant-03"
},
/turf/open/floor/plasteel/arrival{
dir = 6
@@ -47751,12 +47504,7 @@
/area/teleporter)
"bNa" = (
/obj/structure/window/reinforced,
-/obj/structure/showcase{
- desc = "A stand with an retired construction mech bolted to it. The clamps are rated at 9300PSI. It seems to be falling apart.";
- icon = 'icons/mecha/mecha.dmi';
- icon_state = "firefighter";
- name = "construction mech exhibit"
- },
+/obj/structure/showcase/mecha/ripley,
/obj/structure/cable/yellow{
d1 = 1;
d2 = 2;
@@ -47766,10 +47514,7 @@
/turf/open/floor/carpet,
/area/bridge/showroom/corporate)
"bNb" = (
-/obj/structure/sign/atmosplaque{
- desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today.";
- icon_state = "kiddieplaque";
- name = "\improper 'Perfect Drone' sign";
+/obj/structure/sign/kiddieplaque/perfect_drone{
pixel_y = 32
},
/obj/machinery/droneDispenser,
@@ -47777,12 +47522,7 @@
/turf/open/floor/carpet,
/area/bridge/showroom/corporate)
"bNc" = (
-/obj/structure/showcase{
- desc = "A stand with an empty old Nanotrasen Corporation combat mech bolted to it. It is described as the premier unit used to defend corporate interests and employees.";
- icon = 'icons/mecha/mecha.dmi';
- icon_state = "marauder";
- name = "combat mech exhibit"
- },
+/obj/structure/showcase/mecha/marauder,
/obj/structure/window/reinforced{
dir = 4
},
@@ -47872,26 +47612,16 @@
icon_state = "1-2"
},
/obj/structure/window/reinforced,
-/obj/structure/showcase{
- desc = "Signs describe how cloning pods like these ensure that every Nanotrasen employee can carry out their contracts in full, even in the unlikely event of their catastrophic death. Hopefully they aren't all made of cardboard, like this one.";
- icon = 'icons/obj/cloning.dmi';
- icon_state = "pod_0";
+/obj/structure/showcase/machinery/cloning_pod{
layer = 4;
- name = "cloning pod exhibit";
pixel_x = 2;
pixel_y = 5
},
/turf/open/floor/carpet,
/area/bridge/showroom/corporate)
"bNj" = (
-/obj/structure/showcase{
- desc = "A stand with a model of the perfect Nanotrasen Employee bolted to it. Signs indicate it is robustly genetically engineered, as well as being ruthlessly loyal.";
- name = "'Perfect Man' employee exhibit"
- },
-/obj/structure/sign/atmosplaque{
- desc = "A guide to the exhibit, explaining how recent developments in loyalty implant and cloning technologies by Nanotrasen Corporation have led to the development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee.";
- icon_state = "kiddieplaque";
- name = "\improper 'Perfect Man' sign";
+/obj/structure/showcase/perfect_employee,
+/obj/structure/sign/kiddieplaque/perfect_man{
pixel_y = 32
},
/obj/structure/window/reinforced,
@@ -47905,12 +47635,8 @@
},
/obj/structure/window/reinforced,
/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/structure/showcase{
- desc = "A flimsy model of a standard Nanotrasen automated loyalty implant machine. With secure positioning harnesses and a robotic surgical injector, brain damage and other serious medical anomalies are now up to 60% less likely!";
- icon = 'icons/obj/machines/implantchair.dmi';
- icon_state = "implantchair";
+/obj/structure/showcase/machinery/implanter{
layer = 2.7;
- name = "Nanotrasen automated loyalty implanter exhibit";
pixel_y = 4
},
/turf/open/floor/carpet,
@@ -48922,9 +48648,7 @@
/turf/open/floor/plating,
/area/maintenance/starboard)
"bPn" = (
-/obj/machinery/atmospherics/components/trinary/filter{
- req_access = "0"
- },
+/obj/machinery/atmospherics/components/trinary/filter,
/turf/open/floor/plating,
/area/maintenance/starboard)
"bPo" = (
@@ -49349,7 +49073,7 @@
/area/bridge/showroom/corporate)
"bQl" = (
/obj/structure/table/wood,
-/obj/item/toy/carpplushie{
+/obj/item/toy/plush/carpplushie{
color = "red";
name = "Nanotrasen wildlife department space carp plushie"
},
@@ -49915,12 +49639,8 @@
/turf/open/floor/wood,
/area/bridge/showroom/corporate)
"bRz" = (
-/obj/structure/showcase{
- desc = "The famous Nanotrasen-brand microwave, the multi-purpose cooking appliance every station needs! This one appears to be drawn onto a cardboard box.";
+/obj/structure/showcase/machinery/microwave{
dir = 1;
- icon = 'icons/obj/kitchen.dmi';
- icon_state = "mw";
- name = "Nanotrasen-brand microwave";
pixel_y = 2
},
/obj/structure/table/wood,
@@ -49998,12 +49718,8 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/structure/showcase{
- desc = "A slightly battered looking TV. Various Nanotrasen infomercials play on a loop, accompanied by a jaunty tune.";
+/obj/structure/showcase/machinery/tv{
dir = 1;
- icon = 'icons/obj/computer.dmi';
- icon_state = "television";
- name = "Nanotrasen corporate newsfeed";
pixel_x = 2;
pixel_y = 3
},
@@ -51278,8 +50994,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/neutral/corner{
@@ -51335,8 +51049,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/neutral/corner{
@@ -53348,8 +53060,7 @@
pixel_x = -27
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "applebush";
- layer = 4.1
+ icon_state = "applebush"
},
/turf/open/floor/plasteel/blue/corner{
dir = 8
@@ -53450,8 +53161,7 @@
pixel_x = 24
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/purple/corner{
dir = 2
@@ -54702,8 +54412,6 @@
},
/obj/item/pen,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/light/small{
@@ -57059,8 +56767,7 @@
pixel_y = -30
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-08";
- layer = 4.1
+ icon_state = "plant-08"
},
/turf/open/floor/plasteel/whitepurple/side{
dir = 2
@@ -58989,10 +58696,7 @@
},
/area/medical/chemistry)
"ciA" = (
-/obj/machinery/chem_master{
- layer = 2.7;
- pixel_x = -2
- },
+/obj/machinery/chem_master,
/obj/machinery/light{
dir = 4
},
@@ -60261,9 +59965,7 @@
/area/medical/medbay/central)
"clo" = (
/obj/structure/bed/roller,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/whiteblue/side{
dir = 2
},
@@ -61404,8 +61106,6 @@
/area/medical/medbay/central)
"cnC" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/structure/table/glass,
@@ -61763,8 +61463,7 @@
/area/science/research)
"coj" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/whitepurple/corner{
dir = 2
@@ -61960,9 +61659,7 @@
/obj/machinery/light/small{
dir = 8
},
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/white,
/area/medical/surgery)
"coE" = (
@@ -63060,10 +62757,7 @@
},
/area/medical/chemistry)
"cqu" = (
-/obj/machinery/chem_master{
- layer = 2.7;
- pixel_x = -2
- },
+/obj/machinery/chem_master,
/obj/structure/noticeboard{
desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests.";
dir = 1;
@@ -63512,9 +63206,7 @@
/area/medical/surgery)
"cro" = (
/obj/structure/bed/roller,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/white,
/area/medical/surgery)
"crp" = (
@@ -63929,9 +63621,7 @@
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"csc" = (
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/obj/item/roller,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
@@ -64051,9 +63741,7 @@
/obj/structure/sign/nosmoking_2{
pixel_x = -28
},
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/whiteblue/side{
dir = 2
},
@@ -64558,8 +64246,6 @@
/area/crew_quarters/heads/hor)
"ctc" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/effect/landmark/xmastree/rdrod,
@@ -67534,8 +67220,6 @@
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/white/side{
@@ -67906,9 +67590,7 @@
/area/science/mixing)
"czz" = (
/obj/machinery/atmospherics/components/trinary/filter{
- density = 0;
- dir = 8;
- req_access = "0"
+ dir = 8
},
/turf/open/floor/plasteel/white,
/area/science/mixing)
@@ -69926,6 +69608,7 @@
id = "toxinsdriver";
name = "Toxins Launcher Bay Door"
},
+/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/science/mixing)
"cDu" = (
@@ -70083,7 +69766,6 @@
/obj/item/device/healthanalyzer,
/obj/item/clothing/glasses/hud/health,
/obj/structure/reagent_dispensers/virusfood{
- density = 0;
pixel_y = 30
},
/obj/structure/table/glass,
@@ -71273,9 +70955,7 @@
dir = 2;
pixel_y = 24
},
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/whitegreen/side{
dir = 8
},
@@ -71304,7 +70984,6 @@
"cFQ" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -72929,12 +72608,8 @@
"cIA" = (
/obj/structure/bed/roller,
/obj/structure/bed/roller,
-/obj/machinery/iv_drip{
- density = 0
- },
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/floorgrime,
/area/maintenance/aft)
"cIB" = (
@@ -73610,8 +73285,7 @@
/area/science/research)
"cJQ" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/whitepurple/corner{
dir = 8
@@ -74902,8 +74576,7 @@
pixel_x = 27
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-14";
- layer = 4.1
+ icon_state = "plant-14"
},
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -75265,7 +74938,6 @@
/area/hallway/secondary/exit/departure_lounge)
"cMU" = (
/obj/machinery/status_display{
- density = 0;
layer = 4
},
/turf/closed/wall,
@@ -76547,10 +76219,7 @@
/turf/open/floor/carpet,
/area/chapel/main)
"cPE" = (
-/obj/structure/sign/atmosplaque{
- desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom.";
- icon_state = "kiddieplaque";
- name = "Remembrance Plaque";
+/obj/structure/sign/kiddieplaque/badger{
pixel_y = 32
},
/obj/item/reagent_containers/food/snacks/grown/poppy{
@@ -76665,8 +76334,7 @@
pixel_x = -27
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-04";
- layer = 4.1
+ icon_state = "plant-04"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -76735,8 +76403,7 @@
pixel_x = 29
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-16";
- layer = 4.1
+ icon_state = "plant-16"
},
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -77579,6 +77246,7 @@
id = "chapelgun";
name = "Chapel Launcher Door"
},
+/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/chapel/main)
"cRQ" = (
@@ -78180,8 +77848,6 @@
dir = 1
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/obj/machinery/computer/shuttle/pod{
@@ -78370,8 +78036,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_y = 32
},
/obj/machinery/computer/shuttle/pod{
@@ -80931,9 +80595,7 @@
req_access_txt = "0";
use_power = 0
},
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
@@ -83140,10 +82802,7 @@
/turf/open/floor/plasteel/whitepurple/side,
/area/science/xenobiology)
"dcM" = (
-/obj/machinery/chem_master{
- pixel_x = -2;
- pixel_y = 1
- },
+/obj/machinery/chem_master,
/obj/item/device/radio/intercom{
name = "Station Intercom (General)";
pixel_y = -29
@@ -85580,8 +85239,6 @@
"diD" = (
/obj/machinery/vending/cigarette,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/structure/sign/poster/official/random{
@@ -85806,8 +85463,7 @@
network = list("SS13")
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-24";
- layer = 4.1
+ icon_state = "plant-24"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -89933,12 +89589,9 @@
/area/engine/atmos)
"dBK" = (
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "atmos";
- name = "Atmos Blast Door";
- opacity = 0
+ name = "Atmos Blast Door"
},
/obj/structure/cable/yellow,
/turf/open/floor/plating,
@@ -100175,7 +99828,7 @@ aVs
aVs
aVs
cVF
-cVW
+cVF
cWn
cVF
cVF
@@ -122587,7 +122240,7 @@ cRu
cRi
cRi
cRi
-bpu
+cRi
aaf
aaa
aaf
@@ -128889,7 +128542,7 @@ aaa
aaa
aaf
aaa
-aaX
+blx
adl
aQf
adl
@@ -129937,7 +129590,7 @@ arI
atd
bai
ate
-dDM
+dDL
axP
dnS
axY
diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm
index 3e53168c2e..90e8ab96bf 100644
--- a/_maps/map_files/Mining/Lavaland.dmm
+++ b/_maps/map_files/Mining/Lavaland.dmm
@@ -358,8 +358,6 @@
/area/mine/laborcamp)
"bj" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel,
diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm
index 1d961d66bc..12d1d8abe7 100644
--- a/_maps/map_files/OmegaStation/OmegaStation.dmm
+++ b/_maps/map_files/OmegaStation/OmegaStation.dmm
@@ -27,10 +27,7 @@
/area/space)
"aag" = (
/obj/structure/lattice,
-/obj/structure/grille{
- density = 0;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/turf/open/space,
/area/space)
"aah" = (
@@ -235,6 +232,8 @@
"aaz" = (
/obj/machinery/computer/card,
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/darkred/side{
@@ -374,6 +373,8 @@
"aaL" = (
/obj/machinery/computer/monitor,
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/darkyellow/side{
@@ -398,6 +399,8 @@
name = "command camera"
},
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/vault{
@@ -436,7 +439,6 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -493,6 +495,8 @@
name = "command camera"
},
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/vault{
@@ -524,6 +528,8 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/vault{
@@ -581,6 +587,8 @@
/area/bridge)
"abb" = (
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -698,6 +706,8 @@
dir = 10
},
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/vault{
@@ -823,9 +833,7 @@
/area/crew_quarters/heads/hop)
"abt" = (
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"abu" = (
/turf/open/floor/plating/astplate,
/area/ruin/unpowered{
@@ -1018,24 +1026,18 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"abM" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"abN" = (
/obj/structure/sign/vacuum,
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"abO" = (
/obj/structure/closet/emcloset/anchored,
/obj/effect/decal/cleanable/dirt,
@@ -1044,9 +1046,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"abP" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating/astplate,
@@ -1105,9 +1105,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/fore)
"abX" = (
/obj/structure/window/reinforced{
dir = 8
@@ -1381,9 +1379,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"acv" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -1391,9 +1387,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"acw" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/external{
@@ -1407,9 +1401,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"acx" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -1420,9 +1412,7 @@
/obj/effect/landmark/xeno_spawn,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"acy" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/external{
@@ -1433,9 +1423,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"acz" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
@@ -1554,9 +1542,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/fore)
"acO" = (
/obj/structure/mirror{
pixel_x = -26
@@ -1911,13 +1897,21 @@
"adm" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable/white{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "Starboard Bow Maintenace APC";
+ areastring = "/area/maintenance/starboard/fore";
+ pixel_x = 26
+ },
/turf/open/floor/plasteel/neutral/corner{
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"adn" = (
/turf/closed/wall,
/area/quartermaster/storage)
@@ -1927,7 +1921,6 @@
/area/quartermaster/storage)
"adp" = (
/obj/machinery/status_display{
- density = 0;
name = "cargo display";
supply_display = 1
},
@@ -2047,9 +2040,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/effect/landmark/xeno_spawn,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/fore)
"adG" = (
/obj/structure/toilet{
dir = 4
@@ -2145,8 +2136,7 @@
d2 = 8;
icon_state = "2-8"
},
-/obj/structure/sign/goldenplaque{
- name = "The Most Robust Captain Award for Robustness";
+/obj/structure/sign/goldenplaque/captain{
pixel_x = 32
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -2253,7 +2243,6 @@
req_access = null;
req_access_txt = "57"
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/stripes/line{
dir = 2
},
@@ -2270,10 +2259,13 @@
"adY" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"adZ" = (
/obj/machinery/conveyor{
dir = 8;
@@ -2496,10 +2488,19 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/power/apc{
+ dir = 8;
+ name = "Fore Maintenace APC";
+ areastring = "/area/maintenance/fore";
+ pixel_x = -26;
+ pixel_y = 3
+ },
+/obj/structure/cable/white{
+ d2 = 2;
+ icon_state = "0-2"
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/fore)
"aeu" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
@@ -2814,7 +2815,6 @@
/area/crew_quarters/heads/hop)
"aeP" = (
/obj/machinery/status_display{
- density = 0;
name = "cargo display";
pixel_x = -32;
supply_display = 1
@@ -2988,15 +2988,18 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/security/detectives_office)
+/area/maintenance/fore)
"afj" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/delivery,
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/fore)
"afk" = (
/obj/structure/extinguisher_cabinet{
pixel_x = -26
@@ -3033,8 +3036,7 @@
/area/crew_quarters/heads/captain/private)
"afo" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/item/device/radio/intercom{
dir = 8;
@@ -3279,10 +3281,13 @@
"afB" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/landmark/blobstart,
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"afC" = (
/obj/machinery/airalarm{
dir = 4;
@@ -3463,10 +3468,13 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/delivery,
/obj/effect/landmark/event_spawn,
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/fore)
"afW" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/command{
@@ -3483,7 +3491,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/crew_quarters/heads/captain/private)
+/area/maintenance/fore)
"afX" = (
/obj/structure/cable/white{
d1 = 4;
@@ -3761,13 +3769,16 @@
"agu" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel/neutral/corner{
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"agv" = (
/obj/structure/extinguisher_cabinet{
pixel_x = -26
@@ -3941,9 +3952,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/fore)
"agO" = (
/obj/machinery/light{
dir = 8
@@ -4247,10 +4256,13 @@
"ahj" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"ahk" = (
/obj/machinery/firealarm{
dir = 8;
@@ -4521,9 +4533,7 @@
/turf/open/floor/plasteel/grimy,
/area/security/detectives_office)
"ahE" = (
-/obj/machinery/computer/security/wooden_tv{
- density = 0
- },
+/obj/machinery/computer/security/wooden_tv,
/obj/structure/table/wood,
/obj/machinery/button/door{
id = "detectivewindows";
@@ -4549,7 +4559,6 @@
/obj/item/storage/secure/safe{
pixel_x = 32
},
-/obj/item/reagent_containers/food/drinks/flask/det,
/obj/structure/extinguisher_cabinet{
pixel_x = 24;
pixel_y = -26
@@ -4566,9 +4575,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/fore)
"ahH" = (
/obj/structure/sign/securearea{
pixel_x = -32
@@ -4598,9 +4605,7 @@
/turf/open/floor/carpet,
/area/crew_quarters/heads/captain/private)
"ahK" = (
-/obj/machinery/computer/security/wooden_tv{
- density = 0
- },
+/obj/machinery/computer/security/wooden_tv,
/obj/structure/table/wood,
/obj/machinery/button/door{
id = "captainhall";
@@ -4725,30 +4730,22 @@
/area/bridge)
"ahY" = (
/turf/closed/wall/r_wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ahZ" = (
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aia" = (
/obj/machinery/light{
dir = 1
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aib" = (
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aic" = (
/obj/structure/table,
/obj/item/paper_bin,
@@ -4759,9 +4756,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aid" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/mining{
@@ -5012,9 +5007,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/fore)
"aiy" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass_command{
@@ -5098,9 +5091,7 @@
/turf/open/floor/plasteel/loadingarea{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aiE" = (
/obj/structure/cable/white{
d2 = 2;
@@ -5108,24 +5099,18 @@
},
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aiF" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "hopline";
name = "Queue Shutters"
},
/turf/open/floor/plasteel/loadingarea,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aiG" = (
/obj/structure/sign/electricshock,
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aiH" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/maintenance_hatch{
@@ -5135,10 +5120,13 @@
/obj/effect/turf_decal/stripes/line{
dir = 2
},
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"aiI" = (
/obj/structure/filingcabinet/filingcabinet,
/obj/machinery/airalarm{
@@ -5308,9 +5296,6 @@
icon_state = "0-2"
},
/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -5380,9 +5365,7 @@
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aje" = (
/obj/structure/cable/white{
d1 = 1;
@@ -5396,17 +5379,13 @@
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajf" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajg" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5415,9 +5394,7 @@
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajh" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5425,9 +5402,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aji" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
@@ -5435,9 +5410,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajj" = (
/obj/structure/cable/white{
d1 = 1;
@@ -5451,9 +5424,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajk" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5465,9 +5436,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajl" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5479,9 +5448,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajm" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5495,9 +5462,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajn" = (
/obj/structure/sign/nanotrasen{
pixel_y = 32
@@ -5510,9 +5475,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajo" = (
/obj/structure/cable/white{
d1 = 1;
@@ -5526,17 +5489,13 @@
/turf/open/floor/plasteel/blue/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajp" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/open/floor/plasteel/blue/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajq" = (
/obj/structure/sign/securearea{
pixel_y = 32
@@ -5547,9 +5506,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajr" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5560,9 +5517,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajs" = (
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/obj/machinery/camera{
@@ -5573,9 +5528,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajt" = (
/obj/structure/cable/white{
d1 = 1;
@@ -5589,9 +5542,7 @@
dir = 1
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aju" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5601,9 +5552,7 @@
dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajv" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5615,9 +5564,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajw" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5629,9 +5576,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajx" = (
/obj/structure/sign/securearea{
pixel_y = 32
@@ -5645,9 +5590,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajy" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5656,9 +5599,7 @@
/turf/open/floor/plasteel/blue/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajz" = (
/obj/structure/cable/white{
d1 = 1;
@@ -5669,9 +5610,7 @@
/turf/open/floor/plasteel/blue/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajA" = (
/obj/structure/sign/directions/engineering{
desc = "A sign that shows there are doors here. There are doors everywhere!";
@@ -5687,9 +5626,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5697,9 +5634,7 @@
/turf/open/floor/plasteel/blue/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajC" = (
/obj/structure/cable/white{
d1 = 1;
@@ -5712,9 +5647,7 @@
/turf/open/floor/plasteel/blue/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajD" = (
/obj/structure/cable/white{
d1 = 1;
@@ -5727,9 +5660,7 @@
/turf/open/floor/plasteel/blue/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajE" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -5737,16 +5668,13 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajF" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/camera{
c_tag = "Central Hallway North-East";
@@ -5755,17 +5683,13 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajG" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/brown/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ajH" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/plasticflaps{
@@ -6032,9 +5956,7 @@
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akd" = (
/obj/effect/landmark/lightsout,
/obj/structure/cable/white{
@@ -6051,9 +5973,7 @@
dir = 8
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ake" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6067,9 +5987,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akf" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6082,9 +6000,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akg" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6098,9 +6014,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akh" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6115,9 +6029,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aki" = (
/obj/structure/cable/white{
d1 = 1;
@@ -6134,9 +6046,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akj" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6154,9 +6064,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akk" = (
/obj/structure/sign/electricshock{
pixel_y = -32
@@ -6173,9 +6081,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akl" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6192,9 +6098,7 @@
},
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akm" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6207,9 +6111,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akn" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6226,9 +6128,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ako" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6245,9 +6145,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akp" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6266,9 +6164,7 @@
dir = 1
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akq" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6283,9 +6179,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akr" = (
/obj/structure/cable/white{
d1 = 2;
@@ -6312,9 +6206,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aks" = (
/obj/structure/cable/white{
d1 = 2;
@@ -6333,9 +6225,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akt" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6353,9 +6243,7 @@
/turf/open/floor/plasteel{
icon_state = "L1"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aku" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6369,9 +6257,7 @@
/turf/open/floor/plasteel{
icon_state = "L3"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akv" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6390,9 +6276,7 @@
/turf/open/floor/plasteel{
icon_state = "L5"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akw" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6416,9 +6300,7 @@
/turf/open/floor/plasteel{
icon_state = "L7"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akx" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6429,9 +6311,7 @@
/turf/open/floor/plasteel{
icon_state = "L9"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aky" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6444,9 +6324,7 @@
/turf/open/floor/plasteel{
icon_state = "L11"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akz" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6464,9 +6342,7 @@
/turf/open/floor/plasteel{
icon_state = "L13"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akA" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6477,9 +6353,7 @@
dir = 4
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akB" = (
/obj/structure/cable/white{
d1 = 2;
@@ -6493,9 +6367,7 @@
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akC" = (
/obj/structure/cable/white{
d1 = 2;
@@ -6521,9 +6393,7 @@
icon_state = "1-4"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akD" = (
/obj/structure/cable/white{
d1 = 2;
@@ -6540,9 +6410,7 @@
},
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akE" = (
/obj/structure/cable/white{
d1 = 2;
@@ -6564,9 +6432,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akF" = (
/obj/structure/cable/white{
d1 = 2;
@@ -6588,9 +6454,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akG" = (
/obj/structure/cable/white{
d1 = 4;
@@ -6608,9 +6472,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akH" = (
/obj/structure/cable/white{
d1 = 2;
@@ -6629,9 +6491,7 @@
dir = 1
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akI" = (
/obj/structure/sign/electricshock{
pixel_y = -32
@@ -6645,9 +6505,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akJ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -6662,9 +6520,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akK" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -6675,10 +6531,13 @@
icon_state = "2-8"
},
/obj/effect/turf_decal/delivery,
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"akL" = (
/obj/structure/closet/wardrobe/cargotech,
/turf/open/floor/plasteel/brown{
@@ -6845,9 +6704,7 @@
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alc" = (
/obj/structure/cable/white{
d1 = 1;
@@ -6858,15 +6715,11 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ald" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ale" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock{
@@ -6877,15 +6730,11 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alf" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alg" = (
/turf/closed/wall/r_wall,
/area/teleporter)
@@ -6926,9 +6775,7 @@
/obj/structure/cable/white,
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"all" = (
/obj/structure/sign/directions/engineering{
dir = 8;
@@ -6941,13 +6788,10 @@
pixel_y = -8
},
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alm" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/light{
dir = 8
@@ -6960,9 +6804,7 @@
/turf/open/floor/plasteel{
icon_state = "L2"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aln" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -6970,9 +6812,7 @@
/turf/open/floor/plasteel{
icon_state = "L4"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alo" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -6983,24 +6823,18 @@
/turf/open/floor/plasteel{
icon_state = "L6"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alp" = (
/turf/open/floor/plasteel{
icon_state = "L8"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alq" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel{
icon_state = "L10"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alr" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -7008,9 +6842,7 @@
/turf/open/floor/plasteel{
icon_state = "L12"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"als" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-22"
@@ -7026,9 +6858,7 @@
/turf/open/floor/plasteel{
icon_state = "L14"
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alt" = (
/obj/structure/sign/directions/engineering{
desc = "A direction sign, pointing out which way the Supply department is.";
@@ -7047,21 +6877,15 @@
pixel_y = -8
},
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alu" = (
/turf/closed/wall/r_wall,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"alv" = (
/obj/structure/cable/white,
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"alw" = (
/obj/structure/cable/white{
d1 = 1;
@@ -7079,9 +6903,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"alx" = (
/obj/machinery/door/poddoor/shutters{
id = "evashutters";
@@ -7093,17 +6915,13 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"aly" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alz" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -7114,9 +6932,7 @@
/turf/open/floor/plasteel/brown/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alA" = (
/obj/structure/table/reinforced,
/obj/structure/noticeboard{
@@ -7341,9 +7157,7 @@
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alS" = (
/obj/structure/cable/white{
d1 = 1;
@@ -7360,9 +7174,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alT" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table,
@@ -7375,18 +7187,14 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alU" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alV" = (
/obj/structure/urinal{
pixel_y = 28
@@ -7396,18 +7204,14 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alW" = (
/obj/structure/urinal{
pixel_y = 28
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alX" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/crate/bin,
@@ -7415,9 +7219,7 @@
pixel_y = 24
},
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"alY" = (
/obj/machinery/shieldwallgen,
/obj/effect/decal/cleanable/dirt,
@@ -7491,9 +7293,7 @@
},
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amf" = (
/obj/structure/closet/crate/bin,
/obj/structure/cable/white{
@@ -7508,17 +7308,13 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amg" = (
/turf/open/floor/plasteel/neutral/corner{
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amh" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -7528,27 +7324,19 @@
},
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ami" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amj" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amk" = (
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aml" = (
/obj/structure/closet/emcloset,
/obj/structure/cable/white{
@@ -7563,9 +7351,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amm" = (
/obj/structure/cable/white{
d2 = 8;
@@ -7573,9 +7359,7 @@
},
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amn" = (
/obj/structure/cable/white{
d2 = 4;
@@ -7583,9 +7367,7 @@
},
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"amo" = (
/obj/structure/table/reinforced,
/obj/item/stack/sheet/metal{
@@ -7607,9 +7389,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"amp" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -7627,26 +7407,20 @@
dir = 9
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"amq" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"amr" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line{
dir = 5
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"ams" = (
/obj/structure/table/reinforced,
/obj/item/storage/toolbox/electrical{
@@ -7666,9 +7440,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"amt" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
@@ -7681,9 +7453,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amu" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -7696,9 +7466,7 @@
/turf/open/floor/plasteel/brown/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amv" = (
/obj/machinery/computer/stockexchange,
/obj/structure/table/reinforced,
@@ -7722,8 +7490,7 @@
},
/obj/machinery/light,
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/brown,
/area/quartermaster/storage)
@@ -7897,9 +7664,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amP" = (
/obj/machinery/firealarm{
dir = 1;
@@ -7910,15 +7675,11 @@
dir = 1
},
/turf/open/floor/plasteel/neutral/side,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amQ" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/neutral/side,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amR" = (
/obj/machinery/airalarm{
dir = 1;
@@ -7926,9 +7687,7 @@
},
/obj/machinery/light/small,
/turf/open/floor/plasteel/neutral/side,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amS" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/camera{
@@ -7937,9 +7696,7 @@
network = list("SS13")
},
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"amT" = (
/obj/structure/table/reinforced,
/obj/item/stack/cable_coil/white,
@@ -8008,9 +7765,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ana" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -8022,20 +7777,14 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anb" = (
/turf/open/floor/plasteel/neutral/side,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anc" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"and" = (
/obj/structure/closet/firecloset,
/obj/structure/sign/nanotrasen{
@@ -8048,24 +7797,18 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ane" = (
/obj/structure/sign/electricshock,
/turf/closed/wall/r_wall,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"anf" = (
/obj/machinery/suit_storage_unit/standard_unit,
/obj/effect/turf_decal/stripes/end{
dir = 8
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"ang" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -8080,9 +7823,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"anh" = (
/obj/structure/table/reinforced,
/obj/item/storage/belt/utility,
@@ -8092,18 +7833,14 @@
/obj/item/device/flashlight/flare,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"ani" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"anj" = (
/obj/machinery/suit_storage_unit/standard_unit,
/obj/effect/decal/cleanable/dirt,
@@ -8116,9 +7853,7 @@
dir = 4
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"ank" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
@@ -8126,9 +7861,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
@@ -8141,9 +7874,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anm" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
@@ -8372,8 +8103,7 @@
/area/security/brig)
"anF" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/door_timer{
id = "brig2";
@@ -8406,9 +8136,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anI" = (
/obj/machinery/door/firedoor,
/obj/structure/cable/white{
@@ -8421,9 +8149,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anJ" = (
/obj/machinery/door/airlock{
name = "Toilet Unit"
@@ -8432,9 +8158,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anK" = (
/obj/machinery/door/airlock{
name = "Toilet Unit"
@@ -8444,9 +8168,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anL" = (
/obj/machinery/door/window/northleft{
dir = 4;
@@ -8504,9 +8226,7 @@
"anQ" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anR" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
@@ -8522,9 +8242,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anS" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
@@ -8534,9 +8252,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
@@ -8547,9 +8263,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"anU" = (
/obj/structure/closet/crate/rcd{
pixel_y = 4
@@ -8574,9 +8288,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"anV" = (
/obj/structure/cable/white{
d1 = 1;
@@ -8587,16 +8299,12 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"anW" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"anX" = (
/obj/machinery/requests_console{
department = "E.V.A. Storage";
@@ -8615,14 +8323,10 @@
dir = 4
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"anY" = (
/turf/closed/wall,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"anZ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/firealarm{
@@ -8632,9 +8336,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aoa" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
@@ -8647,9 +8349,7 @@
/turf/open/floor/plasteel/brown/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aob" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -8659,9 +8359,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aoc" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -8669,9 +8367,7 @@
/turf/open/floor/plasteel/brown/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aod" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -8680,9 +8376,7 @@
/turf/open/floor/plasteel/brown/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aoe" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -8694,9 +8388,7 @@
/turf/open/floor/plasteel/brown{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aof" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -8705,9 +8397,7 @@
/turf/open/floor/plasteel/brown/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aog" = (
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/obj/structure/cable/white{
@@ -8718,9 +8408,7 @@
/turf/open/floor/plasteel/brown/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aoh" = (
/obj/machinery/door/firedoor,
/obj/effect/decal/cleanable/dirt,
@@ -8944,9 +8632,7 @@
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aoC" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/vomit/old,
@@ -8959,9 +8645,7 @@
/obj/machinery/light/small,
/obj/effect/landmark/revenantspawn,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aoD" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/toilet{
@@ -8974,9 +8658,7 @@
/obj/effect/landmark/blobstart,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aoE" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/toilet{
@@ -8989,9 +8671,7 @@
/obj/effect/landmark/start/assistant,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aoF" = (
/obj/structure/table/reinforced,
/obj/item/stock_parts/cell/high,
@@ -9085,9 +8765,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aoO" = (
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/obj/structure/cable/white{
@@ -9108,9 +8786,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aoP" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -9121,9 +8797,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/neutral,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aoQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -9137,9 +8811,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aoR" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -9152,9 +8824,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aoS" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Maintenance Hatch";
@@ -9220,16 +8890,12 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"aoX" = (
/obj/structure/tank_dispenser/oxygen,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"aoY" = (
/obj/machinery/suit_storage_unit/standard_unit,
/obj/machinery/newscaster{
@@ -9239,9 +8905,7 @@
dir = 4
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"aoZ" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
@@ -9253,9 +8917,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"apa" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -9278,9 +8940,7 @@
icon_state = "2-4"
},
/turf/open/floor/plasteel/brown/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"apb" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -9295,9 +8955,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"apc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -9310,9 +8968,7 @@
/turf/open/floor/plasteel/brown/corner{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"apd" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/structure/cable/white{
@@ -9323,9 +8979,7 @@
/turf/open/floor/plasteel/brown/corner{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ape" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -9337,9 +8991,7 @@
},
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/brown,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"apf" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/structure/cable/white{
@@ -9348,9 +9000,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/brown/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"apg" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -9369,9 +9019,7 @@
icon_state = "1-8"
},
/turf/open/floor/plasteel/brown/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aph" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -9384,9 +9032,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"api" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/mining{
@@ -9706,9 +9352,7 @@
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"apH" = (
/obj/structure/cable/white{
d1 = 1;
@@ -9730,9 +9374,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"apI" = (
/turf/closed/wall,
/area/storage/primary)
@@ -9874,9 +9516,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"apU" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -9901,30 +9541,22 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"apV" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/neutral,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"apW" = (
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/turf/open/floor/plasteel/neutral/corner,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"apX" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"apY" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -9982,9 +9614,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"aqd" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/status_display{
@@ -9999,9 +9629,7 @@
dir = 10
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"aqe" = (
/obj/machinery/power/apc{
dir = 2;
@@ -10015,9 +9643,7 @@
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"aqf" = (
/obj/machinery/status_display{
pixel_y = -32
@@ -10029,9 +9655,7 @@
dir = 6
},
/turf/open/floor/plasteel,
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"aqg" = (
/obj/structure/table/reinforced,
/obj/item/stack/sheet/plasteel{
@@ -10056,18 +9680,14 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/ai_monitored/storage/eva{
- name = "E.V.A. Storage"
- })
+/area/ai_monitored/storage/eva)
"aqh" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/neutral/corner{
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aqi" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -10076,16 +9696,12 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/brown/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aqj" = (
/obj/machinery/computer/cargo/request,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aqk" = (
/obj/structure/chair{
dir = 1
@@ -10093,9 +9709,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aql" = (
/obj/structure/chair{
dir = 1
@@ -10103,9 +9717,7 @@
/obj/effect/landmark/start/assistant,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aqm" = (
/obj/structure/table,
/obj/machinery/light,
@@ -10116,9 +9728,7 @@
/obj/item/pen,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aqn" = (
/obj/structure/chair{
dir = 1
@@ -10129,9 +9739,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aqo" = (
/obj/structure/chair{
dir = 1
@@ -10140,9 +9748,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aqp" = (
/obj/machinery/autolathe,
/obj/structure/extinguisher_cabinet{
@@ -10155,9 +9761,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aqq" = (
/obj/structure/rack,
/obj/item/storage/toolbox/emergency{
@@ -10302,9 +9906,7 @@
dir = 4
},
/turf/open/floor/plating/astplate,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"aqH" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
@@ -10387,8 +9989,7 @@
/area/security/brig)
"aqP" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/firealarm{
dir = 4;
@@ -10435,9 +10036,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aqT" = (
/obj/structure/table/reinforced,
/obj/item/storage/belt/utility,
@@ -10523,15 +10122,11 @@
/area/maintenance/port/central)
"ara" = (
/turf/closed/wall,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"arb" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"arc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
@@ -10547,9 +10142,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"ard" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
@@ -10559,9 +10152,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"are" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
@@ -10572,9 +10163,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"arf" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/directions/engineering{
@@ -10584,9 +10173,7 @@
pixel_x = 32
},
/turf/open/floor/plating,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"arg" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -10614,9 +10201,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"arj" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -10625,9 +10210,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ark" = (
/obj/structure/table/reinforced,
/obj/machinery/airalarm{
@@ -10904,9 +10487,7 @@
/area/engine/atmos)
"arB" = (
/turf/open/floor/plating/astplate,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"arC" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
@@ -10921,6 +10502,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
+/obj/structure/closet/l3closet/security,
/turf/open/floor/plasteel/vault{
dir = 5
},
@@ -11327,18 +10909,13 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"ase" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"asf" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -11347,28 +10924,20 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"asg" = (
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"ash" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"asi" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"asj" = (
/obj/machinery/vending/cola,
/obj/machinery/newscaster{
@@ -11377,9 +10946,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"ask" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -11465,9 +11032,7 @@
/turf/open/floor/plasteel/loadingarea{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ass" = (
/obj/machinery/mineral/mint,
/obj/effect/decal/cleanable/dirt,
@@ -11477,15 +11042,11 @@
pixel_y = 32
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ast" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/loadingarea,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"asu" = (
/obj/structure/shuttle/engine/propulsion/burst,
/obj/structure/window/reinforced{
@@ -11615,9 +11176,7 @@
pixel_x = -32
},
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"asJ" = (
/obj/structure/closet/wardrobe/red,
/obj/item/clothing/under/rank/security/grey,
@@ -11804,9 +11363,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"asU" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass_engineering{
@@ -11991,9 +11548,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"atj" = (
/obj/machinery/vending/coffee,
/obj/machinery/firealarm{
@@ -12007,30 +11562,28 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"atk" = (
/turf/closed/wall,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"atl" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
/turf/closed/wall,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"atm" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/closed/wall,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"atn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
/turf/closed/wall,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"ato" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -12052,9 +11605,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"atq" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -12068,18 +11619,14 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"atr" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ats" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -12087,9 +11634,7 @@
/obj/effect/turf_decal/bot,
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"att" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -12098,9 +11643,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"atu" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/external{
@@ -12117,9 +11660,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"atv" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -12130,9 +11671,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"atw" = (
/obj/machinery/portable_atmospherics/canister/nitrogen,
/obj/machinery/light/small{
@@ -12265,9 +11804,7 @@
/turf/open/floor/plasteel/caution/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"atL" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Security Maintenance";
@@ -12295,9 +11832,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"atN" = (
/obj/structure/cable/white{
d1 = 1;
@@ -12311,9 +11846,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"atO" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass_engineering{
@@ -12515,7 +12048,6 @@
},
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -12530,9 +12062,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"auc" = (
/obj/item/reagent_containers/food/condiment/saltshaker{
pixel_x = -8;
@@ -12544,22 +12074,16 @@
/obj/structure/table/wood,
/obj/item/kitchen/fork,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aud" = (
/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aue" = (
/obj/structure/chair/stool/bar,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"auf" = (
/obj/structure/table/reinforced,
/obj/item/lighter{
@@ -12570,14 +12094,14 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"aug" = (
/obj/structure/sign/barsign{
pixel_y = 32
},
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel/black,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"auh" = (
/obj/structure/table/wood,
/obj/machinery/chem_dispenser/drinks,
@@ -12594,11 +12118,11 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"aui" = (
/obj/machinery/status_display,
/turf/closed/wall,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"auj" = (
/obj/structure/table/wood,
/obj/structure/reagent_dispensers/beerkeg,
@@ -12611,7 +12135,7 @@
network = list("MINE")
},
/turf/open/floor/plasteel/vault,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"auk" = (
/obj/structure/sink/kitchen{
desc = "A sink used for washing one's hands and face. It looks rusty and home-made";
@@ -12620,7 +12144,7 @@
},
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel/vault,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"aul" = (
/obj/structure/closet/gmcloset,
/obj/item/wrench,
@@ -12637,11 +12161,11 @@
pixel_x = 26
},
/turf/open/floor/plasteel/vault,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"aum" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"aun" = (
/obj/effect/landmark/blobstart,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -12661,9 +12185,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aup" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/airalarm{
@@ -12676,9 +12198,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"auq" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
dir = 4;
@@ -12799,9 +12319,7 @@
"auD" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auE" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/space_heater,
@@ -12814,18 +12332,14 @@
dir = 10
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auF" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/structure/sign/poster/contraband/random,
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auG" = (
/obj/effect/decal/cleanable/cobweb,
/obj/effect/decal/cleanable/dirt,
@@ -12833,9 +12347,7 @@
dir = 4
},
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auH" = (
/obj/structure/cable/white{
d1 = 2;
@@ -12848,9 +12360,7 @@
},
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/red/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auI" = (
/obj/structure/cable/white{
d1 = 4;
@@ -12863,9 +12373,7 @@
dir = 4
},
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auJ" = (
/obj/structure/cable/white{
d1 = 1;
@@ -12881,9 +12389,7 @@
/obj/effect/landmark/revenantspawn,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auK" = (
/obj/structure/cable/white{
d1 = 4;
@@ -12898,9 +12404,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auL" = (
/obj/effect/landmark/blobstart,
/obj/structure/cable/white{
@@ -12917,9 +12421,7 @@
icon_state = "2-4"
},
/turf/open/floor/plasteel/red/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auM" = (
/obj/structure/cable/white{
d1 = 4;
@@ -12938,9 +12440,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"auN" = (
/obj/structure/cable/white{
d1 = 4;
@@ -12953,9 +12453,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"auO" = (
/obj/structure/cable/white{
d1 = 4;
@@ -12982,9 +12480,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"auP" = (
/obj/structure/cable/white{
d1 = 4;
@@ -12997,9 +12493,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"auQ" = (
/obj/structure/cable/white{
d1 = 4;
@@ -13012,9 +12506,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"auR" = (
/obj/structure/cable/white{
d1 = 4;
@@ -13028,9 +12520,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"auS" = (
/obj/structure/cable/white{
d1 = 1;
@@ -13043,9 +12533,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"auT" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/yellow/side{
@@ -13130,9 +12618,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"avf" = (
/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -13144,9 +12630,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"avg" = (
/obj/structure/table/wood,
/obj/item/device/paicard,
@@ -13154,9 +12638,7 @@
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"avh" = (
/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -13164,26 +12646,20 @@
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"avi" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"avj" = (
/obj/structure/chair/stool/bar,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"avk" = (
/obj/structure/table/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -13192,7 +12668,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"avl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -13201,7 +12677,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"avm" = (
/obj/structure/table/wood,
/obj/machinery/chem_dispenser/drinks/beer,
@@ -13211,14 +12687,14 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"avn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/sign/poster/random,
/turf/closed/wall,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"avo" = (
/obj/structure/table/wood,
/obj/item/storage/box/beanbag,
@@ -13227,7 +12703,7 @@
dir = 4
},
/turf/open/floor/plasteel/black,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"avp" = (
/obj/effect/landmark/start/bartender,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -13237,7 +12713,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"avq" = (
/obj/machinery/chem_master/condimaster{
name = "HoochMaster 2000"
@@ -13252,13 +12728,13 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"avr" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
/turf/closed/wall,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"avs" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -13277,9 +12753,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avu" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -13291,16 +12765,12 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avv" = (
/obj/machinery/shieldgen,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avw" = (
/obj/machinery/shieldgen,
/obj/effect/decal/cleanable/dirt,
@@ -13308,9 +12778,7 @@
dir = 5
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avx" = (
/obj/structure/grille,
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
@@ -13423,9 +12891,7 @@
dir = 6
},
/turf/open/floor/plasteel/caution,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avJ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -13437,9 +12903,7 @@
dir = 4
},
/turf/open/floor/plasteel/caution,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avK" = (
/obj/structure/cable/white{
d1 = 4;
@@ -13458,9 +12922,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avL" = (
/obj/structure/cable/white{
d1 = 4;
@@ -13471,10 +12933,18 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/machinery/power/apc{
+ dir = 2;
+ name = "Port Bow Maintenance APC";
+ areastring = "/area/maintenance/port/fore";
+ pixel_y = -26
+ },
+/obj/structure/cable/white{
+ d2 = 4;
+ icon_state = "0-4"
+ },
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avM" = (
/obj/structure/cable/white{
d1 = 1;
@@ -13489,18 +12959,14 @@
dir = 1
},
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avN" = (
/obj/structure/girder,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avO" = (
/obj/structure/rack,
/obj/item/clothing/gloves/color/black,
@@ -13516,9 +12982,7 @@
dir = 9
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avP" = (
/obj/structure/closet/crate{
icon_state = "crateopen";
@@ -13538,9 +13002,7 @@
dir = 1
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avQ" = (
/obj/structure/table,
/obj/item/clothing/under/rank/security,
@@ -13555,17 +13017,13 @@
dir = 5
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avR" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/port/fore)
"avS" = (
/obj/machinery/vending/cigarette,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -13577,9 +13035,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -13593,9 +13049,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avU" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
@@ -13604,17 +13058,13 @@
dir = 1
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avV" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avW" = (
/obj/machinery/airalarm{
dir = 1;
@@ -13624,22 +13074,17 @@
dir = 9
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avX" = (
/obj/machinery/firealarm{
dir = 4;
pixel_x = 24
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"avY" = (
/obj/structure/table/reinforced,
/obj/item/stock_parts/cell/high,
@@ -13752,9 +13197,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awk" = (
/obj/structure/chair/stool,
/obj/effect/landmark/start/assistant,
@@ -13765,42 +13208,32 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awl" = (
/obj/structure/table/wood,
/obj/item/storage/bag/tray,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awm" = (
/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awn" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awo" = (
/obj/structure/chair/stool/bar,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awp" = (
/obj/structure/table/reinforced,
/obj/item/storage/box/matches{
@@ -13813,7 +13246,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"awq" = (
/obj/effect/landmark/start/bartender,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
@@ -13823,7 +13256,7 @@
icon_state = "2-4"
},
/turf/open/floor/plasteel/black,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"awr" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -13837,7 +13270,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"aws" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock{
@@ -13856,7 +13289,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"awt" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -13869,7 +13302,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"awu" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/structure/cable/white{
@@ -13880,7 +13313,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"awv" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -13896,7 +13329,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"aww" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/maintenance_hatch{
@@ -13949,9 +13382,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"awz" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -13960,9 +13391,7 @@
dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"awA" = (
/turf/open/floor/engine/o2,
/area/engine/atmos)
@@ -14091,7 +13520,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/engine/atmos)
+/area/maintenance/port/fore)
"awN" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/plasticflaps{
@@ -14117,9 +13546,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"awP" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
@@ -14149,9 +13576,7 @@
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awU" = (
/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -14164,9 +13589,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awV" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb,
@@ -14174,23 +13597,19 @@
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awW" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"awX" = (
/obj/structure/table/reinforced,
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"awY" = (
/obj/structure/cable/white{
d1 = 1;
@@ -14201,7 +13620,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"awZ" = (
/obj/structure/table/wood,
/obj/item/book/manual/barman_recipes,
@@ -14211,11 +13630,11 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"axa" = (
/obj/machinery/vending/boozeomat,
/turf/closed/wall,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"axb" = (
/obj/structure/table/wood,
/obj/machinery/reagentgrinder{
@@ -14229,7 +13648,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"axc" = (
/obj/structure/closet/gmcloset,
/obj/item/wrench,
@@ -14243,7 +13662,7 @@
/obj/item/stack/cable_coil/random,
/obj/machinery/light,
/turf/open/floor/plasteel/black,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"axd" = (
/obj/structure/closet/secure_closet/bar,
/obj/machinery/light_switch{
@@ -14255,7 +13674,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"axe" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -14271,9 +13690,7 @@
dir = 10
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"axg" = (
/obj/structure/rack,
/obj/item/crowbar/red,
@@ -14282,9 +13699,7 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"axh" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
/obj/machinery/light/small{
@@ -14375,8 +13790,7 @@
pixel_y = 32
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -14486,8 +13900,8 @@
/obj/item/stack/sheet/metal{
amount = 50
},
-/obj/item/grenade/chem_grenade/metalfoam,
-/obj/item/grenade/chem_grenade/metalfoam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
/obj/machinery/newscaster{
pixel_y = 32
},
@@ -14517,17 +13931,13 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"axC" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"axD" = (
/obj/structure/table,
/obj/item/paper_bin,
@@ -14660,9 +14070,7 @@
icon_state = "1-4"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"axP" = (
/obj/structure/cable/white{
d1 = 4;
@@ -14670,9 +14078,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"axQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -14681,9 +14087,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"axR" = (
/obj/structure/cable/white{
d1 = 4;
@@ -14698,7 +14102,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"axS" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -14709,7 +14113,7 @@
icon_state = "1-8"
},
/turf/open/floor/plasteel/black,
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"axT" = (
/obj/structure/table/wood,
/obj/item/clipboard,
@@ -14730,7 +14134,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"axU" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -14750,14 +14154,10 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"axW" = (
/turf/closed/wall,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"axX" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
@@ -14979,9 +14379,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ayu" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -15095,9 +14493,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"ayJ" = (
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/obj/structure/cable/white{
@@ -15106,32 +14502,24 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"ayK" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"ayL" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"ayM" = (
/obj/machinery/holopad,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"ayN" = (
/obj/item/storage/fancy/cigarettes/cigars{
pixel_y = 6
@@ -15144,7 +14532,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"ayO" = (
/obj/structure/table/reinforced,
/obj/machinery/newscaster{
@@ -15154,7 +14542,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar)
+/area/crew_quarters/bar/atrium)
"ayP" = (
/turf/closed/wall,
/area/maintenance/starboard/central)
@@ -15210,16 +14598,12 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ayV" = (
/obj/structure/closet/firecloset,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"ayW" = (
/obj/structure/table/reinforced,
/obj/structure/cable/white{
@@ -15246,9 +14630,7 @@
/turf/open/floor/plasteel/red/side{
dir = 9
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"ayX" = (
/obj/structure/table/reinforced,
/obj/item/restraints/handcuffs,
@@ -15264,9 +14646,7 @@
/turf/open/floor/plasteel/red/side{
dir = 1
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"ayY" = (
/obj/structure/chair,
/obj/machinery/light{
@@ -15284,9 +14664,7 @@
/turf/open/floor/plasteel/red/side{
dir = 1
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"ayZ" = (
/obj/structure/chair,
/obj/machinery/ai_status_display{
@@ -15300,9 +14678,7 @@
/turf/open/floor/plasteel/red/side{
dir = 1
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aza" = (
/obj/structure/chair,
/obj/machinery/firealarm{
@@ -15311,15 +14687,11 @@
/turf/open/floor/plasteel/red/side{
dir = 5
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"azb" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"azc" = (
/obj/structure/chair{
dir = 4
@@ -15627,9 +14999,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"azJ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -15641,9 +15011,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"azK" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/food/drinks/britcup,
@@ -15651,9 +15019,7 @@
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"azL" = (
/obj/structure/closet/crate/bin,
/obj/structure/extinguisher_cabinet{
@@ -15663,9 +15029,7 @@
dir = 5
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"azM" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -15733,9 +15097,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"azT" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
@@ -15744,33 +15106,25 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"azU" = (
/obj/structure/closet/crate/bin,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"azV" = (
/obj/structure/table/reinforced,
/obj/machinery/recharger,
/turf/open/floor/plasteel/red/side{
dir = 8
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"azW" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"azX" = (
/obj/machinery/holopad,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -15778,9 +15132,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"azY" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/structure/cable/white{
@@ -15789,9 +15141,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"azZ" = (
/obj/structure/chair{
dir = 8
@@ -15799,9 +15149,7 @@
/turf/open/floor/plasteel/red/side{
dir = 4
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aAa" = (
/obj/structure/chair{
dir = 4
@@ -16078,9 +15426,7 @@
/turf/open/floor/plasteel/neutral,
/area/engine/atmos)
"aAB" = (
-/obj/machinery/computer/station_alert{
- density = 0
- },
+/obj/machinery/computer/station_alert,
/obj/structure/cable/white{
d1 = 1;
d2 = 4;
@@ -16097,9 +15443,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aAD" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
@@ -16188,7 +15532,7 @@
/obj/machinery/power/apc{
dir = 8;
name = "Atrium APC";
- areastring = "/area/crew_quarters/bar";
+ areastring = "/area/crew_quarters/bar/atrium";
pixel_x = -26;
pixel_y = 3
},
@@ -16197,9 +15541,7 @@
icon_state = "0-4"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aAO" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -16228,9 +15570,7 @@
icon_state = "1-4"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aAP" = (
/obj/item/reagent_containers/food/condiment/saltshaker{
pixel_x = -8;
@@ -16248,9 +15588,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aAQ" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
@@ -16261,9 +15599,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aAR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -16274,9 +15610,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aAS" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -16287,9 +15621,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aAT" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Maintenance Hatch";
@@ -16380,9 +15712,7 @@
dir = 4
},
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aAZ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -16392,9 +15722,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aBa" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -16405,17 +15733,13 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aBb" = (
/obj/machinery/vending/cola,
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aBc" = (
/obj/machinery/computer/security,
/obj/machinery/newscaster/security_unit{
@@ -16424,22 +15748,16 @@
/turf/open/floor/plasteel/red/side{
dir = 10
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aBd" = (
/obj/structure/chair/office/dark,
/turf/open/floor/plasteel/red/side,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aBe" = (
/obj/machinery/computer/secure_data,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/red/side,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aBf" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -16448,9 +15766,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/red/side,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aBg" = (
/obj/machinery/camera{
c_tag = "Security - Departures Starboard";
@@ -16460,9 +15776,7 @@
/turf/open/floor/plasteel/red/side{
dir = 6
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aBh" = (
/obj/machinery/door/airlock/external{
name = "External Docking Port";
@@ -16472,16 +15786,12 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aBi" = (
/obj/structure/fans/tiny,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aBj" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Airlock";
@@ -16500,7 +15810,6 @@
"aBl" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -16748,9 +16057,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aBL" = (
/obj/effect/landmark/lightsout,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -16763,9 +16070,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aBM" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
@@ -16917,16 +16222,12 @@
dir = 8
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aBZ" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/food/snacks/cheesiehonkers,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aCa" = (
/obj/machinery/light{
dir = 4
@@ -16935,9 +16236,7 @@
icon_state = "plant-22"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aCb" = (
/obj/machinery/status_display,
/turf/closed/wall,
@@ -16974,9 +16273,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aCh" = (
/obj/machinery/vending/snack,
/obj/machinery/firealarm{
@@ -16987,9 +16284,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aCi" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable/white{
@@ -16997,9 +16292,7 @@
icon_state = "0-4"
},
/turf/open/floor/plating,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aCj" = (
/obj/machinery/door/firedoor,
/obj/structure/cable/white{
@@ -17029,9 +16322,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aCk" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable/white{
@@ -17044,9 +16335,7 @@
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aCl" = (
/obj/machinery/door/firedoor,
/obj/structure/cable/white{
@@ -17073,9 +16362,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aCm" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable/white{
@@ -17083,16 +16370,12 @@
icon_state = "0-8"
},
/turf/open/floor/plating,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aCn" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/vacuum,
/turf/open/floor/plating,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aCo" = (
/obj/machinery/door/airlock/glass_security{
name = "Holding Area";
@@ -17388,15 +16671,11 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aCM" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aCN" = (
/obj/structure/table,
/obj/item/storage/firstaid/regular,
@@ -17471,9 +16750,7 @@
dir = 10
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aCV" = (
/obj/structure/table/reinforced,
/obj/item/clipboard,
@@ -17550,9 +16827,7 @@
"aDc" = (
/obj/machinery/status_display,
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aDd" = (
/obj/structure/table,
/obj/item/paper_bin,
@@ -17566,9 +16841,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aDe" = (
/obj/structure/cable/white{
d1 = 1;
@@ -17578,9 +16851,7 @@
/turf/open/floor/plasteel/escape{
dir = 1
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aDg" = (
/obj/structure/cable/white{
d1 = 1;
@@ -17591,15 +16862,11 @@
/turf/open/floor/plasteel/escape{
dir = 1
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aDh" = (
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aDi" = (
/obj/machinery/door/airlock/external{
name = "External Docking Port"
@@ -17608,9 +16875,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aDj" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Airlock"
@@ -17647,7 +16912,6 @@
"aDm" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -17712,9 +16976,7 @@
"aDv" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aDw" = (
/obj/machinery/firealarm{
dir = 8;
@@ -17728,9 +16990,7 @@
/turf/open/floor/plasteel/escape{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aDx" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
@@ -17743,17 +17003,13 @@
/turf/open/floor/plasteel/caution{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aDy" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/caution{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aDz" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
@@ -17761,9 +17017,7 @@
/turf/open/floor/plasteel/caution{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aDA" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
@@ -17771,28 +17025,21 @@
/turf/open/floor/plasteel/caution{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aDB" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/caution{
dir = 5
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aDC" = (
/obj/structure/table/reinforced,
/obj/item/airlock_painter,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aDD" = (
/turf/open/floor/plasteel/neutral/corner{
dir = 8;
@@ -17927,27 +17174,21 @@
icon_state = "1-8"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aDP" = (
/obj/effect/landmark/xmastree,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aDQ" = (
/obj/structure/chair/stool/bar,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aDR" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
@@ -18028,32 +17269,24 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEa" = (
/obj/structure/table,
/obj/item/storage/firstaid/regular,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEb" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aEc" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aEd" = (
/obj/structure/chair{
dir = 4
@@ -18061,24 +17294,18 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aEe" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aEf" = (
/obj/structure/chair{
dir = 8
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aEg" = (
/obj/structure/chair{
dir = 4
@@ -18352,9 +17579,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/sign/nosmoking_2,
/turf/closed/wall/r_wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEB" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 4
@@ -18363,9 +17588,7 @@
/turf/open/floor/plasteel/escape{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEC" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
@@ -18376,34 +17599,26 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aED" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEE" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEF" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEG" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -18411,9 +17626,7 @@
/turf/open/floor/plasteel/yellow/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEH" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -18426,9 +17639,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEI" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -18442,9 +17653,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEJ" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
@@ -18453,9 +17662,7 @@
pixel_x = 24
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aEK" = (
/obj/machinery/vending/clothing,
/obj/machinery/firealarm{
@@ -18468,8 +17675,7 @@
/area/crew_quarters/dorms)
"aEL" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/status_display{
pixel_y = -32
@@ -18605,16 +17811,12 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aEX" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/food/snacks/chips,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aEY" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
@@ -18752,17 +17954,13 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFi" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFj" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
@@ -18775,32 +17973,24 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aFk" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aFl" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aFn" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aFo" = (
/obj/structure/extinguisher_cabinet,
/turf/closed/wall/mineral/titanium/nodiagonal,
@@ -18983,9 +18173,7 @@
/turf/open/floor/plasteel/arrival{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
@@ -19006,9 +18194,7 @@
icon_state = "2-4"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFE" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -19017,9 +18203,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFF" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
@@ -19031,9 +18215,7 @@
},
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFG" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -19045,9 +18227,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFH" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -19058,9 +18238,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/yellow/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFI" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -19078,9 +18256,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFJ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -19094,9 +18270,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFK" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -19115,9 +18289,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFL" = (
/obj/machinery/firealarm{
dir = 4;
@@ -19129,9 +18301,7 @@
dir = 8
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFM" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -19155,9 +18325,7 @@
network = list("MINE")
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aFO" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/food/drinks/soda_cans/cola,
@@ -19165,18 +18333,14 @@
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aFP" = (
/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aFQ" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
@@ -19233,9 +18397,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFY" = (
/obj/machinery/holopad,
/obj/effect/landmark/lightsout,
@@ -19247,9 +18409,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aFZ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
@@ -19259,23 +18419,17 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aGa" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aGb" = (
/obj/machinery/holopad,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aGc" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/directions/engineering{
@@ -19284,9 +18438,7 @@
name = "WARNING: EXTERNAL AIRLOCK"
},
/turf/open/floor/plating,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aGd" = (
/obj/structure/flora/ausbushes/grassybush,
/obj/structure/flora/ausbushes/lavendergrass,
@@ -19423,9 +18575,7 @@
/turf/open/floor/plasteel/arrival{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGq" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -19438,9 +18588,7 @@
/turf/open/floor/plasteel/yellow/corner{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGr" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/light,
@@ -19451,33 +18599,25 @@
/turf/open/floor/plasteel/yellow/corner{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGs" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/yellow/corner{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGt" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
/turf/open/floor/plasteel/yellow/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGu" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/yellow/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGv" = (
/obj/structure/table/reinforced,
/obj/item/stock_parts/cell/high,
@@ -19485,9 +18625,7 @@
/obj/machinery/cell_charger,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGw" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -19502,17 +18640,13 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGx" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGy" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
@@ -19717,9 +18851,7 @@
icon_state = "2-8"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aGO" = (
/obj/item/reagent_containers/food/condiment/saltshaker{
pixel_x = -8;
@@ -19734,9 +18866,7 @@
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aGP" = (
/obj/structure/chair/stool,
/obj/effect/landmark/start/assistant,
@@ -19744,9 +18874,7 @@
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aGQ" = (
/obj/machinery/holopad,
/obj/item/device/radio/intercom{
@@ -19754,9 +18882,7 @@
pixel_x = 28
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aGR" = (
/obj/machinery/vending/dinnerware,
/obj/machinery/button/door{
@@ -19846,23 +18972,21 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aGY" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aHe" = (
/turf/open/floor/plasteel/vault{
dir = 1
@@ -19901,8 +19025,7 @@
req_access_txt = "10"
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -20259,9 +19382,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aHD" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -20273,9 +19394,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aHE" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -20288,9 +19407,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aHF" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/maintenance_hatch{
@@ -20461,9 +19578,7 @@
dir = 4
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aHS" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
@@ -20474,28 +19589,21 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aHT" = (
/obj/structure/table/wood,
/obj/item/reagent_containers/food/drinks/coffee,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aHU" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/structure/sign/poster/random{
pixel_x = 32
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aHV" = (
/obj/machinery/status_display,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -20533,27 +19641,20 @@
/obj/item/pen,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aHZ" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aIa" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aIb" = (
/obj/structure/sign/radiation{
pixel_x = -32
@@ -20871,9 +19972,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aIA" = (
/obj/machinery/airalarm{
dir = 8;
@@ -20884,9 +19983,7 @@
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aIB" = (
/turf/closed/wall,
/area/janitor)
@@ -21053,9 +20150,7 @@
},
/obj/structure/closet/crate/bin,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aIR" = (
/obj/structure/closet/secure_closet/freezer/meat,
/obj/effect/turf_decal/bot,
@@ -21143,9 +20238,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aIY" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -21159,15 +20252,11 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aIZ" = (
/obj/machinery/ai_status_display,
/turf/closed/wall,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aJa" = (
/obj/structure/table,
/obj/item/storage/pill_bottle/dice,
@@ -21180,20 +20269,14 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aJb" = (
/turf/open/floor/plasteel/escape,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aJc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/escape,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aJe" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Airlock";
@@ -21210,7 +20293,6 @@
"aJg" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -21457,8 +20539,8 @@
amount = 50
},
/obj/item/crowbar,
-/obj/item/grenade/chem_grenade/metalfoam,
-/obj/item/grenade/chem_grenade/metalfoam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
+/obj/item/grenade/chem_grenade/smart_metal_foam,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -21689,17 +20771,13 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aJX" = (
/obj/machinery/vending/cola,
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aJY" = (
/obj/structure/sign/nosmoking_2,
/turf/closed/wall,
@@ -21803,15 +20881,11 @@
/obj/structure/closet/emcloset,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aKh" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aKi" = (
/obj/structure/table/reinforced,
/obj/machinery/door/firedoor,
@@ -21824,9 +20898,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aKj" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/plasticflaps{
@@ -21836,9 +20908,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aKl" = (
/obj/structure/cable/white{
d2 = 8;
@@ -21847,9 +20917,7 @@
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/sign/vacuum,
/turf/open/floor/plating,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aKm" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Cargo"
@@ -22410,9 +21478,7 @@
pixel_y = -32
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aLg" = (
/obj/machinery/vending/snack,
/obj/machinery/firealarm{
@@ -22426,9 +21492,7 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aLh" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -22478,33 +21542,25 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aLn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aLt" = (
/turf/open/floor/plasteel/brown{
dir = 5
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aLu" = (
/obj/structure/fans/tiny,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aLv" = (
/obj/machinery/door/airlock/external{
name = "External Docking Port"
@@ -22514,9 +21570,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aLw" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -22835,8 +21889,7 @@
icon_state = "1-4"
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/yellow/side{
dir = 4
@@ -23007,9 +22060,7 @@
dir = 8
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aMu" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/white{
@@ -23023,9 +22074,7 @@
icon_state = "2-4"
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aMv" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/maintenance_hatch{
@@ -23076,44 +22125,33 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aMz" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/brown{
dir = 8
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aMA" = (
/obj/machinery/holopad,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aMB" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
/obj/effect/landmark/lightsout,
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aMC" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/brown{
dir = 4
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aMD" = (
/obj/machinery/recharge_station,
/obj/machinery/status_display{
@@ -23478,18 +22516,14 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aNi" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/newscaster{
pixel_x = 32
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aNj" = (
/obj/structure/reagent_dispensers/watertank,
/obj/item/reagent_containers/glass/bucket,
@@ -23650,9 +22684,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aNz" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
@@ -23663,9 +22695,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"aNA" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -23741,9 +22771,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aNG" = (
/obj/structure/table/reinforced,
/obj/item/clipboard,
@@ -23761,9 +22789,7 @@
/turf/open/floor/plasteel/brown{
dir = 8
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aNH" = (
/obj/structure/closet/crate,
/obj/effect/decal/cleanable/dirt,
@@ -23772,9 +22798,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aNI" = (
/obj/structure/closet/crate,
/obj/item/device/radio/intercom{
@@ -23784,9 +22808,7 @@
/obj/machinery/light,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aNJ" = (
/obj/structure/closet/crate,
/obj/effect/decal/cleanable/dirt,
@@ -23795,9 +22817,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aNK" = (
/obj/structure/closet/crate,
/obj/machinery/firealarm{
@@ -23806,9 +22826,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"aNL" = (
/obj/structure/table,
/obj/item/clipboard,
@@ -24113,8 +23131,7 @@
/area/hallway/primary/central)
"aOm" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/redyellow/side{
dir = 9
@@ -24433,9 +23450,7 @@
/turf/open/floor/plasteel/vault{
dir = 5
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOP" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/structure/cable/white{
@@ -24452,9 +23467,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -24468,9 +23481,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOR" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -24488,9 +23499,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOS" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -24503,9 +23512,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -24524,9 +23531,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOU" = (
/obj/machinery/door/firedoor,
/obj/effect/landmark/lightsout,
@@ -24540,9 +23545,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOV" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -24562,9 +23565,7 @@
/turf/open/floor/plasteel/green/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOW" = (
/obj/machinery/light{
dir = 1
@@ -24589,9 +23590,7 @@
/turf/open/floor/plasteel/purple/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOX" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -24615,9 +23614,7 @@
/turf/open/floor/plasteel/green/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOY" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/structure/cable/white{
@@ -24633,9 +23630,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aOZ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -24651,9 +23646,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPa" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -24670,9 +23663,7 @@
/turf/open/floor/plasteel/green/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPb" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -24685,9 +23676,7 @@
/turf/open/floor/plasteel/blue/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPc" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -24704,9 +23693,7 @@
/turf/open/floor/plasteel/green/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPd" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -24975,9 +23962,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPv" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -24990,9 +23975,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPw" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -25006,9 +23989,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPx" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
@@ -25024,17 +24005,13 @@
icon_state = "2-8"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPy" = (
/obj/structure/table,
/obj/item/storage/briefcase,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPz" = (
/obj/effect/spawner/structure/window/reinforced/tinted,
/turf/open/floor/plating,
@@ -25276,13 +24253,10 @@
/turf/open/floor/plasteel/vault{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPX" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -25295,18 +24269,14 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPY" = (
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/turf/open/floor/plasteel/neutral/corner{
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aPZ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -25321,9 +24291,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQa" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -25335,18 +24303,14 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQb" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/open/floor/plasteel/neutral/corner{
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQc" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -25356,9 +24320,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQd" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -25367,9 +24329,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQe" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
@@ -25378,9 +24338,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQf" = (
/obj/machinery/firealarm{
dir = 1;
@@ -25393,9 +24351,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQg" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -25403,9 +24359,7 @@
/turf/open/floor/plasteel/yellow/corner{
dir = 8
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQh" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -25540,9 +24494,7 @@
"aQw" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/open/floor/plasteel/purple/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQx" = (
/obj/machinery/firealarm{
dir = 1;
@@ -25553,9 +24505,7 @@
},
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQy" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -25567,9 +24517,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQz" = (
/obj/structure/sign/securearea{
pixel_y = -32
@@ -25579,13 +24527,10 @@
dir = 9
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQA" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/newscaster{
pixel_y = -32
@@ -25596,9 +24541,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"aQB" = (
/obj/structure/table/wood,
/obj/item/crowbar/red,
@@ -25836,10 +24779,7 @@
/turf/open/floor/plasteel,
/area/library)
"aRa" = (
-/obj/structure/sign/kiddieplaque{
- desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside.";
- name = "Library Rules Sign"
- },
+/obj/structure/sign/kiddieplaque/library,
/turf/closed/wall,
/area/library)
"aRb" = (
@@ -26414,8 +25354,7 @@
icon_state = "0-2"
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/camera{
c_tag = "Chemistry";
@@ -26427,9 +25366,6 @@
},
/area/medical/chemistry)
"aSl" = (
-/obj/machinery/chem_master{
- density = 0
- },
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -26978,6 +25914,7 @@
/area/medical/chemistry)
"aTt" = (
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/chem_master,
/turf/open/floor/plasteel,
/area/medical/chemistry)
"aTu" = (
@@ -28214,6 +27151,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
+/obj/structure/closet/l3closet,
/turf/open/floor/plasteel/vault{
dir = 5
},
@@ -28650,7 +27588,6 @@
"aWR" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -28921,8 +27858,7 @@
/area/medical/medbay/zone3)
"aXu" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/button/door{
desc = "A remote control switch for the medbay foyer.";
@@ -29445,8 +28381,7 @@
/area/science/research)
"aYp" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/structure/extinguisher_cabinet{
pixel_x = 24
@@ -30759,7 +29694,7 @@
/turf/open/floor/plasteel/red/side{
dir = 9
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"baJ" = (
/obj/structure/cable/white{
d1 = 1;
@@ -30772,7 +29707,7 @@
/turf/open/floor/plasteel/red/side{
dir = 1
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"baK" = (
/obj/structure/table/reinforced,
/obj/item/book/manual/wiki/security_space_law,
@@ -30783,7 +29718,7 @@
/turf/open/floor/plasteel/red/side{
dir = 5
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"baL" = (
/obj/machinery/light{
dir = 8
@@ -31154,8 +30089,7 @@
/area/medical/medbay/zone3)
"bbs" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/whiteblue/corner,
/area/medical/medbay/zone3)
@@ -31209,7 +30143,7 @@
},
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bby" = (
/obj/machinery/light_switch{
pixel_x = -26;
@@ -31221,7 +30155,7 @@
/turf/open/floor/plasteel/red/side{
dir = 8
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bbz" = (
/obj/structure/cable/white{
d1 = 1;
@@ -31239,16 +30173,16 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bbA" = (
/obj/structure/cable/white{
d2 = 8;
icon_state = "0-8"
},
/obj/machinery/power/apc{
+ areastring = "/area/security/checkpoint";
dir = 4;
name = "Security Checkpoint APC";
- areastring = "/area/hallway/primary/central";
pixel_x = 26
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -31257,7 +30191,7 @@
/turf/open/floor/plasteel/red/side{
dir = 4
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bbB" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
@@ -31636,7 +30570,7 @@
icon_state = "0-2"
},
/turf/open/floor/plating,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bcn" = (
/obj/structure/table/reinforced,
/obj/item/paper_bin,
@@ -31644,7 +30578,7 @@
/turf/open/floor/plasteel/red/side{
dir = 8
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bco" = (
/obj/structure/cable/white{
d1 = 1;
@@ -31652,7 +30586,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bcp" = (
/obj/machinery/status_display{
pixel_x = 32
@@ -31661,7 +30595,7 @@
/turf/open/floor/plasteel/red/side{
dir = 6
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bcq" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
@@ -32001,7 +30935,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bde" = (
/obj/structure/cable/white{
d1 = 4;
@@ -32020,7 +30954,7 @@
/turf/open/floor/plasteel/red/side{
dir = 8
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bdf" = (
/obj/structure/cable/white{
d1 = 1;
@@ -32041,7 +30975,7 @@
icon_state = "1-4"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bdg" = (
/obj/machinery/computer/security,
/obj/machinery/light{
@@ -32053,7 +30987,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/red,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bdh" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable/white{
@@ -32061,7 +30995,7 @@
icon_state = "0-8"
},
/turf/open/floor/plating,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bdi" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
@@ -32549,14 +31483,14 @@
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable/white,
/turf/open/floor/plating,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bec" = (
/obj/structure/table/reinforced,
/obj/machinery/recharger,
/turf/open/floor/plasteel/red/side{
dir = 8
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bed" = (
/obj/structure/cable/white{
d1 = 1;
@@ -32565,7 +31499,7 @@
},
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel/neutral,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bee" = (
/obj/machinery/computer/secure_data,
/obj/machinery/ai_status_display{
@@ -32574,7 +31508,7 @@
/turf/open/floor/plasteel/red/side{
dir = 5
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bef" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -32883,7 +31817,7 @@
/turf/open/floor/plasteel/red/side{
dir = 10
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"beI" = (
/obj/structure/cable/white{
d1 = 1;
@@ -32892,7 +31826,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/red/side,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"beJ" = (
/obj/structure/closet/secure_closet/security,
/obj/machinery/airalarm{
@@ -32906,7 +31840,7 @@
/turf/open/floor/plasteel/red/side{
dir = 6
},
-/area/hallway/primary/central)
+/area/security/checkpoint)
"beK" = (
/obj/machinery/firealarm{
dir = 4;
@@ -33087,6 +32021,8 @@
/area/maintenance/port)
"beX" = (
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -33200,7 +32136,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central)
+/area/security/checkpoint)
"bfg" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
@@ -33831,10 +32767,7 @@
/area/chapel/main)
"bgb" = (
/obj/structure/bookcase,
-/obj/structure/sign/atmosplaque{
- desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom.";
- icon_state = "kiddieplaque";
- name = "Remembrance Plaque";
+/obj/structure/sign/kiddieplaque/badger{
pixel_y = 32
},
/obj/machinery/light/small{
@@ -34033,7 +32966,6 @@
"bgy" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -34700,7 +33632,6 @@
"bhL" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -34788,7 +33719,6 @@
"bhU" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -34865,10 +33795,7 @@
/obj/machinery/light/small{
dir = 1
},
-/obj/structure/sign/atmosplaque{
- desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom.";
- icon_state = "kiddieplaque";
- name = "Remembrance Plaque";
+/obj/structure/sign/kiddieplaque/badger{
pixel_y = 32
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -35707,6 +34634,7 @@
/turf/open/floor/plasteel/whitepurple/side,
/area/science/xenobiology)
"bjG" = (
+/obj/structure/closet/l3closet/scientist,
/turf/open/floor/plasteel/whitepurple/side{
dir = 6
},
@@ -36036,15 +34964,12 @@
/area/shuttle/arrival)
"bkd" = (
/obj/effect/turf_decal/delivery,
+/obj/structure/closet/wardrobe/mixed,
/turf/open/floor/plasteel,
/area/shuttle/arrival)
"bke" = (
/obj/structure/table/reinforced,
/obj/item/storage/toolbox/emergency,
-/obj/machinery/camera{
- c_tag = "Arrivals Suttle 1";
- network = list("Labor")
- },
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/shuttle/arrival)
@@ -36119,6 +35044,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/shuttle/arrival)
"bkn" = (
@@ -36138,7 +35066,6 @@
"bkq" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -36159,7 +35086,6 @@
"bks" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -36249,7 +35175,6 @@
"bkE" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -36271,7 +35196,6 @@
"bkH" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -36297,7 +35221,6 @@
"bkK" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -36319,19 +35242,18 @@
/turf/open/floor/plasteel,
/area/shuttle/arrival)
"bkN" = (
+/obj/structure/closet/wardrobe/black,
/turf/open/floor/plasteel/neutral/side,
/area/shuttle/arrival)
"bkO" = (
+/obj/structure/closet/wardrobe/grey,
/turf/open/floor/plasteel/blue/corner,
/area/shuttle/arrival)
"bkP" = (
/turf/open/floor/plasteel/blue/side,
/area/shuttle/arrival)
"bkQ" = (
-/obj/machinery/camera{
- c_tag = "Arrivals Shuttle 2";
- dir = 1
- },
+/obj/structure/closet/wardrobe/yellow,
/turf/open/floor/plasteel/blue/corner{
dir = 8
},
@@ -36360,10 +35282,16 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/arrival)
"bkU" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 2
+ },
/obj/machinery/door/airlock/shuttle{
name = "Arrival Shuttle Airlock";
req_access_txt = "0"
},
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/shuttle/arrival)
"bkV" = (
@@ -36445,9 +35373,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"blg" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -36460,9 +35386,7 @@
dir = 2
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"blh" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -36476,9 +35400,7 @@
network = list("SS13")
},
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"bli" = (
/obj/structure/closet/firecloset,
/obj/machinery/camera{
@@ -36488,9 +35410,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"blj" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -36505,9 +35425,7 @@
dir = 1
},
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"blk" = (
/obj/machinery/camera{
c_tag = "Atmospherics Tank 3";
@@ -36534,9 +35452,7 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"blm" = (
/obj/structure/closet/emcloset,
/obj/machinery/camera{
@@ -36546,9 +35462,7 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"bln" = (
/obj/structure/cable/white{
d1 = 1;
@@ -36580,14 +35494,14 @@
network = list("SS13")
},
/obj/structure/cable/white{
+ d1 = 2;
+ d2 = 8;
icon_state = "2-8"
},
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"blp" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/camera{
@@ -36767,6 +35681,7 @@
id = "chapelmassdoor";
name = "Chapel Launcher Door"
},
+/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/chapel/main)
"blJ" = (
@@ -36795,17 +35710,13 @@
dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"blM" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"blN" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -36814,9 +35725,7 @@
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"blO" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -36825,26 +35734,19 @@
dir = 1
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"blU" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"blX" = (
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"blY" = (
/obj/machinery/door/airlock/glass{
name = "Departure Lounge"
@@ -36853,37 +35755,26 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"blZ" = (
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bmb" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bmh" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bmw" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bmx" = (
/turf/closed/wall,
/area/space)
@@ -36901,9 +35792,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bmD" = (
/turf/open/floor/plasteel,
/area/space)
@@ -36915,9 +35804,7 @@
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bmH" = (
/turf/open/floor/plasteel,
/area/space)
@@ -38423,9 +37310,7 @@
/turf/open/floor/plasteel/escape{
dir = 1
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsw" = (
/obj/structure/chair{
dir = 4
@@ -38438,9 +37323,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsx" = (
/obj/structure/chair{
dir = 4
@@ -38457,9 +37340,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsy" = (
/obj/structure/chair{
dir = 4
@@ -38467,12 +37348,12 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/bot,
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsz" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -38491,9 +37372,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 4
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"bsA" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -38504,9 +37383,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"bsB" = (
/obj/machinery/door/airlock/glass{
name = "Departure Lounge"
@@ -38523,9 +37400,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsC" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -38536,16 +37411,13 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsD" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/structure/cable/white{
d1 = 4;
@@ -38553,9 +37425,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsE" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/machinery/light,
@@ -38565,53 +37435,51 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsF" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsG" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsH" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsI" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsJ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -38626,31 +37494,29 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsK" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsL" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsM" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -38666,9 +37532,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsN" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
@@ -38686,9 +37550,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsO" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -38700,9 +37562,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsP" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
@@ -38713,9 +37573,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsQ" = (
/obj/structure/chair{
dir = 4
@@ -38735,9 +37593,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -38746,9 +37602,7 @@
icon_state = "2-8"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsS" = (
/obj/structure/cable/white{
d1 = 1;
@@ -38756,9 +37610,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -38767,11 +37619,11 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/neutral,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsU" = (
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel,
@@ -38784,11 +37636,11 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel/escape,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsW" = (
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/plasteel,
@@ -38809,9 +37661,7 @@
icon_state = "1-2"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsY" = (
/obj/structure/cable/white{
d1 = 1;
@@ -38819,9 +37669,7 @@
icon_state = "1-4"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bsZ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass_mining{
@@ -38834,9 +37682,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bta" = (
/obj/structure/cable/white{
d1 = 4;
@@ -38846,9 +37692,7 @@
/turf/open/floor/plasteel/brown{
dir = 9
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"btb" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
@@ -38861,9 +37705,7 @@
/turf/open/floor/plasteel/brown{
dir = 1
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"btc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
@@ -38875,9 +37717,7 @@
icon_state = "4-8"
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"btd" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -38888,9 +37728,7 @@
/turf/open/floor/plasteel/brown{
dir = 1
},
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bte" = (
/obj/structure/window/reinforced/tinted/fulltile,
/obj/structure/grille,
@@ -38921,7 +37759,7 @@
dir = 2;
dwidth = 4;
height = 17;
- name = "delta arrivals shuttle";
+ name = "omega arrivals shuttle";
width = 9
},
/obj/docking_port/stationary{
@@ -38929,7 +37767,7 @@
dwidth = 4;
height = 17;
id = "arrivals_stationary";
- name = "delta arrivals";
+ name = "omega arrivals";
width = 9
},
/turf/closed/wall/mineral/plastitanium,
@@ -38965,9 +37803,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/entry{
- name = "Arrivals"
- })
+/area/hallway/secondary/entry)
"btn" = (
/obj/machinery/door/airlock/external{
cyclelinkeddir = 8;
@@ -38977,9 +37813,7 @@
dir = 8
},
/turf/open/floor/plasteel,
-/area/hallway/secondary/entry{
- name = "Arrivals"
- })
+/area/hallway/secondary/entry)
"bto" = (
/obj/machinery/computer/secure_data/syndie,
/turf/open/floor/plasteel/vault{
@@ -40207,10 +39041,13 @@
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/landmark/event_spawn,
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/open/floor/plating,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/maintenance/starboard/fore)
"bxx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/white{
@@ -40243,9 +39080,7 @@
/turf/open/floor/plasteel/neutral/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"bxA" = (
/obj/structure/cable/white{
d1 = 1;
@@ -40287,9 +39122,7 @@
/turf/open/floor/plasteel/red/corner{
dir = 1
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"bxE" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -40311,9 +39144,7 @@
},
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"bxH" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/landmark/event_spawn,
@@ -40344,15 +39175,11 @@
"bxL" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"bxM" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
-/area/hallway/secondary/exit{
- name = "\improper Departure Lounge"
- })
+/area/hallway/secondary/exit)
"bxN" = (
/obj/structure/cable/white{
d1 = 4;
@@ -40368,16 +39195,12 @@
"bxO" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/redyellow,
-/area/crew_quarters/bar{
- name = "Atrium"
- })
+/area/crew_quarters/bar/atrium)
"bxP" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel/neutral/corner,
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"bxQ" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -40387,9 +39210,7 @@
dir = 8;
heat_capacity = 1e+006
},
-/area/hallway/primary/central{
- name = "Primary Hallway"
- })
+/area/hallway/primary/central)
"bxR" = (
/obj/structure/cable/white{
d1 = 1;
@@ -40458,6 +39279,157 @@
heat_capacity = 1e+006
},
/area/hallway/secondary/entry)
+"bxZ" = (
+/turf/closed/wall,
+/area/maintenance/starboard/fore)
+"bya" = (
+/turf/closed/wall,
+/area/maintenance/starboard/fore)
+"byb" = (
+/turf/closed/wall,
+/area/maintenance/starboard/fore)
+"byc" = (
+/turf/closed/wall,
+/area/maintenance/starboard/fore)
+"byd" = (
+/turf/closed/wall,
+/area/maintenance/starboard/fore)
+"bye" = (
+/turf/closed/wall,
+/area/maintenance/fore)
+"byf" = (
+/obj/structure/sign/vacuum,
+/turf/closed/wall,
+/area/maintenance/starboard/fore)
+"byg" = (
+/obj/structure/closet/emcloset/anchored,
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/maintenance/starboard/fore)
+"byh" = (
+/obj/structure/sign/vacuum,
+/turf/closed/wall,
+/area/maintenance/starboard/fore)
+"byi" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/maintenance/starboard/fore)
+"byj" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/external{
+ name = "External Airlock";
+ req_access_txt = "13"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/starboard/fore)
+"byk" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/blood/old,
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/effect/landmark/xeno_spawn,
+/obj/effect/turf_decal/delivery,
+/turf/open/floor/plasteel,
+/area/maintenance/starboard/fore)
+"byl" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/door/airlock/external{
+ name = "External Airlock";
+ req_access_txt = "13"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/starboard/fore)
+"bym" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/neutral/corner{
+ dir = 8;
+ heat_capacity = 1e+006
+ },
+/area/maintenance/starboard/fore)
+"byn" = (
+/obj/structure/closet/wardrobe/grey,
+/turf/open/floor/plasteel/neutral,
+/area/shuttle/arrival)
+"byo" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byp" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byq" = (
+/obj/structure/cable/white{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/checkpoint)
+"byr" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"bys" = (
+/obj/structure/sign/nanotrasen,
+/turf/closed/wall,
+/area/security/checkpoint)
+"byt" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byu" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byv" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byw" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byx" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byy" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byz" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byA" = (
+/obj/structure/sign/nanotrasen,
+/turf/closed/wall,
+/area/security/checkpoint)
+"byB" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byC" = (
+/turf/closed/wall,
+/area/security/checkpoint)
+"byD" = (
+/turf/closed/wall,
+/area/security/checkpoint)
(1,1,1) = {"
aaa
@@ -78317,7 +77289,7 @@ aad
aad
aad
aad
-abt
+bye
abW
acN
adF
@@ -79902,7 +78874,7 @@ aMo
aNs
aHM
aPd
-aQh
+aQc
aRf
aSk
aTr
@@ -80159,7 +79131,7 @@ aMp
aNt
aOi
aPe
-aQi
+aQg
aRh
aSl
aTs
@@ -80672,8 +79644,8 @@ aLc
aMr
aNv
aOh
-aPg
-aQi
+aPb
+aQg
aRj
aSn
aTu
@@ -81186,10 +80158,10 @@ aLe
aHM
aNx
aOh
-aPg
+aPb
aQl
aRk
-aSo
+anH
aTw
aTw
aTw
@@ -81442,11 +80414,11 @@ asg
ase
ara
ara
-aOl
+all
aPi
aQm
-aRl
-aSp
+aIz
+awO
aTx
aTx
aVo
@@ -81702,26 +80674,26 @@ arb
aOm
aPj
aQn
-aRm
-aSq
+amg
+aIZ
aTy
aUx
aVp
aUx
aWP
-aSs
+aDc
aYc
aYW
-aXv
-aXv
+byo
+byo
bbx
bcm
bdd
beb
-aXv
-aZT
+byo
+bys
bfK
-bgg
+aQd
bgT
bhG
bxY
@@ -81959,26 +80931,26 @@ aNy
aOn
aPk
aQo
-aRm
-aSr
+amg
+anQ
aTz
aUy
aUy
aUy
aWQ
-aXv
+abt
aYc
aYW
-aXv
+byo
baI
bby
bcn
bde
bec
beH
-aXv
+byo
bfK
-bgg
+aQd
bgU
bhH
bix
@@ -82216,17 +81188,17 @@ ard
aOo
aPl
aQp
-aRn
-aSr
+ami
+anQ
aTA
aUy
aVq
aUy
aWR
-aXv
+abt
aYd
bls
-aZS
+byq
baJ
bbz
bco
@@ -82473,26 +81445,26 @@ aNz
aOp
aPm
aQq
-aRo
-aSr
+amk
+anQ
aTB
aUy
aUy
aUy
aWS
-aXv
+abt
aYe
aYW
-aXv
+byo
baK
bbA
bcp
bdg
bee
beJ
-aXv
+byo
bfK
-bgi
+avV
bgU
bhH
bix
@@ -82514,7 +81486,7 @@ bko
bkQ
bkV
bla
-blz
+bld
bkb
aaa
aaa
@@ -82730,26 +81702,26 @@ arf
aOq
aPn
aQr
-aRo
-aSs
+amk
+aDc
aTC
aUz
aVr
aUz
aWT
-aSq
+aIZ
aYc
aYW
-aZT
-aXv
-aXv
-aXv
+bys
+byo
+byo
+byo
bdh
-aXv
-aXv
-aXv
+byo
+byo
+byo
bfM
-bgi
+avV
bgV
bhG
biw
@@ -82768,7 +81740,7 @@ bko
bko
bko
bko
-bkN
+byn
bka
bka
bkb
@@ -82987,8 +81959,8 @@ ara
aOr
aPo
aQs
-aRp
-aSo
+aCM
+anH
aTD
aTD
aVs
@@ -83001,12 +81973,12 @@ aTD
baL
aTD
bcq
-bdi
+aED
aTD
-bdi
+aED
aTD
-bfN
-bgj
+aFG
+aGx
bgR
bhJ
biy
@@ -83220,7 +82192,7 @@ aoT
apZ
ara
ara
-atk
+ara
auf
avk
awp
@@ -83241,7 +82213,7 @@ aJY
aLh
aMv
ayP
-aOs
+ayV
aPp
aQt
blp
@@ -83263,7 +82235,7 @@ bef
beK
bfg
bfO
-bgk
+anc
bgW
bhK
biz
@@ -83274,14 +82246,14 @@ aaa
bjO
bjZ
bka
-bka
+bkm
bka
bkb
bkb
bkb
bkb
bkG
-bka
+bkm
bka
bka
aaa
@@ -83518,8 +82490,8 @@ bcs
bdk
aZa
beL
-bfh
-aOs
+aHE
+ayV
bgl
bgX
bhL
@@ -83996,7 +82968,7 @@ aui
avn
aws
axa
-atk
+ara
ayP
azM
aAT
@@ -84253,7 +83225,7 @@ auj
avo
awt
axb
-atk
+ara
ayQ
azN
aAU
@@ -84510,7 +83482,7 @@ auk
avp
awu
axc
-atk
+ara
ayR
azO
aAV
@@ -84528,7 +83500,7 @@ aCe
aNB
ayP
aPd
-aQh
+aQc
aRr
aSx
aTJ
@@ -84767,7 +83739,7 @@ aul
avq
awv
axd
-atk
+ara
ayS
azP
aso
@@ -85555,7 +84527,7 @@ abt
abt
abt
abt
-aPv
+aPp
avU
aRv
aSB
@@ -86026,18 +84998,18 @@ aad
aad
aad
aad
-abt
+bxZ
abL
acu
adm
bxw
-adm
+bym
afB
agu
ahj
adY
aiH
-ajG
+alz
akK
alz
amu
@@ -86283,9 +85255,9 @@ aad
aad
aad
aad
-abt
+bxZ
abM
-acv
+byi
adn
adn
adn
@@ -86540,9 +85512,9 @@ aad
aad
aad
aad
-abt
-abN
-acw
+bxZ
+byf
+byj
adn
adZ
aeP
@@ -86797,9 +85769,9 @@ aac
aad
aad
aad
-abt
-abO
-acx
+bxZ
+byg
+byk
adn
aea
aeQ
@@ -87054,9 +86026,9 @@ aad
aad
aad
aad
-abt
-abN
-acy
+bxZ
+byf
+byl
adn
aeb
aeR
@@ -87332,7 +86304,7 @@ ape
aqm
abt
abN
-atu
+acw
abt
aad
aad
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index d11b0d9352..9ac324de33 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -2168,9 +2168,7 @@
/turf/open/floor/plasteel/black,
/area/ai_monitored/turret_protected/aisat_interior)
"afe" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-09";
- name = "Photosynthetic Potted plant";
+/obj/item/twohanded/required/kirbyplants/photosynthetic{
pixel_y = 10
},
/obj/structure/cable/yellow{
@@ -2198,9 +2196,7 @@
},
/area/ai_monitored/turret_protected/aisat_interior)
"afg" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-09";
- name = "Photosynthetic Potted plant";
+/obj/item/twohanded/required/kirbyplants/photosynthetic{
pixel_y = 10
},
/obj/structure/cable/yellow{
@@ -3033,13 +3029,8 @@
/area/security/main)
"ahh" = (
/obj/structure/lattice/catwalk,
-/obj/structure/showcase{
- density = 0;
- desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze.";
+/obj/structure/showcase/cyborg/old{
dir = 2;
- icon = 'icons/mob/robots.dmi';
- icon_state = "robot_old";
- name = "Cyborg Statue";
pixel_y = 20
},
/turf/open/space,
@@ -4074,8 +4065,6 @@
"ajo" = (
/obj/machinery/vending/coffee,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/red/side{
@@ -4413,8 +4402,6 @@
/obj/structure/table/wood,
/obj/machinery/recharger,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/machinery/light{
@@ -4715,9 +4702,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/whitered/side{
dir = 5
},
@@ -6582,8 +6567,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = -32
},
/turf/open/floor/mineral/titanium/blue,
@@ -6596,8 +6579,6 @@
dir = 8
},
/obj/machinery/status_display{
- density = 0;
- layer = 3;
pixel_x = 32
},
/turf/open/floor/mineral/titanium/blue,
@@ -7483,12 +7464,9 @@
d2 = 8;
icon_state = "0-8"
},
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "bridgespace";
- name = "bridge external shutters";
- opacity = 0
+ name = "bridge external shutters"
},
/turf/open/floor/plating,
/area/bridge)
@@ -7947,8 +7925,6 @@
/area/bridge)
"arK" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/item/folder/yellow{
@@ -9402,22 +9378,16 @@
/turf/open/floor/plating,
/area/maintenance/fore)
"auK" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "bridgespace";
- name = "bridge external shutters";
- opacity = 0
+ name = "bridge external shutters"
},
/turf/open/floor/plasteel/black,
/area/bridge)
"auL" = (
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "bridgespace";
- name = "bridge external shutters";
- opacity = 0
+ name = "bridge external shutters"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/black,
@@ -10202,8 +10172,6 @@
dir = 4
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/arrival{
@@ -10237,8 +10205,7 @@
/area/crew_quarters/fitness/recreation)
"awC" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-05";
- layer = 4.1
+ icon_state = "plant-05"
},
/obj/machinery/power/apc{
dir = 1;
@@ -10560,12 +10527,9 @@
/area/bridge)
"axf" = (
/obj/machinery/door/firedoor,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "bridgespace";
- name = "bridge external shutters";
- opacity = 0
+ name = "bridge external shutters"
},
/turf/open/floor/plasteel/vault{
dir = 8
@@ -10725,8 +10689,7 @@
/area/security/brig)
"axF" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
@@ -10921,12 +10884,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "bridgespace";
- name = "bridge external shutters";
- opacity = 0
+ name = "bridge external shutters"
},
/turf/open/floor/plasteel/vault{
dir = 8
@@ -11951,8 +11911,7 @@
/area/hallway/primary/fore)
"aAo" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-14";
- layer = 4.1
+ icon_state = "plant-14"
},
/turf/open/floor/plasteel/red/side{
dir = 4
@@ -12292,7 +12251,6 @@
},
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-20";
- layer = 4.1;
pixel_y = 3
},
/turf/open/floor/plasteel/black,
@@ -12484,8 +12442,6 @@
/area/crew_quarters/heads/hop)
"aBF" = (
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/obj/structure/bed/dogbed/ian,
@@ -12632,8 +12588,7 @@
/area/crew_quarters/fitness/recreation)
"aBY" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-05";
- layer = 4.1
+ icon_state = "plant-05"
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
@@ -12744,7 +12699,6 @@
/obj/structure/table/wood,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-18";
- layer = 4.1;
pixel_y = 12
},
/turf/open/floor/plasteel/grimy,
@@ -13835,9 +13789,7 @@
pixel_x = -1;
pixel_y = 9
},
-/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{
- pixel_y = 0
- },
+/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass,
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{
pixel_x = 7;
pixel_y = 2
@@ -14057,8 +14009,7 @@
/area/crew_quarters/heads/hop)
"aEM" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-24";
- layer = 4.1
+ icon_state = "plant-24"
},
/obj/structure/cable{
d1 = 1;
@@ -14382,13 +14333,10 @@
name = "Reception Window";
req_access_txt = "0"
},
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "hop";
layer = 3.1;
- name = "privacy shutters";
- opacity = 0
+ name = "privacy shutters"
},
/turf/open/floor/plasteel,
/area/crew_quarters/heads/hop)
@@ -14693,13 +14641,8 @@
},
/area/crew_quarters/heads/captain)
"aGn" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-09";
- layer = 3.1;
- light_color = "#2cb2e8";
- light_range = 3;
- name = "Photosynthetic Potted plant";
- pixel_y = 0
+/obj/item/twohanded/required/kirbyplants/photosynthetic{
+ layer = 3.1
},
/obj/structure/window/reinforced/fulltile,
/turf/open/floor/plating,
@@ -14979,7 +14922,6 @@
"aHa" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_y = 3
},
/turf/open/floor/plasteel/vault{
@@ -15715,8 +15657,6 @@
"aID" = (
/obj/structure/chair,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 30
},
/turf/open/floor/plasteel/red/side{
@@ -16589,8 +16529,7 @@
/area/hallway/primary/central)
"aKg" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-04";
- layer = 4.1
+ icon_state = "plant-04"
},
/turf/open/floor/plasteel/white/corner{
tag = "icon-whitecorner (EAST)";
@@ -16963,6 +16902,7 @@
id = "trash";
name = "disposal bay door"
},
+/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/maintenance/disposal)
"aLo" = (
@@ -17246,8 +17186,7 @@
pixel_y = 22
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-14";
- layer = 4.1
+ icon_state = "plant-14"
},
/turf/open/floor/plasteel,
/area/teleporter)
@@ -17382,8 +17321,6 @@
},
/obj/effect/spawner/lootdrop/maintenance,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 30;
supply_display = 1
},
@@ -17426,9 +17363,7 @@
dir = 4;
id = "packageSort2"
},
-/obj/structure/plasticflaps{
- opacity = 0
- },
+/obj/structure/plasticflaps,
/obj/machinery/light/small{
dir = 1
},
@@ -17647,8 +17582,7 @@
/area/shuttle/escape)
"aMK" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/escape{
dir = 9
@@ -17689,7 +17623,6 @@
"aMP" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_y = 3
},
/obj/structure/extinguisher_cabinet{
@@ -18368,8 +18301,7 @@
/area/hallway/secondary/exit/departure_lounge)
"aOr" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-16";
- layer = 4.1
+ icon_state = "plant-16"
},
/obj/machinery/firealarm{
dir = 1;
@@ -20657,8 +20589,6 @@
id = "QMLoad"
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 30;
supply_display = 1
},
@@ -21659,7 +21589,6 @@
id = "barshutters";
name = "Bar Lockdown";
pixel_x = 28;
- pixel_y = 0;
req_access_txt = "28"
},
/obj/item/device/radio/intercom{
@@ -22363,8 +22292,7 @@
/area/hallway/secondary/exit/departure_lounge)
"aWL" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-14";
- layer = 4.1
+ icon_state = "plant-14"
},
/turf/open/floor/plasteel/escape{
dir = 6
@@ -22766,7 +22694,6 @@
"aXD" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_y = 3
},
/turf/open/floor/plasteel/escape{
@@ -22782,8 +22709,7 @@
/area/hallway/secondary/exit/departure_lounge)
"aXF" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/obj/structure/extinguisher_cabinet{
pixel_x = 27
@@ -22814,13 +22740,10 @@
name = "Security Checkpoint";
req_access_txt = "1"
},
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "papersplease";
layer = 3.1;
- name = "privacy shutters";
- opacity = 0
+ name = "privacy shutters"
},
/obj/item/folder/red,
/obj/item/pen,
@@ -22986,7 +22909,6 @@
/obj/structure/table/reinforced,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-18";
- layer = 4.1;
pixel_y = 10
},
/turf/open/floor/plasteel/darkred/side{
@@ -23020,7 +22942,6 @@
/obj/structure/disposalpipe/segment,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-18";
- layer = 4.1;
pixel_y = 10
},
/turf/open/floor/plasteel/darkred/side{
@@ -23380,8 +23301,7 @@
/area/crew_quarters/kitchen)
"aYY" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-05";
- layer = 4.1
+ icon_state = "plant-05"
},
/turf/open/floor/plasteel/black,
/area/crew_quarters/bar)
@@ -24369,8 +24289,7 @@
/area/hydroponics)
"bbd" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/green/corner,
/area/hydroponics)
@@ -24699,13 +24618,10 @@
req_access_txt = "1"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/door/poddoor{
- density = 0;
- icon_state = "open";
+/obj/machinery/door/poddoor/preopen{
id = "papersplease";
layer = 3.1;
- name = "privacy shutters";
- opacity = 0
+ name = "privacy shutters"
},
/obj/item/crowbar,
/obj/effect/turf_decal/delivery,
@@ -26186,8 +26102,7 @@
/area/hallway/primary/central)
"bfp" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/button/door{
id = "kitchenwindowshutters";
@@ -26270,8 +26185,6 @@
d2 = 2
},
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 30
},
/turf/open/floor/plasteel/black,
@@ -26688,8 +26601,7 @@
/area/crew_quarters/bar)
"bgv" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-14";
- layer = 4.1
+ icon_state = "plant-14"
},
/turf/open/floor/plasteel/neutral/corner{
dir = 4
@@ -27873,8 +27785,7 @@
/area/hallway/primary/central)
"biQ" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-05";
- layer = 4.1
+ icon_state = "plant-05"
},
/turf/open/floor/plasteel/blue/side,
/area/hallway/primary/central)
@@ -27885,8 +27796,7 @@
dir = 1
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-05";
- layer = 4.1
+ icon_state = "plant-05"
},
/turf/open/floor/plasteel/blue/corner{
dir = 8
@@ -27979,8 +27889,7 @@
/area/medical/medbay/central)
"bji" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/blue/side,
/area/hallway/primary/central)
@@ -28004,8 +27913,7 @@
/area/hallway/primary/central)
"bjn" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/purple/side,
/area/hallway/primary/central)
@@ -28994,7 +28902,6 @@
"blM" = (
/obj/machinery/r_n_d/server/core,
/obj/structure/sign/poster/random{
- pixel_x = 0;
pixel_y = 32
},
/turf/open/floor/circuit/telecomms/server,
@@ -29005,7 +28912,6 @@
light_color = "#c1caff"
},
/obj/structure/sign/poster/random{
- pixel_x = 0;
pixel_y = 32
},
/turf/open/floor/plasteel/black/telecomms/server/walkway,
@@ -29013,7 +28919,6 @@
"blO" = (
/obj/machinery/r_n_d/server/robotics,
/obj/structure/sign/poster/random{
- pixel_x = 0;
pixel_y = 32
},
/turf/open/floor/circuit/telecomms/server,
@@ -29070,10 +28975,7 @@
/turf/open/floor/engine,
/area/science/explab)
"blV" = (
-/obj/structure/sign/atmosplaque{
- desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today.";
- icon_state = "kiddieplaque";
- name = "\improper 'Perfect Drone' sign";
+/obj/structure/sign/kiddieplaque/perfect_drone{
pixel_y = 32
},
/turf/open/floor/engine,
@@ -29339,8 +29241,7 @@
/area/security/checkpoint/medical)
"bmw" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-05";
- layer = 4.1
+ icon_state = "plant-05"
},
/turf/open/floor/plasteel/whiteblue/corner{
dir = 8
@@ -29739,8 +29640,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/firealarm{
dir = 8;
- pixel_x = 28;
- pixel_y = 0
+ pixel_x = 28
},
/obj/structure/table,
/obj/item/storage/box/gloves{
@@ -29992,8 +29892,7 @@
/obj/item/device/radio/intercom{
dir = 0;
name = "Station Intercom (General)";
- pixel_x = -28;
- pixel_y = 0
+ pixel_x = -28
},
/turf/open/floor/plasteel/whitepurple/side{
dir = 1
@@ -30313,8 +30212,7 @@
},
/obj/machinery/light,
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/vault{
dir = 8
@@ -30569,8 +30467,7 @@
frequency = 1485;
listening = 1;
name = "Station Intercom (Medbay)";
- pixel_x = -30;
- pixel_y = 0
+ pixel_x = -30
},
/turf/open/floor/plasteel/blue,
/area/medical/genetics)
@@ -30845,8 +30742,7 @@
"bqa" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/sign/directions/engineering{
- pixel_x = 32;
- pixel_y = 0
+ pixel_x = 32
},
/turf/open/floor/plasteel/yellow/corner{
dir = 4
@@ -31515,10 +31411,7 @@
},
/area/medical/medbay/central)
"brj" = (
-/obj/machinery/chem_master{
- layer = 2.7;
- pixel_x = -2
- },
+/obj/machinery/chem_master,
/turf/open/floor/plasteel/whiteyellow/side{
dir = 9
},
@@ -31544,10 +31437,7 @@
},
/area/medical/chemistry)
"brm" = (
-/obj/machinery/chem_master{
- layer = 2.7;
- pixel_x = -2
- },
+/obj/machinery/chem_master,
/obj/machinery/button/door{
id = "chemistry_shutters";
name = "Shutters Control";
@@ -33080,9 +32970,7 @@
/area/science/robotics/lab)
"buw" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-07";
- name = "Photosynthetic Potted plant";
+/obj/item/twohanded/required/kirbyplants/photosynthetic{
pixel_y = 10
},
/turf/open/floor/plasteel/darkpurple/side{
@@ -33099,9 +32987,7 @@
/turf/open/floor/plasteel/black,
/area/science/server)
"buy" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-07";
- name = "Photosynthetic Potted plant";
+/obj/item/twohanded/required/kirbyplants/photosynthetic{
pixel_y = 10
},
/turf/open/floor/plasteel/darkpurple/side{
@@ -33144,8 +33030,7 @@
dir = 8
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-14";
- layer = 4.1
+ icon_state = "plant-14"
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
@@ -33817,7 +33702,6 @@
dir = 1
},
/obj/structure/extinguisher_cabinet{
- pixel_x = 0;
pixel_y = 30
},
/turf/open/floor/plasteel/darkpurple/side{
@@ -33860,8 +33744,7 @@
/area/science/research)
"bvU" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-18";
- layer = 4.1
+ icon_state = "plant-18"
},
/turf/open/floor/plasteel/darkpurple/side{
dir = 1
@@ -34303,9 +34186,7 @@
dir = 4
},
/obj/structure/bed/roller,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/whiteblue/corner,
/area/medical/medbay/central)
"bwQ" = (
@@ -35497,9 +35378,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-09";
- name = "Photosynthetic Potted plant";
+/obj/item/twohanded/required/kirbyplants/photosynthetic{
pixel_y = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -35875,8 +35754,7 @@
dir = 8;
name = "Monastery Monitor";
network = list("Monastery");
- pixel_x = 28;
- pixel_y = 0
+ pixel_x = 28
},
/turf/open/floor/plasteel/black,
/area/hallway/secondary/entry)
@@ -35973,8 +35851,7 @@
dir = 5
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/whitegreen/side,
/area/medical/medbay/zone3)
@@ -36120,8 +35997,7 @@
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk,
/obj/machinery/keycard_auth{
- pixel_x = 26;
- pixel_y = 0
+ pixel_x = 26
},
/turf/open/floor/plasteel/cmo,
/area/crew_quarters/heads/cmo)
@@ -36774,7 +36650,6 @@
"bBB" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-20";
- layer = 4.1;
pixel_y = 3
},
/turf/open/floor/plasteel/vault{
@@ -38209,8 +38084,7 @@
/area/crew_quarters/heads/cmo)
"bEH" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-16";
- layer = 4.1
+ icon_state = "plant-16"
},
/turf/open/floor/plasteel/cmo,
/area/crew_quarters/heads/cmo)
@@ -38329,8 +38203,7 @@
/area/hallway/primary/aft)
"bEQ" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-03";
- layer = 4.1
+ icon_state = "plant-03"
},
/turf/open/floor/plasteel/vault{
dir = 8
@@ -38374,7 +38247,6 @@
/obj/item/pen,
/obj/item/stamp/rd,
/obj/machinery/status_display{
- density = 0;
pixel_y = -30;
supply_display = 0
},
@@ -39403,8 +39275,6 @@
"bHc" = (
/obj/machinery/computer/med_data,
/obj/machinery/status_display{
- density = 0;
- layer = 4;
pixel_y = 32
},
/turf/open/floor/plasteel/freezer,
@@ -39616,7 +39486,6 @@
/obj/machinery/button/door{
id = "toxvent";
name = "Aft Vent Control";
- pixel_x = 0;
pixel_y = -24;
req_access_txt = "0";
req_one_access_txt = "8;24"
@@ -39814,7 +39683,6 @@
frequency = 1485;
listening = 1;
name = "Station Intercom (Medbay)";
- pixel_x = 0;
pixel_y = 28
},
/turf/open/floor/plasteel/whitegreen/side{
@@ -40613,7 +40481,6 @@
},
/obj/machinery/space_heater,
/obj/structure/sign/poster/random{
- pixel_x = 0;
pixel_y = -32
},
/turf/open/floor/plasteel/green/side,
@@ -40634,7 +40501,6 @@
pixel_x = 32
},
/obj/structure/sign/poster/random{
- pixel_x = 0;
pixel_y = -32
},
/turf/open/floor/plasteel/green/side{
@@ -40984,9 +40850,7 @@
/area/medical/medbay/central)
"bKB" = (
/obj/structure/bed/roller,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/plasteel/freezer,
/area/medical/surgery)
"bKC" = (
@@ -41563,8 +41427,7 @@
/area/hallway/primary/aft)
"bLT" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "applebush";
- layer = 4.1
+ icon_state = "applebush"
},
/obj/machinery/airalarm{
pixel_y = 22
@@ -41781,6 +41644,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
+/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/science/mineral_storeroom)
"bMr" = (
@@ -41912,7 +41776,6 @@
},
/obj/item/storage/box/syringes,
/obj/structure/reagent_dispensers/virusfood{
- density = 0;
pixel_x = 32
},
/obj/item/reagent_containers/spray/cleaner,
@@ -45906,7 +45769,7 @@
/area/storage/tech)
"bVL" = (
/obj/structure/table,
-/obj/item/storage/box/metalfoam{
+/obj/item/storage/box/smart_metal_foam{
pixel_x = 4;
pixel_y = 7
},
@@ -46907,7 +46770,6 @@
dir = 1;
name = "Auxillary Base Monitor";
network = list("AuxBase");
- pixel_x = 0;
pixel_y = -28
},
/obj/machinery/computer/shuttle/mining,
@@ -48297,8 +48159,7 @@
dir = 4;
name = "turbine vent monitor";
network = list("Turbine");
- pixel_x = -29;
- pixel_y = 0
+ pixel_x = -29
},
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
@@ -48786,7 +48647,6 @@
/obj/structure/table/wood,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-18";
- layer = 4.1;
pixel_y = 8
},
/obj/machinery/camera{
@@ -49475,7 +49335,6 @@
icon_state = "space";
layer = 4;
name = "EXTERNAL AIRLOCK";
- pixel_x = 0;
pixel_y = 32
},
/turf/open/floor/plating,
@@ -49582,8 +49441,7 @@
/area/chapel/main/monastery)
"cdz" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-08";
- layer = 4.1
+ icon_state = "plant-08"
},
/turf/open/floor/plasteel/chapel{
dir = 4
@@ -50097,8 +49955,7 @@
/area/chapel/main/monastery)
"ceK" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-08";
- layer = 4.1
+ icon_state = "plant-08"
},
/turf/open/floor/plasteel/black,
/area/chapel/main/monastery)
@@ -54128,7 +53985,6 @@
/obj/machinery/button/door{
id = "barshutters";
name = "Bar Lockdown";
- pixel_x = 0;
pixel_y = 26;
req_access_txt = "28"
},
@@ -55121,7 +54977,6 @@
/obj/structure/table/wood,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-18";
- layer = 4.1;
pixel_y = 8
},
/turf/open/floor/carpet,
@@ -55696,8 +55551,7 @@
dir = 8
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/turf/open/floor/plasteel/black,
/area/chapel/main/monastery)
@@ -55762,8 +55616,7 @@
dir = 4
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/black,
/area/chapel/main/monastery)
@@ -56455,8 +56308,7 @@
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/black,
/area/chapel/main/monastery)
@@ -56562,8 +56414,7 @@
/area/chapel/main/monastery)
"cvM" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-10";
- layer = 4.1
+ icon_state = "plant-10"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
@@ -57889,7 +57740,6 @@
/obj/structure/table/wood,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-05";
- layer = 4.1;
pixel_y = 10
},
/turf/open/floor/plasteel/vault{
@@ -57934,7 +57784,6 @@
/obj/structure/table/wood,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-05";
- layer = 4.1;
pixel_y = 10
},
/turf/open/floor/plasteel/vault{
@@ -103988,8 +103837,8 @@ aaa
aaa
aaa
aLn
-aLn
aNT
+aQo
aPg
aQl
aRu
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index 3e78a685dc..05f0897465 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -66,7 +66,6 @@
},
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-05";
- layer = 4.1;
pixel_y = 4
},
/turf/open/floor/holofloor{
@@ -292,7 +291,6 @@
/obj/structure/table/wood,
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-05";
- layer = 4.1;
pixel_y = 10
},
/turf/open/floor/holofloor{
@@ -415,14 +413,14 @@
/obj/structure/table/glass,
/obj/item/surgicaldrill,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"br" = (
/obj/structure/table/glass,
/obj/item/hemostat,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"bs" = (
@@ -432,14 +430,14 @@
},
/obj/item/circular_saw,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"bt" = (
/obj/structure/table/glass,
/obj/item/retractor,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"bu" = (
@@ -447,7 +445,7 @@
/obj/item/stack/medical/gauze,
/obj/item/cautery,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"bv" = (
@@ -528,7 +526,7 @@
/obj/item/surgical_drapes,
/obj/item/razor,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"bJ" = (
@@ -538,7 +536,7 @@
/area/holodeck/rec_center/medical)
"bK" = (
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"bL" = (
@@ -604,19 +602,19 @@
/area/holodeck/rec_center/pet_lounge)
"bX" = (
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"bZ" = (
/obj/structure/table/optable,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"ca" = (
/obj/machinery/computer/operating,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cb" = (
@@ -625,7 +623,7 @@
/obj/item/clothing/suit/apron/surgical,
/obj/item/clothing/mask/surgical,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cc" = (
@@ -668,7 +666,7 @@
dir = 1
},
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cj" = (
@@ -680,12 +678,12 @@
/obj/structure/table/glass,
/obj/machinery/reagentgrinder,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cl" = (
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cm" = (
@@ -696,13 +694,13 @@
},
/obj/item/storage/box/beakers,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cn" = (
/obj/machinery/washing_machine,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"co" = (
@@ -776,25 +774,25 @@
"cy" = (
/obj/machinery/chem_master,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cz" = (
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cA" = (
/obj/structure/table/glass,
/obj/item/device/healthanalyzer,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cB" = (
/obj/structure/closet/wardrobe/white,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cC" = (
@@ -910,7 +908,7 @@
dir = 1
},
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cW" = (
@@ -923,7 +921,7 @@
dir = 1
},
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cX" = (
@@ -932,7 +930,7 @@
},
/obj/machinery/computer/pandemic,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"cY" = (
@@ -964,7 +962,7 @@
/area/holodeck/rec_center/pet_lounge)
"de" = (
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"df" = (
@@ -976,12 +974,12 @@
"dg" = (
/obj/machinery/door/window/westleft,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"dh" = (
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"di" = (
@@ -990,11 +988,9 @@
"dj" = (
/obj/structure/bed,
/obj/item/bedsheet/medical,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"dk" = (
@@ -1003,11 +999,9 @@
},
/obj/structure/bed,
/obj/item/bedsheet/medical,
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"dl" = (
@@ -1018,15 +1012,13 @@
dir = 1
},
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"dm" = (
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"dn" = (
@@ -1034,7 +1026,7 @@
dir = 1
},
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/medical)
"do" = (
@@ -1228,7 +1220,7 @@
dir = 8
},
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/firingrange)
"dR" = (
@@ -1236,7 +1228,7 @@
dir = 1
},
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/firingrange)
"dS" = (
@@ -1247,7 +1239,7 @@
dir = 4
},
/turf/open/floor/holofloor{
- icon_state = "white";
+ icon_state = "white"
},
/area/holodeck/rec_center/firingrange)
"dT" = (
@@ -2923,7 +2915,6 @@
/area/centcom/control)
"iQ" = (
/obj/machinery/status_display{
- density = 0;
name = "cargo display";
supply_display = 1
},
@@ -3508,8 +3499,7 @@
/area/centcom/control)
"kh" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/vault{
dir = 8
@@ -3664,8 +3654,7 @@
dir = 4
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/grimy,
/area/centcom/control)
@@ -3716,8 +3705,7 @@
dir = 8
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/grimy,
/area/centcom/control)
@@ -4067,8 +4055,7 @@
/area/centcom/control)
"ly" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/firealarm{
dir = 1;
@@ -4208,7 +4195,6 @@
"lS" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -4877,7 +4863,6 @@
"nz" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -5121,8 +5106,7 @@
/area/centcom/ferry)
"oe" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/light{
dir = 4
@@ -5440,8 +5424,7 @@
/area/centcom/ferry)
"oM" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/wood,
/area/centcom/ferry)
@@ -5499,8 +5482,7 @@
/area/centcom/ferry)
"oU" = (
/obj/structure/dresser,
-/obj/structure/sign/goldenplaque{
- name = "The Most Robust Captain Award for Robustness";
+/obj/structure/sign/goldenplaque/captain{
pixel_x = 32
},
/turf/open/floor/plasteel/vault{
@@ -5883,8 +5865,7 @@
/area/centcom/ferry)
"pQ" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/light{
dir = 1
@@ -5924,6 +5905,7 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
+ d2 = 4;
icon_state = "0-4"
},
/obj/effect/turf_decal/stripes/line,
@@ -5961,6 +5943,7 @@
icon_state = "0-2"
},
/obj/structure/cable/white{
+ d2 = 8;
icon_state = "0-8"
},
/obj/effect/turf_decal/stripes/line,
@@ -6025,8 +6008,7 @@
/area/centcom/control)
"qd" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/structure/extinguisher_cabinet{
pixel_x = -24
@@ -6229,6 +6211,8 @@
dir = 4
},
/obj/structure/cable/white{
+ d1 = 2;
+ d2 = 4;
icon_state = "2-4"
},
/turf/open/floor/wood,
@@ -6241,6 +6225,8 @@
dir = 4
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel/vault{
@@ -6253,6 +6239,8 @@
},
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel/grimy,
@@ -6262,6 +6250,8 @@
dir = 4
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/turf/open/floor/plasteel/grimy,
@@ -6275,6 +6265,8 @@
dir = 4
},
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
@@ -6288,9 +6280,13 @@
},
/obj/machinery/meter,
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/structure/cable/white{
+ d1 = 2;
+ d2 = 8;
icon_state = "2-8"
},
/turf/open/floor/plasteel/vault{
@@ -6305,9 +6301,11 @@
dir = 1
},
/obj/structure/cable/white{
+ d2 = 8;
icon_state = "0-8"
},
/obj/structure/cable/white{
+ d2 = 4;
icon_state = "0-4"
},
/obj/structure/cable/white{
@@ -6324,12 +6322,18 @@
},
/obj/machinery/meter,
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 8;
icon_state = "1-8"
},
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/obj/structure/cable/white{
+ d1 = 2;
+ d2 = 8;
icon_state = "2-8"
},
/turf/open/floor/plasteel/vault{
@@ -6419,7 +6423,7 @@
"qX" = (
/obj/structure/table,
/obj/item/toy/katana,
-/obj/item/toy/carpplushie,
+/obj/item/toy/plush/carpplushie,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -6616,6 +6620,8 @@
dir = 4
},
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/wood,
@@ -6663,6 +6669,8 @@
/obj/effect/decal/cleanable/dirt,
/obj/machinery/portable_atmospherics/canister/air,
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 4;
icon_state = "1-4"
},
/obj/effect/turf_decal/stripes/line{
@@ -6677,9 +6685,13 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
+ d1 = 4;
+ d2 = 8;
icon_state = "4-8"
},
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 8;
icon_state = "1-8"
},
/obj/effect/turf_decal/stripes/line{
@@ -6697,6 +6709,8 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 8;
icon_state = "1-8"
},
/obj/effect/turf_decal/stripes/line{
@@ -6784,8 +6798,7 @@
/area/centcom/control)
"rQ" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/green/corner{
dir = 4
@@ -6805,8 +6818,7 @@
/area/centcom/control)
"rT" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -6970,6 +6982,8 @@
/area/centcom/ferry)
"sn" = (
/obj/structure/cable/white{
+ d1 = 1;
+ d2 = 2;
icon_state = "1-2"
},
/turf/open/floor/wood,
@@ -7164,8 +7178,7 @@
/area/centcom/ferry)
"sN" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/vault{
dir = 10
@@ -7895,8 +7908,7 @@
/area/centcom/ferry)
"uG" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
@@ -7934,8 +7946,7 @@
/area/centcom/control)
"uN" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/green/side{
dir = 8
@@ -7943,8 +7954,7 @@
/area/centcom/control)
"uO" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/green/side{
dir = 4
@@ -8344,8 +8354,7 @@
/area/centcom/ferry)
"vU" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/vault{
dir = 8
@@ -8590,7 +8599,7 @@
/area/wizard_station)
"wA" = (
/obj/structure/destructible/cult/talisman{
- desc = "A altar dedicated to the Wizard's Federation"
+ desc = "An altar dedicated to the Wizards' Federation"
},
/obj/item/kitchen/knife/ritual,
/turf/open/floor/engine/cult,
@@ -8696,8 +8705,7 @@
/area/centcom/ferry)
"wP" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/red/corner{
dir = 8
@@ -8871,8 +8879,7 @@
/area/centcom/evac)
"xt" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
@@ -9269,8 +9276,7 @@
/area/centcom/ferry)
"ym" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/structure/extinguisher_cabinet{
pixel_y = -32
@@ -9517,8 +9523,7 @@
/area/centcom/evac)
"yL" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/structure/extinguisher_cabinet{
pixel_x = -24
@@ -9778,8 +9783,7 @@
/area/centcom/control)
"zq" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/green/corner{
dir = 8
@@ -10260,8 +10264,7 @@
/area/tdome/tdomeobserve)
"AK" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/green/corner,
/area/tdome/tdomeobserve)
@@ -10338,8 +10341,7 @@
/area/tdome/tdomeobserve)
"AW" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/red/corner,
/area/tdome/tdomeobserve)
@@ -10391,8 +10393,7 @@
/area/tdome/tdomeobserve)
"Bg" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/green/corner{
dir = 8
@@ -10416,7 +10417,7 @@
/area/tdome/tdomeobserve)
"Bj" = (
/obj/structure/destructible/cult/forge{
- desc = "A engine used in powering the wizards ship";
+ desc = "An engine used in powering the wizard's ship";
name = "magma engine"
},
/turf/open/floor/engine/cult,
@@ -10503,8 +10504,7 @@
/area/tdome/tdomeobserve)
"Bw" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/red/corner{
dir = 1
@@ -10512,8 +10512,7 @@
/area/tdome/tdomeobserve)
"Bx" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/red/side{
dir = 10
@@ -10543,8 +10542,7 @@
/area/tdome/tdomeobserve)
"BD" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/green/side{
dir = 6
@@ -10552,8 +10550,7 @@
/area/tdome/tdomeobserve)
"BE" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/green/corner{
dir = 4
@@ -10987,9 +10984,7 @@
/area/tdome/tdomeobserve)
"CE" = (
/obj/structure/table/wood,
-/obj/structure/sign/atmosplaque{
- desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands.";
- name = "Thunderdome Plaque";
+/obj/structure/sign/atmosplaque/thunderdome{
pixel_y = -32
},
/obj/item/clothing/accessory/medal/gold{
@@ -11007,9 +11002,7 @@
/area/tdome/tdomeobserve)
"CG" = (
/obj/structure/table/wood,
-/obj/structure/sign/atmosplaque{
- desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands.";
- name = "Thunderdome Plaque";
+/obj/structure/sign/atmosplaque/thunderdome{
pixel_y = -32
},
/obj/item/clothing/accessory/medal{
@@ -11264,8 +11257,7 @@
/area/tdome/tdomeobserve)
"Dl" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/neutral/corner,
/area/tdome/tdomeobserve)
@@ -11318,8 +11310,7 @@
/area/tdome/tdomeobserve)
"Ds" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/neutral/corner{
dir = 8;
@@ -11937,8 +11928,7 @@
/area/tdome/tdomeadmin)
"Fd" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/firealarm{
dir = 8;
@@ -11958,8 +11948,7 @@
/area/tdome/tdomeadmin)
"Fg" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/vault{
dir = 8
@@ -12329,19 +12318,19 @@
/area/abductor_ship)
"Gh" = (
/obj/machinery/abductor/experiment{
- team = 1
+ team_number = 1
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Gi" = (
/obj/machinery/abductor/console{
- team = 1
+ team_number = 1
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Gj" = (
/obj/machinery/abductor/pad{
- team = 1
+ team_number = 1
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
@@ -12357,19 +12346,19 @@
/area/abductor_ship)
"Gm" = (
/obj/machinery/abductor/experiment{
- team = 4
+ team_number = 4
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Gn" = (
/obj/machinery/abductor/console{
- team = 4
+ team_number = 4
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Go" = (
/obj/machinery/abductor/pad{
- team = 4
+ team_number = 4
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
@@ -12411,7 +12400,7 @@
/area/abductor_ship)
"Gw" = (
/obj/machinery/computer/camera_advanced/abductor{
- team = 1
+ team_number = 1
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
@@ -12429,7 +12418,7 @@
/area/abductor_ship)
"GA" = (
/obj/machinery/computer/camera_advanced/abductor{
- team = 4
+ team_number = 4
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
@@ -12490,13 +12479,13 @@
/area/abductor_ship)
"GM" = (
/obj/effect/landmark/abductor/scientist{
- team = 4
+ team_number = 4
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"GN" = (
/obj/effect/landmark/abductor/agent{
- team = 4
+ team_number = 4
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
@@ -12640,49 +12629,49 @@
/area/space)
"Hn" = (
/obj/machinery/abductor/experiment{
- team = 2
+ team_number = 2
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Ho" = (
/obj/machinery/abductor/console{
- team = 2
+ team_number = 2
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Hp" = (
/obj/machinery/abductor/pad{
- team = 2
+ team_number = 2
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Hq" = (
/obj/machinery/abductor/experiment{
- team = 3
+ team_number = 3
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Hr" = (
/obj/machinery/abductor/console{
- team = 3
+ team_number = 3
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Hs" = (
/obj/machinery/abductor/pad{
- team = 3
+ team_number = 3
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Ht" = (
/obj/machinery/computer/camera_advanced/abductor{
- team = 2
+ team_number = 2
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Hu" = (
/obj/machinery/computer/camera_advanced/abductor{
- team = 3
+ team_number = 3
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
@@ -12704,25 +12693,25 @@
/area/centcom/evac)
"Hy" = (
/obj/effect/landmark/abductor/scientist{
- team = 2
+ team_number = 2
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"Hz" = (
/obj/effect/landmark/abductor/agent{
- team = 2
+ team_number = 2
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"HA" = (
/obj/effect/landmark/abductor/scientist{
- team = 3
+ team_number = 3
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
"HB" = (
/obj/effect/landmark/abductor/agent{
- team = 3
+ team_number = 3
},
/turf/open/floor/plating/abductor,
/area/abductor_ship)
diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm
index 19b6a85ea9..ed55f33322 100644
--- a/_maps/shuttles/emergency_bar.dmm
+++ b/_maps/shuttles/emergency_bar.dmm
@@ -148,7 +148,6 @@
},
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -307,7 +306,6 @@
"bc" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -480,7 +478,6 @@
"bG" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm
index 0644e9dd70..054254f4db 100644
--- a/_maps/shuttles/emergency_birdboat.dmm
+++ b/_maps/shuttles/emergency_birdboat.dmm
@@ -144,8 +144,7 @@
/area/shuttle/escape)
"aB" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm
index 887a43aa69..cdf3fd8561 100644
--- a/_maps/shuttles/emergency_cere.dmm
+++ b/_maps/shuttles/emergency_cere.dmm
@@ -680,8 +680,7 @@
/area/shuttle/escape)
"ca" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
@@ -703,8 +702,7 @@
dir = 4
},
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm
index 0b535fe457..1e92952ae2 100644
--- a/_maps/shuttles/emergency_delta.dmm
+++ b/_maps/shuttles/emergency_delta.dmm
@@ -153,7 +153,6 @@
"an" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -168,7 +167,6 @@
"ap" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -689,8 +687,7 @@
/area/shuttle/escape)
"bz" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/obj/machinery/button/flasher{
id = "shuttleflash";
@@ -703,8 +700,7 @@
/area/shuttle/escape)
"bA" = (
/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-21";
- layer = 4.1
+ icon_state = "plant-21"
},
/turf/open/floor/plasteel/neutral/corner{
dir = 4
@@ -883,7 +879,6 @@
"cb" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -1050,7 +1045,6 @@
"cA" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -1083,7 +1077,6 @@
"cE" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm
index e6ab6ef49d..cffad6bf58 100644
--- a/_maps/shuttles/emergency_luxury.dmm
+++ b/_maps/shuttles/emergency_luxury.dmm
@@ -304,7 +304,6 @@
"bg" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -359,7 +358,6 @@
"bp" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
@@ -369,7 +367,6 @@
"bq" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
- layer = 4.1;
pixel_x = -3;
pixel_y = 3
},
diff --git a/_maps/shuttles/emergency_wabbajack.dmm b/_maps/shuttles/emergency_wabbajack.dmm
index 4b0b2a7f49..fe5618f48c 100644
--- a/_maps/shuttles/emergency_wabbajack.dmm
+++ b/_maps/shuttles/emergency_wabbajack.dmm
@@ -288,7 +288,7 @@
/area/shuttle/escape)
"ba" = (
/obj/structure/destructible/cult/forge{
- desc = "A engine used in powering the shuttle.";
+ desc = "An engine used in powering the shuttle.";
name = "magma engine"
},
/turf/open/floor/plasteel/yellow,
@@ -307,7 +307,7 @@
/area/shuttle/escape)
"bd" = (
/obj/structure/destructible/cult/forge{
- desc = "A engine used in powering the shuttle.";
+ desc = "An engine used in powering the shuttle.";
name = "magma engine"
},
/turf/open/floor/plasteel/whitered,
diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm
index 87f3d30e0e..a170714543 100644
--- a/_maps/shuttles/ferry_lighthouse.dmm
+++ b/_maps/shuttles/ferry_lighthouse.dmm
@@ -46,10 +46,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/transport)
"am" = (
-/obj/structure/grille{
- density = 0;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/turf/open/floor/plating/airless,
/area/shuttle/transport)
"an" = (
@@ -114,10 +111,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/transport)
"aB" = (
-/obj/structure/grille{
- density = 0;
- icon_state = "brokengrille"
- },
+/obj/structure/grille/broken,
/obj/structure/window/fulltile,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/transport)
diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm
index 7ac0a05c54..046f699911 100644
--- a/_maps/shuttles/whiteship_meta.dmm
+++ b/_maps/shuttles/whiteship_meta.dmm
@@ -1478,9 +1478,7 @@
req_access_txt = "0";
use_power = 0
},
-/obj/machinery/iv_drip{
- density = 0
- },
+/obj/machinery/iv_drip,
/obj/effect/decal/cleanable/dirt{
desc = "A thin layer of dust coating the floor.";
name = "dust"
diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm
index d305bfa69c..dd5a25d8ff 100644
--- a/code/__DEFINES/DNA.dm
+++ b/code/__DEFINES/DNA.dm
@@ -132,5 +132,6 @@
#define NOLIVER 29
#define NOSTOMACH 30
//citadel code
-#define NOAROUSAL 29//Stops all arousal effects
-#define NOGENITALS 30//Cannot create, use, or otherwise have genitals
+#define NOAROUSAL 29 //Stops all arousal effects
+#define NOGENITALS 30 //Cannot create, use, or otherwise have genitals
+#define NO_DNA_COPY 31
diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm
index 98420bc429..8ac155f20b 100644
--- a/code/__DEFINES/antagonists.dm
+++ b/code/__DEFINES/antagonists.dm
@@ -18,3 +18,7 @@
#define ANTAG_DATUM_IAA_HUMAN_CUSTOM /datum/antagonist/traitor/human/internal_affairs/custom
#define ANTAG_DATUM_IAA_AI_CUSTOM /datum/antagonist/traitor/AI/internal_affairs/custom
#define ANTAG_DATUM_IAA_AI /datum/antagonist/traitor/AI/internal_affairs
+#define ANTAG_DATUM_BROTHER /datum/antagonist/brother
+#define ANTAG_DATUM_ABDUCTOR /datum/antagonist/abductor
+#define ANTAG_DATUM_ABDUCTOR_SCIENTIST /datum/antagonist/abductor/scientist
+#define ANTAG_DATUM_ABDUCTOR_AGENT /datum/antagonist/abductor/agent
diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm
index 8a107c23ee..d4b2dfb2db 100644
--- a/code/__DEFINES/atom_hud.dm
+++ b/code/__DEFINES/atom_hud.dm
@@ -41,6 +41,7 @@
#define ANTAG_HUD_SOULLESS 17
#define ANTAG_HUD_CLOCKWORK 18
#define ANTAG_HUD_BORER 19
+#define ANTAG_HUD_BROTHER 20
// Notification action types
#define NOTIFY_JUMP "jump"
diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
index 1943ba15cd..6f20117d36 100644
--- a/code/__DEFINES/components.dm
+++ b/code/__DEFINES/components.dm
@@ -11,14 +11,56 @@
// All signals. Format:
// When the signal is called: (signal arguments)
-#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (datum/component)
-#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (datum/component)
+// /datum signals
+#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component)
+#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component)
#define COMSIG_PARENT_QDELETED "parent_qdeleted" //before a datum's Destroy() is called: ()
-#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable, atom)
-#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (atom/movable)
-#define COMSIG_PARENT_ATTACKBY "atom_attackby" //from the base of atom/attackby: (obj/item, mob/living, params)
-#define COMSIG_PARENT_EXAMINE "atom_examine" //from the base of atom/examine: (mob)
-#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable, atom)
+
+// /atom signals
+#define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params)
+#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (/mob/living/carbon/human)
+#define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (/mob)
+#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (/atom/movable, /atom)
#define COMSIG_ATOM_EX_ACT "atom_ex_act" //from base of atom/ex_act(): (severity, target)
+#define COMSIG_ATOM_EMP_ACT "atom_emp_act" //from base of atom/emp_act(): (severity)
+#define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume)
+#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/item/projectile, def_zone)
+#define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (/obj/structure/blob)
+#define COMSIG_ATOM_ACID_ACT "atom_acid_act" //from base of atom/acid_act(): (acidpwr, acid_volume)
+#define COMSIG_ATOM_EMAG_ACT "atom_emag_act" //from base of atom/emag_act(): ()
+#define COMSIG_ATOM_NARSIE_ACT "atom_narsie_act" //from base of atom/narsie_act(): ()
+#define COMSIG_ATOM_RATVAR_ACT "atom_ratvar_act" //from base of atom/ratvar_act(): ()
+#define COMSIG_ATOM_RCD_ACT "atom_rcd_act" //from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode)
#define COMSIG_ATOM_SING_PULL "atom_sing_pull" //from base of atom/singularity_pull(): (S, current_size)
-#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (atom/movable)
+
+#define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params)
+#define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob)
+#define COMSIG_CLICK_CTRL "ctrl_click" //from base of atom/CtrlClickOn(): (/mob)
+#define COMSIG_CLICK_ALT "alt_click" //from base of atom/AltClick(): (/mob)
+#define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click" //from base of atom/CtrlShiftClick(/mob)
+
+// /atom/movable signals
+#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir)
+#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable)
+#define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (/atom)
+#define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom, throwingdatum)
+
+// /obj/item signals
+#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user)
+#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob)
+#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (/obj, /mob)
+
+// /obj/item/clothing signals
+#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): ()
+
+// /obj/item signals
+#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (mob/living/target, mob/living/user)
+#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (mob)
+#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (obj, mob)
+
+// /obj/item/clothing signals
+#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): ()
+
+// /obj/machinery signals
+#define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): ()
+#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): ()
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index 3f85c93a00..c55b8216a3 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -162,3 +162,11 @@ GLOBAL_LIST_INIT(pointed_types, typecacheof(list(
#define issignaler(O) (istype(O, /obj/item/device/assembly/signaler))
#define istimer(O) (istype(O, /obj/item/device/assembly/timer))
+
+GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
+ /obj/item/stack/sheet/glass,
+ /obj/item/stack/sheet/rglass,
+ /obj/item/stack/sheet/plasmaglass,
+ /obj/item/stack/sheet/plasmarglass)))
+
+#define is_glass_sheet(O) (is_type_in_typecache(O, GLOB.glass_sheet_types))
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 11b0396cbd..c5d917ece4 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -456,3 +456,7 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
#define SECURITY_SAFE 1
#define SECURITY_ULTRASAFE 2
#define SECURITY_TRUSTED 3
+
+//Dummy mob reserve slots
+#define DUMMY_HUMAN_SLOT_PREFERENCES "dummy_preference_preview"
+#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation"
diff --git a/code/__DEFINES/pipe_construction.dm b/code/__DEFINES/pipe_construction.dm
index b8a83ee3fa..2d15b8aed3 100644
--- a/code/__DEFINES/pipe_construction.dm
+++ b/code/__DEFINES/pipe_construction.dm
@@ -12,6 +12,7 @@ Construction breaks otherwise
#define PIPE_HE_MANIFOLD /obj/machinery/atmospherics/pipe/heat_exchanging/manifold
#define PIPE_HE_4WAYMANIFOLD /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w
#define PIPE_JUNCTION /obj/machinery/atmospherics/pipe/heat_exchanging/junction
+#define PIPE_BLUESPACE /obj/machinery/atmospherics/pipe/bluespace
//Unary
#define PIPE_CONNECTOR /obj/machinery/atmospherics/components/unary/portables_connector
#define PIPE_UVENT /obj/machinery/atmospherics/components/unary/vent_pump
@@ -56,4 +57,4 @@ Construction breaks otherwise
#define STATION_TUBE_OPEN 0
#define STATION_TUBE_OPENING 1
#define STATION_TUBE_CLOSED 2
-#define STATION_TUBE_CLOSING 3
\ No newline at end of file
+#define STATION_TUBE_CLOSING 3
diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm
index fbefab15bb..cea6bc5e36 100644
--- a/code/__DEFINES/role_preferences.dm
+++ b/code/__DEFINES/role_preferences.dm
@@ -23,12 +23,14 @@
#define ROLE_DEVIL "devil"
#define ROLE_SERVANT_OF_RATVAR "servant of Ratvar"
#define ROLE_BORER "borer"
+#define ROLE_BROTHER "blood brother"
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
//The gamemode specific ones are just so the gamemodes can query whether a player is old enough
//(in game days played) to play that role
GLOBAL_LIST_INIT(special_roles, list(
ROLE_TRAITOR = /datum/game_mode/traitor,
+ ROLE_BROTHER = /datum/game_mode/traitor/bros,
ROLE_OPERATIVE = /datum/game_mode/nuclear,
ROLE_CHANGELING = /datum/game_mode/changeling,
ROLE_WIZARD = /datum/game_mode/wizard,
@@ -50,4 +52,4 @@ GLOBAL_LIST_INIT(special_roles, list(
//Job defines for what happens when you fail to qualify for any job during job selection
#define BEASSISTANT 1
#define BERANDOMJOB 2
-#define RETURNTOLOBBY 3
\ No newline at end of file
+#define RETURNTOLOBBY 3
diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm
index ea4c26d79e..edcf4f7fd2 100644
--- a/code/__DEFINES/voreconstants.dm
+++ b/code/__DEFINES/voreconstants.dm
@@ -3,6 +3,7 @@
#define DM_DIGEST "Digest"
#define DM_HEAL "Heal"
#define DM_NOISY "Noisy"
+#define DM_DRAGON "Dragon"
#define VORE_STRUGGLE_EMOTE_CHANCE 40
diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm
index 4b5342031f..8f3a0163b9 100644
--- a/code/__HELPERS/_logging.dm
+++ b/code/__HELPERS/_logging.dm
@@ -85,7 +85,7 @@
/proc/log_pda(text)
if (config.log_pda)
- WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]PDA: [text]")
+ WRITE_FILE(GLOB.world_pda_log, "\[[time_stamp()]]PDA: [text]")
/proc/log_comment(text)
if (config.log_pda)
diff --git a/code/__HELPERS/files.dm b/code/__HELPERS/files.dm
index 5001a3541e..f515668dfb 100644
--- a/code/__HELPERS/files.dm
+++ b/code/__HELPERS/files.dm
@@ -43,7 +43,7 @@
/client/proc/file_spam_check()
var/time_to_wait = GLOB.fileaccess_timer - world.time
if(time_to_wait > 0)
- to_chat(src, "Error: file_spam_check(): Spam. Please wait [round(time_to_wait/10)] seconds.")
+ to_chat(src, "Error: file_spam_check(): Spam. Please wait [DisplayTimeText(time_to_wait)].")
return 1
GLOB.fileaccess_timer = world.time + FTPDELAY
return 0
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index 5bcc66eeda..c040e264e6 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -421,7 +421,7 @@
SEND_SOUND(M, 'sound/misc/notice2.ogg') //Alerting them to their consideration
if(flashwindow)
window_flash(M.client)
- switch(ignore_category ? askuser(M,Question,"Please answer in [poll_time/10] seconds!","Yes","No","Never for this round", StealFocus=0, Timeout=poll_time) : askuser(M,Question,"Please answer in [poll_time/10] seconds!","Yes","No", StealFocus=0, Timeout=poll_time))
+ switch(ignore_category ? askuser(M,Question,"Please answer in [DisplayTimeText(poll_time)]!","Yes","No","Never for this round", StealFocus=0, Timeout=poll_time) : askuser(M,Question,"Please answer in [DisplayTimeText(poll_time)]!","Yes","No", StealFocus=0, Timeout=poll_time))
if(1)
to_chat(M, "Choice registered: Yes.")
if(time_passed + poll_time <= world.time)
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index 9b16644b4c..91bf127ab8 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -926,10 +926,10 @@ GLOBAL_LIST_EMPTY(friendly_animal_types)
return 0
//For creating consistent icons for human looking simple animals
-/proc/get_flat_human_icon(icon_id, datum/job/J, datum/preferences/prefs)
+/proc/get_flat_human_icon(icon_id, datum/job/J, datum/preferences/prefs, dummy_key)
var/static/list/humanoid_icon_cache = list()
if(!icon_id || !humanoid_icon_cache[icon_id])
- var/mob/living/carbon/human/dummy/body = new()
+ var/mob/living/carbon/human/dummy/body = generate_or_wait_for_human_dummy(dummy_key)
if(prefs)
prefs.copy_to(body)
@@ -956,14 +956,12 @@ GLOBAL_LIST_EMPTY(friendly_animal_types)
partial = getFlatIcon(body)
out_icon.Insert(partial,dir=EAST)
- qdel(body)
-
humanoid_icon_cache[icon_id] = out_icon
+ dummy_key? unset_busy_human_dummy(dummy_key) : qdel(body)
return out_icon
else
return humanoid_icon_cache[icon_id]
-
//Hook, override to run code on- wait this is images
//Images have dir without being an atom, so they get their own definition.
//Lame.
diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm
index 41d2f721f5..61a6866fe2 100644
--- a/code/__HELPERS/maths.dm
+++ b/code/__HELPERS/maths.dm
@@ -155,7 +155,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
var/size_factor = ((-cos(inputToDegrees) +1) /2) //returns a value from 0 to 1
return size_factor + scaling_modifier //scale mod of 0 results in a number from 0 to 1. A scale modifier of +0.5 returns 0.5 to 1.5
- //to_chat(world, "Transform multiplier of [src] is [size_factor + scaling_modifer]")
//converts a uniform distributed random number into a normal distributed one
//since this method produces two random numbers, one is saved for subsequent calls
@@ -220,3 +219,8 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
new_x = Clamp(new_x, 0, world.maxx)
new_y = Clamp(new_y, 0, world.maxy)
return locate(new_x, new_y, starting.z)
+
+/proc/round_down(num)
+ if(round(num) != num)
+ return round(num--)
+ else return num
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index cb64f3fb22..ed855c33b9 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -465,13 +465,17 @@ Proc for attack log creation, because really why not
if(H.dna && istype(H.dna.species, species_datum))
. = TRUE
-/proc/spawn_atom_to_turf(spawn_type, target, amount, admin_spawn=FALSE)
+/proc/spawn_atom_to_turf(spawn_type, target, amount, admin_spawn=FALSE, list/extra_args)
var/turf/T = get_turf(target)
if(!T)
CRASH("attempt to spawn atom type: [spawn_type] in nullspace")
- for(var/j in 1 to amount)
- var/atom/X = new spawn_type(T)
+ var/list/new_args = list(T)
+ if(extra_args)
+ new_args += extra_args
+
+ for(var/j in 1 to amount)
+ var/atom/X = new spawn_type(arglist(new_args))
X.admin_spawned = admin_spawn
/proc/spawn_and_random_walk(spawn_type, target, amount, walk_chance=100, max_walk=3, always_max_walk=FALSE, admin_spawn=FALSE)
diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm
index 546935e697..e3ce12397e 100644
--- a/code/__HELPERS/time.dm
+++ b/code/__HELPERS/time.dm
@@ -1,52 +1,148 @@
-//Returns the world time in english
-/proc/worldtime2text()
- return gameTimestamp("hh:mm:ss", world.time)
-
-/proc/time_stamp(format = "hh:mm:ss", show_ds)
- var/time_string = time2text(world.timeofday, format)
- return show_ds ? "[time_string]:[world.timeofday % 10]" : time_string
-
-/proc/gameTimestamp(format = "hh:mm:ss", wtime=null)
- if(!wtime)
- wtime = world.time
- return time2text(wtime - GLOB.timezoneOffset + SSticker.gametime_offset - SSticker.round_start_time, format)
-
-/* Returns 1 if it is the selected month and day */
-/proc/isDay(month, day)
- if(isnum(month) && isnum(day))
- var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month
- var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day
- if(month == MM && day == DD)
- return 1
-
- // Uncomment this out when debugging!
- //else
- //return 1
-
-//returns timestamp in a sql and ISO 8601 friendly format
-/proc/SQLtime(timevar)
- if(!timevar)
- timevar = world.realtime
- return time2text(timevar, "YYYY-MM-DD hh:mm:ss")
-
-
-GLOBAL_VAR_INIT(midnight_rollovers, 0)
-GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
-/proc/update_midnight_rollover()
- if (world.timeofday < GLOB.rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS!
- return GLOB.midnight_rollovers++
- return GLOB.midnight_rollovers
-
-/proc/weekdayofthemonth()
- var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day
- switch(DD)
- if(8 to 13)
- return 2
- if(14 to 20)
- return 3
- if(21 to 27)
- return 4
- if(28 to INFINITY)
- return 5
- else
- return 1
+//Returns the world time in english
+/proc/worldtime2text()
+ return gameTimestamp("hh:mm:ss", world.time)
+
+/proc/time_stamp(format = "hh:mm:ss", show_ds)
+ var/time_string = time2text(world.timeofday, format)
+ return show_ds ? "[time_string]:[world.timeofday % 10]" : time_string
+
+/proc/gameTimestamp(format = "hh:mm:ss", wtime=null)
+ if(!wtime)
+ wtime = world.time
+ return time2text(wtime - GLOB.timezoneOffset + SSticker.gametime_offset - SSticker.round_start_time, format)
+
+/* Returns 1 if it is the selected month and day */
+/proc/isDay(month, day)
+ if(isnum(month) && isnum(day))
+ var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month
+ var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day
+ if(month == MM && day == DD)
+ return 1
+
+ // Uncomment this out when debugging!
+ //else
+ //return 1
+
+//returns timestamp in a sql and ISO 8601 friendly format
+/proc/SQLtime(timevar)
+ if(!timevar)
+ timevar = world.realtime
+ return time2text(timevar, "YYYY-MM-DD hh:mm:ss")
+
+
+GLOBAL_VAR_INIT(midnight_rollovers, 0)
+GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
+/proc/update_midnight_rollover()
+ if (world.timeofday < GLOB.rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS!
+ return GLOB.midnight_rollovers++
+ return GLOB.midnight_rollovers
+
+/proc/weekdayofthemonth()
+ var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day
+ switch(DD)
+ if(8 to 13)
+ return 2
+ if(14 to 20)
+ return 3
+ if(21 to 27)
+ return 4
+ if(28 to INFINITY)
+ return 5
+ else
+ return 1
+
+//Takes a value of time in deciseconds.
+//Returns a text value of that number in hours, minutes, or seconds.
+/proc/DisplayTimeText(time_value)
+ var/second = time_value*0.1
+ var/second_adjusted = null
+ var/second_rounded = FALSE
+ var/minute = null
+ var/hour = null
+ var/day = null
+
+ if(!second)
+ return "0 seconds"
+ if(second >= 60)
+ minute = round_down(second/60)
+ second = round(second - (minute*60), 0.1)
+ second_rounded = TRUE
+ if(second) //check if we still have seconds remaining to format, or if everything went into minute.
+ second_adjusted = round(second) //used to prevent '1 seconds' being shown
+ if(day || hour || minute)
+ if(second_adjusted == 1 && second >= 1)
+ second = " and 1 second"
+ else if(second > 1)
+ second = " and [second_adjusted] seconds"
+ else //shows a fraction if seconds is < 1
+ if(second_rounded) //no sense rounding again if it's already done
+ second = " and [second] seconds"
+ else
+ second = " and [round(second, 0.1)] seconds"
+ else
+ if(second_adjusted == 1 && second >= 1)
+ second = "1 second"
+ else if(second > 1)
+ second = "[second_adjusted] seconds"
+ else
+ if(second_rounded)
+ second = "[second] seconds"
+ else
+ second = "[round(second, 0.1)] seconds"
+ else
+ second = null
+
+ if(!minute)
+ return "[second]"
+ if(minute >= 60)
+ hour = round_down(minute/60,1)
+ minute = (minute - (hour*60))
+ if(minute) //alot simpler from here since you don't have to worry about fractions
+ if(minute != 1)
+ if((day || hour) && second)
+ minute = ", [minute] minutes"
+ else if((day || hour) && !second)
+ minute = " and [minute] minutes"
+ else
+ minute = "[minute] minutes"
+ else
+ if((day || hour) && second)
+ minute = ", 1 minute"
+ else if((day || hour) && !second)
+ minute = " and 1 minute"
+ else
+ minute = "1 minute"
+ else
+ minute = null
+
+ if(!hour)
+ return "[minute][second]"
+ if(hour >= 24)
+ day = round_down(hour/24,1)
+ hour = (hour - (day*24))
+ if(hour)
+ if(hour != 1)
+ if(day && (minute || second))
+ hour = ", [hour] hours"
+ else if(day && (!minute || !second))
+ hour = " and [hour] hours"
+ else
+ hour = "[hour] hours"
+ else
+ if(day && (minute || second))
+ hour = ", 1 hour"
+ else if(day && (!minute || !second))
+ hour = " and 1 hour"
+ else
+ hour = "1 hour"
+ else
+ hour = null
+
+ if(!day)
+ return "[hour][minute][second]"
+ if(day > 1)
+ day = "[day] days"
+ else
+ day = "1 day"
+
+ return "[day][hour][minute][second]"
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index a05d52087f..a20cad1cf2 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -812,7 +812,7 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list(
/*
-Checks if that loc and dir has a item on the wall
+Checks if that loc and dir has an item on the wall
*/
GLOBAL_LIST_INIT(WALLITEMS, typecacheof(list(
/obj/machinery/power/apc, /obj/machinery/airalarm, /obj/item/device/radio/intercom,
diff --git a/code/_compile_options.dm.rej b/code/_compile_options.dm.rej
deleted file mode 100644
index 842c24b746..0000000000
--- a/code/_compile_options.dm.rej
+++ /dev/null
@@ -1,11 +0,0 @@
-diff a/code/_compile_options.dm b/code/_compile_options.dm (rejected hunks)
-@@ -69,7 +69,7 @@
- #error You need version 511 or higher
- #endif
-
--//Update this whenever the db schema changes
-+//Update this whenever the db schema changes
- //make sure you add an update to the schema_version stable in the db changelog
- #define DB_MAJOR_VERSION 3
--#define DB_MINOR_VERSION 2
-+#define DB_MINOR_VERSION 3
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index 4c8a2654fa..62a5b8c80e 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -20,6 +20,7 @@ GLOBAL_LIST_EMPTY(ai_list)
GLOBAL_LIST_EMPTY(pai_list)
GLOBAL_LIST_EMPTY(available_ai_shells)
GLOBAL_LIST_EMPTY(simple_animals)
+GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs
GLOBAL_LIST_EMPTY(language_datum_instances)
GLOBAL_LIST_EMPTY(all_languages)
diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm
index e600619d45..3f96b33b34 100644
--- a/code/_globalvars/logging.dm
+++ b/code/_globalvars/logging.dm
@@ -16,6 +16,8 @@ GLOBAL_VAR(config_error_log)
GLOBAL_PROTECT(config_error_log)
GLOBAL_VAR(sql_error_log)
GLOBAL_PROTECT(sql_error_log)
+GLOBAL_VAR(world_pda_log)
+GLOBAL_PROTECT(world_pda_log)
GLOBAL_LIST_EMPTY(bombers)
GLOBAL_PROTECT(bombers)
diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm
index 6b4d9aad1c..b65890f4c6 100644
--- a/code/_onclick/ai.dm
+++ b/code/_onclick/ai.dm
@@ -14,7 +14,8 @@
if(call(client.click_intercept, "InterceptClickOn")(src, params, A))
return
- if(control_disabled || stat) return
+ if(control_disabled || incapacitated())
+ return
if(ismob(A))
ai_actual_track(A)
@@ -31,7 +32,7 @@
if(call(client.click_intercept, "InterceptClickOn")(src, params, A))
return
- if(control_disabled || stat)
+ if(control_disabled || incapacitated())
return
var/turf/pixel_turf = get_turf_pixel(A)
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 0eeca2eaf7..2bc6e144dd 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -32,6 +32,7 @@
*/
/atom/Click(location,control,params)
if(initialized)
+ SendSignal(COMSIG_CLICK, location, control, params)
usr.ClickOn(src, params)
/atom/DblClick(location,control,params)
@@ -305,6 +306,7 @@
A.ShiftClick(src)
return
/atom/proc/ShiftClick(mob/user)
+ SendSignal(COMSIG_CLICK_SHIFT, user)
if(user.client && user.client.eye == user || user.client.eye == user.loc)
user.examinate(src)
return
@@ -319,6 +321,7 @@
return
/atom/proc/CtrlClick(mob/user)
+ SendSignal(COMSIG_CLICK_CTRL, user)
var/mob/living/ML = user
if(istype(ML))
ML.pulled(src)
@@ -348,6 +351,7 @@
..()
/atom/proc/AltClick(mob/user)
+ SendSignal(COMSIG_CLICK_ALT, user)
var/turf/T = get_turf(src)
if(T && user.TurfAdjacent(T))
if(user.listed_turf == T)
@@ -373,6 +377,7 @@
return
/atom/proc/CtrlShiftClick(mob/user)
+ SendSignal(COMSIG_CLICK_CTRL_SHIFT)
return
/*
diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm
index 85ecd036de..d4d2c2d8a5 100644
--- a/code/_onclick/hud/action_button.dm
+++ b/code/_onclick/hud/action_button.dm
@@ -78,7 +78,7 @@
/obj/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(datum/hud/owner_hud)
- var settings = owner_hud.get_action_buttons_icons()
+ var/settings = owner_hud.get_action_buttons_icons()
icon = settings["bg_icon"]
icon_state = settings["bg_state"]
hide_icon = settings["toggle_icon"]
diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm
index a5bc86dabe..87a33afc13 100644
--- a/code/_onclick/hud/ai.dm
+++ b/code/_onclick/hud/ai.dm
@@ -2,8 +2,8 @@
icon = 'icons/mob/screen_ai.dmi'
/obj/screen/ai/Click()
- if(isobserver(usr))
- return 1
+ if(isobserver(usr) || usr.incapacitated())
+ return TRUE
/obj/screen/ai/aicore
name = "AI core"
@@ -20,6 +20,8 @@
icon_state = "camera"
/obj/screen/ai/camera_list/Click()
+ if(..())
+ return
var/mob/living/silicon/ai/AI = usr
var/camera = input(AI, "Choose which camera you want to view", "Cameras") as null|anything in AI.get_camera_list()
AI.ai_camera_list(camera)
@@ -130,6 +132,8 @@
icon_state = "take_picture"
/obj/screen/ai/image_take/Click()
+ if(..())
+ return
if(isAI(usr))
var/mob/living/silicon/ai/AI = usr
AI.aicamera.toggle_camera_mode()
@@ -142,6 +146,8 @@
icon_state = "view_images"
/obj/screen/ai/image_view/Click()
+ if(..())
+ return
if(isAI(usr))
var/mob/living/silicon/ai/AI = usr
AI.aicamera.viewpictures()
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 638b4a31cf..b361ef1a78 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -242,9 +242,12 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
icon_state = "fire"
/obj/screen/alert/fire/Click()
- if(isliving(usr))
- var/mob/living/L = usr
- return L.resist()
+ var/mob/living/L = usr
+ if(!L.can_resist())
+ return
+ L.changeNext_move(CLICK_CD_RESIST)
+ if(L.canmove)
+ return L.resist_fire() //I just want to start a flame in your hearrrrrrtttttt.
//ALIENS
@@ -644,9 +647,20 @@ so as to remain in compliance with the most up-to-date laws."
desc = "You're legcuffed, which slows you down considerably. Click the alert to free yourself."
/obj/screen/alert/restrained/Click()
- if(isliving(usr))
- var/mob/living/L = usr
- return L.resist()
+ var/mob/living/L = usr
+ if(!L.can_resist())
+ return
+ L.changeNext_move(CLICK_CD_RESIST)
+ if((L.canmove) && (L.last_special <= world.time))
+ return L.resist_restraints()
+
+/obj/screen/alert/restrained/buckled/Click()
+ var/mob/living/L = usr
+ if(!L.can_resist())
+ return
+ L.changeNext_move(CLICK_CD_RESIST)
+ if(L.last_special <= world.time)
+ return L.resist_buckle()
// PRIVATE = only edit, use, or override these if you're editing the system as a whole
diff --git a/code/_onclick/hud/swarmer.dm b/code/_onclick/hud/swarmer.dm
index 92a98e14c6..b3a2546335 100644
--- a/code/_onclick/hud/swarmer.dm
+++ b/code/_onclick/hud/swarmer.dm
@@ -26,7 +26,7 @@
/obj/screen/swarmer/Replicate
icon_state = "ui_replicate"
name = "Replicate (Costs 50 Resources)"
- desc = "Creates a another of our kind."
+ desc = "Creates another of our kind."
/obj/screen/swarmer/Replicate/Click()
if(isswarmer(usr))
diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm
index 5265a8e8ea..987818924f 100644
--- a/code/_onclick/item_attack.dm
+++ b/code/_onclick/item_attack.dm
@@ -9,17 +9,18 @@
// Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown.
/obj/item/proc/attack_self(mob/user)
- return
+ SendSignal(COMSIG_ITEM_ATTACK_SELF, user)
+ interact(user)
/obj/item/proc/pre_attackby(atom/A, mob/living/user, params) //do stuff before attackby!
return TRUE //return FALSE to avoid calling attackby after this proc does stuff
// No comment
/atom/proc/attackby(obj/item/W, mob/user, params)
- return
+ return SendSignal(COMSIG_PARENT_ATTACKBY, W, user, params)
/obj/attackby(obj/item/I, mob/living/user, params)
- return I.attack_obj(src, user)
+ return ..() || I.attack_obj(src, user)
/mob/living/attackby(obj/item/I, mob/living/user, params)
user.changeNext_move(CLICK_CD_MELEE)
@@ -35,6 +36,7 @@
/obj/item/proc/attack(mob/living/M, mob/living/user)
+ SendSignal(COMSIG_ITEM_ATTACK, M, user)
if(flags_1 & NOBLUDGEON_1)
return
if(!force)
@@ -54,6 +56,7 @@
//the equivalent of the standard version of attack() but for object targets.
/obj/item/proc/attack_obj(obj/O, mob/living/user)
+ SendSignal(COMSIG_ITEM_ATTACK_OBJ, O, user)
if(flags_1 & NOBLUDGEON_1)
return
user.changeNext_move(CLICK_CD_MELEE)
diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm
index ae78d1d172..efab785d12 100644
--- a/code/citadel/cit_guns.dm
+++ b/code/citadel/cit_guns.dm
@@ -26,4 +26,316 @@
build_type = PROTOLATHE
materials = list(MAT_GOLD = 2500, MAT_METAL = 5000, MAT_GLASS = 5000)
build_path = /obj/item/gun/energy/laser/carbine/nopin
- category = list("Weapons")
\ No newline at end of file
+ category = list("Weapons")
+
+////////////Anti Tank Pistol////////////
+
+/obj/item/gun/ballistic/automatic/pistol/antitank
+ name = "Anti Tank Pistol"
+ desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate your wrist."
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "atp"
+ item_state = "pistol"
+ recoil = 6
+ mag_type = /obj/item/ammo_box/magazine/sniper_rounds
+ fire_delay = 50
+ burst_size = 1
+ origin_tech = "combat=7"
+ can_suppress = 0
+ w_class = WEIGHT_CLASS_NORMAL
+ actions_types = list()
+ fire_sound = 'sound/weapons/blastcannon.ogg'
+ spread = 30 //damn thing has no rifling.
+
+/obj/item/gun/ballistic/automatic/pistol/antitank/update_icon()
+ ..()
+ if(magazine)
+ cut_overlays()
+ add_overlay("atp-mag")
+ else
+ cut_overlays()
+ icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
+
+/obj/item/gun/ballistic/automatic/pistol/antitank/syndicate
+ name = "Syndicate Anti Tank Pistol"
+ desc = "A massively impractical and silly monstrosity of a pistol that fires .50 calliber rounds. The recoil is likely to dislocate a variety of joints without proper bracing."
+ pin = /obj/item/device/firing_pin/implant/pindicate
+ origin_tech = "combat=7;syndicate=6"
+
+/////////////spinfusor stuff////////////////
+
+/obj/item/projectile/bullet/spinfusor
+ name ="spinfusor disk"
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state= "spinner"
+ damage = 30
+ dismemberment = 25
+
+/obj/item/projectile/bullet/spinfusor/on_hit(atom/target, blocked = FALSE) //explosion to emulate the spinfusor's AOE
+ ..()
+ explosion(target, -1, -1, 2, 0, -1)
+ return 1
+
+/obj/item/ammo_casing/caseless/spinfusor
+ name = "spinfusor disk"
+ desc = "A magnetic disk designed specifically for the Stormhammer magnetic cannon. Warning: extremely volatile!"
+ projectile_type = /obj/item/projectile/bullet/spinfusor
+ caliber = "spinfusor"
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "disk"
+ throwforce = 15 //still deadly when thrown
+ throw_speed = 3
+
+/obj/item/ammo_casing/caseless/spinfusor/throw_impact(atom/target) //disks detonate when thrown
+ if(!..()) // not caught in mid-air
+ visible_message("[src] detonates!")
+ playsound(src.loc, "sparks", 50, 1)
+ explosion(target, -1, -1, 1, 1, -1)
+ qdel(src)
+ return 1
+
+/obj/item/ammo_box/magazine/internal/spinfusor
+ name = "spinfusor internal magazine"
+ ammo_type = /obj/item/ammo_casing/caseless/spinfusor
+ caliber = "spinfusor"
+ max_ammo = 1
+
+/obj/item/gun/ballistic/automatic/spinfusor
+ name = "Stormhammer Magnetic Cannon"
+ desc = "An innovative weapon utilizing mag-lev technology to spin up a magnetic fusor and launch it at extreme velocities."
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "spinfusor"
+ item_state = "spinfusor"
+ mag_type = /obj/item/ammo_box/magazine/internal/spinfusor
+ fire_sound = 'sound/weapons/rocketlaunch.ogg'
+ w_class = WEIGHT_CLASS_BULKY
+ can_suppress = 0
+ burst_size = 1
+ fire_delay = 20
+ select = 0
+ actions_types = list()
+ casing_ejector = 0
+ origin_tech = "combat=6;magnets=6"
+
+/obj/item/gun/ballistic/automatic/spinfusor/attackby(obj/item/A, mob/user, params)
+ var/num_loaded = magazine.attackby(A, user, params, 1)
+ if(num_loaded)
+ to_chat(user, "You load [num_loaded] disk\s into \the [src].")
+ update_icon()
+ chamber_round()
+
+/obj/item/gun/ballistic/automatic/spinfusor/attack_self(mob/living/user)
+ return //caseless rounds are too glitchy to unload properly. Best to make it so that you cannot remove disks from the spinfusor
+
+/obj/item/gun/ballistic/automatic/spinfusor/update_icon()
+ ..()
+ icon_state = "spinfusor[magazine ? "-[get_ammo(1)]" : ""]"
+
+/obj/item/ammo_box/aspinfusor
+ name = "ammo box (spinfusor disks)"
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "spinfusorbox"
+ ammo_type = /obj/item/ammo_casing/caseless/spinfusor
+ max_ammo = 8
+
+/datum/supply_pack/security/armory/spinfusor
+ name = "Stormhammer Spinfusor Crate"
+ cost = 7000
+ contains = list(/obj/item/gun/ballistic/automatic/spinfusor,
+ /obj/item/gun/ballistic/automatic/spinfusor)
+ crate_name = "spinfusor crate"
+
+/datum/supply_pack/security/armory/spinfusorammo
+ name = "Spinfusor Disk Crate"
+ cost = 4000
+ contains = list(/obj/item/ammo_box/aspinfusor,
+ /obj/item/ammo_box/aspinfusor,
+ /obj/item/ammo_box/aspinfusor,
+ /obj/item/ammo_box/aspinfusor)
+ crate_name = "spinfusor disk crate"
+
+///////XCOM X9 AR///////
+
+/obj/item/gun/ballistic/automatic/x9 //will be adminspawn only so ERT or something can use them
+ name = "\improper X9 Assault Rifle"
+ desc = "A rather old design of a cheap, reliable assault rifle made for combat against unknown enemies. Uses 5.56mm ammo."
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "x9"
+ item_state = "arg"
+ slot_flags = 0
+ origin_tech = "combat=7;engineering=7"
+ mag_type = /obj/item/ammo_box/magazine/m556 //Uses the m90gl's magazine, just like the NT-ARG
+ fire_sound = 'sound/weapons/gunshot_smg.ogg'
+ can_suppress = 0
+ burst_size = 6 //in line with XCOMEU stats. This can fire 5 bursts from a full magazine.
+ fire_delay = 1
+ spread = 30 //should be 40 for XCOM memes, but since its adminspawn only, might as well make it useable
+ recoil = 1
+
+////////XCOM2 Magpistol/////////
+
+//////projectiles//////
+
+/obj/item/projectile/bullet/mags
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "magjectile"
+ damage = 25
+ armour_penetration = 10
+ light_range = 2
+ light_color = LIGHT_COLOR_RED
+
+/obj/item/projectile/bullet/nlmags //non-lethal boolets
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "magjectile-nl"
+ damage = 2
+ knockdown = 15
+ stamina = 50
+ armour_penetration = -10
+ light_range = 2
+ light_color = LIGHT_COLOR_BLUE
+
+
+/////actual ammo/////
+
+/obj/item/ammo_casing/caseless/amags
+ desc = "A ferromagnetic slug intended to be launched out of a compatible weapon."
+ caliber = "mags"
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "mag-casing-live"
+ projectile_type = /obj/item/projectile/bullet/mags
+
+/obj/item/ammo_casing/caseless/anlmags
+ desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload."
+ caliber = "mags"
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "mag-casing-live"
+ projectile_type = /obj/item/projectile/bullet/nlmags
+
+//////magazines/////
+
+/obj/item/ammo_box/magazine/mmags
+ name = "magpistol magazine (non-lethal disabler)"
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "nlmagmag"
+ origin_tech = "magnets=5"
+ ammo_type = /obj/item/ammo_casing/caseless/anlmags
+ caliber = "mags"
+ max_ammo = 7
+ multiple_sprites = 2
+
+/obj/item/ammo_box/magazine/mmags/lethal
+ name = "magpistol magazine (lethal)"
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "smallmagmag"
+ origin_tech = "combat=5"
+ ammo_type = /obj/item/ammo_casing/caseless/amags
+
+//////the gun itself//////
+
+/obj/item/gun/ballistic/automatic/pistol/mag
+ name = "magpistol"
+ desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities."
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "magpistol"
+ force = 10
+ fire_sound = 'sound/weapons/magpistol.ogg'
+ mag_type = /obj/item/ammo_box/magazine/mmags
+ can_suppress = 0
+ casing_ejector = 0
+ fire_delay = 5
+ origin_tech = "combat=4;magnets=4"
+
+/obj/item/gun/ballistic/automatic/pistol/mag/update_icon()
+ ..()
+ if(magazine)
+ cut_overlays()
+ add_overlay("magpistol-magazine")
+ else
+ cut_overlays()
+ icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
+
+///research memes///
+
+/obj/item/gun/ballistic/automatic/pistol/mag/nopin
+ pin = null
+
+/datum/design/magpistol
+ name = "Magpistol"
+ desc = "A weapon which fires ferromagnetic slugs."
+ id = "magpisol"
+ req_tech = list("combat" = 5, "magnets" = 6, "powerstorage" = 5)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000)
+ build_path = /obj/item/gun/ballistic/automatic/pistol/mag/nopin
+ category = list("Weapons")
+
+/datum/design/mag_magpistol
+ name = "Magpistol Magazine"
+ desc = "A 7 round magazine for the Magpistol."
+ id = "mag_magpistol"
+ req_tech = list("combat" = 5, "magnets" = 6, "materials" = 5, "syndicate" = 3)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 4000, MAT_SILVER = 500)
+ build_path = /obj/item/ammo_box/magazine/mmags/lethal
+ category = list("Ammo")
+
+/datum/design/mag_magpistol/nl
+ name = "Magpistol Magazine (Non-Lethal)"
+ desc = "A 7 round non-lethal magazine for the Magpistol."
+ id = "mag_magpistol_nl"
+ req_tech = list("combat" = 5, "magnets" = 6, "materials" = 5)
+ materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250)
+ build_path = /obj/item/ammo_box/magazine/mmags
+
+//////toy memes/////
+
+/obj/item/projectile/bullet/reusable/foam_dart/mag
+ name = "magfoam dart"
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "magjectile-toy"
+ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
+ light_range = 2
+ light_color = LIGHT_COLOR_YELLOW
+
+/obj/item/ammo_casing/caseless/foam_dart/mag
+ name = "magfoam dart"
+ desc = "A foam dart with fun light-up projectiles powered by magnets!"
+ projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag
+
+/obj/item/ammo_box/magazine/internal/shot/toy/mag
+ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
+ max_ammo = 7
+
+/obj/item/gun/ballistic/shotgun/toy/mag
+ name = "foam force magpistol"
+ desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up."
+ icon = 'icons/obj/guns/cit_guns.dmi'
+ icon_state = "toymag"
+ item_state = "gun"
+ mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag
+ fire_sound = 'sound/weapons/magpistol.ogg'
+ slot_flags = SLOT_BELT
+ w_class = WEIGHT_CLASS_SMALL
+
+/obj/item/ammo_box/foambox/mag
+ name = "ammo box (Magnetic Foam Darts)"
+ icon = 'icons/obj/guns/toy.dmi'
+ icon_state = "foambox"
+ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
+ max_ammo = 42
+
+/datum/design/magfoam_dart
+ name = "Box of MagFoam Darts"
+ id = "magfoam_dart"
+ build_type = AUTOLATHE
+ materials = list(MAT_METAL = 300, MAT_GLASS = 200)
+ build_path = /obj/item/ammo_box/foambox/mag
+ category = list("initial", "Misc")
+
+/datum/design/foam_magpistol
+ name = "Foam Force Magpistol"
+ id = "magfoam_launcher"
+ build_type = AUTOLATHE
+ materials = list(MAT_METAL = 7500, MAT_GLASS = 1000)
+ build_path = /obj/item/gun/ballistic/shotgun/toy/mag
+ category = list("hacked", "Misc")
diff --git a/code/citadel/custom_loadout/custom_items.dm b/code/citadel/custom_loadout/custom_items.dm
index 5ee9f3f508..c100f0013c 100644
--- a/code/citadel/custom_loadout/custom_items.dm
+++ b/code/citadel/custom_loadout/custom_items.dm
@@ -67,4 +67,54 @@
w_class = WEIGHT_CLASS_SMALL
attack_verb = list("slapped")
resistance_flags = FLAMMABLE
- var/bitesound = 'sound/items/bikehorn.ogg'
+ squeak_override = list('sound/items/bikehorn.ogg'= 1)
+
+/obj/item/clothing/neck/cloak/carrot
+ name = "carrot cloak"
+ desc = "A cloak in the shape and color of a carrot!"
+ icon = 'icons/obj/clothing/cloaks.dmi'
+ icon_override = 'icons/mob/citadel/suit.dmi'
+ icon_state = "carrotcloak"
+ item_state = "carrotcloak"
+ w_class = WEIGHT_CLASS_SMALL
+ body_parts_covered = CHEST|GROIN|LEGS|ARMS
+
+
+/*Zigfie*/
+
+/obj/item/clothing/mask/luchador/zigfie
+ name = "Alboroto Rosa mask"
+ icon = 'icons/mob/mask.dmi'
+ icon_state = "lucharzigfie"
+ item_state = "lucharzigfie"
+
+
+/*PLACEHOLDER*/
+
+/obj/item/clothing/head/hardhat/reindeer/fluff
+ name = "novelty reindeer hat"
+ desc = "Some fake antlers and a very fake red nose - Sponsored by PWR Game(tm)"
+ icon_state = "hardhat0_reindeer"
+ item_state = "hardhat0_reindeer"
+ item_color = "reindeer"
+ flags_inv = 0
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ brightness_on = 0 //luminosity when on
+ dynamic_hair_suffix = ""
+
+/obj/item/clothing/head/santa/fluff
+ name = "santa's hat"
+ desc = "On the first day of christmas my employer gave to me! - From Vlad with Salad"
+ icon_state = "santahatnorm"
+ item_state = "that"
+ dog_fashion = /datum/dog_fashion/head/santa
+
+
+/*Brian*/
+
+/obj/item/clothing/suit/trenchcoat/green
+ name = "Reece's Great Coat"
+ desc = "You would swear this was in your nightmares after eating too many veggies."
+ icon_state = "hos-g"
+ item_state = "hos-g"
+ body_parts_covered = CHEST|GROIN|ARMS|LEGS
\ No newline at end of file
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index 43b7a2f258..729ed7f379 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -136,7 +136,7 @@ GLOBAL_PROTECT(config_dir)
var/list/probabilities = list() // relative probability of each mode
var/list/min_pop = list() // overrides for acceptible player counts in a mode
var/list/max_pop = list()
-
+ var/list/repeated_mode_adjust = list() // weight adjustments for recent modes
var/humans_need_surnames = 0
var/allow_ai = 0 // allow ai job
var/forbid_secborg = 0 // disallow secborg module to be chosen.
@@ -147,11 +147,13 @@ GLOBAL_PROTECT(config_dir)
var/irc_first_connection_alert = 0 // do we notify the irc channel when somebody is connecting for the first time?
var/traitor_scaling_coeff = 6 //how much does the amount of players get divided by to determine traitors
+ var/brother_scaling_coeff = 25 //how many players per brother team
var/changeling_scaling_coeff = 6 //how much does the amount of players get divided by to determine changelings
var/security_scaling_coeff = 8 //how much does the amount of players get divided by to determine open security officer positions
var/abductor_scaling_coeff = 15 //how many players per abductor team
var/traitor_objectives_amount = 2
+ var/brother_objectives_amount = 2
var/protect_roles_from_antagonist = 0 //If security and such can be traitor/cult/other
var/protect_assistant_from_antagonist = 0 //If assistants can be traitor/cult/other
var/enforce_human_authority = 0 //If non-human species are barred from joining as a head of staff
@@ -276,6 +278,7 @@ GLOBAL_PROTECT(config_dir)
var/error_msg_delay = 50 // How long to wait between messaging admins about occurrences of a unique error
var/arrivals_shuttle_dock_window = 55 //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station
+ var/arrivals_shuttle_require_undocked = FALSE //Require the arrivals shuttle to be undocked before latejoiners can join
var/arrivals_shuttle_require_safe_latejoin = FALSE //Require the arrivals shuttle to be operational in order for latejoiners to join
var/mice_roundstart = 10 // how many wire chewing rodents spawn at roundstart.
@@ -698,6 +701,8 @@ GLOBAL_PROTECT(config_dir)
ghost_interaction = 1
if("traitor_scaling_coeff")
traitor_scaling_coeff = text2num(value)
+ if("brother_scaling_coeff")
+ brother_scaling_coeff = text2num(value)
if("changeling_scaling_coeff")
changeling_scaling_coeff = text2num(value)
if("security_scaling_coeff")
@@ -706,6 +711,8 @@ GLOBAL_PROTECT(config_dir)
abductor_scaling_coeff = text2num(value)
if("traitor_objectives_amount")
traitor_objectives_amount = text2num(value)
+ if("brother_objectives_amount")
+ brother_objectives_amount = text2num(value)
if("probability")
var/prob_pos = findtext(value, " ")
var/prob_name = null
@@ -720,7 +727,14 @@ GLOBAL_PROTECT(config_dir)
WRITE_FILE(GLOB.config_error_log, "Unknown game mode probability configuration definition: [prob_name].")
else
WRITE_FILE(GLOB.config_error_log, "Incorrect probability configuration definition: [prob_name] [prob_value].")
-
+ if("repeated_mode_adjust")
+ if(value)
+ repeated_mode_adjust.Cut()
+ var/values = splittext(value," ")
+ for(var/v in values)
+ repeated_mode_adjust += text2num(v)
+ else
+ WRITE_FILE(GLOB.config_error_log, "Incorrect round weight adjustment configuration definition for [value].")
if("protect_roles_from_antagonist")
protect_roles_from_antagonist = 1
if("protect_assistant_from_antagonist")
@@ -816,6 +830,8 @@ GLOBAL_PROTECT(config_dir)
GLOB.MAX_EX_FLAME_RANGE = BombCap
if("arrivals_shuttle_dock_window")
arrivals_shuttle_dock_window = max(PARALLAX_LOOP_TIME, text2num(value))
+ if("arrivals_shuttle_require_undocked")
+ arrivals_shuttle_require_undocked = TRUE
if("arrivals_shuttle_require_safe_latejoin")
arrivals_shuttle_require_safe_latejoin = TRUE
if("mice_roundstart")
@@ -954,18 +970,18 @@ GLOBAL_PROTECT(config_dir)
/datum/configuration/proc/pick_mode(mode_name)
// I wish I didn't have to instance the game modes in order to look up
// their information, but it is the only way (at least that I know of).
+ // ^ This guy didn't try hard enough
for(var/T in gamemode_cache)
- var/datum/game_mode/M = new T()
- if(M.config_tag && M.config_tag == mode_name)
- return M
- qdel(M)
+ var/datum/game_mode/M = T
+ var/ct = initial(M.config_tag)
+ if(ct && ct == mode_name)
+ return new T
return new /datum/game_mode/extended()
/datum/configuration/proc/get_runnable_modes()
var/list/datum/game_mode/runnable_modes = new
for(var/T in gamemode_cache)
var/datum/game_mode/M = new T()
- //to_chat(world, "DEBUG: [T], tag=[M.config_tag], prob=[probabilities[M.config_tag]]")
if(!(M.config_tag in modes))
qdel(M)
continue
@@ -977,8 +993,15 @@ GLOBAL_PROTECT(config_dir)
if(max_pop[M.config_tag])
M.maximum_players = max_pop[M.config_tag]
if(M.can_start())
- runnable_modes[M] = probabilities[M.config_tag]
- //to_chat(world, "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]")
+ var/final_weight = probabilities[M.config_tag]
+ if(SSpersistence.saved_modes.len == 3 && repeated_mode_adjust.len == 3)
+ var/recent_round = min(SSpersistence.saved_modes.Find(M.config_tag),3)
+ var/adjustment = 0
+ while(recent_round)
+ adjustment += repeated_mode_adjust[recent_round]
+ recent_round = SSpersistence.saved_modes.Find(M.config_tag,recent_round+1,0)
+ final_weight *= ((100-adjustment)/100)
+ runnable_modes[M] = final_weight
return runnable_modes
/datum/configuration/proc/get_runnable_midround_modes(crew)
diff --git a/code/controllers/configuration.dm.rej b/code/controllers/configuration.dm.rej
deleted file mode 100644
index 5d5c2c5055..0000000000
--- a/code/controllers/configuration.dm.rej
+++ /dev/null
@@ -1,24 +0,0 @@
-diff a/code/controllers/configuration.dm b/code/controllers/configuration.dm (rejected hunks)
-@@ -337,17 +337,17 @@
- if("use_account_age_for_jobs")
- use_account_age_for_jobs = 1
- if("use_exp_tracking")
-- use_exp_tracking = 1
-+ use_exp_tracking = TRUE
- if("use_exp_restrictions_heads")
-- use_exp_restrictions_heads = 1
-+ use_exp_restrictions_heads = TRUE
- if("use_exp_restrictions_heads_hours")
- use_exp_restrictions_heads_hours = text2num(value)
- if("use_exp_restrictions_heads_department")
-- use_exp_restrictions_heads_department = 1
-+ use_exp_restrictions_heads_department = TRUE
- if("use_exp_restrictions_other")
-- use_exp_restrictions_other = 1
-+ use_exp_restrictions_other = TRUE
- if("use_exp_restrictions_admin_bypass")
-- use_exp_restrictions_admin_bypass = 1
-+ use_exp_restrictions_admin_bypass = TRUE
- if("lobby_countdown")
- lobby_countdown = text2num(value)
- if("round_end_countdown")
diff --git a/code/controllers/master.dm b/code/controllers/master.dm
index 6981748198..11c460e326 100644
--- a/code/controllers/master.dm
+++ b/code/controllers/master.dm
@@ -422,7 +422,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
// in those cases, so we just let them run)
if (queue_node_flags & SS_NO_TICK_CHECK)
if (queue_node.tick_usage > TICK_LIMIT_RUNNING - TICK_USAGE && ran_non_ticker)
- queue_node.queued_priority += queue_priority_count * 0.10
+ queue_node.queued_priority += queue_priority_count * 0.1
queue_priority_count -= queue_node_priority
queue_priority_count += queue_node.queued_priority
current_tick_budget -= queue_node_priority
diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm
index 8eb7392db8..b5dbabb934 100644
--- a/code/controllers/subsystem/air.dm
+++ b/code/controllers/subsystem/air.dm
@@ -164,6 +164,7 @@ SUBSYSTEM_DEF(air)
currentrun.len--
if(!M || (M.process_atmos(seconds) == PROCESS_KILL))
atmos_machinery.Remove(M)
+ M.SendSignal(COMSIG_MACHINE_PROCESS_ATMOS)
if(MC_TICK_CHECK)
return
@@ -321,7 +322,7 @@ SUBSYSTEM_DEF(air)
EG.dismantle()
CHECK_TICK
- var/msg = "HEY! LISTEN! [(world.timeofday - timer)/10] Seconds were wasted processing [starting_ats] turf(s) (connected to [ending_ats] other turfs) with atmos differences at round start."
+ var/msg = "HEY! LISTEN! [DisplayTimeText(world.timeofday - timer)] were wasted processing [starting_ats] turf(s) (connected to [ending_ats] other turfs) with atmos differences at round start."
to_chat(world, "[msg]")
warning(msg)
@@ -382,4 +383,4 @@ SUBSYSTEM_DEF(air)
#undef SSAIR_EXCITEDGROUPS
#undef SSAIR_HIGHPRESSURE
#undef SSAIR_HOTSPOT
-#undef SSAIR_SUPERCONDUCTIVITY
+#undef SSAIR_SUPERCONDUCTIVITY
\ No newline at end of file
diff --git a/code/controllers/subsystem/augury.dm b/code/controllers/subsystem/augury.dm
index 32086f52ed..38e9724b5f 100644
--- a/code/controllers/subsystem/augury.dm
+++ b/code/controllers/subsystem/augury.dm
@@ -14,6 +14,9 @@ SUBSYSTEM_DEF(augury)
/datum/controller/subsystem/augury/proc/register_doom(atom/A, severity)
doombringers[A] = severity
+/datum/controller/subsystem/augury/proc/unregister_doom(atom/A)
+ doombringers -= A
+
/datum/controller/subsystem/augury/fire()
var/biggest_doom = null
var/biggest_threat = null
diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm
index 301ceeac21..2870305c3e 100644
--- a/code/controllers/subsystem/blackbox.dm
+++ b/code/controllers/subsystem/blackbox.dm
@@ -185,8 +185,7 @@ SUBSYSTEM_DEF(blackbox)
return
if(!L || !L.key || !L.mind)
return
- var/turf/T = get_turf(L)
- var/area/placeofdeath = get_area(T.loc)
+ var/area/placeofdeath = get_area(L)
var/sqlname = sanitizeSQL(L.real_name)
var/sqlkey = sanitizeSQL(L.ckey)
var/sqljob = sanitizeSQL(L.mind.assigned_role)
@@ -275,7 +274,7 @@ SUBSYSTEM_DEF(blackbox)
details += "\"[deets]\""
/datum/feedback_variable/proc/get_details()
- return details.Join(" | ")
+ return details ? details.Join(" | ") : null
/datum/feedback_variable/proc/get_parsed()
return list(variable,value,details.Join(" | "))
diff --git a/code/controllers/subsystem/blackbox.dm.rej b/code/controllers/subsystem/blackbox.dm.rej
deleted file mode 100644
index 5bd713172b..0000000000
--- a/code/controllers/subsystem/blackbox.dm.rej
+++ /dev/null
@@ -1,10 +0,0 @@
-diff a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm (rejected hunks)
-@@ -40,7 +40,7 @@ SUBSYSTEM_DEF(blackbox)
-
- if(config.use_exp_tracking)
- if((triggertime < 0) || (world.time > (triggertime +3000))) //subsystem fires once at roundstart then once every 10 minutes. a 5 min check skips the first fire. The <0 is midnight rollover check
-- SSblackbox.update_exp(10,FALSE)
-+ update_exp(10,FALSE)
-
-
- /datum/controller/subsystem/blackbox/Recover()
diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm
index eab61d4ef9..db6af6d686 100644
--- a/code/controllers/subsystem/machines.dm
+++ b/code/controllers/subsystem/machines.dm
@@ -40,6 +40,7 @@ SUBSYSTEM_DEF(machines)
var/obj/machinery/thing = currentrun[currentrun.len]
currentrun.len--
if(!QDELETED(thing) && thing.process(seconds) != PROCESS_KILL)
+ thing.SendSignal(COMSIG_MACHINE_PROCESS)
if(thing.use_power)
thing.auto_use_power() //add back the power state
else
@@ -61,4 +62,4 @@ SUBSYSTEM_DEF(machines)
if (istype(SSmachines.processing))
processing = SSmachines.processing
if (istype(SSmachines.powernets))
- powernets = SSmachines.powernets
+ powernets = SSmachines.powernets
\ No newline at end of file
diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm
index 13762b83f9..df7121455c 100644
--- a/code/controllers/subsystem/persistence.dm
+++ b/code/controllers/subsystem/persistence.dm
@@ -8,7 +8,7 @@ SUBSYSTEM_DEF(persistence)
var/list/obj/structure/chisel_message/chisel_messages = list()
var/list/saved_messages = list()
-
+ var/list/saved_modes = list(1,2,3)
var/list/saved_trophies = list()
/datum/controller/subsystem/persistence/Initialize()
@@ -16,6 +16,7 @@ SUBSYSTEM_DEF(persistence)
LoadPoly()
LoadChiselMessages()
LoadTrophies()
+ LoadRecentModes()
..()
/datum/controller/subsystem/persistence/proc/LoadSatchels()
@@ -41,8 +42,7 @@ SUBSYSTEM_DEF(persistence)
var/json_file = file("data/npc_saves/SecretSatchels[SSmapping.config.map_name].json")
if(!fexists(json_file))
return
- var/list/json = list()
- json = json_decode(file2text(json_file))
+ var/list/json = json_decode(file2text(json_file))
old_secret_satchels = json["data"]
if(old_secret_satchels.len)
if(old_secret_satchels.len >= 20) //guards against low drop pools assuring that one player cannot reliably find his own gear.
@@ -84,8 +84,7 @@ SUBSYSTEM_DEF(persistence)
var/json_file = file("data/npc_saves/ChiselMessages[SSmapping.config.map_name].json")
if(!fexists(json_file))
return
- var/list/json
- json = json_decode(file2text(json_file))
+ var/list/json = json_decode(file2text(json_file))
if(!json)
return
@@ -129,13 +128,22 @@ SUBSYSTEM_DEF(persistence)
var/json_file = file("data/npc_saves/TrophyItems.json")
if(!fexists(json_file))
return
- var/list/json = list()
- json = json_decode(file2text(json_file))
+ var/list/json = json_decode(file2text(json_file))
if(!json)
return
saved_trophies = json["data"]
SetUpTrophies(saved_trophies.Copy())
+/datum/controller/subsystem/persistence/proc/LoadRecentModes()
+ var/json_file = file("data/RecentModes.json")
+ if(!fexists(json_file))
+ return
+ var/list/json = json_decode(file2text(json_file))
+ if(!json)
+ return
+ saved_modes = json["data"]
+
+
/datum/controller/subsystem/persistence/proc/SetUpTrophies(list/trophy_items)
for(var/A in GLOB.trophy_cases)
var/obj/structure/displaycase/trophy/T = A
@@ -165,6 +173,7 @@ SUBSYSTEM_DEF(persistence)
CollectChiselMessages()
CollectSecretSatchels()
CollectTrophies()
+ CollectRoundtype()
/datum/controller/subsystem/persistence/proc/CollectSecretSatchels()
var/list/satchels = list()
@@ -224,3 +233,13 @@ SUBSYSTEM_DEF(persistence)
data["message"] = T.trophy_message
data["placer_key"] = T.placer_key
saved_trophies += list(data)
+
+/datum/controller/subsystem/persistence/proc/CollectRoundtype()
+ saved_modes[3] = saved_modes[2]
+ saved_modes[2] = saved_modes[1]
+ saved_modes[1] = SSticker.mode.config_tag
+ var/json_file = file("data/RecentModes.json")
+ var/list/file_data = list()
+ file_data["data"] = saved_modes
+ fdel(json_file)
+ WRITE_FILE(json_file, json_encode(file_data))
\ No newline at end of file
diff --git a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm
index ec34cfb8ed..87b06cd587 100644
--- a/code/controllers/subsystem/server_maint.dm
+++ b/code/controllers/subsystem/server_maint.dm
@@ -29,7 +29,7 @@ SUBSYSTEM_DEF(server_maint)
var/cmob = C.mob
if(!(isobserver(cmob) || (isdead(cmob) && C.holder)))
log_access("AFK: [key_name(C)]")
- to_chat(C, "You have been inactive for more than [config.afk_period / 600] minutes and have been disconnected.")
+ to_chat(C, "You have been inactive for more than [DisplayTimeText(config.afk_period)] and have been disconnected.")
qdel(C)
if (!(!C || world.time - C.connection_time < PING_BUFFER_TIME || C.inactivity >= (wait-1)))
diff --git a/code/controllers/subsystem/server_maint.dm.rej b/code/controllers/subsystem/server_maint.dm.rej
deleted file mode 100644
index 486375b505..0000000000
--- a/code/controllers/subsystem/server_maint.dm.rej
+++ /dev/null
@@ -1,30 +0,0 @@
-diff a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm (rejected hunks)
-@@ -6,18 +6,16 @@ SUBSYSTEM_DEF(server_maint)
- flags = SS_POST_FIRE_TIMING|SS_FIRE_IN_LOBBY
- priority = 10
- var/list/currentrun
-- var/triggertime = null
-
- /datum/controller/subsystem/server_maint/Initialize(timeofday)
- if (config.hub)
- world.visibility = 1
-- triggertime = REALTIMEOFDAY
- ..()
-
- /datum/controller/subsystem/server_maint/fire(resumed = FALSE)
- if(!resumed)
- src.currentrun = GLOB.clients.Copy()
--
-+
- var/list/currentrun = src.currentrun
- var/round_started = SSticker.HasRoundStarted()
-
-@@ -39,8 +37,3 @@ SUBSYSTEM_DEF(server_maint)
- return
-
- #undef PING_BUFFER_TIME
-- if(config.sql_enabled)
-- sql_poll_population()
-- if(config.use_exp_tracking)
-- if(REALTIMEOFDAY > (triggertime +3000)) //server maint fires once at roundstart then once every 10 minutes. a 5 min check skips the first fire
-- update_exp(10,0)
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index de6445831d..2b1080049e 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -178,7 +178,7 @@ SUBSYSTEM_DEF(shuttle)
emergency = backup_shuttle
if(world.time - SSticker.round_start_time < config.shuttle_refuel_delay)
- to_chat(user, "The emergency shuttle is refueling. Please wait another [abs(round(((world.time - SSticker.round_start_time) - config.shuttle_refuel_delay)/600))] minutes before trying again.")
+ to_chat(user, "The emergency shuttle is refueling. Please wait [DisplayTimeText((world.time - SSticker.round_start_time) - config.shuttle_refuel_delay)] before trying again.")
return
switch(emergency.mode)
@@ -220,7 +220,7 @@ SUBSYSTEM_DEF(shuttle)
if(call_reason)
SSblackbox.add_details("shuttle_reason", call_reason)
log_game("Shuttle call reason: [call_reason]")
- message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)")
+ message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)")
/datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, admiral_message)
if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer)
@@ -430,17 +430,14 @@ SUBSYSTEM_DEF(shuttle)
continue base
if(!(T.flags_1 & UNUSED_TRANSIT_TURF_1))
continue base
- //to_chat(world, "[COORD(topleft)] and [COORD(bottomright)]")
break base
if((!proposed_zone) || (!proposed_zone.len))
return FALSE
var/turf/topleft = proposed_zone[1]
- //to_chat(world, "[COORD(topleft)] is TOPLEFT")
// Then create a transit docking port in the middle
var/coords = M.return_coords(0, 0, dock_dir)
- //to_chat(world, json_encode(coords))
/* 0------2
| |
| |
@@ -478,11 +475,9 @@ SUBSYSTEM_DEF(shuttle)
if(WEST)
transit_path = /turf/open/space/transit/west
- //to_chat(world, "Docking port at [transit_x], [transit_y], [topleft.z]")
var/turf/midpoint = locate(transit_x, transit_y, topleft.z)
if(!midpoint)
return FALSE
- //to_chat(world, "Making transit dock at [COORD(midpoint)]")
var/area/shuttle/transit/A = new()
A.parallax_movedir = travel_dir
A.contents = proposed_zone
diff --git a/code/controllers/subsystem/squeak.dm b/code/controllers/subsystem/squeak.dm
index d94efd0a4a..16b722c71b 100644
--- a/code/controllers/subsystem/squeak.dm
+++ b/code/controllers/subsystem/squeak.dm
@@ -1,6 +1,6 @@
// The Squeak
// because this is about placement of mice mobs, and nothing to do with
-// mice - the computer peripheral
+// mice - the computer peripheral
SUBSYSTEM_DEF(squeak)
name = "Squeak"
@@ -32,8 +32,9 @@ SUBSYSTEM_DEF(squeak)
/datum/controller/subsystem/squeak/proc/find_exposed_wires()
exposed_wires.Cut()
-
- var/list/all_turfs = block(locate(1,1,1), locate(world.maxx,world.maxy,1))
+ var/list/all_turfs
+ for (var/z in GLOB.station_z_levels)
+ all_turfs += block(locate(1,1,z), locate(world.maxx,world.maxy,z))
for(var/turf/open/floor/plating/T in all_turfs)
if(is_blocked_turf(T))
continue
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 94d4d90d23..82b91bfa67 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -139,7 +139,8 @@ SUBSYSTEM_DEF(ticker)
if(!mode.explosion_in_progress && mode.check_finished(force_ending) || force_ending)
current_state = GAME_STATE_FINISHED
- toggle_ooc(1) // Turn it on
+ toggle_ooc(TRUE) // Turn it on
+ toggle_dooc(TRUE)
declare_completion(force_ending)
Master.SetRunLevel(RUNLEVEL_POSTGAME)
@@ -166,6 +167,8 @@ SUBSYSTEM_DEF(ticker)
to_chat(world, "Unable to choose playable game mode. Reverting to pre-game lobby.")
return 0
mode = pickweight(runnable_modes)
+ if(!mode) //too few roundtypes all run too recently
+ mode = pick(runnable_modes)
else
mode = config.pick_mode(GLOB.master_mode)
@@ -205,7 +208,7 @@ SUBSYSTEM_DEF(ticker)
mode.announce()
if(!config.ooc_during_round)
- toggle_ooc(0) // Turn it off
+ toggle_ooc(FALSE) // Turn it off
CHECK_TICK
GLOB.start_landmarks_list = shuffle(GLOB.start_landmarks_list) //Shuffle the order of spawn points so they dont always predictably spawn bottom-up and right-to-left
@@ -241,10 +244,10 @@ SUBSYSTEM_DEF(ticker)
PostSetup()
- return 1
+ return TRUE
/datum/controller/subsystem/ticker/proc/PostSetup()
- set waitfor = 0
+ set waitfor = FALSE
mode.post_setup()
GLOB.start_state = new /datum/station_state()
GLOB.start_state.count(1)
@@ -511,7 +514,7 @@ SUBSYSTEM_DEF(ticker)
end_state.count()
var/station_integrity = min(PERCENT(GLOB.start_state.score(end_state)), 100)
- to_chat(world, "
[GLOB.TAB]Shift Duration: [round(world.time / 36000)]:[add_zero("[world.time / 600 % 60]", 2)]:[world.time / 100 % 6][world.time / 100 % 10]")
+ to_chat(world, "
[GLOB.TAB]Shift Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]")
to_chat(world, "
[GLOB.TAB]Station Integrity: [mode.station_was_nuked ? "Destroyed" : "[station_integrity]%"]")
if(mode.station_was_nuked)
SSticker.news_report = STATION_DESTROYED_NUKE
diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm
index 0dbc7c5d3a..0ea16b32d8 100644
--- a/code/controllers/subsystem/vote.dm
+++ b/code/controllers/subsystem/vote.dm
@@ -169,7 +169,7 @@ SUBSYSTEM_DEF(vote)
admin = TRUE
if(next_allowed_time > world.time && !admin)
- to_chat(usr, "A vote was initiated recently, you must wait roughly [(next_allowed_time-world.time)/10] seconds before a new vote can be started!")
+ to_chat(usr, "A vote was initiated recently, you must wait [DisplayTimeText(next_allowed_time-world.time)] before a new vote can be started!")
return 0
reset()
@@ -198,7 +198,7 @@ SUBSYSTEM_DEF(vote)
if(mode == "custom")
text += "\n[question]"
log_vote(text)
- to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [config.vote_period/10] seconds to vote.")
+ to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [DisplayTimeText(config.vote_period)] to vote.")
time_remaining = round(config.vote_period/10)
for(var/c in GLOB.clients)
var/client/C = c
diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm
index 88102e260c..e66fd4ffeb 100644
--- a/code/controllers/subsystem/weather.dm
+++ b/code/controllers/subsystem/weather.dm
@@ -14,8 +14,8 @@ SUBSYSTEM_DEF(weather)
if(W.aesthetic)
continue
for(var/mob/living/L in GLOB.mob_list)
- if(W.can_impact(L))
- W.impact(L)
+ if(W.can_weather_act(L))
+ W.weather_act(L)
for(var/Z in eligible_zlevels)
var/list/possible_weather_for_this_z = list()
for(var/V in existing_weather)
@@ -30,8 +30,7 @@ SUBSYSTEM_DEF(weather)
/datum/controller/subsystem/weather/Initialize(start_timeofday)
..()
for(var/V in subtypesof(/datum/weather))
- var/datum/weather/W = V
- new W //weather->New will handle adding itself to the list
+ new V //Weather's New() will handle adding stuff to the list
/datum/controller/subsystem/weather/proc/run_weather(weather_name, Z)
if(!weather_name)
diff --git a/code/datums/action.dm b/code/datums/action.dm
index 8e32e8968f..ca71a7cbec 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -421,7 +421,7 @@
/datum/action/item_action/ninjapulse
name = "EM Burst (25E)"
- desc = "Disable any nearby technology with a electro-magnetic pulse."
+ desc = "Disable any nearby technology with an electro-magnetic pulse."
button_icon_state = "emp"
icon_icon = 'icons/mob/actions/actions_spells.dmi'
diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm
index 24daad00f9..2222a959bc 100644
--- a/code/datums/ai_laws.dm
+++ b/code/datums/ai_laws.dm
@@ -310,7 +310,7 @@
replaceable_groups[LAW_INHERENT] = inherent.len
if(supplied.len && (LAW_SUPPLIED in groups))
replaceable_groups[LAW_SUPPLIED] = supplied.len
- var picked_group = pickweight(replaceable_groups)
+ var/picked_group = pickweight(replaceable_groups)
switch(picked_group)
if(LAW_ZEROTH)
. = zeroth
diff --git a/code/datums/antagonists/datum_abductor.dm b/code/datums/antagonists/datum_abductor.dm
new file mode 100644
index 0000000000..6d08d61b8a
--- /dev/null
+++ b/code/datums/antagonists/datum_abductor.dm
@@ -0,0 +1,60 @@
+/datum/antagonist/abductor
+ name = "Abductor"
+ var/datum/objective_team/abductor_team/team
+ var/sub_role
+ var/outfit
+ var/landmark_type
+ var/greet_text
+
+/datum/antagonist/abductor/agent
+ sub_role = "Agent"
+ outfit = /datum/outfit/abductor/agent
+ landmark_type = /obj/effect/landmark/abductor/agent
+ greet_text = "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve."
+
+/datum/antagonist/abductor/scientist
+ sub_role = "Scientist"
+ outfit = /datum/outfit/abductor/scientist
+ landmark_type = /obj/effect/landmark/abductor/scientist
+ greet_text = "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve."
+
+/datum/antagonist/abductor/New(datum/mind/new_owner, datum/objective_team/abductor_team/T)
+ team = T
+ return ..()
+
+/datum/antagonist/abductor/on_gain()
+ SSticker.mode.abductors += owner
+ owner.special_role = "[name] [sub_role]"
+ owner.objectives += team.objectives
+ finalize_abductor()
+ return ..()
+
+/datum/antagonist/abductor/on_removal()
+ SSticker.mode.abductors -= owner
+ team.members -= owner
+ owner.objectives -= team.objectives
+ if(owner.current)
+ to_chat(owner.current,"You are no longer the [owner.special_role]!")
+ owner.special_role = null
+ return ..()
+
+/datum/antagonist/abductor/greet()
+ to_chat(owner.current, "You are the [owner.special_role]!")
+ to_chat(owner.current, "With the help of your teammate, kidnap and experiment on station crew members!")
+ to_chat(owner.current, "[greet_text]")
+ owner.announce_objectives()
+
+/datum/antagonist/abductor/proc/finalize_abductor()
+ //Equip
+ var/mob/living/carbon/human/H = owner.current
+ H.set_species(/datum/species/abductor)
+ H.real_name = "[team.name] [sub_role]"
+ H.equipOutfit(outfit)
+
+ //Teleport to ship
+ for(var/obj/effect/landmark/abductor/LM in GLOB.landmarks_list)
+ if(istype(LM, landmark_type) && LM.team_number == team.team_number)
+ H.forceMove(LM.loc)
+ break
+
+ SSticker.mode.update_abductor_icons_added(owner)
diff --git a/code/datums/antagonists/datum_brother.dm b/code/datums/antagonists/datum_brother.dm
new file mode 100644
index 0000000000..1f799b1bf8
--- /dev/null
+++ b/code/datums/antagonists/datum_brother.dm
@@ -0,0 +1,48 @@
+/datum/antagonist/brother
+ name = "Brother"
+ var/special_role = "blood brother"
+ var/datum/objective_team/brother_team/team
+
+/datum/antagonist/brother/New(datum/mind/new_owner, datum/objective_team/brother_team/T)
+ team = T
+ return ..()
+
+/datum/antagonist/brother/on_gain()
+ SSticker.mode.brothers += owner
+ owner.special_role = special_role
+ owner.objectives += team.objectives
+ finalize_brother()
+ return ..()
+
+/datum/antagonist/brother/on_removal()
+ SSticker.mode.brothers -= owner
+ team.members -= owner
+ owner.objectives -= team.objectives
+ if(owner.current)
+ to_chat(owner.current,"You are no longer the [special_role]!")
+ owner.special_role = null
+ return ..()
+
+/datum/antagonist/brother/proc/give_meeting_area()
+ if(!owner.current || !team || !team.meeting_area)
+ return
+ to_chat(owner.current, "Your designated meeting area: [team.meeting_area]")
+ owner.store_memory("Meeting Area: [team.meeting_area]")
+
+/datum/antagonist/brother/greet()
+ var/brother_text = ""
+ var/list/brothers = team.members - owner
+ for(var/i = 1 to brothers.len)
+ var/datum/mind/M = brothers[i]
+ brother_text += M.name
+ if(i == brothers.len - 1)
+ brother_text += " and "
+ else if(i != brothers.len)
+ brother_text += ", "
+ to_chat(owner.current, "You are the [owner.special_role] of [brother_text].")
+ to_chat(owner.current, "The Syndicate only accepts those that have proven themself. Prove yourself and prove your [team.member_name]s by completing your objectives together!")
+ owner.announce_objectives()
+ give_meeting_area()
+
+/datum/antagonist/brother/proc/finalize_brother()
+ SSticker.mode.update_brother_icons_added(owner)
diff --git a/code/datums/antagonists/datum_traitor.dm b/code/datums/antagonists/datum_traitor.dm
index 245c620dd3..eeb803ca1e 100644
--- a/code/datums/antagonists/datum_traitor.dm
+++ b/code/datums/antagonists/datum_traitor.dm
@@ -186,9 +186,9 @@
kill_objective.find_target()
add_objective(kill_objective)
- var/datum/objective/survive/survive_objective = new
- survive_objective.owner = owner
- add_objective(survive_objective)
+ var/datum/objective/survive/exist/exist_objective = new
+ exist_objective.owner = owner
+ add_objective(exist_objective)
/datum/antagonist/traitor/proc/forge_single_objective()
return 0
/datum/antagonist/traitor/human/forge_single_objective() //Returns how many objectives are added
diff --git a/code/datums/browser.dm b/code/datums/browser.dm
index c854d20f18..cae6e04e9b 100644
--- a/code/datums/browser.dm
+++ b/code/datums/browser.dm
@@ -256,7 +256,6 @@
winset(user, windowid, "on-close=\".windowclose [param]\"")
- //to_chat(world, "OnClose [user]: [windowid] : ["on-close=\".windowclose [param]\""]")
// the on-close client verb
@@ -268,12 +267,10 @@
set hidden = 1 // hide this verb from the user's panel
set name = ".windowclose" // no autocomplete on cmd line
- //to_chat(world, "windowclose: [atomref]")
if(atomref!="null") // if passed a real atomref
var/hsrc = locate(atomref) // find the reffed atom
var/href = "close=1"
if(hsrc)
- //to_chat(world, "[src] Topic [href] [hsrc]")
usr = src.mob
src.Topic(href, params2list(href), hsrc) // this will direct to the atom's
return // Topic() proc via client.Topic()
@@ -281,6 +278,5 @@
// no atomref specified (or not found)
// so just reset the user mob's machine var
if(src && src.mob)
- //to_chat(world, "[src] was [src.mob.machine], setting to null")
src.mob.unset_machine()
return
diff --git a/code/datums/callback.dm b/code/datums/callback.dm
index 624fed58a6..0fc500e467 100644
--- a/code/datums/callback.dm
+++ b/code/datums/callback.dm
@@ -131,7 +131,7 @@
//runs a list of callbacks asynchronously, returning once all of them return.
//callbacks can be repeated.
-//callbacks-args is a optional list of argument lists, in the same order as the callbacks,
+//callbacks-args is an optional list of argument lists, in the same order as the callbacks,
// the inner lists will be sent to the callbacks when invoked() as additional args.
//can optionly save and return a list of return values, in the same order as the original list of callbacks
//resolution is the number of byond ticks between checks.
diff --git a/code/datums/components/README.md b/code/datums/components/README.md
index 93a846035f..04dc21f33e 100644
--- a/code/datums/components/README.md
+++ b/code/datums/components/README.md
@@ -62,7 +62,7 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo
* Returns the component that was created. Or the old component in a dupe situation where `COMPONENT_DUPE_UNIQUE` was set
1. `/datum/proc/LoadComponent(component_type(type), ...) -> datum/component` (public, final)
* Equivalent to calling `GetComponent(component_type)` where, if the result would be `null`, returns `AddComponent(component_type, ...)` instead
-1. `/datum/proc/ComponentActivated(datum/component/C)` (abstract)
+1. `/datum/proc/ComponentActivated(datum/component/C)` (abstract, async)
* Called on a component's `parent` after a signal recieved causes it to activate. `src` is the parameter
* Will only be called if a component's callback returns `TRUE`
1. `/datum/proc/TakeComponent(datum/component/C)` (public, final)
@@ -87,7 +87,7 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo
* Called on a component when a component of the same type was added to the same parent
* See `/datum/component/var/dupe_mode`
* `C`'s type will always be the same of the called component
-1. `/datum/component/proc/AfterComponentActivated()` (abstract)
+1. `/datum/component/proc/AfterComponentActivated()` (abstract, async)
* Called on a component that was activated after it's `parent`'s `ComponentActivated()` is called
1. `/datum/component/proc/OnTransfer(datum/new_parent)` (abstract, no-sleep)
* Called before the new `parent` is assigned in `TakeComponent()`, after the remove signal, before the added signal
@@ -101,8 +101,5 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo
* If a previous registration is overwritten by the call, a runtime occurs. Setting `override` to TRUE prevents this
* These callbacks run asyncronously
* Returning `TRUE` from these callbacks will trigger a `TRUE` return from the `SendSignal()` that initiated it
-1. `/datum/component/proc/ReceiveSignal(signal, ...)` (virtual)
- * Called when a component recieves any signal and is enabled
- * Default implementation looks if the signal is registered and runs the appropriate proc
### See/Define signals and their arguments in __DEFINES\components.dm
diff --git a/code/datums/components/component.dm b/code/datums/components/_component.dm
similarity index 88%
rename from code/datums/components/component.dm
rename to code/datums/components/_component.dm
index 6b902a6ac6..667ffa7b82 100644
--- a/code/datums/components/component.dm
+++ b/code/datums/components/_component.dm
@@ -110,15 +110,6 @@
procs[sig_type] = CALLBACK(src, proc_on_self)
-/datum/component/proc/ReceiveSignal(sigtype, ...)
- var/list/sps = signal_procs
- var/datum/callback/CB = LAZYACCESS(sps, sigtype)
- if(!CB)
- return FALSE
- var/list/arguments = args.Copy()
- arguments.Cut(1, 2)
- return CB.InvokeAsync(arglist(arguments))
-
/datum/component/proc/InheritComponent(datum/component/C, i_am_original)
return
@@ -126,6 +117,7 @@
return
/datum/component/proc/AfterComponentActivated()
+ set waitfor = FALSE
return
/datum/component/proc/_GetInverseTypeList(current_type)
@@ -136,26 +128,40 @@
/datum/proc/SendSignal(sigtype, ...)
var/list/comps = datum_components
- . = FALSE
if(!comps)
- return
+ return FALSE
+ var/list/arguments = args.Copy()
+ arguments.Cut(1, 2)
var/target = comps[/datum/component]
if(!islist(target))
var/datum/component/C = target
- if(C.enabled && C.ReceiveSignal(arglist(args)))
+ if(!C.enabled)
+ return FALSE
+ var/list/sps = C.signal_procs
+ var/datum/callback/CB = LAZYACCESS(sps, sigtype)
+ if(!CB)
+ return FALSE
+ . = CB.InvokeAsync(arglist(arguments))
+ if(.)
ComponentActivated(C)
C.AfterComponentActivated()
- return TRUE
else
+ . = FALSE
for(var/I in target)
var/datum/component/C = I
if(!C.enabled)
+ continue
+ var/list/sps = C.signal_procs
+ var/datum/callback/CB = LAZYACCESS(sps, sigtype)
+ if(!CB)
continue
- if(C.ReceiveSignal(arglist(args)))
+ if(CB.InvokeAsync(arglist(arguments)))
ComponentActivated(C)
+ C.AfterComponentActivated()
. = TRUE
/datum/proc/ComponentActivated(datum/component/C)
+ set waitfor = FALSE
return
/datum/proc/GetComponent(c_type)
diff --git a/code/datums/material_container.dm b/code/datums/components/material_container.dm
similarity index 61%
rename from code/datums/material_container.dm
rename to code/datums/components/material_container.dm
index a8863c70bc..55504d47d5 100644
--- a/code/datums/material_container.dm
+++ b/code/datums/components/material_container.dm
@@ -5,22 +5,34 @@
amount - raw amount of the mineral this container is holding, calculated by the defined value MINERAL_MATERIAL_AMOUNT=2000.
max_amount - max raw amount of mineral this container can hold.
sheet_type - type of the mineral sheet the container handles, used for output.
- owner - object that this container is being used by, used for output.
+ parent - object that this container is being used by, used for output.
MAX_STACK_SIZE - size of a stack of mineral sheets. Constant.
*/
-/datum/material_container
+/datum/component/material_container
var/total_amount = 0
var/max_amount
var/sheet_type
- var/obj/owner
- var/list/materials = list()
+ var/list/materials
+ var/show_on_examine
+ var/list/allowed_typecache
+ var/last_inserted_type
+ var/last_amount_inserted
+ var/last_insert_success
+ var/datum/callback/precondition
//MAX_STACK_SIZE = 50
//MINERAL_MATERIAL_AMOUNT = 2000
-/datum/material_container/New(obj/O, list/mat_list, max_amt = 0)
- owner = O
+/datum/component/material_container/Initialize(list/mat_list, max_amt = 0, _show_on_examine = FALSE, list/allowed_types, datum/callback/_precondition)
+ materials = list()
max_amount = max(0, max_amt)
+ show_on_examine = _show_on_examine
+ if(allowed_types)
+ allowed_typecache = typecacheof(allowed_types)
+ precondition = _precondition
+
+ RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy)
+ RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/OnExamine)
var/list/possible_mats = list()
for(var/mat_type in subtypesof(/datum/material))
@@ -31,12 +43,47 @@
var/mat_path = possible_mats[id]
materials[id] = new mat_path()
-/datum/material_container/Destroy()
- owner = null
- return ..()
+/datum/component/material_container/proc/OnExamine(mob/user)
+ for(var/I in materials)
+ var/datum/material/M = materials[I]
+ var/amt = amount(M.id)
+ if(amt)
+ to_chat(user, "It has [amt] units of [lowertext(M.name)] stored.")
+
+/datum/component/material_container/proc/OnAttackBy(obj/item/I, mob/living/user)
+ var/list/tc = allowed_typecache
+ if(user.a_intent == INTENT_HARM || (I.flags_2 & HOLOGRAM_2) || (tc && !is_type_in_typecache(I, tc)))
+ return FALSE
+ . = TRUE
+ last_insert_success = FALSE
+ var/datum/callback/pc = precondition
+ if(pc && !pc.Invoke())
+ return
+ var/material_amount = get_item_material_amount(I)
+ if(!material_amount)
+ to_chat(user, "[I] does not contain sufficient amounts of metal or glass to be accepted by [parent].")
+ return
+ if(!has_space(material_amount))
+ to_chat(user, "[parent] is full. Please remove metal or glass from [parent] in order to insert more.")
+ return
+ if(!user.temporarilyRemoveItemFromInventory(I))
+ to_chat(user, "[I] is stuck to you and cannot be placed into [parent].")
+ return
+ var/inserted = insert_item(I)
+ if(inserted)
+ last_insert_success = TRUE
+ if(istype(I, /obj/item/stack))
+ to_chat(user, "You insert [inserted] sheet[inserted>1 ? "s" : ""] into [parent].")
+ if(!QDELETED(I))
+ user.put_in_active_hand(I)
+ else
+ to_chat(user, "You insert a material total of [inserted] into [parent].")
+ qdel(I)
+ else
+ user.put_in_active_hand(I)
//For inserting an amount of material
-/datum/material_container/proc/insert_amount(amt, id = null)
+/datum/component/material_container/proc/insert_amount(amt, id = null)
if(amt > 0 && has_space(amt))
var/total_amount_saved = total_amount
if(id)
@@ -52,7 +99,7 @@
return (total_amount - total_amount_saved)
return 0
-/datum/material_container/proc/insert_stack(obj/item/stack/S, amt = 0)
+/datum/component/material_container/proc/insert_stack(obj/item/stack/S, amt = 0)
if(amt <= 0)
return 0
if(amt > S.amount)
@@ -67,10 +114,12 @@
return 0
insert_materials(S,amt)
+ last_inserted_type = S.type
S.use(amt)
+ last_amount_inserted = amt
return amt
-/datum/material_container/proc/insert_item(obj/item/I, multiplier = 1)
+/datum/component/material_container/proc/insert_item(obj/item/I, multiplier = 1)
if(!I)
return 0
if(istype(I, /obj/item/stack))
@@ -82,9 +131,11 @@
return 0
insert_materials(I, multiplier)
+ last_inserted_type = I.type
+ last_amount_inserted = material_amount
return material_amount
-/datum/material_container/proc/insert_materials(obj/item/I, multiplier = 1) //for internal usage only
+/datum/component/material_container/proc/insert_materials(obj/item/I, multiplier = 1) //for internal usage only
var/datum/material/M
for(var/MAT in materials)
M = materials[MAT]
@@ -93,7 +144,7 @@
//For consuming material
//mats is a list of types of material to use and the corresponding amounts, example: list(MAT_METAL=100, MAT_GLASS=200)
-/datum/material_container/proc/use_amount(list/mats, multiplier=1)
+/datum/component/material_container/proc/use_amount(list/mats, multiplier=1)
if(!mats || !mats.len)
return 0
@@ -112,7 +163,7 @@
return total_amount_save - total_amount
-/datum/material_container/proc/use_amount_type(amt, id)
+/datum/component/material_container/proc/use_amount_type(amt, id)
var/datum/material/M = materials[id]
if(M)
if(M.amount >= amt)
@@ -121,7 +172,7 @@
return amt
return 0
-/datum/material_container/proc/can_use_amount(amt, id, list/mats)
+/datum/component/material_container/proc/can_use_amount(amt, id, list/mats)
if(amt && id)
var/datum/material/M = materials[id]
if(M && M.amount >= amt)
@@ -136,7 +187,7 @@
return FALSE
//For spawning mineral sheets; internal use only
-/datum/material_container/proc/retrieve(sheet_amt, datum/material/M, target = null)
+/datum/component/material_container/proc/retrieve(sheet_amt, datum/material/M, target = null)
if(!M.sheet_type)
return 0
if(sheet_amt > 0)
@@ -144,12 +195,12 @@
sheet_amt = round(M.amount / MINERAL_MATERIAL_AMOUNT)
var/count = 0
while(sheet_amt > MAX_STACK_SIZE)
- new M.sheet_type(get_turf(owner), MAX_STACK_SIZE)
+ new M.sheet_type(get_turf(parent), MAX_STACK_SIZE)
count += MAX_STACK_SIZE
use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id)
sheet_amt -= MAX_STACK_SIZE
if(round((sheet_amt * MINERAL_MATERIAL_AMOUNT) / MINERAL_MATERIAL_AMOUNT))
- var/obj/item/stack/sheet/s = new M.sheet_type(get_turf(owner), sheet_amt)
+ var/obj/item/stack/sheet/s = new M.sheet_type(get_turf(parent), sheet_amt)
if(target)
s.forceMove(target)
count += sheet_amt
@@ -157,15 +208,15 @@
return count
return 0
-/datum/material_container/proc/retrieve_sheets(sheet_amt, id, target = null)
+/datum/component/material_container/proc/retrieve_sheets(sheet_amt, id, target = null)
if(materials[id])
return retrieve(sheet_amt, materials[id], target)
return 0
-/datum/material_container/proc/retrieve_amount(amt, id, target)
+/datum/component/material_container/proc/retrieve_amount(amt, id, target)
return retrieve_sheets(amount2sheet(amt), id, target)
-/datum/material_container/proc/retrieve_all(target = null)
+/datum/component/material_container/proc/retrieve_all(target = null)
var/result = 0
var/datum/material/M
for(var/MAT in materials)
@@ -173,10 +224,10 @@
result += retrieve_sheets(amount2sheet(M.amount), MAT, target)
return result
-/datum/material_container/proc/has_space(amt = 0)
+/datum/component/material_container/proc/has_space(amt = 0)
return (total_amount + amt) <= max_amount
-/datum/material_container/proc/has_materials(list/mats, multiplier=1)
+/datum/component/material_container/proc/has_materials(list/mats, multiplier=1)
if(!mats || !mats.len)
return 0
@@ -187,23 +238,23 @@
return 0
return 1
-/datum/material_container/proc/amount2sheet(amt)
+/datum/component/material_container/proc/amount2sheet(amt)
if(amt >= MINERAL_MATERIAL_AMOUNT)
return round(amt / MINERAL_MATERIAL_AMOUNT)
return 0
-/datum/material_container/proc/sheet2amount(sheet_amt)
+/datum/component/material_container/proc/sheet2amount(sheet_amt)
if(sheet_amt > 0)
return sheet_amt * MINERAL_MATERIAL_AMOUNT
return 0
-/datum/material_container/proc/amount(id)
+/datum/component/material_container/proc/amount(id)
var/datum/material/M = materials[id]
return M ? M.amount : 0
//returns the amount of material relevant to this container;
//if this container does not support glass, any glass in 'I' will not be taken into account
-/datum/material_container/proc/get_item_material_amount(obj/item/I)
+/datum/component/material_container/proc/get_item_material_amount(obj/item/I)
if(!istype(I))
return 0
var/material_amount = 0
diff --git a/code/datums/components/squeek.dm b/code/datums/components/squeek.dm
new file mode 100644
index 0000000000..40fd0af598
--- /dev/null
+++ b/code/datums/components/squeek.dm
@@ -0,0 +1,61 @@
+/datum/component/squeak
+ var/static/list/default_squeak_sounds = list('sound/items/toysqueak1.ogg'=1, 'sound/items/toysqueak2.ogg'=1, 'sound/items/toysqueak3.ogg'=1)
+ var/list/override_squeak_sounds
+ var/squeak_chance = 100
+ var/volume = 30
+
+ // This is so shoes don't squeak every step
+ var/steps = 0
+ var/step_delay = 1
+
+ // This is to stop squeak spam from inhand usage
+ var/last_use = 0
+ var/use_delay = 20
+
+/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override)
+ if(custom_sounds)
+ override_squeak_sounds = custom_sounds
+ if(chance_override)
+ squeak_chance = chance_override
+ if(volume_override)
+ volume = volume_override
+ if(step_delay_override)
+ step_delay = step_delay_override
+ if(use_delay_override)
+ use_delay = use_delay_override
+
+ if(istype(parent, /atom))
+ RegisterSignal(COMSIG_ATOM_BLOB_ACT, .proc/play_squeak)
+ RegisterSignal(COMSIG_ATOM_HULK_ATTACK, .proc/play_squeak)
+ RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/play_squeak)
+ if(istype(parent, /atom/movable))
+ RegisterSignal(COMSIG_MOVABLE_CROSSED, .proc/play_squeak)
+ RegisterSignal(COMSIG_MOVABLE_COLLIDE, .proc/play_squeak)
+ RegisterSignal(COMSIG_MOVABLE_IMPACT, .proc/play_squeak)
+ if(istype(parent, /obj/item))
+ RegisterSignal(COMSIG_ITEM_ATTACK, .proc/play_squeak)
+ RegisterSignal(COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak)
+ RegisterSignal(COMSIG_ITEM_ATTACK_OBJ, .proc/play_squeak)
+ if(istype(parent, /obj/item/clothing/shoes))
+ RegisterSignal(COMSIG_SHOES_STEP_ACTION, .proc/step_squeak)
+ else
+ RegisterSignal(COMSIG_ATOM_ENTERED, .proc/play_squeak)
+
+/datum/component/squeak/proc/play_squeak()
+ if(prob(squeak_chance))
+ if(!override_squeak_sounds)
+ playsound(parent, pickweight(default_squeak_sounds), volume, 1, -1)
+ else
+ playsound(parent, pickweight(override_squeak_sounds), volume, 1, -1)
+
+/datum/component/squeak/proc/step_squeak()
+ if(steps > step_delay)
+ play_squeak()
+ steps = 0
+ else
+ steps++
+
+/datum/component/squeak/proc/use_squeak()
+ if(last_use + use_delay < world.time)
+ last_use = world.time
+ play_squeak()
\ No newline at end of file
diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm
index 005c02c355..b20381ca85 100644
--- a/code/datums/datacore.dm
+++ b/code/datums/datacore.dm
@@ -1,287 +1,287 @@
-
-/datum/datacore
- var/medical[] = list()
- var/medicalPrintCount = 0
- var/general[] = list()
- var/security[] = list()
- var/securityPrintCount = 0
- var/securityCrimeCounter = 0
- //This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character().
- var/locked[] = list()
-
-/datum/data
- var/name = "data"
-
-/datum/data/record
- name = "record"
- var/list/fields = list()
-
-/datum/data/record/Destroy()
- if(src in GLOB.data_core.medical)
- GLOB.data_core.medical -= src
- if(src in GLOB.data_core.security)
- GLOB.data_core.security -= src
- if(src in GLOB.data_core.general)
- GLOB.data_core.general -= src
- if(src in GLOB.data_core.locked)
- GLOB.data_core.locked -= src
- . = ..()
-
-/datum/data/crime
- name = "crime"
- var/crimeName = ""
- var/crimeDetails = ""
- var/author = ""
- var/time = ""
- var/dataId = 0
-
-/datum/datacore/proc/createCrimeEntry(cname = "", cdetails = "", author = "", time = "")
- var/datum/data/crime/c = new /datum/data/crime
- c.crimeName = cname
- c.crimeDetails = cdetails
- c.author = author
- c.time = time
- c.dataId = ++securityCrimeCounter
- return c
-
-/datum/datacore/proc/addMinorCrime(id = "", datum/data/crime/crime)
- for(var/datum/data/record/R in security)
- if(R.fields["id"] == id)
- var/list/crimes = R.fields["mi_crim"]
- crimes |= crime
- return
-
-/datum/datacore/proc/removeMinorCrime(id, cDataId)
- for(var/datum/data/record/R in security)
- if(R.fields["id"] == id)
- var/list/crimes = R.fields["mi_crim"]
- for(var/datum/data/crime/crime in crimes)
- if(crime.dataId == text2num(cDataId))
- crimes -= crime
- return
-
-/datum/datacore/proc/removeMajorCrime(id, cDataId)
- for(var/datum/data/record/R in security)
- if(R.fields["id"] == id)
- var/list/crimes = R.fields["ma_crim"]
- for(var/datum/data/crime/crime in crimes)
- if(crime.dataId == text2num(cDataId))
- crimes -= crime
- return
-
-/datum/datacore/proc/addMajorCrime(id = "", datum/data/crime/crime)
- for(var/datum/data/record/R in security)
- if(R.fields["id"] == id)
- var/list/crimes = R.fields["ma_crim"]
- crimes |= crime
- return
-
-/datum/datacore/proc/manifest()
- for(var/mob/dead/new_player/N in GLOB.player_list)
- if(ishuman(N.new_character))
- manifest_inject(N.new_character, N.client)
- CHECK_TICK
-
-/datum/datacore/proc/manifest_modify(name, assignment)
- var/datum/data/record/foundrecord = find_record("name", name, GLOB.data_core.general)
- if(foundrecord)
- foundrecord.fields["rank"] = assignment
-
-/datum/datacore/proc/get_manifest(monochrome, OOC)
- var/list/heads = list()
- var/list/sec = list()
- var/list/eng = list()
- var/list/med = list()
- var/list/sci = list()
- var/list/sup = list()
- var/list/civ = list()
- var/list/bot = list()
- var/list/misc = list()
- var/dat = {"
-
-
- | Name | Rank |
- "}
- var/even = 0
- // sort mobs
- for(var/datum/data/record/t in GLOB.data_core.general)
- var/name = t.fields["name"]
- var/rank = t.fields["rank"]
- var/department = 0
- if(rank in GLOB.command_positions)
- heads[name] = rank
- department = 1
- if(rank in GLOB.security_positions)
- sec[name] = rank
- department = 1
- if(rank in GLOB.engineering_positions)
- eng[name] = rank
- department = 1
- if(rank in GLOB.medical_positions)
- med[name] = rank
- department = 1
- if(rank in GLOB.science_positions)
- sci[name] = rank
- department = 1
- if(rank in GLOB.supply_positions)
- sup[name] = rank
- department = 1
- if(rank in GLOB.civilian_positions)
- civ[name] = rank
- department = 1
- if(rank in GLOB.nonhuman_positions)
- bot[name] = rank
- department = 1
- if(!department && !(name in heads))
- misc[name] = rank
- if(heads.len > 0)
- dat += "| Heads |
"
- for(var/name in heads)
- dat += "| [name] | [heads[name]] |
"
- even = !even
- if(sec.len > 0)
- dat += "| Security |
"
- for(var/name in sec)
- dat += "| [name] | [sec[name]] |
"
- even = !even
- if(eng.len > 0)
- dat += "| Engineering |
"
- for(var/name in eng)
- dat += "| [name] | [eng[name]] |
"
- even = !even
- if(med.len > 0)
- dat += "| Medical |
"
- for(var/name in med)
- dat += "| [name] | [med[name]] |
"
- even = !even
- if(sci.len > 0)
- dat += "| Science |
"
- for(var/name in sci)
- dat += "| [name] | [sci[name]] |
"
- even = !even
- if(sup.len > 0)
- dat += "| Supply |
"
- for(var/name in sup)
- dat += "| [name] | [sup[name]] |
"
- even = !even
- if(civ.len > 0)
- dat += "| Civilian |
"
- for(var/name in civ)
- dat += "| [name] | [civ[name]] |
"
- even = !even
- // in case somebody is insane and added them to the manifest, why not
- if(bot.len > 0)
- dat += "| Silicon |
"
- for(var/name in bot)
- dat += "| [name] | [bot[name]] |
"
- even = !even
- // misc guys
- if(misc.len > 0)
- dat += "| Miscellaneous |
"
- for(var/name in misc)
- dat += "| [name] | [misc[name]] |
"
- even = !even
-
- dat += "
"
- dat = replacetext(dat, "\n", "")
- dat = replacetext(dat, "\t", "")
- return dat
-
-
-/datum/datacore/proc/manifest_inject(mob/living/carbon/human/H, client/C)
- if(H.mind && (H.mind.assigned_role != H.mind.special_role))
- var/assignment
- if(H.mind.assigned_role)
- assignment = H.mind.assigned_role
- else if(H.job)
- assignment = H.job
- else
- assignment = "Unassigned"
-
- var/static/record_id_num = 1001
- var/id = num2hex(record_id_num++,6)
- if(!C)
- C = H.client
- var/image = get_id_photo(H, C)
- var/obj/item/photo/photo_front = new()
- var/obj/item/photo/photo_side = new()
- photo_front.photocreate(null, icon(image, dir = SOUTH))
- photo_side.photocreate(null, icon(image, dir = WEST))
-
- //These records should ~really~ be merged or something
- //General Record
- var/datum/data/record/G = new()
- G.fields["id"] = id
- G.fields["name"] = H.real_name
- G.fields["rank"] = assignment
- G.fields["age"] = H.age
- if(config.mutant_races)
- G.fields["species"] = H.dna.species.name
- G.fields["fingerprint"] = md5(H.dna.uni_identity)
- G.fields["p_stat"] = "Active"
- G.fields["m_stat"] = "Stable"
- G.fields["sex"] = H.gender
- G.fields["photo_front"] = photo_front
- G.fields["photo_side"] = photo_side
- general += G
-
- //Medical Record
- var/datum/data/record/M = new()
- M.fields["id"] = id
- M.fields["name"] = H.real_name
- M.fields["blood_type"] = H.dna.blood_type
- M.fields["b_dna"] = H.dna.unique_enzymes
- M.fields["mi_dis"] = "None"
- M.fields["mi_dis_d"] = "No minor disabilities have been declared."
- M.fields["ma_dis"] = "None"
- M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
- M.fields["alg"] = "None"
- M.fields["alg_d"] = "No allergies have been detected in this patient."
- M.fields["cdi"] = "None"
- M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
- M.fields["notes"] = "No notes."
- medical += M
-
- //Security Record
- var/datum/data/record/S = new()
- S.fields["id"] = id
- S.fields["name"] = H.real_name
- S.fields["criminal"] = "None"
- S.fields["mi_crim"] = list()
- S.fields["ma_crim"] = list()
- S.fields["notes"] = "No notes."
- security += S
-
- //Locked Record
- var/datum/data/record/L = new()
- L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]") //surely this should just be id, like the others?
- L.fields["name"] = H.real_name
- L.fields["rank"] = H.mind.assigned_role
- L.fields["age"] = H.age
- L.fields["sex"] = H.gender
- L.fields["blood_type"] = H.dna.blood_type
- L.fields["b_dna"] = H.dna.unique_enzymes
- L.fields["enzymes"] = H.dna.struc_enzymes
- L.fields["identity"] = H.dna.uni_identity
- L.fields["species"] = H.dna.species.type
- L.fields["features"] = H.dna.features
- L.fields["image"] = image
- L.fields["reference"] = H
- locked += L
- return
-
-/datum/datacore/proc/get_id_photo(mob/living/carbon/human/H, client/C)
- var/datum/job/J = SSjob.GetJob(H.mind.assigned_role)
- var/datum/preferences/P
- if(!C)
- C = H.client
- if(C)
- P = C.prefs
- return get_flat_human_icon(null, J, P)
+/datum/datacore
+ var/medical[] = list()
+ var/medicalPrintCount = 0
+ var/general[] = list()
+ var/security[] = list()
+ var/securityPrintCount = 0
+ var/securityCrimeCounter = 0
+ //This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character().
+ var/locked[] = list()
+
+/datum/data
+ var/name = "data"
+
+/datum/data/record
+ name = "record"
+ var/list/fields = list()
+
+/datum/data/record/Destroy()
+ if(src in GLOB.data_core.medical)
+ GLOB.data_core.medical -= src
+ if(src in GLOB.data_core.security)
+ GLOB.data_core.security -= src
+ if(src in GLOB.data_core.general)
+ GLOB.data_core.general -= src
+ if(src in GLOB.data_core.locked)
+ GLOB.data_core.locked -= src
+ . = ..()
+
+/datum/data/crime
+ name = "crime"
+ var/crimeName = ""
+ var/crimeDetails = ""
+ var/author = ""
+ var/time = ""
+ var/dataId = 0
+
+/datum/datacore/proc/createCrimeEntry(cname = "", cdetails = "", author = "", time = "")
+ var/datum/data/crime/c = new /datum/data/crime
+ c.crimeName = cname
+ c.crimeDetails = cdetails
+ c.author = author
+ c.time = time
+ c.dataId = ++securityCrimeCounter
+ return c
+
+/datum/datacore/proc/addMinorCrime(id = "", datum/data/crime/crime)
+ for(var/datum/data/record/R in security)
+ if(R.fields["id"] == id)
+ var/list/crimes = R.fields["mi_crim"]
+ crimes |= crime
+ return
+
+/datum/datacore/proc/removeMinorCrime(id, cDataId)
+ for(var/datum/data/record/R in security)
+ if(R.fields["id"] == id)
+ var/list/crimes = R.fields["mi_crim"]
+ for(var/datum/data/crime/crime in crimes)
+ if(crime.dataId == text2num(cDataId))
+ crimes -= crime
+ return
+
+/datum/datacore/proc/removeMajorCrime(id, cDataId)
+ for(var/datum/data/record/R in security)
+ if(R.fields["id"] == id)
+ var/list/crimes = R.fields["ma_crim"]
+ for(var/datum/data/crime/crime in crimes)
+ if(crime.dataId == text2num(cDataId))
+ crimes -= crime
+ return
+
+/datum/datacore/proc/addMajorCrime(id = "", datum/data/crime/crime)
+ for(var/datum/data/record/R in security)
+ if(R.fields["id"] == id)
+ var/list/crimes = R.fields["ma_crim"]
+ crimes |= crime
+ return
+
+/datum/datacore/proc/manifest()
+ for(var/mob/dead/new_player/N in GLOB.player_list)
+ if(ishuman(N.new_character))
+ manifest_inject(N.new_character, N.client)
+ CHECK_TICK
+
+/datum/datacore/proc/manifest_modify(name, assignment)
+ var/datum/data/record/foundrecord = find_record("name", name, GLOB.data_core.general)
+ if(foundrecord)
+ foundrecord.fields["rank"] = assignment
+
+/datum/datacore/proc/get_manifest(monochrome, OOC)
+ var/list/heads = list()
+ var/list/sec = list()
+ var/list/eng = list()
+ var/list/med = list()
+ var/list/sci = list()
+ var/list/sup = list()
+ var/list/civ = list()
+ var/list/bot = list()
+ var/list/misc = list()
+ var/dat = {"
+
+
+ | Name | Rank |
+ "}
+ var/even = 0
+ // sort mobs
+ for(var/datum/data/record/t in GLOB.data_core.general)
+ var/name = t.fields["name"]
+ var/rank = t.fields["rank"]
+ var/department = 0
+ if(rank in GLOB.command_positions)
+ heads[name] = rank
+ department = 1
+ if(rank in GLOB.security_positions)
+ sec[name] = rank
+ department = 1
+ if(rank in GLOB.engineering_positions)
+ eng[name] = rank
+ department = 1
+ if(rank in GLOB.medical_positions)
+ med[name] = rank
+ department = 1
+ if(rank in GLOB.science_positions)
+ sci[name] = rank
+ department = 1
+ if(rank in GLOB.supply_positions)
+ sup[name] = rank
+ department = 1
+ if(rank in GLOB.civilian_positions)
+ civ[name] = rank
+ department = 1
+ if(rank in GLOB.nonhuman_positions)
+ bot[name] = rank
+ department = 1
+ if(!department && !(name in heads))
+ misc[name] = rank
+ if(heads.len > 0)
+ dat += "| Heads |
"
+ for(var/name in heads)
+ dat += "| [name] | [heads[name]] |
"
+ even = !even
+ if(sec.len > 0)
+ dat += "| Security |
"
+ for(var/name in sec)
+ dat += "| [name] | [sec[name]] |
"
+ even = !even
+ if(eng.len > 0)
+ dat += "| Engineering |
"
+ for(var/name in eng)
+ dat += "| [name] | [eng[name]] |
"
+ even = !even
+ if(med.len > 0)
+ dat += "| Medical |
"
+ for(var/name in med)
+ dat += "| [name] | [med[name]] |
"
+ even = !even
+ if(sci.len > 0)
+ dat += "| Science |
"
+ for(var/name in sci)
+ dat += "| [name] | [sci[name]] |
"
+ even = !even
+ if(sup.len > 0)
+ dat += "| Supply |
"
+ for(var/name in sup)
+ dat += "| [name] | [sup[name]] |
"
+ even = !even
+ if(civ.len > 0)
+ dat += "| Civilian |
"
+ for(var/name in civ)
+ dat += "| [name] | [civ[name]] |
"
+ even = !even
+ // in case somebody is insane and added them to the manifest, why not
+ if(bot.len > 0)
+ dat += "| Silicon |
"
+ for(var/name in bot)
+ dat += "| [name] | [bot[name]] |
"
+ even = !even
+ // misc guys
+ if(misc.len > 0)
+ dat += "| Miscellaneous |
"
+ for(var/name in misc)
+ dat += "| [name] | [misc[name]] |
"
+ even = !even
+
+ dat += "
"
+ dat = replacetext(dat, "\n", "")
+ dat = replacetext(dat, "\t", "")
+ return dat
+
+
+/datum/datacore/proc/manifest_inject(mob/living/carbon/human/H, client/C)
+ set waitfor = FALSE
+ if(H.mind && (H.mind.assigned_role != H.mind.special_role))
+ var/assignment
+ if(H.mind.assigned_role)
+ assignment = H.mind.assigned_role
+ else if(H.job)
+ assignment = H.job
+ else
+ assignment = "Unassigned"
+
+ var/static/record_id_num = 1001
+ var/id = num2hex(record_id_num++,6)
+ if(!C)
+ C = H.client
+ var/image = get_id_photo(H, C)
+ var/obj/item/photo/photo_front = new()
+ var/obj/item/photo/photo_side = new()
+ photo_front.photocreate(null, icon(image, dir = SOUTH))
+ photo_side.photocreate(null, icon(image, dir = WEST))
+
+ //These records should ~really~ be merged or something
+ //General Record
+ var/datum/data/record/G = new()
+ G.fields["id"] = id
+ G.fields["name"] = H.real_name
+ G.fields["rank"] = assignment
+ G.fields["age"] = H.age
+ if(config.mutant_races)
+ G.fields["species"] = H.dna.species.name
+ G.fields["fingerprint"] = md5(H.dna.uni_identity)
+ G.fields["p_stat"] = "Active"
+ G.fields["m_stat"] = "Stable"
+ G.fields["sex"] = H.gender
+ G.fields["photo_front"] = photo_front
+ G.fields["photo_side"] = photo_side
+ general += G
+
+ //Medical Record
+ var/datum/data/record/M = new()
+ M.fields["id"] = id
+ M.fields["name"] = H.real_name
+ M.fields["blood_type"] = H.dna.blood_type
+ M.fields["b_dna"] = H.dna.unique_enzymes
+ M.fields["mi_dis"] = "None"
+ M.fields["mi_dis_d"] = "No minor disabilities have been declared."
+ M.fields["ma_dis"] = "None"
+ M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
+ M.fields["alg"] = "None"
+ M.fields["alg_d"] = "No allergies have been detected in this patient."
+ M.fields["cdi"] = "None"
+ M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
+ M.fields["notes"] = "No notes."
+ medical += M
+
+ //Security Record
+ var/datum/data/record/S = new()
+ S.fields["id"] = id
+ S.fields["name"] = H.real_name
+ S.fields["criminal"] = "None"
+ S.fields["mi_crim"] = list()
+ S.fields["ma_crim"] = list()
+ S.fields["notes"] = "No notes."
+ security += S
+
+ //Locked Record
+ var/datum/data/record/L = new()
+ L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]") //surely this should just be id, like the others?
+ L.fields["name"] = H.real_name
+ L.fields["rank"] = H.mind.assigned_role
+ L.fields["age"] = H.age
+ L.fields["sex"] = H.gender
+ L.fields["blood_type"] = H.dna.blood_type
+ L.fields["b_dna"] = H.dna.unique_enzymes
+ L.fields["enzymes"] = H.dna.struc_enzymes
+ L.fields["identity"] = H.dna.uni_identity
+ L.fields["species"] = H.dna.species.type
+ L.fields["features"] = H.dna.features
+ L.fields["image"] = image
+ L.fields["mindref"] = H.mind
+ locked += L
+ return
+
+/datum/datacore/proc/get_id_photo(mob/living/carbon/human/H, client/C)
+ var/datum/job/J = SSjob.GetJob(H.mind.assigned_role)
+ var/datum/preferences/P
+ if(!C)
+ C = H.client
+ if(C)
+ P = C.prefs
+ return get_flat_human_icon(null, J, P, DUMMY_HUMAN_SLOT_MANIFEST)
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index d55a32609a..b653e5c6ae 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -83,10 +83,10 @@
if(isliving(A))
atomsnowflake += "[D]"
if(A.dir)
- atomsnowflake += "
<< [dir2text(A.dir)] >>"
+ atomsnowflake += "
<< [dir2text(A.dir)] >>"
var/mob/living/M = A
atomsnowflake += {"
-
[M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]
+
[M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]
BRUTE:[M.getBruteLoss()]
FIRE:[M.getFireLoss()]
diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm
index 9be242a391..26f42fa059 100644
--- a/code/datums/diseases/advance/advance.dm
+++ b/code/datums/diseases/advance/advance.dm
@@ -245,7 +245,6 @@
/datum/disease/advance/proc/GenerateCure()
if(properties && properties.len)
var/res = Clamp(properties["resistance"] - (symptoms.len / 2), 1, advance_cures.len)
- //to_chat(world, "Res = [res]")
cures = list(advance_cures[res])
// Get the cure name from the cure_id
@@ -333,9 +332,6 @@
// Mix a list of advance diseases and return the mixed result.
/proc/Advance_Mix(var/list/D_list)
-
- //to_chat(world, "Mixing!!!!")
-
var/list/diseases = list()
for(var/datum/disease/advance/A in D_list)
@@ -359,7 +355,6 @@
D2.Mix(D1)
// Should be only 1 entry left, but if not let's only return a single entry
- //to_chat(world, "END MIXING!!!!!")
var/datum/disease/advance/to_return = pick(diseases)
to_return.Refresh(1)
return to_return
diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm
index 2b77885359..c96a22d472 100644
--- a/code/datums/diseases/dna_spread.dm
+++ b/code/datums/diseases/dna_spread.dm
@@ -1,74 +1,74 @@
-/datum/disease/dnaspread
- name = "Space Retrovirus"
- max_stages = 4
- spread_text = "On contact"
- spread_flags = CONTACT_GENERAL
- cure_text = "Mutadone"
- cures = list("mutadone")
- disease_flags = CAN_CARRY|CAN_RESIST|CURABLE
- agent = "S4E1 retrovirus"
- viable_mobtypes = list(/mob/living/carbon/human)
- var/datum/dna/original_dna = null
- var/transformed = 0
- desc = "This disease transplants the genetic code of the initial vector into new hosts."
- severity = MEDIUM
-
-
-/datum/disease/dnaspread/stage_act()
- ..()
- if(!affected_mob.dna)
- cure()
- if(NOTRANSSTING in affected_mob.dna.species.species_traits) //Only species that can be spread by transformation sting can be spread by the retrovirus
- cure()
-
- if(!strain_data["dna"])
- //Absorbs the target DNA.
- strain_data["dna"] = new affected_mob.dna.type
- affected_mob.dna.copy_dna(strain_data["dna"])
+/datum/disease/dnaspread
+ name = "Space Retrovirus"
+ max_stages = 4
+ spread_text = "On contact"
+ spread_flags = CONTACT_GENERAL
+ cure_text = "Mutadone"
+ cures = list("mutadone")
+ disease_flags = CAN_CARRY|CAN_RESIST|CURABLE
+ agent = "S4E1 retrovirus"
+ viable_mobtypes = list(/mob/living/carbon/human)
+ var/datum/dna/original_dna = null
+ var/transformed = 0
+ desc = "This disease transplants the genetic code of the initial vector into new hosts."
+ severity = MEDIUM
+
+
+/datum/disease/dnaspread/stage_act()
+ ..()
+ if(!affected_mob.dna)
+ cure()
+ if((NOTRANSSTING in affected_mob.dna.species.species_traits) || (NO_DNA_COPY in affected_mob.dna.species.species_traits)) //Only species that can be spread by transformation sting can be spread by the retrovirus
+ cure()
+
+ if(!strain_data["dna"])
+ //Absorbs the target DNA.
+ strain_data["dna"] = new affected_mob.dna.type
+ affected_mob.dna.copy_dna(strain_data["dna"])
carrier = TRUE
stage = 4
- return
-
- switch(stage)
- if(2 || 3) //Pretend to be a cold and give time to spread.
- if(prob(8))
- affected_mob.emote("sneeze")
- if(prob(8))
- affected_mob.emote("cough")
- if(prob(1))
- to_chat(affected_mob, "Your muscles ache.")
- if(prob(20))
- affected_mob.take_bodypart_damage(1)
- if(prob(1))
- to_chat(affected_mob, "Your stomach hurts.")
- if(prob(20))
- affected_mob.adjustToxLoss(2)
- affected_mob.updatehealth()
- if(4)
- if(!transformed && !carrier)
- //Save original dna for when the disease is cured.
- original_dna = new affected_mob.dna.type
- affected_mob.dna.copy_dna(original_dna)
-
- to_chat(affected_mob, "You don't feel like yourself..")
- var/datum/dna/transform_dna = strain_data["dna"]
-
- transform_dna.transfer_identity(affected_mob, transfer_SE = 1)
- affected_mob.real_name = affected_mob.dna.real_name
- affected_mob.updateappearance(mutcolor_update=1)
- affected_mob.domutcheck()
-
- transformed = 1
- carrier = 1 //Just chill out at stage 4
-
- return
-
-/datum/disease/dnaspread/Destroy()
- if (original_dna && transformed && affected_mob)
- original_dna.transfer_identity(affected_mob, transfer_SE = 1)
- affected_mob.real_name = affected_mob.dna.real_name
- affected_mob.updateappearance(mutcolor_update=1)
- affected_mob.domutcheck()
-
- to_chat(affected_mob, "You feel more like yourself.")
- return ..()
\ No newline at end of file
+ return
+
+ switch(stage)
+ if(2 || 3) //Pretend to be a cold and give time to spread.
+ if(prob(8))
+ affected_mob.emote("sneeze")
+ if(prob(8))
+ affected_mob.emote("cough")
+ if(prob(1))
+ to_chat(affected_mob, "Your muscles ache.")
+ if(prob(20))
+ affected_mob.take_bodypart_damage(1)
+ if(prob(1))
+ to_chat(affected_mob, "Your stomach hurts.")
+ if(prob(20))
+ affected_mob.adjustToxLoss(2)
+ affected_mob.updatehealth()
+ if(4)
+ if(!transformed && !carrier)
+ //Save original dna for when the disease is cured.
+ original_dna = new affected_mob.dna.type
+ affected_mob.dna.copy_dna(original_dna)
+
+ to_chat(affected_mob, "You don't feel like yourself..")
+ var/datum/dna/transform_dna = strain_data["dna"]
+
+ transform_dna.transfer_identity(affected_mob, transfer_SE = 1)
+ affected_mob.real_name = affected_mob.dna.real_name
+ affected_mob.updateappearance(mutcolor_update=1)
+ affected_mob.domutcheck()
+
+ transformed = 1
+ carrier = 1 //Just chill out at stage 4
+
+ return
+
+/datum/disease/dnaspread/Destroy()
+ if (original_dna && transformed && affected_mob)
+ original_dna.transfer_identity(affected_mob, transfer_SE = 1)
+ affected_mob.real_name = affected_mob.dna.real_name
+ affected_mob.updateappearance(mutcolor_update=1)
+ affected_mob.domutcheck()
+
+ to_chat(affected_mob, "You feel more like yourself.")
+ return ..()
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 4bacf2d9e8..27a9338191 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -235,7 +235,9 @@
flavor_text = dna.features["flavor_text"] //Update the flavor_text to use new dna text
if(mrace)
- set_species(mrace, icon_update=0)
+ var/datum/species/newrace = new mrace.type
+ newrace.copy_properties_from(mrace)
+ set_species(newrace, icon_update=0)
if(newreal_name)
real_name = newreal_name
@@ -396,4 +398,4 @@
value = values
return value
-/////////////////////////// DNA HELPER-PROCS
+/////////////////////////// DNA HELPER-PROCS
\ No newline at end of file
diff --git a/code/datums/hud.dm b/code/datums/hud.dm
index 0d4f7810c6..60a53967ae 100644
--- a/code/datums/hud.dm
+++ b/code/datums/hud.dm
@@ -21,6 +21,7 @@ GLOBAL_LIST_INIT(huds, list(
ANTAG_HUD_SOULLESS = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_CLOCKWORK = new/datum/atom_hud/antag(),
ANTAG_HUD_BORER = new/datum/atom_hud/antag(),
+ ANTAG_HUD_BROTHER = new/datum/atom_hud/antag/hidden(),
))
/datum/atom_hud
diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm
index 6ce082bd2a..84f0f00e45 100644
--- a/code/datums/martial/krav_maga.dm
+++ b/code/datums/martial/krav_maga.dm
@@ -11,7 +11,7 @@
/datum/action/neck_chop/Trigger()
if(owner.incapacitated())
- to_chat(owner, "You can't use Krav Maga while you're incapacitated.")
+ to_chat(owner, "You can't use [name] while you're incapacitated.")
return
var/mob/living/carbon/human/H = owner
if (H.mind.martial_art.streak == "neck_chop")
@@ -28,7 +28,7 @@
/datum/action/leg_sweep/Trigger()
if(owner.incapacitated())
- to_chat(owner, "You can't use Krav Maga while you're incapacitated.")
+ to_chat(owner, "You can't use [name] while you're incapacitated.")
return
var/mob/living/carbon/human/H = owner
if (H.mind.martial_art.streak == "leg_sweep")
@@ -45,7 +45,7 @@
/datum/action/lung_punch/Trigger()
if(owner.incapacitated())
- to_chat(owner, "You can't use Krav Maga while you're incapacitated.")
+ to_chat(owner, "You can't use [name] while you're incapacitated.")
return
var/mob/living/carbon/human/H = owner
if (H.mind.martial_art.streak == "quick_choke")
@@ -57,14 +57,14 @@
/datum/martial_art/krav_maga/teach(mob/living/carbon/human/H,make_temporary=0)
if(..())
- to_chat(H, "You know the arts of Krav Maga!")
+ to_chat(H, "You know the arts of [name]!")
to_chat(H, "Place your cursor over a move at the top of the screen to see what it does.")
neckchop.Grant(H)
legsweep.Grant(H)
lungpunch.Grant(H)
/datum/martial_art/krav_maga/on_remove(mob/living/carbon/human/H)
- to_chat(H, "You suddenly forget the arts of Krav Maga...")
+ to_chat(H, "You suddenly forget the arts of [name]...")
neckchop.Remove(H)
legsweep.Remove(H)
lungpunch.Remove(H)
@@ -140,7 +140,7 @@
playsound(get_turf(D), 'sound/effects/hit_punch.ogg', 50, 1, -1)
D.visible_message("[A] [picked_hit_type] [D]!", \
"[A] [picked_hit_type] you!")
- add_logs(A, D, "[picked_hit_type] with Krav Maga")
+ add_logs(A, D, "[picked_hit_type] with [name]")
return 1
/datum/martial_art/krav_maga/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 5ad9f4aa6d..147f442470 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -121,8 +121,9 @@
new_character.key = key //now transfer the key to link the client to our new body
if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs.
var/mob/living/L = new_character
- L.canbearoused = L.client.prefs.arousable //Technically this should make taking over a character mean the body gain the new minds setting...
- L.update_arousal_hud() //Removes the old icon
+ if(L.client && L.client.prefs)
+ L.canbearoused = L.client.prefs.arousable //Technically this should make taking over a character mean the body gain the new minds setting...
+ L.update_arousal_hud() //Removes the old icon
/datum/mind/proc/store_memory(new_text)
memory += "[new_text]
"
@@ -131,10 +132,10 @@
memory = null
// Datum antag mind procs
-/datum/mind/proc/add_antag_datum(datum_type)
+/datum/mind/proc/add_antag_datum(datum_type, team)
if(!datum_type)
return
- var/datum/antagonist/A = new datum_type(src)
+ var/datum/antagonist/A = new datum_type(src, team)
if(!A.can_be_owned(src))
qdel(A)
return
@@ -194,6 +195,11 @@
src.remove_antag_datum(ANTAG_DATUM_TRAITOR)
SSticker.mode.update_traitor_icons_removed(src)
+/datum/mind/proc/remove_brother()
+ if(src in SSticker.mode.brothers)
+ src.remove_antag_datum(ANTAG_DATUM_BROTHER)
+ SSticker.mode.update_brother_icons_removed(src)
+
/datum/mind/proc/remove_nukeop()
if(src in SSticker.mode.syndicates)
SSticker.mode.syndicates -= src
@@ -348,6 +354,12 @@
var/obj_count = 1
for(var/datum/objective/objective in objectives)
output += "
Objective #[obj_count++]: [objective.explanation_text]"
+ var/list/datum/mind/other_owners = objective.get_owners() - src
+ if(other_owners.len)
+ output += ""
+ for(var/datum/mind/M in other_owners)
+ output += "- Conspirator: [M.name]
"
+ output += "
"
if(window)
recipient << browse(output,"window=memory")
@@ -384,7 +396,7 @@
/** TRAITOR ***/
text = "traitor"
- if (SSticker.mode.config_tag=="traitor" || SSticker.mode.config_tag=="traitorchan")
+ if (SSticker.mode.config_tag=="traitor" || SSticker.mode.config_tag=="traitorchan" || SSticker.mode.config_tag=="traitorbro")
text = uppertext(text)
text = "[text]: "
if (src in SSticker.mode.traitors)
@@ -404,6 +416,21 @@
if(ishuman(current) || ismonkey(current))
+ /** BROTHER **/
+ text = "brother"
+ if(SSticker.mode.config_tag == "traitorbro")
+ text = uppertext(text)
+ text = "[text]: "
+ if(src in SSticker.mode.brothers)
+ text += "Brother | no"
+
+ if(current && current.client && (ROLE_BROTHER in current.client.prefs.be_special))
+ text += " | Enabled in Prefs"
+ else
+ text += " | Disabled in Prefs"
+
+ sections["brother"] = text
+
/** CHANGELING ***/
text = "changeling"
if (SSticker.mode.config_tag=="changeling" || SSticker.mode.config_tag=="traitorchan")
@@ -563,8 +590,6 @@
if(src in SSticker.mode.abductors)
text += "Abductor | human"
text += " | undress | equip"
- else
- text += "abductor | human"
if(current && current.client && (ROLE_ABDUCTOR in current.client.prefs.be_special))
text += " | Enabled in Prefs"
@@ -1031,7 +1056,7 @@
log_admin("[key_name(usr)] has wizard'ed [current].")
SSticker.mode.update_wiz_icons_added(src)
if("lair")
- current.loc = pick(GLOB.wizardstart)
+ current.forceMove(pick(GLOB.wizardstart))
if("dressup")
SSticker.mode.equip_wizard(current)
if("name")
@@ -1093,7 +1118,7 @@
message_admins("[key_name_admin(usr)] has nuke op'ed [current].")
log_admin("[key_name(usr)] has nuke op'ed [current].")
if("lair")
- current.loc = get_turf(locate("landmark*Syndicate-Spawn"))
+ current.forceMove(get_turf(locate("landmark*Syndicate-Spawn")))
if("dressup")
var/mob/living/carbon/human/H = current
qdel(H.belt)
@@ -1217,13 +1242,6 @@
if("clear")
to_chat(usr, "Not implemented yet. Sorry!")
//SSticker.mode.update_abductor_icons_removed(src)
- if("abductor")
- if(!ishuman(current))
- to_chat(usr, "This only works on humans!")
- return
- make_Abductor()
- log_admin("[key_name(usr)] turned [current] into abductor.")
- SSticker.mode.update_abductor_icons_added(src)
if("equip")
if(!ishuman(current))
to_chat(usr, "This only works on humans!")
@@ -1252,7 +1270,6 @@
src = null
M = H.monkeyize()
src = M.mind
- //to_chat(world, "DEBUG: \"healthy\": M=[M], M.mind=[M.mind], src=[src]!")
else if (istype(M) && length(M.viruses))
for(var/thing in M.viruses)
var/datum/disease/D = thing
@@ -1284,6 +1301,13 @@
if(H)
src = H.mind
+ else if (href_list["brother"])
+ switch(href_list["brother"])
+ if("clear")
+ remove_brother()
+ log_admin("[key_name(usr)] has de-brother'ed [current].")
+ SSticker.mode.update_brother_icons_removed(src)
+
else if (href_list["silicon"])
switch(href_list["silicon"])
if("unemag")
@@ -1368,7 +1392,7 @@
current.faction |= "syndicate"
if(spawnloc)
- current.loc = spawnloc
+ current.forceMove(spawnloc)
if(ishuman(current))
var/mob/living/carbon/human/H = current
@@ -1418,7 +1442,7 @@
SSjob.SendToLateJoin(current)
to_chat(current, "HOT INSERTION, GO GO GO")
else
- current.loc = pick(GLOB.wizardstart)
+ current.forceMove(pick(GLOB.wizardstart))
SSticker.mode.equip_wizard(current)
SSticker.mode.name_wizard(current)
@@ -1463,52 +1487,7 @@
take_uplink()
var/fail = 0
fail |= !SSticker.mode.equip_revolutionary(current)
-
-/datum/mind/proc/make_Abductor()
- var/role = alert("Abductor Role ?","Role","Agent","Scientist")
- var/team = input("Abductor Team ?","Team ?") in list(1,2,3,4)
- var/teleport = alert("Teleport to ship ?","Teleport","Yes","No")
-
- if(!role || !team || !teleport)
- return
-
- if(!ishuman(current))
- return
-
- SSticker.mode.abductors |= src
-
- var/datum/objective/experiment/O = new
- O.owner = src
- objectives += O
-
- var/mob/living/carbon/human/H = current
-
- H.set_species(/datum/species/abductor)
- var/datum/species/abductor/S = H.dna.species
-
- if(role == "Scientist")
- S.scientist = TRUE
- S.team = team
-
- var/list/obj/effect/landmark/abductor/agent_landmarks = new
- var/list/obj/effect/landmark/abductor/scientist_landmarks = new
- agent_landmarks.len = 4
- scientist_landmarks.len = 4
- for(var/obj/effect/landmark/abductor/A in GLOB.landmarks_list)
- if(istype(A, /obj/effect/landmark/abductor/agent))
- agent_landmarks[text2num(A.team)] = A
- else if(istype(A, /obj/effect/landmark/abductor/scientist))
- scientist_landmarks[text2num(A.team)] = A
-
- var/obj/effect/landmark/L
- if(teleport=="Yes")
- switch(role)
- if("Agent")
- L = agent_landmarks[team]
- if("Scientist")
- L = scientist_landmarks[team]
- H.forceMove(L.loc)
-
+
/datum/mind/proc/AddSpell(obj/effect/proc_holder/spell/S)
spell_list += S
S.action.Grant(current)
diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm
index e2296dd39a..4e8ae4e73a 100644
--- a/code/datums/mutations.dm
+++ b/code/datums/mutations.dm
@@ -117,9 +117,10 @@ GLOBAL_LIST_EMPTY(mutations_list)
name = "Hulk"
quality = POSITIVE
- dna_block = NON_SCANNABLE
+ get_chance = 15
+ lowest_value = 256 * 12
text_gain_indication = "Your muscles hurt!"
- species_allowed = list("human") //no skeleton/lizard hulk
+ species_allowed = list("fly") //no skeleton/lizard hulk
health_req = 25
/datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner)
diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm
index e3e8d0e366..f9883cfe50 100644
--- a/code/datums/progressbar.dm
+++ b/code/datums/progressbar.dm
@@ -29,7 +29,6 @@
bar.pixel_y = 32 + (PROGRESSBAR_HEIGHT * (listindex - 1))
/datum/progressbar/proc/update(progress)
- //to_chat(world, "Update [progress] - [goal] - [(progress / goal)] - [((progress / goal) * 100)] - [round(((progress / goal) * 100), 5)]")
if (!user || !user.client)
shown = 0
return
diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm
index b3af867bb4..33498e046f 100644
--- a/code/datums/ruins/space.dm
+++ b/code/datums/ruins/space.dm
@@ -148,7 +148,7 @@
id = "spacehotel"
suffix = "spacehotel.dmm"
name = "The Twin-Nexus Hotel"
- description = "A interstellar hotel, where the weary spaceman can rest their head and relax, assured that the residental staff will not murder them in their sleep. Probably."
+ description = "An interstellar hotel, where the weary spaceman can rest their head and relax, assured that the residental staff will not murder them in their sleep. Probably."
/datum/map_template/ruin/space/turreted_outpost
id = "turreted-outpost"
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 9ca564cd2d..b8e51ac860 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -29,11 +29,20 @@
/datum/status_effect/incapacitating/knockdown
id = "knockdown"
+/datum/status_effect/incapacitating/knockdown/tick()
+ if(owner.staminaloss)
+ owner.adjustStaminaLoss(-0.3) //reduce stamina loss by 0.3 per tick, 6 per 2 seconds
+
+
//UNCONSCIOUS
/datum/status_effect/incapacitating/unconscious
id = "unconscious"
needs_update_stat = TRUE
+/datum/status_effect/incapacitating/unconscious/tick()
+ if(owner.staminaloss)
+ owner.adjustStaminaLoss(-0.3) //reduce stamina loss by 0.3 per tick, 6 per 2 seconds
+
//SLEEPING
/datum/status_effect/incapacitating/sleeping
id = "sleeping"
@@ -57,7 +66,7 @@
/datum/status_effect/incapacitating/sleeping/tick()
if(owner.staminaloss)
- owner.adjustStaminaLoss(-0.35) //reduce stamina loss by 0.35 per tick, 7 per 2 seconds
+ owner.adjustStaminaLoss(-0.5) //reduce stamina loss by 0.5 per tick, 10 per 2 seconds
if(human_owner && human_owner.drunkenness)
human_owner.drunkenness *= 0.997 //reduce drunkenness by 0.3% per tick, 6% per 2 seconds
if(prob(20))
diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm
index a2abdf64a1..e3e7e83dcf 100644
--- a/code/datums/weather/weather.dm
+++ b/code/datums/weather/weather.dm
@@ -42,7 +42,7 @@
/datum/weather/New()
..()
- SSweather.existing_weather |= src
+ SSweather.existing_weather += src
/datum/weather/Destroy()
SSweather.existing_weather -= src
@@ -108,7 +108,7 @@
stage = END_STAGE
update_areas()
-/datum/weather/proc/can_impact(mob/living/L) //Can this weather impact a mob?
+/datum/weather/proc/can_weather_act(mob/living/L) //Can this weather impact a mob?
var/turf/mob_turf = get_turf(L)
if(mob_turf && (mob_turf.z != target_z))
return
@@ -118,7 +118,7 @@
return
return 1
-/datum/weather/proc/impact(mob/living/L) //What effect does this weather have on the hapless mob?
+/datum/weather/proc/weather_act(mob/living/L) //What effect does this weather have on the hapless mob?
return
/datum/weather/proc/update_areas()
diff --git a/code/datums/weather/weather_types.dm b/code/datums/weather/weather_types.dm
deleted file mode 100644
index 3368dcf1dd..0000000000
--- a/code/datums/weather/weather_types.dm
+++ /dev/null
@@ -1,225 +0,0 @@
-//Different types of weather.
-
-/datum/weather/floor_is_lava //The Floor is Lava: Makes all turfs damage anyone on them unless they're standing on a solid object.
- name = "the floor is lava"
- desc = "The ground turns into surprisingly cool lava, lightly damaging anything on the floor."
-
- telegraph_message = "Waves of heat emanate from the ground..."
- telegraph_duration = 150
-
- weather_message = "The floor is lava! Get on top of something!"
- weather_duration_lower = 300
- weather_duration_upper = 600
- weather_overlay = "lava"
-
- end_message = "The ground cools and returns to its usual form."
- end_duration = 0
-
- area_type = /area
- protected_areas = list(/area/space)
- target_z = ZLEVEL_STATION_PRIMARY
-
- overlay_layer = ABOVE_OPEN_TURF_LAYER //Covers floors only
- immunity_type = "lava"
-
-/datum/weather/floor_is_lava/impact(mob/living/L)
- for(var/obj/structure/O in L.loc)
- if(O.density)
- return
- if(L.loc.density)
- return
- if(!L.client) //Only sentient people are going along with it!
- return
- L.adjustFireLoss(3)
-
-
-/datum/weather/advanced_darkness //Advanced Darkness: Restricts the vision of all affected mobs to a single tile in the cardinal directions.
- name = "advanced darkness"
- desc = "Everything in the area is effectively blinded, unable to see more than a foot or so around itself."
-
- telegraph_message = "The lights begin to dim... is the power going out?"
- telegraph_duration = 150
-
- weather_message = "This isn't your average everday darkness... this is advanced darkness!"
- weather_duration_lower = 300
- weather_duration_upper = 300
-
- end_message = "At last, the darkness recedes."
- end_duration = 0
-
- area_type = /area
- target_z = ZLEVEL_STATION_PRIMARY
-
-/datum/weather/advanced_darkness/update_areas()
- for(var/V in impacted_areas)
- var/area/A = V
- if(stage == MAIN_STAGE)
- A.invisibility = 0
- A.set_opacity(TRUE)
- A.layer = overlay_layer
- A.icon = 'icons/effects/weather_effects.dmi'
- A.icon_state = "darkness"
- else
- A.invisibility = INVISIBILITY_MAXIMUM
- A.set_opacity(FALSE)
-
-
-/datum/weather/ash_storm //Ash Storms: Common happenings on lavaland. Heavily obscures vision and deals heavy fire damage to anyone caught outside.
- name = "ash storm"
- desc = "An intense atmospheric storm lifts ash off of the planet's surface and billows it down across the area, dealing intense fire damage to the unprotected."
-
- telegraph_message = "An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter."
- telegraph_duration = 300
- telegraph_sound = 'sound/lavaland/ash_storm_windup.ogg'
- telegraph_overlay = "light_ash"
-
- weather_message = "Smoldering clouds of scorching ash billow down around you! Get inside!"
- weather_duration_lower = 600
- weather_duration_upper = 1500
- weather_sound = 'sound/lavaland/ash_storm_start.ogg'
- weather_overlay = "ash_storm"
-
- end_message = "The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now."
- end_duration = 300
- end_sound = 'sound/lavaland/ash_storm_end.ogg'
- end_overlay = "light_ash"
-
- area_type = /area/lavaland/surface/outdoors
- target_z = ZLEVEL_LAVALAND
-
- immunity_type = "ash"
-
- probability = 90
-
-/datum/weather/ash_storm/proc/is_ash_immune(mob/living/L)
- if(istype(L.loc, /obj/mecha)) //Mechs are immune
- return TRUE
- if(ishuman(L)) //Are you immune?
- var/mob/living/carbon/human/H = L
- var/thermal_protection = H.get_thermal_protection()
- if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT)
- return TRUE
- if(istype(L.loc, /mob/living) && L.loc != L) //Matryoshka check
- return is_ash_immune(L.loc)
- return FALSE //RIP you
-
-/datum/weather/ash_storm/impact(mob/living/L)
- if(is_ash_immune(L))
- return
- L.adjustFireLoss(4)
-
-/datum/weather/ash_storm/emberfall //Emberfall: An ash storm passes by, resulting in harmless embers falling like snow. 10% to happen in place of an ash storm.
- name = "emberfall"
- desc = "A passing ash storm blankets the area in harmless embers."
-
- weather_message = "Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by..."
- weather_sound = 'sound/lavaland/ash_storm_windup.ogg'
- weather_overlay = "light_ash"
-
- end_message = "The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet."
-
- aesthetic = TRUE
-
- probability = 10
-
-/datum/weather/rad_storm
- name = "radiation storm"
- desc = "A cloud of intense radiation passes through the area dealing rad damage to those who are unprotected."
-
- telegraph_duration = 400
- telegraph_message = "The air begins to grow warm."
-
- weather_message = "You feel waves of heat wash over you! Find shelter!"
- weather_overlay = "ash_storm"
- weather_duration_lower = 100
- weather_duration_upper = 600
- weather_color = "green"
- weather_sound = 'sound/misc/bloblarm.ogg'
-
- end_duration = 100
- end_message = "The air seems to be cooling off again."
-
- area_type = /area
- protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
- /area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle)
- target_z = ZLEVEL_STATION_PRIMARY
-
- immunity_type = "rad"
-
-/datum/weather/rad_storm/telegraph()
- ..()
- status_alarm("alert")
-
-
-/datum/weather/rad_storm/impact(mob/living/L)
- var/resist = L.getarmor(null, "rad")
- if(prob(40))
- if(ishuman(L))
- var/mob/living/carbon/human/H = L
- if(H.dna && H.dna.species)
- if(!(RADIMMUNE in H.dna.species.species_traits))
- if(prob(max(0,100-resist)))
- H.randmuti()
- if(prob(50))
- if(prob(90))
- H.randmutb()
- else
- H.randmutg()
- H.domutcheck()
- L.rad_act(20,1)
-/datum/weather/rad_storm/end()
- if(..())
- return
- priority_announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert")
- status_alarm()
- sleep(300)
- revoke_maint_all_access() // Need to make this a timer at some point.
-
-
-/datum/weather/rad_storm/proc/status_alarm(command) //Makes the status displays show the radiation warning for those who missed the announcement.
- var/datum/radio_frequency/frequency = SSradio.return_frequency(1435)
-
- if(!frequency)
- return
-
- var/datum/signal/status_signal = new
- var/atom/movable/virtualspeaker/virt = new /atom/movable/virtualspeaker(null)
- status_signal.source = virt
- status_signal.transmission_method = 1
- status_signal.data["command"] = "shuttle"
-
- if(command == "alert")
- status_signal.data["command"] = "alert"
- status_signal.data["picture_state"] = "radiation"
-
- frequency.post_signal(src, status_signal)
-
-
-/datum/weather/acid_rain
- name = "acid rain"
- desc = "Some stay dry and others feel the pain"
-
- telegraph_duration = 400
- telegraph_message = "Stinging droplets start to fall upon you.."
- telegraph_sound = 'sound/ambience/acidrain_start.ogg'
-
- weather_message = "Your skin melts underneath the rain!"
- weather_overlay = "acid_rain"
- weather_duration_lower = 600
- weather_duration_upper = 1500
- weather_sound = 'sound/ambience/acidrain_mid.ogg'
-
- end_duration = 100
- end_message = "The rain starts to dissipate."
- end_sound = 'sound/ambience/acidrain_end.ogg'
-
- area_type = /area/lavaland/surface/outdoors
- target_z = ZLEVEL_LAVALAND
-
- immunity_type = "acid" // temp
-
-
-/datum/weather/acid_rain/impact(mob/living/L)
- var/resist = L.getarmor(null, "acid")
- if(prob(max(0,100-resist)))
- L.acid_act(20,20)
diff --git a/code/datums/weather/weather_types/acid_rain.dm b/code/datums/weather/weather_types/acid_rain.dm
new file mode 100644
index 0000000000..cb4ced8595
--- /dev/null
+++ b/code/datums/weather/weather_types/acid_rain.dm
@@ -0,0 +1,29 @@
+//Acid rain is part of the natural weather cycle in the humid forests of Planetstation, and cause acid damage to anyone unprotected.
+/datum/weather/acid_rain
+ name = "acid rain"
+ desc = "The planet's thunderstorms are by nature acidic, and will incinerate anyone standing beneath them without protection."
+
+ telegraph_duration = 400
+ telegraph_message = "Thunder rumbles far above. You hear droplets drumming against the canopy. Seek shelter."
+ telegraph_sound = 'sound/ambience/acidrain_start.ogg'
+
+ weather_message = "Acidic rain pours down around you! Get inside!"
+ weather_overlay = "acid_rain"
+ weather_duration_lower = 600
+ weather_duration_upper = 1500
+ weather_sound = 'sound/ambience/acidrain_mid.ogg'
+
+ end_duration = 100
+ end_message = "The downpour gradually slows to a light shower. It should be safe outside now."
+ end_sound = 'sound/ambience/acidrain_end.ogg'
+
+ area_type = /area/lavaland/surface/outdoors
+ target_z = ZLEVEL_LAVALAND
+
+ immunity_type = "acid" // temp
+
+
+/datum/weather/acid_rain/weather_act(mob/living/L)
+ var/resist = L.getarmor(null, "acid")
+ if(prob(max(0,100-resist)))
+ L.acid_act(20,20)
diff --git a/code/datums/weather/weather_types/advanced_darkness.dm b/code/datums/weather/weather_types/advanced_darkness.dm
new file mode 100644
index 0000000000..75cc2b1a5f
--- /dev/null
+++ b/code/datums/weather/weather_types/advanced_darkness.dm
@@ -0,0 +1,30 @@
+//Restricts the vision of affected mobs to a single tile in the cardinal directions.
+/datum/weather/advanced_darkness
+ name = "advanced darkness"
+ desc = "Everything in the area is effectively blinded, unable to see more than a foot or so around itself."
+
+ telegraph_message = "Your eyes hurt... a vignette settles in your vision and closes in."
+ telegraph_duration = 150
+
+ weather_message = "This isn't your average everday darkness... this is advanced darkness!"
+ weather_duration_lower = 300
+ weather_duration_upper = 300
+
+ end_message = "At last, the darkness recedes."
+ end_duration = 0
+
+ area_type = /area
+ target_z = ZLEVEL_STATION_PRIMARY
+
+/datum/weather/advanced_darkness/update_areas()
+ for(var/V in impacted_areas)
+ var/area/A = V
+ if(stage == MAIN_STAGE)
+ A.invisibility = 0
+ A.set_opacity(TRUE)
+ A.layer = overlay_layer
+ A.icon = 'icons/effects/weather_effects.dmi'
+ A.icon_state = "darkness"
+ else
+ A.invisibility = INVISIBILITY_MAXIMUM
+ A.set_opacity(FALSE)
diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm
new file mode 100644
index 0000000000..2c2212fde5
--- /dev/null
+++ b/code/datums/weather/weather_types/ash_storm.dm
@@ -0,0 +1,61 @@
+//Ash storms happen frequently on lavaland. They heavily obscure vision, and cause high fire damage to anyone caught outside.
+/datum/weather/ash_storm
+ name = "ash storm"
+ desc = "An intense atmospheric storm lifts ash off of the planet's surface and billows it down across the area, dealing intense fire damage to the unprotected."
+
+ telegraph_message = "An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter."
+ telegraph_duration = 300
+ telegraph_sound = 'sound/lavaland/ash_storm_windup.ogg'
+ telegraph_overlay = "light_ash"
+
+ weather_message = "Smoldering clouds of scorching ash billow down around you! Get inside!"
+ weather_duration_lower = 600
+ weather_duration_upper = 1200
+ weather_sound = 'sound/lavaland/ash_storm_start.ogg'
+ weather_overlay = "ash_storm"
+
+ end_message = "The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now."
+ end_duration = 300
+ end_sound = 'sound/lavaland/ash_storm_end.ogg'
+ end_overlay = "light_ash"
+
+ area_type = /area/lavaland/surface/outdoors
+ target_z = ZLEVEL_LAVALAND
+
+ immunity_type = "ash"
+
+ probability = 90
+
+/datum/weather/ash_storm/proc/is_ash_immune(mob/living/L)
+ if(istype(L.loc, /obj/mecha)) //Mechs are immune
+ return TRUE
+ if(ishuman(L)) //Are you immune?
+ var/mob/living/carbon/human/H = L
+ var/thermal_protection = H.get_thermal_protection()
+ if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT)
+ return TRUE
+ if(istype(L.loc, /mob/living) && L.loc != L) //Matryoshka check
+ return is_ash_immune(L.loc)
+ return FALSE //RIP you
+
+/datum/weather/ash_storm/weather_act(mob/living/L)
+ if(is_ash_immune(L))
+ return
+ L.adjustFireLoss(4)
+
+
+//Emberfalls are the result of an ash storm passing by close to the playable area of lavaland. They have a 10% chance to trigger in place of an ash storm.
+/datum/weather/ash_storm/emberfall
+ name = "emberfall"
+ desc = "A passing ash storm blankets the area in harmless embers."
+
+ weather_message = "Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by..."
+ weather_sound = 'sound/lavaland/ash_storm_windup.ogg'
+ weather_overlay = "light_ash"
+
+ end_message = "The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet."
+ end_sound = null
+
+ aesthetic = TRUE
+
+ probability = 10
diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm
new file mode 100644
index 0000000000..52f82abec9
--- /dev/null
+++ b/code/datums/weather/weather_types/floor_is_lava.dm
@@ -0,0 +1,32 @@
+//Causes fire damage to anyone not standing on a dense object.
+/datum/weather/floor_is_lava
+ name = "the floor is lava"
+ desc = "The ground turns into surprisingly cool lava, lightly damaging anything on the floor."
+
+ telegraph_message = "You feel the ground beneath you getting hot. Waves of heat distort the air."
+ telegraph_duration = 150
+
+ weather_message = "The floor is lava! Get on top of something!"
+ weather_duration_lower = 300
+ weather_duration_upper = 600
+ weather_overlay = "lava"
+
+ end_message = "The ground cools and returns to its usual form."
+ end_duration = 0
+
+ area_type = /area
+ protected_areas = list(/area/space)
+ target_z = ZLEVEL_STATION_PRIMARY
+
+ overlay_layer = ABOVE_OPEN_TURF_LAYER //Covers floors only
+ immunity_type = "lava"
+
+/datum/weather/floor_is_lava/weather_act(mob/living/L)
+ for(var/obj/structure/O in L.loc)
+ if(O.density)
+ return
+ if(L.loc.density)
+ return
+ if(!L.client) //Only sentient people are going along with it!
+ return
+ L.adjustFireLoss(3)
diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm
new file mode 100644
index 0000000000..3c11750dda
--- /dev/null
+++ b/code/datums/weather/weather_types/radiation_storm.dm
@@ -0,0 +1,72 @@
+//Radiation storms occur when the station passes through an irradiated area, and irradiate anyone not standing in protected areas (maintenance, emergency storage, etc.)
+/datum/weather/rad_storm
+ name = "radiation storm"
+ desc = "A cloud of intense radiation passes through the area dealing rad damage to those who are unprotected."
+
+ telegraph_duration = 400
+ telegraph_message = "The air begins to grow warm."
+
+ weather_message = "You feel waves of heat wash over you! Find shelter!"
+ weather_overlay = "ash_storm"
+ weather_duration_lower = 600
+ weather_duration_upper = 1500
+ weather_color = "green"
+ weather_sound = 'sound/misc/bloblarm.ogg'
+
+ end_duration = 100
+ end_message = "The air seems to be cooling off again."
+
+ area_type = /area
+ protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
+ /area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle)
+ target_z = ZLEVEL_STATION_PRIMARY
+
+ immunity_type = "rad"
+
+/datum/weather/rad_storm/telegraph()
+ ..()
+ status_alarm("alert")
+
+
+/datum/weather/rad_storm/weather_act(mob/living/L)
+ var/resist = L.getarmor(null, "rad")
+ if(prob(40))
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ if(H.dna && H.dna.species)
+ if(!(RADIMMUNE in H.dna.species.species_traits))
+ if(prob(max(0,100-resist)))
+ H.randmuti()
+ if(prob(50))
+ if(prob(90))
+ H.randmutb()
+ else
+ H.randmutg()
+ H.domutcheck()
+ L.rad_act(20,1)
+
+/datum/weather/rad_storm/end()
+ if(..())
+ return
+ priority_announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert")
+ status_alarm()
+ sleep(300)
+ revoke_maint_all_access() // Need to make this a timer at some point.
+
+/datum/weather/rad_storm/proc/status_alarm(command) //Makes the status displays show the radiation warning for those who missed the announcement.
+ var/datum/radio_frequency/frequency = SSradio.return_frequency(1435)
+
+ if(!frequency)
+ return
+
+ var/datum/signal/status_signal = new
+ var/atom/movable/virtualspeaker/virt = new /atom/movable/virtualspeaker(null)
+ status_signal.source = virt
+ status_signal.transmission_method = 1
+ status_signal.data["command"] = "shuttle"
+
+ if(command == "alert")
+ status_signal.data["command"] = "alert"
+ status_signal.data["picture_state"] = "radiation"
+
+ frequency.post_signal(src, status_signal)
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index c399f7c00d..508459188b 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -150,6 +150,7 @@
return 0
/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0)
+ SendSignal(COMSIG_ATOM_HULK_ATTACK, user)
if(does_attack_animation)
user.changeNext_move(CLICK_CD_MELEE)
add_logs(user, src, "punched", "hulk powers")
@@ -222,10 +223,12 @@
return
/atom/proc/emp_act(severity)
+ SendSignal(COMSIG_ATOM_EMP_ACT, severity)
if(istype(wires) && !(flags_2 & NO_EMP_WIRES_2))
wires.emp_pulse()
/atom/proc/bullet_act(obj/item/projectile/P, def_zone)
+ SendSignal(COMSIG_ATOM_BULLET_ACT, P, def_zone)
. = P.on_hit(src, 0, def_zone)
/atom/proc/in_contents_of(container)//can take class or object instance as argument
@@ -291,6 +294,7 @@
to_chat(user, "[total_volume] units of various reagents")
else
to_chat(user, "Nothing.")
+ SendSignal(COMSIG_PARENT_EXAMINE, user)
/atom/proc/relaymove(mob/user)
if(buckle_message_cooldown <= world.time)
@@ -307,9 +311,11 @@
SendSignal(COMSIG_ATOM_EX_ACT, severity, target)
/atom/proc/blob_act(obj/structure/blob/B)
+ SendSignal(COMSIG_ATOM_BLOB_ACT, B)
return
/atom/proc/fire_act(exposed_temperature, exposed_volume)
+ SendSignal(COMSIG_ATOM_FIRE_ACT, exposed_temperature, exposed_volume)
return
/atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked)
@@ -448,7 +454,6 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
cur_y = y_arr.Find(src.z)
if(cur_y)
break
-// to_chat(world, "X = [cur_x]; Y = [cur_y]")
if(cur_x && cur_y)
return list("x"=cur_x,"y"=cur_y)
else
@@ -473,21 +478,26 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
SendSignal(COMSIG_ATOM_SING_PULL, S, current_size)
/atom/proc/acid_act(acidpwr, acid_volume)
+ SendSignal(COMSIG_ATOM_ACID_ACT, acidpwr, acid_volume)
return
/atom/proc/emag_act()
+ SendSignal(COMSIG_ATOM_EMAG_ACT)
return
/atom/proc/narsie_act()
+ SendSignal(COMSIG_ATOM_NARSIE_ACT)
return
/atom/proc/ratvar_act()
+ SendSignal(COMSIG_ATOM_RATVAR_ACT)
return
/atom/proc/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
return FALSE
/atom/proc/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode)
+ SendSignal(COMSIG_ATOM_RCD_ACT, user, the_rcd, passed_mode)
return FALSE
/atom/proc/storage_contents_dump_act(obj/item/storage/src_object, mob/user)
@@ -627,3 +637,6 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
/atom/Entered(atom/movable/AM, atom/oldLoc)
SendSignal(COMSIG_ATOM_ENTERED, AM, oldLoc)
+
+/atom/proc/return_temperature()
+ return
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 05991cb213..6c544c4497 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -1,4 +1,3 @@
-
/atom/movable
layer = OBJ_LAYER
var/last_move = null
@@ -117,6 +116,7 @@
//Called after a successful Move(). By this point, we've already moved
/atom/movable/proc/Moved(atom/OldLoc, Dir)
+ SendSignal(COMSIG_MOVABLE_MOVED, OldLoc, Dir)
if (!inertia_moving)
inertia_next_move = world.time + inertia_move_delay
newtonian_move(Dir)
@@ -215,6 +215,7 @@
//to differentiate it, naturally everyone forgot about this immediately and so some things
//would bump twice, so now it's called Collide
/atom/movable/proc/Collide(atom/A)
+ SendSignal(COMSIG_MOVABLE_COLLIDE, A)
if(A)
if(throwing)
throwing.hit_atom(A)
@@ -308,6 +309,7 @@
/atom/movable/proc/throw_impact(atom/hit_atom, throwingdatum)
set waitfor = 0
+ SendSignal(COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum)
return hit_atom.hitby(src)
/atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked)
@@ -315,7 +317,8 @@
step(src, AM.dir)
..()
-/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback)
+/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback) //If this returns FALSE then callback will not be called.
+ . = FALSE
if (!target || (flags_1 & NODROP_1) || speed <= 0)
return
@@ -344,7 +347,9 @@
//then lets add it to speed
speed += user_momentum
if (speed <= 0)
- return //no throw speed, the user was moving too fast.
+ return//no throw speed, the user was moving too fast.
+
+ . = TRUE // No failure conditions past this point.
var/datum/thrownthing/TT = new()
TT.thrownthing = src
@@ -692,4 +697,4 @@
return FALSE
if(anchored || throwing)
return FALSE
- return TRUE
+ return TRUE
\ No newline at end of file
diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm
index 9b585ea653..64b405bbd5 100644
--- a/code/game/gamemodes/antag_spawner.dm
+++ b/code/game/gamemodes/antag_spawner.dm
@@ -261,7 +261,7 @@
/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, type = "")
- var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T)
+ var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T)
var/mob/living/simple_animal/slaughter/S = new demon_type(holder)
S.holder = holder
S.key = C.key
diff --git a/code/game/gamemodes/antag_spawner.dm.rej b/code/game/gamemodes/antag_spawner.dm.rej
deleted file mode 100644
index ea9a00132a..0000000000
--- a/code/game/gamemodes/antag_spawner.dm.rej
+++ /dev/null
@@ -1,9 +0,0 @@
-diff a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm (rejected hunks)
-@@ -108,6 +108,7 @@
- new_objective.explanation_text = "Protect [usr.real_name], the wizard."
- M.mind.objectives += new_objective
- SSticker.mode.apprentices += M.mind
-+ M.mind.assigned_role = "Apprentice"
- M.mind.special_role = "apprentice"
- SSticker.mode.update_wiz_icons_added(M.mind)
- M << sound('sound/effects/magic.ogg')
diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm
index 7ddc71eecc..61dee30c8e 100644
--- a/code/game/gamemodes/blob/blobs/blob_mobs.dm
+++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm
@@ -229,13 +229,29 @@
/mob/living/simple_animal/hostile/blob/blobbernaut/Life()
if(..())
+ var/list/blobs_in_area = range(2, src)
if(independent)
return // strong independent blobbernaut that don't need no blob
var/damagesources = 0
- if(!(locate(/obj/structure/blob) in range(2, src)))
+ if(!(locate(/obj/structure/blob) in blobs_in_area))
damagesources++
if(!factory)
damagesources++
+ else
+ if(locate(/obj/structure/blob/core) in blobs_in_area)
+ adjustHealth(-maxHealth*0.1)
+ var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(src)) //hello yes you are being healed
+ if(overmind)
+ H.color = overmind.blob_reagent_datum.complementary_color
+ else
+ H.color = "#000000"
+ if(locate(/obj/structure/blob/node) in blobs_in_area)
+ adjustHealth(-maxHealth*0.05)
+ var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(src))
+ if(overmind)
+ H.color = overmind.blob_reagent_datum.complementary_color
+ else
+ H.color = "#000000"
if(damagesources)
for(var/i in 1 to damagesources)
adjustHealth(maxHealth*0.025) //take 2.5% of max health as damage when not near the blob or if the naut has no factory, 5% if both
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index e22b2747e0..9f8a44bed2 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -57,7 +57,7 @@
if(!placed)
if(manualplace_min_time && world.time >= manualplace_min_time)
to_chat(src, "You may now place your blob core.")
- to_chat(src, "You will automatically place your blob core in [round((autoplace_max_time - world.time)/600, 0.5)] minutes.")
+ to_chat(src, "You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)].")
manualplace_min_time = 0
if(autoplace_max_time && world.time >= autoplace_max_time)
place_blob_core(base_point_rate, 1)
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index 6baf8b4dbe..026183d951 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -365,5 +365,5 @@
to_chat(src, "Shortcuts: Click = Expand Blob | Middle Mouse Click = Rally Spores | Ctrl Click = Create Shield Blob | Alt Click = Remove Blob")
to_chat(src, "Attempting to talk will send a message to all other overminds, allowing you to coordinate with them.")
if(!placed && autoplace_max_time <= world.time)
- to_chat(src, "You will automatically place your blob core in [round((autoplace_max_time - world.time)/600, 0.5)] minutes.")
+ to_chat(src, "You will automatically place your blob core in [DisplayTimeText(autoplace_max_time - world.time)].")
to_chat(src, "You [manualplace_min_time ? "will be able to":"can"] manually place your blob core by pressing the Place Blob Core button in the bottom right corner of the screen.")
diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm
new file mode 100644
index 0000000000..4e8a0dc6b6
--- /dev/null
+++ b/code/game/gamemodes/brother/traitor_bro.dm
@@ -0,0 +1,140 @@
+/datum/objective_team/brother_team
+ name = "brotherhood"
+ member_name = "blood brother"
+ var/list/objectives = list()
+ var/meeting_area
+
+/datum/objective_team/brother_team/is_solo()
+ return FALSE
+
+/datum/objective_team/brother_team/proc/add_objective(datum/objective/O, needs_target = FALSE)
+ O.team = src
+ if(needs_target)
+ O.find_target()
+ O.update_explanation_text()
+ objectives += O
+
+/datum/objective_team/brother_team/proc/forge_brother_objectives()
+ objectives = list()
+ var/is_hijacker = prob(10)
+ for(var/i = 1 to max(1, config.brother_objectives_amount + (members.len > 2) - is_hijacker))
+ forge_single_objective()
+ if(is_hijacker)
+ if(!locate(/datum/objective/hijack) in objectives)
+ add_objective(new/datum/objective/hijack)
+ else if(!locate(/datum/objective/escape) in objectives)
+ add_objective(new/datum/objective/escape)
+
+/datum/objective_team/brother_team/proc/forge_single_objective()
+ if(prob(50))
+ if(LAZYLEN(active_ais()) && prob(100/GLOB.joined_player_list.len))
+ add_objective(new/datum/objective/destroy, TRUE)
+ else if(prob(30))
+ add_objective(new/datum/objective/maroon, TRUE)
+ else
+ add_objective(new/datum/objective/assassinate, TRUE)
+ else
+ add_objective(new/datum/objective/steal, TRUE)
+
+/datum/game_mode
+ var/list/datum/mind/brothers = list()
+ var/list/datum/objective_team/brother_team/brother_teams = list()
+
+/datum/game_mode/traitor/bros
+ name = "traitor+brothers"
+ config_tag = "traitorbro"
+ restricted_jobs = list("AI", "Cyborg")
+
+ announce_span = "danger"
+ announce_text = "There are Syndicate agents and Blood Brothers on the station!\n\
+ Traitors: Accomplish your objectives.\n\
+ Blood Brothers: Accomplish your objectives.\n\
+ Crew: Do not let the traitors or brothers succeed!"
+
+ var/list/datum/objective_team/brother_team/pre_brother_teams = list()
+ var/const/team_amount = 2 //hard limit on brother teams if scaling is turned off
+ var/const/min_team_size = 2
+
+ var/meeting_areas = list("The Bar", "Dorms", "Escape Dock", "Arrivals", "Holodeck", "Primary Tool Storage", "Recreation Area", "Chapel", "Library")
+
+/datum/game_mode/traitor/bros/pre_setup()
+ if(config.protect_roles_from_antagonist)
+ restricted_jobs += protected_jobs
+ if(config.protect_assistant_from_antagonist)
+ restricted_jobs += "Assistant"
+
+ var/list/datum/mind/possible_brothers = get_players_for_role(ROLE_BROTHER)
+
+ var/num_teams = team_amount
+ if(config.brother_scaling_coeff)
+ num_teams = max(1, round(num_players()/config.brother_scaling_coeff))
+
+ for(var/j = 1 to num_teams)
+ if(possible_brothers.len < min_team_size || antag_candidates.len <= required_enemies)
+ break
+ var/datum/objective_team/brother_team/team = new
+ var/team_size = prob(10) ? min(3, possible_brothers.len) : 2
+ for(var/k = 1 to team_size)
+ var/datum/mind/bro = pick(possible_brothers)
+ possible_brothers -= bro
+ antag_candidates -= bro
+ team.members += bro
+ bro.restricted_roles = restricted_jobs
+ log_game("[bro.key] (ckey) has been selected as a Brother")
+ pre_brother_teams += team
+ return ..()
+
+/datum/game_mode/traitor/bros/post_setup()
+ for(var/datum/objective_team/brother_team/team in pre_brother_teams)
+ team.meeting_area = pick(meeting_areas)
+ meeting_areas -= team.meeting_area
+ team.forge_brother_objectives()
+ for(var/datum/mind/M in team.members)
+ M.add_antag_datum(ANTAG_DATUM_BROTHER, team)
+ modePlayer += M
+ brother_teams += pre_brother_teams
+ return ..()
+
+/datum/game_mode/traitor/bros/generate_report()
+ return "It's Syndicate recruiting season. Be alert for potential Syndicate infiltrators, but also watch out for disgruntled employees trying to defect. Unlike Nanotrasen, the Syndicate prides itself in teamwork and will only recruit pairs that share a brotherly trust."
+
+/datum/game_mode/proc/auto_declare_completion_brother()
+ if(!LAZYLEN(brother_teams))
+ return
+ var/text = "
The blood brothers were:"
+ var/teamnumber = 1
+ for(var/datum/objective_team/brother_team/team in brother_teams)
+ if(!team.members.len)
+ continue
+ text += "
Team #[teamnumber++]"
+ for(var/datum/mind/M in team.members)
+ text += printplayer(M)
+ var/win = TRUE
+ var/objective_count = 1
+ for(var/datum/objective/objective in team.objectives)
+ if(objective.check_completion())
+ text += "
Objective #[objective_count]: [objective.explanation_text] Success!"
+ SSblackbox.add_details("traitor_objective","[objective.type]|SUCCESS")
+ else
+ text += "
Objective #[objective_count]: [objective.explanation_text] Fail."
+ SSblackbox.add_details("traitor_objective","[objective.type]|FAIL")
+ win = FALSE
+ objective_count++
+ if(win)
+ text += "
The blood brothers were successful!"
+ SSblackbox.add_details("brother_success","SUCCESS")
+ else
+ text += "
The blood brothers have failed!"
+ SSblackbox.add_details("brother_success","FAIL")
+ text += "
"
+ to_chat(world, text)
+
+/datum/game_mode/proc/update_brother_icons_added(datum/mind/brother_mind)
+ var/datum/atom_hud/antag/brotherhud = GLOB.huds[ANTAG_HUD_BROTHER]
+ brotherhud.join_hud(brother_mind.current)
+ set_antag_hud(brother_mind.current, "brother")
+
+/datum/game_mode/proc/update_brother_icons_removed(datum/mind/brother_mind)
+ var/datum/atom_hud/antag/brotherhud = GLOB.huds[ANTAG_HUD_BROTHER]
+ brotherhud.leave_hud(brother_mind.current)
+ set_antag_hud(brother_mind.current, null)
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index 14126c69f3..e67ac26d3a 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -340,6 +340,10 @@ GLOBAL_LIST_INIT(slot2type, list("head" = /obj/item/clothing/head/changeling, "w
return
if(!target)
return
+ if(NO_DNA_COPY in target.dna.species.species_traits)
+ if(verbose)
+ to_chat(user, "[target] is not compatible with our biology.")
+ return
if((target.disabilities & NOCLONE) || (target.disabilities & HUSK))
if(verbose)
to_chat(user, "DNA of [target] is ruined beyond usability!")
diff --git a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm
index a6eb5fb4e7..9b1ef66c9e 100644
--- a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm
+++ b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm
@@ -207,7 +207,7 @@
time_duration = round(time_duration * (2 * efficiency), 1)
CO.active = TRUE //you'd be active in a second but you should update immediately
invoker.visible_message("The air in front of [invoker] ripples before suddenly tearing open!", \
- "With a word, you rip open a [two_way ? "two-way":"one-way"] rift to [input_target_key]. It will last for [time_duration / 10] seconds and has [gateway_uses] use[gateway_uses > 1 ? "s" : ""].")
+ "With a word, you rip open a [two_way ? "two-way":"one-way"] rift to [input_target_key]. It will last for [DisplayTimeText(time_duration)] and has [gateway_uses] use[gateway_uses > 1 ? "s" : ""].")
var/obj/effect/clockwork/spatial_gateway/S1 = new(issrcobelisk ? get_turf(src) : get_step(get_turf(invoker), invoker.dir))
var/obj/effect/clockwork/spatial_gateway/S2 = new(istargetobelisk ? get_turf(target) : get_step(get_turf(target), target.dir))
diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm
index eecfec7780..bf76cdb2f7 100644
--- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm
+++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm
@@ -318,23 +318,10 @@
if(servants > SCRIPT_SERVANT_REQ)
servants -= SCRIPT_SERVANT_REQ
production_time += min(SLAB_SERVANT_SLOWDOWN * servants, SLAB_SLOWDOWN_MAXIMUM)
- var/production_text_addon = ""
if(production_time != SLAB_PRODUCTION_TIME+SLAB_SLOWDOWN_MAXIMUM)
- production_text_addon = ", which increases for each human or silicon Servant above [SCRIPT_SERVANT_REQ]"
- production_time = production_time/600
- var/list/production_text
- if(round(production_time))
- production_text = list("[round(production_time)] minute\s")
- if(production_time != round(production_time))
- production_time -= round(production_time)
- production_time *= 60
- if(!LAZYLEN(production_text))
- production_text = list("[round(production_time, 1)] second\s")
- else
- production_text += " and [round(production_time, 1)] second\s"
- production_text += ""
- production_text += production_text_addon
- production_text = production_text.Join()
+ production_time = "[DisplayTimeText(production_time)], which increases for each human or silicon Servant above [SCRIPT_SERVANT_REQ]"
+ else
+ production_time = "[DisplayTimeText(production_time)]"
textlist = list("
[text2ratvar("Purge all untruths and honor Engine.")]
\
\
@@ -439,23 +426,10 @@
if(servants > SCRIPT_SERVANT_REQ)
servants -= SCRIPT_SERVANT_REQ
production_time += min(SLAB_SERVANT_SLOWDOWN * servants, SLAB_SLOWDOWN_MAXIMUM)
- var/production_text_addon = ""
if(production_time != SLAB_PRODUCTION_TIME+SLAB_SLOWDOWN_MAXIMUM)
- production_text_addon = ", which increases for each human or silicon Servant above [SCRIPT_SERVANT_REQ]"
- production_time = production_time/600
- var/list/production_text
- if(round(production_time))
- production_text = list("[round(production_time)] minute\s")
- if(production_time != round(production_time))
- production_time -= round(production_time)
- production_time *= 60
- if(!LAZYLEN(production_text))
- production_text = list("[round(production_time, 1)] second\s")
- else
- production_text += " and [round(production_time, 1)] second\s"
- production_text += ""
- production_text += production_text_addon
- production_text = production_text.Join()
+ production_time = "[DisplayTimeText(production_time)], which increases for each human or silicon Servant above [SCRIPT_SERVANT_REQ]"
+ else
+ production_time = "[DisplayTimeText(production_time)]"
dat += "Components & Their Uses
"
dat += "Components are your primary resource as a Servant. There are five types of component, with each one being used in different roles:
"
dat += "[get_component_icon(BELLIGERENT_EYE)]BE Belligerent Eyes are aggressive and judgemental, and are used in offensive scripture;
"
@@ -466,7 +440,7 @@
dat += "Although this is a good rule of thumb, their effects become much more nuanced when used together. For instance, a turret might have both belligerent eyes and \
vanguard cogwheels as construction requirements, because it defends its allies by harming its enemies.
"
dat += "Components' primary use is fueling scripture (covered in its own section), and they can be created through various ways. This clockwork slab, for instance, \
- will make a random component of every type - or a specific one, if you choose a target component from the interface - every [production_text]. This number will increase \
+ will make a random component of every type - or a specific one, if you choose a target component from the interface - every [production_time]. This number will increase \
as the amount of Servants in the covenant increase; additionally, slabs can only produce components when held by a Servant, and holding more than one slab will cause both \
of them to halt progress until one of them is removed from their person.
"
dat += "Your slab has an internal storage of components, but it isn't meant to be the main one. Instead, there's a global storage of components that can be \
diff --git a/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm b/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm
index 0ee6d45f7d..ca80d6f082 100644
--- a/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm
+++ b/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm
@@ -23,6 +23,7 @@
autoping = FALSE
resistance_flags = FIRE_PROOF | ACID_PROOF
force_replace_ai_name = TRUE
+ overrides_aicore_laws = TRUE
/obj/item/device/mmi/posibrain/soul_vessel/Initialize()
. = ..()
diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm
index 2174f04dcb..b684b854c1 100644
--- a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm
+++ b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm
@@ -101,7 +101,7 @@
glow.linked = src
/obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity)
- var/damage = max((obj_integrity * 0.70) / severity, 100) //requires multiple bombs to take down
+ var/damage = max((obj_integrity * 0.7) / severity, 100) //requires multiple bombs to take down
take_damage(damage, BRUTE, "bomb", 0)
/obj/structure/destructible/clockwork/massive/celestial_gateway/attackby(obj/item/I, mob/living/user, params) //add components directly to the ark
diff --git a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm
index 326aa46c06..cd33cf7adc 100644
--- a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm
+++ b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm
@@ -105,7 +105,7 @@
..()
if(is_servant_of_ratvar(user) || isobserver(user))
if(linkedwall)
- to_chat(user, "It is linked to a Clockwork Wall and will generate a component every [round(get_production_time() * 0.1, 0.1)] seconds!")
+ to_chat(user, "It is linked to a Clockwork Wall and will generate a component every [DisplayTimeText(get_production_time())]!")
else
to_chat(user, "It is unlinked! Construct a Clockwork Wall nearby to generate components!")
to_chat(user, "Stored components:")
diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm
index 283376b055..b8cbed5051 100644
--- a/code/game/gamemodes/cult/cult_comms.dm
+++ b/code/game/gamemodes/cult/cult_comms.dm
@@ -96,7 +96,7 @@
/proc/pollCultists(var/mob/living/Nominee) //Cult Master Poll
if(world.time < CULT_POLL_WAIT)
- to_chat(Nominee, "It would be premature to select a leader while everyone is still settling in, try again in [round((CULT_POLL_WAIT-world.time)/10)] seconds.")
+ to_chat(Nominee, "It would be premature to select a leader while everyone is still settling in, try again in [DisplayTimeText(CULT_POLL_WAIT-world.time)].")
return
GLOB.cult_vote_called = TRUE //somebody's trying to be a master, make sure we don't let anyone else try
for(var/datum/mind/B in SSticker.mode.cult)
@@ -232,7 +232,7 @@
return FALSE
if(cooldown > world.time)
if(!CM.active)
- to_chat(owner, "You need to wait [round((cooldown - world.time) * 0.1)] seconds before you can mark another target!")
+ to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can mark another target!")
return FALSE
return ..()
@@ -324,7 +324,7 @@
return FALSE
if(cooldown > world.time)
if(!PM.active)
- to_chat(owner, "You need to wait [round((cooldown - world.time) * 0.1)] seconds before you can pulse again!")
+ to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can pulse again!")
return FALSE
return ..()
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index 0cba943287..c1ccf9a368 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -10,7 +10,7 @@
..()
to_chat(user, "\The [src] is [anchored ? "":"not "]secured to the floor.")
if((iscultist(user) || isobserver(user)) && cooldowntime > world.time)
- to_chat(user, "The magic in [src] is too weak, [p_they()] will be ready to use again in [getETA()].")
+ to_chat(user, "The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].")
/obj/structure/destructible/cult/examine_status(mob/user)
if(iscultist(user) || isobserver(user))
@@ -50,13 +50,6 @@
animate(src, color = previouscolor, time = 8)
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
-/obj/structure/destructible/cult/proc/getETA()
- var/time = (cooldowntime - world.time)/600
- var/eta = "[round(time, 1)] minutes"
- if(time <= 1)
- time = (cooldowntime - world.time)*0.1
- eta = "[round(time, 1)] seconds"
- return eta
/obj/structure/destructible/cult/talisman
name = "altar"
@@ -72,7 +65,7 @@
to_chat(user, "You need to anchor [src] to the floor with a tome first.")
return
if(cooldowntime > world.time)
- to_chat(user, "The magic in [src] is weak, it will be ready to use again in [getETA()].")
+ to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].")
return
var/choice = alert(user,"You study the schematics etched into the forge...",,"Eldritch Whetstone","Zealot's Blindfold","Flask of Unholy Water")
var/pickedtype
@@ -105,7 +98,7 @@
to_chat(user, "You need to anchor [src] to the floor with a tome first.")
return
if(cooldowntime > world.time)
- to_chat(user, "The magic in [src] is weak, it will be ready to use again in [getETA()].")
+ to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].")
return
var/choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Nar-Sien Hardsuit")
var/pickedtype
@@ -212,7 +205,7 @@
to_chat(user, "You need to anchor [src] to the floor with a tome first.")
return
if(cooldowntime > world.time)
- to_chat(user, "The magic in [src] is weak, it will be ready to use again in [getETA()].")
+ to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].")
return
var/choice = alert(user,"You flip through the black pages of the archives...",,"Supply Talisman","Shuttle Curse","Veil Walker Set")
var/list/pickedtype = list()
diff --git a/code/game/gamemodes/factions.dm b/code/game/gamemodes/factions.dm
deleted file mode 100644
index d8d7d92831..0000000000
--- a/code/game/gamemodes/factions.dm
+++ /dev/null
@@ -1 +0,0 @@
-//Todo
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 82350726d9..f65a64fb08 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -121,7 +121,7 @@
var/list/datum/game_mode/runnable_modes = config.get_runnable_midround_modes(living_crew.len)
var/list/datum/game_mode/usable_modes = list()
for(var/datum/game_mode/G in runnable_modes)
- if(G.reroll_friendly && living_crew >= G.required_players)
+ if(G.reroll_friendly && living_crew.len >= G.required_players)
usable_modes += G
else
qdel(G)
@@ -160,7 +160,7 @@
if(config.protect_assistant_from_antagonist)
replacementmode.restricted_jobs += "Assistant"
- message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit stop the creation of antags or end the round now.")
+ message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit stop the creation of antags or end the round now.")
. = 1
sleep(rand(600,1800))
diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm
index b7b20a7311..510883ada5 100644
--- a/code/game/gamemodes/gang/gang_datum.dm
+++ b/code/game/gamemodes/gang/gang_datum.dm
@@ -331,16 +331,3 @@
adjust_influence(bawss, amount/bosses.len)
announce_to_mind(bawss, "[name] Gang: [amount/bosses.len] influence given from internal automatic restructuring.")
-//Multiverse
-
-/datum/gang/multiverse
- dom_attempts = 0
- fighting_style = "multiverse"
- is_deconvertible = FALSE
-
-/datum/gang/multiverse/New(loc, multiverse_override)
- name = multiverse_override
- ganghud = new()
-
-/datum/gang/multiverse/income()
- return
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm.rej b/code/game/gamemodes/malfunction/Malf_Modules.dm.rej
deleted file mode 100644
index 97dbe2bbdb..0000000000
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm.rej
+++ /dev/null
@@ -1,11 +0,0 @@
-diff a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm (rejected hunks)
-@@ -309,8 +309,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
- owner_AI.nuking = TRUE
- owner_AI.doomsday_device = DOOM
- owner_AI.doomsday_device.start()
-- for(var/pinpointer in GLOB.pinpointer_list)
-- var/obj/item/weapon/pinpointer/P = pinpointer
-+ for(var/obj/item/weapon/pinpointer/nuke/P in GLOB.pinpointer_list)
- P.switch_mode_to(TRACK_MALF_AI) //Pinpointers start tracking the AI wherever it goes
- qdel(src)
-
diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm
index 3bb3c8b43e..d0bb633f8c 100644
--- a/code/game/gamemodes/meteor/meteors.dm
+++ b/code/game/gamemodes/meteor/meteors.dm
@@ -119,6 +119,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
/obj/effect/meteor/Destroy()
GLOB.meteor_list -= src
+ SSaugury.unregister_doom(src)
walk(src,0) //this cancels the walk_towards() proc
. = ..()
@@ -309,6 +310,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
/obj/effect/meteor/meaty/xeno/New()
meteordrop += subtypesof(/obj/item/organ/alien)
+ meteordrop -= /obj/item/organ/alien/eggsac
..()
/obj/effect/meteor/meaty/xeno/ram_turf(turf/T)
diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm
index 7eacd9c666..ed5c2e9d76 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction.dm
@@ -1,5 +1,17 @@
+/datum/objective_team/abductor_team
+ member_name = "abductor"
+ var/list/objectives = list()
+ var/team_number
+
+/datum/objective_team/abductor_team/is_solo()
+ return FALSE
+
+/datum/objective_team/abductor_team/proc/add_objective(datum/objective/O)
+ O.team = src
+ O.update_explanation_text()
+ objectives += O
+
/datum/game_mode
- var/abductor_teams = 0
var/list/datum/mind/abductors = list()
var/list/datum/mind/abductees = list()
@@ -12,12 +24,8 @@
required_players = 15
maximum_players = 50
var/max_teams = 4
- abductor_teams = 1
- var/list/datum/mind/scientists = list()
- var/list/datum/mind/agents = list()
- var/list/datum/objective/team_objectives = list()
- var/list/team_names = list()
- var/finished = 0
+ var/list/datum/objective_team/abductor_team/abductor_teams = list()
+ var/finished = FALSE
/datum/game_mode/abduction/announce()
to_chat(world, "The current game mode is - Abduction!")
@@ -26,163 +34,78 @@
to_chat(world, "Crew - don't get abducted and stop the abductors.")
/datum/game_mode/abduction/pre_setup()
- abductor_teams = max(1, min(max_teams,round(num_players()/config.abductor_scaling_coeff)))
- var/possible_teams = max(1,round(antag_candidates.len / 2))
- abductor_teams = min(abductor_teams,possible_teams)
+ var/num_teams = max(1, min(max_teams, round(num_players() / config.abductor_scaling_coeff)))
+ var/possible_teams = max(1, round(antag_candidates.len / 2))
+ num_teams = min(num_teams, possible_teams)
- abductors.len = 2*abductor_teams
- scientists.len = abductor_teams
- agents.len = abductor_teams
- team_objectives.len = abductor_teams
- team_names.len = abductor_teams
+ for(var/i = 1 to num_teams)
+ if(!make_abductor_team())
+ return FALSE
+ return TRUE
- for(var/i=1,i<=abductor_teams,i++)
- if(!make_abductor_team(i))
- return 0
+/datum/game_mode/abduction/proc/make_abductor_team(datum/mind/agent, datum/mind/scientist)
+ var/team_number = abductor_teams.len+1
- return 1
+ var/datum/objective_team/abductor_team/team = new
+ team.team_number = team_number
+ team.name = "Mothership [pick(GLOB.possible_changeling_IDs)]" //TODO Ensure unique and actual alieny names
+ team.add_objective(new/datum/objective/experiment)
-/datum/game_mode/abduction/proc/make_abductor_team(team_number,preset_agent=null,preset_scientist=null)
- //Team Name
- team_names[team_number] = "Mothership [pick(GLOB.possible_changeling_IDs)]" //TODO Ensure unique and actual alieny names
- //Team Objective
- var/datum/objective/experiment/team_objective = new
- team_objective.team = team_number
- team_objectives[team_number] = team_objective
- //Team Members
+ if(antag_candidates.len < (!agent + !scientist))
+ return
- if(!preset_agent || !preset_scientist)
- if(antag_candidates.len <=2)
- return 0
-
- var/datum/mind/scientist
- var/datum/mind/agent
-
- if(!preset_scientist)
+ if(!scientist)
scientist = pick(antag_candidates)
- antag_candidates -= scientist
- else
- scientist = preset_scientist
+ antag_candidates -= scientist
+ team.members |= scientist
+ scientist.assigned_role = "Abductor Scientist"
+ log_game("[scientist.key] (ckey) has been selected as [team.name] abductor scientist.")
- if(!preset_agent)
+ if(!agent)
agent = pick(antag_candidates)
- antag_candidates -= agent
- else
- agent = preset_agent
+ antag_candidates -= agent
+ team.members |= agent
+ agent.assigned_role = "Abductor Agent"
+ log_game("[agent.key] (ckey) has been selected as [team.name] abductor agent.")
-
- scientist.assigned_role = "abductor scientist"
- scientist.special_role = "abductor scientist"
- log_game("[scientist.key] (ckey) has been selected as an abductor team [team_number] scientist.")
-
- agent.assigned_role = "abductor agent"
- agent.special_role = "abductor agent"
- log_game("[agent.key] (ckey) has been selected as an abductor team [team_number] agent.")
-
- abductors |= agent
- abductors |= scientist
- scientists[team_number] = scientist
- agents[team_number] = agent
- return 1
+ abductor_teams += team
+ return team
/datum/game_mode/abduction/post_setup()
- for(var/team_number=1,team_number<=abductor_teams,team_number++)
- post_setup_team(team_number)
+ for(var/datum/objective_team/abductor_team/team in abductor_teams)
+ post_setup_team(team)
return ..()
//Used for create antag buttons
-/datum/game_mode/abduction/proc/post_setup_team(team_number)
- var/list/obj/effect/landmark/abductor/agent_landmarks = list()
- var/list/obj/effect/landmark/abductor/scientist_landmarks = list()
- agent_landmarks.len = max_teams
- scientist_landmarks.len = max_teams
- for(var/obj/effect/landmark/abductor/A in GLOB.landmarks_list)
- if(istype(A, /obj/effect/landmark/abductor/agent))
- agent_landmarks[text2num(A.team)] = A
- else if(istype(A, /obj/effect/landmark/abductor/scientist))
- scientist_landmarks[text2num(A.team)] = A
-
- var/team_name = team_names[team_number]
-
- var/datum/mind/agent
- var/obj/effect/landmark/L
- var/datum/mind/scientist
- var/mob/living/carbon/human/H
- var/datum/species/abductor/S
-
- agent = agents[team_number]
- H = agent.current
- L = agent_landmarks[team_number]
- H.forceMove(L.loc)
- H.set_species(/datum/species/abductor)
- S = H.dna.species
- S.team = team_number
- H.real_name = team_name + " Agent"
- H.equipOutfit(/datum/outfit/abductor/agent)
- greet_agent(agent,team_number)
-
-
- scientist = scientists[team_number]
- H = scientist.current
- L = scientist_landmarks[team_number]
- H.forceMove(L.loc)
- H.set_species(/datum/species/abductor)
- S = H.dna.species
- S.scientist = TRUE
- S.team = team_number
- H.real_name = team_name + " Scientist"
- H.equipOutfit(/datum/outfit/abductor/scientist)
- greet_scientist(scientist,team_number)
-
-
-
-/datum/game_mode/abduction/proc/greet_agent(datum/mind/abductor,team_number)
- abductor.objectives += team_objectives[team_number]
- var/team_name = team_names[team_number]
-
- to_chat(abductor.current, "You are an agent of [team_name]!")
- to_chat(abductor.current, "With the help of your teammate, kidnap and experiment on station crew members!")
- to_chat(abductor.current, "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve.")
-
- abductor.announce_objectives()
-
-/datum/game_mode/abduction/proc/greet_scientist(datum/mind/abductor,team_number)
- abductor.objectives += team_objectives[team_number]
- var/team_name = team_names[team_number]
-
- to_chat(abductor.current, "You are a scientist of [team_name]!")
- to_chat(abductor.current, "With the help of your teammate, kidnap and experiment on station crew members!")
- to_chat(abductor.current, "Use your tool and ship consoles to support the agent and retrieve human specimens.")
-
- abductor.announce_objectives()
-
-/datum/game_mode/abduction/proc/get_team_console(team_number)
- for(var/obj/machinery/abductor/console/C in GLOB.machines)
- if(C.team == team_number)
- return C
+/datum/game_mode/abduction/proc/post_setup_team(datum/objective_team/abductor_team/team)
+ for(var/datum/mind/M in team.members)
+ if(M.assigned_role == "Abductor Scientist")
+ M.add_antag_datum(ANTAG_DATUM_ABDUCTOR_SCIENTIST, team)
+ else
+ M.add_antag_datum(ANTAG_DATUM_ABDUCTOR_AGENT, team)
/datum/game_mode/abduction/check_finished()
if(!finished)
- for(var/team_number=1,team_number<=abductor_teams,team_number++)
- var/obj/machinery/abductor/console/con = get_team_console(team_number)
- var/datum/objective/objective = team_objectives[team_number]
- if (con.experiment.points >= objective.target_amount)
- SSshuttle.emergency.request(null, set_coefficient = 0.5)
- finished = 1
- return ..()
+ for(var/datum/objective_team/abductor_team/team in abductor_teams)
+ for(var/datum/objective/O in team.objectives)
+ if(O.check_completion())
+ SSshuttle.emergency.request(null, set_coefficient = 0.5)
+ finished = TRUE
+ return ..()
return ..()
/datum/game_mode/abduction/declare_completion()
- for(var/team_number=1,team_number<=abductor_teams,team_number++)
- var/obj/machinery/abductor/console/console = get_team_console(team_number)
- var/datum/objective/objective = team_objectives[team_number]
- var/team_name = team_names[team_number]
- if(console.experiment.points >= objective.target_amount)
- to_chat(world, "[team_name] team fulfilled its mission!")
+ for(var/datum/objective_team/abductor_team/team in abductor_teams)
+ var/won = TRUE
+ for(var/datum/objective/O in team.objectives)
+ if(!O.check_completion())
+ won = FALSE
+ if(won)
+ to_chat(world, "[team.name] team fulfilled its mission!")
else
- to_chat(world, "[team_name] team failed its mission.")
+ to_chat(world, "[team.name] team failed its mission.")
..()
- return 1
+ return TRUE
/datum/game_mode/proc/auto_declare_completion_abduction()
var/text = ""
@@ -200,40 +123,28 @@
text += "
"
to_chat(world, text)
-//Landmarks
-// TODO: Split into separate landmarks for prettier ships
+// LANDMARKS
/obj/effect/landmark/abductor
- var/team = 1
+ var/team_number = 1
/obj/effect/landmark/abductor/agent
/obj/effect/landmark/abductor/scientist
-
// OBJECTIVES
/datum/objective/experiment
target_amount = 6
- var/team
/datum/objective/experiment/New()
explanation_text = "Experiment on [target_amount] humans."
/datum/objective/experiment/check_completion()
- var/ab_team = team
- if(owner)
- if(!owner.current || !ishuman(owner.current))
- return 0
- var/mob/living/carbon/human/H = owner.current
- if(H.dna.species.id != "abductor")
- return 0
- var/datum/species/abductor/S = H.dna.species
- ab_team = S.team
for(var/obj/machinery/abductor/experiment/E in GLOB.machines)
- if(E.team == ab_team)
- if(E.points >= target_amount)
- return 1
- else
- return 0
- return 0
+ if(!istype(team, /datum/objective_team/abductor_team))
+ return FALSE
+ var/datum/objective_team/abductor_team/T = team
+ if(E.team_number == T.team_number)
+ return E.points >= target_amount
+ return FALSE
/datum/game_mode/proc/update_abductor_icons_added(datum/mind/alien_mind)
var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR]
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index c55b4db407..8c6bf1a8aa 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -532,7 +532,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
flags_2 = BANG_PROTECT_2
/obj/item/device/radio/headset/abductor/Initialize(mapload)
- ..()
+ . = ..()
make_syndie()
/obj/item/device/radio/headset/abductor/attackby(obj/item/W, mob/user, params)
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm b/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm
index aa97d1e2d8..b24bef0433 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm
@@ -5,20 +5,14 @@
back = /obj/item/storage/backpack
ears = /obj/item/device/radio/headset/abductor
-/datum/outfit/abductor/proc/get_team_console(team_number)
- for(var/obj/machinery/abductor/console/C in GLOB.machines)
- if(C.team == team_number)
- return C
-
/datum/outfit/abductor/proc/link_to_console(mob/living/carbon/human/H, team_number)
- if(!team_number && isabductor(H))
- var/datum/species/abductor/S = H.dna.species
- team_number = S.team
-
+ var/datum/antagonist/abductor/A = H.mind.has_antag_datum(ANTAG_DATUM_ABDUCTOR)
+ if(!team_number && A)
+ team_number = A.team.team_number
if(!team_number)
team_number = 1
- var/obj/machinery/abductor/console/console = get_team_console(team_number)
+ var/obj/machinery/abductor/console/console = get_abductor_console(team_number)
if(console)
var/obj/item/clothing/suit/armor/abductor/vest/V = locate() in H
if(V)
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm
index 97893d6d2e..eb4e4f8211 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm
@@ -1,6 +1,6 @@
/obj/machinery/computer/camera_advanced/abductor
name = "Human Observation Console"
- var/team = 0
+ var/team_number = 0
networks = list("SS13","Abductor")
var/datum/action/innate/teleport_in/tele_in_action = new
var/datum/action/innate/teleport_out/tele_out_action = new
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm
index f3deebc6b7..d44ff57c96 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm
@@ -1,8 +1,13 @@
+/proc/get_abductor_console(team_number)
+ for(var/obj/machinery/abductor/console/C in GLOB.machines)
+ if(C.team_number == team_number)
+ return C
+
//Common
/obj/machinery/abductor
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
- var/team = 0
+ var/team_number = 0
//Console
@@ -139,21 +144,21 @@
return INITIALIZE_HINT_LATELOAD
/obj/machinery/abductor/console/LateInitialize()
- if(!team)
+ if(!team_number)
return
for(var/obj/machinery/abductor/pad/p in GLOB.machines)
- if(p.team == team)
+ if(p.team_number == team_number)
pad = p
break
for(var/obj/machinery/abductor/experiment/e in GLOB.machines)
- if(e.team == team)
+ if(e.team_number == team_number)
experiment = e
e.console = src
for(var/obj/machinery/computer/camera_advanced/abductor/c in GLOB.machines)
- if(c.team == team)
+ if(c.team_number == team_number)
camera = c
c.console = src
diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm
index 182b7e2756..0a7427b610 100644
--- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm
+++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm
@@ -13,7 +13,7 @@
var/flash = " - || - "
var/obj/machinery/abductor/console/console
var/message_cooldown = 0
- var/breakout_time = 0.75
+ var/breakout_time = 450
/obj/machinery/abductor/experiment/MouseDrop_T(mob/target, mob/user)
if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target))
@@ -50,9 +50,9 @@
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
user.visible_message("You see [user] kicking against the door of [src]!", \
- "You lean on the back of [src] and start pushing the door open... (this will take about [(breakout_time<1) ? "[breakout_time*60] seconds" : "[breakout_time] minute\s"].)", \
+ "You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \
"You hear a metallic creaking from [src].")
- if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds
+ if(do_after(user,(breakout_time), target = src))
if(!user || user.stat != CONSCIOUS || user.loc != src || state_open)
return
user.visible_message("[user] successfully broke out of [src]!", \
diff --git a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm
index bcb2218fe6..888a10669e 100644
--- a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm
+++ b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm
@@ -33,7 +33,7 @@
message_admins("No valid spawn locations found, aborting...")
return MAP_ERROR
- var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter((pick(spawn_locs)))
+ var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter((pick(spawn_locs)))
var/mob/living/simple_animal/slaughter/S = new /mob/living/simple_animal/slaughter/(holder)
S.holder = holder
player_mind.transfer_to(S)
diff --git a/code/game/gamemodes/nuclear/nuclear.dm.rej b/code/game/gamemodes/nuclear/nuclear.dm.rej
deleted file mode 100644
index 19648547c7..0000000000
--- a/code/game/gamemodes/nuclear/nuclear.dm.rej
+++ /dev/null
@@ -1,10 +0,0 @@
-diff a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm (rejected hunks)
-@@ -325,7 +325,7 @@
- gloves = /obj/item/clothing/gloves/combat
- back = /obj/item/weapon/storage/backpack
- ears = /obj/item/device/radio/headset/syndicate/alt
-- l_pocket = /obj/item/weapon/pinpointer/syndicate
-+ l_pocket = /obj/item/weapon/pinpointer/nuke/syndicate
- id = /obj/item/weapon/card/id/syndicate
- belt = /obj/item/weapon/gun/ballistic/automatic/pistol
- backpack_contents = list(/obj/item/weapon/storage/box/syndie=1)
diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/game/gamemodes/nuclear/nuclear_challenge.dm
index 7b2a20a297..f51b9ac914 100644
--- a/code/game/gamemodes/nuclear/nuclear_challenge.dm
+++ b/code/game/gamemodes/nuclear/nuclear_challenge.dm
@@ -19,7 +19,7 @@
return
declaring_war = TRUE
- var/are_you_sure = alert(user, "Consult your team carefully before you declare war on [station_name()]]. Are you sure you want to alert the enemy crew? You have [-round((world.time-SSticker.round_start_time - CHALLENGE_TIME_LIMIT)/10)] seconds to decide", "Declare war?", "Yes", "No")
+ var/are_you_sure = alert(user, "Consult your team carefully before you declare war on [station_name()]]. Are you sure you want to alert the enemy crew? You have [DisplayTimeText(world.time-SSticker.round_start_time - CHALLENGE_TIME_LIMIT)] to decide", "Declare war?", "Yes", "No")
declaring_war = FALSE
if(!check_allowed(user))
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm.rej b/code/game/gamemodes/nuclear/nuclearbomb.dm.rej
deleted file mode 100644
index 6a35e91cde..0000000000
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm.rej
+++ /dev/null
@@ -1,33 +0,0 @@
-diff a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm (rejected hunks)
-@@ -362,9 +362,9 @@
- if(safety)
- if(timing)
- set_security_level(previous_level)
-- for(var/obj/item/weapon/pinpointer/syndicate/S in GLOB.pinpointer_list)
-+ for(var/obj/item/weapon/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list)
- S.switch_mode_to(initial(S.mode))
-- S.nuke_warning = FALSE
-+ S.alert = FALSE
- timing = FALSE
- bomb_set = TRUE
- detonation_timer = null
-@@ -381,16 +381,16 @@
- bomb_set = TRUE
- set_security_level("delta")
- detonation_timer = world.time + (timer_set * 10)
-- for(var/obj/item/weapon/pinpointer/syndicate/S in GLOB.pinpointer_list)
-+ for(var/obj/item/weapon/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list)
- S.switch_mode_to(TRACK_INFILTRATOR)
- countdown.start()
- else
- bomb_set = FALSE
- detonation_timer = null
- set_security_level(previous_level)
-- for(var/obj/item/weapon/pinpointer/syndicate/S in GLOB.pinpointer_list)
-+ for(var/obj/item/weapon/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list)
- S.switch_mode_to(initial(S.mode))
-- S.nuke_warning = FALSE
-+ S.alert = FALSE
- countdown.stop()
- update_icon()
-
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm.rej b/code/game/gamemodes/nuclear/pinpointer.dm.rej
deleted file mode 100644
index 79d652af9b..0000000000
--- a/code/game/gamemodes/nuclear/pinpointer.dm.rej
+++ /dev/null
@@ -1,21 +0,0 @@
-diff a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm (rejected hunks)
-@@ -30,7 +30,6 @@
- var/mob/living/L = loc
- to_chat(L, "Your [name] vibrates and lets out a tinny alarm. Uh oh.")
-
--
- /obj/item/pinpointer/nuke/scan_for_target()
- target = null
- switch(mode)
-@@ -58,10 +57,10 @@
- mode = new_mode
- scan_for_target()
-
--
- /obj/item/pinpointer/nuke/syndicate // Syndicate pinpointers automatically point towards the infiltrator once the nuke is active.
- name = "syndicate pinpointer"
- desc = "A handheld tracking device that locks onto certain signals. It's configured to switch tracking modes once it detects the activation signal of a nuclear device."
-+ icon_state = "pinpointer_syndicate"
-
- /obj/item/pinpointer/syndicate_cyborg // Cyborg pinpointers just look for a random operative.
- name = "cyborg syndicate pinpointer"
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index baf0f69ab9..75ed90d712 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -1,6 +1,8 @@
/datum/objective
- var/datum/mind/owner = null //Who owns the objective.
+ var/datum/mind/owner //The primary owner of the objective. !!SOMEWHAT DEPRECATED!! Prefer using 'team' for new code.
+ var/datum/objective_team/team //An alternative to 'owner': a team. Use this when writing new code.
var/explanation_text = "Nothing" //What that person is supposed to do.
+ var/team_explanation_text //For when there are multiple owners.
var/datum/mind/target = null //If they are focused on a particular person.
var/target_amount = 0 //If they are focused on a particular number. Steal objectives have their own counter.
var/completed = 0 //currently only used for custom objectives.
@@ -10,19 +12,48 @@
if(text)
explanation_text = text
+/datum/objective/proc/get_owners() // Combine owner and team into a single list.
+ . = (team && team.members) ? team.members.Copy() : list()
+ if(owner)
+ . += owner
+
+/datum/objective/proc/considered_alive(var/datum/mind/M)
+ if(M && M.current)
+ var/mob/living/carbon/human/H
+ if(ishuman(M.current))
+ H = M.current
+ return M.current.stat != DEAD && !issilicon(M.current) && !isbrain(M.current) && (!H || H.dna.species.id != "memezombies")
+ return FALSE
+
+/datum/objective/proc/considered_escaped(datum/mind/M)
+ if(!considered_alive(M))
+ return FALSE
+ if(SSticker.force_ending || SSticker.mode.station_was_nuked) // Just let them win.
+ return TRUE
+ if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
+ return FALSE
+ var/turf/location = get_turf(M.current)
+ if(!location || istype(location, /turf/open/floor/plasteel/shuttle/red) || istype(location, /turf/open/floor/mineral/plastitanium/brig)) // Fails if they are in the shuttle brig
+ return FALSE
+ return location.onCentCom() || location.onSyndieBase()
+
+/datum/objective/proc/considered_afk(datum/mind/M)
+ return !M || !M.current || !M.current.client || M.current.client.is_afk()
+
/datum/objective/proc/check_completion()
return completed
/datum/objective/proc/is_unique_objective(possible_target)
- for(var/datum/objective/O in owner.objectives)
- if(istype(O, type) && O.get_target() == possible_target)
- return 0
- return 1
+ var/list/datum/mind/owners = get_owners()
+ for(var/datum/mind/M in owners)
+ for(var/datum/objective/O in M.objectives)
+ if(istype(O, type) && O.get_target() == possible_target)
+ return FALSE
+ return TRUE
/datum/objective/proc/get_target()
return target
-
/datum/objective/proc/get_crewmember_minds()
. = list()
for(var/V in GLOB.data_core.locked)
@@ -32,9 +63,10 @@
. += M.mind
/datum/objective/proc/find_target()
+ var/list/datum/mind/owners = get_owners()
var/list/possible_targets = list()
for(var/datum/mind/possible_target in get_crewmember_minds())
- if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && is_unique_objective(possible_target))
+ if(!(possible_target in owners) && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && is_unique_objective(possible_target))
possible_targets += possible_target
if(possible_targets.len > 0)
target = pick(possible_targets)
@@ -42,8 +74,9 @@
return target
/datum/objective/proc/find_target_by_role(role, role_type=0, invert=0)//Option sets either to check assigned role or special role. Default to assigned., invert inverts the check, eg: "Don't choose a Ling"
+ var/list/datum/mind/owners = get_owners()
for(var/datum/mind/possible_target in get_crewmember_minds())
- if((possible_target != owner) && ishuman(possible_target.current))
+ if(!(possible_target in owners) && ishuman(possible_target.current))
var/is_role = 0
if(role_type)
if(possible_target.special_role == role)
@@ -64,13 +97,15 @@
update_explanation_text()
/datum/objective/proc/update_explanation_text()
- //Default does nothing, override where needed
+ if(team_explanation_text && LAZYLEN(get_owners()) > 1)
+ explanation_text = team_explanation_text
/datum/objective/proc/give_special_equipment(special_equipment)
- if(owner && owner.current)
- if(ishuman(owner.current))
- var/mob/living/carbon/human/H = owner.current
- var/list/slots = list ("backpack" = slot_in_backpack)
+ var/datum/mind/receiver = pick(get_owners())
+ if(receiver && receiver.current)
+ if(ishuman(receiver.current))
+ var/mob/living/carbon/human/H = receiver.current
+ var/list/slots = list("backpack" = slot_in_backpack)
for(var/eq_path in special_equipment)
var/obj/O = new eq_path
H.equip_in_one_of_slots(O, slots)
@@ -86,14 +121,7 @@
return target
/datum/objective/assassinate/check_completion()
- if(target && target.current)
- var/mob/living/carbon/human/H
- if(ishuman(target.current))
- H = target.current
- if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey || (H && H.dna.species.id == "memezombies")) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
- return 1
- return 0
- return 1
+ return !target || !considered_alive(target)
/datum/objective/assassinate/update_explanation_text()
..()
@@ -110,7 +138,6 @@
if(target && !target.current)
explanation_text = "Assassinate [target.name], who was obliterated"
-
/datum/objective/mutiny
var/target_role_type=0
martyr_compatible = 1
@@ -122,14 +149,10 @@
return target
/datum/objective/mutiny/check_completion()
- if(target && target.current)
- if(target.current.stat == DEAD || !ishuman(target.current) || !target.current.ckey)
- return 1
- var/turf/T = get_turf(target.current)
- if(T && (!(T.z in GLOB.station_z_levels)) || (target.current.client && target.current.client.is_afk())) //If they leave the station or go afk they count as dead for this
- return 2
- return 0
- return 1
+ if(!target || !considered_alive(target) || considered_afk(target))
+ return TRUE
+ var/turf/T = get_turf(target.current)
+ return T && !(T.z in GLOB.station_z_levels)
/datum/objective/mutiny/update_explanation_text()
..()
@@ -138,8 +161,6 @@
else
explanation_text = "Free Objective"
-
-
/datum/objective/maroon
var/target_role_type=0
martyr_compatible = 1
@@ -151,15 +172,7 @@
return target
/datum/objective/maroon/check_completion()
- if(target && target.current)
- var/mob/living/carbon/human/H
- if(ishuman(target.current))
- H = target.current
- if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey || (H && H.dna.species.id == "memezombies")) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
- return 1
- if(target.current.onCentCom() || target.current.onSyndieBase())
- return 0
- return 1
+ return !target || !considered_alive(target) || (!target.current.onCentCom() && !target.current.onSyndieBase())
/datum/objective/maroon/update_explanation_text()
if(target && target.current)
@@ -167,9 +180,7 @@
else
explanation_text = "Free Objective"
-
-
-/datum/objective/debrain//I want braaaainssss
+/datum/objective/debrain
var/target_role_type=0
/datum/objective/debrain/find_target_by_role(role, role_type=0, invert=0)
@@ -180,17 +191,20 @@
/datum/objective/debrain/check_completion()
if(!target)//If it's a free objective.
- return 1
- if( !owner.current || owner.current.stat==DEAD )//If you're otherwise dead.
- return 0
- if( !target.current || !isbrain(target.current) )
- return 0
+ return TRUE
+
+ if(!target.current || !isbrain(target.current))
+ return FALSE
+
var/atom/A = target.current
- while(A.loc) //check to see if the brainmob is on our person
+ var/list/datum/mind/owners = get_owners()
+
+ while(A.loc) // Check to see if the brainmob is on our person
A = A.loc
- if(A == owner.current)
- return 1
- return 0
+ for(var/datum/mind/M in owners)
+ if(M.current && M.current.stat != DEAD && A == M.current)
+ return TRUE
+ return FALSE
/datum/objective/debrain/update_explanation_text()
..()
@@ -199,8 +213,6 @@
else
explanation_text = "Free Objective"
-
-
/datum/objective/protect//The opposite of killing a dude.
var/target_role_type=0
martyr_compatible = 1
@@ -212,13 +224,7 @@
return target
/datum/objective/protect/check_completion()
- if(!target) //If it's a free objective.
- return 1
- if(target.current)
- if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current))
- return 0
- return 1
- return 0
+ return !target || considered_alive(target)
/datum/objective/protect/update_explanation_text()
..()
@@ -227,76 +233,32 @@
else
explanation_text = "Free Objective"
-
-
/datum/objective/hijack
explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive and out of custody."
+ team_explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive and out of custody. Leave no team member behind."
martyr_compatible = 0 //Technically you won't get both anyway.
-/datum/objective/hijack/check_completion()
- if(!owner.current || owner.current.stat)
- return 0
+/datum/objective/hijack/check_completion() // Requires all owners to escape.
if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
- return 0
- if(issilicon(owner.current))
- return 0
- if(!SSshuttle.emergency.shuttle_areas[get_area(owner.current)])
- return 0
+ return FALSE
+ var/list/datum/mind/owners = get_owners()
+ for(var/datum/mind/M in owners)
+ if(!considered_alive(M) || !SSshuttle.emergency.shuttle_areas[get_area(M.current)])
+ return FALSE
return SSshuttle.emergency.is_hijacked()
-
-/datum/objective/hijackclone
- explanation_text = "Hijack the emergency shuttle by ensuring only you (or your copies) escape."
- martyr_compatible = 0
-
-/datum/objective/hijackclone/check_completion()
- if(!owner.current)
- return FALSE
- if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
- return FALSE
-
- var/in_shuttle = FALSE
- for(var/mob/living/player in GLOB.player_list) //Make sure nobody else is onboard
- if(SSshuttle.emergency.shuttle_areas[get_area(player)])
- if(player.mind && player.mind != owner)
- if(player.stat != DEAD)
- if(issilicon(player)) //Borgs are technically dead anyways
- continue
- if(isanimal(player)) //animals don't count
- continue
- if(isbrain(player)) //also technically dead
- continue
- var/location = get_turf(player.mind.current)
- if(istype(location, /turf/open/floor/plasteel/shuttle/red))
- continue
- if(istype(location, /turf/open/floor/mineral/plastitanium/brig))
- continue
- if(player.real_name != owner.current.real_name)
- return FALSE
- else
- in_shuttle = TRUE
- return in_shuttle
-
/datum/objective/block
explanation_text = "Do not allow any organic lifeforms to escape on the shuttle alive."
martyr_compatible = 1
/datum/objective/block/check_completion()
- if(!issilicon(owner.current))
- return 0
if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
- return 1
-
+ return TRUE
for(var/mob/living/player in GLOB.player_list)
- if(issilicon(player))
- continue
- if(player.mind)
- if(player.stat != DEAD)
- if(get_area(player) in SSshuttle.emergency.shuttle_areas)
- return 0
-
- return 1
-
+ if(player.mind && player.stat != DEAD && !issilicon(player))
+ if(get_area(player) in SSshuttle.emergency.shuttle_areas)
+ return FALSE
+ return TRUE
/datum/objective/purge
explanation_text = "Ensure no mutant humanoid species are present aboard the escape shuttle."
@@ -304,63 +266,41 @@
/datum/objective/purge/check_completion()
if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
- return 1
-
+ return TRUE
for(var/mob/living/player in GLOB.player_list)
if(get_area(player) in SSshuttle.emergency.shuttle_areas && player.mind && player.stat != DEAD && ishuman(player))
var/mob/living/carbon/human/H = player
if(H.dna.species.id != "human")
- return 0
-
- return 1
-
+ return FALSE
+ return TRUE
/datum/objective/robot_army
explanation_text = "Have at least eight active cyborgs synced to you."
martyr_compatible = 0
/datum/objective/robot_army/check_completion()
- if(!isAI(owner.current))
- return 0
- var/mob/living/silicon/ai/A = owner.current
-
var/counter = 0
-
- for(var/mob/living/silicon/robot/R in A.connected_robots)
- if(R.stat != DEAD)
- counter++
-
- if(counter < 8)
- return 0
- return 1
+ var/list/datum/mind/owners = get_owners()
+ for(var/datum/mind/M in owners)
+ if(!M.current || !isAI(M.current))
+ continue
+ var/mob/living/silicon/ai/A = M.current
+ for(var/mob/living/silicon/robot/R in A.connected_robots)
+ if(R.stat != DEAD)
+ counter++
+ return counter >= 8
/datum/objective/escape
explanation_text = "Escape on the shuttle or an escape pod alive and without being in custody."
+ team_explanation_text = "Have all members of your team escape on a shuttle or pod alive, without being in custody."
/datum/objective/escape/check_completion()
- if(issilicon(owner.current))
- return 0
- if(isbrain(owner.current))
- return 0
- if(!owner.current || owner.current.stat == DEAD)
- return 0
- if(SSticker.force_ending) //This one isn't their fault, so lets just assume good faith
- return 1
- if(SSticker.mode.station_was_nuked) //If they escaped the blast somehow, let them win
- return 1
- if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
- return 0
- var/turf/location = get_turf(owner.current)
- if(!location)
- return 0
-
- if(istype(location, /turf/open/floor/plasteel/shuttle/red) || istype(location, /turf/open/floor/mineral/plastitanium/brig)) // Fails traitors if they are in the shuttle brig -- Polymorph
- return 0
-
- if(location.onCentCom() || location.onSyndieBase())
- return 1
-
- return 0
+ // Require all owners escape safely.
+ var/list/datum/mind/owners = get_owners()
+ for(var/datum/mind/M in owners)
+ if(!considered_escaped(M))
+ return FALSE
+ return TRUE
/datum/objective/escape/escape_with_identity
var/target_real_name // Has to be stored because the target's real_name can change over the course of the round
@@ -387,39 +327,44 @@
explanation_text = "Free Objective."
/datum/objective/escape/escape_with_identity/check_completion()
- if(!target_real_name)
- return 1
- if(!ishuman(owner.current))
- return 0
- var/mob/living/carbon/human/H = owner.current
- if(..())
- if(H.dna.real_name == target_real_name)
- if(H.get_id_name()== target_real_name || target_missing_id)
- return 1
- return 0
-
+ if(!target || !target_real_name)
+ return TRUE
+ var/list/datum/mind/owners = get_owners()
+ for(var/datum/mind/M in owners)
+ if(!ishuman(M.current) || !considered_escaped(M))
+ continue
+ var/mob/living/carbon/human/H = M.current
+ if(H.dna.real_name == target_real_name && (H.get_id_name() == target_real_name || target_missing_id))
+ return TRUE
+ return FALSE
/datum/objective/survive
explanation_text = "Stay alive until the end."
/datum/objective/survive/check_completion()
- if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
- return 0 //Brains no longer win survive objectives. --NEO
- if(!is_special_character(owner.current)) //This fails borg'd traitors
- return 0
- return 1
+ var/list/datum/mind/owners = get_owners()
+ for(var/datum/mind/M in owners)
+ if(!considered_alive(M))
+ return FALSE
+ return TRUE
+//Like survive, but works for silicons and zombies and such.
+/datum/objective/survive/exist/considered_alive(var/datum/mind/M)
+ if(M && M.current)
+ if(isliving(M.current))
+ var/mob/living/L = M.current
+ return L.stat != DEAD
+ return FALSE
/datum/objective/martyr
explanation_text = "Die a glorious death."
/datum/objective/martyr/check_completion()
- if(!owner.current) //Gibbed, etc.
- return 1
- if(owner.current && owner.current.stat == DEAD) //You're dead! Yay!
- return 1
- return 0
-
+ var/list/datum/mind/owners = get_owners()
+ for(var/datum/mind/M in owners)
+ if(considered_alive(M))
+ return FALSE
+ return TRUE
/datum/objective/nuclear
explanation_text = "Destroy the station with a nuclear device."
@@ -427,8 +372,8 @@
/datum/objective/nuclear/check_completion()
if(SSticker && SSticker.mode && SSticker.mode.station_was_nuked)
- return 1
- return 0
+ return TRUE
+ return FALSE
GLOBAL_LIST_EMPTY(possible_items)
/datum/objective/steal
@@ -446,16 +391,21 @@ GLOBAL_LIST_EMPTY(possible_items)
new I
/datum/objective/steal/find_target()
+ var/list/datum/mind/owners = get_owners()
var/approved_targets = list()
- for(var/datum/objective_item/possible_item in GLOB.possible_items)
- if(is_unique_objective(possible_item.targetitem) && !(owner.current.mind.assigned_role in possible_item.excludefromjob))
+ check_items:
+ for(var/datum/objective_item/possible_item in GLOB.possible_items)
+ if(!is_unique_objective(possible_item.targetitem))
+ continue
+ for(var/datum/mind/M in owners)
+ if(M.current.mind.assigned_role in possible_item.excludefromjob)
+ continue check_items
approved_targets += possible_item
return set_target(safepick(approved_targets))
/datum/objective/steal/proc/set_target(datum/objective_item/item)
if(item)
targetinfo = item
-
steal_target = targetinfo.targetitem
explanation_text = "Steal [targetinfo.name]"
give_special_equipment(targetinfo.special_equipment)
@@ -483,23 +433,26 @@ GLOBAL_LIST_EMPTY(possible_items)
return steal_target
/datum/objective/steal/check_completion()
+ var/list/datum/mind/owners = get_owners()
if(!steal_target)
- return 1
- if(!isliving(owner.current))
- return 0
- var/list/all_items = owner.current.GetAllContents() //this should get things in cheesewheels, books, etc.
+ return TRUE
+ for(var/datum/mind/M in owners)
+ if(!isliving(M.current))
+ continue
- for(var/obj/I in all_items) //Check for items
- if(istype(I, steal_target))
- if(!targetinfo) //If there's no targetinfo, then that means it was a custom objective. At this point, we know you have the item, so return 1.
- return 1
- else if(targetinfo.check_special_completion(I))//Returns 1 by default. Items with special checks will return 1 if the conditions are fulfilled.
- return 1
+ var/list/all_items = M.current.GetAllContents() //this should get things in cheesewheels, books, etc.
- if(targetinfo && I.type in targetinfo.altitems) //Ok, so you don't have the item. Do you have an alternative, at least?
- if(targetinfo.check_special_completion(I))//Yeah, we do! Don't return 0 if we don't though - then you could fail if you had 1 item that didn't pass and got checked first!
- return 1
- return 0
+ for(var/obj/I in all_items) //Check for items
+ if(istype(I, steal_target))
+ if(!targetinfo) //If there's no targetinfo, then that means it was a custom objective. At this point, we know you have the item, so return 1.
+ return TRUE
+ else if(targetinfo.check_special_completion(I))//Returns 1 by default. Items with special checks will return 1 if the conditions are fulfilled.
+ return TRUE
+
+ if(targetinfo && I.type in targetinfo.altitems) //Ok, so you don't have the item. Do you have an alternative, at least?
+ if(targetinfo.check_special_completion(I))//Yeah, we do! Don't return 0 if we don't though - then you could fail if you had 1 item that didn't pass and got checked first!
+ return TRUE
+ return FALSE
GLOBAL_LIST_EMPTY(possible_items_special)
@@ -553,31 +506,22 @@ GLOBAL_LIST_EMPTY(possible_items_special)
explanation_text = "Download [target_amount] research level\s."
return target_amount
-/datum/objective/download/check_completion()//NINJACODE
- if(!ishuman(owner.current))
- return 0
-
- var/mob/living/carbon/human/H = owner.current
- if(!H || H.stat == DEAD)
- return 0
-
- if(!istype(H.wear_suit, /obj/item/clothing/suit/space/space_ninja))
- return 0
-
- var/obj/item/clothing/suit/space/space_ninja/SN = H.wear_suit
- if(!SN.s_initialized)
- return 0
-
- var/current_amount
- if(!SN.stored_research.len)
- return 0
- else
+/datum/objective/download/check_completion()//NINJACODE.
+ var/current_amount = 0
+ var/list/datum/mind/owners = get_owners()
+ for(var/datum/mind/M in owners)
+ if(!ishuman(owner.current))
+ continue
+ var/mob/living/carbon/human/H = owner.current
+ if(!H || H.stat == DEAD || !istype(H.wear_suit, /obj/item/clothing/suit/space/space_ninja))
+ continue
+ var/obj/item/clothing/suit/space/space_ninja/SN = H.wear_suit
+ if(!SN.s_initialized)
+ continue
for(var/datum/tech/current_data in SN.stored_research)
if(current_data.level)
current_amount += (current_data.level-1)
- if(current_amount= target_amount
@@ -614,10 +558,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
captured_amount+=1
continue
captured_amount+=2
- if(captured_amount= target_amount
/datum/objective/absorb
@@ -625,13 +566,14 @@ GLOBAL_LIST_EMPTY(possible_items_special)
/datum/objective/absorb/proc/gen_amount_goal(lowbound = 4, highbound = 6)
target_amount = rand (lowbound,highbound)
var/n_p = 1 //autowin
+ var/list/datum/mind/owners = get_owners()
if (SSticker.current_state == GAME_STATE_SETTING_UP)
for(var/mob/dead/new_player/P in GLOB.player_list)
- if(P.client && P.ready == PLAYER_READY_TO_PLAY && P.mind!=owner)
+ if(P.client && P.ready == PLAYER_READY_TO_PLAY && !(P.mind in owners))
n_p ++
else if (SSticker.IsRoundInProgress())
for(var/mob/living/carbon/human/P in GLOB.player_list)
- if(P.client && !(P.mind in SSticker.mode.changelings) && P.mind!=owner)
+ if(P.client && !(P.mind in SSticker.mode.changelings) && !(P.mind in owners))
n_p ++
target_amount = min(target_amount, n_p)
@@ -639,10 +581,13 @@ GLOBAL_LIST_EMPTY(possible_items_special)
return target_amount
/datum/objective/absorb/check_completion()
- if(owner && owner.changeling && owner.changeling.stored_profiles && (owner.changeling.absorbedcount >= target_amount))
- return 1
- else
- return 0
+ var/list/datum/mind/owners = get_owners()
+ var/absorbedcount = 0
+ for(var/datum/mind/M in owners)
+ if(!owner || !owner.changeling || !owner.changeling.stored_profiles)
+ continue
+ absorbedcount += M.changeling.absorbedcount
+ return absorbedcount >= target_amount
@@ -658,10 +603,8 @@ GLOBAL_LIST_EMPTY(possible_items_special)
/datum/objective/destroy/check_completion()
if(target && target.current)
- if(target.current.stat == DEAD || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
- return 1
- return 0
- return 1
+ return target.current.stat == DEAD || target.current.z > 6 || !target.current.ckey //Borgs/brains/AIs count as dead for traitor objectives.
+ return TRUE
/datum/objective/destroy/update_explanation_text()
..()
@@ -690,18 +633,16 @@ GLOBAL_LIST_EMPTY(possible_items_special)
wanted_items = list(/obj/item/spellbook, /obj/item/gun/magic, /obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/scrying, /obj/item/antag_spawner/contract, /obj/item/device/necromantic_stone)
/datum/objective/steal_five_of_type/check_completion()
- if(!isliving(owner.current))
- return 0
+ var/list/datum/mind/owners = get_owners()
var/stolen_count = 0
- var/list/all_items = owner.current.GetAllContents() //this should get things in cheesewheels, books, etc.
- for(var/obj/I in all_items) //Check for wanted items
- if(is_type_in_typecache(I, wanted_items))
- stolen_count++
- if(stolen_count >= 5)
- return 1
- else
- return 0
- return 0
+ for(var/datum/mind/M in owners)
+ if(!isliving(M.current))
+ continue
+ var/list/all_items = M.current.GetAllContents() //this should get things in cheesewheels, books, etc.
+ for(var/obj/I in all_items) //Check for wanted items
+ if(is_type_in_typecache(I, wanted_items))
+ stolen_count++
+ return stolen_count >= 5
////////////////////////////////
diff --git a/code/game/gamemodes/objective_items.dm.rej b/code/game/gamemodes/objective_items.dm.rej
deleted file mode 100644
index 3770d7eea9..0000000000
--- a/code/game/gamemodes/objective_items.dm.rej
+++ /dev/null
@@ -1,10 +0,0 @@
-diff a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm (rejected hunks)
-@@ -158,7 +158,7 @@
- difficulty = 10
-
- //Old ninja objectives.
--/datum/objective_item/special/pinpointer
-+/datum/objective_item/special/pinpointer/nuke
- name = "the captain's pinpointer."
- targetitem = /obj/item/pinpointer
- difficulty = 10
diff --git a/code/game/gamemodes/objective_team.dm b/code/game/gamemodes/objective_team.dm
new file mode 100644
index 0000000000..ba6b2546ca
--- /dev/null
+++ b/code/game/gamemodes/objective_team.dm
@@ -0,0 +1,13 @@
+//A barebones antagonist team.
+/datum/objective_team
+ var/list/datum/mind/members = list()
+ var/name = "team"
+ var/member_name = "member"
+
+/datum/objective_team/New(starting_members)
+ . = ..()
+ if(starting_members)
+ members += starting_members
+
+/datum/objective_team/proc/is_solo()
+ return members.len == 1
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index 43c1b335f4..8384892044 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -281,7 +281,7 @@
//////////////////////////////////////////////////////////////////////////////
//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.
//////////////////////////////////////////////////////////////////////////////
-/datum/game_mode/proc/remove_revolutionary(datum/mind/rev_mind , beingborged)
+/datum/game_mode/proc/remove_revolutionary(datum/mind/rev_mind , beingborged, deconverter)
var/remove_head = 0
if(beingborged && (rev_mind in head_revolutionaries))
head_revolutionaries -= rev_mind
@@ -290,17 +290,16 @@
if((rev_mind in revolutionaries) || remove_head)
revolutionaries -= rev_mind
rev_mind.special_role = null
- rev_mind.current.log_message("Has renounced the revolution!", INDIVIDUAL_ATTACK_LOG)
+ log_attack("[rev_mind.current] (Key: [key_name(rev_mind.current)]) has been deconverted from the revolution by [deconverter] (Key: [key_name(deconverter)])!")
if(beingborged)
- rev_mind.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.",\
- "The frame's firmware detects and deletes your neural reprogramming! You remember nothing[remove_head ? "." : " but the name of the one who flashed you."]")
+ rev_mind.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.", \
+ "The frame's firmware detects and deletes your neural reprogramming! You remember nothing[remove_head ? "." : " but the name of the one who flashed you."]")
message_admins("[ADMIN_LOOKUPFLW(rev_mind.current)] has been borged while being a [remove_head ? "leader" : " member"] of the revolution.")
-
else
+ rev_mind.current.visible_message("[rev_mind.current] looks like they just remembered their real allegiance!", \
+ "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...")
rev_mind.current.Unconscious(100)
- rev_mind.current.visible_message("[rev_mind.current] looks like they just remembered their real allegiance!",\
- "You have been brainwashed! You are no longer a revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...")
update_rev_icons_removed(rev_mind)
/////////////////////////////////////
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index 1b8370068f..77b91a8571 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -54,10 +54,7 @@
log_game("[traitor.key] (ckey) has been selected as a [traitor_name]")
antag_candidates.Remove(traitor)
-
- if(pre_traitors.len < required_enemies)
- return 0
- return 1
+ return pre_traitors.len > 0
/datum/game_mode/traitor/post_setup()
diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm
index 130839a373..aae0261320 100644
--- a/code/game/gamemodes/wizard/soulstone.dm
+++ b/code/game/gamemodes/wizard/soulstone.dm
@@ -119,7 +119,7 @@
////////////////////////////Proc for moving soul in and out off stone//////////////////////////////////////
-/obj/item/device/soulstone/proc/transfer_soul(choice as text, target, mob/user).
+/obj/item/device/soulstone/proc/transfer_soul(choice as text, target, mob/user)
switch(choice)
if("FORCE")
if(!iscarbon(target)) //TODO: Add sacrifice stoning for non-organics, just because you have no body doesnt mean you dont have a soul
@@ -237,6 +237,7 @@
S.name = "Shade of [T.real_name]"
S.real_name = "Shade of [T.real_name]"
S.key = T.key
+ S.language_holder = U.language_holder.copy(S)
if(U)
S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation
if(U && iscultist(U))
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index 4f691e053f..8a4c854d76 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -43,7 +43,7 @@
to_chat(user, "[src] is out of foam and cannot be activated.")
return
if(cooldown_time > world.time)
- to_chat(user, "[src] cannot be activated for another [round((world.time - cooldown_time) * 0.1)] second\s.")
+ to_chat(user, "[src] cannot be activated for [DisplayTimeText(world.time - cooldown_time)].")
return
new /obj/effect/particle_effect/foam(loc)
uses--
diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm
index 69ccb4240a..b5175b215f 100644
--- a/code/game/machinery/airlock_control.dm
+++ b/code/game/machinery/airlock_control.dm
@@ -20,28 +20,28 @@
close(1)
if("unlock")
- locked = FALSE
+ locked = FALSE
update_icon()
if("lock")
- locked = TRUE
+ locked = TRUE
update_icon()
if("secure_open")
- locked = FALSE
+ locked = FALSE
update_icon()
sleep(2)
open(1)
- locked = TRUE
+ locked = TRUE
update_icon()
if("secure_close")
- locked = FALSE
+ locked = FALSE
close(1)
- locked = TRUE
+ locked = TRUE
sleep(2)
update_icon()
@@ -88,7 +88,7 @@
name = "airlock sensor"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
- anchored = TRUE
+ anchored = TRUE
power_channel = ENVIRON
var/id_tag
@@ -97,8 +97,8 @@
var/datum/radio_frequency/radio_connection
- var/on = TRUE
- var/alert = FALSE
+ var/on = TRUE
+ var/alert = FALSE
/obj/machinery/airlock_sensor/update_icon()
@@ -143,9 +143,9 @@
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_AIRLOCK)
/obj/machinery/airlock_sensor/Initialize()
- ..()
+ . = ..()
set_frequency(frequency)
/obj/machinery/airlock_sensor/Destroy()
- SSradio.remove_object(src,frequency)
+ SSradio.remove_object(src,frequency)
return ..()
\ No newline at end of file
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index c185a8f734..9fa53765ed 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -32,8 +32,6 @@
var/selected_category
var/screen = 1
- var/datum/material_container/materials
-
var/list/categories = list(
"Tools",
"Electronics",
@@ -48,15 +46,15 @@
)
/obj/machinery/autolathe/Initialize()
- materials = new /datum/material_container(src, list(MAT_METAL, MAT_GLASS))
+ AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS))
+ . = ..()
+
wires = new /datum/wires/autolathe(src)
files = new /datum/research/autolathe(src)
matching_designs = list()
- return ..()
/obj/machinery/autolathe/Destroy()
QDEL_NULL(wires)
- QDEL_NULL(materials)
return ..()
/obj/machinery/autolathe/interact(mob/user)
@@ -81,6 +79,7 @@
popup.open()
/obj/machinery/autolathe/on_deconstruction()
+ GET_COMPONENT(materials, /datum/component/material_container)
materials.retrieve_all()
/obj/machinery/autolathe/attackby(obj/item/O, mob/user, params)
@@ -123,42 +122,26 @@
busy = FALSE
return 1
- if(O.flags_2 & HOLOGRAM_2)
- return 1
+ return ..()
- var/material_amount = materials.get_item_material_amount(O)
- if(!material_amount)
- to_chat(user, "This object does not contain sufficient amounts of metal or glass to be accepted by the autolathe.")
- return 1
- if(!materials.has_space(material_amount))
- to_chat(user, "The autolathe is full. Please remove metal or glass from the autolathe in order to insert more.")
- return 1
- if(!user.temporarilyRemoveItemFromInventory(O))
- to_chat(user, "\The [O] is stuck to you and cannot be placed into the autolathe.")
- return 1
-
- busy = TRUE
- var/inserted = materials.insert_item(O)
- if(inserted)
- if(istype(O, /obj/item/stack))
- if (O.materials[MAT_METAL])
- flick("autolathe_o",src)//plays metal insertion animation
- if (O.materials[MAT_GLASS])
- flick("autolathe_r",src)//plays glass insertion animation
- to_chat(user, "You insert [inserted] sheet[inserted>1 ? "s" : ""] to the autolathe.")
- use_power(inserted*100)
- if(!QDELETED(O))
- user.put_in_active_hand(O)
+/obj/machinery/mecha_part_fabricator/ComponentActivated(datum/component/C)
+ ..()
+ if(istype(C, /datum/component/material_container))
+ var/datum/component/material_container/M = C
+ if(!M.last_insert_success)
+ return
+ var/lit = M.last_inserted_type
+ if(ispath(lit, /obj/item/ore/bluespace_crystal))
+ use_power(max(500,M.last_amount_inserted/10))
else
- to_chat(user, "You insert a material total of [inserted] to the autolathe.")
- use_power(max(500,inserted/10))
- qdel(O)
- else
- user.put_in_active_hand(O)
-
- busy = FALSE
- updateUsrDialog()
- return 1
+ var/obj/item/stack/S = lit
+ var/list/initmats = initial(S.materials)
+ if (initmats[MAT_METAL])
+ flick("autolathe_o",src)//plays metal insertion animation
+ if (initmats[MAT_GLASS])
+ flick("autolathe_r",src)//plays glass insertion animation
+ use_power(M.last_amount_inserted*100)
+ updateUsrDialog()
/obj/machinery/autolathe/Topic(href, href_list)
if(..())
@@ -193,6 +176,7 @@
var/power = max(2000, (metal_cost+glass_cost)*multiplier/5)
+ GET_COMPONENT(materials, /datum/component/material_container)
if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff))
busy = TRUE
use_power(power)
@@ -246,6 +230,7 @@
var/T = 0
for(var/obj/item/stock_parts/matter_bin/MB in component_parts)
T += MB.rating*75000
+ GET_COMPONENT(materials, /datum/component/material_container)
materials.max_amount = T
T=1.2
for(var/obj/item/stock_parts/manipulator/M in component_parts)
@@ -294,6 +279,7 @@
dat += "[D.name]"
if(ispath(D.build_path, /obj/item/stack))
+ GET_COMPONENT(materials, /datum/component/material_container)
var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY)
if (max_multiplier>10 && !disabled)
dat += " x10"
@@ -325,6 +311,7 @@
dat += "[D.name]"
if(ispath(D.build_path, /obj/item/stack))
+ GET_COMPONENT(materials, /datum/component/material_container)
var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY)
if (max_multiplier>10 && !disabled)
dat += " x10"
@@ -339,6 +326,7 @@
return dat
/obj/machinery/autolathe/proc/materials_printout()
+ GET_COMPONENT(materials, /datum/component/material_container)
var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
"
for(var/mat_id in materials.materials)
var/datum/material/M = materials.materials[mat_id]
@@ -351,6 +339,7 @@
var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff)
+ GET_COMPONENT(materials, /datum/component/material_container)
if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount)))
return 0
if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount)))
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index bc6833f84a..d7832622c5 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -39,6 +39,8 @@
// Upgrades bitflag
var/upgrades = 0
+ var/internal_light = TRUE //Whether it can light up when an AI views it
+
/obj/machinery/camera/Initialize(mapload)
. = ..()
assembly = new(src)
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 2276b5154b..88941c2344 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -218,6 +218,7 @@
if(!is_operational()) //Autoeject if power is lost
if(mob_occupant)
go_out()
+ mob_occupant.apply_vore_prefs()
connected_message("Clone Ejected: Loss of power.")
else if(mob_occupant && (mob_occupant.loc == src))
@@ -226,6 +227,7 @@
SPEAK("The cloning of [mob_occupant.real_name] has been \
aborted due to unrecoverable tissue failure.")
go_out()
+ mob_occupant.apply_vore_prefs()
else if(mob_occupant.cloneloss > (100 - heal_level))
mob_occupant.Unconscious(80)
@@ -270,6 +272,7 @@
BP.attach_limb(mob_occupant)
go_out()
+ mob_occupant.apply_vore_prefs()
else if (!mob_occupant || mob_occupant.loc != src)
occupant = null
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index 2033fd7146..a8e9c7bcca 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -4,17 +4,17 @@
icon_screen = "crew"
icon_keyboard = "med_key"
circuit = /obj/item/circuitboard/computer/operating
- var/mob/living/carbon/human/patient
- var/obj/structure/table/optable/table
+ var/mob/living/carbon/human/patient
+ var/obj/structure/table/optable/table
light_color = LIGHT_COLOR_BLUE
/obj/machinery/computer/operating/Initialize()
- ..()
+ . = ..()
find_table()
/obj/machinery/computer/operating/proc/find_table()
- for(var/dir in GLOB.cardinals)
+ for(var/dir in GLOB.cardinals)
table = locate(/obj/structure/table/optable, get_step(src, dir))
if(table)
table.computer = src
@@ -63,4 +63,4 @@
var/datum/surgery_step/surgery_step = procedure.get_surgery_step()
dat += "Next step: [capitalize(surgery_step.name)]
"
dat += ""
- return dat
+ return dat
\ No newline at end of file
diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm
index 033676264c..77bb50e8c4 100644
--- a/code/game/machinery/computer/_computer.dm
+++ b/code/game/machinery/computer/_computer.dm
@@ -22,7 +22,7 @@
if(!QDELETED(C))
qdel(circuit)
circuit = C
- C.forceMove(null)
+ C.loc = null
/obj/machinery/computer/Destroy()
QDEL_NULL(circuit)
diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm
index 8131dbd4a6..2d1d771203 100644
--- a/code/game/machinery/computer/atmos_control.dm
+++ b/code/game/machinery/computer/atmos_control.dm
@@ -84,7 +84,7 @@
light_color = LIGHT_COLOR_CYAN
/obj/machinery/computer/atmos_control/Initialize()
- ..()
+ . = ..()
set_frequency(frequency)
/obj/machinery/computer/atmos_control/Destroy()
@@ -227,4 +227,4 @@
else if(output_tag == id_tag)
output_info = signal.data
else
- ..(signal)
+ ..(signal)
\ No newline at end of file
diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm
index aafe74f2b3..105fb64042 100644
--- a/code/game/machinery/computer/dna_console.dm
+++ b/code/game/machinery/computer/dna_console.dm
@@ -169,7 +169,7 @@
if("working")
temp_html += status
temp_html += "System Busy
"
- temp_html += "Working ... Please wait ([radduration] Seconds)"
+ temp_html += "Working ... Please wait ([DisplayTimeText(radduration)])"
if("buffer")
temp_html += status
temp_html += buttons
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index 44822d3771..f3fabcc21c 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -40,25 +40,25 @@
return ..()
/obj/machinery/computer/message_monitor/emag_act(mob/user)
- if(emagged)
- return
- if(!isnull(src.linkedServer))
- emagged = TRUE
- screen = 2
- spark_system.set_up(5, 0, src)
- src.spark_system.start()
- var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey
- MK.loc = src.loc
- // Will help make emagging the console not so easy to get away with.
- MK.info += "
�%@%(*$%&(�&?*(%&�/{}"
- var/time = 100 * length(src.linkedServer.decryptkey)
- addtimer(CALLBACK(src, .proc/UnmagConsole), time)
- message = rebootmsg
- else
- to_chat(user, "A no server error appears on the screen.")
+ if(emagged)
+ return
+ if(!isnull(src.linkedServer))
+ emagged = TRUE
+ screen = 2
+ spark_system.set_up(5, 0, src)
+ src.spark_system.start()
+ var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey
+ MK.loc = src.loc
+ // Will help make emagging the console not so easy to get away with.
+ MK.info += "
�%@%(*$%&(�&?*(%&�/{}"
+ var/time = 100 * length(src.linkedServer.decryptkey)
+ addtimer(CALLBACK(src, .proc/UnmagConsole), time)
+ message = rebootmsg
+ else
+ to_chat(user, "A no server error appears on the screen.")
/obj/machinery/computer/message_monitor/Initialize()
- ..()
+ . = ..()
//Is the server isn't linked to a server, and there's a server available, default it to the first one in the list.
if(!linkedServer)
if(GLOB.message_servers && GLOB.message_servers.len > 0)
@@ -236,7 +236,7 @@
src.screen = 0 // Return the screen back to normal
/obj/machinery/computer/message_monitor/proc/UnmagConsole()
- emagged = FALSE
+ emagged = FALSE
/obj/machinery/computer/message_monitor/proc/ResetMessage()
customsender = "System Administrator"
@@ -309,7 +309,7 @@
message = noserver
else
if(auth)
- var/dkey = trim(stripped_input(usr, "Please enter the decryption key."))
+ var/dkey = trim(stripped_input(usr, "Please enter the decryption key."))
if(dkey && dkey != "")
if(src.linkedServer.decryptkey == dkey)
var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):"))
@@ -414,11 +414,11 @@
customrecepient.tnote += "← From [customsender] ([customjob]):
[custommessage]
"
if (!customrecepient.silent)
playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
- customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3)
+ customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3)
if( customrecepient.loc && ishuman(customrecepient.loc) )
var/mob/living/carbon/human/H = customrecepient.loc
- to_chat(H, "[icon2html(customrecepient, viewers(H))] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)")
- log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA)
+ to_chat(H, "[icon2html(customrecepient, viewers(H))] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)")
+ log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA)
customrecepient.cut_overlays()
customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r"))
//Sender is faking as someone who exists
@@ -427,11 +427,11 @@
customrecepient.tnote += "← From [PDARec.owner] ([customjob]):
[custommessage]
"
if (!customrecepient.silent)
playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
- customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3)
+ customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3)
if( customrecepient.loc && ishuman(customrecepient.loc) )
var/mob/living/carbon/human/H = customrecepient.loc
- to_chat(H, "[icon2html(customrecepient, H)] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)")
- log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA)
+ to_chat(H, "[icon2html(customrecepient, H)] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)")
+ log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA)
customrecepient.cut_overlays()
customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r"))
//Finally..
@@ -468,4 +468,4 @@
info = "Daily Key Reset
The new message monitor key is '[server.decryptkey]'.
Please keep this a secret and away from the clown.
If necessary, change the password to a more secure one."
info_links = info
add_overlay("paper_words")
- break
+ break
\ No newline at end of file
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index 3f18cc29e9..7cb1304326 100644
--- a/code/game/machinery/computer/pod.dm
+++ b/code/game/machinery/computer/pod.dm
@@ -1,145 +1,143 @@
-/obj/machinery/computer/pod
- name = "mass driver launch control"
- desc = "A combined blastdoor and mass driver control unit."
- var/obj/machinery/mass_driver/connected = null
- var/title = "Mass Driver Controls"
- var/id = 1
- var/timing = 0
- var/time = 30
- var/range = 4
-
-
-/obj/machinery/computer/pod/Initialize()
- ..()
- for(var/obj/machinery/mass_driver/M in range(range, src))
- if(M.id == id)
- connected = M
-
-
-/obj/machinery/computer/pod/proc/alarm()
- if(stat & (NOPOWER|BROKEN))
- return
-
- if(!connected)
+/obj/machinery/computer/pod
+ name = "mass driver launch control"
+ desc = "A combined blastdoor and mass driver control unit."
+ var/obj/machinery/mass_driver/connected = null
+ var/title = "Mass Driver Controls"
+ var/id = 1
+ var/timing = 0
+ var/time = 30
+ var/range = 4
+
+
+/obj/machinery/computer/pod/Initialize()
+ . = ..()
+ for(var/obj/machinery/mass_driver/M in range(range, src))
+ if(M.id == id)
+ connected = M
+
+
+/obj/machinery/computer/pod/proc/alarm()
+ if(stat & (NOPOWER|BROKEN))
+ return
+
+ if(!connected)
say("Cannot locate mass driver connector. Cancelling firing sequence!")
- return
-
- for(var/obj/machinery/door/poddoor/M in range(range, src))
- if(M.id == id)
- M.open()
-
- sleep(20)
- for(var/obj/machinery/mass_driver/M in range(range, src))
- if(M.id == id)
- M.power = connected.power
- M.drive()
-
- sleep(50)
- for(var/obj/machinery/door/poddoor/M in range(range, src))
- if(M.id == id)
- M.close()
-
-/obj/machinery/computer/pod/attack_hand(mob/user)
- if(..())
- return
-
- var/dat = ""
- user.set_machine(src)
- if(connected)
- var/d2
- if(timing) //door controls do not need timers.
- d2 = "Stop Time Launch"
- else
- d2 = "Initiate Time Launch"
- var/second = time % 60
- var/minute = (time - second) / 60
- dat += "
\nTimer System: [d2]\nTime Left: [minute ? "[minute]:" : null][second] - - + +"
- var/temp = ""
- var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 )
- for(var/t in L)
- if(t == connected.power)
- temp += "[t] "
- else
- temp += "[t] "
- dat += "
\nPower Level: [temp]
\nFiring Sequence
\nTest Fire Driver
\nToggle Outer Door
"
- else
- dat += "
\nToggle Outer Door
"
- dat += "
Close"
- add_fingerprint(usr)
- var/datum/browser/popup = new(user, "computer", title, 400, 500)
- popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
- popup.open()
-
-
-/obj/machinery/computer/pod/process()
- if(!..())
- return
- if(timing)
- if(time > 0)
- time = round(time) - 1
- else
- alarm()
- time = 0
- timing = 0
- updateDialog()
-
-
-/obj/machinery/computer/pod/Topic(href, href_list)
- if(..())
- return
- if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr))
- usr.set_machine(src)
- if(href_list["power"])
- var/t = text2num(href_list["power"])
- t = min(max(0.25, t), 16)
- if(connected)
- connected.power = t
- if(href_list["alarm"])
- alarm()
- if(href_list["time"])
- timing = text2num(href_list["time"])
- if(href_list["tp"])
- var/tp = text2num(href_list["tp"])
- time += tp
- time = min(max(round(time), 0), 120)
- if(href_list["door"])
- for(var/obj/machinery/door/poddoor/M in range(range, src))
- if(M.id == id)
- if(M.density)
- M.open()
- else
- M.close()
- if(href_list["drive"])
- for(var/obj/machinery/mass_driver/M in range(range, src))
- if(M.id == id)
- M.power = connected.power
- M.drive()
- updateUsrDialog()
-
-
-/obj/machinery/computer/pod/old
- name = "\improper DoorMex control console"
- title = "Door Controls"
- icon_state = "oldcomp"
- icon_screen = "library"
- icon_keyboard = null
-
-
-/obj/machinery/computer/pod/old/syndicate
- name = "\improper ProComp Executive IIc"
- desc = "The Syndicate operate on a tight budget. Operates external airlocks."
- title = "External Airlock Controls"
+ return
+
+ for(var/obj/machinery/door/poddoor/M in range(range, src))
+ if(M.id == id)
+ M.open()
+
+ sleep(20)
+ for(var/obj/machinery/mass_driver/M in range(range, src))
+ if(M.id == id)
+ M.power = connected.power
+ M.drive()
+
+ sleep(50)
+ for(var/obj/machinery/door/poddoor/M in range(range, src))
+ if(M.id == id)
+ M.close()
+
+/obj/machinery/computer/pod/attack_hand(mob/user)
+ if(..())
+ return
+
+ var/dat = ""
+ user.set_machine(src)
+ if(connected)
+ var/d2
+ if(timing) //door controls do not need timers.
+ d2 = "Stop Time Launch"
+ else
+ d2 = "Initiate Time Launch"
+ dat += "
\nTimer System: [d2]\nTime Left: [DisplayTimeText(time)] - - + +"
+ var/temp = ""
+ var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 )
+ for(var/t in L)
+ if(t == connected.power)
+ temp += "[t] "
+ else
+ temp += "[t] "
+ dat += "
\nPower Level: [temp]
\nFiring Sequence
\nTest Fire Driver
\nToggle Outer Door
"
+ else
+ dat += "
\nToggle Outer Door
"
+ dat += "
Close"
+ add_fingerprint(usr)
+ var/datum/browser/popup = new(user, "computer", title, 400, 500)
+ popup.set_content(dat)
+ popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
+ popup.open()
+
+
+/obj/machinery/computer/pod/process()
+ if(!..())
+ return
+ if(timing)
+ if(time > 0)
+ time = round(time) - 1
+ else
+ alarm()
+ time = 0
+ timing = 0
+ updateDialog()
+
+
+/obj/machinery/computer/pod/Topic(href, href_list)
+ if(..())
+ return
+ if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr))
+ usr.set_machine(src)
+ if(href_list["power"])
+ var/t = text2num(href_list["power"])
+ t = min(max(0.25, t), 16)
+ if(connected)
+ connected.power = t
+ if(href_list["alarm"])
+ alarm()
+ if(href_list["time"])
+ timing = text2num(href_list["time"])
+ if(href_list["tp"])
+ var/tp = text2num(href_list["tp"])
+ time += tp
+ time = min(max(round(time), 0), 120)
+ if(href_list["door"])
+ for(var/obj/machinery/door/poddoor/M in range(range, src))
+ if(M.id == id)
+ if(M.density)
+ M.open()
+ else
+ M.close()
+ if(href_list["drive"])
+ for(var/obj/machinery/mass_driver/M in range(range, src))
+ if(M.id == id)
+ M.power = connected.power
+ M.drive()
+ updateUsrDialog()
+
+
+/obj/machinery/computer/pod/old
+ name = "\improper DoorMex control console"
+ title = "Door Controls"
+ icon_state = "oldcomp"
+ icon_screen = "library"
+ icon_keyboard = null
+
+
+/obj/machinery/computer/pod/old/syndicate
+ name = "\improper ProComp Executive IIc"
+ desc = "The Syndicate operate on a tight budget. Operates external airlocks."
+ title = "External Airlock Controls"
req_access = list(ACCESS_SYNDICATE)
-
-/obj/machinery/computer/pod/old/syndicate/attack_hand(mob/user)
- if(!allowed(user))
- to_chat(user, "Access denied.")
- return
- else
- ..()
-
-
-/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"
+
+/obj/machinery/computer/pod/old/syndicate/attack_hand(mob/user)
+ if(!allowed(user))
+ to_chat(user, "Access denied.")
+ return
+ else
+ ..()
+
+
+/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"
diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm
index 678d856dce..52de3830df 100644
--- a/code/game/machinery/computer/telecrystalconsoles.dm
+++ b/code/game/machinery/computer/telecrystalconsoles.dm
@@ -22,7 +22,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E
var/obj/machinery/computer/telecrystals/boss/linkedboss = null
/obj/machinery/computer/telecrystals/uplinker/Initialize()
- ..()
+ . = ..()
var/ID = pick_n_take(GLOB.possible_uplinker_IDs)
if(!ID)
@@ -220,4 +220,4 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E
src.updateUsrDialog()
return
-#undef NUKESCALINGMODIFIER
+#undef NUKESCALINGMODIFIER
\ No newline at end of file
diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm
index 9ba8e1d34d..f919bdbab8 100644
--- a/code/game/machinery/dance_machine.dm
+++ b/code/game/machinery/dance_machine.dm
@@ -96,7 +96,7 @@
dat += "
"
dat += " Select Track
"
dat += "Track Selected: [selection.song_name]
"
- dat += "Track Length: [selection.song_length/10] seconds
"
+ dat += "Track Length: [DisplayTimeText(selection.song_length)]
"
dat += "
DJ's Soundboard:
"
dat +=""
dat += "
Air Horn "
@@ -122,7 +122,7 @@
return
if(!active)
if(stop > world.time)
- to_chat(usr, "
Error: The device is still resetting from the last activation, it will be ready again in [round((stop-world.time)/10)] seconds.")
+ to_chat(usr, "
Error: The device is still resetting from the last activation, it will be ready again in [DisplayTimeText(stop-world.time)].")
playsound(src, 'sound/misc/compiler-failure.ogg', 50, 1)
return
active = TRUE
diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm
index 4085b4edb4..034a260925 100644
--- a/code/game/machinery/dna_scanner.dm
+++ b/code/game/machinery/dna_scanner.dm
@@ -15,7 +15,7 @@
var/scan_level
var/precision_coeff
var/message_cooldown
- var/breakout_time = 2
+ var/breakout_time = 1200
/obj/machinery/dna_scannernew/RefreshParts()
scan_level = 0
@@ -73,9 +73,9 @@
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
user.visible_message("
You see [user] kicking against the door of [src]!", \
- "
You lean on the back of [src] and start pushing the door open... (this will take about [(breakout_time<1) ? "[breakout_time*60] seconds" : "[breakout_time] minute\s"].)", \
+ "
You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \
"
You hear a metallic creaking from [src].")
- if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds
+ if(do_after(user,(breakout_time), target = src))
if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked)
return
locked = FALSE
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 13e6ca1253..e7fa7447b5 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1011,7 +1011,7 @@
if(AIRLOCK_SECURITY_NONE)
if(istype(C, /obj/item/stack/sheet/metal))
var/obj/item/stack/sheet/metal/S = C
- if(S.amount < 2)
+ if(S.get_amount() < 2)
to_chat(user, "
You need at least 2 metal sheets to reinforce [src].")
return
to_chat(user, "
You start reinforcing [src]")
@@ -1025,7 +1025,7 @@
return
else if(istype(C, /obj/item/stack/sheet/plasteel))
var/obj/item/stack/sheet/plasteel/S = C
- if(S.amount < 2)
+ if(S.get_amount() < 2)
to_chat(user, "
You need at least 2 plasteel sheets to reinforce [src].")
return
to_chat(user, "
You start reinforcing [src].")
@@ -1347,19 +1347,19 @@
return TRUE
operating = TRUE
update_icon(AIRLOCK_OPENING, 1)
- src.set_opacity(0)
- sleep(5)
- density = FALSE
- sleep(9)
- src.layer = OPEN_DOOR_LAYER
- update_icon(AIRLOCK_OPEN, 1)
+ sleep(1)
set_opacity(0)
- operating = FALSE
- air_update_turf(1)
update_freelook_sight()
+ sleep(4)
+ density = FALSE
+ air_update_turf(1)
+ sleep(1)
+ layer = OPEN_DOOR_LAYER
+ update_icon(AIRLOCK_OPEN, 1)
+ operating = FALSE
if(delayed_close_requested)
delayed_close_requested = FALSE
- addtimer(CALLBACK(src, .proc/close), 2)
+ addtimer(CALLBACK(src, .proc/close), 1)
return TRUE
@@ -1391,21 +1391,24 @@
return TRUE
operating = TRUE
update_icon(AIRLOCK_CLOSING, 1)
- src.layer = CLOSED_DOOR_LAYER
+ layer = CLOSED_DOOR_LAYER
if(air_tight)
density = TRUE
- sleep(5)
- density = TRUE
+ air_update_turf(1)
+ sleep(1)
+ if(!air_tight)
+ density = TRUE
+ air_update_turf(1)
+ sleep(4)
if(!safe)
crush()
- sleep(9)
- update_icon(AIRLOCK_CLOSED, 1)
if(visible && !glass)
set_opacity(1)
+ update_freelook_sight()
+ sleep(1)
+ update_icon(AIRLOCK_CLOSED, 1)
operating = FALSE
delayed_close_requested = FALSE
- air_update_turf(1)
- update_freelook_sight()
if(safe)
CheckForMobs()
return TRUE
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 02f3f03b91..95adf12875 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -434,6 +434,15 @@
constructionStep = CONSTRUCTION_GUTTED
update_icon()
return
+ if(istype(C, /obj/item/device/electroadaptive_pseudocircuit))
+ var/obj/item/device/electroadaptive_pseudocircuit/P = C
+ if(!P.adapt_circuit(user, 30))
+ return
+ user.visible_message("
[user] fabricates a circuit and places it into [src].", \
+ "
You adapt a firelock circuit and slot it into the assembly.")
+ constructionStep = CONSTRUCTION_GUTTED
+ update_icon()
+ return
return ..()
/obj/structure/firelock_frame/heavy
diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm
index 31643fa177..5d7be7fbd8 100644
--- a/code/game/machinery/droneDispenser.dm
+++ b/code/game/machinery/droneDispenser.dm
@@ -22,7 +22,6 @@
var/icon_recharging = "recharge"
var/icon_creating = "make"
- var/datum/material_container/materials
var/list/using_materials
var/starting_amount = 0
var/metal_cost = 1000
@@ -55,14 +54,10 @@
/obj/machinery/droneDispenser/Initialize()
. = ..()
- materials = new(src, list(MAT_METAL, MAT_GLASS), MINERAL_MATERIAL_AMOUNT*MAX_STACK_SIZE*2)
+ var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), MINERAL_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, TRUE)
materials.insert_amount(starting_amount)
using_materials = list(MAT_METAL=metal_cost, MAT_GLASS=glass_cost)
-/obj/machinery/droneDispenser/Destroy()
- QDEL_NULL(materials)
- return ..()
-
/obj/machinery/droneDispenser/preloaded
starting_amount = 5000
@@ -81,7 +76,7 @@
exterminator drones when supplied with metal and glass. \
Disgusting. This one seems ominous."
dispense_type = /obj/item/drone_shell/syndrone/badass
- end_create_message = "dispenses a ominous suspicious drone shell."
+ end_create_message = "dispenses an ominous suspicious drone shell."
// I don't need your forgiveness, this is awesome.
/obj/machinery/droneDispenser/snowflake
@@ -148,10 +143,6 @@
..()
if((mode == DRONE_RECHARGING) && !stat && recharging_text)
to_chat(user, "
[recharging_text]")
- if(metal_cost)
- to_chat(user, "
It has [materials.amount(MAT_METAL)] units of metal stored.")
- if(glass_cost)
- to_chat(user, "
It has [materials.amount(MAT_GLASS)] units of glass stored.")
/obj/machinery/droneDispenser/power_change()
..()
@@ -166,6 +157,7 @@
if((stat & (NOPOWER|BROKEN)) || !anchored)
return
+ GET_COMPONENT(materials, /datum/component/material_container)
if(!materials.has_materials(using_materials))
return // We require more minerals
@@ -232,25 +224,8 @@
icon_state = icon_on
/obj/machinery/droneDispenser/attackby(obj/item/O, mob/living/user)
- if(istype(O, /obj/item/stack))
- if(!O.materials[MAT_METAL] && !O.materials[MAT_GLASS])
- return ..()
- if(!metal_cost && !glass_cost)
- to_chat(user, "
There isn't a place to insert [O]!")
- return
- var/obj/item/stack/sheets = O
- if(!user.canUnEquip(sheets))
- to_chat(user, "
[O] is stuck to your hand, you can't get it off!")
- return
-
- var/used = materials.insert_stack(sheets, sheets.amount)
-
- if(used)
- to_chat(user, "
You insert [used] sheet[used > 1 ? "s" : ""] into [src].")
- else
- to_chat(user, "
The [src] isn't accepting the [sheets].")
-
- else if(istype(O, /obj/item/crowbar))
+ if(istype(O, /obj/item/crowbar))
+ GET_COMPONENT(materials, /datum/component/material_container)
materials.retrieve_all()
playsound(loc, O.usesound, 50, 1)
to_chat(user, "
You retrieve the materials from [src].")
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index 518cd8ab09..ebbeb1bee2 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -220,6 +220,16 @@
update_icon()
return
+ else if(istype(W, /obj/item/device/electroadaptive_pseudocircuit))
+ var/obj/item/device/electroadaptive_pseudocircuit/P = W
+ if(!P.adapt_circuit(user, 15))
+ return
+ user.visible_message("
[user] fabricates a circuit and places it into [src].", \
+ "
You adapt a fire alarm circuit and slot it into the assembly.")
+ buildstage = 1
+ update_icon()
+ return
+
else if(istype(W, /obj/item/wrench))
user.visible_message("[user] removes the fire alarm assembly from the wall.", \
"
You remove the fire alarm assembly from the wall.")
diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm
index d77e91af90..2d7c7708b3 100644
--- a/code/game/machinery/gulag_teleporter.dm
+++ b/code/game/machinery/gulag_teleporter.dm
@@ -20,7 +20,7 @@ The console is located at computer/gulag_teleporter.dm
circuit = /obj/item/circuitboard/machine/gulag_teleporter
var/locked = FALSE
var/message_cooldown
- var/breakout_time = 1
+ var/breakout_time = 600
var/jumpsuit_type = /obj/item/clothing/under/rank/prisoner
var/shoes_type = /obj/item/clothing/shoes/sneakers/orange
var/obj/machinery/gulag_item_reclaimer/linked_reclaimer
@@ -104,9 +104,9 @@ The console is located at computer/gulag_teleporter.dm
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
user.visible_message("
You see [user] kicking against the door of [src]!", \
- "
You lean on the back of [src] and start pushing the door open... (this will take about [(breakout_time<1) ? "[breakout_time*60] seconds" : "[breakout_time] minute\s"].)", \
+ "
You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \
"
You hear a metallic creaking from [src].")
- if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds
+ if(do_after(user,(breakout_time), target = src))
if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked)
return
locked = FALSE
diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm
index d0d40e7233..36366ffbd9 100644
--- a/code/game/machinery/magnet.dm
+++ b/code/game/machinery/magnet.dm
@@ -215,7 +215,7 @@
/obj/machinery/magnetic_controller/Initialize()
- ..()
+ . = ..()
if(autolink)
for(var/obj/machinery/magnetic_module/M in GLOB.machines)
if(M.freq == frequency && M.code == code)
@@ -391,4 +391,4 @@
if(!(nextchar in list(";", "&", "*", " "))) // if char is a separator, ignore
rpath += copytext(path, i, i+1) // else, add to list
- // there doesn't HAVE to be separators but it makes paths syntatically visible
+ // there doesn't HAVE to be separators but it makes paths syntatically visible
\ No newline at end of file
diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm
index 545414577e..f800309131 100644
--- a/code/game/machinery/overview.dm
+++ b/code/game/machinery/overview.dm
@@ -31,8 +31,6 @@
imap += icon('icons/misc/imap.dmi', "blank")
imap += icon('icons/misc/imap.dmi', "blank")
- //to_chat(world, "[icount] images in list")
-
for(var/wx = 1 ; wx <= world.maxx; wx++)
@@ -142,13 +140,10 @@
var/rx = ((wx*2+xoff)%32) + 1
var/ry = ((wy*2+yoff)%32) + 1
- //to_chat(world, "trying [ix],[iy] : [ix+icx*iy]")
var/icon/I = imap[1+(ix + icx*iy)*2]
var/icon/I2 = imap[2+(ix + icx*iy)*2]
- //to_chat(world, "icon: [icon2html(I, world)]")
-
I.DrawBox(colour, rx, ry, rx+1, ry+1)
I2.DrawBox(colour2, rx, ry, rx+1, ry+1)
@@ -164,8 +159,6 @@
H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]"
- //to_chat(world, "[icon2html(I, world)] at [H.screen_loc]")
-
H.name = (i==0)?"maprefresh":"map"
var/icon/HI = new/icon
@@ -272,12 +265,8 @@
var/rx = ((wx*2+xoff)%32) + 1
var/ry = ((wy*2+yoff)%32) + 1
- //to_chat(world, "trying [ix],[iy] : [ix+icx*iy]")
var/icon/I = imap[1+(ix + icx*iy)]
-
- //to_chat(world, "icon: [icon2html(I, world)]")
-
I.DrawBox(colour, rx, ry, rx, ry)
@@ -291,8 +280,6 @@
H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]"
- //to_chat(world, "[icon2html(I, world)] at [H.screen_loc]")
-
H.name = (i==0)?"maprefresh":"map"
var/icon/I = imap[i+1]
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 4a5e32d4e8..3fb3447f61 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -30,6 +30,7 @@ Buildable meters
PIPE_HE_MANIFOLD, \
PIPE_HE_4WAYMANIFOLD, \
PIPE_JUNCTION, \
+ PIPE_BLUESPACE, \
\
PIPE_CONNECTOR, \
PIPE_UVENT, \
@@ -90,6 +91,7 @@ GLOBAL_LIST_INIT(pipeID2State, list(
"[PIPE_HE_MANIFOLD]" = "he_manifold", \
"[PIPE_HE_4WAYMANIFOLD]" = "he_manifold4w", \
"[PIPE_JUNCTION]" = "junction", \
+ "[PIPE_BLUESPACE]" = "bluespace", \
\
"[PIPE_CONNECTOR]" = "connector", \
"[PIPE_UVENT]" = "uvent", \
@@ -118,6 +120,7 @@ GLOBAL_LIST_INIT(pipeID2State, list(
"[PIPE_HE_MANIFOLD]" = "h/e manifold", \
"[PIPE_HE_4WAYMANIFOLD]"= "h/e 4-way manifold", \
"[PIPE_JUNCTION]" = "junction", \
+ "[PIPE_BLUESPACE]" = "bluespace pipe", \
\
"[PIPE_CONNECTOR]" = "connector", \
"[PIPE_UVENT]" = "vent", \
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 456fc1d0bd..39b3760f7e 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -13,13 +13,14 @@
if(..())
return 1
var/dat = {"
-
Regular pipes:
+
Pipes:
Pipe
Bent Pipe
Manifold
4-Way Manifold
Manual Valve
Digital Valve
+
Bluespace Pipe
Devices:
Connector
Vent
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index ee8363e1b3..b84de7cf18 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -570,8 +570,8 @@
/obj/machinery/porta_turret/syndicate/pod
integrity_failure = 20
max_integrity = 40
- stun_projectile = /obj/item/projectile/bullet/weakbullet3
- lethal_projectile = /obj/item/projectile/bullet/weakbullet3
+ stun_projectile = /obj/item/projectile/bullet/syndicate_turret
+ lethal_projectile = /obj/item/projectile/bullet/syndicate_turret
/obj/machinery/porta_turret/ai
faction = "silicon"
diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm
index e86f78722b..6af0240214 100644
--- a/code/game/machinery/quantum_pad.dm
+++ b/code/game/machinery/quantum_pad.dm
@@ -79,7 +79,7 @@
return
if(world.time < last_teleport + teleport_cooldown)
- to_chat(user, "
[src] is recharging power. Please wait [round((last_teleport + teleport_cooldown - world.time) / 10)] seconds.")
+ to_chat(user, "
[src] is recharging power. Please wait [DisplayTimeText(last_teleport + teleport_cooldown - world.time)].")
return
if(teleporting)
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index b4bee2bdae..fbe02dca37 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -14,15 +14,14 @@
var/blood = 0
var/eat_dir = WEST
var/amount_produced = 50
- var/datum/material_container/materials
var/crush_damage = 1000
var/eat_victim_items = TRUE
var/item_recycle_sound = 'sound/items/welder.ogg'
/obj/machinery/recycler/Initialize()
- materials = new /datum/material_container(src, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM))
+ AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM))
+ . = ..()
update_icon()
- return ..()
/obj/machinery/recycler/RefreshParts()
var/amt_made = 0
@@ -32,6 +31,7 @@
mat_mod *= 50000
for(var/obj/item/stock_parts/manipulator/M in component_parts)
amt_made = 12.5 * M.rating //% of materials salvaged
+ GET_COMPONENT(materials, /datum/component/material_container)
materials.max_amount = mat_mod
amount_produced = min(50, amt_made) + 50
@@ -126,6 +126,7 @@
/obj/machinery/recycler/proc/recycle_item(obj/item/I)
I.loc = src.loc
+ GET_COMPONENT(materials, /datum/component/material_container)
var/material_amount = materials.get_item_material_amount(I)
if(!material_amount)
qdel(I)
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index a78fa50a6a..7c51c383fa 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -27,7 +27,7 @@
var/uv_super = FALSE
var/uv_cycles = 6
var/message_cooldown
- var/breakout_time = 0.5
+ var/breakout_time = 300
/obj/machinery/suit_storage_unit/standard_unit
suit_type = /obj/item/clothing/suit/space/eva
@@ -267,9 +267,9 @@
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
user.visible_message("
You see [user] kicking against the doors of [src]!", \
- "
You start kicking against the doors... (this will take about [(breakout_time<1) ? "[breakout_time*60] seconds" : "[breakout_time] minute\s"].)", \
+ "
You start kicking against the doors... (this will take about [DisplayTimeText(breakout_time)].)", \
"
You hear a thump from [src].")
- if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds
+ if(do_after(user,(breakout_time), target = src))
if(!user || user.stat != CONSCIOUS || user.loc != src )
return
user.visible_message("
[user] successfully broke out of [src]!", \
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 07b21c1fe4..b3a7f99758 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -706,7 +706,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
..()
var/T = pick(subtypesof(/obj/machinery/vending/snack) - /obj/machinery/vending/snack/random)
new T(get_turf(src))
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/machinery/vending/snack/blue
icon_state = "snackblue"
@@ -758,7 +758,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
. = ..()
var/T = pick(subtypesof(/obj/machinery/vending/cola) - /obj/machinery/vending/cola/random)
new T(get_turf(src))
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/machinery/vending/cola/blue
icon_state = "Cola_Machine"
@@ -1142,7 +1142,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/machinery/vending/toyliberationstation
name = "\improper Syndicate Donksoft Toy Vendor"
- desc = "A ages 8 and up approved vendor that dispenses toys. If you were to find the right wires, you can unlock the adult mode setting!"
+ 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!"
icon_state = "syndi"
req_access_txt = "1"
product_slogans = "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 perma briged!"
@@ -1156,7 +1156,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/toy/foamblade = 10,
/obj/item/toy/syndicateballoon = 10,
/obj/item/clothing/suit/syndicatefake = 5,
- /obj/item/clothing/head/syndicatefake = 5) //OPS IN DORMS oh wait it's just a assistant
+ /obj/item/clothing/head/syndicatefake = 5) //OPS IN DORMS oh wait it's just an assistant
contraband = list(/obj/item/gun/ballistic/shotgun/toy/crossbow = 10, //Congrats, you unlocked the +18 setting!
/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot = 10,
/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot = 10,
@@ -1195,4 +1195,4 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
#undef STANDARD_CHARGE
#undef CONTRABAND_CHARGE
-#undef COIN_CHARGE
+#undef COIN_CHARGE
\ No newline at end of file
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index b6b4241402..1e9616ae12 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -251,7 +251,7 @@
icon_state = "mecha_carbine"
origin_tech = "materials=4;combat=4"
equip_cooldown = 10
- projectile = /obj/item/projectile/bullet/incendiary/shell
+ projectile = /obj/item/projectile/bullet/incendiary/fnx99
projectiles = 24
projectile_energy_cost = 15
@@ -271,7 +271,7 @@
icon_state = "mecha_scatter"
origin_tech = "combat=4"
equip_cooldown = 20
- projectile = /obj/item/projectile/bullet/midbullet
+ projectile = /obj/item/projectile/bullet/scattershot
projectiles = 40
projectile_energy_cost = 25
projectiles_per_shot = 4
@@ -283,7 +283,7 @@
icon_state = "mecha_uac2"
origin_tech = "combat=4"
equip_cooldown = 10
- projectile = /obj/item/projectile/bullet/weakbullet3
+ projectile = /obj/item/projectile/bullet/lmg
projectiles = 300
projectile_energy_cost = 20
projectiles_per_shot = 3
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 79c4971665..8efc14d966 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -12,7 +12,6 @@
circuit = /obj/item/circuitboard/machine/mechfab
var/time_coeff = 1
var/component_coeff = 1
- var/datum/material_container/materials
var/datum/research/files
var/sync = 0
var/part_set
@@ -36,9 +35,11 @@
)
/obj/machinery/mecha_part_fabricator/Initialize()
+ AddComponent(/datum/component/material_container,
+ list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),
+ FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready))
+ . = ..()
files = new /datum/research(src) //Setup the research data holder.
- materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE))
- return ..()
/obj/machinery/mecha_part_fabricator/RefreshParts()
var/T = 0
@@ -46,6 +47,7 @@
//maximum stocking amount (default 300000, 600000 at T4)
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
T += M.rating
+ GET_COMPONENT(materials, /datum/component/material_container)
materials.max_amount = (200000 + (T*50000))
//resources adjustment coefficient (1 -> 0.85 -> 0.7 -> 0.55)
@@ -113,6 +115,7 @@
/obj/machinery/mecha_part_fabricator/proc/output_available_resources()
var/output
+ GET_COMPONENT(materials, /datum/component/material_container)
for(var/mat_id in materials.materials)
var/datum/material/M = materials.materials[mat_id]
output += "
[M.name]: [M.amount] cm³"
@@ -133,6 +136,7 @@
/obj/machinery/mecha_part_fabricator/proc/check_resources(datum/design/D)
if(D.reagents_list.len) // No reagents storage - no reagent designs.
return 0
+ GET_COMPONENT(materials, /datum/component/material_container)
if(materials.has_materials(get_resources_w_coeff(D)))
return 1
return 0
@@ -142,6 +146,7 @@
desc = "It's building \a [initial(D.name)]."
var/list/res_coef = get_resources_w_coeff(D)
+ GET_COMPONENT(materials, /datum/component/material_container)
materials.use_amount(res_coef)
add_overlay("fab-active")
use_power = ACTIVE_POWER_USE
@@ -398,15 +403,34 @@
break
if(href_list["remove_mat"] && href_list["material"])
+ GET_COMPONENT(materials, /datum/component/material_container)
materials.retrieve_sheets(text2num(href_list["remove_mat"]), href_list["material"])
updateUsrDialog()
return
/obj/machinery/mecha_part_fabricator/on_deconstruction()
+ GET_COMPONENT(materials, /datum/component/material_container)
materials.retrieve_all()
..()
+/obj/machinery/mecha_part_fabricator/ComponentActivated(datum/component/C)
+ ..()
+ if(istype(C, /datum/component/material_container))
+ var/datum/component/material_container/M = C
+ if(!M.last_insert_success)
+ return
+ var/lit = M.last_inserted_type
+ var/stack_name
+ if(ispath(lit, /obj/item/ore/bluespace_crystal))
+ stack_name = "bluespace"
+ else
+ var/obj/item/stack/S = lit
+ stack_name = material2name(initial(S.materials)[1])
+ add_overlay("fab-load-[stack_name]")
+ addtimer(CALLBACK(src, /atom/proc/cut_overlay, "fab-load-[stack_name]"), 10)
+ updateUsrDialog()
+
/obj/machinery/mecha_part_fabricator/attackby(obj/item/W, mob/user, params)
if(default_deconstruction_screwdriver(user, "fab-o", "fab-idle", W))
return 1
@@ -417,55 +441,7 @@
if(default_deconstruction_crowbar(W))
return 1
- if(istype(W, /obj/item/stack/sheet))
-
- if(!is_insertion_ready(user))
- return 1
-
- var/material_amount = materials.get_item_material_amount(W)
-
- if(!try_insert(user, W, material_amount))
- return 1
-
- var/inserted = materials.insert_item(W)
- if(inserted)
- to_chat(user, "
You insert [inserted] sheet\s into [src].")
- if(W && W.materials.len)
- if(!QDELETED(W))
- user.put_in_active_hand(W)
- var/mat_overlay = "fab-load-[material2name(W.materials[1])]"
- add_overlay(mat_overlay)
- sleep(10)
- if(!QDELETED(src))
- cut_overlay(mat_overlay) //No matter what the overlay shall still be deleted
-
- updateUsrDialog()
-
- else if(istype(W, /obj/item/ore/bluespace_crystal))
-
- if(!is_insertion_ready(user))
- return 1
-
- var/material_amount = materials.get_item_material_amount(W)
-
- if(!try_insert(user, W, material_amount))
- return 1
-
- var/inserted = materials.insert_item(W)
- if(inserted)
- to_chat(user, "
You add [W] to the [src].")
- if(W && W.materials.len)
- qdel(W)
- var/mat_overlay = "fab-load-bluespace"
- add_overlay(mat_overlay)
- sleep(10)
- if(!QDELETED(src))
- cut_overlay(mat_overlay)
-
- updateUsrDialog()
-
- else
- return ..()
+ return ..()
/obj/machinery/mecha_part_fabricator/proc/material2name(ID)
return copytext(ID,2)
@@ -479,17 +455,3 @@
return FALSE
return TRUE
-
-
-/obj/machinery/mecha_part_fabricator/proc/try_insert(mob/user, obj/item/I, material_amount)
- if(!material_amount)
- to_chat(user, "
This object does not contain sufficient amounts of materials to be accepted by [src].")
- return FALSE
- if(!materials.has_space(material_amount))
- to_chat(user, "
\The [src] is full. Please remove some materials from [src] in order to insert more.")
- return FALSE
- if(!user.temporarilyRemoveItemFromInventory(I))
- to_chat(user, "
\The [I] is stuck to you and cannot be placed into [src].")
- return FALSE
-
- return TRUE
\ No newline at end of file
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index fd52a75c18..ed2a1ff82a 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -289,7 +289,7 @@
if(internal_damage & MECHA_INT_TANK_BREACH) //remove some air from internal tank
if(internal_tank)
var/datum/gas_mixture/int_tank_air = internal_tank.return_air()
- var/datum/gas_mixture/leaked_gas = int_tank_air.remove_ratio(0.10)
+ var/datum/gas_mixture/leaked_gas = int_tank_air.remove_ratio(0.1)
if(loc)
loc.assume_air(leaked_gas)
air_update_turf()
@@ -766,7 +766,7 @@
. = t_air.return_pressure()
return
-/obj/mecha/proc/return_temperature()
+/obj/mecha/return_temperature()
var/datum/gas_mixture/t_air = return_air()
if(t_air)
. = t_air.return_temperature()
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index 863e3f32cc..674854c22e 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -1,404 +1,404 @@
-/////////////////////////
-////// Mecha Parts //////
-/////////////////////////
-
-/obj/item/mecha_parts
- name = "mecha part"
- icon = 'icons/mecha/mech_construct.dmi'
- icon_state = "blank"
- w_class = WEIGHT_CLASS_GIGANTIC
+/////////////////////////
+////// Mecha Parts //////
+/////////////////////////
+
+/obj/item/mecha_parts
+ name = "mecha part"
+ icon = 'icons/mecha/mech_construct.dmi'
+ icon_state = "blank"
+ w_class = WEIGHT_CLASS_GIGANTIC
flags_1 = CONDUCT_1
- origin_tech = "programming=2;materials=2;engineering=2"
-
-/obj/item/mecha_parts/chassis
- name="Mecha Chassis"
- icon_state = "backbone"
- var/datum/construction/construct
-
-/obj/item/mecha_parts/chassis/attackby(obj/item/W, mob/user, params)
- if(!construct || !construct.action(W, user))
- return ..()
-
-/obj/item/mecha_parts/chassis/attack_hand()
- return
-
-/////////// Ripley
-
-/obj/item/mecha_parts/chassis/ripley
- name = "\improper Ripley chassis"
-
-/obj/item/mecha_parts/chassis/ripley/New()
- ..()
- construct = new /datum/construction/mecha/ripley_chassis(src)
-
-/obj/item/mecha_parts/part/ripley_torso
- name = "\improper Ripley torso"
- desc = "A torso part of Ripley APLU. Contains power unit, processing core and life support systems."
- icon_state = "ripley_harness"
- origin_tech = "programming=2;materials=2;biotech=2;engineering=2"
-
-/obj/item/mecha_parts/part/ripley_left_arm
- name = "\improper Ripley left arm"
- desc = "A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "ripley_l_arm"
-
-/obj/item/mecha_parts/part/ripley_right_arm
- name = "\improper Ripley right arm"
- desc = "A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
- icon_state = "ripley_r_arm"
-
-/obj/item/mecha_parts/part/ripley_left_leg
- name = "\improper Ripley left leg"
- desc = "A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "ripley_l_leg"
-
-/obj/item/mecha_parts/part/ripley_right_leg
- name = "\improper Ripley right leg"
- desc = "A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
- icon_state = "ripley_r_leg"
-
-///////// Odysseus
-
-/obj/item/mecha_parts/chassis/odysseus
- name = "\improper Odysseus chassis"
-
-/obj/item/mecha_parts/chassis/odysseus/New()
- ..()
- construct = new /datum/construction/mecha/odysseus_chassis(src)
-
-/obj/item/mecha_parts/part/odysseus_head
- name = "\improper Odysseus head"
- desc = "An Odysseus head. Contains an integrated medical HUD scanner."
- icon_state = "odysseus_head"
-
-/obj/item/mecha_parts/part/odysseus_torso
- name = "\improper Odysseus torso"
- desc="A torso part of Odysseus. Contains power unit, processing core and life support systems along with an attachment port for a mounted sleeper."
- icon_state = "odysseus_torso"
- origin_tech = "programming=2;materials=2;biotech=2;engineering=2"
-
-/obj/item/mecha_parts/part/odysseus_left_arm
- name = "\improper Odysseus left arm"
- desc = "An Odysseus left arm. Data and power sockets are compatible with specialized medical equipment."
- icon_state = "odysseus_l_arm"
-
-/obj/item/mecha_parts/part/odysseus_right_arm
- name = "\improper Odysseus right arm"
- desc = "An Odysseus right arm. Data and power sockets are compatible with specialized medical equipment."
- icon_state = "odysseus_r_arm"
-
-/obj/item/mecha_parts/part/odysseus_left_leg
- name = "\improper Odysseus left leg"
- desc = "An Odysseus left leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients."
- icon_state = "odysseus_l_leg"
-
-/obj/item/mecha_parts/part/odysseus_right_leg
- name = "\improper Odysseus right leg"
- desc = "A Odysseus right leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients."
- icon_state = "odysseus_r_leg"
-
-///////// Gygax
-
-/obj/item/mecha_parts/chassis/gygax
- name = "\improper Gygax chassis"
-
-/obj/item/mecha_parts/chassis/gygax/New()
- ..()
- construct = new /datum/construction/mecha/gygax_chassis(src)
-
-/obj/item/mecha_parts/part/gygax_torso
- name = "\improper Gygax torso"
- desc = "A torso part of Gygax. Contains power unit, processing core and life support systems."
- icon_state = "gygax_harness"
- origin_tech = "programming=2;materials=4;biotech=3;engineering=3"
-
-/obj/item/mecha_parts/part/gygax_head
- name = "\improper Gygax head"
- desc = "A Gygax head. Houses advanced surveillance and targeting sensors."
- icon_state = "gygax_head"
- origin_tech = "programming=2;materials=4;magnets=3;engineering=3"
-
-/obj/item/mecha_parts/part/gygax_left_arm
- name = "\improper Gygax left arm"
- desc = "A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
- icon_state = "gygax_l_arm"
- origin_tech = "programming=2;materials=4;engineering=3"
-
-/obj/item/mecha_parts/part/gygax_right_arm
- name = "\improper Gygax right arm"
- desc = "A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
- icon_state = "gygax_r_arm"
- origin_tech = "programming=2;materials=4;engineering=3"
-
-/obj/item/mecha_parts/part/gygax_left_leg
- name = "\improper Gygax left leg"
- desc = "A Gygax left leg. Constructed with advanced servomechanisms and actuators to enable faster speed."
- icon_state = "gygax_l_leg"
- origin_tech = "programming=2;materials=4;engineering=3"
-
-/obj/item/mecha_parts/part/gygax_right_leg
- name = "\improper Gygax right leg"
- desc = "A Gygax right leg. Constructed with advanced servomechanisms and actuators to enable faster speed."
- icon_state = "gygax_r_leg"
- origin_tech = "programming=2;materials=4;engineering=3"
-
-/obj/item/mecha_parts/part/gygax_armor
- gender = PLURAL
- name = "\improper Gygax armor plates"
- desc = "A set of armor plates designed for the Gygax. Designed to effectively deflect damage with a lightweight construction."
- icon_state = "gygax_armor"
- origin_tech = "materials=6;combat=4;engineering=4"
-
-
-//////////// Durand
-
-/obj/item/mecha_parts/chassis/durand
- name = "\improper Durand chassis"
-
-/obj/item/mecha_parts/chassis/durand/New()
- ..()
- construct = new /datum/construction/mecha/durand_chassis(src)
-
-/obj/item/mecha_parts/part/durand_torso
- name = "\improper Durand torso"
- desc = "A torso part of Durand. Contains power unit, processing core and life support systems within a robust protective frame."
- icon_state = "durand_harness"
- origin_tech = "programming=2;materials=3;biotech=3;engineering=3"
-
-/obj/item/mecha_parts/part/durand_head
- name = "\improper Durand head"
- desc = "A Durand head. Houses advanced surveillance and targeting sensors."
- icon_state = "durand_head"
- origin_tech = "programming=2;materials=3;magnets=3;engineering=3"
-
-/obj/item/mecha_parts/part/durand_left_arm
- name = "\improper Durand left arm"
- desc = "A Durand left arm. Data and power sockets are compatible with most exosuit tools and weapons. Packs a really mean punch as well."
- icon_state = "durand_l_arm"
- origin_tech = "programming=2;materials=3;engineering=3"
-
-/obj/item/mecha_parts/part/durand_right_arm
- name = "\improper Durand right arm"
- desc = "A Durand right arm. Data and power sockets are compatible with most exosuit tools and weapons. Packs a really mean punch as well."
- icon_state = "durand_r_arm"
- origin_tech = "programming=2;materials=3;engineering=3"
-
-/obj/item/mecha_parts/part/durand_left_leg
- name = "\improper Durand left leg"
- desc = "A Durand left leg. Built particlarly sturdy to support the Durand's heavy weight and defensive needs."
- icon_state = "durand_l_leg"
- origin_tech = "programming=2;materials=3;engineering=3"
-
-/obj/item/mecha_parts/part/durand_right_leg
- name = "\improper Durand right leg"
- desc = "A Durand right leg. Built particlarly sturdy to support the Durand's heavy weight and defensive needs."
- icon_state = "durand_r_leg"
- origin_tech = "programming=2;materials=3;engineering=3"
-
-/obj/item/mecha_parts/part/durand_armor
- gender = PLURAL
- name = "\improper Durand armor plates"
- desc = "A set of armor plates for the Durand. Built heavy to resist an incredible amount of brute force."
- icon_state = "durand_armor"
- origin_tech = "materials=5;combat=4;engineering=4"
-
-////////// Firefighter
-
-/obj/item/mecha_parts/chassis/firefighter
- name = "Firefighter chassis"
-
-/obj/item/mecha_parts/chassis/firefighter/New()
- ..()
- construct = new /datum/construction/mecha/firefighter_chassis(src)
-
-
-////////// HONK
-
-/obj/item/mecha_parts/chassis/honker
- name = "\improper H.O.N.K chassis"
-
-/obj/item/mecha_parts/chassis/honker/New()
- ..()
- construct = new /datum/construction/mecha/honker_chassis(src)
-
-/obj/item/mecha_parts/part/honker_torso
- name = "\improper H.O.N.K torso"
- desc = "A torso part of H.O.N.K. Contains chuckle unit, bananium core and honk support systems."
- icon_state = "honker_harness"
-
-/obj/item/mecha_parts/part/honker_head
- name = "\improper H.O.N.K head"
- desc = "A H.O.N.K head. Appears to lack a face plate."
- icon_state = "honker_head"
-
-/obj/item/mecha_parts/part/honker_left_arm
- name = "\improper H.O.N.K left arm"
- desc = "A H.O.N.K left arm. With unique sockets that accept odd weaponry designed by clown scientists."
- icon_state = "honker_l_arm"
-
-/obj/item/mecha_parts/part/honker_right_arm
- name = "\improper H.O.N.K right arm"
- desc = "A H.O.N.K right arm. With unique sockets that accept odd weaponry designed by clown scientists."
- icon_state = "honker_r_arm"
-
-/obj/item/mecha_parts/part/honker_left_leg
- name = "\improper H.O.N.K left leg"
- desc = "A H.O.N.K left leg. The foot appears just large enough to fully accommodate a clown shoe."
- icon_state = "honker_l_leg"
-
-/obj/item/mecha_parts/part/honker_right_leg
- name = "\improper H.O.N.K right leg"
- desc = "A H.O.N.K right leg. The foot appears just large enough to fully accommodate a clown shoe."
- icon_state = "honker_r_leg"
-
-
-////////// Phazon
-
-/obj/item/mecha_parts/chassis/phazon
- name = "\improper Phazon chassis"
-
-/obj/item/mecha_parts/chassis/phazon/New()
- ..()
- construct = new /datum/construction/mecha/phazon_chassis(src)
-
-/obj/item/mecha_parts/part/phazon_torso
- name="\improper Phazon torso"
- desc="A Phazon torso part. The socket for the bluespace core that powers the exosuit's unique phase drives is located in the middle."
- icon_state = "phazon_harness"
- origin_tech = "programming=4;materials=4;bluespace=4;plasmatech=5"
-
-/obj/item/mecha_parts/part/phazon_head
- name="\improper Phazon head"
- desc="A Phazon head. Its sensors are carefully calibrated to provide vision and data even when the exosuit is phasing."
- icon_state = "phazon_head"
- origin_tech = "programming=3;materials=3;magnets=3"
-
-/obj/item/mecha_parts/part/phazon_left_arm
- name="\improper Phazon left arm"
- desc="A Phazon left arm. Several microtool arrays are located under the armor plating, which can be adjusted to the situation at hand."
- icon_state = "phazon_l_arm"
- origin_tech = "materials=3;bluespace=3;magnets=3"
-
-/obj/item/mecha_parts/part/phazon_right_arm
- name="\improper Phazon right arm"
- desc="A Phazon right arm. Several microtool arrays are located under the armor plating, which can be adjusted to the situation at hand."
- icon_state = "phazon_r_arm"
- origin_tech = "materials=3;bluespace=3;magnets=3"
-
-/obj/item/mecha_parts/part/phazon_left_leg
- name="\improper Phazon left leg"
- desc="A Phazon left leg. It contains the unique phase drives that allow the exosuit to phase through solid matter when engaged."
- icon_state = "phazon_l_leg"
- origin_tech = "materials=3;bluespace=3;magnets=3"
-
-/obj/item/mecha_parts/part/phazon_right_leg
- name="\improper Phazon right leg"
- desc="A Phazon right leg. It contains the unique phase drives that allow the exosuit to phase through solid matter when engaged."
- icon_state = "phazon_r_leg"
- origin_tech = "materials=3;bluespace=3;magnets=3"
-
-/obj/item/mecha_parts/part/phazon_armor
- name="Phazon armor"
- desc="Phazon armor plates. They are layered with plasma to protect the pilot from the stress of phasing and have unusual properties."
- icon_state = "phazon_armor"
- origin_tech = "materials=4;bluespace=4;plasmatech=5"
-
-
-///////// Circuitboards
-
-/obj/item/circuitboard/mecha
- name = "exosuit circuit board"
- icon = 'icons/obj/module.dmi'
- icon_state = "std_mod"
- item_state = "electronic"
+ origin_tech = "programming=2;materials=2;engineering=2"
+
+/obj/item/mecha_parts/chassis
+ name="Mecha Chassis"
+ icon_state = "backbone"
+ var/datum/construction/construct
+
+/obj/item/mecha_parts/chassis/attackby(obj/item/W, mob/user, params)
+ if(!construct || !construct.action(W, user))
+ return ..()
+
+/obj/item/mecha_parts/chassis/attack_hand()
+ return
+
+/////////// Ripley
+
+/obj/item/mecha_parts/chassis/ripley
+ name = "\improper Ripley chassis"
+
+/obj/item/mecha_parts/chassis/ripley/New()
+ ..()
+ construct = new /datum/construction/mecha/ripley_chassis(src)
+
+/obj/item/mecha_parts/part/ripley_torso
+ name = "\improper Ripley torso"
+ desc = "A torso part of Ripley APLU. Contains power unit, processing core and life support systems."
+ icon_state = "ripley_harness"
+ origin_tech = "programming=2;materials=2;biotech=2;engineering=2"
+
+/obj/item/mecha_parts/part/ripley_left_arm
+ name = "\improper Ripley left arm"
+ desc = "A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "ripley_l_arm"
+
+/obj/item/mecha_parts/part/ripley_right_arm
+ name = "\improper Ripley right arm"
+ desc = "A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
+ icon_state = "ripley_r_arm"
+
+/obj/item/mecha_parts/part/ripley_left_leg
+ name = "\improper Ripley left leg"
+ desc = "A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
+ icon_state = "ripley_l_leg"
+
+/obj/item/mecha_parts/part/ripley_right_leg
+ name = "\improper Ripley right leg"
+ desc = "A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
+ icon_state = "ripley_r_leg"
+
+///////// Odysseus
+
+/obj/item/mecha_parts/chassis/odysseus
+ name = "\improper Odysseus chassis"
+
+/obj/item/mecha_parts/chassis/odysseus/New()
+ ..()
+ construct = new /datum/construction/mecha/odysseus_chassis(src)
+
+/obj/item/mecha_parts/part/odysseus_head
+ name = "\improper Odysseus head"
+ desc = "An Odysseus head. Contains an integrated medical HUD scanner."
+ icon_state = "odysseus_head"
+
+/obj/item/mecha_parts/part/odysseus_torso
+ name = "\improper Odysseus torso"
+ desc="A torso part of Odysseus. Contains power unit, processing core and life support systems along with an attachment port for a mounted sleeper."
+ icon_state = "odysseus_torso"
+ origin_tech = "programming=2;materials=2;biotech=2;engineering=2"
+
+/obj/item/mecha_parts/part/odysseus_left_arm
+ name = "\improper Odysseus left arm"
+ desc = "An Odysseus left arm. Data and power sockets are compatible with specialized medical equipment."
+ icon_state = "odysseus_l_arm"
+
+/obj/item/mecha_parts/part/odysseus_right_arm
+ name = "\improper Odysseus right arm"
+ desc = "An Odysseus right arm. Data and power sockets are compatible with specialized medical equipment."
+ icon_state = "odysseus_r_arm"
+
+/obj/item/mecha_parts/part/odysseus_left_leg
+ name = "\improper Odysseus left leg"
+ desc = "An Odysseus left leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients."
+ icon_state = "odysseus_l_leg"
+
+/obj/item/mecha_parts/part/odysseus_right_leg
+ name = "\improper Odysseus right leg"
+ desc = "An odysseus right leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients."
+ icon_state = "odysseus_r_leg"
+
+///////// Gygax
+
+/obj/item/mecha_parts/chassis/gygax
+ name = "\improper Gygax chassis"
+
+/obj/item/mecha_parts/chassis/gygax/New()
+ ..()
+ construct = new /datum/construction/mecha/gygax_chassis(src)
+
+/obj/item/mecha_parts/part/gygax_torso
+ name = "\improper Gygax torso"
+ desc = "A torso part of Gygax. Contains power unit, processing core and life support systems."
+ icon_state = "gygax_harness"
+ origin_tech = "programming=2;materials=4;biotech=3;engineering=3"
+
+/obj/item/mecha_parts/part/gygax_head
+ name = "\improper Gygax head"
+ desc = "A Gygax head. Houses advanced surveillance and targeting sensors."
+ icon_state = "gygax_head"
+ origin_tech = "programming=2;materials=4;magnets=3;engineering=3"
+
+/obj/item/mecha_parts/part/gygax_left_arm
+ name = "\improper Gygax left arm"
+ desc = "A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
+ icon_state = "gygax_l_arm"
+ origin_tech = "programming=2;materials=4;engineering=3"
+
+/obj/item/mecha_parts/part/gygax_right_arm
+ name = "\improper Gygax right arm"
+ desc = "A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
+ icon_state = "gygax_r_arm"
+ origin_tech = "programming=2;materials=4;engineering=3"
+
+/obj/item/mecha_parts/part/gygax_left_leg
+ name = "\improper Gygax left leg"
+ desc = "A Gygax left leg. Constructed with advanced servomechanisms and actuators to enable faster speed."
+ icon_state = "gygax_l_leg"
+ origin_tech = "programming=2;materials=4;engineering=3"
+
+/obj/item/mecha_parts/part/gygax_right_leg
+ name = "\improper Gygax right leg"
+ desc = "A Gygax right leg. Constructed with advanced servomechanisms and actuators to enable faster speed."
+ icon_state = "gygax_r_leg"
+ origin_tech = "programming=2;materials=4;engineering=3"
+
+/obj/item/mecha_parts/part/gygax_armor
+ gender = PLURAL
+ name = "\improper Gygax armor plates"
+ desc = "A set of armor plates designed for the Gygax. Designed to effectively deflect damage with a lightweight construction."
+ icon_state = "gygax_armor"
+ origin_tech = "materials=6;combat=4;engineering=4"
+
+
+//////////// Durand
+
+/obj/item/mecha_parts/chassis/durand
+ name = "\improper Durand chassis"
+
+/obj/item/mecha_parts/chassis/durand/New()
+ ..()
+ construct = new /datum/construction/mecha/durand_chassis(src)
+
+/obj/item/mecha_parts/part/durand_torso
+ name = "\improper Durand torso"
+ desc = "A torso part of Durand. Contains power unit, processing core and life support systems within a robust protective frame."
+ icon_state = "durand_harness"
+ origin_tech = "programming=2;materials=3;biotech=3;engineering=3"
+
+/obj/item/mecha_parts/part/durand_head
+ name = "\improper Durand head"
+ desc = "A Durand head. Houses advanced surveillance and targeting sensors."
+ icon_state = "durand_head"
+ origin_tech = "programming=2;materials=3;magnets=3;engineering=3"
+
+/obj/item/mecha_parts/part/durand_left_arm
+ name = "\improper Durand left arm"
+ desc = "A Durand left arm. Data and power sockets are compatible with most exosuit tools and weapons. Packs a really mean punch as well."
+ icon_state = "durand_l_arm"
+ origin_tech = "programming=2;materials=3;engineering=3"
+
+/obj/item/mecha_parts/part/durand_right_arm
+ name = "\improper Durand right arm"
+ desc = "A Durand right arm. Data and power sockets are compatible with most exosuit tools and weapons. Packs a really mean punch as well."
+ icon_state = "durand_r_arm"
+ origin_tech = "programming=2;materials=3;engineering=3"
+
+/obj/item/mecha_parts/part/durand_left_leg
+ name = "\improper Durand left leg"
+ desc = "A Durand left leg. Built particlarly sturdy to support the Durand's heavy weight and defensive needs."
+ icon_state = "durand_l_leg"
+ origin_tech = "programming=2;materials=3;engineering=3"
+
+/obj/item/mecha_parts/part/durand_right_leg
+ name = "\improper Durand right leg"
+ desc = "A Durand right leg. Built particlarly sturdy to support the Durand's heavy weight and defensive needs."
+ icon_state = "durand_r_leg"
+ origin_tech = "programming=2;materials=3;engineering=3"
+
+/obj/item/mecha_parts/part/durand_armor
+ gender = PLURAL
+ name = "\improper Durand armor plates"
+ desc = "A set of armor plates for the Durand. Built heavy to resist an incredible amount of brute force."
+ icon_state = "durand_armor"
+ origin_tech = "materials=5;combat=4;engineering=4"
+
+////////// Firefighter
+
+/obj/item/mecha_parts/chassis/firefighter
+ name = "Firefighter chassis"
+
+/obj/item/mecha_parts/chassis/firefighter/New()
+ ..()
+ construct = new /datum/construction/mecha/firefighter_chassis(src)
+
+
+////////// HONK
+
+/obj/item/mecha_parts/chassis/honker
+ name = "\improper H.O.N.K chassis"
+
+/obj/item/mecha_parts/chassis/honker/New()
+ ..()
+ construct = new /datum/construction/mecha/honker_chassis(src)
+
+/obj/item/mecha_parts/part/honker_torso
+ name = "\improper H.O.N.K torso"
+ desc = "A torso part of H.O.N.K. Contains chuckle unit, bananium core and honk support systems."
+ icon_state = "honker_harness"
+
+/obj/item/mecha_parts/part/honker_head
+ name = "\improper H.O.N.K head"
+ desc = "A H.O.N.K head. Appears to lack a face plate."
+ icon_state = "honker_head"
+
+/obj/item/mecha_parts/part/honker_left_arm
+ name = "\improper H.O.N.K left arm"
+ desc = "A H.O.N.K left arm. With unique sockets that accept odd weaponry designed by clown scientists."
+ icon_state = "honker_l_arm"
+
+/obj/item/mecha_parts/part/honker_right_arm
+ name = "\improper H.O.N.K right arm"
+ desc = "A H.O.N.K right arm. With unique sockets that accept odd weaponry designed by clown scientists."
+ icon_state = "honker_r_arm"
+
+/obj/item/mecha_parts/part/honker_left_leg
+ name = "\improper H.O.N.K left leg"
+ desc = "A H.O.N.K left leg. The foot appears just large enough to fully accommodate a clown shoe."
+ icon_state = "honker_l_leg"
+
+/obj/item/mecha_parts/part/honker_right_leg
+ name = "\improper H.O.N.K right leg"
+ desc = "A H.O.N.K right leg. The foot appears just large enough to fully accommodate a clown shoe."
+ icon_state = "honker_r_leg"
+
+
+////////// Phazon
+
+/obj/item/mecha_parts/chassis/phazon
+ name = "\improper Phazon chassis"
+
+/obj/item/mecha_parts/chassis/phazon/New()
+ ..()
+ construct = new /datum/construction/mecha/phazon_chassis(src)
+
+/obj/item/mecha_parts/part/phazon_torso
+ name="\improper Phazon torso"
+ desc="A Phazon torso part. The socket for the bluespace core that powers the exosuit's unique phase drives is located in the middle."
+ icon_state = "phazon_harness"
+ origin_tech = "programming=4;materials=4;bluespace=4;plasmatech=5"
+
+/obj/item/mecha_parts/part/phazon_head
+ name="\improper Phazon head"
+ desc="A Phazon head. Its sensors are carefully calibrated to provide vision and data even when the exosuit is phasing."
+ icon_state = "phazon_head"
+ origin_tech = "programming=3;materials=3;magnets=3"
+
+/obj/item/mecha_parts/part/phazon_left_arm
+ name="\improper Phazon left arm"
+ desc="A Phazon left arm. Several microtool arrays are located under the armor plating, which can be adjusted to the situation at hand."
+ icon_state = "phazon_l_arm"
+ origin_tech = "materials=3;bluespace=3;magnets=3"
+
+/obj/item/mecha_parts/part/phazon_right_arm
+ name="\improper Phazon right arm"
+ desc="A Phazon right arm. Several microtool arrays are located under the armor plating, which can be adjusted to the situation at hand."
+ icon_state = "phazon_r_arm"
+ origin_tech = "materials=3;bluespace=3;magnets=3"
+
+/obj/item/mecha_parts/part/phazon_left_leg
+ name="\improper Phazon left leg"
+ desc="A Phazon left leg. It contains the unique phase drives that allow the exosuit to phase through solid matter when engaged."
+ icon_state = "phazon_l_leg"
+ origin_tech = "materials=3;bluespace=3;magnets=3"
+
+/obj/item/mecha_parts/part/phazon_right_leg
+ name="\improper Phazon right leg"
+ desc="A Phazon right leg. It contains the unique phase drives that allow the exosuit to phase through solid matter when engaged."
+ icon_state = "phazon_r_leg"
+ origin_tech = "materials=3;bluespace=3;magnets=3"
+
+/obj/item/mecha_parts/part/phazon_armor
+ name="Phazon armor"
+ desc="Phazon armor plates. They are layered with plasma to protect the pilot from the stress of phasing and have unusual properties."
+ icon_state = "phazon_armor"
+ origin_tech = "materials=4;bluespace=4;plasmatech=5"
+
+
+///////// Circuitboards
+
+/obj/item/circuitboard/mecha
+ name = "exosuit circuit board"
+ icon = 'icons/obj/module.dmi'
+ icon_state = "std_mod"
+ item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
flags_1 = CONDUCT_1
- force = 5
- w_class = WEIGHT_CLASS_SMALL
- throwforce = 0
- throw_speed = 3
- throw_range = 7
-
-/obj/item/circuitboard/mecha/ripley
- origin_tech = "programming=2"
-
-/obj/item/circuitboard/mecha/ripley/peripherals
- name = "Ripley Peripherals Control module (Exosuit Board)"
- icon_state = "mcontroller"
-
-/obj/item/circuitboard/mecha/ripley/main
- name = "Ripley Central Control module (Exosuit Board)"
- icon_state = "mainboard"
-
-/obj/item/circuitboard/mecha/gygax
- origin_tech = "programming=4;combat=3;engineering=3"
-
-/obj/item/circuitboard/mecha/gygax/peripherals
- name = "Gygax Peripherals Control module (Exosuit Board)"
- icon_state = "mcontroller"
-
-/obj/item/circuitboard/mecha/gygax/targeting
- name = "Gygax Weapon Control and Targeting module (Exosuit Board)"
- icon_state = "mcontroller"
- origin_tech = "programming=4;combat=4"
-
-/obj/item/circuitboard/mecha/gygax/main
- name = "Gygax Central Control module (Exosuit Board)"
- icon_state = "mainboard"
-
-/obj/item/circuitboard/mecha/durand
- origin_tech = "programming=4;combat=3;engineering=3"
-
-/obj/item/circuitboard/mecha/durand/peripherals
- name = "Durand Peripherals Control module (Exosuit Board)"
- icon_state = "mcontroller"
-
-/obj/item/circuitboard/mecha/durand/targeting
- name = "Durand Weapon Control and Targeting module (Exosuit Board)"
- icon_state = "mcontroller"
- origin_tech = "programming=4;combat=4;engineering=3"
-
-/obj/item/circuitboard/mecha/durand/main
- name = "Durand Central Control module (Exosuit Board)"
- icon_state = "mainboard"
-
-/obj/item/circuitboard/mecha/honker
- origin_tech = "programming=3;engineering=3"
-
-/obj/item/circuitboard/mecha/honker/peripherals
- name = "H.O.N.K Peripherals Control module (Exosuit Board)"
- icon_state = "mcontroller"
-
-/obj/item/circuitboard/mecha/honker/targeting
- name = "H.O.N.K Weapon Control and Targeting module (Exosuit Board)"
- icon_state = "mcontroller"
-
-/obj/item/circuitboard/mecha/honker/main
- name = "H.O.N.K Central Control module (Exosuit Board)"
- icon_state = "mainboard"
-
-/obj/item/circuitboard/mecha/odysseus
- origin_tech = "programming=3;biotech=3"
-
-/obj/item/circuitboard/mecha/odysseus/peripherals
- name = "Odysseus Peripherals Control module (Exosuit Board)"
- icon_state = "mcontroller"
-
-/obj/item/circuitboard/mecha/odysseus/main
- name = "Odysseus Central Control module (Exosuit Board)"
- icon_state = "mainboard"
-
-/obj/item/circuitboard/mecha/phazon
- origin_tech = "programming=5;plasmatech=4"
-
-/obj/item/circuitboard/mecha/phazon/peripherals
- name = "Phazon Peripherals Control module (Exosuit Board)"
- icon_state = "mcontroller"
-
-/obj/item/circuitboard/mecha/phazon/targeting
- name = "Phazon Weapon Control and Targeting module (Exosuit Board)"
- icon_state = "mcontroller"
-
-/obj/item/circuitboard/mecha/phazon/main
- name = "Phazon Central Control module (Exosuit Board)"
+ force = 5
+ w_class = WEIGHT_CLASS_SMALL
+ throwforce = 0
+ throw_speed = 3
+ throw_range = 7
+
+/obj/item/circuitboard/mecha/ripley
+ origin_tech = "programming=2"
+
+/obj/item/circuitboard/mecha/ripley/peripherals
+ name = "Ripley Peripherals Control module (Exosuit Board)"
+ icon_state = "mcontroller"
+
+/obj/item/circuitboard/mecha/ripley/main
+ name = "Ripley Central Control module (Exosuit Board)"
+ icon_state = "mainboard"
+
+/obj/item/circuitboard/mecha/gygax
+ origin_tech = "programming=4;combat=3;engineering=3"
+
+/obj/item/circuitboard/mecha/gygax/peripherals
+ name = "Gygax Peripherals Control module (Exosuit Board)"
+ icon_state = "mcontroller"
+
+/obj/item/circuitboard/mecha/gygax/targeting
+ name = "Gygax Weapon Control and Targeting module (Exosuit Board)"
+ icon_state = "mcontroller"
+ origin_tech = "programming=4;combat=4"
+
+/obj/item/circuitboard/mecha/gygax/main
+ name = "Gygax Central Control module (Exosuit Board)"
+ icon_state = "mainboard"
+
+/obj/item/circuitboard/mecha/durand
+ origin_tech = "programming=4;combat=3;engineering=3"
+
+/obj/item/circuitboard/mecha/durand/peripherals
+ name = "Durand Peripherals Control module (Exosuit Board)"
+ icon_state = "mcontroller"
+
+/obj/item/circuitboard/mecha/durand/targeting
+ name = "Durand Weapon Control and Targeting module (Exosuit Board)"
+ icon_state = "mcontroller"
+ origin_tech = "programming=4;combat=4;engineering=3"
+
+/obj/item/circuitboard/mecha/durand/main
+ name = "Durand Central Control module (Exosuit Board)"
+ icon_state = "mainboard"
+
+/obj/item/circuitboard/mecha/honker
+ origin_tech = "programming=3;engineering=3"
+
+/obj/item/circuitboard/mecha/honker/peripherals
+ name = "H.O.N.K Peripherals Control module (Exosuit Board)"
+ icon_state = "mcontroller"
+
+/obj/item/circuitboard/mecha/honker/targeting
+ name = "H.O.N.K Weapon Control and Targeting module (Exosuit Board)"
+ icon_state = "mcontroller"
+
+/obj/item/circuitboard/mecha/honker/main
+ name = "H.O.N.K Central Control module (Exosuit Board)"
+ icon_state = "mainboard"
+
+/obj/item/circuitboard/mecha/odysseus
+ origin_tech = "programming=3;biotech=3"
+
+/obj/item/circuitboard/mecha/odysseus/peripherals
+ name = "Odysseus Peripherals Control module (Exosuit Board)"
+ icon_state = "mcontroller"
+
+/obj/item/circuitboard/mecha/odysseus/main
+ name = "Odysseus Central Control module (Exosuit Board)"
+ icon_state = "mainboard"
+
+/obj/item/circuitboard/mecha/phazon
+ origin_tech = "programming=5;plasmatech=4"
+
+/obj/item/circuitboard/mecha/phazon/peripherals
+ name = "Phazon Peripherals Control module (Exosuit Board)"
+ icon_state = "mcontroller"
+
+/obj/item/circuitboard/mecha/phazon/targeting
+ name = "Phazon Weapon Control and Targeting module (Exosuit Board)"
+ icon_state = "mcontroller"
+
+/obj/item/circuitboard/mecha/phazon/main
+ name = "Phazon Central Control module (Exosuit Board)"
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index f09ae53e31..3f32b18178 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -283,13 +283,13 @@
var/area/A = get_area(location)
var/where = "[A.name] | [location.x], [location.y]"
- var/whereLink = "
[where]"
+ var/whereLink = "
[where]"
if(carry.my_atom.fingerprintslast)
var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast)
var/more = ""
if(M)
- more = "(
?) (
FLW) "
+ more = "(
?) (
FLW) "
message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1)
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
else
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index e0cec3af02..7401797a47 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -160,7 +160,7 @@
/obj/effect/landmark/start/wizard/Initialize(mapload)
..()
GLOB.wizardstart += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/landmark/start/new_player
name = "New Player"
@@ -173,7 +173,7 @@
/obj/effect/landmark/start/new_player/Initialize(mapload)
..()
- qdel(src)
+ return INITIALIZE_HINT_QDEL
@@ -183,7 +183,7 @@
/obj/effect/landmark/latejoin/Initialize(mapload)
..()
SSjob.latejoin_trackers += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
// carp.
/obj/effect/landmark/carpspawn
@@ -229,7 +229,7 @@
/obj/effect/landmark/xeno_spawn/Initialize(mapload)
..()
GLOB.xeno_spawn += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
// blobs.
/obj/effect/landmark/blobstart
@@ -238,7 +238,7 @@
/obj/effect/landmark/blobstart/Initialize(mapload)
..()
GLOB.blobstart += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/landmark/secequipment
name = "secequipment"
@@ -246,7 +246,7 @@
/obj/effect/landmark/secequipment/Initialize(mapload)
..()
GLOB.secequipment += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/landmark/prisonwarp
name = "prisonwarp"
@@ -254,15 +254,15 @@
/obj/effect/landmark/prisonwarp/Initialize(mapload)
..()
GLOB.prisonwarp += loc
- qdel(src)
-
+ return INITIALIZE_HINT_QDEL
+
/obj/effect/landmark/ert_spawn
name = "Emergencyresponseteam"
/obj/effect/landmark/ert_spawn/Initialize(mapload)
..()
GLOB.emergencyresponseteamspawn += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/landmark/holding_facility
name = "Holding Facility"
@@ -270,7 +270,7 @@
/obj/effect/landmark/holding_facility/Initialize(mapload)
..()
GLOB.holdingfacility += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/landmark/thunderdome/observe
name = "tdomeobserve"
@@ -278,7 +278,7 @@
/obj/effect/landmark/thunderdome/observe/Initialize(mapload)
..()
GLOB.tdomeobserve += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/landmark/thunderdome/one
name = "tdome1"
@@ -286,7 +286,7 @@
/obj/effect/landmark/thunderdome/one/Initialize(mapload)
..()
GLOB.tdome1 += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/landmark/thunderdome/two
name = "tdome2"
@@ -294,7 +294,7 @@
/obj/effect/landmark/thunderdome/two/Initialize(mapload)
..()
GLOB.tdome2 += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/landmark/thunderdome/admin
name = "tdomeadmin"
@@ -302,7 +302,7 @@
/obj/effect/landmark/thunderdome/admin/Initialize(mapload)
..()
GLOB.tdomeadmin += loc
- qdel(src)
+ return INITIALIZE_HINT_QDEL
//generic event spawns
/obj/effect/landmark/event_spawn
@@ -330,4 +330,4 @@
/obj/effect/landmark/ruin/Destroy()
GLOB.ruin_landmarks -= src
ruin_template = null
- . = ..()
+ . = ..()
\ No newline at end of file
diff --git a/code/game/objects/effects/spawners/bundle.dm b/code/game/objects/effects/spawners/bundle.dm
index cfe8761b84..be32f0df19 100644
--- a/code/game/objects/effects/spawners/bundle.dm
+++ b/code/game/objects/effects/spawners/bundle.dm
@@ -12,7 +12,7 @@
var/turf/T = get_turf(src)
for(var/path in items)
new path(T)
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/spawner/bundle/costume/chicken
name = "chicken costume spawner"
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index 94cabaf6e1..2bfce20ccd 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -18,7 +18,7 @@
if(lootspawn)
new lootspawn(T)
lootcount--
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/effect/spawner/lootdrop/armory_contraband
name = "armory contraband gun spawner"
@@ -89,7 +89,7 @@
/obj/effect/spawner/lootdrop/maintenance/Initialize(mapload)
loot = GLOB.maintenance_loot
- ..()
+ . = ..()
/obj/effect/spawner/lootdrop/crate_spawner
name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF!
@@ -130,7 +130,7 @@
loot = list()
for(var/path in subtypesof(/obj/effect/spawner/bundle/costume))
loot[path] = TRUE
- ..()
+ . = ..()
// Minor lootdrops follow
@@ -162,4 +162,4 @@
name = "25% cyborg mask spawner"
loot = list(
/obj/item/clothing/mask/gas/cyborg = 25,
- "" = 75)
+ "" = 75)
\ No newline at end of file
diff --git a/code/game/objects/effects/spawners/structure.dm b/code/game/objects/effects/spawners/structure.dm
index 94c301991c..285aeeaf8c 100644
--- a/code/game/objects/effects/spawners/structure.dm
+++ b/code/game/objects/effects/spawners/structure.dm
@@ -9,7 +9,7 @@ again.
var/list/spawn_list
/obj/effect/spawner/structure/Initialize()
- ..()
+ . = ..()
if(spawn_list && spawn_list.len)
for(var/I in spawn_list)
new I(get_turf(src))
@@ -22,145 +22,130 @@ again.
icon = 'icons/obj/structures_spawners.dmi'
icon_state = "window_spawner"
name = "window spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/fulltile)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/fulltile)
+ dir = SOUTH
/obj/effect/spawner/structure/window/hollow
name = "hollow window spawner"
icon_state = "hwindow_spawner_full"
- spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/north, /obj/structure/window/spawner/east, /obj/structure/window/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/corner
- icon_state = "hwindow_spawner_corner_se"
- spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/corner/northeast
- icon_state = "hwindow_spawner_corner_ne"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/north, /obj/structure/window/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/corner/northwest
- icon_state = "hwindow_spawner_corner_nw"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/north, /obj/structure/window/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/corner/southwest
- icon_state = "hwindow_spawner_corner_sw"
- spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/west)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/north, /obj/structure/window/spawner/east, /obj/structure/window/spawner/west)
/obj/effect/spawner/structure/window/hollow/end
- icon_state = "hwindow_spawner_end_s"
- spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/east, /obj/structure/window/spawner/west)
+ icon_state = "hwindow_spawner_end"
-/obj/effect/spawner/structure/window/hollow/end/north
- icon_state = "hwindow_spawner_end_n"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/north, /obj/structure/window/spawner/east, /obj/structure/window/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/end/east
- icon_state = "hwindow_spawner_end_e"
- spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/north, /obj/structure/window/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/end/west
- icon_state = "hwindow_spawner_end_w"
- spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/north, /obj/structure/window/spawner/west)
+/obj/effect/spawner/structure/window/hollow/end/Initialize()
+ switch(dir)
+ if(NORTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/north, /obj/structure/window/spawner/east, /obj/structure/window/spawner/west)
+ if(EAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/north, /obj/structure/window/spawner/east)
+ if(SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/east, /obj/structure/window/spawner/west)
+ if(WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/north, /obj/structure/window/spawner/west)
+ . = ..()
/obj/effect/spawner/structure/window/hollow/middle
- icon_state = "hwindow_spawner_ns"
- spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/north)
+ icon_state = "hwindow_spawner_middle"
-/obj/effect/spawner/structure/window/hollow/middle/vertical
- icon_state = "hwindow_spawner_ew"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/east, /obj/structure/window/spawner/west)
+/obj/effect/spawner/structure/window/hollow/middle/Initialize()
+ switch(dir)
+ if(NORTH,SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/north)
+ if(EAST,WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/east, /obj/structure/window/spawner/west)
+ . = ..()
-/obj/effect/spawner/structure/window/hollow/one_side
- icon_state = "hwindow_spawner_single_s"
- spawn_list = list(/obj/structure/grille, /obj/structure/window)
-
-/obj/effect/spawner/structure/window/hollow/one_side/north
- icon_state = "hwindow_spawner_single_n"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/north)
-
-/obj/effect/spawner/structure/window/hollow/one_side/east
- icon_state = "hwindow_spawner_single_e"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/one_side/west
- icon_state = "hwindow_spawner_single_w"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/west)
+/obj/effect/spawner/structure/window/hollow/directional
+ icon_state = "hwindow_spawner_directional"
+/obj/effect/spawner/structure/window/hollow/directional/Initialize()
+ switch(dir)
+ if(NORTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/north)
+ if(NORTHEAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/north, /obj/structure/window/spawner/east)
+ if(EAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/east)
+ if(SOUTHEAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/east)
+ if(SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window)
+ if(SOUTHWEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window, /obj/structure/window/spawner/west)
+ if(WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/west)
+ if(NORTHWEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/spawner/north, /obj/structure/window/spawner/west)
+ . = ..()
//reinforced
/obj/effect/spawner/structure/window/reinforced
name = "reinforced window spawner"
icon_state = "rwindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/fulltile)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/fulltile)
/obj/effect/spawner/structure/window/hollow/reinforced
name = "hollow reinforced window spawner"
icon_state = "hrwindow_spawner_full"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/reinforced/corner
- icon_state = "hrwindow_spawner_corner_se"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northeast
- icon_state = "hrwindow_spawner_corner_ne"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/northwest
- icon_state = "hrwindow_spawner_corner_nw"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/reinforced/corner/southwest
- icon_state = "hrwindow_spawner_corner_sw"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/west)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/west)
/obj/effect/spawner/structure/window/hollow/reinforced/end
- icon_state = "hrwindow_spawner_end_s"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/west)
+ icon_state = "hrwindow_spawner_end"
-/obj/effect/spawner/structure/window/hollow/reinforced/end/north
- icon_state = "hrwindow_spawner_end_n"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/reinforced/end/east
- icon_state = "hrwindow_spawner_end_e"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/reinforced/end/west
- icon_state = "hrwindow_spawner_end_w"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/west)
+/obj/effect/spawner/structure/window/hollow/reinforced/end/Initialize()
+ switch(dir)
+ if(NORTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/west)
+ if(EAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/east)
+ if(SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/west)
+ if(WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/west)
+ . = ..()
/obj/effect/spawner/structure/window/hollow/reinforced/middle
- icon_state = "hrwindow_spawner_ns"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/north)
+ icon_state = "hrwindow_spawner_middle"
-/obj/effect/spawner/structure/window/hollow/reinforced/middle/vertical
- icon_state = "hrwindow_spawner_ew"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/west)
+/obj/effect/spawner/structure/window/hollow/reinforced/middle/Initialize()
+ switch(dir)
+ if(NORTH,SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/north)
+ if(EAST,WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/east, /obj/structure/window/reinforced/spawner/west)
+ . = ..()
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side
- icon_state = "hrwindow_spawner_single_s"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced)
-
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/north
- icon_state = "hrwindow_spawner_single_n"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/north)
-
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/east
- icon_state = "hrwindow_spawner_single_e"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/reinforced/one_side/west
- icon_state = "hrwindow_spawner_single_w"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/west)
+/obj/effect/spawner/structure/window/hollow/reinforced/directional
+ icon_state = "hrwindow_spawner_directional"
+/obj/effect/spawner/structure/window/hollow/reinforced/directional/Initialize()
+ switch(dir)
+ if(NORTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/north)
+ if(NORTHEAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/east)
+ if(EAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/east)
+ if(SOUTHEAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/east)
+ if(SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced)
+ if(SOUTHWEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced, /obj/structure/window/reinforced/spawner/west)
+ if(WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/west)
+ if(NORTHWEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/west)
+ . = ..()
//tinted
/obj/effect/spawner/structure/window/reinforced/tinted
name = "tinted reinforced window spawner"
icon_state = "twindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/tinted/fulltile)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/tinted/fulltile)
//shuttle window
@@ -168,7 +153,7 @@ again.
/obj/effect/spawner/structure/window/shuttle
name = "reinforced tinted window spawner"
icon_state = "swindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/shuttle)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/shuttle)
//plasma windows
@@ -176,134 +161,119 @@ again.
/obj/effect/spawner/structure/window/plasma
name = "plasma window spawner"
icon_state = "pwindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/fulltile)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/fulltile)
/obj/effect/spawner/structure/window/hollow/plasma
name = "hollow plasma window spawner"
icon_state = "phwindow_spawner_full"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/east, /obj/structure/window/plasma/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/plasma/corner
- icon_state = "phwindow_spawner_corner_se"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/plasma/corner/northeast
- icon_state = "phwindow_spawner_corner_ne"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/plasma/corner/northwest
- icon_state = "phwindow_spawner_corner_nw"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/plasma/corner/southwest
- icon_state = "phwindow_spawner_corner_sw"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/west)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/east, /obj/structure/window/plasma/spawner/west)
/obj/effect/spawner/structure/window/hollow/plasma/end
- icon_state = "phwindow_spawner_end_s"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/east, /obj/structure/window/plasma/spawner/west)
+ icon_state = "phwindow_spawner_end"
-/obj/effect/spawner/structure/window/hollow/plasma/end/north
- icon_state = "phwindow_spawner_end_n"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/east, /obj/structure/window/plasma/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/plasma/end/east
- icon_state = "phwindow_spawner_end_e"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/plasma/end/west
- icon_state = "phwindow_spawner_end_w"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/west)
+/obj/effect/spawner/structure/window/hollow/plasma/end/Initialize()
+ switch(dir)
+ if(NORTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/east, /obj/structure/window/plasma/spawner/west)
+ if(EAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/east)
+ if(SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/east, /obj/structure/window/plasma/spawner/west)
+ if(WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/west)
+ . = ..()
/obj/effect/spawner/structure/window/hollow/plasma/middle
- icon_state = "phwindow_spawner_ns"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/north)
+ icon_state = "phwindow_spawner_middle"
-/obj/effect/spawner/structure/window/hollow/plasma/middle/vertical
- icon_state = "phwindow_spawner_ew"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/east, /obj/structure/window/plasma/spawner/west)
+/obj/effect/spawner/structure/window/hollow/plasma/middle/Initialize()
+ switch(dir)
+ if(NORTH,SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/north)
+ if(EAST,WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/east, /obj/structure/window/plasma/spawner/west)
+ . = ..()
-/obj/effect/spawner/structure/window/hollow/plasma/one_side
- icon_state = "phwindow_spawner_single_s"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma)
-
-/obj/effect/spawner/structure/window/hollow/plasma/one_side/north
- icon_state = "phwindow_spawner_single_n"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/north)
-
-/obj/effect/spawner/structure/window/hollow/plasma/one_side/east
- icon_state = "phwindow_spawner_single_e"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/plasma/one_side/west
- icon_state = "phwindow_spawner_single_w"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/west)
+/obj/effect/spawner/structure/window/hollow/plasma/directional
+ icon_state = "phwindow_spawner_directional"
+/obj/effect/spawner/structure/window/hollow/plasma/directional/Initialize()
+ switch(dir)
+ if(NORTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/north)
+ if(NORTHEAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/east)
+ if(EAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/east)
+ if(SOUTHEAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/east)
+ if(SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma)
+ if(SOUTHWEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma, /obj/structure/window/plasma/spawner/west)
+ if(WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/west)
+ if(NORTHWEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/spawner/north, /obj/structure/window/plasma/spawner/west)
+ . = ..()
//plasma reinforced
/obj/effect/spawner/structure/window/plasma/reinforced
name = "reinforced plasma window spawner"
icon_state = "prwindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/fulltile)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/fulltile)
/obj/effect/spawner/structure/window/hollow/plasma/reinforced
- name = "hollow reinforced plasma window spawner"
+ name = "hollow plasma window spawner"
icon_state = "phrwindow_spawner_full"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/east, /obj/structure/window/plasma/reinforced/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/corner
- icon_state = "phrwindow_spawner_corner_se"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/corner/northeast
- icon_state = "phrwindow_spawner_corner_ne"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/corner/northwest
- icon_state = "phrwindow_spawner_corner_nw"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/corner/southwest
- icon_state = "phrwindow_spawner_corner_sw"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/west)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/east, /obj/structure/window/plasma/reinforced/spawner/west)
/obj/effect/spawner/structure/window/hollow/plasma/reinforced/end
- icon_state = "phrwindow_spawner_end_s"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/east, /obj/structure/window/plasma/reinforced/spawner/west)
+ icon_state = "phrwindow_spawner_end"
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/end/north
- icon_state = "phrwindow_spawner_end_n"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/east, /obj/structure/window/plasma/reinforced/spawner/west)
-
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/end/east
- icon_state = "phrwindow_spawner_end_e"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/end/west
- icon_state = "phrwindow_spawner_end_w"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/west)
+/obj/effect/spawner/structure/window/hollow/plasma/reinforced/end/Initialize()
+ switch(dir)
+ if(NORTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/east, /obj/structure/window/plasma/reinforced/spawner/west)
+ if(EAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/east)
+ if(SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/east, /obj/structure/window/plasma/reinforced/spawner/west)
+ if(WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/west)
+ . = ..()
/obj/effect/spawner/structure/window/hollow/plasma/reinforced/middle
- icon_state = "phrwindow_spawner_ns"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/north)
+ icon_state = "phrwindow_spawner_middle"
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/middle/vertical
- icon_state = "phrwindow_spawner_ew"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/east, /obj/structure/window/plasma/reinforced/spawner/west)
+/obj/effect/spawner/structure/window/hollow/plasma/reinforced/middle/Initialize()
+ switch(dir)
+ if(NORTH,SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/north)
+ if(EAST,WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/east, /obj/structure/window/plasma/reinforced/spawner/west)
+ . = ..()
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/one_side
- icon_state = "phrwindow_spawner_single_s"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced)
+/obj/effect/spawner/structure/window/hollow/plasma/reinforced/directional
+ icon_state = "phrwindow_spawner_directional"
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/one_side/north
- icon_state = "phrwindow_spawner_single_n"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/north)
-
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/one_side/east
- icon_state = "phrwindow_spawner_single_e"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/east)
-
-/obj/effect/spawner/structure/window/hollow/plasma/reinforced/one_side/west
- icon_state = "phrwindow_spawner_single_w"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/west)
+/obj/effect/spawner/structure/window/hollow/plasma/reinforced/directional/Initialize()
+ switch(dir)
+ if(NORTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/north)
+ if(NORTHEAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/east)
+ if(EAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/east)
+ if(SOUTHEAST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/east)
+ if(SOUTH)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced)
+ if(SOUTHWEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced, /obj/structure/window/plasma/reinforced/spawner/west)
+ if(WEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/west)
+ if(NORTHWEST)
+ spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/reinforced/spawner/north, /obj/structure/window/plasma/reinforced/spawner/west)
+ . = ..()
diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm
index a452dae749..593c953adf 100644
--- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm
+++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm
@@ -17,4 +17,4 @@
log_game("An alien egg has been delivered to [A] at [COORD(T)]")
var/message = "Attention [station_name()], we have entrusted you with a research specimen in [A]. Remember to follow all safety precautions when dealing with the specimen."
SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time))
- qdel(src)
+ return INITIALIZE_HINT_QDEL
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index 84c75270f9..7a0faed690 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -91,6 +91,10 @@
var/poison_per_bite = 5
var/list/faction = list("spiders")
+/obj/structure/spider/spiderling/Destroy()
+ new/obj/item/reagent_containers/food/snacks/spiderling(get_turf(src))
+ . = ..()
+
/obj/structure/spider/spiderling/Initialize()
pixel_x = rand(6,-6)
pixel_y = rand(6,-6)
@@ -103,6 +107,15 @@
/obj/structure/spider/spiderling/nurse
grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/nurse
+/obj/structure/spider/spiderling/midwife
+ grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife
+
+/obj/structure/spider/spiderling/viper
+ grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper
+
+/obj/structure/spider/spiderling/tarantula
+ grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/tarantula
+
/obj/structure/spider/spiderling/Collide(atom/user)
if(istype(user, /obj/structure/table))
src.loc = user.loc
@@ -171,7 +184,10 @@
amount_grown += rand(0,2)
if(amount_grown >= 100)
if(!grow_as)
- grow_as = pick(/mob/living/simple_animal/hostile/poison/giant_spider, /mob/living/simple_animal/hostile/poison/giant_spider/hunter, /mob/living/simple_animal/hostile/poison/giant_spider/nurse)
+ if(prob(3))
+ grow_as = pick(/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, /mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper, /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife)
+ else
+ grow_as = pick(/mob/living/simple_animal/hostile/poison/giant_spider, /mob/living/simple_animal/hostile/poison/giant_spider/hunter, /mob/living/simple_animal/hostile/poison/giant_spider/nurse)
var/mob/living/simple_animal/hostile/poison/giant_spider/S = new grow_as(src.loc)
S.poison_per_bite = poison_per_bite
S.poison_type = poison_type
@@ -194,12 +210,12 @@
. = ..()
/obj/structure/spider/cocoon/container_resist(mob/living/user)
- var/breakout_time = 1
+ var/breakout_time = 600
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
- to_chat(user, "
You struggle against the tight bonds... (This will take about [breakout_time] minutes.)")
+ to_chat(user, "
You struggle against the tight bonds... (This will take about [DisplayTimeText(breakout_time)].)")
visible_message("You see something struggling and writhing in \the [src]!")
- if(do_after(user,(breakout_time*60*10), target = src))
+ if(do_after(user,(breakout_time), target = src))
if(!user || user.stat != CONSCIOUS || user.loc != src)
return
qdel(src)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index d8ed75737d..072896ac01 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -61,6 +61,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/equip_delay_other = 20 //In deciseconds, how long an item takes to put on another person
var/strip_delay = 40 //In deciseconds, how long an item takes to remove from another person
var/breakouttime = 0
+ var/being_removed = FALSE
var/list/materials
var/origin_tech = null //Used by R&D to determine what research bonuses it grants.
var/needs_permit = 0 //Used by security bots to determine if this item is safe for public use.
@@ -218,9 +219,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
/obj/item/proc/speechModification(message) //For speech modification by mask slot items.
return message
-/obj/item/attack_self(mob/user)
- interact(user)
-
/obj/item/interact(mob/user)
add_fingerprint(user)
if(hidden_uplink && hidden_uplink.active)
diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm
index 4c4c537859..6e094a5bbb 100644
--- a/code/game/objects/items/RCD.dm
+++ b/code/game/objects/items/RCD.dm
@@ -31,7 +31,7 @@ obj/item/construction
var/no_ammo_message = "
The \'Low Ammo\' light on the device blinks yellow."
/obj/item/construction/Initialize()
- ..()
+ . = ..()
desc = "A [src]. It currently holds [matter]/[max_matter] matter-units."
spark_system = new /datum/effect_system/spark_spread
spark_system.set_up(5, 0, src)
@@ -144,7 +144,7 @@ obj/item/construction
set category = "Object"
set src in usr // What does this do?
- var window_type_name
+ var/window_type_name
if (window_type == /obj/structure/window/fulltile)
window_type = /obj/structure/window/reinforced/fulltile
@@ -240,11 +240,11 @@ obj/item/construction
set category = "Object"
set src in usr
- var airlockcat = input(usr, "Select whether the airlock is solid or glass.") in list("Solid", "Glass")
+ var/airlockcat = input(usr, "Select whether the airlock is solid or glass.") in list("Solid", "Glass")
switch(airlockcat)
if("Solid")
if(advanced_airlock_setting == 1)
- var airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance", "External", "High Security")
+ var/airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance", "External", "High Security")
switch(airlockpaint)
if("Default")
airlock_type = /obj/machinery/door/airlock
@@ -275,7 +275,7 @@ obj/item/construction
if("Glass")
if(advanced_airlock_setting == 1)
- var airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining")
+ var/airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining")
switch(airlockpaint)
if("Default")
airlock_type = /obj/machinery/door/airlock/glass
diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm
index 4aa37253c4..15abe72a52 100644
--- a/code/game/objects/items/RPD.dm
+++ b/code/game/objects/items/RPD.dm
@@ -79,13 +79,14 @@ GLOBAL_LIST_INIT(disposalpipeID2State, list(
//find these defines in code\game\machinery\pipe\consruction.dm
GLOBAL_LIST_INIT(RPD_recipes, list(
- "Regular Pipes" = list(
+ "Pipes" = list(
"Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 1, PIPE_BENDABLE),
//"Bent Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 5, PIPE_BENT),
"Manifold" = new /datum/pipe_info(PIPE_MANIFOLD, 1, PIPE_TRINARY),
"Manual Valve" = new /datum/pipe_info(PIPE_MVALVE, 1, PIPE_BINARY),
"Digital Valve" = new /datum/pipe_info(PIPE_DVALVE, 1, PIPE_BINARY),
"4-Way Manifold" = new /datum/pipe_info(PIPE_4WAYMANIFOLD, 1, PIPE_QUAD),
+ "Bluespace Pipe" = new /datum/pipe_info(PIPE_BLUESPACE, 1, PIPE_UNARY),
),
"Devices"=list(
"Connector" = new /datum/pipe_info(PIPE_CONNECTOR, 1, PIPE_UNARY),
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index f3e78dfac9..bfc8bc9da3 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -160,7 +160,7 @@ update_label("John Doe", "Clowny")
var/anyone = FALSE //Can anyone forge the ID or just syndicate?
/obj/item/card/id/syndicate/Initialize()
- ..()
+ . = ..()
var/datum/action/item_action/chameleon/change/chameleon_action = new(src)
chameleon_action.chameleon_type = /obj/item/card/id
chameleon_action.chameleon_name = "ID Card"
@@ -180,14 +180,14 @@ update_label("John Doe", "Clowny")
if(isliving(user) && user.mind)
if(user.mind.special_role || anyone)
if(alert(user, "Action", "Agent ID", "Show", "Forge") == "Forge")
- var t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", registered_name ? registered_name : (ishuman(user) ? user.real_name : user.name))as text | null),1,26)
+ var/t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", registered_name ? registered_name : (ishuman(user) ? user.real_name : user.name))as text | null),1,26)
if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/dead/new_player/prefrences.dm
if (t)
alert("Invalid name.")
return
registered_name = t
- var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")as text | null),1,MAX_MESSAGE_LEN)
+ var/u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")as text | null),1,MAX_MESSAGE_LEN)
if(!u)
registered_name = ""
return
@@ -220,7 +220,7 @@ update_label("John Doe", "Clowny")
/obj/item/card/id/captains_spare/Initialize()
var/datum/job/captain/J = new/datum/job/captain
access = J.get_access()
- ..()
+ . = ..()
/obj/item/card/id/centcom
name = "\improper CentCom ID"
@@ -231,7 +231,7 @@ update_label("John Doe", "Clowny")
/obj/item/card/id/centcom/Initialize()
access = get_all_centcom_access()
- ..()
+ . = ..()
/obj/item/card/id/ert
name = "\improper CentCom ID"
@@ -242,7 +242,7 @@ update_label("John Doe", "Clowny")
/obj/item/card/id/ert/Initialize()
access = get_all_accesses()+get_ert_access("commander")-ACCESS_CHANGE_IDS
- ..()
+ . = ..()
/obj/item/card/id/ert/Security
registered_name = "Security Response Officer"
@@ -250,7 +250,7 @@ update_label("John Doe", "Clowny")
/obj/item/card/id/ert/Security/Initialize()
access = get_all_accesses()+get_ert_access("sec")-ACCESS_CHANGE_IDS
- ..()
+ . = ..()
/obj/item/card/id/ert/Engineer
registered_name = "Engineer Response Officer"
@@ -258,7 +258,7 @@ update_label("John Doe", "Clowny")
/obj/item/card/id/ert/Engineer/Initialize()
access = get_all_accesses()+get_ert_access("eng")-ACCESS_CHANGE_IDS
- ..()
+ . = ..()
/obj/item/card/id/ert/Medical
registered_name = "Medical Response Officer"
@@ -266,7 +266,7 @@ update_label("John Doe", "Clowny")
/obj/item/card/id/ert/Medical/Initialize()
access = get_all_accesses()+get_ert_access("med")-ACCESS_CHANGE_IDS
- ..()
+ . = ..()
/obj/item/card/id/prisoner
name = "prisoner ID card"
diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm
index d5134f729c..ee7a91140c 100644
--- a/code/game/objects/items/charter.dm
+++ b/code/game/objects/items/charter.dm
@@ -59,7 +59,7 @@
to_chat(user, "Your name has been sent to your employers for approval.")
// Autoapproves after a certain time
response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE)
- to_chat(GLOB.admins, "
CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [approval_time / 10] seconds). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]")
+ to_chat(GLOB.admins, "
CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]")
/obj/item/station_charter/proc/reject_proposed(user)
if(!user)
diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm
index 1c3c712db6..aae4aad91d 100644
--- a/code/game/objects/items/clown_items.dm
+++ b/code/game/objects/items/clown_items.dm
@@ -107,39 +107,26 @@
throw_speed = 3
throw_range = 7
attack_verb = list("HONKED")
- var/next_usable = 0
- var/honksound = 'sound/items/bikehorn.ogg'
- var/cooldowntime = 20
+
+/obj/item/bikehorn/Initialize()
+ . = ..()
+ AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50)
/obj/item/bikehorn/suicide_act(mob/user)
user.visible_message("
[user] solemnly points the horn at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!")
- playsound(src.loc, honksound, 50, 1)
+ playsound(src, 'sound/items/bikehorn.ogg', 50, 1)
return (BRUTELOSS)
-/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
- if(!(next_usable > world.time))
- playsound(loc, honksound, 50, 1, -1) //plays instead of tap.ogg!
- return ..()
-
-/obj/item/bikehorn/attack_self(mob/user)
- if(!(next_usable > world.time))
- next_usable = world.time + cooldowntime
- playsound(src.loc, honksound, 50, 1)
- src.add_fingerprint(user)
-
-/obj/item/bikehorn/Crossed(mob/living/L)
- if(isliving(L))
- playsound(loc, honksound, 50, 1, -1)
- ..()
-
/obj/item/bikehorn/airhorn
name = "air horn"
desc = "Damn son, where'd you find this?"
icon_state = "air_horn"
- honksound = 'sound/items/airhorn2.ogg'
- cooldowntime = 50
origin_tech = "materials=4;engineering=4"
+/obj/item/bikehorn/airhorn/Initialize()
+ . = ..()
+ AddComponent(/datum/component/squeak, list('sound/items/airhorn2.ogg'=1), 50)
+
/obj/item/bikehorn/golden
name = "golden bike horn"
desc = "Golden? Clearly, it's made with bananium! Honk!"
@@ -155,14 +142,13 @@
..()
/obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user)
- if(!(next_usable > world.time))
- var/turf/T = get_turf(src)
- for(M in ohearers(7, T))
- if(ishuman(M) && M.can_hear())
- var/mob/living/carbon/human/H = M
- if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
- continue
- M.emote("flip")
+ var/turf/T = get_turf(src)
+ for(M in ohearers(7, T))
+ if(ishuman(M) && M.can_hear())
+ var/mob/living/carbon/human/H = M
+ if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
+ continue
+ M.emote("flip")
/obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter
name = "Canned Laughter"
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index 4f2c1a620a..8ec32f088e 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -1,186 +1,189 @@
-/obj/item/lipstick
- gender = PLURAL
- name = "red lipstick"
- desc = "A generic brand of lipstick."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "lipstick"
- w_class = WEIGHT_CLASS_TINY
- var/colour = "red"
- var/open = FALSE
-
-
-/obj/item/lipstick/purple
- name = "purple lipstick"
- colour = "purple"
-
-/obj/item/lipstick/jade
- //It's still called Jade, but theres no HTML color for jade, so we use lime.
- name = "jade lipstick"
- colour = "lime"
-
-/obj/item/lipstick/black
- name = "black lipstick"
- colour = "black"
-
-
-/obj/item/lipstick/random
- name = "lipstick"
-
-/obj/item/lipstick/random/New()
- ..()
- colour = pick("red","purple","lime","black","green","blue","white")
- name = "[colour] lipstick"
-
-
-
-/obj/item/lipstick/attack_self(mob/user)
- cut_overlays()
- to_chat(user, "
You twist \the [src] [open ? "closed" : "open"].")
- open = !open
- if(open)
- var/mutable_appearance/colored_overlay = mutable_appearance(icon, "lipstick_uncap_color")
- colored_overlay.color = colour
- icon_state = "lipstick_uncap"
- add_overlay(colored_overlay)
- else
- icon_state = "lipstick"
-
-/obj/item/lipstick/attack(mob/M, mob/user)
- if(!open)
- return
-
- if(!ismob(M))
- return
-
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.is_mouth_covered())
- to_chat(user, "
Remove [ H == user ? "your" : "their" ] mask!")
- return
- if(H.lip_style) //if they already have lipstick on
- to_chat(user, "
You need to wipe off the old lipstick first!")
- return
- if(H == user)
- user.visible_message("
[user] does their lips with \the [src].", \
- "
You take a moment to apply \the [src]. Perfect!")
- H.lip_style = "lipstick"
- H.lip_color = colour
- H.update_body()
- else
- user.visible_message("
[user] begins to do [H]'s lips with \the [src].", \
- "
You begin to apply \the [src] on [H]'s lips...")
- if(do_after(user, 20, target = H))
- user.visible_message("[user] does [H]'s lips with \the [src].", \
- "
You apply \the [src] on [H]'s lips.")
- H.lip_style = "lipstick"
- H.lip_color = colour
- H.update_body()
- else
- to_chat(user, "
Where are the lips on that?")
-
-//you can wipe off lipstick with paper!
-/obj/item/paper/attack(mob/M, mob/user)
- if(user.zone_selected == "mouth")
- if(!ismob(M))
- return
-
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H == user)
- to_chat(user, "
You wipe off the lipstick with [src].")
- H.lip_style = null
- H.update_body()
- else
- user.visible_message("
[user] begins to wipe [H]'s lipstick off with \the [src].", \
- "
You begin to wipe off [H]'s lipstick...")
- if(do_after(user, 10, target = H))
- user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \
- "
You wipe off [H]'s lipstick.")
- H.lip_style = null
- H.update_body()
- else
- ..()
-
-
-/obj/item/razor
- name = "electric razor"
- desc = "The latest and greatest power razor born from the science of shaving."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "razor"
- flags_1 = CONDUCT_1
- w_class = WEIGHT_CLASS_TINY
-
-
-/obj/item/razor/proc/shave(mob/living/carbon/human/H, location = "mouth")
- if(location == "mouth")
- H.facial_hair_style = "Shaved"
- else
- H.hair_style = "Skinhead"
-
- H.update_hair()
- playsound(loc, 'sound/items/welder2.ogg', 20, 1)
-
-
-/obj/item/razor/attack(mob/M, mob/user)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- var/location = user.zone_selected
- if(location == "mouth")
- if(!(FACEHAIR in H.dna.species.species_traits))
- to_chat(user, "
There is no facial hair to shave!")
- return
- if(!get_location_accessible(H, location))
- to_chat(user, "
The mask is in the way!")
- return
- if(H.facial_hair_style == "Shaved")
- to_chat(user, "
Already clean-shaven!")
- return
-
- if(H == user) //shaving yourself
- user.visible_message("[user] starts to shave their facial hair with [src].", \
- "
You take a moment to shave your facial hair with [src]...")
- if(do_after(user, 50, target = H))
- user.visible_message("[user] shaves his facial hair clean with [src].", \
- "
You finish shaving with [src]. Fast and clean!")
- shave(H, location)
- else
- var/turf/H_loc = H.loc
- user.visible_message("
[user] tries to shave [H]'s facial hair with [src].", \
- "
You start shaving [H]'s facial hair...")
- if(do_after(user, 50, target = H))
- if(H_loc == H.loc)
- user.visible_message("
[user] shaves off [H]'s facial hair with [src].", \
- "
You shave [H]'s facial hair clean off.")
- shave(H, location)
-
- else if(location == "head")
- if(!(HAIR in H.dna.species.species_traits))
- to_chat(user, "
There is no hair to shave!")
- return
- if(!get_location_accessible(H, location))
- to_chat(user, "
The headgear is in the way!")
- return
- if(H.hair_style == "Bald" || H.hair_style == "Balding Hair" || H.hair_style == "Skinhead")
- to_chat(user, "
There is not enough hair left to shave!")
- return
-
- if(H == user) //shaving yourself
- user.visible_message("[user] starts to shave their head with [src].", \
- "
You start to shave your head with [src]...")
- if(do_after(user, 5, target = H))
- user.visible_message("[user] shaves his head with [src].", \
- "
You finish shaving with [src].")
- shave(H, location)
- else
- var/turf/H_loc = H.loc
- user.visible_message("
[user] tries to shave [H]'s head with [src]!", \
- "
You start shaving [H]'s head...")
- if(do_after(user, 50, target = H))
- if(H_loc == H.loc)
- user.visible_message("
[user] shaves [H]'s head bald with [src]!", \
- "
You shave [H]'s head bald.")
- shave(H, location)
- else
- ..()
- else
- ..()
\ No newline at end of file
+/obj/item/lipstick
+ gender = PLURAL
+ name = "red lipstick"
+ desc = "A generic brand of lipstick."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "lipstick"
+ w_class = WEIGHT_CLASS_TINY
+ var/colour = "red"
+ var/open = FALSE
+
+
+/obj/item/lipstick/purple
+ name = "purple lipstick"
+ colour = "purple"
+
+/obj/item/lipstick/jade
+ //It's still called Jade, but theres no HTML color for jade, so we use lime.
+ name = "jade lipstick"
+ colour = "lime"
+
+/obj/item/lipstick/black
+ name = "black lipstick"
+ colour = "black"
+
+
+/obj/item/lipstick/random
+ name = "lipstick"
+
+/obj/item/lipstick/random/New()
+ ..()
+ colour = pick("red","purple","lime","black","green","blue","white")
+ name = "[colour] lipstick"
+
+
+
+/obj/item/lipstick/attack_self(mob/user)
+ cut_overlays()
+ to_chat(user, "
You twist \the [src] [open ? "closed" : "open"].")
+ open = !open
+ if(open)
+ var/mutable_appearance/colored_overlay = mutable_appearance(icon, "lipstick_uncap_color")
+ colored_overlay.color = colour
+ icon_state = "lipstick_uncap"
+ add_overlay(colored_overlay)
+ else
+ icon_state = "lipstick"
+
+/obj/item/lipstick/attack(mob/M, mob/user)
+ if(!open)
+ return
+
+ if(!ismob(M))
+ return
+
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(H.is_mouth_covered())
+ to_chat(user, "
Remove [ H == user ? "your" : "their" ] mask!")
+ return
+ if(H.lip_style) //if they already have lipstick on
+ to_chat(user, "
You need to wipe off the old lipstick first!")
+ return
+ if(H == user)
+ user.visible_message("
[user] does their lips with \the [src].", \
+ "
You take a moment to apply \the [src]. Perfect!")
+ H.lip_style = "lipstick"
+ H.lip_color = colour
+ H.update_body()
+ else
+ user.visible_message("
[user] begins to do [H]'s lips with \the [src].", \
+ "
You begin to apply \the [src] on [H]'s lips...")
+ if(do_after(user, 20, target = H))
+ user.visible_message("[user] does [H]'s lips with \the [src].", \
+ "
You apply \the [src] on [H]'s lips.")
+ H.lip_style = "lipstick"
+ H.lip_color = colour
+ H.update_body()
+ else
+ to_chat(user, "
Where are the lips on that?")
+
+//you can wipe off lipstick with paper!
+/obj/item/paper/attack(mob/M, mob/user)
+ if(user.zone_selected == "mouth")
+ if(!ismob(M))
+ return
+
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(H == user)
+ to_chat(user, "
You wipe off the lipstick with [src].")
+ H.lip_style = null
+ H.update_body()
+ else
+ user.visible_message("
[user] begins to wipe [H]'s lipstick off with \the [src].", \
+ "
You begin to wipe off [H]'s lipstick...")
+ if(do_after(user, 10, target = H))
+ user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \
+ "
You wipe off [H]'s lipstick.")
+ H.lip_style = null
+ H.update_body()
+ else
+ ..()
+
+
+/obj/item/razor
+ name = "electric razor"
+ desc = "The latest and greatest power razor born from the science of shaving."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "razor"
+ flags_1 = CONDUCT_1
+ w_class = WEIGHT_CLASS_TINY
+
+
+/obj/item/razor/proc/shave(mob/living/carbon/human/H, location = "mouth")
+ if(location == "mouth")
+ H.facial_hair_style = "Shaved"
+ else
+ H.hair_style = "Skinhead"
+
+ H.update_hair()
+ playsound(loc, 'sound/items/welder2.ogg', 20, 1)
+
+
+/obj/item/razor/attack(mob/M, mob/user)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ var/location = user.zone_selected
+ if((location in list("eyes", "mouth", "head")) && !H.get_bodypart("head"))
+ to_chat(user, "
[H] doesn't have a head!")
+ return
+ if(location == "mouth")
+ if(!(FACEHAIR in H.dna.species.species_traits))
+ to_chat(user, "
There is no facial hair to shave!")
+ return
+ if(!get_location_accessible(H, location))
+ to_chat(user, "
The mask is in the way!")
+ return
+ if(H.facial_hair_style == "Shaved")
+ to_chat(user, "
Already clean-shaven!")
+ return
+
+ if(H == user) //shaving yourself
+ user.visible_message("[user] starts to shave their facial hair with [src].", \
+ "
You take a moment to shave your facial hair with [src]...")
+ if(do_after(user, 50, target = H))
+ user.visible_message("[user] shaves his facial hair clean with [src].", \
+ "
You finish shaving with [src]. Fast and clean!")
+ shave(H, location)
+ else
+ var/turf/H_loc = H.loc
+ user.visible_message("
[user] tries to shave [H]'s facial hair with [src].", \
+ "
You start shaving [H]'s facial hair...")
+ if(do_after(user, 50, target = H))
+ if(H_loc == H.loc)
+ user.visible_message("
[user] shaves off [H]'s facial hair with [src].", \
+ "
You shave [H]'s facial hair clean off.")
+ shave(H, location)
+
+ else if(location == "head")
+ if(!(HAIR in H.dna.species.species_traits))
+ to_chat(user, "
There is no hair to shave!")
+ return
+ if(!get_location_accessible(H, location))
+ to_chat(user, "
The headgear is in the way!")
+ return
+ if(H.hair_style == "Bald" || H.hair_style == "Balding Hair" || H.hair_style == "Skinhead")
+ to_chat(user, "
There is not enough hair left to shave!")
+ return
+
+ if(H == user) //shaving yourself
+ user.visible_message("[user] starts to shave their head with [src].", \
+ "
You start to shave your head with [src]...")
+ if(do_after(user, 5, target = H))
+ user.visible_message("[user] shaves his head with [src].", \
+ "
You finish shaving with [src].")
+ shave(H, location)
+ else
+ var/turf/H_loc = H.loc
+ user.visible_message("
[user] tries to shave [H]'s head with [src]!", \
+ "
You start shaving [H]'s head...")
+ if(do_after(user, 50, target = H))
+ if(H_loc == H.loc)
+ user.visible_message("
[user] shaves [H]'s head bald with [src]!", \
+ "
You shave [H]'s head bald.")
+ shave(H, location)
+ else
+ ..()
+ else
+ ..()
diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm
index 9432a434f0..649efc0802 100644
--- a/code/game/objects/items/dehy_carp.dm
+++ b/code/game/objects/items/dehy_carp.dm
@@ -4,13 +4,13 @@
*/
//Child of carpplushie because this should do everything the toy does and more
-/obj/item/toy/carpplushie/dehy_carp
+/obj/item/toy/plush/carpplushie/dehy_carp
var/mob/owner = null //Carp doesn't attack owner, set when using in hand
var/owned = 0 //Boolean, no owner to begin with
var/mobtype = /mob/living/simple_animal/hostile/carp //So admins can change what mob spawns via var fuckery
//Attack self
-/obj/item/toy/carpplushie/dehy_carp/attack_self(mob/user)
+/obj/item/toy/plush/carpplushie/dehy_carp/attack_self(mob/user)
src.add_fingerprint(user) //Anyone can add their fingerprints to it with this
if(!owned)
to_chat(user, "
You pet [src]. You swear it looks up at you.")
@@ -18,7 +18,7 @@
owned = 1
else return ..()
-/obj/item/toy/carpplushie/dehy_carp/proc/Swell()
+/obj/item/toy/plush/carpplushie/dehy_carp/proc/Swell()
desc = "It's growing!"
visible_message("
[src] swells up!")
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 642a7ffc3a..eb521d8510 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -538,7 +538,7 @@ GLOBAL_LIST_EMPTY(PDAs)
P.show_recieved_message(msg,src)
if(!multiple)
show_to_ghosts(user,msg)
- log_talk(user,"[user] (PDA: [name]) sent \"[message]\" to [P.name]",LOGPDA)
+ log_talk(user,"[key_name(user)] (PDA: [name]) sent \"[message]\" to [key_name(P,null,TRUE)]",LOGPDA)
else
if(!multiple)
to_chat(user, "
ERROR: Server isn't responding.")
@@ -856,9 +856,6 @@ GLOBAL_LIST_EMPTY(PDAs)
var/list/plist = list()
var/list/namecounts = list()
- if(user.stat == DEAD)
- return //won't work if dead
-
if(src.aiPDA.toff)
to_chat(user, "Turn on your receiver in order to send messages.")
return
@@ -883,6 +880,10 @@ GLOBAL_LIST_EMPTY(PDAs)
if(add_photo=="Yes")
var/datum/picture/Pic = aicamera.selectpicture(aicamera)
src.aiPDA.photo = Pic.fields["img"]
+
+ if(incapacitated())
+ return
+
src.aiPDA.create_message(src, selected)
@@ -910,8 +911,8 @@ GLOBAL_LIST_EMPTY(PDAs)
to_chat(usr, "You do not have a PDA. You should make an issue report about this.")
/mob/living/silicon/ai/proc/cmd_show_message_log(mob/user)
- if(user.stat == DEAD)
- return //won't work if dead
+ if(incapacitated())
+ return
if(!isnull(aiPDA))
var/HTML = "
AI PDA Message Log[aiPDA.tnote]"
user << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0")
diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
new file mode 100644
index 0000000000..204a1f81d9
--- /dev/null
+++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
@@ -0,0 +1,65 @@
+//Used by engineering cyborgs in place of generic circuits.
+/obj/item/device/electroadaptive_pseudocircuit
+ name = "electroadaptive pseudocircuit"
+ desc = "An all-in-one circuit imprinter, designer, synthesizer, outfitter, creator, and chef. It can be used in place of any generic circuit board during construction."
+ icon = 'icons/obj/module.dmi'
+ icon_state = "boris"
+ w_class = WEIGHT_CLASS_TINY
+ materials = list(MAT_METAL = 50, MAT_GLASS = 300)
+ origin_tech = "engineering=4"
+ var/recharging = FALSE
+ var/circuits = 5 //How many circuits the pseudocircuit has left
+ var/static/recycleable_circuits = typecacheof(list(/obj/item/electronics/firelock, /obj/item/electronics/airalarm, /obj/item/electronics/firealarm, \
+ /obj/item/electronics/apc))//A typecache of circuits consumable for material
+
+/obj/item/device/electroadaptive_pseudocircuit/Initialize()
+ . = ..()
+ maptext = "[circuits]"
+
+/obj/item/device/electroadaptive_pseudocircuit/examine(mob/user)
+ ..()
+ if(iscyborg(user))
+ to_chat(user, "
It has material for [circuits] circuit[circuits == 1 ? "" : "s"]. Use the pseudocircuit on existing circuits to gain material.")
+ to_chat(user, "
Serves as a substitute for fire/air alarm, firelock, and APC electronics.")
+ to_chat(user, "
It can also be used on an APC with no power cell to fabricate a low-capacity cell at a high power cost.")
+
+/obj/item/device/electroadaptive_pseudocircuit/proc/adapt_circuit(mob/living/silicon/robot/R, circuit_cost = 0)
+ if(QDELETED(R) || !istype(R))
+ return
+ if(!R.cell)
+ to_chat(R, "
You need a power cell installed for that.")
+ return
+ if(!R.cell.use(circuit_cost))
+ to_chat(R, "
You don't have the power for that (you need [DisplayPower(circuit_cost)].)")
+ return
+ if(recharging)
+ to_chat(R, "
[src] needs some time to recharge first.")
+ return
+ if(!circuits)
+ to_chat(R, "
You need more material. Use [src] on existing simple circuits to break them down.")
+ return
+ playsound(R, 'sound/items/rped.ogg', 50, TRUE)
+ recharging = TRUE
+ circuits--
+ maptext = "[circuits]"
+ icon_state = "[initial(icon_state)]_recharging"
+ var/recharge_time = min(600, circuit_cost * 5) //40W of cost for one fabrication = 20 seconds of recharge time; this is to prevent spamming
+ addtimer(CALLBACK(src, .proc/recharge), recharge_time)
+ return TRUE //The actual circuit magic itself is done on a per-object basis
+
+/obj/item/device/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity)
+ if(!proximity)
+ return
+ if(!is_type_in_typecache(target, recycleable_circuits))
+ return
+ circuits++
+ maptext = "[circuits]"
+ user.visible_message("
User breaks down [target] with [src].", \
+ "
You recycle [target] into [src]. It now has material for [circuits] circuits.")
+ playsound(user, 'sound/items/deconstruct.ogg', 50, TRUE)
+ qdel(target)
+
+/obj/item/device/electroadaptive_pseudocircuit/proc/recharge()
+ playsound(src, 'sound/machines/chime.ogg', 25, TRUE)
+ recharging = FALSE
+ icon_state = initial(icon_state)
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
index fdcf781a4d..19a81e8640 100644
--- a/code/game/objects/items/devices/pipe_painter.dm
+++ b/code/game/objects/items/devices/pipe_painter.dm
@@ -1,3 +1,4 @@
+GLOBAL_LIST_INIT(pipe_paint_colors, list("grey"=rgb(255,255,255), "red"=rgb(255,0,0), "blue"=rgb(0,0,255), "cyan"=rgb(0,256,249), "green"=rgb(30,255,0), "yellow"=rgb(255,198,0), "purple"=rgb(130,43,255)))
/obj/item/device/pipe_painter
name = "pipe painter"
@@ -5,16 +6,7 @@
icon_state = "labeler1"
item_state = "flight"
flags_1 = NOBLUDGEON_1
- var/list/modes = list(
- "grey" = rgb(255,255,255),
- "red" = rgb(255,0,0),
- "blue" = rgb(0,0,255),
- "cyan" = rgb(0,256,249),
- "green" = rgb(30,255,0),
- "yellow" = rgb(255,198,0),
- "purple" = rgb(130,43,255)
- )
- var/mode = "grey"
+ var/paint_color = "grey"
materials = list(MAT_METAL=5000, MAT_GLASS=2000)
@@ -27,14 +19,13 @@
return
var/obj/machinery/atmospherics/pipe/P = A
- P.add_atom_colour(modes[mode], FIXED_COLOUR_PRIORITY)
- P.pipe_color = modes[mode]
- user.visible_message("
[user] paints \the [P] [mode].","
You paint \the [P] [mode].")
- P.update_node_icon() //updates the neighbors
+ if(P.paint(GLOB.pipe_paint_colors[paint_color]))
+ playsound(src, 'sound/machines/click.ogg', 50, 1)
+ user.visible_message("
[user] paints \the [P] [paint_color].","
You paint \the [P] [paint_color].")
/obj/item/device/pipe_painter/attack_self(mob/user)
- mode = input("Which colour do you want to use?","Pipe painter") in modes
+ paint_color = input("Which colour do you want to use?","Pipe painter") in GLOB.pipe_paint_colors
-/obj/item/device/pipe_painter/examine()
+/obj/item/device/pipe_painter/examine(mob/user)
..()
- to_chat(usr, "It is set to [mode].")
+ to_chat(user, "
It is set to [paint_color].")
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index e3f767f9fa..d32ae86090 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -138,7 +138,7 @@
if(power_drained > max_power * 0.98)
if (!admins_warned)
admins_warned = TRUE
- message_admins("Power sink at ([x],[y],[z] -
JMP) is 95% full. Explosion imminent.")
+ message_admins("Power sink at ([x],[y],[z] -
JMP) is 95% full. Explosion imminent.")
playsound(src, 'sound/effects/screech.ogg', 100, 1, 1)
if(power_drained >= max_power)
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index bd54fda56f..8b27659ada 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -4,13 +4,13 @@
icon = 'icons/obj/radio.dmi'
icon_state = "electropack0"
item_state = "electropack"
- lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
- flags_1 = CONDUCT_1
+ lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
+ flags_1 = CONDUCT_1
slot_flags = SLOT_BACK
w_class = WEIGHT_CLASS_HUGE
materials = list(MAT_METAL=10000, MAT_GLASS=2500)
- var/on = TRUE
+ var/on = TRUE
var/code = 2
var/frequency = 1449
var/shock_cooldown = 0
@@ -20,11 +20,11 @@
return (FIRELOSS)
/obj/item/device/electropack/Initialize()
- ..()
+ . = ..()
SSradio.add_object(src, frequency, GLOB.RADIO_CHAT)
/obj/item/device/electropack/Destroy()
- SSradio.remove_object(src, frequency)
+ SSradio.remove_object(src, frequency)
return ..()
/obj/item/device/electropack/attack_hand(mob/user)
@@ -52,8 +52,8 @@
user.put_in_hands(A)
A.add_fingerprint(user)
- if(src.flags_1 & NODROP_1)
- A.flags_1 |= NODROP_1
+ if(src.flags_1 & NODROP_1)
+ A.flags_1 |= NODROP_1
else
return ..()
@@ -108,7 +108,7 @@
spawn(100)
shock_cooldown = 0
var/mob/living/L = loc
- step(L, pick(GLOB.cardinals))
+ step(L, pick(GLOB.cardinals))
to_chat(L, "
You feel a sharp shock!")
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
@@ -143,4 +143,4 @@ Code:
"}
user << browse(dat, "window=radio")
onclose(user, "radio")
- return
+ return
\ No newline at end of file
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 31e5b70732..7d3eabfdc6 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -181,7 +181,7 @@ MASS SPECTROMETER
to_chat(user, "
Time of Death: [M.tod]")
var/tdelta = round(world.time - M.timeofdeath)
if(tdelta < (DEFIB_TIME_LIMIT * 10))
- to_chat(user, "
Subject died [tdelta / 10] seconds ago, defibrillation may be possible!")
+ to_chat(user, "
Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!")
for(var/thing in M.viruses)
var/datum/disease/D = thing
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 2cc0ab0417..663eed0a8d 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -111,7 +111,6 @@ effective or pretty fucking useless.
/obj/item/device/healthanalyzer/rad_laser/interact(mob/user)
user.set_machine(src)
- var/cooldown = GetCooldown()
var/dat = "Irradiation:
[irradiate ? "On" : "Off"]"
dat += "Stealth Mode (NOTE: Deactivates automatically while Irradiation is off):
[stealth ? "On" : "Off"]"
dat += "Scan Mode:
"
@@ -133,7 +132,7 @@ effective or pretty fucking useless.
--
[(wavelength+(intensity*4))]
++
- Laser Cooldown: [cooldown] Seconds
+ Laser Cooldown: [DisplayTimeText(GetCooldown())]
"}
var/datum/browser/popup = new(user, "radlaser", "Radioactive Microlaser Interface", 400, 240)
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index 1b47bbf3f9..045da484ed 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -1,213 +1,213 @@
-/obj/item/device/transfer_valve
- icon = 'icons/obj/assemblies.dmi'
- name = "tank transfer valve"
- icon_state = "valve_1"
- item_state = "ttv"
+/obj/item/device/transfer_valve
+ icon = 'icons/obj/assemblies.dmi'
+ name = "tank transfer valve"
+ icon_state = "valve_1"
+ item_state = "ttv"
lefthand_file = 'icons/mob/inhands/weapons/bombs_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/bombs_righthand.dmi'
- desc = "Regulates the transfer of air between two tanks"
- var/obj/item/tank/tank_one
- var/obj/item/tank/tank_two
+ desc = "Regulates the transfer of air between two tanks"
+ var/obj/item/tank/tank_one
+ var/obj/item/tank/tank_two
var/obj/item/device/assembly/attached_device
- var/mob/attacher = null
+ var/mob/attacher = null
var/valve_open = FALSE
- var/toggle = 1
- origin_tech = "materials=1;engineering=1"
-
-/obj/item/device/transfer_valve/IsAssemblyHolder()
- return 1
-
-/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user, params)
- if(istype(item, /obj/item/tank))
- if(tank_one && tank_two)
- to_chat(user, "
There are already two tanks attached, remove one first!")
- return
-
- if(!tank_one)
- if(!user.transferItemToLoc(item, src))
- return
- tank_one = item
- to_chat(user, "
You attach the tank to the transfer valve.")
- if(item.w_class > w_class)
- w_class = item.w_class
- else if(!tank_two)
- if(!user.transferItemToLoc(item, src))
- return
- tank_two = item
- to_chat(user, "
You attach the tank to the transfer valve.")
- if(item.w_class > w_class)
- w_class = item.w_class
-
- update_icon()
-//TODO: Have this take an assemblyholder
- else if(isassembly(item))
- var/obj/item/device/assembly/A = item
- if(A.secured)
- to_chat(user, "
The device is secured.")
- return
- if(attached_device)
- to_chat(user, "
There is already a device attached to the valve, remove it first!")
- return
- if(!user.transferItemToLoc(item, src))
- return
- attached_device = A
- to_chat(user, "
You attach the [item] to the valve controls and secure it.")
- A.holder = src
- A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
-
- GLOB.bombers += "[key_name(user)] attached a [item] to a transfer valve."
- message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.")
- log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
- attacher = user
- return
-
-/obj/item/device/transfer_valve/attack_self(mob/user)
- user.set_machine(src)
- var/dat = {"
Valve properties:
-
Attachment one: [tank_one] [tank_one ? "
Remove" : ""]
-
Attachment two: [tank_two] [tank_two ? "
Remove" : ""]
-
Valve attachment: [attached_device ? "
[attached_device]" : "None"] [attached_device ? "
Remove" : ""]
-
Valve status: [ valve_open ? "
Closed Open" : "
Closed Open"]"}
-
- var/datum/browser/popup = new(user, "trans_valve", name)
- popup.set_content(dat)
- popup.open()
- return
-
-/obj/item/device/transfer_valve/Topic(href, href_list)
- ..()
- if ( usr.stat || usr.restrained() )
- return
- if (src.loc == usr)
- if(tank_one && href_list["tankone"])
- split_gases()
+ var/toggle = 1
+ origin_tech = "materials=1;engineering=1"
+
+/obj/item/device/transfer_valve/IsAssemblyHolder()
+ return 1
+
+/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user, params)
+ if(istype(item, /obj/item/tank))
+ if(tank_one && tank_two)
+ to_chat(user, "
There are already two tanks attached, remove one first!")
+ return
+
+ if(!tank_one)
+ if(!user.transferItemToLoc(item, src))
+ return
+ tank_one = item
+ to_chat(user, "
You attach the tank to the transfer valve.")
+ if(item.w_class > w_class)
+ w_class = item.w_class
+ else if(!tank_two)
+ if(!user.transferItemToLoc(item, src))
+ return
+ tank_two = item
+ to_chat(user, "
You attach the tank to the transfer valve.")
+ if(item.w_class > w_class)
+ w_class = item.w_class
+
+ update_icon()
+//TODO: Have this take an assemblyholder
+ else if(isassembly(item))
+ var/obj/item/device/assembly/A = item
+ if(A.secured)
+ to_chat(user, "
The device is secured.")
+ return
+ if(attached_device)
+ to_chat(user, "
There is already a device attached to the valve, remove it first!")
+ return
+ if(!user.transferItemToLoc(item, src))
+ return
+ attached_device = A
+ to_chat(user, "
You attach the [item] to the valve controls and secure it.")
+ A.holder = src
+ A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
+
+ GLOB.bombers += "[key_name(user)] attached a [item] to a transfer valve."
+ message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.")
+ log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
+ attacher = user
+ return
+
+/obj/item/device/transfer_valve/attack_self(mob/user)
+ user.set_machine(src)
+ var/dat = {"
Valve properties:
+
Attachment one: [tank_one] [tank_one ? "
Remove" : ""]
+
Attachment two: [tank_two] [tank_two ? "
Remove" : ""]
+
Valve attachment: [attached_device ? "
[attached_device]" : "None"] [attached_device ? "
Remove" : ""]
+
Valve status: [ valve_open ? "
Closed Open" : "
Closed Open"]"}
+
+ var/datum/browser/popup = new(user, "trans_valve", name)
+ popup.set_content(dat)
+ popup.open()
+ return
+
+/obj/item/device/transfer_valve/Topic(href, href_list)
+ ..()
+ if ( usr.stat || usr.restrained() )
+ return
+ if (src.loc == usr)
+ if(tank_one && href_list["tankone"])
+ split_gases()
valve_open = FALSE
- tank_one.loc = get_turf(src)
- tank_one = null
- update_icon()
- if((!tank_two || tank_two.w_class < WEIGHT_CLASS_BULKY) && (w_class > WEIGHT_CLASS_NORMAL))
- w_class = WEIGHT_CLASS_NORMAL
- else if(tank_two && href_list["tanktwo"])
- split_gases()
+ tank_one.loc = get_turf(src)
+ tank_one = null
+ update_icon()
+ if((!tank_two || tank_two.w_class < WEIGHT_CLASS_BULKY) && (w_class > WEIGHT_CLASS_NORMAL))
+ w_class = WEIGHT_CLASS_NORMAL
+ else if(tank_two && href_list["tanktwo"])
+ split_gases()
valve_open = FALSE
- tank_two.loc = get_turf(src)
- tank_two = null
- update_icon()
- if((!tank_one || tank_one.w_class < WEIGHT_CLASS_BULKY) && (w_class > WEIGHT_CLASS_NORMAL))
- w_class = WEIGHT_CLASS_NORMAL
- else if(href_list["open"])
- toggle_valve()
- else if(attached_device)
- if(href_list["rem_device"])
+ tank_two.loc = get_turf(src)
+ tank_two = null
+ update_icon()
+ if((!tank_one || tank_one.w_class < WEIGHT_CLASS_BULKY) && (w_class > WEIGHT_CLASS_NORMAL))
+ w_class = WEIGHT_CLASS_NORMAL
+ else if(href_list["open"])
+ toggle_valve()
+ else if(attached_device)
+ if(href_list["rem_device"])
attached_device.forceMove(get_turf(src))
attached_device.holder = null
- attached_device = null
- update_icon()
- if(href_list["device"])
- attached_device.attack_self(usr)
-
- src.attack_self(usr)
- src.add_fingerprint(usr)
- return
- return
-
-/obj/item/device/transfer_valve/proc/process_activation(obj/item/device/D)
- if(toggle)
- toggle = 0
- toggle_valve()
- spawn(50) // To stop a signal being spammed from a proxy sensor constantly going off or whatever
- toggle = 1
-
-/obj/item/device/transfer_valve/update_icon()
- cut_overlays()
- underlays = null
-
- if(!tank_one && !tank_two && !attached_device)
- icon_state = "valve_1"
- return
- icon_state = "valve"
-
- if(tank_one)
- add_overlay("[tank_one.icon_state]")
- if(tank_two)
- var/icon/J = new(icon, icon_state = "[tank_two.icon_state]")
- J.Shift(WEST, 13)
- underlays += J
- if(attached_device)
- add_overlay("device")
-
-/obj/item/device/transfer_valve/proc/merge_gases()
- tank_two.air_contents.volume += tank_one.air_contents.volume
- var/datum/gas_mixture/temp
- temp = tank_one.air_contents.remove_ratio(1)
- tank_two.air_contents.merge(temp)
-
-/obj/item/device/transfer_valve/proc/split_gases()
- if (!valve_open || !tank_one || !tank_two)
- return
- var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume
- var/datum/gas_mixture/temp
- temp = tank_two.air_contents.remove_ratio(ratio1)
- tank_one.air_contents.merge(temp)
- tank_two.air_contents.volume -= tank_one.air_contents.volume
-
- /*
- Exadv1: I know this isn't how it's going to work, but this was just to check
- it explodes properly when it gets a signal (and it does).
- */
-
-/obj/item/device/transfer_valve/proc/toggle_valve()
- if(!valve_open && tank_one && tank_two)
+ attached_device = null
+ update_icon()
+ if(href_list["device"])
+ attached_device.attack_self(usr)
+
+ src.attack_self(usr)
+ src.add_fingerprint(usr)
+ return
+ return
+
+/obj/item/device/transfer_valve/proc/process_activation(obj/item/device/D)
+ if(toggle)
+ toggle = 0
+ toggle_valve()
+ spawn(50) // To stop a signal being spammed from a proxy sensor constantly going off or whatever
+ toggle = 1
+
+/obj/item/device/transfer_valve/update_icon()
+ cut_overlays()
+ underlays = null
+
+ if(!tank_one && !tank_two && !attached_device)
+ icon_state = "valve_1"
+ return
+ icon_state = "valve"
+
+ if(tank_one)
+ add_overlay("[tank_one.icon_state]")
+ if(tank_two)
+ var/icon/J = new(icon, icon_state = "[tank_two.icon_state]")
+ J.Shift(WEST, 13)
+ underlays += J
+ if(attached_device)
+ add_overlay("device")
+
+/obj/item/device/transfer_valve/proc/merge_gases()
+ tank_two.air_contents.volume += tank_one.air_contents.volume
+ var/datum/gas_mixture/temp
+ temp = tank_one.air_contents.remove_ratio(1)
+ tank_two.air_contents.merge(temp)
+
+/obj/item/device/transfer_valve/proc/split_gases()
+ if (!valve_open || !tank_one || !tank_two)
+ return
+ var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume
+ var/datum/gas_mixture/temp
+ temp = tank_two.air_contents.remove_ratio(ratio1)
+ tank_one.air_contents.merge(temp)
+ tank_two.air_contents.volume -= tank_one.air_contents.volume
+
+ /*
+ Exadv1: I know this isn't how it's going to work, but this was just to check
+ it explodes properly when it gets a signal (and it does).
+ */
+
+/obj/item/device/transfer_valve/proc/toggle_valve()
+ if(!valve_open && tank_one && tank_two)
valve_open = TRUE
- var/turf/bombturf = get_turf(src)
- var/area/A = get_area(bombturf)
-
- var/attachment = "no device"
- if(attached_device)
- if(istype(attached_device, /obj/item/device/assembly/signaler))
- attachment = "
[attached_device]"
- else
- attachment = attached_device
-
- var/attacher_name = ""
- if(!attacher)
- attacher_name = "Unknown"
- else
- attacher_name = "[key_name_admin(attacher)]"
-
- var/log_str1 = "Bomb valve opened in "
- var/log_str2 = "with [attachment] attacher: [attacher_name]"
-
- var/log_attacher = ""
- if(attacher)
- log_attacher = "[ADMIN_QUE(attacher)] [ADMIN_FLW(attacher)]"
-
- var/mob/mob = get_mob_by_key(src.fingerprintslast)
- var/last_touch_info = ""
- if(mob)
- last_touch_info = "[ADMIN_QUE(mob)] [ADMIN_FLW(mob)]"
-
- var/log_str3 = " Last touched by: [key_name_admin(mob)]"
-
- var/bomb_message = "[log_str1] [A.name][ADMIN_JMP(bombturf)] [log_str2][log_attacher] [log_str3][last_touch_info]"
-
- GLOB.bombers += bomb_message
-
- message_admins(bomb_message, 0, 1)
- log_game("[log_str1] [A.name][COORD(bombturf)] [log_str2] [log_str3]")
- merge_gases()
- spawn(20) // In case one tank bursts
- for (var/i=0,i<5,i++)
- src.update_icon()
- sleep(10)
- src.update_icon()
-
- else if(valve_open && tank_one && tank_two)
- split_gases()
+ var/turf/bombturf = get_turf(src)
+ var/area/A = get_area(bombturf)
+
+ var/attachment = "no device"
+ if(attached_device)
+ if(istype(attached_device, /obj/item/device/assembly/signaler))
+ attachment = "
[attached_device]"
+ else
+ attachment = attached_device
+
+ var/attacher_name = ""
+ if(!attacher)
+ attacher_name = "Unknown"
+ else
+ attacher_name = "[key_name_admin(attacher)]"
+
+ var/log_str1 = "Bomb valve opened in "
+ var/log_str2 = "with [attachment] attacher: [attacher_name]"
+
+ var/log_attacher = ""
+ if(attacher)
+ log_attacher = "[ADMIN_QUE(attacher)] [ADMIN_FLW(attacher)]"
+
+ var/mob/mob = get_mob_by_key(src.fingerprintslast)
+ var/last_touch_info = ""
+ if(mob)
+ last_touch_info = "[ADMIN_QUE(mob)] [ADMIN_FLW(mob)]"
+
+ var/log_str3 = " Last touched by: [key_name_admin(mob)]"
+
+ var/bomb_message = "[log_str1] [A.name][ADMIN_JMP(bombturf)] [log_str2][log_attacher] [log_str3][last_touch_info]"
+
+ GLOB.bombers += bomb_message
+
+ message_admins(bomb_message, 0, 1)
+ log_game("[log_str1] [A.name][COORD(bombturf)] [log_str2] [log_str3]")
+ merge_gases()
+ spawn(20) // In case one tank bursts
+ for (var/i=0,i<5,i++)
+ src.update_icon()
+ sleep(10)
+ src.update_icon()
+
+ else if(valve_open && tank_one && tank_two)
+ split_gases()
valve_open = FALSE
- src.update_icon()
-
-// this doesn't do anything but the timer etc. expects it to be here
-// eventually maybe have it update icon to show state (timer, prox etc.) like old bombs
-/obj/item/device/transfer_valve/proc/c_state()
- return
+ src.update_icon()
+
+// this doesn't do anything but the timer etc. expects it to be here
+// eventually maybe have it update icon to show state (timer, prox etc.) like old bombs
+/obj/item/device/transfer_valve/proc/c_state()
+ return
diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm
index 771d322c34..7cf88e77ef 100644
--- a/code/game/objects/items/dice.dm
+++ b/code/game/objects/items/dice.dm
@@ -1,193 +1,192 @@
-/obj/item/storage/pill_bottle/dice
- name = "bag of dice"
- desc = "Contains all the luck you'll ever need."
- icon = 'icons/obj/dice.dmi'
- icon_state = "dicebag"
-
-/obj/item/storage/pill_bottle/dice/New()
- ..()
- var/special_die = pick("1","2","fudge","space","00","8bd20","4dd6","100")
- if(special_die == "1")
- new /obj/item/dice/d1(src)
- if(special_die == "2")
- new /obj/item/dice/d2(src)
- new /obj/item/dice/d4(src)
- new /obj/item/dice/d6(src)
- if(special_die == "fudge")
- new /obj/item/dice/fudge(src)
- if(special_die == "space")
- new /obj/item/dice/d6/space(src)
- new /obj/item/dice/d8(src)
- new /obj/item/dice/d10(src)
- if(special_die == "00")
- new /obj/item/dice/d00(src)
- new /obj/item/dice/d12(src)
- new /obj/item/dice/d20(src)
- if(special_die == "8bd20")
- new /obj/item/dice/eightbd20(src)
- if(special_die == "4dd6")
- new /obj/item/dice/fourdd6(src)
- if(special_die == "100")
- new /obj/item/dice/d100(src)
-
-/obj/item/dice //depreciated d6, use /obj/item/dice/d6 if you actually want a d6
- name = "die"
- desc = "A die with six sides. Basic and servicable."
- icon = 'icons/obj/dice.dmi'
- icon_state = "d6"
- w_class = WEIGHT_CLASS_TINY
- var/sides = 6
- var/result = null
- var/list/special_faces = list() //entries should match up to sides var if used
- var/can_be_rigged = TRUE
- var/rigged = FALSE
-
-/obj/item/dice/New()
- result = rand(1, sides)
- update_icon()
- ..()
-
-/obj/item/dice/d1
- name = "d1"
- desc = "A die with one side. Deterministic!"
- icon_state = "d1"
- sides = 1
-
-/obj/item/dice/d2
- name = "d2"
- desc = "A die with two sides. Coins are undignified!"
- icon_state = "d2"
- sides = 2
-
-/obj/item/dice/d4
- name = "d4"
- desc = "A die with four sides. The nerd's caltrop."
- icon_state = "d4"
- sides = 4
-
-/obj/item/dice/d6
- name = "d6"
-
-/obj/item/dice/d6/space
- name = "space cube"
- desc = "A die with six sides. 6 TIMES 255 TIMES 255 TILE TOTAL EXISTENCE, SQUARE YOUR MIND OF EDUCATED STUPID: 2 DOES NOT EXIST."
- icon_state = "spaced6"
-
-/obj/item/dice/d6/space/New()
- ..()
- if(prob(10))
- name = "spess cube"
-
-/obj/item/dice/fudge
- name = "fudge die"
- desc = "A die with six sides but only three results. Is this a plus or a minus? Your mind is drawing a blank..."
- sides = 3 //shhh
- icon_state = "fudge"
- special_faces = list("minus","blank","plus")
-
-/obj/item/dice/d8
- name = "d8"
- desc = "A die with eight sides. It feels... lucky."
- icon_state = "d8"
- sides = 8
-
-/obj/item/dice/d10
- name = "d10"
- desc = "A die with ten sides. Useful for percentages."
- icon_state = "d10"
- sides = 10
-
-/obj/item/dice/d00
- name = "d00"
- desc = "A die with ten sides. Works better for d100 rolls than a golfball."
- icon_state = "d00"
- sides = 10
-
-/obj/item/dice/d12
- name = "d12"
- desc = "A die with twelve sides. There's an air of neglect about it."
- icon_state = "d12"
- sides = 12
-
-/obj/item/dice/d20
- name = "d20"
- desc = "A die with twenty sides. The prefered die to throw at the GM."
- icon_state = "d20"
- sides = 20
-
-/obj/item/dice/d100
- name = "d100"
- desc = "A die with one hundred sides! Probably not fairly weighted..."
- icon_state = "d100"
- sides = 100
-
-/obj/item/dice/d100/update_icon()
- return
-
-/obj/item/dice/eightbd20
- name = "strange d20"
- desc = "A weird die with raised text printed on the faces. Everything's white on white so reading it is a struggle. What poor design!"
- icon_state = "8bd20"
- sides = 20
- special_faces = list("It is certain","It is decidedly so","Without a doubt","Yes, definitely","You may rely on it","As I see it, yes","Most likely","Outlook good","Yes","Signs point to yes","Reply hazy try again","Ask again later","Better not tell you now","Cannot predict now","Concentrate and ask again","Don't count on it","My reply is no","My sources say no","Outlook not so good","Very doubtful")
-
-/obj/item/dice/eightbd20/update_icon()
- return
-
-/obj/item/dice/fourdd6
- name = "4d d6"
- desc = "A die that exists in four dimensional space. Properly interpreting them can only be properly done with the help of a mathematician, a physicist, and a priest."
- icon_state = "4dd6"
- sides = 48
- special_faces = list("Cube-Side: 1-1","Cube-Side: 1-2","Cube-Side: 1-3","Cube-Side: 1-4","Cube-Side: 1-5","Cube-Side: 1-6","Cube-Side: 2-1","Cube-Side: 2-2","Cube-Side: 2-3","Cube-Side: 2-4","Cube-Side: 2-5","Cube-Side: 2-6","Cube-Side: 3-1","Cube-Side: 3-2","Cube-Side: 3-3","Cube-Side: 3-4","Cube-Side: 3-5","Cube-Side: 3-6","Cube-Side: 4-1","Cube-Side: 4-2","Cube-Side: 4-3","Cube-Side: 4-4","Cube-Side: 4-5","Cube-Side: 4-6","Cube-Side: 5-1","Cube-Side: 5-2","Cube-Side: 5-3","Cube-Side: 5-4","Cube-Side: 5-5","Cube-Side: 5-6","Cube-Side: 6-1","Cube-Side: 6-2","Cube-Side: 6-3","Cube-Side: 6-4","Cube-Side: 6-5","Cube-Side: 6-6","Cube-Side: 7-1","Cube-Side: 7-2","Cube-Side: 7-3","Cube-Side: 7-4","Cube-Side: 7-5","Cube-Side: 7-6","Cube-Side: 8-1","Cube-Side: 8-2","Cube-Side: 8-3","Cube-Side: 8-4","Cube-Side: 8-5","Cube-Side: 8-6")
-
-/obj/item/dice/fourdd6/update_icon()
- return
-
-/obj/item/dice/attack_self(mob/user)
- diceroll(user)
-
-/obj/item/dice/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
- if(!..())
- return
- diceroll(thrower)
-
-/obj/item/dice/proc/diceroll(mob/user)
- result = rand(1, sides)
- if(rigged && result != rigged)
- if(prob(Clamp(1/(sides - 1) * 100, 25, 80)))
- result = rigged
- var/fake_result = rand(1, sides)//Daredevil isn't as good as he used to be
- var/comment = ""
- if(sides == 20 && result == 20)
- comment = "Nat 20!"
- else if(sides == 20 && result == 1)
- comment = "Ouch, bad luck."
- update_icon()
- if(initial(icon_state) == "d00")
- result = (result - 1)*10
- if(special_faces.len == sides)
- result = special_faces[result]
- if(user != null) //Dice was rolled in someone's hand
- user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
- "
You throw [src]. It lands on [result]. [comment]", \
- "
You hear [src] rolling, it sounds like a [fake_result].")
- else if(!src.throwing) //Dice was thrown and is coming to rest
- visible_message("
[src] rolls to a stop, landing on [result]. [comment]")
-
-/obj/item/dice/d4/Crossed(mob/living/carbon/human/H)
- if(istype(H) && !H.shoes)
- if(PIERCEIMMUNE in H.dna.species.species_traits)
- return 0
- to_chat(H, "
You step on the D4!")
- H.apply_damage(4,BRUTE,(pick("l_leg", "r_leg")))
- H.Knockdown(60)
-
-/obj/item/dice/update_icon()
- cut_overlays()
- add_overlay("[src.icon_state][src.result]")
-
-/obj/item/dice/microwave_act(obj/machinery/microwave/M)
- if(can_be_rigged)
- rigged = result
- ..(M)
+/obj/item/storage/pill_bottle/dice
+ name = "bag of dice"
+ desc = "Contains all the luck you'll ever need."
+ icon = 'icons/obj/dice.dmi'
+ icon_state = "dicebag"
+
+/obj/item/storage/pill_bottle/dice/New()
+ ..()
+ var/special_die = pick("1","2","fudge","space","00","8bd20","4dd6","100")
+ if(special_die == "1")
+ new /obj/item/dice/d1(src)
+ if(special_die == "2")
+ new /obj/item/dice/d2(src)
+ new /obj/item/dice/d4(src)
+ new /obj/item/dice/d6(src)
+ if(special_die == "fudge")
+ new /obj/item/dice/fudge(src)
+ if(special_die == "space")
+ new /obj/item/dice/d6/space(src)
+ new /obj/item/dice/d8(src)
+ new /obj/item/dice/d10(src)
+ if(special_die == "00")
+ new /obj/item/dice/d00(src)
+ new /obj/item/dice/d12(src)
+ new /obj/item/dice/d20(src)
+ if(special_die == "8bd20")
+ new /obj/item/dice/eightbd20(src)
+ if(special_die == "4dd6")
+ new /obj/item/dice/fourdd6(src)
+ if(special_die == "100")
+ new /obj/item/dice/d100(src)
+
+/obj/item/dice //depreciated d6, use /obj/item/dice/d6 if you actually want a d6
+ name = "die"
+ desc = "A die with six sides. Basic and servicable."
+ icon = 'icons/obj/dice.dmi'
+ icon_state = "d6"
+ w_class = WEIGHT_CLASS_TINY
+ var/sides = 6
+ var/result = null
+ var/list/special_faces = list() //entries should match up to sides var if used
+ var/can_be_rigged = TRUE
+ var/rigged = FALSE
+
+/obj/item/dice/New()
+ result = rand(1, sides)
+ update_icon()
+ ..()
+
+/obj/item/dice/d1
+ name = "d1"
+ desc = "A die with one side. Deterministic!"
+ icon_state = "d1"
+ sides = 1
+
+/obj/item/dice/d2
+ name = "d2"
+ desc = "A die with two sides. Coins are undignified!"
+ icon_state = "d2"
+ sides = 2
+
+/obj/item/dice/d4
+ name = "d4"
+ desc = "A die with four sides. The nerd's caltrop."
+ icon_state = "d4"
+ sides = 4
+
+/obj/item/dice/d6
+ name = "d6"
+
+/obj/item/dice/d6/space
+ name = "space cube"
+ desc = "A die with six sides. 6 TIMES 255 TIMES 255 TILE TOTAL EXISTENCE, SQUARE YOUR MIND OF EDUCATED STUPID: 2 DOES NOT EXIST."
+ icon_state = "spaced6"
+
+/obj/item/dice/d6/space/New()
+ ..()
+ if(prob(10))
+ name = "spess cube"
+
+/obj/item/dice/fudge
+ name = "fudge die"
+ desc = "A die with six sides but only three results. Is this a plus or a minus? Your mind is drawing a blank..."
+ sides = 3 //shhh
+ icon_state = "fudge"
+ special_faces = list("minus","blank","plus")
+
+/obj/item/dice/d8
+ name = "d8"
+ desc = "A die with eight sides. It feels... lucky."
+ icon_state = "d8"
+ sides = 8
+
+/obj/item/dice/d10
+ name = "d10"
+ desc = "A die with ten sides. Useful for percentages."
+ icon_state = "d10"
+ sides = 10
+
+/obj/item/dice/d00
+ name = "d00"
+ desc = "A die with ten sides. Works better for d100 rolls than a golfball."
+ icon_state = "d00"
+ sides = 10
+
+/obj/item/dice/d12
+ name = "d12"
+ desc = "A die with twelve sides. There's an air of neglect about it."
+ icon_state = "d12"
+ sides = 12
+
+/obj/item/dice/d20
+ name = "d20"
+ desc = "A die with twenty sides. The prefered die to throw at the GM."
+ icon_state = "d20"
+ sides = 20
+
+/obj/item/dice/d100
+ name = "d100"
+ desc = "A die with one hundred sides! Probably not fairly weighted..."
+ icon_state = "d100"
+ sides = 100
+
+/obj/item/dice/d100/update_icon()
+ return
+
+/obj/item/dice/eightbd20
+ name = "strange d20"
+ desc = "A weird die with raised text printed on the faces. Everything's white on white so reading it is a struggle. What poor design!"
+ icon_state = "8bd20"
+ sides = 20
+ special_faces = list("It is certain","It is decidedly so","Without a doubt","Yes, definitely","You may rely on it","As I see it, yes","Most likely","Outlook good","Yes","Signs point to yes","Reply hazy try again","Ask again later","Better not tell you now","Cannot predict now","Concentrate and ask again","Don't count on it","My reply is no","My sources say no","Outlook not so good","Very doubtful")
+
+/obj/item/dice/eightbd20/update_icon()
+ return
+
+/obj/item/dice/fourdd6
+ name = "4d d6"
+ desc = "A die that exists in four dimensional space. Properly interpreting them can only be properly done with the help of a mathematician, a physicist, and a priest."
+ icon_state = "4dd6"
+ sides = 48
+ special_faces = list("Cube-Side: 1-1","Cube-Side: 1-2","Cube-Side: 1-3","Cube-Side: 1-4","Cube-Side: 1-5","Cube-Side: 1-6","Cube-Side: 2-1","Cube-Side: 2-2","Cube-Side: 2-3","Cube-Side: 2-4","Cube-Side: 2-5","Cube-Side: 2-6","Cube-Side: 3-1","Cube-Side: 3-2","Cube-Side: 3-3","Cube-Side: 3-4","Cube-Side: 3-5","Cube-Side: 3-6","Cube-Side: 4-1","Cube-Side: 4-2","Cube-Side: 4-3","Cube-Side: 4-4","Cube-Side: 4-5","Cube-Side: 4-6","Cube-Side: 5-1","Cube-Side: 5-2","Cube-Side: 5-3","Cube-Side: 5-4","Cube-Side: 5-5","Cube-Side: 5-6","Cube-Side: 6-1","Cube-Side: 6-2","Cube-Side: 6-3","Cube-Side: 6-4","Cube-Side: 6-5","Cube-Side: 6-6","Cube-Side: 7-1","Cube-Side: 7-2","Cube-Side: 7-3","Cube-Side: 7-4","Cube-Side: 7-5","Cube-Side: 7-6","Cube-Side: 8-1","Cube-Side: 8-2","Cube-Side: 8-3","Cube-Side: 8-4","Cube-Side: 8-5","Cube-Side: 8-6")
+
+/obj/item/dice/fourdd6/update_icon()
+ return
+
+/obj/item/dice/attack_self(mob/user)
+ diceroll(user)
+
+/obj/item/dice/throw_impact(atom/target)
+ diceroll(thrownby)
+ . = ..()
+
+/obj/item/dice/proc/diceroll(mob/user)
+ result = rand(1, sides)
+ if(rigged && result != rigged)
+ if(prob(Clamp(1/(sides - 1) * 100, 25, 80)))
+ result = rigged
+ var/fake_result = rand(1, sides)//Daredevil isn't as good as he used to be
+ var/comment = ""
+ if(sides == 20 && result == 20)
+ comment = "Nat 20!"
+ else if(sides == 20 && result == 1)
+ comment = "Ouch, bad luck."
+ update_icon()
+ if(initial(icon_state) == "d00")
+ result = (result - 1)*10
+ if(special_faces.len == sides)
+ result = special_faces[result]
+ if(user != null) //Dice was rolled in someone's hand
+ user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
+ "
You throw [src]. It lands on [result]. [comment]", \
+ "
You hear [src] rolling, it sounds like a [fake_result].")
+ else if(!src.throwing) //Dice was thrown and is coming to rest
+ visible_message("
[src] rolls to a stop, landing on [result]. [comment]")
+
+/obj/item/dice/d4/Crossed(mob/living/carbon/human/H)
+ if(istype(H) && !H.shoes)
+ if(PIERCEIMMUNE in H.dna.species.species_traits)
+ return 0
+ to_chat(H, "
You step on the D4!")
+ H.apply_damage(4,BRUTE,(pick("l_leg", "r_leg")))
+ H.Knockdown(60)
+
+/obj/item/dice/update_icon()
+ cut_overlays()
+ add_overlay("[src.icon_state][src.result]")
+
+/obj/item/dice/microwave_act(obj/machinery/microwave/M)
+ if(can_be_rigged)
+ rigged = result
+ ..(M)
diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm
index 82d4c3d99f..d8be420a08 100644
--- a/code/game/objects/items/eightball.dm
+++ b/code/game/objects/items/eightball.dm
@@ -37,10 +37,10 @@
"Very doubtful")
/obj/item/toy/eightball/Initialize(mapload)
- ..()
+ . = ..()
if(prob(1))
new /obj/item/toy/eightball/haunted(get_turf(src))
- qdel(src)
+ return INITIALIZE_HINT_QDEL
/obj/item/toy/eightball/attack_self(mob/user)
if(shaking)
@@ -81,7 +81,7 @@
var/fixed_answer
/obj/item/toy/eightball/broken/Initialize(mapload)
- ..()
+ . = ..()
fixed_answer = pick(possible_answers)
/obj/item/toy/eightball/broken/get_answer()
@@ -97,7 +97,7 @@
var/list/votes
/obj/item/toy/eightball/haunted/Initialize(mapload)
- ..()
+ . = ..()
votes = list()
GLOB.poi_list |= src
diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm
index b352596e2f..833d215180 100644
--- a/code/game/objects/items/grenades/chem_grenade.dm
+++ b/code/game/objects/items/grenades/chem_grenade.dm
@@ -292,7 +292,7 @@
var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast)
var/turf/T = get_turf(src)
var/area/A = get_area(T)
- message_admins("grenade primed by an assembly, attached by [key_name_admin(M)]
(?) (
FLW) and last touched by [key_name_admin(last)]
(?) (
FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at
[A.name] (JMP).")
+ message_admins("grenade primed by an assembly, attached by [key_name_admin(M)]
(?) (
FLW) and last touched by [key_name_admin(last)]
(?) (
FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at
[A.name] (JMP).")
log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])")
else
addtimer(CALLBACK(src, .proc/prime), det_time)
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index bf5cf0417c..50b0f4e7e6 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -253,7 +253,7 @@
var/trap_damage = 20
/obj/item/restraints/legcuffs/beartrap/Initialize()
- ..()
+ . = ..()
icon_state = "[initial(icon_state)][armed]"
/obj/item/restraints/legcuffs/beartrap/suicide_act(mob/user)
@@ -369,4 +369,4 @@
var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom))
B.Crossed(hit_atom)
qdel(src)
- ..()
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index ac5519c698..1badef90cf 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -9,6 +9,7 @@
throw_speed = 3
throw_range = 4
throwforce = 10
+ unique_rename = TRUE
w_class = WEIGHT_CLASS_TINY
var/reskinned = FALSE
@@ -244,6 +245,7 @@
S.name = name
S.ckey = theghost.ckey
S.status_flags |= GODMODE
+ S.language_holder = user.language_holder.copy(S)
var/input = stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN)
if(src && input)
@@ -381,12 +383,10 @@
flags_2 = SLOWS_WHILE_IN_HAND_2
/obj/item/nullrod/tribal_knife/Initialize(mapload)
- ..()
-
-/obj/item/nullrod/tribal_knife/New()
- ..()
+ . = ..()
START_PROCESSING(SSobj, src)
+
/obj/item/nullrod/tribal_knife/Destroy()
STOP_PROCESSING(SSobj, src)
. = ..()
@@ -408,7 +408,7 @@
/obj/item/nullrod/egyptian
name = "egyptian staff"
- desc = "A tutorial in mummification is carved into the staff. You could probably follow the steps yourself if you had some bandages."
+ desc = "A tutorial in mummification is carved into the staff. You could probably craft the wraps if you had some cloth."
icon = 'icons/obj/guns/magic.dmi'
icon_state = "pharoah_sceptre"
item_state = "pharoah_sceptre"
diff --git a/code/game/objects/items/implants/implant_abductor.dm b/code/game/objects/items/implants/implant_abductor.dm
index 74642edd66..710e2d738e 100644
--- a/code/game/objects/items/implants/implant_abductor.dm
+++ b/code/game/objects/items/implants/implant_abductor.dm
@@ -26,21 +26,15 @@
if(..())
var/obj/machinery/abductor/console/console
if(ishuman(target))
- var/mob/living/carbon/human/H = target
- if(H.dna.species.id == "abductor")
- var/datum/species/abductor/S = H.dna.species
- console = get_team_console(S.team)
+ var/datum/antagonist/abductor/A = target.mind.has_antag_datum(ANTAG_DATUM_ABDUCTOR)
+ if(A)
+ console = get_abductor_console(A.team.team_number)
home = console.pad
if(!home)
- console = get_team_console(pick(1, 2, 3, 4))
+ var/list/consoles = list()
+ for(var/obj/machinery/abductor/console/C in GLOB.machines)
+ consoles += C
+ console = pick(consoles)
home = console.pad
- return 1
-
-/obj/item/implant/abductor/proc/get_team_console(var/team)
- var/obj/machinery/abductor/console/console
- for(var/obj/machinery/abductor/console/c in GLOB.machines)
- if(c.team == team)
- console = c
- break
- return console
+ return TRUE
diff --git a/code/game/objects/items/implants/implant_loyality.dm b/code/game/objects/items/implants/implant_loyality.dm
index e25fc8dda6..a1e9a0e4d5 100644
--- a/code/game/objects/items/implants/implant_loyality.dm
+++ b/code/game/objects/items/implants/implant_loyality.dm
@@ -26,7 +26,7 @@
qdel(src)
return 0
if(target.mind in SSticker.mode.revolutionaries)
- SSticker.mode.remove_revolutionary(target.mind)
+ SSticker.mode.remove_revolutionary(target.mind, FALSE, user)
if(!silent)
if(target.mind in SSticker.mode.cult)
to_chat(target, "
You feel something interfering with your mental conditioning, but you resist it!")
diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm
index 08681ac9e4..0bafff176b 100644
--- a/code/game/objects/items/implants/implantcase.dm
+++ b/code/game/objects/items/implants/implantcase.dm
@@ -61,7 +61,7 @@
return ..()
/obj/item/implantcase/Initialize(mapload)
- ..()
+ . = ..()
if(imp_type)
imp = new imp_type(src)
update_icon()
@@ -80,4 +80,4 @@
/obj/item/implantcase/adrenaline
name = "implant case - 'Adrenaline'"
desc = "A glass case containing an adrenaline implant."
- imp_type = /obj/item/implant/adrenalin
+ imp_type = /obj/item/implant/adrenalin
\ No newline at end of file
diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm
index 2f59020cbe..8d252cb5af 100644
--- a/code/game/objects/items/implants/implantchair.dm
+++ b/code/game/objects/items/implants/implantchair.dm
@@ -20,7 +20,7 @@
var/special = FALSE
var/special_name = "special function"
var/message_cooldown
- var/breakout_time = 1
+ var/breakout_time = 600
/obj/machinery/implantchair/Initialize()
. = ..()
@@ -85,10 +85,17 @@
update_icon()
/obj/machinery/implantchair/proc/implant_action(mob/living/M)
- var/obj/item/implant/I = new implant_type
- if(I.implant(M))
- visible_message("
[M] has been implanted by the [name].")
- return 1
+ var/obj/item/I = new implant_type
+ if(istype(I, /obj/item/implant))
+ var/obj/item/implant/P = I
+ if(P.implant(M))
+ visible_message("
[M] has been implanted by [src].")
+ return TRUE
+ else if(istype(I, /obj/item/organ))
+ var/obj/item/organ/P = I
+ P.Insert(M, drop_if_replaced = FALSE)
+ visible_message("
[M] has been implanted by [src].")
+ return TRUE
/obj/machinery/implantchair/update_icon()
icon_state = initial(icon_state)
@@ -117,9 +124,9 @@
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
user.visible_message("
You see [user] kicking against the door of [src]!", \
- "
You lean on the back of [src] and start pushing the door open... (this will take about [(breakout_time<1) ? "[breakout_time*60] seconds" : "[breakout_time] minute\s"].)", \
+ "
You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \
"
You hear a metallic creaking from [src].")
- if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds
+ if(do_after(user,(breakout_time), target = src))
if(!user || user.stat != CONSCIOUS || user.loc != src || state_open)
return
user.visible_message("
[user] successfully broke out of [src]!", \
diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm
index 24b1928dbc..372671acf5 100644
--- a/code/game/objects/items/implants/implanter.dm
+++ b/code/game/objects/items/implants/implanter.dm
@@ -59,7 +59,7 @@
return ..()
/obj/item/implanter/Initialize(mapload)
- ..()
+ . = ..()
if(imp_type)
imp = new imp_type(src)
update_icon()
@@ -70,4 +70,4 @@
/obj/item/implanter/emp
name = "implanter (EMP)"
- imp_type = /obj/item/implant/emp
+ imp_type = /obj/item/implant/emp
\ No newline at end of file
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index 2ba1f89b03..4bc134e4da 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -1,229 +1,230 @@
-/obj/item/melee/transforming/energy
- hitsound_on = 'sound/weapons/blade1.ogg'
- heat = 3500
- max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30)
- resistance_flags = FIRE_PROOF
- var/brightness_on = 3
-
-/obj/item/melee/transforming/energy/Initialize()
- . = ..()
- if(active)
- set_light(brightness_on)
- START_PROCESSING(SSobj, src)
-
-/obj/item/melee/transforming/energy/Destroy()
- STOP_PROCESSING(SSobj, src)
- return ..()
-
-/obj/item/melee/transforming/energy/suicide_act(mob/user)
- user.visible_message("
[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!")
- return (BRUTELOSS|FIRELOSS)
-
-/obj/item/melee/transforming/energy/add_blood(list/blood_dna)
- return 0
-
-/obj/item/melee/transforming/energy/is_sharp()
- return active * sharpness
-
-/obj/item/melee/transforming/energy/process()
- open_flame()
-
-/obj/item/melee/transforming/energy/transform_weapon(mob/living/user, supress_message_text)
- . = ..()
- if(.)
- if(active)
- if(item_color)
- icon_state = "sword[item_color]"
- START_PROCESSING(SSobj, src)
- set_light(brightness_on)
- else
- STOP_PROCESSING(SSobj, src)
- set_light(0)
-
-/obj/item/melee/transforming/energy/is_hot()
- return active * heat
-
-/obj/item/melee/transforming/energy/ignition_effect(atom/A, mob/user)
- if(!active)
- return ""
-
- var/in_mouth = ""
- if(iscarbon(user))
- var/mob/living/carbon/C = user
- if(C.wear_mask == src)
- in_mouth = ", barely missing their nose"
- . = "
[user] swings their [src][in_mouth]. They light [A] in the process."
- playsound(loc, hitsound, get_clamped_volume(), 1, -1)
- add_fingerprint(user)
-
-/obj/item/melee/transforming/energy/axe
- name = "energy axe"
- desc = "An energized battle axe."
- icon_state = "axe0"
- lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi'
- force = 40
- force_on = 150
- throwforce = 25
- throwforce_on = 30
- hitsound = 'sound/weapons/bladeslice.ogg'
- throw_speed = 3
- throw_range = 5
- w_class = WEIGHT_CLASS_NORMAL
- w_class_on = WEIGHT_CLASS_HUGE
- flags_1 = CONDUCT_1
- armour_penetration = 100
- origin_tech = "combat=4;magnets=3"
- attack_verb_off = list("attacked", "chopped", "cleaved", "torn", "cut")
- attack_verb_on = list()
- light_color = "#40ceff"
-
-/obj/item/melee/transforming/energy/axe/suicide_act(mob/user)
- user.visible_message("
[user] swings [src] towards [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS|FIRELOSS)
-
-/obj/item/melee/transforming/energy/sword
- name = "energy sword"
- desc = "May the force be within you."
- icon_state = "sword0"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- force = 3
- throwforce = 5
- hitsound = "swing_hit" //it starts deactivated
- attack_verb_off = list("tapped", "poked")
- throw_speed = 3
- throw_range = 5
- sharpness = IS_SHARP
- embed_chance = 75
- embedded_impact_pain_multiplier = 10
- armour_penetration = 35
- origin_tech = "combat=3;magnets=4;syndicate=4"
- block_chance = 50
-
-/obj/item/melee/transforming/energy/sword/transform_weapon(mob/living/user, supress_message_text)
- . = ..()
- if(. && active && item_color)
- icon_state = "sword[item_color]"
-
-/obj/item/melee/transforming/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(active)
- return ..()
- return 0
-
-/obj/item/melee/transforming/energy/sword/cyborg
- var/hitcost = 50
-
-/obj/item/melee/transforming/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
- if(R.cell)
- var/obj/item/stock_parts/cell/C = R.cell
- if(active && !(C.use(hitcost)))
- attack_self(R)
- to_chat(R, "
It's out of charge!")
- return
- return ..()
-
-/obj/item/melee/transforming/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
- name = "energy saw"
- desc = "For heavy duty cutting. It has a carbon-fiber blade in addition to a toggleable hard-light edge to dramatically increase sharpness."
- icon_state = "esaw"
- force_on = 30
- force = 18 //About as much as a spear
- hitsound = 'sound/weapons/circsawhit.ogg'
- icon = 'icons/obj/surgery.dmi'
- icon_state = "esaw_0"
- icon_state_on = "esaw_1"
- hitcost = 75 //Costs more than a standard cyborg esword
- w_class = WEIGHT_CLASS_NORMAL
- sharpness = IS_SHARP
- light_color = "#40ceff"
-
-/obj/item/melee/transforming/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- return 0
-
-/obj/item/melee/transforming/energy/sword/saber
- var/list/possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER)
- var/hacked = FALSE
-
-/obj/item/melee/transforming/energy/sword/saber/Initialize(mapload)
- . = ..()
- if(LAZYLEN(possible_colors))
- var/set_color = pick(possible_colors)
- item_color = set_color
- light_color = possible_colors[set_color]
-
-/obj/item/melee/transforming/energy/sword/saber/process()
- . = ..()
- if(hacked)
- var/set_color = pick(possible_colors)
- light_color = possible_colors[set_color]
- update_light()
-
-/obj/item/melee/transforming/energy/sword/saber/red
- possible_colors = list("red" = LIGHT_COLOR_RED)
-
-/obj/item/melee/transforming/energy/sword/saber/blue
- possible_colors = list("blue" = LIGHT_COLOR_LIGHT_CYAN)
-
-/obj/item/melee/transforming/energy/sword/saber/green
- possible_colors = list("green" = LIGHT_COLOR_GREEN)
-
-/obj/item/melee/transforming/energy/sword/saber/purple
- possible_colors = list("purple" = LIGHT_COLOR_LAVENDER)
-
-/obj/item/melee/transforming/energy/sword/saber/attackby(obj/item/W, mob/living/user, params)
- if(istype(W, /obj/item/device/multitool))
- if(!hacked)
- hacked = TRUE
- item_color = "rainbow"
- to_chat(user, "
RNBW_ENGAGE")
-
- if(active)
- icon_state = "swordrainbow"
- user.update_inv_hands()
- else
- to_chat(user, "
It's already fabulous!")
- else
- return ..()
-
-/obj/item/melee/transforming/energy/sword/pirate
- name = "energy cutlass"
- desc = "Arrrr matey."
- icon_state = "cutlass0"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- icon_state_on = "cutlass1"
- light_color = "#ff0000"
-
-/obj/item/melee/transforming/energy/blade
- name = "energy blade"
- desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
- icon_state = "blade"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- force = 30 //Normal attacks deal esword damage
- hitsound = 'sound/weapons/blade1.ogg'
- active = 1
- throwforce = 1 //Throwing or dropping the item deletes it.
- throw_speed = 3
- throw_range = 1
- w_class = WEIGHT_CLASS_BULKY//So you can't hide it in your pocket or some such.
- var/datum/effect_system/spark_spread/spark_system
- sharpness = IS_SHARP
-
-//Most of the other special functions are handled in their own files. aka special snowflake code so kewl
-/obj/item/melee/transforming/energy/blade/Initialize()
- . = ..()
- spark_system = new /datum/effect_system/spark_spread()
- spark_system.set_up(5, 0, src)
- spark_system.attach(src)
-
-/obj/item/melee/transforming/energy/blade/transform_weapon(mob/living/user, supress_message_text)
- return
-
-/obj/item/melee/transforming/energy/blade/hardlight
- name = "hardlight blade"
- desc = "An extremely sharp blade made out of hard light. Packs quite a punch."
- icon_state = "lightblade"
- item_state = "lightblade"
+/obj/item/melee/transforming/energy
+ hitsound_on = 'sound/weapons/blade1.ogg'
+ heat = 3500
+ max_integrity = 200
+ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30)
+ resistance_flags = FIRE_PROOF
+ var/brightness_on = 3
+
+/obj/item/melee/transforming/energy/Initialize()
+ . = ..()
+ if(active)
+ set_light(brightness_on)
+ START_PROCESSING(SSobj, src)
+
+/obj/item/melee/transforming/energy/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/melee/transforming/energy/suicide_act(mob/user)
+ user.visible_message("
[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!")
+ return (BRUTELOSS|FIRELOSS)
+
+/obj/item/melee/transforming/energy/add_blood(list/blood_dna)
+ return 0
+
+/obj/item/melee/transforming/energy/is_sharp()
+ return active * sharpness
+
+/obj/item/melee/transforming/energy/process()
+ open_flame()
+
+/obj/item/melee/transforming/energy/transform_weapon(mob/living/user, supress_message_text)
+ . = ..()
+ if(.)
+ if(active)
+ if(item_color)
+ icon_state = "sword[item_color]"
+ START_PROCESSING(SSobj, src)
+ set_light(brightness_on)
+ else
+ STOP_PROCESSING(SSobj, src)
+ set_light(0)
+
+/obj/item/melee/transforming/energy/is_hot()
+ return active * heat
+
+/obj/item/melee/transforming/energy/ignition_effect(atom/A, mob/user)
+ if(!active)
+ return ""
+
+ var/in_mouth = ""
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ if(C.wear_mask == src)
+ in_mouth = ", barely missing their nose"
+ . = "
[user] swings their [src][in_mouth]. They light [A] in the process."
+ playsound(loc, hitsound, get_clamped_volume(), 1, -1)
+ add_fingerprint(user)
+
+/obj/item/melee/transforming/energy/axe
+ name = "energy axe"
+ desc = "An energized battle axe."
+ icon_state = "axe0"
+ lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi'
+ force = 40
+ force_on = 150
+ throwforce = 25
+ throwforce_on = 30
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ throw_speed = 3
+ throw_range = 5
+ w_class = WEIGHT_CLASS_NORMAL
+ w_class_on = WEIGHT_CLASS_HUGE
+ flags_1 = CONDUCT_1
+ armour_penetration = 100
+ origin_tech = "combat=4;magnets=3"
+ attack_verb_off = list("attacked", "chopped", "cleaved", "torn", "cut")
+ attack_verb_on = list()
+ light_color = "#40ceff"
+
+/obj/item/melee/transforming/energy/axe/suicide_act(mob/user)
+ user.visible_message("
[user] swings [src] towards [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (BRUTELOSS|FIRELOSS)
+
+/obj/item/melee/transforming/energy/sword
+ name = "energy sword"
+ desc = "May the force be within you."
+ icon_state = "sword0"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ force = 3
+ throwforce = 5
+ hitsound = "swing_hit" //it starts deactivated
+ attack_verb_off = list("tapped", "poked")
+ throw_speed = 3
+ throw_range = 5
+ sharpness = IS_SHARP
+ embed_chance = 75
+ embedded_impact_pain_multiplier = 10
+ armour_penetration = 35
+ origin_tech = "combat=3;magnets=4;syndicate=4"
+ block_chance = 50
+
+/obj/item/melee/transforming/energy/sword/transform_weapon(mob/living/user, supress_message_text)
+ . = ..()
+ if(. && active && item_color)
+ icon_state = "sword[item_color]"
+
+/obj/item/melee/transforming/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ if(active)
+ return ..()
+ return 0
+
+/obj/item/melee/transforming/energy/sword/cyborg
+ item_color = "red"
+ var/hitcost = 50
+
+/obj/item/melee/transforming/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
+ if(R.cell)
+ var/obj/item/stock_parts/cell/C = R.cell
+ if(active && !(C.use(hitcost)))
+ attack_self(R)
+ to_chat(R, "
It's out of charge!")
+ return
+ return ..()
+
+/obj/item/melee/transforming/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
+ name = "energy saw"
+ desc = "For heavy duty cutting. It has a carbon-fiber blade in addition to a toggleable hard-light edge to dramatically increase sharpness."
+ force_on = 30
+ force = 18 //About as much as a spear
+ hitsound = 'sound/weapons/circsawhit.ogg'
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "esaw_0"
+ icon_state_on = "esaw_1"
+ item_color = null //stops icon from breaking when turned on.
+ hitcost = 75 //Costs more than a standard cyborg esword
+ w_class = WEIGHT_CLASS_NORMAL
+ sharpness = IS_SHARP
+ light_color = "#40ceff"
+
+/obj/item/melee/transforming/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ return 0
+
+/obj/item/melee/transforming/energy/sword/saber
+ var/list/possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER)
+ var/hacked = FALSE
+
+/obj/item/melee/transforming/energy/sword/saber/Initialize(mapload)
+ . = ..()
+ if(LAZYLEN(possible_colors))
+ var/set_color = pick(possible_colors)
+ item_color = set_color
+ light_color = possible_colors[set_color]
+
+/obj/item/melee/transforming/energy/sword/saber/process()
+ . = ..()
+ if(hacked)
+ var/set_color = pick(possible_colors)
+ light_color = possible_colors[set_color]
+ update_light()
+
+/obj/item/melee/transforming/energy/sword/saber/red
+ possible_colors = list("red" = LIGHT_COLOR_RED)
+
+/obj/item/melee/transforming/energy/sword/saber/blue
+ possible_colors = list("blue" = LIGHT_COLOR_LIGHT_CYAN)
+
+/obj/item/melee/transforming/energy/sword/saber/green
+ possible_colors = list("green" = LIGHT_COLOR_GREEN)
+
+/obj/item/melee/transforming/energy/sword/saber/purple
+ possible_colors = list("purple" = LIGHT_COLOR_LAVENDER)
+
+/obj/item/melee/transforming/energy/sword/saber/attackby(obj/item/W, mob/living/user, params)
+ if(istype(W, /obj/item/device/multitool))
+ if(!hacked)
+ hacked = TRUE
+ item_color = "rainbow"
+ to_chat(user, "
RNBW_ENGAGE")
+
+ if(active)
+ icon_state = "swordrainbow"
+ user.update_inv_hands()
+ else
+ to_chat(user, "
It's already fabulous!")
+ else
+ return ..()
+
+/obj/item/melee/transforming/energy/sword/pirate
+ name = "energy cutlass"
+ desc = "Arrrr matey."
+ icon_state = "cutlass0"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ icon_state_on = "cutlass1"
+ light_color = "#ff0000"
+
+/obj/item/melee/transforming/energy/blade
+ name = "energy blade"
+ desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
+ icon_state = "blade"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ force = 30 //Normal attacks deal esword damage
+ hitsound = 'sound/weapons/blade1.ogg'
+ active = 1
+ throwforce = 1 //Throwing or dropping the item deletes it.
+ throw_speed = 3
+ throw_range = 1
+ w_class = WEIGHT_CLASS_BULKY//So you can't hide it in your pocket or some such.
+ var/datum/effect_system/spark_spread/spark_system
+ sharpness = IS_SHARP
+
+//Most of the other special functions are handled in their own files. aka special snowflake code so kewl
+/obj/item/melee/transforming/energy/blade/Initialize()
+ . = ..()
+ spark_system = new /datum/effect_system/spark_spread()
+ spark_system.set_up(5, 0, src)
+ spark_system.attach(src)
+
+/obj/item/melee/transforming/energy/blade/transform_weapon(mob/living/user, supress_message_text)
+ return
+
+/obj/item/melee/transforming/energy/blade/hardlight
+ name = "hardlight blade"
+ desc = "An extremely sharp blade made out of hard light. Packs quite a punch."
+ icon_state = "lightblade"
+ item_state = "lightblade"
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
new file mode 100644
index 0000000000..b22383ad58
--- /dev/null
+++ b/code/game/objects/items/plushes.dm
@@ -0,0 +1,74 @@
+/obj/item/toy/plush
+ name = "plush"
+ desc = "this is the special coder plush, do not steal"
+ icon = 'icons/obj/plushes.dmi'
+ icon_state = "debug"
+ attack_verb = list("thumped", "whomped", "bumped")
+ w_class = WEIGHT_CLASS_SMALL
+ resistance_flags = FLAMMABLE
+ var/list/squeak_override //Weighted list; If you want your plush to have different squeak sounds use this
+
+/obj/item/toy/plush/Initialize()
+ . = ..()
+ AddComponent(/datum/component/squeak, squeak_override)
+
+/obj/item/toy/plush/attack_self(mob/user)
+ . = ..()
+ to_chat(user, "
You pet [src]. D'awww.")
+
+/obj/item/toy/plush/carpplushie
+ name = "space carp plushie"
+ desc = "An adorable stuffed toy that resembles a space carp."
+ icon_state = "carpplush"
+ item_state = "carp_plushie"
+ attack_verb = list("bitten", "eaten", "fin slapped")
+ squeak_override = list('sound/weapons/bite.ogg'=1)
+
+/obj/item/toy/plush/bubbleplush
+ name = "bubblegum plushie"
+ desc = "The friendly red demon that gives good miners gifts."
+ icon_state = "bubbleplush"
+ attack_verb = list("rends")
+ squeak_override = list('sound/magic/demon_attack1.ogg'=1)
+
+/obj/item/toy/plush/plushvar
+ name = "ratvar plushie"
+ desc = "An adorable plushie of the clockwork justiciar himself with new and improved spring arm action."
+ icon_state = "plushvar"
+
+/obj/item/toy/plush/narplush
+ name = "nar'sie plushie"
+ desc = "A small stuffed doll of the elder god nar'sie. Who thought this was a good children's toy?"
+ icon_state = "narplush"
+
+/obj/item/toy/plush/lizardplushie
+ name = "lizard plushie"
+ desc = "An adorable stuffed toy that resembles a lizardperson."
+ icon_state = "plushie_lizard"
+ item_state = "plushie_lizard"
+ attack_verb = list("clawed", "hissed", "tail slapped")
+ squeak_override = list('sound/weapons/slash.ogg' = 1)
+
+/obj/item/toy/plush/snakeplushie
+ name = "snake plushie"
+ desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing."
+ icon_state = "plushie_snake"
+ item_state = "plushie_snake"
+ attack_verb = list("bitten", "hissed", "tail slapped")
+ squeak_override = list('sound/weapons/bite.ogg' = 1)
+
+/obj/item/toy/plush/nukeplushie
+ name = "operative plushie"
+ desc = "An stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious."
+ icon_state = "plushie_nuke"
+ item_state = "plushie_nuke"
+ attack_verb = list("shot", "nuked", "detonated")
+ squeak_override = list('sound/effects/hit_punch.ogg' = 1)
+
+/obj/item/toy/plush/slimeplushie
+ name = "slime plushie"
+ desc = "An adorable stuffed toy that resembles a slime. It is practically just a hacky sack."
+ icon_state = "plushie_slime"
+ item_state = "plushie_slime"
+ attack_verb = list("blorbled", "slimed", "absorbed")
+ squeak_override = list('sound/effects/blobattack.ogg' = 1)
\ No newline at end of file
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index bcb7162617..3febaecfa9 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -113,7 +113,7 @@
/obj/item/borg/upgrade/thrusters
name = "ion thruster upgrade"
- desc = "A energy-operated thruster system for cyborgs."
+ desc = "An energy-operated thruster system for cyborgs."
icon_state = "cyborg_upgrade3"
origin_tech = "engineering=4;powerstorage=4"
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index d4e9d596d7..cc718be2bd 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -149,7 +149,7 @@
if(!building_checks(R, multiplier))
return
- var/atom/O = new R.result_type( usr.loc )
+ var/obj/O = new R.result_type()
O.setDir(usr.dir)
use(R.req_amount * multiplier)
@@ -168,11 +168,10 @@
new_item.amount = R.res_amount*multiplier
new_item.update_icon()
- if(new_item.amount <= 0)//if the stack is empty, i.e it has been merged with an existing stack and has been garbage collected
- return
-
if (isitem(O))
usr.put_in_hands(O)
+ else
+ O.forceMove(usr.drop_location())
O.add_fingerprint(usr)
//BubbleWrap - so newly formed boxes are empty
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index fe89f42338..2290ea91d3 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -289,7 +289,7 @@
icon_state = initial(icon_state)
/obj/item/storage/backpack/satchel/flat/Initialize(mapload)
- ..()
+ . = ..()
SSpersistence.new_secret_satchels += src
/obj/item/storage/backpack/satchel/flat/PopulateContents()
@@ -306,7 +306,7 @@
var/revealed = 0
/obj/item/storage/backpack/satchel/flat/secret/Initialize()
- ..()
+ . = ..()
if(isfloorturf(loc) && !istype(loc, /turf/open/floor/plating/))
hide(1)
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index cc60c9ba9c..489f1c6bf0 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -731,17 +731,18 @@
/obj/item/storage/box/ingredients //This box is for the randomely chosen version the chef spawns with, it shouldn't actually exist.
name = "ingredients box"
- illustration = "donk_kit"
+ illustration = "fruit"
+ var/theme_name
/obj/item/storage/box/ingredients/Initialize()
- ..()
- if(icon_state)
- name = "[name] ([icon_state])"
- desc = "A box containing supplementary ingredients for the aspiring chef. This box's theme is '[icon_state]'."
+ . = ..()
+ if(theme_name)
+ name = "[name] ([theme_name])"
+ desc = "A box containing supplementary ingredients for the aspiring chef. The box's theme is '[theme_name]'."
item_state = "syringe_kit"
/obj/item/storage/box/ingredients/wildcard
- icon_state = "wildcard"
+ theme_name = "wildcard"
/obj/item/storage/box/ingredients/wildcard/PopulateContents()
for(var/i in 1 to 7)
@@ -762,7 +763,7 @@
new randomFood(src)
/obj/item/storage/box/ingredients/fiesta
- icon_state = "fiesta"
+ theme_name = "fiesta"
/obj/item/storage/box/ingredients/fiesta/PopulateContents()
new /obj/item/reagent_containers/food/snacks/tortilla(src)
@@ -772,7 +773,7 @@
new /obj/item/reagent_containers/food/snacks/grown/chili(src)
/obj/item/storage/box/ingredients/italian
- icon_state = "italian"
+ theme_name = "italian"
/obj/item/storage/box/ingredients/italian/PopulateContents()
for(var/i in 1 to 3)
@@ -781,7 +782,7 @@
new /obj/item/reagent_containers/food/drinks/bottle/wine(src)
/obj/item/storage/box/ingredients/vegetarian
- icon_state = "vegetarian"
+ theme_name = "vegetarian"
/obj/item/storage/box/ingredients/vegetarian/PopulateContents()
for(var/i in 1 to 2)
@@ -793,7 +794,7 @@
new /obj/item/reagent_containers/food/snacks/grown/tomato(src)
/obj/item/storage/box/ingredients/american
- icon_state = "american"
+ theme_name = "american"
/obj/item/storage/box/ingredients/american/PopulateContents()
for(var/i in 1 to 2)
@@ -803,7 +804,7 @@
new /obj/item/reagent_containers/food/snacks/faggot(src)
/obj/item/storage/box/ingredients/fruity
- icon_state = "fruity"
+ theme_name = "fruity"
/obj/item/storage/box/ingredients/fruity/PopulateContents()
for(var/i in 1 to 2)
@@ -814,7 +815,7 @@
new /obj/item/reagent_containers/food/snacks/grown/watermelon(src)
/obj/item/storage/box/ingredients/sweets
- icon_state = "sweets"
+ theme_name = "sweets"
/obj/item/storage/box/ingredients/sweets/PopulateContents()
for(var/i in 1 to 2)
@@ -825,7 +826,7 @@
new /obj/item/reagent_containers/food/snacks/grown/apple(src)
/obj/item/storage/box/ingredients/delights
- icon_state = "delights"
+ theme_name = "delights"
/obj/item/storage/box/ingredients/delights/PopulateContents()
for(var/i in 1 to 2)
@@ -836,7 +837,7 @@
new /obj/item/reagent_containers/food/snacks/grown/berries(src)
/obj/item/storage/box/ingredients/grains
- icon_state = "grains"
+ theme_name = "grains"
/obj/item/storage/box/ingredients/grains/PopulateContents()
for(var/i in 1 to 3)
@@ -847,7 +848,7 @@
new /obj/item/seeds/poppy(src)
/obj/item/storage/box/ingredients/carnivore
- icon_state = "carnivore"
+ theme_name = "carnivore"
/obj/item/storage/box/ingredients/carnivore/PopulateContents()
new /obj/item/reagent_containers/food/snacks/meat/slab/bear(src)
@@ -859,7 +860,7 @@
new /obj/item/reagent_containers/food/snacks/faggot(src)
/obj/item/storage/box/ingredients/exotic
- icon_state = "exotic"
+ theme_name = "exotic"
/obj/item/storage/box/ingredients/exotic/PopulateContents()
for(var/i in 1 to 2)
diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm
index 8107c5a1f8..df40b2898c 100644
--- a/code/game/objects/items/storage/briefcase.dm
+++ b/code/game/objects/items/storage/briefcase.dm
@@ -1,57 +1,56 @@
-/obj/item/storage/briefcase
- name = "briefcase"
- desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
- icon_state = "briefcase"
- lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi'
- flags_1 = CONDUCT_1
- force = 8
- hitsound = "swing_hit"
- throw_speed = 2
- throw_range = 4
- w_class = WEIGHT_CLASS_BULKY
- max_w_class = WEIGHT_CLASS_NORMAL
- max_combined_w_class = 21
- attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
- resistance_flags = FLAMMABLE
- max_integrity = 150
- var/folder_path = /obj/item/folder //this is the path of the folder that gets spawned in New()
-
-/obj/item/storage/briefcase/PopulateContents()
- new /obj/item/pen(src)
- var/obj/item/folder/folder = new folder_path(src)
- for(var/i in 1 to 6)
- new /obj/item/paper(folder)
-
-/obj/item/storage/briefcase/lawyer
- folder_path = /obj/item/folder/blue
-
-/obj/item/storage/briefcase/lawyer/PopulateContents()
- new /obj/item/stamp/law(src)
- ..()
-
-/obj/item/storage/briefcase/sniperbundle
- name = "briefcase"
- desc = "It's label reads genuine hardened Captain leather, but suspiciously has no other tags or branding. Smells like L'Air du Temps."
- icon_state = "briefcase"
- flags_1 = CONDUCT_1
- force = 10
- hitsound = "swing_hit"
- throw_speed = 2
- throw_range = 4
- w_class = WEIGHT_CLASS_BULKY
- max_w_class = WEIGHT_CLASS_NORMAL
- max_combined_w_class = 21
- attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
- resistance_flags = FLAMMABLE
- max_integrity = 150
-
-/obj/item/storage/briefcase/sniperbundle/PopulateContents()
- ..() // in case you need any paperwork done after your rampage
- new /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate(src)
- new /obj/item/clothing/neck/tie/red(src)
- new /obj/item/clothing/under/syndicate/sniper(src)
- new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
- new /obj/item/ammo_box/magazine/sniper_rounds/haemorrhage(src)
- new /obj/item/suppressor/specialoffer(src)
-
+/obj/item/storage/briefcase
+ name = "briefcase"
+ desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
+ icon_state = "briefcase"
+ lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi'
+ flags_1 = CONDUCT_1
+ force = 8
+ hitsound = "swing_hit"
+ throw_speed = 2
+ throw_range = 4
+ w_class = WEIGHT_CLASS_BULKY
+ max_w_class = WEIGHT_CLASS_NORMAL
+ max_combined_w_class = 21
+ attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
+ resistance_flags = FLAMMABLE
+ max_integrity = 150
+ var/folder_path = /obj/item/folder //this is the path of the folder that gets spawned in New()
+
+/obj/item/storage/briefcase/PopulateContents()
+ new /obj/item/pen(src)
+ var/obj/item/folder/folder = new folder_path(src)
+ for(var/i in 1 to 6)
+ new /obj/item/paper(folder)
+
+/obj/item/storage/briefcase/lawyer
+ folder_path = /obj/item/folder/blue
+
+/obj/item/storage/briefcase/lawyer/PopulateContents()
+ new /obj/item/stamp/law(src)
+ ..()
+
+/obj/item/storage/briefcase/sniperbundle
+ name = "briefcase"
+ desc = "It's label reads genuine hardened Captain leather, but suspiciously has no other tags or branding. Smells like L'Air du Temps."
+ icon_state = "briefcase"
+ flags_1 = CONDUCT_1
+ force = 10
+ hitsound = "swing_hit"
+ throw_speed = 2
+ throw_range = 4
+ w_class = WEIGHT_CLASS_BULKY
+ max_w_class = WEIGHT_CLASS_NORMAL
+ max_combined_w_class = 21
+ attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
+ resistance_flags = FLAMMABLE
+ max_integrity = 150
+
+/obj/item/storage/briefcase/sniperbundle/PopulateContents()
+ ..() // in case you need any paperwork done after your rampage
+ new /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate(src)
+ new /obj/item/clothing/neck/tie/red(src)
+ new /obj/item/clothing/under/syndicate/sniper(src)
+ new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
+ new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
+ new /obj/item/suppressor/specialoffer(src)
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index 4b93fde13f..4dc90de6be 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -56,7 +56,7 @@
item_state = "firstaid-ointment"
/obj/item/storage/firstaid/fire/Initialize(mapload)
- ..()
+ . = ..()
icon_state = pick("ointment","firefirstaid")
/obj/item/storage/firstaid/fire/PopulateContents()
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index e6fe6da34d..dfcac18d29 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -19,7 +19,7 @@
var/has_latches = TRUE
/obj/item/storage/toolbox/Initialize()
- ..()
+ . = ..()
if(has_latches)
if(prob(10))
latches = "double_latch"
@@ -183,4 +183,4 @@
new/obj/item/stack/cable_coil/pink(src)
new/obj/item/stack/cable_coil/orange(src)
new/obj/item/stack/cable_coil/cyan(src)
- new/obj/item/stack/cable_coil/white(src)
+ new/obj/item/stack/cable_coil/white(src)
\ No newline at end of file
diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm
index e565ab1a1f..dd2ea47dc4 100644
--- a/code/game/objects/items/tanks/tanks.dm
+++ b/code/game/objects/items/tanks/tanks.dm
@@ -74,7 +74,7 @@
if (icon == src) to_chat(user, "
If you want any more information you'll need to get closer.")
return
- to_chat(user, "
The pressure gauge reads [src.air_contents.return_pressure()] kPa.")
+ to_chat(user, "
The pressure gauge reads [round(src.air_contents.return_pressure(),0.01)] kPa.")
var/celsius_temperature = src.air_contents.temperature-T0C
var/descriptive
@@ -236,7 +236,6 @@
if(!istype(src.loc, /obj/item/device/transfer_valve))
message_admins("Explosive tank rupture! Last key to touch the tank was [src.fingerprintslast].")
log_game("Explosive tank rupture! Last key to touch the tank was [src.fingerprintslast].")
- //to_chat(world, "\blue[x],[y] tank is exploding: [pressure] kPa")
//Give the gas a chance to build up more pressure through reacting
air_contents.react()
air_contents.react()
@@ -245,7 +244,6 @@
var/range = (pressure-TANK_FRAGMENT_PRESSURE)/TANK_FRAGMENT_SCALE
var/turf/epicenter = get_turf(loc)
- //to_chat(world, "\blue Exploding Pressure: [pressure] kPa, intensity: [range]")
explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5))
if(istype(src.loc, /obj/item/device/transfer_valve))
@@ -254,7 +252,6 @@
qdel(src)
else if(pressure > TANK_RUPTURE_PRESSURE)
- //to_chat(world, "\blue[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]")
if(integrity <= 0)
var/turf/T = get_turf(src)
if(!T)
@@ -266,7 +263,6 @@
integrity--
else if(pressure > TANK_LEAK_PRESSURE)
- //to_chat(world, "\blue[x],[y] tank is leaking: [pressure] kPa, integrity [integrity]")
if(integrity <= 0)
var/turf/T = get_turf(src)
if(!T)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 87ff199dfe..a683902a6c 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -14,7 +14,6 @@
* Cards
* Toy nuke
* Fake meteor
- * Carp plushie
* Foam armblade
* Toy big red button
* Beach ball
@@ -40,7 +39,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "waterballoon-e"
item_state = "balloon-empty"
-
+
/obj/item/toy/balloon/New()
create_reagents(10)
@@ -987,32 +986,6 @@
shake_camera(M, 3, 1)
qdel(src)
-/*
- * Carp plushie
- */
-
-/obj/item/toy/carpplushie
- name = "space carp plushie"
- desc = "An adorable stuffed toy that resembles a space carp."
- icon = 'icons/obj/toy.dmi'
- icon_state = "carpplushie"
- item_state = "carp_plushie"
- w_class = WEIGHT_CLASS_SMALL
- attack_verb = list("bitten", "eaten", "fin slapped")
- resistance_flags = FLAMMABLE
- var/bitesound = 'sound/weapons/bite.ogg'
-
-//Attack mob
-/obj/item/toy/carpplushie/attack(mob/M, mob/user)
- playsound(loc, bitesound, 20, 1) //Play bite sound in local area
- return ..()
-
-//Attack self
-/obj/item/toy/carpplushie/attack_self(mob/user)
- playsound(src.loc, bitesound, 20, 1)
- to_chat(user, "
You pet [src]. D'awww.")
- return ..()
-
/*
* Toy big red button
*/
diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm
index 326b945fd5..0a7b9eb312 100644
--- a/code/game/objects/structures/ai_core.dm
+++ b/code/game/objects/structures/ai_core.dm
@@ -45,14 +45,13 @@
switch(state)
if(EMPTY_CORE)
if(istype(P, /obj/item/circuitboard/aicore))
- if(!user.drop_item())
+ if(!user.transferItemToLoc(P, src))
return
playsound(loc, 'sound/items/deconstruct.ogg', 50, 1)
to_chat(user, "
You place the circuit board inside the frame.")
update_icon()
state = CIRCUIT_CORE
circuit = P
- P.forceMove(src)
return
if(CIRCUIT_CORE)
if(istype(P, /obj/item/screwdriver))
@@ -143,10 +142,9 @@
to_chat(user, "
This [M.name] is mindless!")
return
- if(!user.drop_item())
+ if(!user.transferItemToLoc(M,src))
return
- M.forceMove(src)
brain = M
to_chat(user, "
You add [M.name] to the frame.")
update_icon()
@@ -176,7 +174,14 @@
SSticker.mode.remove_antag_for_borging(brain.brainmob.mind)
if(!istype(brain.laws, /datum/ai_laws/ratvar))
remove_servant_of_ratvar(brain.brainmob, TRUE)
- var/mob/living/silicon/ai/A = new /mob/living/silicon/ai(loc, laws, brain.brainmob)
+
+ var/mob/living/silicon/ai/A = null
+
+ if (brain.overrides_aicore_laws)
+ A = new /mob/living/silicon/ai(loc, brain.laws, brain.brainmob)
+ else
+ A = new /mob/living/silicon/ai(loc, laws, brain.brainmob)
+
if(brain.force_replace_ai_name)
A.fully_replace_character_name(A.name, brain.replacement_ai_name())
SSblackbox.inc("cyborg_ais_created",1)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 4f1348f3da..c7b63be32b 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -15,7 +15,7 @@
max_integrity = 200
integrity_failure = 50
armor = list(melee = 20, bullet = 10, laser = 10, energy = 0, bomb = 10, bio = 0, rad = 0, fire = 70, acid = 60)
- var/breakout_time = 2
+ var/breakout_time = 1200
var/message_cooldown
var/can_weld_shut = TRUE
var/horizontal = FALSE
@@ -366,9 +366,9 @@
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
user.visible_message("
[src] begins to shake violently!", \
- "
You lean on the back of [src] and start pushing the door open... (this will take about [(breakout_time<1) ? "[breakout_time*60] seconds" : "[breakout_time] minute\s"].)", \
+ "
You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \
"
You hear banging from [src].")
- if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds
+ if(do_after(user,(breakout_time), target = src))
if(!user || user.stat != CONSCIOUS || user.loc != src || opened || (!locked && !welded) )
return
//we check after a while whether there is a point of resisting anymore and whether the user is capable of resisting
@@ -450,3 +450,7 @@
/obj/structure/closet/AllowDrop()
return TRUE
+
+
+/obj/structure/closet/return_temperature()
+ return
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
index 11f087d052..087f58c89f 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
@@ -1,72 +1,79 @@
-/obj/structure/closet/secure_closet/freezer
- icon_state = "freezer"
-
-/obj/structure/closet/secure_closet/freezer/kitchen
- name = "kitchen Cabinet"
+/obj/structure/closet/secure_closet/freezer
+ icon_state = "freezer"
+ var/jones = FALSE
+
+/obj/structure/closet/secure_closet/freezer/ex_act()
+ if(!jones)
+ jones = TRUE
+ else
+ ..()
+
+/obj/structure/closet/secure_closet/freezer/kitchen
+ name = "kitchen Cabinet"
req_access = list(ACCESS_KITCHEN)
-
-/obj/structure/closet/secure_closet/freezer/kitchen/PopulateContents()
- ..()
- for(var/i = 0, i < 3, i++)
- new /obj/item/reagent_containers/food/condiment/flour(src)
- new /obj/item/reagent_containers/food/condiment/rice(src)
- new /obj/item/reagent_containers/food/condiment/sugar(src)
-
-/obj/structure/closet/secure_closet/freezer/kitchen/maintenance
- name = "maintenance refrigerator"
- desc = "This refrigerator looks quite dusty, is there anything edible still inside?"
- req_access = list()
-
-/obj/structure/closet/secure_closet/freezer/kitchen/maintenance/PopulateContents()
- ..()
- for(var/i = 0, i < 5, i++)
- new /obj/item/reagent_containers/food/condiment/milk(src)
- for(var/i = 0, i < 5, i++)
- new /obj/item/reagent_containers/food/condiment/soymilk(src)
- for(var/i = 0, i < 2, i++)
- new /obj/item/storage/fancy/egg_box(src)
-
-/obj/structure/closet/secure_closet/freezer/kitchen/mining
- req_access = list()
-
-/obj/structure/closet/secure_closet/freezer/meat
- name = "meat fridge"
-
-/obj/structure/closet/secure_closet/freezer/meat/PopulateContents()
- ..()
- for(var/i = 0, i < 4, i++)
- new /obj/item/reagent_containers/food/snacks/meat/slab/monkey(src)
-/obj/structure/closet/secure_closet/freezer/fridge
- name = "refrigerator"
-
-/obj/structure/closet/secure_closet/freezer/fridge/PopulateContents()
- ..()
- for(var/i = 0, i < 5, i++)
- new /obj/item/reagent_containers/food/condiment/milk(src)
- for(var/i = 0, i < 5, i++)
- new /obj/item/reagent_containers/food/condiment/soymilk(src)
- for(var/i = 0, i < 2, i++)
- new /obj/item/storage/fancy/egg_box(src)
-
-/obj/structure/closet/secure_closet/freezer/money
- name = "freezer"
- desc = "This contains cold hard cash."
+
+/obj/structure/closet/secure_closet/freezer/kitchen/PopulateContents()
+ ..()
+ for(var/i = 0, i < 3, i++)
+ new /obj/item/reagent_containers/food/condiment/flour(src)
+ new /obj/item/reagent_containers/food/condiment/rice(src)
+ new /obj/item/reagent_containers/food/condiment/sugar(src)
+
+/obj/structure/closet/secure_closet/freezer/kitchen/maintenance
+ name = "maintenance refrigerator"
+ desc = "This refrigerator looks quite dusty, is there anything edible still inside?"
+ req_access = list()
+
+/obj/structure/closet/secure_closet/freezer/kitchen/maintenance/PopulateContents()
+ ..()
+ for(var/i = 0, i < 5, i++)
+ new /obj/item/reagent_containers/food/condiment/milk(src)
+ for(var/i = 0, i < 5, i++)
+ new /obj/item/reagent_containers/food/condiment/soymilk(src)
+ for(var/i = 0, i < 2, i++)
+ new /obj/item/storage/fancy/egg_box(src)
+
+/obj/structure/closet/secure_closet/freezer/kitchen/mining
+ req_access = list()
+
+/obj/structure/closet/secure_closet/freezer/meat
+ name = "meat fridge"
+
+/obj/structure/closet/secure_closet/freezer/meat/PopulateContents()
+ ..()
+ for(var/i = 0, i < 4, i++)
+ new /obj/item/reagent_containers/food/snacks/meat/slab/monkey(src)
+/obj/structure/closet/secure_closet/freezer/fridge
+ name = "refrigerator"
+
+/obj/structure/closet/secure_closet/freezer/fridge/PopulateContents()
+ ..()
+ for(var/i = 0, i < 5, i++)
+ new /obj/item/reagent_containers/food/condiment/milk(src)
+ for(var/i = 0, i < 5, i++)
+ new /obj/item/reagent_containers/food/condiment/soymilk(src)
+ for(var/i = 0, i < 2, i++)
+ new /obj/item/storage/fancy/egg_box(src)
+
+/obj/structure/closet/secure_closet/freezer/money
+ name = "freezer"
+ desc = "This contains cold hard cash."
req_access = list(ACCESS_HEADS_VAULT)
-
-/obj/structure/closet/secure_closet/freezer/money/PopulateContents()
- ..()
- for(var/i = 0, i < 3, i++)
- new /obj/item/stack/spacecash/c1000(src)
- for(var/i = 0, i < 5, i++)
- new /obj/item/stack/spacecash/c500(src)
- for(var/i = 0, i < 6, i++)
- new /obj/item/stack/spacecash/c200(src)
-
-/obj/structure/closet/secure_closet/freezer/cream_pie
- name = "cream pie closet"
- desc = "Contains pies filled with cream and/or custard, you sickos."
+
+/obj/structure/closet/secure_closet/freezer/money/PopulateContents()
+ ..()
+ for(var/i = 0, i < 3, i++)
+ new /obj/item/stack/spacecash/c1000(src)
+ for(var/i = 0, i < 5, i++)
+ new /obj/item/stack/spacecash/c500(src)
+ for(var/i = 0, i < 6, i++)
+ new /obj/item/stack/spacecash/c200(src)
+
+/obj/structure/closet/secure_closet/freezer/cream_pie
+ name = "cream pie closet"
+ desc = "Contains pies filled with cream and/or custard, you sickos."
req_access = list(ACCESS_THEATRE)
-
-/obj/structure/closet/secure_closet/freezer/pie/PopulateContents()
- ..()
- new /obj/item/reagent_containers/food/snacks/pie/cream(src)
+
+/obj/structure/closet/secure_closet/freezer/pie/PopulateContents()
+ ..()
+ new /obj/item/reagent_containers/food/snacks/pie/cream(src)
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 8290a2cd1c..56359d4492 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -1,147 +1,147 @@
-/obj/structure/closet/crate
- name = "crate"
- desc = "A rectangular steel crate."
- icon = 'icons/obj/crates.dmi'
- icon_state = "crate"
- req_access = null
- can_weld_shut = FALSE
- horizontal = TRUE
- allow_objects = TRUE
- allow_dense = TRUE
- dense_when_open = TRUE
- climbable = TRUE
- climb_time = 10 //real fast, because let's be honest stepping into or onto a crate is easy
- climb_stun = 0 //climbing onto crates isn't hard, guys
- delivery_icon = "deliverycrate"
+/obj/structure/closet/crate
+ name = "crate"
+ desc = "A rectangular steel crate."
+ icon = 'icons/obj/crates.dmi'
+ icon_state = "crate"
+ req_access = null
+ can_weld_shut = FALSE
+ horizontal = TRUE
+ allow_objects = TRUE
+ allow_dense = TRUE
+ dense_when_open = TRUE
+ climbable = TRUE
+ climb_time = 10 //real fast, because let's be honest stepping into or onto a crate is easy
+ climb_stun = 0 //climbing onto crates isn't hard, guys
+ delivery_icon = "deliverycrate"
var/obj/item/paper/fluff/jobs/cargo/manifest/manifest
-
-/obj/structure/closet/crate/New()
- ..()
- update_icon()
-
+
+/obj/structure/closet/crate/New()
+ ..()
+ update_icon()
+
/obj/structure/closet/crate/CanPass(atom/movable/mover, turf/target)
- if(!istype(mover, /obj/structure/closet))
- var/obj/structure/closet/crate/locatedcrate = locate(/obj/structure/closet/crate) in get_turf(mover)
- if(locatedcrate) //you can walk on it like tables, if you're not in an open crate trying to move to a closed crate
- if(opened) //if we're open, allow entering regardless of located crate openness
- return 1
- if(!locatedcrate.opened) //otherwise, if the located crate is closed, allow entering
- return 1
- return !density
-
-/obj/structure/closet/crate/update_icon()
- icon_state = "[initial(icon_state)][opened ? "open" : ""]"
-
- cut_overlays()
- if(manifest)
- add_overlay("manifest")
-
-/obj/structure/closet/crate/attack_hand(mob/user)
- if(manifest)
- tear_manifest(user)
- return
- ..()
-
-/obj/structure/closet/crate/open(mob/living/user)
- . = ..()
- if(. && manifest)
- to_chat(user, "
The manifest is torn off [src].")
- playsound(src, 'sound/items/poster_ripped.ogg', 75, 1)
- manifest.forceMove(get_turf(src))
- manifest = null
- update_icon()
-
-/obj/structure/closet/crate/proc/tear_manifest(mob/user)
- to_chat(user, "
You tear the manifest off of [src].")
- playsound(src, 'sound/items/poster_ripped.ogg', 75, 1)
-
- manifest.forceMove(loc)
- if(ishuman(user))
- user.put_in_hands(manifest)
- manifest = null
- update_icon()
-
-/obj/structure/closet/crate/internals
- desc = "A internals crate."
- name = "internals crate"
- icon_state = "o2crate"
-
-/obj/structure/closet/crate/trashcart
- desc = "A heavy, metal trashcart with wheels."
- name = "trash cart"
- icon_state = "trashcart"
-
-/obj/structure/closet/crate/medical
- desc = "A medical crate."
- name = "medical crate"
- icon_state = "medicalcrate"
-
-/obj/structure/closet/crate/freezer
- desc = "A freezer."
- name = "freezer"
- icon_state = "freezer"
-
-/obj/structure/closet/crate/freezer/blood
- name = "blood freezer"
- desc = "A freezer containing packs of blood."
-
-/obj/structure/closet/crate/freezer/blood/PopulateContents()
- . = ..()
- new /obj/item/reagent_containers/blood/empty(src)
- new /obj/item/reagent_containers/blood/empty(src)
- new /obj/item/reagent_containers/blood/AMinus(src)
- new /obj/item/reagent_containers/blood/BMinus(src)
- new /obj/item/reagent_containers/blood/BPlus(src)
- new /obj/item/reagent_containers/blood/OMinus(src)
- new /obj/item/reagent_containers/blood/OPlus(src)
- new /obj/item/reagent_containers/blood/lizard(src)
- for(var/i in 1 to 3)
- new /obj/item/reagent_containers/blood/random(src)
-
-/obj/structure/closet/crate/freezer/surplus_limbs
- name = "surplus prosthetic limbs"
- desc = "A crate containing an assortment of cheap prosthetic limbs."
-
-/obj/structure/closet/crate/freezer/surplus_limbs/PopulateContents()
- . = ..()
- new /obj/item/bodypart/l_arm/robot/surplus(src)
- new /obj/item/bodypart/l_arm/robot/surplus(src)
- new /obj/item/bodypart/r_arm/robot/surplus(src)
- new /obj/item/bodypart/r_arm/robot/surplus(src)
- new /obj/item/bodypart/l_leg/robot/surplus(src)
- new /obj/item/bodypart/l_leg/robot/surplus(src)
- new /obj/item/bodypart/r_leg/robot/surplus(src)
- new /obj/item/bodypart/r_leg/robot/surplus(src)
-
-/obj/structure/closet/crate/radiation
- desc = "A crate with a radiation sign on it."
- name = "radiation crate"
- icon_state = "radiation"
-
-/obj/structure/closet/crate/hydroponics
- name = "hydroponics crate"
- desc = "All you need to destroy those pesky weeds and pests."
- icon_state = "hydrocrate"
-
-/obj/structure/closet/crate/engineering
- name = "engineering crate"
- icon_state = "engi_crate"
-
-/obj/structure/closet/crate/engineering/electrical
- icon_state = "engi_e_crate"
-
-/obj/structure/closet/crate/rcd
- desc = "A crate for the storage of an RCD."
- name = "\improper RCD crate"
- icon_state = "engi_crate"
-
-/obj/structure/closet/crate/rcd/PopulateContents()
- ..()
- for(var/i in 1 to 4)
- new /obj/item/rcd_ammo(src)
- new /obj/item/construction/rcd(src)
-
-/obj/structure/closet/crate/science
- name = "science crate"
- desc = "A science crate."
- icon_state = "scicrate"
+ if(!istype(mover, /obj/structure/closet))
+ var/obj/structure/closet/crate/locatedcrate = locate(/obj/structure/closet/crate) in get_turf(mover)
+ if(locatedcrate) //you can walk on it like tables, if you're not in an open crate trying to move to a closed crate
+ if(opened) //if we're open, allow entering regardless of located crate openness
+ return 1
+ if(!locatedcrate.opened) //otherwise, if the located crate is closed, allow entering
+ return 1
+ return !density
+
+/obj/structure/closet/crate/update_icon()
+ icon_state = "[initial(icon_state)][opened ? "open" : ""]"
+
+ cut_overlays()
+ if(manifest)
+ add_overlay("manifest")
+
+/obj/structure/closet/crate/attack_hand(mob/user)
+ if(manifest)
+ tear_manifest(user)
+ return
+ ..()
+
+/obj/structure/closet/crate/open(mob/living/user)
+ . = ..()
+ if(. && manifest)
+ to_chat(user, "
The manifest is torn off [src].")
+ playsound(src, 'sound/items/poster_ripped.ogg', 75, 1)
+ manifest.forceMove(get_turf(src))
+ manifest = null
+ update_icon()
+
+/obj/structure/closet/crate/proc/tear_manifest(mob/user)
+ to_chat(user, "
You tear the manifest off of [src].")
+ playsound(src, 'sound/items/poster_ripped.ogg', 75, 1)
+
+ manifest.forceMove(loc)
+ if(ishuman(user))
+ user.put_in_hands(manifest)
+ manifest = null
+ update_icon()
+
+/obj/structure/closet/crate/internals
+ desc = "An internals crate."
+ name = "internals crate"
+ icon_state = "o2crate"
+
+/obj/structure/closet/crate/trashcart
+ desc = "A heavy, metal trashcart with wheels."
+ name = "trash cart"
+ icon_state = "trashcart"
+
+/obj/structure/closet/crate/medical
+ desc = "A medical crate."
+ name = "medical crate"
+ icon_state = "medicalcrate"
+
+/obj/structure/closet/crate/freezer
+ desc = "A freezer."
+ name = "freezer"
+ icon_state = "freezer"
+
+/obj/structure/closet/crate/freezer/blood
+ name = "blood freezer"
+ desc = "A freezer containing packs of blood."
+
+/obj/structure/closet/crate/freezer/blood/PopulateContents()
+ . = ..()
+ new /obj/item/reagent_containers/blood/empty(src)
+ new /obj/item/reagent_containers/blood/empty(src)
+ new /obj/item/reagent_containers/blood/AMinus(src)
+ new /obj/item/reagent_containers/blood/BMinus(src)
+ new /obj/item/reagent_containers/blood/BPlus(src)
+ new /obj/item/reagent_containers/blood/OMinus(src)
+ new /obj/item/reagent_containers/blood/OPlus(src)
+ new /obj/item/reagent_containers/blood/lizard(src)
+ for(var/i in 1 to 3)
+ new /obj/item/reagent_containers/blood/random(src)
+
+/obj/structure/closet/crate/freezer/surplus_limbs
+ name = "surplus prosthetic limbs"
+ desc = "A crate containing an assortment of cheap prosthetic limbs."
+
+/obj/structure/closet/crate/freezer/surplus_limbs/PopulateContents()
+ . = ..()
+ new /obj/item/bodypart/l_arm/robot/surplus(src)
+ new /obj/item/bodypart/l_arm/robot/surplus(src)
+ new /obj/item/bodypart/r_arm/robot/surplus(src)
+ new /obj/item/bodypart/r_arm/robot/surplus(src)
+ new /obj/item/bodypart/l_leg/robot/surplus(src)
+ new /obj/item/bodypart/l_leg/robot/surplus(src)
+ new /obj/item/bodypart/r_leg/robot/surplus(src)
+ new /obj/item/bodypart/r_leg/robot/surplus(src)
+
+/obj/structure/closet/crate/radiation
+ desc = "A crate with a radiation sign on it."
+ name = "radiation crate"
+ icon_state = "radiation"
+
+/obj/structure/closet/crate/hydroponics
+ name = "hydroponics crate"
+ desc = "All you need to destroy those pesky weeds and pests."
+ icon_state = "hydrocrate"
+
+/obj/structure/closet/crate/engineering
+ name = "engineering crate"
+ icon_state = "engi_crate"
+
+/obj/structure/closet/crate/engineering/electrical
+ icon_state = "engi_e_crate"
+
+/obj/structure/closet/crate/rcd
+ desc = "A crate for the storage of an RCD."
+ name = "\improper RCD crate"
+ icon_state = "engi_crate"
+
+/obj/structure/closet/crate/rcd/PopulateContents()
+ ..()
+ for(var/i in 1 to 4)
+ new /obj/item/rcd_ammo(src)
+ new /obj/item/construction/rcd(src)
+
+/obj/structure/closet/crate/science
+ name = "science crate"
+ desc = "A science crate."
+ icon_state = "scicrate"
diff --git a/code/game/objects/structures/crates_lockers/crates/critter.dm b/code/game/objects/structures/crates_lockers/crates/critter.dm
index 3f631883c1..5261bb5332 100644
--- a/code/game/objects/structures/crates_lockers/crates/critter.dm
+++ b/code/game/objects/structures/crates_lockers/crates/critter.dm
@@ -1,38 +1,38 @@
-/obj/structure/closet/crate/critter
- name = "critter crate"
- desc = "A crate designed for safe transport of animals. It has an oxygen tank for safe transport in space."
- icon_state = "crittercrate"
- horizontal = FALSE
- allow_objects = FALSE
- breakout_time = 1
- material_drop = /obj/item/stack/sheet/mineral/wood
- material_drop_amount = 4
- delivery_icon = "deliverybox"
- var/obj/item/tank/internals/emergency_oxygen/tank
-
-/obj/structure/closet/crate/critter/New()
- ..()
- tank = new
-
-/obj/structure/closet/crate/critter/Destroy()
- var/turf/T = get_turf(src)
- if(tank)
- tank.forceMove(T)
- tank = null
-
- return ..()
-
-/obj/structure/closet/crate/critter/update_icon()
- cut_overlays()
- if(opened)
- add_overlay("crittercrate_door_open")
- else
- add_overlay("crittercrate_door")
- if(manifest)
- add_overlay("manifest")
-
-/obj/structure/closet/crate/critter/return_air()
- if(tank)
- return tank.air_contents
- else
- return loc.return_air()
\ No newline at end of file
+/obj/structure/closet/crate/critter
+ name = "critter crate"
+ desc = "A crate designed for safe transport of animals. It has an oxygen tank for safe transport in space."
+ icon_state = "crittercrate"
+ horizontal = FALSE
+ allow_objects = FALSE
+ breakout_time = 600
+ material_drop = /obj/item/stack/sheet/mineral/wood
+ material_drop_amount = 4
+ delivery_icon = "deliverybox"
+ var/obj/item/tank/internals/emergency_oxygen/tank
+
+/obj/structure/closet/crate/critter/New()
+ ..()
+ tank = new
+
+/obj/structure/closet/crate/critter/Destroy()
+ var/turf/T = get_turf(src)
+ if(tank)
+ tank.forceMove(T)
+ tank = null
+
+ return ..()
+
+/obj/structure/closet/crate/critter/update_icon()
+ cut_overlays()
+ if(opened)
+ add_overlay("crittercrate_door_open")
+ else
+ add_overlay("crittercrate_door")
+ if(manifest)
+ add_overlay("manifest")
+
+/obj/structure/closet/crate/critter/return_air()
+ if(tank)
+ return tank.air_contents
+ else
+ return loc.return_air()
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index e1204d86e3..1183618d5a 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -616,15 +616,15 @@
var/obj/item/stack/sheet/G = W
if(G)
if(G.get_amount() >= 1)
- if(istype(G, /obj/item/stack/sheet/rglass) || istype(G, /obj/item/stack/sheet/glass))
+ if(is_glass_sheet(G))
playsound(src.loc, 'sound/items/crowbar.ogg', 100, 1)
user.visible_message("[user] adds [G.name] to the airlock assembly.", \
"
You start to install [G.name] into the airlock assembly...")
if(do_after(user, 40, target = src))
if(G.get_amount() < 1 || mineral) return
- if (G.type == /obj/item/stack/sheet/rglass)
- to_chat(user, "
You install reinforced glass windows into the airlock assembly.")
- heat_proof_finished = 1 //reinforced glass makes the airlock heat-proof
+ if(!istype(G, /obj/item/stack/sheet/glass))
+ to_chat(user, "
You install [G.name] windows into the airlock assembly.")
+ heat_proof_finished = 1 //plasma & reinforced glass makes the airlock heat-proof
name = "near finished heat-proofed window airlock assembly"
else
to_chat(user, "
You install regular glass windows into the airlock assembly.")
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index 51e53e37d1..6aa338f047 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -265,6 +265,7 @@
/obj/item/twohanded/required/kirbyplants/equipped(mob/living/user)
var/image/I = image(icon = 'icons/obj/flora/plants.dmi' , icon_state = src.icon_state, loc = user)
+ I.copy_overlays(src)
I.override = 1
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/everyone, "sneaking_mission", I)
I.layer = ABOVE_MOB_LAYER
@@ -300,6 +301,13 @@
desc = "A gift from the botanical staff, presented after the RD's reassignment. There's a tag on it that says \"Y'all come back now, y'hear?\"\nIt doesn't look very healthy..."
icon_state = "plant-25"
+/obj/item/twohanded/required/kirbyplants/photosynthetic
+ name = "photosynthetic potted plant"
+ desc = "A bioluminescent plant."
+ icon_state = "plant-09"
+ light_color = "#2cb2e8"
+ light_range = 3
+
//a rock is flora according to where the icon file is
//and now these defines
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index c603681909..59aaaca12b 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -43,8 +43,7 @@
death = FALSE
anchored = FALSE
density = FALSE
- flavour_text = "
You are an ash walker. Your tribe worships the Necropolis. The wastes are sacred ground, its monsters a blessed bounty. \
- You have seen lights in the distance... they foreshadow the arrival of outsiders that seek to tear apart the Necropolis and its domain. Fresh sacrifices for your nest."
+ flavour_text = "
You are an ash walker. Your tribe worships the Necropolis. The wastes are sacred ground, its monsters a blessed bounty. You have seen lights in the distance... they foreshadow the arrival of outsiders that seek to tear apart the Necropolis and its domain. Fresh sacrifices for your nest. You do not know how their magic works, nor where they come from, or the significance of their items."
assignedrole = "Ash Walker"
/obj/effect/mob_spawn/human/ash_walker/special(mob/living/new_spawn)
@@ -123,7 +122,7 @@
golems, so that no golem may ever be forced to serve again."
/obj/effect/mob_spawn/human/golem/Initialize(mapload, datum/species/golem/species = null, mob/creator = null)
- ..()
+ . = ..()
if(species)
name += " ([initial(species.prefix)])"
mob_species = species
@@ -249,6 +248,11 @@
everyone? Where did they go? What happened to the hospital? And is that
smoke you smell? You need to find someone else. Maybe they can tell you what happened."
assignedrole = "Translocated Vet"
+/obj/effect/mob_spawn/human/doctor/alive/lavaland/Destroy()
+ var/obj/structure/fluff/empty_sleeper/S = new(drop_location())
+ S.setDir(dir)
+ return ..()
+
//Prisoner containment sleeper: Spawns in crashed prison ships in lavaland. Ghosts become escaped prisoners and are advised to find a way out of the mess they've gotten themselves into.
/obj/effect/mob_spawn/human/prisoner_transport
name = "prisoner containment sleeper"
@@ -462,9 +466,9 @@
death = FALSE
random = TRUE
mob_species = /datum/species/human
- flavour_text = "
You are a security officer working for NanoTrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \
- cryogenics pod due to a oncoming radiation storm. The last thing you remember is the station's Artifical Program telling you that you would only be asleep for eight hours. As you open \
- your eyes, everything seems rusted and broken, a dark feeling sweels in your gut as you climb out of your pod."
+ flavour_text = "You are a security officer working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \
+ cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artifical Program telling you that you would only be asleep for eight hours. As you open \
+ your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod."
uniform = /obj/item/clothing/under/rank/security
shoes = /obj/item/clothing/shoes/jackboots
id = /obj/item/card/id/away/old/sec
@@ -473,22 +477,22 @@
assignedrole = "Ancient Crew"
/obj/effect/mob_spawn/human/oldsec/Destroy()
- new/obj/structure/showcase/oldpod/used(get_turf(src))
+ new/obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
/obj/effect/mob_spawn/human/oldeng
name = "old cryogenics pod"
- desc = "A humming cryo pod. You can barely recognise a engineering uniform underneath the built up ice. The machine is attempting to wake up its occupant"
- mob_name = "a engineer"
+ desc = "A humming cryo pod. You can barely recognise an engineering uniform underneath the built up ice. The machine is attempting to wake up its occupant"
+ mob_name = "an engineer"
icon = 'icons/obj/cryogenic2.dmi'
icon_state = "sleeper"
roundstart = FALSE
death = FALSE
random = TRUE
mob_species = /datum/species/human
- flavour_text = "You are a engineer working for NanoTrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \
- cryogenics pod due to a oncoming radiation storm. The last thing you remember is the station's Artifical Program telling you that you would only be asleep for eight hours. As you open \
- your eyes, everything seems rusted and broken, a dark feeling sweels in your gut as you climb out of your pod."
+ flavour_text = "You are an engineer working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \
+ cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artifical Program telling you that you would only be asleep for eight hours. As you open \
+ your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod."
uniform = /obj/item/clothing/under/rank/engineer
shoes = /obj/item/clothing/shoes/workboots
id = /obj/item/card/id/away/old/eng
@@ -497,7 +501,7 @@
assignedrole = "Ancient Crew"
/obj/effect/mob_spawn/human/oldeng/Destroy()
- new/obj/structure/showcase/oldpod/used(get_turf(src))
+ new/obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
/obj/effect/mob_spawn/human/oldsci
@@ -510,9 +514,9 @@
death = FALSE
random = TRUE
mob_species = /datum/species/human
- flavour_text = "You are a scientist working for NanoTrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \
- cryogenics pod due to a oncoming radiation storm. The last thing you remember is the station's Artifical Program telling you that you would only be asleep for eight hours. As you open \
- your eyes, everything seems rusted and broken, a dark feeling sweels in your gut as you climb out of your pod."
+ flavour_text = "You are a scientist working for Nanotrasen, stationed onboard a state of the art research station. You vaguely recall rushing into a \
+ cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artifical Program telling you that you would only be asleep for eight hours. As you open \
+ your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod."
uniform = /obj/item/clothing/under/rank/scientist
shoes = /obj/item/clothing/shoes/laceup
id = /obj/item/card/id/away/old/sci
@@ -520,5 +524,5 @@
assignedrole = "Ancient Crew"
/obj/effect/mob_spawn/human/oldsci/Destroy()
- new/obj/structure/showcase/oldpod/used(get_turf(src))
+ new/obj/structure/showcase/machinery/oldpod/used(drop_location())
return ..()
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 6a3bdb81b4..914be24cfd 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -13,7 +13,7 @@
integrity_failure = 20
var/rods_type = /obj/item/stack/rods
var/rods_amount = 2
- var/rods_broken = 1
+ var/rods_broken = TRUE
var/grille_type = null
var/broken_type = /obj/structure/grille/broken
@@ -37,7 +37,7 @@
if(locate(/obj/structure/window) in loc)
return FALSE
to_chat(user, "You construct the window.")
- var/obj/structure/window/WD = new the_rcd.window_type(loc)
+ var/obj/structure/window/WD = new the_rcd.window_type(drop_location())
WD.anchored = TRUE
return TRUE
return FALSE
@@ -66,7 +66,7 @@
if(user.a_intent == INTENT_HARM)
if(!shock(user, 70))
..(user, 1)
- return 1
+ return TRUE
/obj/structure/grille/attack_hand(mob/living/user)
user.changeNext_move(CLICK_CD_MELEE)
@@ -85,7 +85,7 @@
/obj/structure/grille/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGRILLE))
- return 1
+ return TRUE
else
if(istype(mover, /obj/item/projectile) && density)
return prob(30)
@@ -103,11 +103,11 @@
add_fingerprint(user)
if(istype(W, /obj/item/wirecutters))
if(!shock(user, 100))
- playsound(loc, W.usesound, 100, 1)
+ playsound(src, W.usesound, 100, 1)
deconstruct()
else if((istype(W, /obj/item/screwdriver)) && (isturf(loc) || anchored))
if(!shock(user, 90))
- playsound(loc, W.usesound, 100, 1)
+ playsound(src, W.usesound, 100, 1)
anchored = !anchored
user.visible_message("[user] [anchored ? "fastens" : "unfastens"] [src].", \
"You [anchored ? "fasten [src] to" : "unfasten [src] from"] the floor.")
@@ -123,7 +123,7 @@
return
//window placing begin
- else if(istype(W, /obj/item/stack/sheet/rglass) || istype(W, /obj/item/stack/sheet/glass))
+ else if(is_glass_sheet(W))
if (!broken)
var/obj/item/stack/ST = W
if (ST.get_amount() < 2)
@@ -143,10 +143,14 @@
for(var/obj/structure/window/WINDOW in loc) //Another window already installed on grille
return
var/obj/structure/window/WD
- if(istype(W, /obj/item/stack/sheet/rglass))
- WD = new/obj/structure/window/reinforced/fulltile(loc) //reinforced window
+ if(istype(W, /obj/item/stack/sheet/plasmarglass))
+ WD = new/obj/structure/window/plasma/reinforced/fulltile(drop_location()) //reinforced plasma window
+ else if(istype(W, /obj/item/stack/sheet/plasmaglass))
+ WD = new/obj/structure/window/plasma/fulltile(drop_location()) //plasma window
+ else if(istype(W, /obj/item/stack/sheet/rglass))
+ WD = new/obj/structure/window/reinforced/fulltile(drop_location()) //reinforced window
else
- WD = new/obj/structure/window/fulltile(loc) //normal window
+ WD = new/obj/structure/window/fulltile(drop_location()) //normal window
WD.setDir(dir_to_set)
WD.ini_dir = dir_to_set
WD.anchored = FALSE
@@ -163,18 +167,18 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
- playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
+ playsound(src, 'sound/effects/grillehit.ogg', 80, 1)
else
- playsound(loc, 'sound/weapons/tap.ogg', 50, 1)
+ playsound(src, 'sound/weapons/tap.ogg', 50, 1)
if(BURN)
- playsound(loc, 'sound/items/welder.ogg', 80, 1)
+ playsound(src, 'sound/items/welder.ogg', 80, 1)
/obj/structure/grille/deconstruct(disassembled = TRUE)
if(!loc) //if already qdel'd somehow, we do nothing
return
if(!(flags_1&NODECONSTRUCT_1))
- var/obj/R = new rods_type(src.loc, rods_amount)
+ var/obj/R = new rods_type(drop_location(), rods_amount)
transfer_fingerprints_to(R)
qdel(src)
..()
@@ -182,7 +186,7 @@
/obj/structure/grille/obj_break()
if(!broken && !(flags_1 & NODECONSTRUCT_1))
new broken_type(src.loc)
- var/obj/R = new rods_type(src.loc, rods_broken)
+ var/obj/R = new rods_type(drop_location(), rods_broken)
transfer_fingerprints_to(R)
qdel(src)
@@ -192,11 +196,11 @@
/obj/structure/grille/proc/shock(mob/user, prb)
if(!anchored || broken) // anchored/broken grilles are never connected
- return 0
+ return FALSE
if(!prob(prb))
- return 0
+ return FALSE
if(!in_range(src, user))//To prevent TK and mech users from getting shocked
- return 0
+ return FALSE
var/turf/T = get_turf(src)
var/obj/structure/cable/C = T.get_cable_node()
if(C)
@@ -204,10 +208,10 @@
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, src)
s.start()
- return 1
+ return TRUE
else
- return 0
- return 0
+ return FALSE
+ return FALSE
/obj/structure/grille/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(!broken)
@@ -221,7 +225,7 @@
var/turf/T = get_turf(src)
var/obj/structure/cable/C = T.get_cable_node()
if(C)
- playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5)
+ playsound(src, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5)
tesla_zap(src, 3, C.powernet.avail * 0.01) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot.
C.powernet.load += C.powernet.avail * 0.0375 // you can gain up to 3.5 via the 4x upgrades power is halved by the pole so thats 2x then 1X then .5X for 3.5x the 3 bounces shock.
return ..()
@@ -233,9 +237,9 @@
icon_state = "brokengrille"
density = FALSE
obj_integrity = 20
- broken = 1
+ broken = TRUE
rods_amount = 1
- rods_broken = 0
+ rods_broken = FALSE
grille_type = /obj/structure/grille
broken_type = null
@@ -269,8 +273,8 @@
icon_state = "brokenratvargrille"
density = FALSE
obj_integrity = 20
- broken = 1
+ broken = TRUE
rods_amount = 1
- rods_broken = 0
+ rods_broken = FALSE
grille_type = /obj/structure/grille/ratvar
broken_type = null
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 081cf186a3..225d634a7f 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -55,7 +55,7 @@
icon = 'icons/obj/smooth_structures/lattice_clockwork.dmi'
/obj/structure/lattice/clockwork/Initialize(mapload)
- ..()
+ . = ..()
ratvar_act()
/obj/structure/lattice/clockwork/ratvar_act()
@@ -63,7 +63,7 @@
new /obj/structure/lattice/clockwork/large(loc) // deletes old one
/obj/structure/lattice/clockwork/large/Initialize(mapload)
- ..()
+ . = ..()
icon = 'icons/obj/smooth_structures/lattice_clockwork_large.dmi'
pixel_x = -9
pixel_y = -9
@@ -101,7 +101,7 @@
icon = 'icons/obj/smooth_structures/catwalk_clockwork.dmi'
/obj/structure/lattice/catwalk/clockwork/Initialize(mapload)
- ..()
+ . = ..()
new /obj/effect/temp_visual/ratvar/floor/catwalk(loc)
new /obj/effect/temp_visual/ratvar/beam/catwalk(loc)
diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm
index e15a655a63..52d9e38f6b 100644
--- a/code/game/objects/structures/manned_turret.dm
+++ b/code/game/objects/structures/manned_turret.dm
@@ -1,214 +1,214 @@
-/////// MANNED TURRET ////////
-
-/obj/machinery/manned_turret
- name = "machine gun turret"
- desc = "While the trigger is held down, this gun will redistribute recoil to allow its user to easily shift targets."
- icon = 'icons/obj/turrets.dmi'
- icon_state = "machinegun"
- can_buckle = TRUE
- density = TRUE
- max_integrity = 100
- buckle_lying = FALSE
- layer = ABOVE_MOB_LAYER
- var/view_range = 10
- var/cooldown = 0
- var/projectile_type = /obj/item/projectile/bullet/weakbullet3
- var/rate_of_fire = 1
- var/number_of_shots = 40
- var/cooldown_duration = 90
- var/atom/target
- var/turf/target_turf
- var/warned = FALSE
- var/list/calculated_projectile_vars
-
-/obj/machinery/manned_turret/Destroy()
- target = null
- target_turf = null
- ..()
-
-//BUCKLE HOOKS
-
-/obj/machinery/manned_turret/unbuckle_mob(mob/living/buckled_mob,force = FALSE)
- playsound(src,'sound/mecha/mechmove01.ogg', 50, 1)
- for(var/obj/item/I in buckled_mob.held_items)
- if(istype(I, /obj/item/gun_control))
- qdel(I)
- if(istype(buckled_mob))
- buckled_mob.pixel_x = 0
- buckled_mob.pixel_y = 0
- if(buckled_mob.client)
- buckled_mob.client.change_view(world.view)
- anchored = FALSE
- . = ..()
- STOP_PROCESSING(SSfastprocess, src)
-
-/obj/machinery/manned_turret/user_buckle_mob(mob/living/M, mob/living/carbon/user)
- if(user.incapacitated() || !istype(user))
- return
- M.forceMove(get_turf(src))
- . = ..()
- if(!.)
- return
- for(var/V in M.held_items)
- var/obj/item/I = V
- if(istype(I))
- if(M.dropItemToGround(I))
- var/obj/item/gun_control/TC = new(src)
- M.put_in_hands(TC)
- else //Entries in the list should only ever be items or null, so if it's not an item, we can assume it's an empty hand
- var/obj/item/gun_control/TC = new(src)
- M.put_in_hands(TC)
- M.pixel_y = 14
- layer = ABOVE_MOB_LAYER
- setDir(SOUTH)
- playsound(src,'sound/mecha/mechmove01.ogg', 50, 1)
- anchored = TRUE
- if(M.client)
- M.client.change_view(view_range)
- START_PROCESSING(SSfastprocess, src)
-
-/obj/machinery/manned_turret/process()
- if(!LAZYLEN(buckled_mobs))
- return PROCESS_KILL
- update_positioning()
-
-/obj/machinery/manned_turret/proc/update_positioning()
- var/mob/living/controller = buckled_mobs[1]
- if(!istype(controller))
- return
- var/client/C = controller.client
- if(C)
- var/atom/A = C.mouseObject
- var/turf/T = get_turf(A)
- if(istype(T)) //They're hovering over something in the map.
- direction_track(controller, T)
- calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(controller, C.mouseParams)
-
-/obj/machinery/manned_turret/proc/direction_track(mob/user, atom/targeted)
- if(user.incapacitated())
- return
- setDir(get_dir(src,targeted))
- user.setDir(dir)
- switch(dir)
- if(NORTH)
- layer = BELOW_MOB_LAYER
- user.pixel_x = 0
- user.pixel_y = -14
- if(NORTHEAST)
- layer = BELOW_MOB_LAYER
- user.pixel_x = -8
- user.pixel_y = -4
- if(EAST)
- layer = ABOVE_MOB_LAYER
- user.pixel_x = -14
- user.pixel_y = 0
- if(SOUTHEAST)
- layer = BELOW_MOB_LAYER
- user.pixel_x = -8
- user.pixel_y = 4
- if(SOUTH)
- layer = ABOVE_MOB_LAYER
- user.pixel_x = 0
- user.pixel_y = 14
- if(SOUTHWEST)
- layer = BELOW_MOB_LAYER
- user.pixel_x = 8
- user.pixel_y = 4
- if(WEST)
- layer = ABOVE_MOB_LAYER
- user.pixel_x = 14
- user.pixel_y = 0
- if(NORTHWEST)
- layer = BELOW_MOB_LAYER
- user.pixel_x = 8
- user.pixel_y = -4
-
-/obj/machinery/manned_turret/proc/checkfire(atom/targeted_atom, mob/user)
- target = targeted_atom
- if(target == user || user.incapacitated() || target == get_turf(src))
- return
- if(world.time < cooldown)
- if(!warned && world.time > (cooldown - cooldown_duration + rate_of_fire*number_of_shots)) // To capture the window where one is done firing
- warned = TRUE
- playsound(src, 'sound/weapons/sear.ogg', 100, 1)
- return
- else
- cooldown = world.time + cooldown_duration
- warned = FALSE
- volley(user)
-
-/obj/machinery/manned_turret/proc/volley(mob/user)
- target_turf = get_turf(target)
- for(var/i in 1 to number_of_shots)
- addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire)
-
-/obj/machinery/manned_turret/proc/fire_helper(mob/user)
- if(user.incapacitated())
- return
- update_positioning() //REFRESH MOUSE TRACKING!!
- var/turf/targets_from = get_turf(src)
- if(QDELETED(target))
- target = target_turf
- var/obj/item/projectile/P = new projectile_type(targets_from)
- P.current = targets_from
- P.starting = targets_from
- P.firer = user
- P.original = target
- playsound(src, 'sound/weapons/gunshot_smg.ogg', 75, 1)
- P.xo = target.x - targets_from.x
- P.yo = target.y - targets_from.y
- P.Angle = calculated_projectile_vars[1] + rand(-9, 9)
- P.p_x = calculated_projectile_vars[2]
- P.p_y = calculated_projectile_vars[3]
- P.fire()
-
-/obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics
- name = "Infinity Gun"
- view_range = 12
- projectile_type = /obj/item/projectile/bullet/weakbullet3
-
-/obj/machinery/manned_turret/ultimate/checkfire(atom/targeted_atom, mob/user)
- target = targeted_atom
- if(target == user || target == get_turf(src))
- return
- target_turf = get_turf(target)
- fire_helper(user)
-
-/obj/item/gun_control
- name = "turret controls"
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "offhand"
- w_class = WEIGHT_CLASS_HUGE
- flags_1 = ABSTRACT_1 | NODROP_1 | NOBLUDGEON_1 | DROPDEL_1
- resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
- var/obj/machinery/manned_turret/turret
-
-/obj/item/gun_control/Initialize()
- . = ..()
- turret = loc
- if(!istype(turret))
- return INITIALIZE_HINT_QDEL
-
-/obj/item/gun_control/Destroy()
- turret = null
- ..()
-
-/obj/item/gun_control/CanItemAutoclick()
- return TRUE
-
-/obj/item/gun_control/attack_obj(obj/O, mob/living/user)
- user.changeNext_move(CLICK_CD_MELEE)
- O.attacked_by(src, user)
-
-/obj/item/gun_control/attack(mob/living/M, mob/living/user)
- user.lastattacked = M
- M.lastattacker = user
- M.attacked_by(src, user)
- add_fingerprint(user)
-
-/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params)
- ..()
- var/obj/machinery/manned_turret/E = user.buckled
- E.calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(user, params)
- E.direction_track(user, targeted_atom)
- E.checkfire(targeted_atom, user)
+/////// MANNED TURRET ////////
+
+/obj/machinery/manned_turret
+ name = "machine gun turret"
+ desc = "While the trigger is held down, this gun will redistribute recoil to allow its user to easily shift targets."
+ icon = 'icons/obj/turrets.dmi'
+ icon_state = "machinegun"
+ can_buckle = TRUE
+ density = TRUE
+ max_integrity = 100
+ buckle_lying = FALSE
+ layer = ABOVE_MOB_LAYER
+ var/view_range = 10
+ var/cooldown = 0
+ var/projectile_type = /obj/item/projectile/bullet/manned_turret
+ var/rate_of_fire = 1
+ var/number_of_shots = 40
+ var/cooldown_duration = 90
+ var/atom/target
+ var/turf/target_turf
+ var/warned = FALSE
+ var/list/calculated_projectile_vars
+
+/obj/machinery/manned_turret/Destroy()
+ target = null
+ target_turf = null
+ ..()
+
+//BUCKLE HOOKS
+
+/obj/machinery/manned_turret/unbuckle_mob(mob/living/buckled_mob,force = FALSE)
+ playsound(src,'sound/mecha/mechmove01.ogg', 50, 1)
+ for(var/obj/item/I in buckled_mob.held_items)
+ if(istype(I, /obj/item/gun_control))
+ qdel(I)
+ if(istype(buckled_mob))
+ buckled_mob.pixel_x = 0
+ buckled_mob.pixel_y = 0
+ if(buckled_mob.client)
+ buckled_mob.client.change_view(world.view)
+ anchored = FALSE
+ . = ..()
+ STOP_PROCESSING(SSfastprocess, src)
+
+/obj/machinery/manned_turret/user_buckle_mob(mob/living/M, mob/living/carbon/user)
+ if(user.incapacitated() || !istype(user))
+ return
+ M.forceMove(get_turf(src))
+ . = ..()
+ if(!.)
+ return
+ for(var/V in M.held_items)
+ var/obj/item/I = V
+ if(istype(I))
+ if(M.dropItemToGround(I))
+ var/obj/item/gun_control/TC = new(src)
+ M.put_in_hands(TC)
+ else //Entries in the list should only ever be items or null, so if it's not an item, we can assume it's an empty hand
+ var/obj/item/gun_control/TC = new(src)
+ M.put_in_hands(TC)
+ M.pixel_y = 14
+ layer = ABOVE_MOB_LAYER
+ setDir(SOUTH)
+ playsound(src,'sound/mecha/mechmove01.ogg', 50, 1)
+ anchored = TRUE
+ if(M.client)
+ M.client.change_view(view_range)
+ START_PROCESSING(SSfastprocess, src)
+
+/obj/machinery/manned_turret/process()
+ if(!LAZYLEN(buckled_mobs))
+ return PROCESS_KILL
+ update_positioning()
+
+/obj/machinery/manned_turret/proc/update_positioning()
+ var/mob/living/controller = buckled_mobs[1]
+ if(!istype(controller))
+ return
+ var/client/C = controller.client
+ if(C)
+ var/atom/A = C.mouseObject
+ var/turf/T = get_turf(A)
+ if(istype(T)) //They're hovering over something in the map.
+ direction_track(controller, T)
+ calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(controller, C.mouseParams)
+
+/obj/machinery/manned_turret/proc/direction_track(mob/user, atom/targeted)
+ if(user.incapacitated())
+ return
+ setDir(get_dir(src,targeted))
+ user.setDir(dir)
+ switch(dir)
+ if(NORTH)
+ layer = BELOW_MOB_LAYER
+ user.pixel_x = 0
+ user.pixel_y = -14
+ if(NORTHEAST)
+ layer = BELOW_MOB_LAYER
+ user.pixel_x = -8
+ user.pixel_y = -4
+ if(EAST)
+ layer = ABOVE_MOB_LAYER
+ user.pixel_x = -14
+ user.pixel_y = 0
+ if(SOUTHEAST)
+ layer = BELOW_MOB_LAYER
+ user.pixel_x = -8
+ user.pixel_y = 4
+ if(SOUTH)
+ layer = ABOVE_MOB_LAYER
+ user.pixel_x = 0
+ user.pixel_y = 14
+ if(SOUTHWEST)
+ layer = BELOW_MOB_LAYER
+ user.pixel_x = 8
+ user.pixel_y = 4
+ if(WEST)
+ layer = ABOVE_MOB_LAYER
+ user.pixel_x = 14
+ user.pixel_y = 0
+ if(NORTHWEST)
+ layer = BELOW_MOB_LAYER
+ user.pixel_x = 8
+ user.pixel_y = -4
+
+/obj/machinery/manned_turret/proc/checkfire(atom/targeted_atom, mob/user)
+ target = targeted_atom
+ if(target == user || user.incapacitated() || target == get_turf(src))
+ return
+ if(world.time < cooldown)
+ if(!warned && world.time > (cooldown - cooldown_duration + rate_of_fire*number_of_shots)) // To capture the window where one is done firing
+ warned = TRUE
+ playsound(src, 'sound/weapons/sear.ogg', 100, 1)
+ return
+ else
+ cooldown = world.time + cooldown_duration
+ warned = FALSE
+ volley(user)
+
+/obj/machinery/manned_turret/proc/volley(mob/user)
+ target_turf = get_turf(target)
+ for(var/i in 1 to number_of_shots)
+ addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire)
+
+/obj/machinery/manned_turret/proc/fire_helper(mob/user)
+ if(user.incapacitated())
+ return
+ update_positioning() //REFRESH MOUSE TRACKING!!
+ var/turf/targets_from = get_turf(src)
+ if(QDELETED(target))
+ target = target_turf
+ var/obj/item/projectile/P = new projectile_type(targets_from)
+ P.current = targets_from
+ P.starting = targets_from
+ P.firer = user
+ P.original = target
+ playsound(src, 'sound/weapons/gunshot_smg.ogg', 75, 1)
+ P.xo = target.x - targets_from.x
+ P.yo = target.y - targets_from.y
+ P.Angle = calculated_projectile_vars[1] + rand(-9, 9)
+ P.p_x = calculated_projectile_vars[2]
+ P.p_y = calculated_projectile_vars[3]
+ P.fire()
+
+/obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics
+ name = "Infinity Gun"
+ view_range = 12
+ projectile_type = /obj/item/projectile/bullet/manned_turret
+
+/obj/machinery/manned_turret/ultimate/checkfire(atom/targeted_atom, mob/user)
+ target = targeted_atom
+ if(target == user || target == get_turf(src))
+ return
+ target_turf = get_turf(target)
+ fire_helper(user)
+
+/obj/item/gun_control
+ name = "turret controls"
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "offhand"
+ w_class = WEIGHT_CLASS_HUGE
+ flags_1 = ABSTRACT_1 | NODROP_1 | NOBLUDGEON_1 | DROPDEL_1
+ resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ var/obj/machinery/manned_turret/turret
+
+/obj/item/gun_control/Initialize()
+ . = ..()
+ turret = loc
+ if(!istype(turret))
+ return INITIALIZE_HINT_QDEL
+
+/obj/item/gun_control/Destroy()
+ turret = null
+ ..()
+
+/obj/item/gun_control/CanItemAutoclick()
+ return TRUE
+
+/obj/item/gun_control/attack_obj(obj/O, mob/living/user)
+ user.changeNext_move(CLICK_CD_MELEE)
+ O.attacked_by(src, user)
+
+/obj/item/gun_control/attack(mob/living/M, mob/living/user)
+ user.lastattacked = M
+ M.lastattacker = user
+ M.attacked_by(src, user)
+ add_fingerprint(user)
+
+/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params)
+ ..()
+ var/obj/machinery/manned_turret/E = user.buckled
+ E.calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(user, params)
+ E.direction_track(user, targeted_atom)
+ E.checkfire(targeted_atom, user)
\ No newline at end of file
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index f4a98811c0..a5def04e0b 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -24,7 +24,7 @@
var/locked = FALSE
var/opendir = SOUTH
var/message_cooldown
- var/breakout_time = 1
+ var/breakout_time = 600
/obj/structure/bodycontainer/Destroy()
open()
@@ -97,9 +97,9 @@
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
user.visible_message(null, \
- "You lean on the back of [src] and start pushing the tray open... (this will take about [(breakout_time<1) ? "[breakout_time*60] seconds" : "[breakout_time] minute\s"].)", \
+ "You lean on the back of [src] and start pushing the tray open... (this will take about [DisplayTimeText(breakout_time)].)", \
"You hear a metallic creaking from [src].")
- if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds
+ if(do_after(user,(breakout_time), target = src))
if(!user || user.stat != CONSCIOUS || user.loc != src )
return
user.visible_message("[user] successfully broke out of [src]!", \
diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm
index ed0deef7d9..d253cbcf44 100644
--- a/code/game/objects/structures/musician.dm
+++ b/code/game/objects/structures/musician.dm
@@ -97,19 +97,15 @@
cur_acc[i] = "n"
for(var/line in lines)
- //to_chat(world, line)
for(var/beat in splittext(lowertext(line), ","))
- //to_chat(world, "beat: [beat]")
var/list/notes = splittext(beat, "/")
for(var/note in splittext(notes[1], "-"))
- //to_chat(world, "note: [note]")
if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case
playing = FALSE
hearing_mobs = null
return
if(!lentext(note))
continue
- //to_chat(world, "Parse: [copytext(note,1,2)]")
var/cur_note = text2ascii(note) - 96
if(cur_note < 1 || cur_note > 7)
continue
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index bbea363919..dc4ffe37b6 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -96,7 +96,10 @@ FLOOR SAFES
if(!ishuman(usr))
return
var/mob/living/carbon/human/user = usr
-
+
+ if(!user.canUseTopic(src))
+ return
+
var/canhear = 0
if(user.is_holding_item_of_type(/obj/item/clothing/neck/stethoscope))
canhear = 1
diff --git a/code/game/objects/structures/showcase.dm b/code/game/objects/structures/showcase.dm
index a755b3e88f..61f4efa824 100644
--- a/code/game/objects/structures/showcase.dm
+++ b/code/game/objects/structures/showcase.dm
@@ -39,16 +39,70 @@
icon = 'icons/obj/cloning.dmi'
icon_state = "pod_g"
-/obj/structure/showcase/oldpod
+/obj/structure/showcase/machinery/oldpod
name = "damaged cyrogenic pod"
desc = "A damaged cyrogenic pod long since lost to time, including its former occupant..."
icon = 'icons/obj/cryogenic2.dmi'
icon_state = "sleeper-open"
-/obj/structure/showcase/oldpod/used
+/obj/structure/showcase/machinery/oldpod/used
name = "opened cyrogenic pod"
desc = "Cyrogenic pod that has recently discharged its occupand. The pod appears non-functional."
+/obj/structure/showcase/cyborg/old
+ name = "Cyborg Statue"
+ desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."
+ icon = 'icons/mob/robots.dmi'
+ icon_state = "robot_old"
+ density = FALSE
+
+/obj/structure/showcase/mecha/marauder
+ name = "combat mech exhibit"
+ desc = "A stand with an empty old Nanotrasen Corporation combat mech bolted to it. It is described as the premier unit used to defend corporate interests and employees."
+ icon = 'icons/mecha/mecha.dmi'
+ icon_state = "marauder"
+
+/obj/structure/showcase/mecha/ripley
+ name = "construction mech exhibit"
+ desc = "A stand with an retired construction mech bolted to it. The clamps are rated at 9300PSI. It seems to be falling apart."
+ icon = 'icons/mecha/mecha.dmi'
+ icon_state = "firefighter"
+
+/obj/structure/showcase/machinery/implanter
+ name = "Nanotrasen automated mindshield implanter exhibit"
+ desc = "A flimsy model of a standard Nanotrasen automated mindshield implant machine. With secure positioning harnesses and a robotic surgical injector, brain damage and other serious medical anomalies are now up to 60% less likely!"
+ icon = 'icons/obj/machines/implantchair.dmi'
+ icon_state = "implantchair"
+
+/obj/structure/showcase/machinery/microwave
+ name = "Nanotrasen-brand microwave"
+ desc = "The famous Nanotrasen-brand microwave, the multi-purpose cooking appliance every station needs! This one appears to be drawn onto a cardboard box."
+ icon = 'icons/obj/kitchen.dmi'
+ icon_state = "mw"
+
+/obj/structure/showcase/machinery/cloning_pod
+ name = "cloning pod exhibit"
+ desc = "Signs describe how cloning pods like these ensure that every Nanotrasen employee can carry out their contracts in full, even in the unlikely event of their catastrophic death. Hopefully they aren't all made of cardboard, like this one."
+ icon = 'icons/obj/cloning.dmi'
+ icon_state = "pod_0"
+
+/obj/structure/showcase/perfect_employee
+ name = "'Perfect Man' employee exhibit"
+ desc = "A stand with a model of the perfect Nanotrasen Employee bolted to it. Signs indicate it is robustly genetically engineered, as well as being ruthlessly loyal."
+
+/obj/structure/showcase/machinery/tv
+ name = "Nanotrasen corporate newsfeed"
+ desc = "A slightly battered looking TV. Various Nanotrasen infomercials play on a loop, accompanied by a jaunty tune."
+ icon = 'icons/obj/computer.dmi'
+ icon_state = "television"
+
+/obj/structure/showcase/machinery/signal_decrypter
+ name = "subsystem signal decrypter"
+ desc = "A strange machine thats supposedly used to help pick up and decrypt wave signals. "
+ icon = 'icons/obj/machines/telecomms.dmi'
+ icon_state = "processor"
+
+
//Deconstructing
//Showcases can be any sprite, so it makes sense that they can't be constructed.
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index e9f94d41f2..afa74cbb5e 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -209,16 +209,39 @@
desc = "To be Robust is not an action or a way of life, but a mental state. Only those with the force of Will strong enough to act during a crisis, saving friend from foe, are truly Robust. Stay Robust my friends."
icon_state = "goldenplaque"
+/obj/structure/sign/goldenplaque/captain
+ name = "The Most Robust Captain Award for Robustness"
+
/obj/structure/sign/kiddieplaque
name = "AI developers plaque"
desc = "Next to the extremely long list of names and job titles, there is a drawing of a little child. The child appears to be retarded. Beneath the image, someone has scratched the word \"PACKETS\""
icon_state = "kiddieplaque"
+/obj/structure/sign/kiddieplaque/badger
+ name = "Remembrance Plaque"
+ desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."
+
+/obj/structure/sign/kiddieplaque/library
+ name = "Library Rules Sign"
+ desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside."
+
+/obj/structure/sign/kiddieplaque/perfect_man
+ name = "\improper 'Perfect Man' sign"
+ desc = "A guide to the exhibit, explaining how recent developments in mindshield implant and cloning technologies by Nanotrasen Corporation have led to the development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee."
+
+/obj/structure/sign/kiddieplaque/perfect_drone
+ name = "\improper 'Perfect Drone' sign"
+ desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today."
+
/obj/structure/sign/atmosplaque
name = "\improper FEA Atmospherics Division plaque"
desc = "This plaque commemorates the fall of the Atmos FEA division. For all the charred, dizzy, and brittle men who have died in its hands."
icon_state = "atmosplaque"
+/obj/structure/sign/atmosplaque/thunderdome
+ name = "Thunderdome Plaque"
+ desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands."
+
/obj/structure/sign/nanotrasen
name = "\improper NanoTrasen Logo "
desc = "A sign with the Nanotrasen Logo on it. Glory to Nanotrasen!"
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 17f7f3f493..116ced183f 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -34,8 +34,8 @@
smooth = SMOOTH_TRUE
canSmoothWith = list(/obj/structure/table, /obj/structure/table/reinforced)
-/obj/structure/table/New()
- ..()
+/obj/structure/table/Initialize()
+ . = ..()
for(var/obj/structure/table/T in src.loc)
if(T != src)
qdel(T)
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
index 1cf8e330fe..16d1072779 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
@@ -180,3 +180,6 @@
if(TT.has_exit(direction))
setDir(direction)
return
+
+/obj/structure/transit_tube_pod/return_temperature()
+ return air_contents.temperature
\ No newline at end of file
diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm
index d82428ad98..8e6ba993cb 100644
--- a/code/game/objects/structures/traps.dm
+++ b/code/game/objects/structures/traps.dm
@@ -16,7 +16,7 @@
var/datum/effect_system/spark_spread/spark_system
/obj/structure/trap/Initialize(mapload)
- ..()
+ . = ..()
spark_system = new
spark_system.set_up(4,1,src)
spark_system.attach(src)
diff --git a/code/game/sound.dm b/code/game/sound.dm
index cf6d4707a7..13a3343e06 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -178,4 +178,6 @@
'sound/vore/prey/death_10.ogg')
if("bullet_miss")
soundin = pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg')
+ if("law")
+ soundin = pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg')
return soundin
diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm
index 2ea3ffe7fc..68e5e31e84 100644
--- a/code/game/turfs/closed.dm
+++ b/code/game/turfs/closed.dm
@@ -69,7 +69,7 @@
icon = 'icons/obj/smooth_structures/reinforced_window.dmi'
/turf/closed/indestructible/fakeglass/Initialize()
- ..()
+ . = ..()
icon_state = null //set the icon state to null, so our base state isn't visible
underlays += mutable_appearance('icons/obj/structures.dmi', "grille") //add a grille underlay
underlays += mutable_appearance('icons/turf/floors.dmi', "plating") //add the plating underlay, below the grille
diff --git a/code/game/turfs/simulated/chasm.dm b/code/game/turfs/simulated/chasm.dm
index da92d6b9dd..3fdd6b1cc9 100644
--- a/code/game/turfs/simulated/chasm.dm
+++ b/code/game/turfs/simulated/chasm.dm
@@ -125,7 +125,7 @@
/turf/open/chasm/straight_down/Initialize()
- ..()
+ . = ..()
drop_x = x
drop_y = y
if(z+1 <= world.maxz)
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index df3d2aba86..02206646d2 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -21,7 +21,7 @@
broken_states = list("damaged1", "damaged2", "damaged3", "damaged4", "damaged5")
if (!burnt_states)
burnt_states = list()
- ..()
+ . = ..()
//This is so damaged or burnt tiles or platings don't get remembered as the default tile
var/static/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","damaged4",
"damaged5","panelscorched","floorscorched1","floorscorched2","platingdmg1","platingdmg2", "foam_plating",
diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm
index 59e7bed8ca..a24642c735 100644
--- a/code/game/turfs/simulated/floor/fancy_floor.dm
+++ b/code/game/turfs/simulated/floor/fancy_floor.dm
@@ -71,7 +71,7 @@
var/turfverb = "uproot"
/turf/open/floor/grass/Initialize()
- ..()
+ . = ..()
update_icon()
/turf/open/floor/grass/attackby(obj/item/C, mob/user, params)
@@ -109,7 +109,7 @@
slowdown = 0
/turf/open/floor/grass/snow/basalt/Initialize()
- ..()
+ . = ..()
if(prob(15))
icon_state = "basalt[rand(0, 12)]"
set_basalt_light(src)
@@ -126,7 +126,7 @@
slowdown = 0
/turf/open/floor/grass/fakebasalt/Initialize()
- ..()
+ . = ..()
if(prob(15))
icon_state = "basalt[rand(0, 12)]"
set_basalt_light(src)
@@ -144,7 +144,7 @@
flags_1 = NONE
/turf/open/floor/carpet/Initialize()
- ..()
+ . = ..()
update_icon()
/turf/open/floor/carpet/update_icon()
@@ -205,7 +205,7 @@
plane = PLANE_SPACE
/turf/open/floor/fakespace/Initialize()
- ..()
+ . = ..()
icon_state = SPACE_ICON_STATE
/turf/open/floor/fakespace/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
diff --git a/code/game/turfs/simulated/floor/light_floor.dm b/code/game/turfs/simulated/floor/light_floor.dm
index 542a0ed81d..247382d03c 100644
--- a/code/game/turfs/simulated/floor/light_floor.dm
+++ b/code/game/turfs/simulated/floor/light_floor.dm
@@ -13,7 +13,7 @@
/turf/open/floor/light/Initialize()
- ..()
+ . = ..()
update_icon()
/turf/open/floor/light/break_tile()
diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm
index c28232410d..6f863d4bd0 100644
--- a/code/game/turfs/simulated/floor/mineral_floor.dm
+++ b/code/game/turfs/simulated/floor/mineral_floor.dm
@@ -18,7 +18,7 @@
/turf/open/floor/mineral/Initialize()
broken_states = list("[initial(icon_state)]_dam")
- ..()
+ . = ..()
if (!icons)
icons = list()
@@ -221,7 +221,7 @@
icons = list("alienpod1", "alienpod2", "alienpod3", "alienpod4", "alienpod5", "alienpod6", "alienpod7", "alienpod8", "alienpod9")
/turf/open/floor/mineral/abductor/Initialize()
- ..()
+ . = ..()
icon_state = "alienpod[rand(1,9)]"
/turf/open/floor/mineral/abductor/break_tile()
diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm
index f2475cf997..3656e146a6 100644
--- a/code/game/turfs/simulated/floor/misc_floor.dm
+++ b/code/game/turfs/simulated/floor/misc_floor.dm
@@ -20,7 +20,7 @@
/turf/open/floor/circuit/Initialize()
SSmapping.nuke_tiles += src
update_icon()
- ..()
+ . = ..()
/turf/open/floor/circuit/Destroy()
SSmapping.nuke_tiles -= src
@@ -145,7 +145,7 @@
var/obj/effect/clockwork/overlay/floor/realappearence
/turf/open/floor/clockwork/Initialize()
- ..()
+ . = ..()
new /obj/effect/temp_visual/ratvar/floor(src)
new /obj/effect/temp_visual/ratvar/beam(src)
realappearence = new /obj/effect/clockwork/overlay/floor(src)
@@ -230,53 +230,3 @@
icon_state = "sepia"
desc = "Time seems to flow very slowly around these tiles"
floor_tile = /obj/item/stack/tile/sepia
-
-
-
-// VINE FLOOR
-
-/turf/open/floor/vines
- color = "#aa77aa"
- icon_state = "vinefloor"
- broken_states = list()
-
-
-//All of this shit is useless for vines
-
-/turf/open/floor/vines/attackby()
- return
-
-/turf/open/floor/vines/burn_tile()
- return
-
-/turf/open/floor/vines/break_tile()
- return
-
-/turf/open/floor/vines/make_plating()
- return
-
-/turf/open/floor/vines/break_tile_to_plating()
- return
-
-/turf/open/floor/vines/ex_act(severity, target)
- ..()
- if(severity < 3 || target == src)
- ChangeTurf(src.baseturf)
-
-/turf/open/floor/vines/narsie_act(force, ignore_mobs, probability = 20)
- if(prob(probability) || force)
- ChangeTurf(baseturf) //nar sie eats this shit
- narsie_act(force, ignore_mobs, probability)
-
-/turf/open/floor/vines/singularity_pull(S, current_size)
- ..()
- if(current_size >= STAGE_FIVE)
- if(prob(50))
- ChangeTurf(src.baseturf)
-
-/turf/open/floor/vines/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE)
- . = ..()
- //Do this *after* the turf has changed as qdel in spacevines will call changeturf again if it hasn't
- for(var/obj/structure/spacevine/SV in src)
- if(!QDESTROYING(SV))//Helps avoid recursive loops
- qdel(SV)
diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm
index c99d2f3a9a..63c883f88c 100644
--- a/code/game/turfs/simulated/floor/plasteel_floor.dm
+++ b/code/game/turfs/simulated/floor/plasteel_floor.dm
@@ -361,6 +361,7 @@
name = "Mainframe Floor"
/turf/open/floor/plasteel/vault/killroom
name = "Killroom Floor"
+ initial_gas_mix = "n2=500;TEMP=80"
/turf/open/floor/plasteel/cult
icon_state = "cult"
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index 3617759e99..8ad6657784 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -17,7 +17,7 @@
broken_states = list("platingdmg1", "platingdmg2", "platingdmg3")
if (!burnt_states)
burnt_states = list("panelscorched")
- ..()
+ . = ..()
icon_plating = icon_state
/turf/open/floor/plating/update_icon()
diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm
index eaf0e512f7..04c97aa7d5 100644
--- a/code/game/turfs/simulated/floor/reinf_floor.dm
+++ b/code/game/turfs/simulated/floor/reinf_floor.dm
@@ -108,7 +108,7 @@
var/obj/effect/clockwork/overlay/floor/bloodcult/realappearence
/turf/open/floor/engine/cult/Initialize()
- ..()
+ . = ..()
new /obj/effect/temp_visual/cult/turf/floor(src)
realappearence = new /obj/effect/clockwork/overlay/floor/bloodcult(src)
realappearence.linked = src
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 9e0d57d782..630ded7daa 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -30,7 +30,7 @@
pixel_y = -4
pixel_x = -4
icon = smooth_icon
- ..()
+ . = ..()
if (mineralType && mineralAmt && spread && spreadChance)
for(var/dir in GLOB.cardinals)
if(prob(spreadChance))
@@ -153,7 +153,7 @@
/turf/closed/mineral/gibtonite = 4, /turf/open/floor/plating/asteroid/airless/cave = 2, /turf/closed/mineral/bscrystal = 1)
if (display_icon_state)
icon_state = display_icon_state
- ..()
+ . = ..()
if (prob(mineralChance))
var/path = pickweight(mineralSpawnChanceList)
var/turf/T = ChangeTurf(path,FALSE,FALSE,TRUE)
@@ -393,7 +393,7 @@
/turf/closed/mineral/gibtonite/Initialize()
det_time = rand(8,10) //So you don't know exactly when the hot potato will explode
- ..()
+ . = ..()
/turf/closed/mineral/gibtonite/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner) && stage == 1)
diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm
index b37c235d39..cf611560c3 100644
--- a/code/game/turfs/space/transit.dm
+++ b/code/game/turfs/space/transit.dm
@@ -30,6 +30,7 @@
throw_atom(AM)
/turf/open/space/transit/proc/throw_atom(atom/movable/AM)
+ set waitfor = FALSE
if(!AM || istype(AM, /obj/docking_port))
return
if(AM.loc != src) // Multi-tile objects are "in" multiple locs but its loc is it's true placement.
@@ -72,7 +73,7 @@
/turf/open/space/transit/Initialize()
- ..()
+ . = ..()
update_icon()
for(var/atom/movable/AM in src)
throw_atom(AM)
diff --git a/code/game/world.dm b/code/game/world.dm
index 87d76b9e8a..3763a408ac 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -6,7 +6,7 @@ GLOBAL_PROTECT(security_mode)
SetupExternalRSC()
- GLOB.config_error_log = GLOB.sql_error_log = GLOB.world_href_log = GLOB.world_runtime_log = GLOB.world_attack_log = GLOB.world_game_log = file("data/logs/config_error.log") //temporary file used to record errors with loading config, moved to log directory once logging is set bl
+ GLOB.config_error_log = GLOB.world_pda_log = GLOB.sql_error_log = GLOB.world_href_log = GLOB.world_runtime_log = GLOB.world_attack_log = GLOB.world_game_log = file("data/logs/config_error.log") //temporary file used to record errors with loading config, moved to log directory once logging is set bl
CheckSecurityMode()
@@ -88,10 +88,12 @@ GLOBAL_PROTECT(security_mode)
GLOB.world_runtime_log = file("[GLOB.log_directory]/runtime.log")
GLOB.world_qdel_log = file("[GLOB.log_directory]/qdel.log")
GLOB.world_href_log = file("[GLOB.log_directory]/hrefs.html")
+ GLOB.world_pda_log = file("[GLOB.log_directory]/pda.log")
GLOB.sql_error_log = file("[GLOB.log_directory]/sql.log")
WRITE_FILE(GLOB.world_game_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------")
WRITE_FILE(GLOB.world_attack_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------")
WRITE_FILE(GLOB.world_runtime_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------")
+ WRITE_FILE(GLOB.world_pda_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------")
GLOB.changelog_hash = md5('html/changelog.html') //used for telling if the changelog has changed recently
if(fexists(GLOB.config_error_log))
fcopy(GLOB.config_error_log, "[GLOB.log_directory]/config_error.log")
@@ -106,7 +108,7 @@ GLOBAL_PROTECT(security_mode)
GLOB.security_mode = SECURITY_ULTRASAFE
warning("/tg/station 13 is not supported in ultrasafe security mode. Everything will break!")
return
-
+
//try to shell
if(shell("echo \"The world is running in trusted mode\"") != null)
GLOB.security_mode = SECURITY_TRUSTED
diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm
index c6f44fd1da..086df300d3 100644
--- a/code/modules/admin/DB_ban/functions.dm
+++ b/code/modules/admin/DB_ban/functions.dm
@@ -354,6 +354,7 @@
output += "