Merge branch 'master' into upstream-merge-33316

This commit is contained in:
deathride58
2017-12-11 00:01:02 +00:00
committed by GitHub
395 changed files with 6473 additions and 3467 deletions
+1
View File
@@ -192,6 +192,7 @@ Temporary Items
#Visual studio stuff
*.vscode/*
tools/MapAtmosFixer/MapAtmosFixer/obj/x86/Debug/MapAtmosFixer.csproj.CoreCompileInputs.cache
#GitHub Atom
.atom-build.json
@@ -140,7 +140,7 @@
icon_state = "blood1";
dir = 1
},
/obj/machinery/door/airlock/survival_pod,
/obj/machinery/door/airlock/survival_pod/glass,
/obj/structure/fans/tiny,
/turf/open/floor/pod/dark,
/area/ruin/powered)
@@ -109,7 +109,7 @@
icon_state = "blood1";
dir = 1
},
/obj/machinery/door/airlock/survival_pod,
/obj/machinery/door/airlock/survival_pod/glass,
/turf/open/floor/pod/dark,
/area/ruin/powered)
"u" = (
+2 -2
View File
@@ -172,7 +172,7 @@
/turf/open/floor/plasteel/bar,
/area/ruin/space/djstation)
"aG" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Kitchen"
},
/turf/open/floor/plasteel/cafeteria,
@@ -193,7 +193,7 @@
/turf/open/floor/plasteel/cafeteria,
/area/ruin/space/djstation)
"aJ" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Rest Room"
},
/turf/open/floor/plasteel/cafeteria,
+2 -2
View File
@@ -1030,7 +1030,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/derelict/bridge/access)
"dp" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/structure/cable{
icon_state = "4-8"
},
@@ -2759,7 +2759,7 @@
/turf/open/floor/plasteel/airless/white,
/area/ruin/space/derelict/medical)
"ja" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Med-Sci";
req_access_txt = "9"
},
@@ -622,7 +622,7 @@
/area/ruin/space/has_grav/abandonedzoo)
"bA" = (
/obj/structure/table/reinforced,
/obj/machinery/juicer,
/obj/machinery/reagentgrinder,
/turf/open/floor/plasteel{
icon_state = "dark"
},
@@ -950,7 +950,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/derelictoutpost/cargobay)
"cy" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/poddoor{
id = "bigderelictcheckpoint";
name = "checkpoint security doors"
+3 -3
View File
@@ -879,7 +879,7 @@
},
/area/ruin/space/has_grav/deepstorage)
"bQ" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Hydroponics"
},
/turf/open/floor/plasteel/hydrofloor{
@@ -962,7 +962,7 @@
icon_state = "1-2"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Kitchen"
},
/turf/open/floor/plasteel/cafeteria{
@@ -1929,7 +1929,7 @@
icon_state = "4-8"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dorms"
},
/turf/open/floor/plasteel/floorgrime{
+2 -2
View File
@@ -197,11 +197,11 @@
/turf/open/floor/plating/airless,
/area/ruin/unpowered)
"aF" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel/airless/bar,
/area/ruin/unpowered)
"aG" = (
/obj/structure/door_assembly/door_assembly_glass{
/obj/structure/door_assembly/door_assembly_public{
name = "broken airlock"
},
/turf/open/floor/plasteel/airless/bar,
@@ -81,7 +81,9 @@
/turf/open/floor/plating/asteroid/airless,
/area/ruin/space/has_grav)
"u" = (
/obj/machinery/door/airlock/survival_pod/vertical,
/obj/machinery/door/airlock/survival_pod/glass{
dir = 4
},
/turf/open/floor/plating/asteroid/airless,
/area/ruin/space/has_grav)
@@ -106,7 +106,7 @@
/turf/open/floor/mineral/titanium/purple,
/area/ruin/space/has_grav/powered/authorship)
"u" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/mineral/titanium/purple,
/area/ruin/space/has_grav/powered/authorship)
"v" = (
+5 -5
View File
@@ -1468,7 +1468,7 @@
"eo" = (
/obj/machinery/door/firedoor,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Hydroponics"
},
/turf/open/floor/plasteel/floorgrime,
@@ -1502,7 +1502,7 @@
/area/ruin/space/has_grav/ancientstation/hydroponics)
"es" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Hydroponics"
},
/obj/machinery/door/firedoor/closed,
@@ -3143,14 +3143,14 @@
"ii" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dining Area"
},
/turf/open/floor/plasteel/cafeteria,
/area/ruin/space/has_grav/ancientstation/kitchen)
"ij" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dining Area"
},
/obj/machinery/door/firedoor/closed,
@@ -3881,7 +3881,7 @@
/area/ruin/space/has_grav/ancientstation)
"jU" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Cryogenics Room"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+2 -2
View File
@@ -511,7 +511,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/structure/cable{
icon_state = "4-8"
},
@@ -631,7 +631,7 @@
/turf/open/floor/plasteel/airless,
/area/ruin/space/has_grav/onehalf/hallway)
"bC" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -11,7 +11,7 @@
/turf/closed/indestructible/oldshuttle,
/area/ruin/powered)
"d" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/oldshuttle,
/area/ruin/powered)
"e" = (
+8 -8
View File
@@ -1242,12 +1242,12 @@
name = "Hotel Guest Room 1"
})
"df" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/firedoor,
/turf/open/floor/carpet,
/area/ruin/space/has_grav/hotel)
"dg" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/carpet,
@@ -2228,7 +2228,7 @@
/turf/open/floor/carpet,
/area/ruin/space/has_grav/hotel)
"fW" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -2283,7 +2283,7 @@
/turf/open/floor/carpet,
/area/ruin/space/has_grav/hotel)
"gf" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/firedoor,
/turf/open/floor/carpet,
/area/ruin/space/has_grav/hotel/dock)
@@ -3023,7 +3023,7 @@
/turf/open/floor/carpet,
/area/ruin/space/has_grav/hotel)
"il" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/structure/cable{
icon_state = "4-8"
},
@@ -3475,7 +3475,7 @@
/turf/closed/wall,
/area/ruin/space/has_grav/hotel/pool)
"ju" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -3491,7 +3491,7 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/hotel/pool)
"jw" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -3893,7 +3893,7 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/hotel/power)
"kJ" = (
/obj/machinery/door/airlock/glass_external,
/obj/machinery/door/airlock/external/glass,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
@@ -108,7 +108,7 @@
},
/area/ruin/space/has_grav/turretedoutpost)
"aw" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/turretedoutpost)
"ax" = (
@@ -172,7 +172,7 @@
/turf/open/floor/plasteel/vault,
/area/ruin/space/has_grav/turretedoutpost)
"aI" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/turretedoutpost)
"aJ" = (
@@ -69,7 +69,7 @@
/turf/open/floor/mineral/titanium,
/area/ruin/space/has_grav/whiteship/box)
"ao" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plating,
/area/ruin/space/has_grav/whiteship/box)
"ap" = (
@@ -181,7 +181,7 @@
/turf/open/floor/mineral/titanium,
/area/ruin/space/has_grav/whiteship/box)
"aH" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/mineral/titanium,
/area/ruin/space/has_grav/whiteship/box)
"aI" = (
+2 -2
View File
@@ -1273,12 +1273,12 @@
/turf/open/floor/plating,
/area/awaymission/academy)
"eA" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/airlock/external,
/turf/open/floor/plating,
/area/awaymission/academy/classrooms)
"eB" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plating,
/area/awaymission/academy/classrooms)
"eC" = (
+1 -1
View File
@@ -1600,7 +1600,7 @@
/turf/open/floor/carpet,
/area/awaymission/centcomAway/courtroom)
"fU" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Med-Sci";
req_access_txt = "9"
},
+3 -3
View File
@@ -786,7 +786,7 @@
},
/area/awaymission/moonoutpost19/syndicate)
"bO" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Break Room"
},
/turf/open/floor/plasteel{
@@ -1127,7 +1127,7 @@
},
/area/awaymission/moonoutpost19/syndicate)
"cr" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
density = 0;
emagged = 1;
icon_state = "open";
@@ -5322,7 +5322,7 @@
/area/awaymission/moonoutpost19/arrivals)
"km" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Diner"
},
/turf/open/floor/plasteel{
+6 -6
View File
@@ -720,7 +720,7 @@
/turf/open/floor/plating/asteroid/snow,
/area/awaymission/snowdin)
"bN" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel/cafeteria{
baseturf = /turf/open/floor/plating/asteroid/snow
},
@@ -1493,7 +1493,7 @@
},
/area/awaymission/snowdin/post)
"dV" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
req_access_txt = "150"
},
/turf/open/floor/plasteel{
@@ -2453,7 +2453,7 @@
},
/area/awaymission/snowdin/post)
"gJ" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/obj/structure/barricade/wooden,
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/snow;
@@ -2490,7 +2490,7 @@
/turf/open/floor/plating/snowed/colder,
/area/awaymission/snowdin/dungeon1)
"gP" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel/cafeteria{
baseturf = /turf/open/floor/plating/asteroid/snow;
temperature = 180
@@ -2549,7 +2549,7 @@
},
/area/awaymission/snowdin/post)
"gX" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel{
baseturf = /turf/open/floor/plating/asteroid/snow;
wet = 0
@@ -4299,7 +4299,7 @@
},
/area/awaymission/snowdin/sekret)
"lE" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel/cafeteria{
baseturf = /turf/open/floor/plating/asteroid/snow
},
+14 -14
View File
@@ -1307,7 +1307,7 @@
/area/awaymission/undergroundoutpost45/central)
"da" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/turf/open/floor/plasteel{
@@ -1784,7 +1784,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Hydroponics";
req_access_txt = "201"
},
@@ -1918,7 +1918,7 @@
/area/awaymission/undergroundoutpost45/central)
"eo" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Hydroponics";
req_access_txt = "201"
},
@@ -2796,7 +2796,7 @@
"ge" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/turf/open/floor/plasteel{
@@ -3545,7 +3545,7 @@
/area/awaymission/undergroundoutpost45/crew_quarters)
"hP" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Kitchen";
req_access_txt = "201"
},
@@ -4349,7 +4349,7 @@
"jt" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/turf/open/floor/plasteel{
@@ -4358,7 +4358,7 @@
/area/awaymission/undergroundoutpost45/crew_quarters)
"ju" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/turf/open/floor/plasteel{
@@ -4843,7 +4843,7 @@
/area/awaymission/undergroundoutpost45/crew_quarters)
"kp" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Diner"
},
/turf/open/floor/plasteel{
@@ -5796,7 +5796,7 @@
"lV" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Diner"
},
/turf/open/floor/plasteel{
@@ -5810,7 +5810,7 @@
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Diner"
},
/turf/open/floor/plasteel{
@@ -6348,7 +6348,7 @@
"mV" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dormitories"
},
/obj/effect/decal/cleanable/dirt,
@@ -6359,7 +6359,7 @@
"mW" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dormitories"
},
/turf/open/floor/plasteel{
@@ -6721,7 +6721,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dormitories"
},
/turf/open/floor/plasteel{
@@ -7209,7 +7209,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dormitories"
},
/turf/open/floor/plasteel{
+44 -45
View File
@@ -777,7 +777,7 @@
id = "permacell3";
name = "cell blast door"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt3";
name = "Cell 3"
},
@@ -788,7 +788,7 @@
id = "permacell2";
name = "cell blast door"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt2";
name = "Cell 2"
},
@@ -803,7 +803,7 @@
id = "permacell1";
name = "cell blast door"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt1";
name = "Cell 1"
},
@@ -5351,7 +5351,7 @@
/turf/open/floor/plating,
/area/security/courtroom)
"amt" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Courtroom";
req_access_txt = "42"
},
@@ -5975,7 +5975,7 @@
id = "seclobby";
name = "security shutters"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Courtroom"
},
/turf/open/floor/plasteel/dark,
@@ -8208,7 +8208,7 @@
/area/security/vacantoffice/b)
"atZ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Door"
},
/turf/open/floor/plasteel,
@@ -8409,7 +8409,7 @@
/area/crew_quarters/dorms)
"auy" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Door"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -9245,7 +9245,7 @@
/area/crew_quarters/fitness)
"awz" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fitness"
},
/turf/open/floor/plasteel,
@@ -9803,7 +9803,7 @@
icon_state = "4-8"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fitness"
},
/turf/open/floor/plasteel,
@@ -9862,7 +9862,7 @@
/area/crew_quarters/fitness)
"axZ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Door"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -13533,8 +13533,7 @@
/turf/open/floor/wood,
/area/library)
"aHc" = (
/obj/structure/table/wood,
/obj/item/storage/pill_bottle/dice,
/obj/machinery/vending/games,
/turf/open/floor/wood,
/area/library)
"aHd" = (
@@ -13752,7 +13751,7 @@
/area/ai_monitored/nuke_storage)
"aHH" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dormitory"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -13807,14 +13806,14 @@
/area/ai_monitored/storage/eva)
"aHP" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aHQ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/turf/open/floor/plasteel/blue/corner{
@@ -13823,7 +13822,7 @@
/area/hallway/primary/central)
"aHR" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/turf/open/floor/plasteel/blue/side{
@@ -13844,7 +13843,7 @@
/area/maintenance/starboard/fore)
"aHT" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dormitory"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -14729,7 +14728,7 @@
icon_state = "1-2"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Primary Tool Storage"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -14737,7 +14736,7 @@
/area/storage/primary)
"aKa" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Primary Tool Storage"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -14835,7 +14834,7 @@
/area/hallway/secondary/entry)
"aKm" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Garden"
},
/turf/open/floor/plasteel,
@@ -15829,7 +15828,7 @@
/area/hallway/secondary/entry)
"aNc" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -16067,7 +16066,7 @@
/area/crew_quarters/kitchen)
"aNN" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Hydroponics";
req_access_txt = "35"
},
@@ -16137,7 +16136,7 @@
/turf/open/floor/wood,
/area/library)
"aNW" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Chapel Office";
req_access_txt = "22"
},
@@ -16399,7 +16398,7 @@
/area/hallway/primary/port)
"aOB" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -16781,7 +16780,7 @@
/turf/closed/wall,
/area/storage/art)
"aPH" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Art Storage"
},
/turf/open/floor/plasteel,
@@ -17281,7 +17280,7 @@
/area/storage/tools)
"aRf" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Auxiliary Tool Storage";
req_access_txt = "12"
},
@@ -17831,7 +17830,7 @@
/turf/open/floor/plasteel/bar,
/area/crew_quarters/bar)
"aSI" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Kitchen";
req_access_txt = "28"
},
@@ -19059,7 +19058,7 @@
dir = 4
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -19100,7 +19099,7 @@
/area/library)
"aWe" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Chapel"
},
/turf/open/floor/carpet,
@@ -19731,7 +19730,7 @@
/area/crew_quarters/locker)
"aXy" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Chapel"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -19878,7 +19877,7 @@
/area/hydroponics)
"aXT" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -20371,7 +20370,7 @@
/area/library)
"aZe" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Chapel"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -21222,7 +21221,7 @@
/area/crew_quarters/heads/captain)
"bbx" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Diner"
},
/turf/open/floor/plasteel,
@@ -21248,7 +21247,7 @@
/area/hallway/primary/starboard)
"bbB" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Hydroponics";
req_access_txt = "35"
},
@@ -31309,7 +31308,7 @@
/area/quartermaster/miningdock)
"bzG" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -32524,7 +32523,7 @@
"bCu" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -47257,7 +47256,7 @@
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"cmf" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -47732,7 +47731,7 @@
/turf/closed/wall,
/area/construction)
"cnC" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -51288,7 +51287,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"cwX" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cockpit";
req_access_txt = "19"
},
@@ -51347,7 +51346,7 @@
/turf/open/floor/mineral/plastitanium/brig,
/area/shuttle/escape)
"cxf" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
@@ -51591,7 +51590,7 @@
/turf/open/floor/plating,
/area/maintenance/solars/starboard/fore)
"cxO" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Infirmary"
},
/turf/open/floor/mineral/titanium/blue,
@@ -51910,7 +51909,7 @@
/turf/open/floor/plating,
/area/shuttle/abandoned)
"cyz" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plating,
/area/shuttle/abandoned)
"cyA" = (
@@ -52137,7 +52136,7 @@
/turf/open/floor/plating,
/area/shuttle/supply)
"cza" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"czb" = (
@@ -100607,7 +100606,7 @@ bZQ
caP
cbO
ccJ
cdM
bLS
bLS
cfp
cge
@@ -103891,7 +103890,7 @@ aFu
aHc
aIw
aJS
cAM
aJS
aMJ
aNP
aOS
+59 -76
View File
@@ -1059,10 +1059,8 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
/obj/machinery/door/airlock{
glass = 1;
name = "Dormitory";
opacity = 0
/obj/machinery/door/airlock/glass{
name = "Dormitory"
},
/turf/open/floor/plasteel/neutral,
/area/shuttle/abandoned)
@@ -1419,10 +1417,8 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
/obj/machinery/door/airlock{
glass = 1;
name = "Crew Quarters";
opacity = 0
/obj/machinery/door/airlock/glass{
name = "Crew Quarters"
},
/turf/open/floor/plasteel/neutral/side{
dir = 1
@@ -10242,7 +10238,7 @@
/area/crew_quarters/toilet/auxiliary)
"avM" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fore Primary Hallway"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -10257,7 +10253,7 @@
/area/hallway/primary/fore)
"avN" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fore Primary Hallway"
},
/obj/effect/turf_decal/stripes/line{
@@ -10271,7 +10267,7 @@
"avO" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fore Primary Hallway"
},
/obj/effect/turf_decal/stripes/line{
@@ -17467,7 +17463,7 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Garden"
},
/turf/open/floor/plasteel,
@@ -18800,7 +18796,7 @@
/turf/open/floor/engine/vacuum,
/area/maintenance/disposal/incinerator)
"aNS" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -18827,7 +18823,7 @@
/turf/open/floor/engine,
/area/maintenance/disposal/incinerator)
"aNU" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -20012,7 +20008,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/effect/turf_decal/stripes/line{
@@ -20833,7 +20829,7 @@
/area/crew_quarters/bar/atrium)
"aSc" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/effect/turf_decal/stripes/line{
@@ -21110,7 +21106,7 @@
id = "permacell3";
name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt3";
name = "Cell 3"
},
@@ -21128,7 +21124,7 @@
id = "permacell2";
name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt2";
name = "Cell 2"
},
@@ -21148,7 +21144,7 @@
id = "permacell1";
name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt1";
name = "Cell 1"
},
@@ -21742,7 +21738,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/effect/turf_decal/stripes/line{
@@ -31215,7 +31211,7 @@
/area/hallway/secondary/service)
"bno" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Service Foyer"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -31260,7 +31256,7 @@
"bns" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fore Primary Hallway"
},
/obj/effect/turf_decal/stripes/line{
@@ -31273,7 +31269,7 @@
/area/hallway/primary/fore)
"bnt" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fore Primary Hallway"
},
/obj/structure/cable/white{
@@ -48542,7 +48538,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Port Primary Hallway"
},
/obj/effect/turf_decal/stripes/line{
@@ -48704,7 +48700,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Starboard Primary Hallway"
},
/obj/structure/disposalpipe/segment{
@@ -49689,7 +49685,7 @@
/area/hallway/primary/port)
"bWK" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Port Primary Hallway"
},
/obj/effect/turf_decal/stripes/line{
@@ -49960,7 +49956,7 @@
/obj/structure/cable/white{
icon_state = "4-8"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Starboard Primary Hallway"
},
/obj/effect/turf_decal/stripes/line{
@@ -50915,7 +50911,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Port Primary Hallway"
},
/obj/effect/turf_decal/stripes/line{
@@ -51103,7 +51099,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Starboard Primary Hallway"
},
/obj/structure/disposalpipe/segment{
@@ -51807,7 +51803,7 @@
/turf/open/floor/plating,
/area/library)
"caI" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library Access"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -51816,7 +51812,7 @@
},
/area/library)
"caJ" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -56145,7 +56141,7 @@
/turf/open/floor/plasteel/grimy,
/area/library)
"cjv" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -56375,7 +56371,7 @@
/area/security/courtroom)
"cjX" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Courtroom";
req_access_txt = "42"
},
@@ -56808,7 +56804,7 @@
/turf/open/floor/plasteel/grimy,
/area/library)
"ckU" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library Access"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -60289,7 +60285,7 @@
/area/hallway/primary/central)
"cso" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Command Hallway"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -61054,7 +61050,7 @@
icon_state = "4-8"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Command Hallway"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -61761,14 +61757,14 @@
},
/area/maintenance/port)
"cvi" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library Game Room"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/grimy,
/area/library)
"cvj" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library Game Room"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -61971,7 +61967,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Starboard Auxiliary Hallway"
},
/obj/structure/disposalpipe/segment{
@@ -62629,7 +62625,7 @@
/area/hallway/primary/central)
"cwZ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Starboard Auxiliary Hallway"
},
/obj/effect/turf_decal/stripes/line{
@@ -63397,7 +63393,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Starboard Auxiliary Hallway"
},
/obj/structure/disposalpipe/segment{
@@ -64521,20 +64517,11 @@
/area/library)
"cBc" = (
/obj/structure/table/wood,
/obj/item/storage/pill_bottle/dice,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/carpet,
/area/library)
"cBd" = (
/obj/structure/table/wood,
/obj/item/toy/cards/deck/cas{
pixel_x = -5;
pixel_y = 5
},
/obj/item/toy/cards/deck/cas/black{
pixel_x = 5;
pixel_y = 5
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/carpet,
/area/library)
@@ -66183,20 +66170,10 @@
/turf/open/floor/plasteel/dark,
/area/library)
"cEt" = (
/obj/structure/table/wood,
/obj/item/dice/d20{
pixel_x = 3;
pixel_y = 3
},
/obj/item/dice/d10{
pixel_x = -3
},
/obj/machinery/computer/security/telescreen/entertainment{
pixel_y = -32
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/vending/games,
/turf/open/floor/plasteel/vault{
dir = 5
},
@@ -68752,7 +68729,7 @@
},
/area/crew_quarters/fitness/recreation)
"cJA" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -68778,7 +68755,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"cJC" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -68793,7 +68770,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"cJD" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -70759,7 +70736,7 @@
"cNv" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Aft Primary Hallway"
},
/obj/structure/disposalpipe/segment,
@@ -70773,7 +70750,7 @@
/area/hallway/primary/central)
"cNw" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Aft Primary Hallway"
},
/obj/effect/turf_decal/stripes/line{
@@ -70787,7 +70764,7 @@
"cNx" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Aft Primary Hallway"
},
/obj/structure/disposalpipe/segment,
@@ -70994,7 +70971,7 @@
/turf/open/floor/plasteel/neutral/corner,
/area/crew_quarters/fitness/recreation)
"cOb" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Access"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -71019,7 +70996,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"cOd" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Access"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -71034,7 +71011,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"cOe" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Access"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -95629,7 +95606,7 @@
/area/hallway/primary/aft)
"dNP" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departures Lounge"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -95644,7 +95621,7 @@
/area/hallway/primary/aft)
"dNQ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departures Lounge"
},
/obj/effect/turf_decal/stripes/line{
@@ -95657,7 +95634,7 @@
/area/hallway/primary/aft)
"dNR" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departures Lounge"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -97995,7 +97972,7 @@
/area/hallway/secondary/exit/departure_lounge)
"dSQ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departures Lounge"
},
/obj/structure/disposalpipe/segment,
@@ -98009,7 +97986,7 @@
/area/hallway/secondary/exit/departure_lounge)
"dSR" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departures Lounge"
},
/obj/effect/turf_decal/stripes/line{
@@ -104821,6 +104798,12 @@
/obj/machinery/vending/kink,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"ehP" = (
/obj/machinery/computer/security/telescreen/entertainment{
pixel_y = -32
},
/turf/open/floor/plasteel/dark,
/area/library)
(1,1,1) = {"
aaa
@@ -135552,7 +135535,7 @@ cxW
czE
cBc
cCI
cwq
ehP
caG
cHA
ceb
+103 -77
View File
@@ -346,7 +346,7 @@
/turf/open/floor/plating,
/area/security/prison)
"abb" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permahydro";
name = "Hydroponics Module"
},
@@ -1318,7 +1318,7 @@
id = "permacell3";
name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt3";
name = "Cell 3"
},
@@ -1333,7 +1333,7 @@
id = "permacell2";
name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt2";
name = "Cell 2"
},
@@ -1348,7 +1348,7 @@
id = "permacell1";
name = "Cell Shutters"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt1";
name = "Cell 1"
},
@@ -3793,7 +3793,7 @@
dir = 9
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Door"
},
/turf/open/floor/plasteel,
@@ -3803,7 +3803,7 @@
dir = 5
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Door"
},
/turf/open/floor/plasteel,
@@ -5295,7 +5295,7 @@
dir = 10
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Door"
},
/turf/open/floor/plasteel,
@@ -5305,7 +5305,7 @@
dir = 6
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Door"
},
/turf/open/floor/plasteel,
@@ -8437,7 +8437,7 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"arY" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "space-bridge access"
},
/obj/machinery/button/door{
@@ -8479,7 +8479,7 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"asc" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "space-bridge access"
},
/obj/machinery/button/door{
@@ -15374,7 +15374,7 @@
icon_state = "1-2"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Vault Storage"
},
/turf/open/floor/plasteel/vault{
@@ -17316,7 +17316,7 @@
/area/storage/primary)
"aJP" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Primary Tool Storage"
},
/turf/open/floor/plasteel/brown{
@@ -17325,7 +17325,7 @@
/area/storage/primary)
"aJQ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Primary Tool Storage"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -19849,7 +19849,7 @@
/area/security/courtroom)
"aPC" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Courtroom";
req_access_txt = "42"
},
@@ -22238,7 +22238,7 @@
"aUC" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fore Primary Hallway"
},
/turf/open/floor/plasteel/red/corner{
@@ -22250,7 +22250,7 @@
icon_state = "1-2"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fore Primary Hallway"
},
/turf/open/floor/plasteel,
@@ -22258,7 +22258,7 @@
"aUE" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Fore Primary Hallway"
},
/turf/open/floor/plasteel/red/corner{
@@ -22813,7 +22813,7 @@
/area/storage/primary)
"aVS" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Primary Tool Storage"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -22826,7 +22826,7 @@
/area/storage/primary)
"aVT" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Primary Tool Storage"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -22987,7 +22987,7 @@
"aWm" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Crew Quarters Access"
},
/obj/structure/cable/yellow{
@@ -22997,7 +22997,7 @@
/area/crew_quarters/locker)
"aWn" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Crew Quarters Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -24712,7 +24712,7 @@
/area/security/checkpoint/engineering)
"aZO" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library"
},
/turf/open/floor/wood,
@@ -27689,7 +27689,7 @@
/area/storage/tools)
"bfI" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Auxiliary Tool Storage";
req_access_txt = "12"
},
@@ -28622,7 +28622,7 @@
dir = 4
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Starboard Primary Hallway"
},
/turf/open/floor/plasteel/yellow/corner{
@@ -29449,7 +29449,7 @@
icon_state = "4-8"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Starboard Primary Hallway"
},
/obj/structure/disposalpipe/segment{
@@ -30334,7 +30334,7 @@
dir = 4
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Starboard Primary Hallway"
},
/turf/open/floor/plasteel/caution/corner{
@@ -31240,7 +31240,7 @@
/area/storage/art)
"bmN" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Art Storage"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -31965,7 +31965,7 @@
dir = 4
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Port Primary Hallway"
},
/turf/open/floor/plasteel/neutral/corner{
@@ -33072,7 +33072,7 @@
icon_state = "4-8"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Port Primary Hallway"
},
/turf/open/floor/plasteel,
@@ -34307,7 +34307,7 @@
dir = 4
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Port Primary Hallway"
},
/turf/open/floor/plasteel/neutral/corner{
@@ -34992,7 +34992,7 @@
"bug" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library"
},
/turf/open/floor/wood,
@@ -35000,7 +35000,7 @@
"buh" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library"
},
/turf/open/floor/wood,
@@ -39144,7 +39144,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Command Hallway"
},
/turf/open/floor/plasteel/neutral/corner{
@@ -39418,7 +39418,7 @@
dir = 4
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Command Hallway"
},
/obj/structure/disposalpipe/segment{
@@ -39465,7 +39465,7 @@
/area/hallway/primary/central)
"bDC" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Bar"
},
/turf/open/floor/plasteel,
@@ -39865,7 +39865,7 @@
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Command Hallway"
},
/turf/open/floor/plasteel/neutral/corner{
@@ -40245,7 +40245,7 @@
icon_state = "4-8"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Command Hallway"
},
/turf/open/floor/plasteel/neutral/corner{
@@ -40298,7 +40298,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Bar"
},
/turf/open/floor/plasteel,
@@ -43906,8 +43906,9 @@
/obj/structure/sign/kiddieplaque/perfect_drone{
pixel_y = 32
},
/obj/machinery/droneDispenser,
/obj/machinery/door/window/southleft,
/obj/structure/table/wood,
/obj/item/storage/backpack/duffelbag/drone,
/obj/structure/window/reinforced,
/turf/open/floor/carpet,
/area/bridge/showroom/corporate)
"bNc" = (
@@ -45185,10 +45186,8 @@
/turf/open/floor/wood,
/area/library)
"bPU" = (
/obj/structure/table/wood,
/obj/item/dice/d20,
/obj/item/dice,
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/machinery/vending/games,
/turf/open/floor/wood,
/area/library)
"bPV" = (
@@ -45419,7 +45418,7 @@
icon_state = "4-8"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Gateway Chamber"
},
/obj/structure/cable/yellow{
@@ -46916,25 +46915,12 @@
dir = 1;
network = list("SS13")
},
/obj/item/storage/pill_bottle/dice,
/obj/structure/table/wood,
/turf/open/floor/wood,
/area/library)
"bTz" = (
/obj/structure/table/wood,
/obj/machinery/light,
/obj/item/toy/cards/deck/cas/black{
pixel_x = -2;
pixel_y = 6
},
/obj/item/toy/cards/deck{
pixel_x = 2;
pixel_y = 7
},
/obj/item/toy/cards/deck/cas{
pixel_x = -1;
pixel_y = 2
},
/turf/open/floor/wood,
/area/library)
"bTA" = (
@@ -49143,7 +49129,7 @@
icon_state = "1-2"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Hydroponics Storage"
},
/turf/open/floor/plasteel/hydrofloor,
@@ -49679,7 +49665,7 @@
"bZf" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Aft Primary Hallway"
},
/turf/open/floor/plasteel/blue/corner{
@@ -49691,7 +49677,7 @@
icon_state = "1-2"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Aft Primary Hallway"
},
/turf/open/floor/plasteel,
@@ -49699,7 +49685,7 @@
"bZh" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Aft Primary Hallway"
},
/turf/open/floor/plasteel/purple/corner{
@@ -54525,7 +54511,7 @@
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"cja" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -55929,7 +55915,7 @@
/turf/open/space,
/area/space/nearstation)
"cmd" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -67879,7 +67865,7 @@
"cJE" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/turf/open/floor/plasteel/neutral/corner{
@@ -67891,7 +67877,7 @@
icon_state = "1-2"
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/turf/open/floor/plasteel,
@@ -67899,7 +67885,7 @@
"cJG" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/turf/open/floor/plasteel/neutral/corner{
@@ -69220,8 +69206,12 @@
/turf/open/floor/plating,
/area/maintenance/aft)
"cMl" = (
/obj/machinery/space_heater,
/obj/effect/landmark/blobstart,
/obj/structure/table,
/obj/item/stack/sheet/glass/fifty{
pixel_x = 3;
pixel_y = -4
},
/obj/item/stack/sheet/metal/fifty,
/turf/open/floor/plating,
/area/maintenance/aft)
"cMm" = (
@@ -69930,7 +69920,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Chapel"
},
/turf/open/floor/plasteel/dark,
@@ -70211,7 +70201,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Chapel"
},
/turf/open/floor/plasteel/dark,
@@ -70634,7 +70624,7 @@
/area/chapel/office)
"cPl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Chapel Office";
req_access_txt = "22"
},
@@ -71041,7 +71031,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Funeral Parlour"
},
/turf/open/floor/plasteel/dark,
@@ -80767,6 +80757,42 @@
"EDC" = (
/turf/closed/wall/mineral/plastitanium,
/area/engine/break_room)
"EDD" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/structure/chair{
dir = 4
},
/obj/effect/landmark/start/security_officer,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/red/side{
dir = 8
},
/area/security/main)
"EDE" = (
/obj/structure/closet/firecloset,
/turf/open/floor/plating,
/area/engine/engineering)
"EDF" = (
/obj/machinery/light/small{
dir = 8
},
/turf/open/floor/plating,
/area/maintenance/aft)
"EDG" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/effect/landmark/blobstart,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"EDH" = (
/obj/machinery/droneDispenser,
/turf/open/floor/plating,
/area/maintenance/aft)
(1,1,1) = {"
aaa
@@ -110246,6 +110272,7 @@ cIN
cJM
cCq
cgM
EDF
cwc
cNe
cNT
@@ -110254,7 +110281,6 @@ ack
ack
aaf
aaf
aaf
aaa
aaf
aaa
@@ -110503,11 +110529,11 @@ cFh
cFh
cKH
cLz
EDG
cMk
bTs
bTs
bTs
aaf
aaa
aaa
aaa
@@ -110761,11 +110787,11 @@ cJN
cCq
cgN
cMl
EDH
bTs
aaf
aaf
aaf
aaf
aaa
aaa
aaa
@@ -111019,7 +111045,7 @@ cCq
cLA
bTs
bTs
aaa
bTs
aaf
aaa
aaa
@@ -111276,7 +111302,7 @@ cKI
cQr
cQR
cRa
cRe
cSd
cRe
cRe
cRe
+55 -9
View File
@@ -196,6 +196,7 @@
/area/mine/laborcamp)
"aI" = (
/obj/machinery/door/airlock{
cyclelinkeddir = 4;
name = "Labor Camp External Access"
},
/turf/open/floor/plasteel,
@@ -286,6 +287,7 @@
/area/lavaland/surface/outdoors/explored)
"aY" = (
/obj/machinery/door/airlock/glass_security{
cyclelinkeddir = 4;
name = "Labor Camp Shuttle Security Airlock";
req_access_txt = "2"
},
@@ -449,6 +451,7 @@
/area/mine/eva)
"bx" = (
/obj/machinery/door/airlock/glass_security{
cyclelinkeddir = 4;
name = "Labor Camp Shuttle Prisoner Airlock";
req_access_txt = "0"
},
@@ -659,6 +662,7 @@
/area/mine/eva)
"bX" = (
/obj/machinery/door/airlock/external{
cyclelinkeddir = 4;
glass = 1;
name = "Mining External Airlock";
opacity = 0;
@@ -744,6 +748,7 @@
/area/mine/laborcamp)
"cj" = (
/obj/machinery/door/airlock/external{
cyclelinkeddir = 4;
glass = 1;
name = "Mining Shuttle Airlock";
opacity = 0;
@@ -1757,10 +1762,8 @@
/area/mine/living_quarters)
"eR" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock{
glass = 1;
name = "Break Room";
opacity = 0
/obj/machinery/door/airlock/glass{
name = "Break Room"
},
/turf/open/floor/plasteel,
/area/mine/living_quarters)
@@ -3317,6 +3320,49 @@
/obj/effect/mapping_helpers/planet_z,
/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
"WA" = (
/obj/machinery/door/airlock{
cyclelinkeddir = 8;
name = "Labor Camp External Access"
},
/turf/open/floor/plasteel,
/area/mine/laborcamp)
"WB" = (
/obj/machinery/door/airlock/glass_security{
cyclelinkeddir = 8;
name = "Labor Camp Shuttle Security Airlock";
req_access_txt = "2"
},
/turf/open/floor/plasteel,
/area/mine/laborcamp)
"WC" = (
/obj/machinery/door/airlock/glass_security{
cyclelinkeddir = 8;
name = "Labor Camp Shuttle Prisoner Airlock";
req_access_txt = "0"
},
/turf/open/floor/plasteel,
/area/mine/laborcamp)
"WD" = (
/obj/machinery/door/airlock/external{
cyclelinkeddir = 8;
glass = 1;
name = "Mining External Airlock";
opacity = 0;
req_access_txt = "54"
},
/turf/open/floor/plasteel,
/area/mine/eva)
"WE" = (
/obj/machinery/door/airlock/external{
cyclelinkeddir = 8;
glass = 1;
name = "Mining Shuttle Airlock";
opacity = 0;
req_access_txt = "0"
},
/turf/open/floor/plasteel,
/area/mine/production)
(1,1,1) = {"
aa
@@ -8415,11 +8461,11 @@ aH
az
aQ
aq
aY
WB
aq
bi
aq
bx
WC
aq
bZ
bZ
@@ -11238,7 +11284,7 @@ an
an
aD
aq
aI
WA
aq
aT
aD
@@ -17930,7 +17976,7 @@ aj
aj
br
br
cj
WE
br
br
ab
@@ -21270,7 +21316,7 @@ aj
ab
bf
bg
bX
WD
bg
bf
ai
+24 -39
View File
@@ -7686,7 +7686,7 @@
"anR" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/structure/cable/white{
@@ -7702,7 +7702,7 @@
/area/hallway/primary/central)
"anS" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/effect/turf_decal/stripes/line{
@@ -7716,7 +7716,7 @@
"anT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/effect/turf_decal/stripes/line{
@@ -9511,7 +9511,7 @@
"arc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/structure/cable/white{
@@ -9527,7 +9527,7 @@
/area/crew_quarters/bar/atrium)
"ard" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/effect/turf_decal/stripes/line{
@@ -9541,7 +9541,7 @@
"are" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/effect/turf_decal/stripes/line{
@@ -14521,7 +14521,7 @@
/area/hallway/primary/central)
"aAD" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Lockerroom"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -15119,7 +15119,7 @@
/area/hallway/primary/central)
"aBM" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Lockerroom"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -16621,7 +16621,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Engineering Foyer"
},
/obj/effect/turf_decal/stripes/line{
@@ -16936,7 +16936,7 @@
/area/hallway/primary/central)
"aFj" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -17198,7 +17198,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Engineering Foyer"
},
/obj/structure/cable/white{
@@ -17355,7 +17355,7 @@
/area/hallway/primary/central)
"aFZ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/obj/effect/turf_decal/stripes/line{
@@ -21294,7 +21294,7 @@
/area/hydroponics)
"aNy" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -21311,7 +21311,7 @@
/area/crew_quarters/bar/atrium)
"aNz" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Atrium"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -23156,7 +23156,7 @@
/area/library)
"aQY" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library Access"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -23170,7 +23170,7 @@
/area/library)
"aQZ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Library Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -23569,6 +23569,7 @@
/obj/structure/sign/nosmoking_2{
pixel_y = 32
},
/obj/machinery/vending/games,
/turf/open/floor/plasteel/dark,
/area/library)
"aRW" = (
@@ -23593,13 +23594,6 @@
/area/library)
"aRY" = (
/obj/structure/table/wood,
/obj/item/dice/d20{
pixel_x = 3;
pixel_y = 3
},
/obj/item/dice/d10{
pixel_x = -3
},
/obj/machinery/firealarm{
pixel_y = 24
},
@@ -24089,21 +24083,12 @@
/area/library)
"aTf" = (
/obj/structure/table/wood,
/obj/item/storage/pill_bottle/dice,
/turf/open/floor/plasteel/vault{
dir = 5
},
/area/library)
"aTg" = (
/obj/structure/table/wood,
/obj/item/toy/cards/deck/cas{
pixel_x = -5;
pixel_y = 5
},
/obj/item/toy/cards/deck/cas/black{
pixel_x = 5;
pixel_y = 5
},
/turf/open/floor/plasteel/dark,
/area/library)
"aTh" = (
@@ -31040,7 +31025,7 @@
/area/hallway/secondary/entry)
"bgR" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Arrivals Port"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -31054,7 +31039,7 @@
/area/hallway/secondary/entry)
"bgS" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Arrivals Port"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -31083,7 +31068,7 @@
/area/hallway/secondary/entry)
"bgW" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Arrivals Port"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -33473,7 +33458,7 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"blL" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/obj/effect/turf_decal/stripes/line{
@@ -33524,7 +33509,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"blY" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/obj/effect/turf_decal/stripes/line{
@@ -33629,7 +33614,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bsB" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/obj/effect/turf_decal/stripes/line{
@@ -33702,7 +33687,7 @@
/area/hallway/secondary/exit)
"bsN" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+66 -67
View File
@@ -1801,7 +1801,7 @@
id = "permacell2";
name = "cell blast door"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt2";
name = "Cell 2"
},
@@ -1820,7 +1820,7 @@
id = "permacell1";
name = "cell blast door"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
id_tag = "permabolt1";
name = "Cell 1"
},
@@ -3459,7 +3459,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "space-bridge access"
},
/obj/effect/turf_decal/stripes/line{
@@ -3499,7 +3499,7 @@
/turf/open/floor/plating,
/area/maintenance/department/crew_quarters/dorms)
"akp" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "space-bridge access"
},
/obj/structure/cable{
@@ -9138,7 +9138,7 @@
/area/crew_quarters/fitness/recreation)
"axy" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Holodeck Door"
},
/turf/open/floor/plasteel,
@@ -9481,7 +9481,7 @@
/area/crew_quarters/dorms)
"ayt" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Recreation Room"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -9981,7 +9981,7 @@
/area/crew_quarters/dorms)
"azB" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Recreation Room"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -12753,7 +12753,7 @@
/area/security/detectives_office)
"aGb" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -12761,14 +12761,14 @@
/area/hallway/primary/fore)
"aGc" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aGd" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -13092,7 +13092,7 @@
/area/storage/primary)
"aGY" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Primary Tool Storage"
},
/obj/structure/cable{
@@ -13103,7 +13103,7 @@
/area/storage/primary)
"aGZ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Primary Tool Storage"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -13645,7 +13645,7 @@
/area/hallway/primary/central)
"aIg" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dormitory"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -14052,7 +14052,7 @@
/area/hallway/primary/central)
"aJf" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dormitory"
},
/obj/structure/cable{
@@ -14526,7 +14526,7 @@
/area/hallway/primary/central)
"aKb" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Dormitory"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -14644,7 +14644,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aKv" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cockpit";
req_access_txt = "19"
},
@@ -14738,7 +14738,7 @@
/turf/open/floor/plating,
/area/storage/art)
"aKL" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Art Storage"
},
/obj/structure/cable{
@@ -14757,7 +14757,7 @@
/area/crew_quarters/cafeteria/lunchroom)
"aKO" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Lunchroom"
},
/obj/structure/cable{
@@ -14903,7 +14903,7 @@
/turf/open/floor/plating,
/area/maintenance/disposal)
"aLp" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cargo Hold";
req_access_txt = "0"
},
@@ -14916,7 +14916,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aLr" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
@@ -16671,7 +16671,7 @@
/area/hallway/secondary/exit/departure_lounge)
"aPv" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/turf/open/floor/plasteel,
@@ -17060,7 +17060,7 @@
/area/hallway/secondary/exit/departure_lounge)
"aQz" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/obj/structure/disposalpipe/segment{
@@ -17889,7 +17889,7 @@
/turf/open/floor/plating,
/area/maintenance/disposal)
"aSp" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Infirmary"
},
/turf/open/floor/mineral/titanium/blue,
@@ -18921,7 +18921,7 @@
/area/hallway/secondary/exit/departure_lounge)
"aUJ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/obj/structure/cable{
@@ -19484,7 +19484,7 @@
/area/hallway/secondary/exit/departure_lounge)
"aVQ" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Departure Lounge"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -19526,7 +19526,7 @@
/area/janitor)
"aVV" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Hydroponics";
req_access_txt = "35"
},
@@ -22165,7 +22165,7 @@
/area/crew_quarters/bar)
"bcw" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Bar"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -22447,7 +22447,7 @@
/area/hallway/secondary/entry)
"bdf" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/turf/open/floor/plasteel,
@@ -22547,7 +22547,7 @@
/area/crew_quarters/bar)
"bdy" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Bar"
},
/obj/machinery/door/poddoor/shutters/preopen{
@@ -22849,7 +22849,7 @@
/area/hydroponics)
"bek" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
cyclelinkeddir = 4;
name = "Hydroponics";
req_access_txt = "35"
@@ -22896,7 +22896,7 @@
/area/hallway/primary/central)
"beo" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
cyclelinkeddir = 8;
name = "Kitchen";
req_access_txt = "28"
@@ -23213,7 +23213,7 @@
/area/hallway/secondary/entry)
"bfe" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Central Access"
},
/obj/structure/cable{
@@ -23614,7 +23614,7 @@
/area/crew_quarters/lounge)
"bgb" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Lounge"
},
/obj/structure/cable{
@@ -23768,7 +23768,7 @@
/area/hallway/primary/central)
"bgt" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Bar"
},
/turf/open/floor/plasteel,
@@ -23776,7 +23776,7 @@
"bgu" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Bar"
},
/turf/open/floor/plasteel,
@@ -24901,14 +24901,14 @@
"biV" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Medbay"
},
/turf/open/floor/plasteel/white/side,
/area/medical/medbay/zone3)
"biW" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Medbay"
},
/turf/open/floor/plasteel/white/side,
@@ -24916,7 +24916,7 @@
"biX" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Medbay"
},
/turf/open/floor/plasteel/white/side,
@@ -25318,18 +25318,18 @@
"bkj" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bkk" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bkl" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bkm" = (
@@ -27686,7 +27686,7 @@
"bqd" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Research Division"
},
/obj/effect/turf_decal/delivery,
@@ -27697,7 +27697,7 @@
"bqe" = (
/obj/machinery/door/firedoor,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Research Division"
},
/obj/effect/turf_decal/delivery,
@@ -27705,7 +27705,7 @@
/area/science/research/lobby)
"bqf" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Research Division"
},
/obj/effect/turf_decal/delivery,
@@ -28964,7 +28964,7 @@
"bsH" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Medbay"
},
/turf/open/floor/plasteel/whiteblue/corner{
@@ -28975,7 +28975,7 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Medbay"
},
/turf/open/floor/plasteel/whiteblue/corner,
@@ -30671,7 +30671,7 @@
/area/shuttle/transport)
"bwq" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Monastery Transit"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -30679,7 +30679,7 @@
/area/hallway/secondary/entry)
"bwr" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Monastery Transit"
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
@@ -35692,7 +35692,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Research Division"
},
/obj/effect/turf_decal/delivery,
@@ -36262,7 +36262,7 @@
dir = 4
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Research Division"
},
/obj/structure/cable{
@@ -36395,7 +36395,7 @@
/turf/closed/wall/r_wall,
/area/science/mixing)
"bIL" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -36727,7 +36727,7 @@
dir = 4
},
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Research Division"
},
/obj/effect/turf_decal/delivery,
@@ -37389,7 +37389,7 @@
/turf/open/floor/engine/vacuum,
/area/engine/atmos)
"bLf" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -43898,7 +43898,7 @@
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -43921,7 +43921,7 @@
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
autoclose = 0;
frequency = 1449;
heat_proof = 1;
@@ -46325,7 +46325,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"cin" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Shuttle Airlock"
},
/turf/open/floor/plasteel/dark,
@@ -46711,7 +46711,7 @@
/turf/open/floor/plating/abductor,
/area/shuttle/abandoned)
"cjB" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Shuttle Airlock"
},
/obj/docking_port/mobile{
@@ -50614,11 +50614,6 @@
/area/library)
"czr" = (
/obj/structure/table/wood/fancy,
/obj/item/toy/cards/deck/cas/black{
pixel_x = -2;
pixel_y = 6
},
/obj/item/toy/cards/deck/cas,
/turf/open/floor/carpet,
/area/library)
"czs" = (
@@ -51326,6 +51321,10 @@
},
/turf/open/floor/plating/airless,
/area/maintenance/department/chapel/monastery)
"cCW" = (
/obj/machinery/vending/games,
/turf/open/floor/plasteel/dark,
/area/library)
(1,1,1) = {"
aaa
@@ -67341,7 +67340,7 @@ aaa
aiu
aiu
aiu
apA
aoK
aqf
ajD
aiu
@@ -67977,13 +67976,13 @@ aaa
aaa
aaa
cjp
ckW
cCW
ckH
cyZ
ckH
czl
czr
czA
czr
czI
ckH
ckH
@@ -68239,7 +68238,7 @@ ckH
ckH
ckH
czl
czs
czr
czB
czI
czV
@@ -91543,7 +91542,7 @@ bdI
bbI
bhr
bbI
biA
aTx
bjw
bkB
blS
+3 -3
View File
@@ -836,7 +836,7 @@
/turf/open/floor/plasteel,
/area/bridge)
"cx" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"cy" = (
@@ -961,7 +961,7 @@
/turf/closed/wall/r_wall,
/area/construction)
"cQ" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel,
/area/construction)
"cR" = (
@@ -982,7 +982,7 @@
/turf/closed/wall/r_wall,
/area/storage/primary)
"cV" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel,
/area/storage/primary)
"cW" = (
+1
View File
@@ -8108,6 +8108,7 @@
name = "syndicate infiltrator";
port_direction = 1;
roundstart_move = "syndicate_away";
hidden = 1;
width = 18
},
/obj/structure/fans/tiny,
+7 -3
View File
@@ -300,6 +300,10 @@
/obj/item/clockwork/component/vanguard_cogwheel/onyx_prism,
/turf/open/indestructible/reebe_void,
/area/reebe)
"bj" = (
/obj/structure/destructible/clockwork/eminence_spire,
/turf/open/floor/clockwork/reebe,
/area/reebe/city_of_cogs)
(1,1,1) = {"
aa
@@ -31739,7 +31743,7 @@ aj
aj
ai
aj
aj
az
aj
ai
aj
@@ -31996,7 +32000,7 @@ aj
aj
ap
aj
az
aj
aj
ap
aj
@@ -32253,7 +32257,7 @@ aj
aj
ai
aj
aj
bj
aj
ai
aj
+2 -2
View File
@@ -131,7 +131,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"az" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cockpit";
req_access_txt = "19"
},
@@ -201,7 +201,7 @@
/turf/open/floor/mineral/plastitanium/brig,
/area/shuttle/escape)
"aJ" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
+1 -1
View File
@@ -141,7 +141,7 @@
/turf/open/floor/mineral/plastitanium/brig,
/area/shuttle/escape)
"aA" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"aB" = (
+3 -3
View File
@@ -122,7 +122,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ay" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cockpit";
req_access_txt = "19"
},
@@ -185,7 +185,7 @@
/turf/open/floor/mineral/plastitanium/brig,
/area/shuttle/escape)
"aH" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
@@ -297,7 +297,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aZ" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Infirmary"
},
/turf/open/floor/mineral/titanium/blue,
+2 -2
View File
@@ -244,7 +244,7 @@
/turf/open/floor/plasteel/darkred,
/area/shuttle/escape)
"aR" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cockpit";
req_access_txt = "19"
},
@@ -423,7 +423,7 @@
/turf/open/floor/mineral/plastitanium/brig,
/area/shuttle/escape)
"bq" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
+3 -3
View File
@@ -99,7 +99,7 @@
/turf/open/floor/noslip,
/area/shuttle/escape)
"as" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Premium Lounge";
req_access_txt = "0"
},
@@ -143,7 +143,7 @@
/turf/open/floor/mineral/plastitanium/brig,
/area/shuttle/escape)
"aA" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Greentext";
req_access_txt = "0"
},
@@ -275,7 +275,7 @@
/turf/open/floor/bluespace,
/area/shuttle/escape)
"aU" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Infirmary"
},
/turf/open/floor/bluespace,
+3 -3
View File
@@ -104,7 +104,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"w" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Infirmary"
},
/turf/open/floor/mineral/titanium,
@@ -157,7 +157,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"E" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cockpit";
req_access_txt = "19"
},
@@ -193,7 +193,7 @@
/turf/open/floor/mineral/plastitanium/brig,
/area/shuttle/escape)
"K" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
+4 -4
View File
@@ -149,7 +149,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aB" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cockpit";
req_access_txt = "19"
},
@@ -169,7 +169,7 @@
/turf/open/floor/plating,
/area/shuttle/escape)
"aE" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cargo Hold";
req_access_txt = "0"
},
@@ -182,7 +182,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aG" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
@@ -262,7 +262,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aU" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Infirmary"
},
/turf/open/floor/mineral/titanium/blue,
+2 -2
View File
@@ -893,7 +893,7 @@
},
/area/shuttle/escape)
"cf" = (
/obj/machinery/door/airlock/glass_titanium{
/obj/machinery/door/airlock/titanium/glass{
name = "Shuttle Engine Room"
},
/turf/open/floor/plasteel/darkgreen/side{
@@ -901,7 +901,7 @@
},
/area/shuttle/escape)
"cg" = (
/obj/machinery/door/airlock/glass_titanium{
/obj/machinery/door/airlock/titanium/glass{
name = "Shuttle Engine Room"
},
/turf/open/floor/plasteel/darkgreen/side{
+1 -1
View File
@@ -117,7 +117,7 @@
/turf/closed/wall/rust,
/area/shuttle/escape)
"at" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Glorious Leaders";
req_access_txt = "19"
},
+2 -2
View File
@@ -95,7 +95,7 @@
/turf/open/floor/mineral/plastitanium/brig,
/area/shuttle/escape)
"ar" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Cockpit";
req_access_txt = "19"
},
@@ -148,7 +148,7 @@
/area/shuttle/escape)
"az" = (
/obj/structure/grille,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
+2 -2
View File
@@ -139,7 +139,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"aB" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
@@ -255,7 +255,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"aU" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aV" = (
+3 -3
View File
@@ -110,7 +110,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"aw" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plating,
/area/shuttle/abandoned)
"ax" = (
@@ -220,7 +220,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"aR" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"aS" = (
@@ -288,7 +288,7 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"be" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/mineral/titanium,
/area/shuttle/abandoned)
"bf" = (
+4 -8
View File
@@ -584,10 +584,8 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
/obj/machinery/door/airlock{
glass = 1;
name = "Dormitory";
opacity = 0
/obj/machinery/door/airlock/glass{
name = "Dormitory"
},
/turf/open/floor/plasteel/neutral,
/area/shuttle/abandoned)
@@ -722,10 +720,8 @@
desc = "A thin layer of dust coating the floor.";
name = "dust"
},
/obj/machinery/door/airlock{
glass = 1;
name = "Crew Quarters";
opacity = 0
/obj/machinery/door/airlock/glass{
name = "Crew Quarters"
},
/turf/open/floor/plasteel/neutral/side{
dir = 1
+2 -2
View File
@@ -12,7 +12,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/abandoned)
"d" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Shuttle Airlock"
},
/turf/open/floor/plasteel/dark,
@@ -81,7 +81,7 @@
/turf/open/floor/plating/abductor,
/area/shuttle/abandoned)
"o" = (
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Shuttle Airlock"
},
/obj/docking_port/mobile{
+3 -3
View File
@@ -49,7 +49,7 @@
name = "Shuttle"
})
"h" = (
/obj/machinery/door/airlock/glass_external,
/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plating,
/area/ruin/powered{
name = "Shuttle"
@@ -65,7 +65,7 @@
name = "Shuttle"
})
"k" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel/dark,
/area/ruin/powered{
name = "Shuttle"
@@ -89,7 +89,7 @@
name = "Shuttle"
})
"o" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel,
/area/ruin/powered{
name = "Shuttle"
+2 -2
View File
@@ -75,7 +75,7 @@
name = "Shuttle"
})
"l" = (
/obj/machinery/door/airlock/glass_external,
/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plating,
/area/ruin/powered{
name = "Shuttle"
@@ -86,7 +86,7 @@
name = "Shuttle"
})
"n" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel/dark,
/area/ruin/powered{
name = "Shuttle"
+2 -2
View File
@@ -62,7 +62,7 @@
name = "Shuttle"
})
"j" = (
/obj/machinery/door/airlock/glass_external,
/obj/machinery/door/airlock/external/glass,
/turf/open/floor/plating,
/area/ruin/powered{
name = "Shuttle"
@@ -100,7 +100,7 @@
name = "Shuttle"
})
"p" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/plasteel,
/area/ruin/powered{
name = "Shuttle"
+1 -1
View File
@@ -11,7 +11,7 @@
/turf/closed/indestructible/oldshuttle,
/area/ruin/powered)
"d" = (
/obj/machinery/door/airlock/glass,
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/oldshuttle,
/area/ruin/powered)
"e" = (
+2 -2
View File
@@ -929,7 +929,7 @@
/area/shuttle/pirate)
"cg" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
name = "Bar"
},
/turf/open/floor/plasteel,
@@ -1740,7 +1740,7 @@
icon_state = "1-2";
pixel_y = 0
},
/obj/machinery/door/airlock/glass{
/obj/machinery/door/airlock/public/glass{
heat_proof = 1;
id_tag = "pirateturbinebolt";
locked = 1;
+1 -1
View File
@@ -61,7 +61,7 @@
/area/survivalpod)
"n" = (
/obj/structure/fans/tiny,
/obj/machinery/door/airlock/survival_pod,
/obj/machinery/door/airlock/survival_pod/glass,
/turf/open/floor/pod,
/area/survivalpod)
"o" = (
+1 -1
View File
@@ -203,7 +203,7 @@
/area/survivalpod)
"D" = (
/obj/structure/fans/tiny,
/obj/machinery/door/airlock/survival_pod,
/obj/machinery/door/airlock/survival_pod/glass,
/turf/open/floor/pod,
/area/survivalpod)
"E" = (
+2 -2
View File
@@ -24,7 +24,7 @@
#define MUT_MUTE "Mute"
#define SMILE "Smile"
#define STONER "Stoner"
#define UNINTELLIGABLE "Unintelligable"
#define UNINTELLIGIBLE "Unintelligible"
#define SWEDISH "Swedish"
#define CHAV "Chav"
#define ELVIS "Elvis"
@@ -82,7 +82,7 @@
#define DNA_MUTANTTAIL_BLOCK 17
#define DNA_MUTANTWING_BLOCK 18
#define DNA_WINGCOLOR_BLOCK 19
#define DNA_STRUC_ENZYMES_BLOCKS 19
#define DNA_STRUC_ENZYMES_BLOCKS 18
#define DNA_UNIQUE_ENZYMES_LEN 32
//Transformation proc stuff
+65 -53
View File
@@ -1,14 +1,5 @@
#define FIRE_DAMAGE_MODIFIER 0.0215 //Higher values result in more external fire damage to the skin (default 0.0215)
#define AIR_DAMAGE_MODIFIER 2.025 //More means less damage from hot air scalding lungs, less = more damage. (default 2.025)
#define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC
#define M_CELL_WITH_RATIO (MOLES_CELLSTANDARD * 0.005)
#define O2STANDARD 0.21
#define N2STANDARD 0.79
#define MOLES_O2STANDARD (MOLES_CELLSTANDARD*O2STANDARD) // O2 standard value (21%)
#define MOLES_N2STANDARD (MOLES_CELLSTANDARD*N2STANDARD) // N2 standard value (79%)
//indices of values in gas lists. used by listmos.
//LISTMOS
//indices of values in gas lists.
#define MOLES 1
#define ARCHIVE 2
#define GAS_META 3
@@ -19,32 +10,35 @@
#define META_GAS_DANGER 5
#define META_GAS_ID 6
//stuff you should probably leave well alone!
//ATMOS
#define CELL_VOLUME 2500 //liters in a cell
#define BREATH_VOLUME 0.5 //liters in a normal breath
#define BREATH_PERCENTAGE (BREATH_VOLUME/CELL_VOLUME) //Amount of air to take a from a tile
#define HUMAN_NEEDED_OXYGEN (MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16) //Amount of air needed before pass out/suffocation commences
#define NORMPIPERATE 30 //pipe-insulation rate divisor
#define HEATPIPERATE 8 //heat-exch pipe insulation
#define FLOWFRAC 0.99 //fraction of gas transfered per process
#define TANK_MELT_TEMPERATURE 1000000
#define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) //Tank starts leaking
#define TANK_RUPTURE_PRESSURE (35.*ONE_ATMOSPHERE) //Tank spills all contents into atmosphere
#define TANK_FRAGMENT_PRESSURE (40.*ONE_ATMOSPHERE) //Boom 3x3 base explosion
#define TANK_FRAGMENT_SCALE (6.*ONE_ATMOSPHERE) //+1 for each SCALE kPa aboe threshold
#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.1 //Ratio of air that must move to/from a tile to reset group processing
#define MINIMUM_AIR_RATIO_TO_MOVE 0.001 //Minimum ratio of air that must move to/from a tile
#define MINIMUM_AIR_TO_SUSPEND (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Minimum amount of air that has to move before a group processing can be suspended
#define MINIMUM_MOLES_DELTA_TO_MOVE (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_MOVE) //Either this must be active
#define EXCITED_GROUP_BREAKDOWN_CYCLES 4
#define EXCITED_GROUP_DISMANTLE_CYCLES 16
#define MINIMUM_TEMPERATURE_TO_MOVE (T20C+100) //or this (or both, obviously)
#define MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND 0.012
//stuff you should probably leave well alone!
#define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC
#define M_CELL_WITH_RATIO (MOLES_CELLSTANDARD * 0.005) //compared against for superconductivity
#define O2STANDARD 0.21 //percentage of oxygen in a normal mixture of air
#define N2STANDARD 0.79 //same but for nitrogen
#define MOLES_O2STANDARD (MOLES_CELLSTANDARD*O2STANDARD) // O2 standard value (21%)
#define MOLES_N2STANDARD (MOLES_CELLSTANDARD*N2STANDARD) // N2 standard value (79%)
#define CELL_VOLUME 2500 //liters in a cell
#define BREATH_VOLUME 0.5 //liters in a normal breath
#define BREATH_PERCENTAGE (BREATH_VOLUME/CELL_VOLUME) //Amount of air to take a from a tile
#define HUMAN_NEEDED_OXYGEN (MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16) //Amount of air needed before pass out/suffocation commences
//EXCITED GROUPS
#define EXCITED_GROUP_BREAKDOWN_CYCLES 4 //number of FULL air controller ticks before an excited group breaks down (averages gas contents across turfs)
#define EXCITED_GROUP_DISMANTLE_CYCLES 16 //number of FULL air controller ticks before an excited group dismantles and removes its turfs from active
#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.1 //Ratio of air that must move to/from a tile to reset group processing
#define MINIMUM_AIR_RATIO_TO_MOVE 0.001 //Minimum ratio of air that must move to/from a tile
#define MINIMUM_AIR_TO_SUSPEND (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Minimum amount of air that has to move before a group processing can be suspended
#define MINIMUM_MOLES_DELTA_TO_MOVE (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_MOVE) //Either this must be active
#define MINIMUM_TEMPERATURE_TO_MOVE (T20C+100) //or this (or both, obviously)
#define MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND 4 //Minimum temperature difference before group processing is suspended
#define MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER 0.5 //Minimum temperature difference before the gas temperatures are just set to be equal
#define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION T20C+10
#define MINIMUM_TEMPERATURE_START_SUPERCONDUCTION T20C+200
//HEAT TRANSFER COEFFICIENTS
//Must be between 0 and 1. Values closer to 1 equalize temperature faster
//Should not exceed 0.4 else strange heat flow occur
#define FLOOR_HEAT_TRANSFER_COEFFICIENT 0.4
#define WALL_HEAT_TRANSFER_COEFFICIENT 0.0
#define DOOR_HEAT_TRANSFER_COEFFICIENT 0.0
@@ -52,20 +46,31 @@
#define OPEN_HEAT_TRANSFER_COEFFICIENT 0.4
#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.1 //a hack for now
#define HEAT_CAPACITY_VACUUM 7000 //a hack to help make vacuums "cold", sacrificing realism for gameplay
//Must be between 0 and 1. Values closer to 1 equalize temperature faster
//Should not exceed 0.4 else strange heat flow occur
//FIRE
#define FIRE_MINIMUM_TEMPERATURE_TO_SPREAD 150+T0C
#define FIRE_MINIMUM_TEMPERATURE_TO_EXIST 100+T0C
#define FIRE_SPREAD_RADIOSITY_SCALE 0.85
#define FIRE_GROWTH_RATE 40000 //For small fires
#define CARBON_LIFEFORM_FIRE_RESISTANCE 200+T0C //Resistance to fire damage
#define CARBON_LIFEFORM_FIRE_DAMAGE 4 //Fire damage
#define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C
//GASES
#define MIN_TOXIC_GAS_DAMAGE 1
#define MAX_TOXIC_GAS_DAMAGE 10
#define MOLES_GAS_VISIBLE 0.5 //Moles in a standard cell after which gases are visible
#define STOP_REACTIONS 2
#define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C
#define GAS_STIM_MINIMUM 0.002
//REACTIONS
//return values for reactions (bitflags)
#define NO_REACTION 0
#define REACTING 1
#define STOP_REACTIONS 2
//HUMANS
//Hurty numbers
#define FIRE_DAMAGE_MODIFIER 0.0215 //Higher values result in more external fire damage to the skin
#define AIR_DAMAGE_MODIFIER 2.025 //More means less damage from hot air scalding lungs, less = more damage
// Pressure limits.
#define HAZARD_HIGH_PRESSURE 550 //This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant)
@@ -107,65 +112,71 @@
#define SHOES_MIN_TEMP_PROTECT 2.0 //For gloves
#define SHOES_MAX_TEMP_PROTECT 1500 //For gloves
#define PRESSURE_DAMAGE_COEFFICIENT 4 //The amount of pressure damage someone takes is equal to (pressure / HAZARD_HIGH_PRESSURE)*PRESSURE_DAMAGE_COEFFICIENT, with the maximum of MAX_PRESSURE_DAMAGE
#define MAX_HIGH_PRESSURE_DAMAGE 4
#define LOW_PRESSURE_DAMAGE 4 //The amount of damage someone takes when in a low pressure area (The pressure threshold is so low that it doesn't make sense to do any calculations, so it just applies this flat value).
#define COLD_SLOWDOWN_FACTOR 20 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this
// Atmos pipe limits
//PIPES
//Atmos pipe limits
#define MAX_OUTPUT_PRESSURE 4500 // (kPa) What pressure pumps and powered equipment max out at.
#define MAX_TRANSFER_RATE 200 // (L/s) Maximum speed powered equipment can work at.
//Atmos machinery pipenet stuff
// used for device_type vars; used by DEVICE_TYPE_LOOP
//used for device_type vars; used by DEVICE_TYPE_LOOP
#define UNARY 1
#define BINARY 2
#define TRINARY 3
#define QUATERNARY 4
// this is the standard for loop used by all sorts of atmos machinery procs
//TODO: finally remove this bullshit
//this is the standard for loop used by all sorts of atmos machinery procs
#define DEVICE_TYPE_LOOP var/I in 1 to device_type
// defines for the various machinery lists
// NODE_I, AIR_I, PARENT_I are used within DEVICE_TYPE_LOOP
//defines for the various machinery lists
//NODE_I, AIR_I, PARENT_I are used within DEVICE_TYPE_LOOP
// nodes list - all atmos machinery
//nodes list - all atmos machinery
#define NODE1 nodes[1]
#define NODE2 nodes[2]
#define NODE3 nodes[3]
#define NODE4 nodes[4]
#define NODE_I nodes[I]
// airs list - components only
//airs list - components only
#define AIR1 airs[1]
#define AIR2 airs[2]
#define AIR3 airs[3]
#define AIR_I airs[I]
// parents list - components only
//parents list - components only
#define PARENT1 parents[1]
#define PARENT2 parents[2]
#define PARENT3 parents[3]
#define PARENT_I parents[I]
//Tanks
#define TANK_MAX_RELEASE_PRESSURE (ONE_ATMOSPHERE*3)
#define TANK_MIN_RELEASE_PRESSURE 0
#define TANK_DEFAULT_RELEASE_PRESSURE 16
//TANKS
#define TANK_MELT_TEMPERATURE 1000000 //temperature in kelvins at which a tank will start to melt
#define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) //Tank starts leaking
#define TANK_RUPTURE_PRESSURE (35.*ONE_ATMOSPHERE) //Tank spills all contents into atmosphere
#define TANK_FRAGMENT_PRESSURE (40.*ONE_ATMOSPHERE) //Boom 3x3 base explosion
#define TANK_FRAGMENT_SCALE (6.*ONE_ATMOSPHERE) //+1 for each SCALE kPa aboe threshold
#define TANK_MAX_RELEASE_PRESSURE (ONE_ATMOSPHERE*3)
#define TANK_MIN_RELEASE_PRESSURE 0
#define TANK_DEFAULT_RELEASE_PRESSURE 16
//CANATMOSPASS
#define ATMOS_PASS_YES 1
#define ATMOS_PASS_NO 0
#define ATMOS_PASS_PROC -1 //ask CanAtmosPass()
#define ATMOS_PASS_DENSITY -2 //just check density
#define CANATMOSPASS(A, O) ( A.CanAtmosPass == ATMOS_PASS_PROC ? A.CanAtmosPass(O) : ( A.CanAtmosPass == ATMOS_PASS_DENSITY ? !A.density : A.CanAtmosPass ) )
//LAVALAND
#define LAVALAND_EQUIPMENT_EFFECT_PRESSURE 50 //what pressure you have to be under to increase the effect of equipment meant for lavaland
#define LAVALAND_DEFAULT_ATMOS "o2=14;n2=23;TEMP=300"
//MULTIPIPES
//IF YOU EVER CHANGE THESE CHANGE SPRITES TO MATCH.
#define PIPING_LAYER_MIN 1
#define PIPING_LAYER_MAX 3
@@ -179,6 +190,7 @@
#define PIPING_DEFAULT_LAYER_ONLY 4 //can only exist at PIPING_LAYER_DEFAULT
#define PIPING_CARDINAL_AUTONORMALIZE 8 //north/south east/west doesn't matter, auto normalize on build.
//HELPERS
#define THERMAL_ENERGY(gas) (gas.temperature * gas.heat_capacity())
#define ADD_GAS(gas_id, out_list)\
+10 -5
View File
@@ -1,9 +1,9 @@
//component id defines
#define BELLIGERENT_EYE "belligerent_eye"
#define VANGUARD_COGWHEEL "vanguard_cogwheel"
#define GEIS_CAPACITOR "geis_capacitor"
//component id defines; sometimes these may not make sense in regards to their use in scripture but important ones are bright
#define BELLIGERENT_EYE "belligerent_eye" //Use this for offensive and damaging scripture!
#define VANGUARD_COGWHEEL "vanguard_cogwheel" //Use this for defensive and healing scripture!
#define GEIS_CAPACITOR "geis_capacitor" //Use this for niche scripture!
#define REPLICANT_ALLOY "replicant_alloy"
#define HIEROPHANT_ANSIBLE "hierophant_ansible"
#define HIEROPHANT_ANSIBLE "hierophant_ansible" //Use this for construction-related scripture!
GLOBAL_VAR_INIT(clockwork_construction_value, 0) //The total value of all structures built by the clockwork cult
GLOBAL_VAR_INIT(clockwork_caches, 0) //How many clockwork caches exist in the world (not each individual)
@@ -69,6 +69,9 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us
//Objective text define
#define CLOCKCULT_OBJECTIVE "Construct the Ark of the Clockwork Justicar and free Ratvar."
//Eminence defines
#define SUPERHEATED_CLOCKWORK_WALL_LIMIT 20 //How many walls can be superheated at once
//misc clockcult stuff
#define SIGIL_ACCESS_RANGE 2 //range at which transmission sigils can access power
@@ -86,3 +89,5 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us
#define MARAUDER_SCRIPTURE_SCALING_TIME 50 //The amount of extra deciseconds tacked on to the marauder scripture recital time per recent marauder
#define MARAUDER_SCRIPTURE_SCALING_MAX 300 //The maximum extra time applied to the marauder scripture
#define ARK_SCREAM_COOLDOWN 600 //This much time has to pass between instances of the Ark taking damage before it will "scream" again
+4
View File
@@ -77,6 +77,10 @@
#define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): ()
#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): ()
// /mob/living/carbon/human signals
#define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target)
#define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker)
#define CALTROP_BYPASS_SHOES 1
#define CALTROP_IGNORE_WALKERS 2
+5
View File
@@ -23,6 +23,11 @@
#define WINDOW_IN_FRAME 1
#define WINDOW_SCREWED_TO_FRAME 2
//airlock assembly construction states
#define AIRLOCK_ASSEMBLY_NEEDS_WIRES 0
#define AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS 1
#define AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER 2
//plastic flaps construction states
#define PLASTIC_FLAPS_NORMAL 0
#define PLASTIC_FLAPS_DETACHED 1
+2
View File
@@ -144,6 +144,8 @@
#define iscameramob(A) (istype(A, /mob/camera))
#define iseminence(A) (istype(A, /mob/camera/eminence))
//Objects
#define isobj(A) istype(A, /obj) //override the byond proc because it returns true on children of /atom/movable that aren't objs
+3
View File
@@ -491,6 +491,9 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
#define RIDING_OFFSET_ALL "ALL"
//text files
#define BRAIN_DAMAGE_FILE "brain_damage_lines.json"
//Fullscreen overlay resolution in tiles.
#define FULLSCREEN_OVERLAY_RESOLUTION_X 15
#define FULLSCREEN_OVERLAY_RESOLUTION_Y 15
+11
View File
@@ -51,6 +51,17 @@
#define DEVIL_BODYPART "devil"
/*see __DEFINES/inventory.dm for bodypart bitflag defines*/
//Brain Damage defines
#define BRAIN_DAMAGE_MILD 50
#define BRAIN_DAMAGE_SEVERE 120
#define BRAIN_DAMAGE_DEATH 200
#define BRAIN_TRAUMA_MILD /datum/brain_trauma/mild
#define BRAIN_TRAUMA_SEVERE /datum/brain_trauma/severe
#define BRAIN_TRAUMA_SPECIAL /datum/brain_trauma/special
#define BRAIN_DAMAGE_INTEGRITY_MULTIPLIER 0.5
//Health hud screws for carbon mobs
#define SCREWYHUD_NONE 0
#define SCREWYHUD_CRIT 1
+5 -1
View File
@@ -70,4 +70,8 @@
//Rotation params
#define ROTATE_DIR 1
#define ROTATE_SMOOTH 2
#define ROTATE_OFFSET 4
#define ROTATE_OFFSET 4
#define SHUTTLE_DOCKER_LANDING_CLEAR 1
#define SHUTTLE_DOCKER_BLOCKED_BY_HIDDEN_PORT 2
#define SHUTTLE_DOCKER_BLOCKED 3
+33 -31
View File
@@ -1,31 +1,33 @@
/*
Used with the various stat variables (mob, machines)
*/
//mob/var/stat things
#define CONSCIOUS 0
#define SOFT_CRIT 1
#define UNCONSCIOUS 2
#define DEAD 3
//mob disabilities stat
#define BLIND 1
#define MUTE 2
#define DEAF 4
#define NEARSIGHT 8
#define FAT 32
#define HUSK 64
#define NOCLONE 128
#define CLUMSY 256
// bitflags for machine stat variable
#define BROKEN 1
#define NOPOWER 2
#define MAINT 4 // under maintaince
#define EMPED 8 // temporary broken by EMP pulse
//ai power requirement defines
#define POWER_REQ_NONE 0
#define POWER_REQ_ALL 1
#define POWER_REQ_CLOCKCULT 2
/*
Used with the various stat variables (mob, machines)
*/
//mob/var/stat things
#define CONSCIOUS 0
#define SOFT_CRIT 1
#define UNCONSCIOUS 2
#define DEAD 3
//mob disabilities stat
#define BLIND 1
#define MUTE 2
#define DEAF 4
#define NEARSIGHT 8
#define FAT 32
#define HUSK 64
#define NOCLONE 128
#define CLUMSY 256
#define DUMB 512
#define MONKEYLIKE 1024 //sets IsAdvancedToolUser to FALSE
// bitflags for machine stat variable
#define BROKEN 1
#define NOPOWER 2
#define MAINT 4 // under maintaince
#define EMPED 8 // temporary broken by EMP pulse
//ai power requirement defines
#define POWER_REQ_NONE 0
#define POWER_REQ_ALL 1
#define POWER_REQ_CLOCKCULT 2
+16 -16
View File
@@ -9,6 +9,16 @@
* Misc
*/
#define LAZYINITLIST(L) if (!L) L = list()
#define UNSETEMPTY(L) if (L && !L.len) L = null
#define LAZYREMOVE(L, I) if(L) { L -= I; if(!L.len) { L = null; } }
#define LAZYADD(L, I) if(!L) { L = list(); } L += I;
#define LAZYACCESS(L, I) (L ? (isnum(I) ? (I > 0 && I <= L.len ? L[I] : null) : L[I]) : null)
#define LAZYSET(L, K, V) if(!L) { L = list(); } L[K] = V;
#define LAZYLEN(L) length(L)
#define LAZYCLEARLIST(L) if(L) L.Cut()
#define SANITIZE_LIST(L) ( islist(L) ? L : list() )
//Returns a list in plain english as a string
/proc/english_list(list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
var/total = input.len
@@ -32,7 +42,7 @@
//Returns list element or null. Should prevent "index out of bounds" error.
/proc/listgetindex(list/L, index)
if(istype(L))
if(LAZYLEN(L))
if(isnum(index) && IsInteger(index))
if(IsInRange(index,1,L.len))
return L[index]
@@ -42,7 +52,7 @@
//Return either pick(list) or null if list is not of type /list or is empty
/proc/safepick(list/L)
if(istype(L) && L.len)
if(LAZYLEN(L))
return pick(L)
//Checks if the list is empty
@@ -53,7 +63,7 @@
//Checks for specific types in a list
/proc/is_type_in_list(atom/A, list/L)
if(!L || !L.len || !A)
if(!LAZYLEN(L) || !A)
return FALSE
for(var/type in L)
if(istype(A, type))
@@ -62,7 +72,7 @@
//Checks for specific types in specifically structured (Assoc "type" = TRUE) lists ('typecaches')
/proc/is_type_in_typecache(atom/A, list/L)
if(!L || !L.len || !A)
if(!LAZYLEN(L) || !A)
return FALSE
if(ispath(A))
@@ -72,7 +82,7 @@
//Checks for a string in a list
/proc/is_string_in_list(string, list/L)
if(!L || !L.len || !string)
if(!LAZYLEN(L) || !string)
return
for(var/V in L)
if(string == V)
@@ -81,7 +91,7 @@
//Removes a string from a list
/proc/remove_strings_from_list(string, list/L)
if(!L || !L.len || !string)
if(!LAZYLEN(L) || !string)
return
for(var/V in L)
if(V == string)
@@ -486,16 +496,6 @@
//Picks from the list, with some safeties, and returns the "default" arg if it fails
#define DEFAULTPICK(L, default) ((islist(L) && length(L)) ? pick(L) : default)
#define LAZYINITLIST(L) if (!L) L = list()
#define UNSETEMPTY(L) if (L && !L.len) L = null
#define LAZYREMOVE(L, I) if(L) { L -= I; if(!L.len) { L = null; } }
#define LAZYADD(L, I) if(!L) { L = list(); } L += I;
#define LAZYACCESS(L, I) (L ? (isnum(I) ? (I > 0 && I <= L.len ? L[I] : null) : L[I]) : null)
#define LAZYSET(L, K, V) if(!L) { L = list(); } L[K] = V;
#define LAZYLEN(L) length(L)
#define LAZYCLEARLIST(L) if(L) L.Cut()
#define SANITIZE_LIST(L) ( islist(L) ? L : list() )
/* Definining a counter as a series of key -> numeric value entries
* All these procs modify in place.
-19
View File
@@ -326,25 +326,6 @@
return M
return null
// Will return a list of active candidates. It increases the buffer 5 times until it finds a candidate which is active within the buffer.
/proc/get_candidates(be_special_type, afk_bracket = CONFIG_GET(number/inactivity_period), jobbanType)
var/list/candidates = list()
// Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000))
var/afk_period = CONFIG_GET(number/afk_period)
while(!candidates.len && afk_bracket < afk_period)
for(var/mob/dead/observer/G in GLOB.player_list)
if(G.client != null)
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
if(!G.client.is_afk(afk_bracket) && (be_special_type in G.client.prefs.be_special))
if (jobbanType)
if(!(jobban_isbanned(G, jobbanType) || jobban_isbanned(G, "Syndicate")))
candidates += G.client
else
candidates += G.client
afk_bracket += 600 // Add a minute to the bracket, for every attempt
return candidates
/proc/considered_alive(datum/mind/M, enforce_human = TRUE)
if(M && M.current)
if(enforce_human)
+1 -1
View File
@@ -198,7 +198,7 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
var/list/screen_loc_Y = splittext(screen_loc_params[2],":")
var/x = (text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32)
var/y = (text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32)
var/list/screenview = getviewsize(client)
var/list/screenview = getviewsize(client.view)
var/screenviewX = screenview[1] * world.icon_size
var/screenviewY = screenview[2] * world.icon_size
var/ox = round(screenviewX/2) - client.pixel_x //"origin" x
+1 -1
View File
@@ -359,7 +359,7 @@ Proc for attack log creation, because really why not
if(!user)
return 0
var/atom/Tloc = null
if(target)
if(target && !isturf(target))
Tloc = target.loc
var/atom/Uloc = user.loc
+17 -24
View File
@@ -14,30 +14,23 @@
//breaks when hittin invalid characters thereafter
/proc/hex2num(hex)
. = 0
if(istext(hex))
var/negative = 0
var/len = length(hex)
for(var/i=1, i<=len, i++)
var/num = text2ascii(hex,i)
switch(num)
if(48 to 57)
num -= 48 //0-9
if(97 to 102)
num -= 87 //a-f
if(65 to 70)
num -= 55 //A-F
if(45)
negative = 1//-
else
if(num)
break
else
continue
. *= 16
. += num
if(negative)
. *= -1
return .
var/place = 1
for(var/i in length(hex) to 1 step -1)
var/num = text2ascii(hex, i)
switch(num)
if(48 to 57)
num -= 48 //0-9
if(97 to 102)
num -= 87 //a-f
if(65 to 70)
num -= 55 //A-F
if(45)
return . * -1 // -
else
CRASH("Malformed hex number")
. += num * place
place *= 16
//Returns the hex value of a decimal number
//len == length of returned string
+7
View File
@@ -1507,3 +1507,10 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
else
return "\[[url_encode(thing.tag)]\]"
return "\ref[input]"
//Returns a list of all servants of Ratvar and observers.
/proc/servants_and_ghosts()
. = list()
for(var/V in GLOB.player_list)
if(is_servant_of_ratvar(V) || isobserver(V))
. += V
-1
View File
@@ -35,4 +35,3 @@ GLOBAL_PROTECT(MAX_EX_FLASH_RANGE)
GLOBAL_VAR_INIT(MAX_EX_FLAME_RANGE, 14)
GLOBAL_PROTECT(MAX_EX_FLAME_RANGE)
GLOBAL_VAR_INIT(DYN_EX_SCALE, 0.5)
+1
View File
@@ -4,6 +4,7 @@ GLOBAL_LIST_EMPTY(airlocks) //list of all airlocks
GLOBAL_LIST_EMPTY(mechas_list) //list of all mechs. Used by hostile mobs target tracking.
GLOBAL_LIST_EMPTY(shuttle_caller_list) //list of all communication consoles and AIs, for automatic shuttle calls when there are none.
GLOBAL_LIST_EMPTY(machines) //NOTE: this is a list of ALL machines now. The processing machines list is SSmachine.processing !
GLOBAL_LIST_EMPTY(navigation_computers) //list of all /obj/machinery/computer/camera_advanced/shuttle_docker
GLOBAL_LIST_EMPTY(syndicate_shuttle_boards) //important to keep track of for managing nukeops war declarations.
GLOBAL_LIST_EMPTY(navbeacons) //list of all bot nagivation beacons, used for patrolling.
GLOBAL_LIST_EMPTY(teleportbeacons) //list of all tracking beacons used by teleporters
+27 -17
View File
@@ -285,7 +285,7 @@
if(!stat && mind && iscarbon(A) && A != src)
var/datum/antagonist/changeling/C = mind.has_antag_datum(/datum/antagonist/changeling)
if(C && C.chosen_sting)
C.chosen_sting.try_to_sting(src,A)
C.chosen_sting.try_to_sting(src,A)
next_click = world.time + 5
return
swap_hand()
@@ -349,7 +349,7 @@
if(!stat && mind && iscarbon(A) && A != src)
var/datum/antagonist/changeling/C = mind.has_antag_datum(/datum/antagonist/changeling)
if(C && C.chosen_sting)
C.chosen_sting.try_to_sting(src,A)
C.chosen_sting.try_to_sting(src,A)
next_click = world.time + 5
return
..()
@@ -433,28 +433,38 @@
else
setDir(WEST)
//debug
/obj/screen/proc/scale_to(x1,y1)
if(!y1)
y1 = x1
var/matrix/M = new
M.Scale(x1,y1)
transform = M
/obj/screen/click_catcher
icon = 'icons/mob/screen_gen.dmi'
icon_state = "flash"
icon_state = "catcher"
plane = CLICKCATCHER_PLANE
mouse_opacity = MOUSE_OPACITY_OPAQUE
screen_loc = "CENTER"
#define MAX_SAFE_BYOND_ICON_SCALE_TILES (MAX_SAFE_BYOND_ICON_SCALE_PX / world.icon_size)
#define MAX_SAFE_BYOND_ICON_SCALE_PX 33 * 32 //Not using world.icon_size on purpose.
/obj/screen/click_catcher/proc/UpdateGreed(view_size_x = 15, view_size_y = 15)
var/icon/newicon = icon('icons/mob/screen_gen.dmi', "flash")
if(view_size_x > 32 || view_size_y > 32)
newicon.Scale(16 * world.icon_size,16 * world.icon_size)
icon = newicon
var/tx = ((view_size_x - 1)*0.5)/16
var/ty = ((view_size_y - 1)*0.5)/16
var/matrix/M = new
M.Scale(tx, ty)
transform = M
screen_loc = "CENTER-16,CENTER-16"
else
screen_loc = "CENTER-[(view_size_x-1)*0.5],CENTER-[(view_size_y-1)*0.5]"
newicon.Scale(view_size_x * world.icon_size,view_size_y * world.icon_size)
icon = newicon
var/icon/newicon = icon('icons/mob/screen_gen.dmi', "catcher")
var/ox = min(MAX_SAFE_BYOND_ICON_SCALE_TILES, view_size_x)
var/oy = min(MAX_SAFE_BYOND_ICON_SCALE_TILES, view_size_y)
var/px = view_size_x * world.icon_size
var/py = view_size_y * world.icon_size
var/sx = min(MAX_SAFE_BYOND_ICON_SCALE_PX, px)
var/sy = min(MAX_SAFE_BYOND_ICON_SCALE_PX, py)
newicon.Scale(sx, sy)
icon = newicon
screen_loc = "CENTER-[(ox-1)*0.5],CENTER-[(oy-1)*0.5]"
var/matrix/M = new
M.Scale(px/sx, py/sy)
transform = M
/obj/screen/click_catcher/Click(location, control, params)
var/list/modifiers = params2list(params)
+16
View File
@@ -8,15 +8,22 @@
var/button_icon_state
var/appearance_cache
var/id
/obj/screen/movable/action_button/Click(location,control,params)
var/list/modifiers = params2list(params)
if(modifiers["shift"])
if(locked)
to_chat(usr, "<span class='warning'>Action button \"[name]\" is locked, unlock it first.</span>")
return TRUE
moved = 0
usr.update_action_buttons() //redraw buttons that are no longer considered "moved"
return TRUE
if(modifiers["ctrl"])
locked = !locked
to_chat(usr, "<span class='notice'>Action button \"[name]\" [locked ? "" : "un"]locked.</span>")
if(id && usr.client) //try to (un)remember position
usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = locked ? moved : null
return TRUE
if(usr.next_click > world.time)
return
@@ -38,21 +45,30 @@
/obj/screen/movable/action_button/hide_toggle/Click(location,control,params)
var/list/modifiers = params2list(params)
if(modifiers["shift"])
if(locked)
to_chat(usr, "<span class='warning'>Action button \"[name]\" is locked, unlock it first.</span>")
return TRUE
moved = FALSE
usr.update_action_buttons(TRUE)
return TRUE
if(modifiers["ctrl"])
locked = !locked
to_chat(usr, "<span class='notice'>Action button \"[name]\" [locked ? "" : "un"]locked.</span>")
if(id && usr.client) //try to (un)remember position
usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = locked ? moved : null
return TRUE
if(modifiers["alt"])
for(var/V in usr.actions)
var/datum/action/A = V
var/obj/screen/movable/action_button/B = A.button
B.moved = FALSE
if(B.id && usr.client)
usr.client.prefs.action_buttons_screen_locs["[B.name]_[B.id]"] = null
B.locked = usr.client.prefs.buttons_locked
locked = usr.client.prefs.buttons_locked
moved = FALSE
if(id && usr.client)
usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = null
usr.update_action_buttons(TRUE)
to_chat(usr, "<span class='notice'>Action button positions have been reset.</span>")
return TRUE
+5 -13
View File
@@ -388,23 +388,15 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
desc = "<font size=3><b>CHETR<br>NYY<br>HAGEHUGF-NAQ-UBABE<br>RATVAR.</b></font>"
else
var/servants = 0
var/validservants = 0
var/list/textlist
for(var/mob/living/L in GLOB.alive_mob_list)
if(is_servant_of_ratvar(L))
servants++
if(ishuman(L) || issilicon(L))
validservants++
if(servants > 1)
if(validservants > 1)
textlist = list("<b>[servants]</b> Servants, <b>[validservants]</b> of which count towards scripture.<br>")
else
textlist = list("<b>[servants]</b> Servants, [validservants ? "<b>[validservants]</b> of which counts":"none of which count"] towards scripture.<br>")
else
textlist = list("<b>[servants]</b> Servant, who [validservants ? "counts":"does not count"] towards scripture.<br>")
for(var/i in SSticker.scripture_states)
if(i != SCRIPTURE_DRIVER) //ignore the always-unlocked stuff
textlist += "[i] Scripture: <b>[SSticker.scripture_states[i] ? "UNLOCKED":"LOCKED"]</b><br>"
textlist = list("[SSticker.mode.eminence ? "There is an Eminence." : "<b>There is no Eminence! Get one ASAP!</b>"]<br>")
textlist += "There are currently <b>[servants]</b> servant[servants > 1 ? "s" : ""] of Ratvar.<br>"
for(var/i in SSticker.scripture_states)
if(i != SCRIPTURE_DRIVER) //ignore the always-unlocked stuff
textlist += "[i] Scripture: <b>[SSticker.scripture_states[i] ? "UNLOCKED":"LOCKED"]</b><br>"
var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar
if(G)
var/time_info = G.get_arrival_time(FALSE)
+2 -2
View File
@@ -135,6 +135,6 @@
var/attack_message = "[src] has been [message_verb][message_hit_area] with [I]."
if(user in viewers(src, null))
attack_message = "[user] has [message_verb] [src][message_hit_area] with [I]!"
visible_message("<span class='danger'>[attack_message]</span>", \
visible_message("<span class='danger'>[attack_message]</span>",\
"<span class='userdanger'>[attack_message]</span>", null, COMBAT_MESSAGE_RANGE)
return 1
return 1
+49 -28
View File
@@ -11,7 +11,7 @@
attack_verb = list("poked", "jabbed", "hit")
light_color = "#37FFF7"
var/light_brightness = 3
actions_types = list(/datum/action/item_action/pick_color)
actions_types = list()
/obj/item/toy/sword/cx/attack_self(mob/user)
active = !( active )
@@ -57,18 +57,21 @@
var/mob/M = loc
M.update_inv_hands()
/obj/item/toy/sword/cx/ui_action_click(mob/user, var/datum/action/A)
if(istype(A, /datum/action/item_action/pick_color))
if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
var/energy_color_input = input(usr,"Choose Energy Color") as color|null
if(energy_color_input)
light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
update_icon()
update_light()
A.UpdateButtonIcon()
/obj/item/toy/sword/cx/AltClick(mob/living/user)
if(user.incapacitated() || !istype(user))
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
return
if(!in_range(src, user))
return
if(user.incapacitated() || !istype(user) || !in_range(src, user))
return
else
..()
if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
var/energy_color_input = input(usr,"Choose Energy Color") as color|null
if(energy_color_input)
light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
update_icon()
update_light()
/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file)
. = ..()
@@ -79,7 +82,21 @@
. += blade_inhand
/obj/item/toy/sword/cx/attackby(obj/item/W, mob/living/user, params)
return //NO MORE MAKING DUAL ESWORDS
if(istype(W, /obj/item/toy/sword/cx))
if((W.flags_1 & NODROP_1) || (flags_1 & NODROP_1))
to_chat(user, "<span class='warning'>\the [flags_1 & NODROP_1 ? src : W] is stuck to your hand, you can't attach it to \the [flags_1 & NODROP_1 ? W : src]!</span>")
return
else
to_chat(user, "<span class='notice'>You combine the two plastic swords, making a single supermassive toy! You're fake-cool.</span>")
new /obj/item/twohanded/hypereutactic/toy(user.loc)
qdel(W)
qdel(src)
else
return ..()
/obj/item/toy/sword/cx/examine(mob/user)
..()
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>")
/*///autolathe memes/// I really need to stop doing this and find a proper way of adding in my toys
@@ -124,7 +141,7 @@
origin_tech = "combat=3;magnets=4"
block_chance = 60
light_color = "#37FFF7"
actions_types = list(/datum/action/item_action/pick_color)
actions_types = list()
/obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text)
active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE
@@ -152,9 +169,6 @@
update_icon()
transform_messages(user, supress_message_text)
add_fingerprint(user)
for(var/X in actions)
var/datum/action/A = X
A.UpdateButtonIcon()
return TRUE
/obj/item/melee/transforming/energy/sword/cx/transform_messages(mob/living/user, supress_message_text)
@@ -181,18 +195,25 @@
var/mob/M = loc
M.update_inv_hands()
/obj/item/melee/transforming/energy/sword/cx/ui_action_click(mob/user, var/datum/action/A)
if(istype(A, /datum/action/item_action/pick_color))
if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
var/energy_color_input = input(usr,"Choose Energy Color") as color|null
if(energy_color_input)
light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
update_icon()
update_light()
A.UpdateButtonIcon()
/obj/item/melee/transforming/energy/sword/cx/AltClick(mob/living/user)
if(user.incapacitated() || !istype(user))
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
return
if(!in_range(src, user))
return
if(user.incapacitated() || !istype(user) || !in_range(src, user))
return
else
..()
if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
var/energy_color_input = input(usr,"Choose Energy Color") as color|null
if(energy_color_input)
light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
update_icon()
update_light()
/obj/item/melee/transforming/energy/sword/cx/examine(mob/user)
..()
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>")
/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file)
. = ..()
+53 -39
View File
@@ -16,17 +16,20 @@
/obj/item/clothing/neck/cloak/inferno
name = "Kiara's Cloak"
desc = "The design on this seems a little too familiar."
icon = 'icons/obj/clothing/cloaks.dmi'
icon_state = "infcloak"
item_state = "infcloak"
icon = 'icons/obj/custom.dmi'
icon_state = "infcloak-i"
icon_override = 'icons/obj/custom.dmi'
item_state = "infcloak-w"
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
/obj/item/clothing/neck/petcollar/inferno
name = "Kiara's Collar"
desc = "A soft black collar that seems to stretch to fit whoever wears it."
icon_state = "infcollar"
item_state = "infcollar"
icon = 'icons/obj/custom.dmi'
icon_state = "infcollar-i"
icon_override = 'icons/obj/custom.dmi'
item_state = "infcollar-w"
item_color = null
tagname = null
@@ -43,7 +46,7 @@
/obj/item/lighter/gold
name = "\improper Engraved Zippo"
desc = "A shiny and relatively expensive zippo lighter. There's a small etched in verse on the bottom that reads, 'No Gods, No Masters, Only Man.'"
icon = 'icons/obj/cigarettes.dmi'
icon = 'icons/obj/custom.dmi'
icon_state = "gold_zippo"
item_state = "gold_zippo"
w_class = WEIGHT_CLASS_TINY
@@ -58,16 +61,20 @@
/obj/item/clothing/neck/scarf/zomb //Default white color, same functionality as beanies.
name = "A special scarf"
icon_state = "zombscarf"
icon = 'icons/obj/custom.dmi'
icon_state = "zombscarf-i"
desc = "A fashionable collar"
item_color = "zombscarf"
icon_override = 'icons/obj/custom.dmi'
item_color = "zombscarf-w"
dog_fashion = /datum/dog_fashion/head
/obj/item/clothing/suit/toggle/labcoat/mad/red
name = "\improper The Mad's labcoat"
desc = "An oddly special looking coat."
icon_state = "labred"
item_state = "labred"
icon = 'icons/obj/custom.dmi'
icon_state = "labred-i"
icon_override = 'icons/obj/custom.dmi'
item_state = "labred-w"
/*PLACEHOLDER*/
@@ -86,17 +93,17 @@
/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"
icon = 'icons/obj/custom.dmi'
icon_override = 'icons/obj/custom.dmi'
icon_state = "carrotcloak-i"
item_state = "carrotcloak-w"
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
/obj/item/toy/plush/tree
name = "christmass tree plushie"
desc = "A festive plush that squeeks when you squeeze it!"
icon = 'icons/obj/plushes.dmi'
icon = 'icons/obj/custom.dmi'
icon_state = "pine_c"
item_state = "pine_c"
w_class = WEIGHT_CLASS_SMALL
@@ -107,10 +114,10 @@
/obj/item/clothing/neck/cloak/festive
name = "Celebratory Cloak of Morozko"
desc = " It probably will protect from snow, charcoal or elves."
icon = 'icons/obj/clothing/cloaks.dmi'
icon_override = 'icons/mob/citadel/suit.dmi'
icon_state = "festivecloak"
item_state = "festiveloak"
icon = 'icons/obj/custom.dmi'
icon_state = "festive-i"
item_state = "festive-w"
icon_override = 'icons/obj/custom.dmi'
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -119,9 +126,10 @@
/obj/item/clothing/mask/luchador/zigfie
name = "Alboroto Rosa mask"
icon = 'icons/mob/mask.dmi'
icon_state = "lucharzigfie"
item_state = "lucharzigfie"
icon = 'icons/obj/custom.dmi'
icon_state = "lucharzigfie-i"
icon_override = 'icons/obj/custom.dmi'
item_state = "lucharzigfie-w"
/*PLACEHOLDER*/
@@ -159,8 +167,10 @@
/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"
icon = 'icons/obj/custom.dmi'
icon_state = "hos-g-i"
icon_override = 'icons/obj/custom.dmi'
item_state = "hos-g-w"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
@@ -170,14 +180,15 @@
desc = "Every good russian spaceman knows it's a good idea to bring along a couple of pints of whiskey wherever they go."
icon = 'icons/obj/custom.dmi'
icon_state = "russianflask"
item_state = "russianflask"
volume = 60
/obj/item/clothing/mask/gas/stalker
name = "S.T.A.L.K.E.R. mask"
desc = "Smells like reactor four."
item_state = "stalker"
icon_state = "stalker"
icon = 'icons/obj/custom.dmi'
item_state = "stalker-w"
icon_override = 'icons/obj/custom.dmi'
icon_state = "stalker-i"
/*Sylas*/
@@ -185,8 +196,9 @@
name = "collar"
desc = "It's a collar..."
icon = 'icons/obj/custom.dmi'
icon_state = "petcollar-stripe"
item_color = "petcollar-stripe"
icon_state = "petcollar-stripe-i"
icon_override = 'icons/obj/custom.dmi'
item_state = "petcollar-stripe-w"
tagname = null
@@ -194,17 +206,21 @@
/obj/item/clothing/under/singery/custom
name = "bluish performer's outfit"
desc = "Just looking at this makes you want to sing."
icon_state = "ssing"
item_state = "ssing"
item_color = "ssing"
icon = 'icons/obj/custom.dmi'
icon_state = "singer-i"
icon_override = 'icons/obj/custom.dmi'
item_state = "singer-w"
item_color = "singer-i"
fitted = NO_FEMALE_UNIFORM
alternate_worn_layer = ABOVE_SHOES_LAYER
can_adjust = 0
/obj/item/clothing/shoes/sneakers/pink
icon_state = "pink"
item_state = "pink"
icon = 'icons/obj/custom.dmi'
icon_state = "pink-i"
icon_override = 'icons/obj/custom.dmi'
item_state = "pink-w"
/*Fractious*/
@@ -212,10 +228,8 @@
/obj/item/clothing/suit/vermillion
name = "vermillion clothing"
desc = "Some clothing."
icon_state = "vermillion-w"
item_state = "vermillion-i"
icon_state = "vermillion-i"
item_state = "vermillion-w"
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
icon = 'icons/obj/custom.dmi'
icon_override = 'icons/obj/custom.dmi'
@@ -168,7 +168,10 @@ GLOBAL_PROTECT(config_dir)
mode_names[M.config_tag] = M.name
probabilities[M.config_tag] = M.probability
mode_reports[M.config_tag] = M.generate_report()
mode_false_report_weight[M.config_tag] = M.false_report_weight
if(M.probability)
mode_false_report_weight[M.config_tag] = M.false_report_weight
else
mode_false_report_weight[M.config_tag] = 1
if(M.votable)
votable_modes += M.config_tag
qdel(M)
@@ -208,9 +208,9 @@ CONFIG_DEF(string/panic_server_name)
/datum/config_entry/string/panic_server_name/ValidateAndSet(str_val)
return str_val != "\[Put the name here\]" && ..()
CONFIG_DEF(string/panic_address) //Reconnect a player this linked server if this server isn't accepting new players
CONFIG_DEF(string/panic_server_address) //Reconnect a player this linked server if this server isn't accepting new players
/datum/config_entry/string/panic_address/ValidateAndSet(str_val)
/datum/config_entry/string/panic_server_address/ValidateAndSet(str_val)
return str_val != "byond://address:port" && ..()
CONFIG_DEF(string/invoke_youtubedl)
@@ -377,7 +377,7 @@ CONFIG_TWEAK(number/mc_tick_rate/ValidateAndSet(str_val))
CONFIG_DEF(flag/resume_after_initializations)
CONFIG_TWEAK(flag/ValidateAndSet(str_val))
CONFIG_TWEAK(flag/resume_after_initializations/ValidateAndSet(str_val))
. = ..()
if(. && Master.current_runlevel)
world.sleep_offline = !value
@@ -385,3 +385,6 @@ CONFIG_TWEAK(flag/ValidateAndSet(str_val))
CONFIG_DEF(number/rounds_until_hard_restart)
value = -1
min_val = 0
CONFIG_DEF(string/default_view)
value = "15x15"
@@ -263,4 +263,4 @@ CONFIG_DEF(number/emergency_shuttle_autocall_threshold)
max_val = 1
integer = FALSE
CONFIG_DEF(flag/ic_printing)
CONFIG_DEF(flag/ic_printing)
+10 -2
View File
@@ -45,7 +45,14 @@ SUBSYSTEM_DEF(blackbox)
return ..()
/datum/controller/subsystem/blackbox/vv_edit_var(var_name, var_value)
return FALSE
switch(var_name)
if("feedback")
return FALSE
if("sealed")
if(var_value)
return Seal()
return FALSE
return ..()
/datum/controller/subsystem/blackbox/Shutdown()
sealed = FALSE
@@ -76,11 +83,12 @@ SUBSYSTEM_DEF(blackbox)
/datum/controller/subsystem/blackbox/proc/Seal()
if(sealed)
return
return FALSE
if(IsAdminAdvancedProcCall())
message_admins("[key_name_admin(usr)] sealed the blackbox!")
log_game("Blackbox sealed[IsAdminAdvancedProcCall() ? " by [key_name(usr)]" : ""].")
sealed = TRUE
return TRUE
/datum/controller/subsystem/blackbox/proc/log_research(tech, level)
if(!(tech in research_levels) || research_levels[tech] < level)
+40 -1
View File
@@ -44,6 +44,9 @@ SUBSYSTEM_DEF(shuttle)
var/list/requestlist = list()
var/list/orderhistory = list()
var/list/hidden_shuttle_turfs = list() //all turfs hidden from navigation computers associated with a list containing the image hiding them and the type of the turf they are pretending to be
var/list/hidden_shuttle_turf_images = list() //only the images from the above list
var/datum/round_event/shuttle_loan/shuttle_loan
var/shuttle_purchased = FALSE //If the station has purchased a replacement escape shuttle this round
@@ -648,4 +651,40 @@ SUBSYSTEM_DEF(shuttle)
var/list/xs = overlap[1]
var/list/ys = overlap[2]
if(xs.len && ys.len)
.[port] = overlap
.[port] = overlap
/datum/controller/subsystem/shuttle/proc/update_hidden_docking_ports(list/remove_turfs, list/add_turfs)
var/list/remove_images = list()
var/list/add_images = list()
if(remove_turfs)
for(var/T in remove_turfs)
var/list/L = hidden_shuttle_turfs[T]
if(L)
remove_images += L[1]
hidden_shuttle_turfs -= remove_turfs
if(add_turfs)
for(var/V in add_turfs)
var/turf/T = V
var/image/I
if(remove_images.len)
//we can just reuse any images we are about to delete instead of making new ones
I = remove_images[1]
remove_images.Cut(1, 2)
I.loc = T
else
I = image(loc = T)
add_images += I
I.appearance = T.appearance
I.override = TRUE
hidden_shuttle_turfs[T] = list(I, T.type)
hidden_shuttle_turf_images -= remove_images
hidden_shuttle_turf_images += add_images
for(var/V in GLOB.navigation_computers)
var/obj/machinery/computer/camera_advanced/shuttle_docker/C = V
C.update_hidden_docking_ports(remove_images, add_images)
QDEL_LIST(remove_images)
+11 -4
View File
@@ -33,8 +33,8 @@ SUBSYSTEM_DEF(ticker)
SCRIPTURE_APPLICATION = FALSE) //list of clockcult scripture states for announcements
var/delay_end = 0 //if set true, the round will not restart on it's own
var/admin_delay_notice = "" //a message to display to anyone who tries to restart the world after a delay
var/ready_for_reboot = FALSE //all roundend preparation done with, all that's left is reboot
var/triai = 0 //Global holder for Triumvirate
var/tipped = 0 //Did we broadcast the tip of the day yet?
@@ -584,10 +584,17 @@ SUBSYSTEM_DEF(ticker)
SSblackbox.Seal()
sleep(50)
if(mode.station_was_nuked)
Reboot("Station destroyed by Nuclear Device.", "nuke")
ready_for_reboot = TRUE
standard_reboot()
/datum/controller/subsystem/ticker/proc/standard_reboot()
if(ready_for_reboot)
if(mode.station_was_nuked)
Reboot("Station destroyed by Nuclear Device.", "nuke")
else
Reboot("Round ended.", "proper completion")
else
Reboot("Round ended.", "proper completion")
CRASH("Attempted standard reboot without ticker roundend completion")
/datum/controller/subsystem/ticker/proc/send_tip_of_the_round()
var/m
+52
View File
@@ -0,0 +1,52 @@
SUBSYSTEM_DEF(traumas)
name = "Traumas"
flags = SS_NO_FIRE
var/list/phobia_types
var/list/phobia_words
var/list/phobia_mobs
var/list/phobia_objs
var/list/phobia_turfs
var/list/phobia_species
#define PHOBIA_FILE "phobia.json"
/datum/controller/subsystem/traumas/Initialize()
phobia_types = list("spiders", "space", "security", "clowns", "greytide", "lizards", "skeletons")
phobia_words = list("spiders" = strings(PHOBIA_FILE, "spiders"),
"space" = strings(PHOBIA_FILE, "space"),
"security" = strings(PHOBIA_FILE, "security"),
"clowns" = strings(PHOBIA_FILE, "clowns"),
"greytide" = strings(PHOBIA_FILE, "greytide"),
"lizards" = strings(PHOBIA_FILE, "lizards"),
"skeletons" = strings(PHOBIA_FILE, "skeletons"),
)
phobia_mobs = list("spiders" = typecacheof(list(/mob/living/simple_animal/hostile/poison/giant_spider)),
"security" = typecacheof(list(/mob/living/simple_animal/bot/secbot)),
"lizards" = typecacheof(list(/mob/living/simple_animal/hostile/lizard))
)
phobia_objs = list("spiders" = typecacheof(list(/obj/structure/spider)),
"security" = typecacheof(list(/obj/item/clothing/under/rank/security, /obj/item/clothing/under/rank/warden,
/obj/item/clothing/under/rank/head_of_security, /obj/item/clothing/under/rank/det,
/obj/item/melee/baton, /obj/item/gun/energy/taser, /obj/item/restraints/handcuffs,
/obj/machinery/door/airlock/security)),
"clowns" = typecacheof(list(/obj/item/clothing/under/rank/clown, /obj/item/clothing/shoes/clown_shoes,
/obj/item/clothing/mask/gas/clown_hat, /obj/item/device/instrument/bikehorn,
/obj/item/device/pda/clown, /obj/item/grown/bananapeel)),
"greytide" = typecacheof(list(/obj/item/clothing/under/color/grey, /obj/item/melee/baton/cattleprod,
/obj/item/twohanded/spear, /obj/item/clothing/mask/gas)),
"lizards" = typecacheof(list(/obj/item/toy/plush/lizardplushie, /obj/item/reagent_containers/food/snacks/kebab/tail,
/obj/item/organ/tail/lizard, /obj/item/reagent_containers/food/drinks/bottle/lizardwine)),
"skeletons" = typecacheof(list(/obj/item/organ/tongue/bone, /obj/item/clothing/suit/armor/bone, /obj/item/stack/sheet/bone,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton,
/obj/effect/decal/remains/human))
)
phobia_turfs = list("space" = typecacheof(list(/turf/open/space, /turf/open/floor/holofloor/space, /turf/open/floor/fakespace)))
phobia_species = list("lizards" = typecacheof(list(/datum/species/lizard)),
"skeletons" = typecacheof(list(/datum/species/skeleton, /datum/species/plasmaman))
)
#undef PHOBIA_FILE
+9
View File
@@ -41,5 +41,14 @@ SUBSYSTEM_DEF(weather)
if(W.name == weather_name && W.target_z == Z)
W.telegraph()
/datum/controller/subsystem/weather/proc/is_weather_affecting_area(area/A, weather_datum_type)
for(var/V in processing)
var/datum/weather/W = V
if(!istype(W, weather_datum_type))
continue
if(A in W.impacted_areas)
return TRUE
return FALSE
/datum/controller/subsystem/weather/proc/make_z_eligible(zlevel)
eligible_zlevels |= zlevel
+19 -1
View File
@@ -43,10 +43,27 @@
return
Remove(owner)
owner = M
//button id generation
var/counter = 0
var/bitfield = 0
for(var/datum/action/A in M.actions)
if(A.name == name && A.button.id)
counter += 1
bitfield |= A.button.id
bitfield = ~bitfield
var/bitflag = 1
for(var/i in 1 to (counter + 1))
if(bitfield & bitflag)
button.id = bitflag
break
bitflag *= 2
M.actions += src
if(M.client)
M.client.screen += button
button.locked = M.client.prefs.buttons_locked
button.locked = M.client.prefs.buttons_locked || button.id ? M.client.prefs.action_buttons_screen_locs["[name]_[button.id]"] : FALSE //even if it's not defaultly locked we should remember we locked it before
button.moved = button.id ? M.client.prefs.action_buttons_screen_locs["[name]_[button.id]"] : FALSE
M.update_action_buttons()
else
Remove(owner)
@@ -60,6 +77,7 @@
owner = null
button.moved = FALSE //so the button appears in its normal position when given to another owner.
button.locked = FALSE
button.id = null
/datum/action/proc/Trigger()
if(!IsAvailable())
+8 -7
View File
@@ -71,7 +71,7 @@
var/datum/objective/escape/escape_objective = new
escape_objective.owner = owner
objectives += escape_objective
if(31 to 60)
var/datum/objective/steal/steal_objective = new
steal_objective.owner = owner
@@ -103,8 +103,8 @@
if (!(locate(/datum/objective/hijack) in owner.objectives))
var/datum/objective/hijack/hijack_objective = new
hijack_objective.owner = owner
objectives += hijack_objective
objectives += hijack_objective
for(var/datum/objective/O in objectives)
owner.objectives += O
@@ -128,7 +128,7 @@
if(H.age < wiz_age)
H.age = wiz_age
H.equipOutfit(outfit_type)
/datum/antagonist/wizard/greet()
to_chat(owner, "<span class='boldannounce'>You are the Space Wizard!</span>")
to_chat(owner, "<B>The Space Wizards Federation has given you the following tasks:</B>")
@@ -208,7 +208,7 @@
owner.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(null))
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/mind_transfer(null))
to_chat(owner, "<B>Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap.")
/datum/antagonist/wizard/apprentice/create_objectives()
var/datum/objective/protect/new_objective = new /datum/objective/protect
new_objective.owner = owner
@@ -221,6 +221,7 @@
/datum/antagonist/wizard/apprentice/imposter
name = "Wizard Imposter"
allow_rename = FALSE
move_to_lair = FALSE
/datum/antagonist/wizard/apprentice/imposter/greet()
to_chat(owner, "<B>You are an imposter! Trick and confuse the crew to misdirect malice from your handsome original!</B>")
@@ -266,7 +267,7 @@
/datum/antagonist/wizard/academy/equip_wizard()
. = ..()
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt)
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile)
owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball)
@@ -274,7 +275,7 @@
var/mob/living/M = owner.current
if(!istype(M))
return
var/obj/item/implant/exile/Implant = new/obj/item/implant/exile(M)
Implant.implant(M)
+49
View File
@@ -0,0 +1,49 @@
//Brain Traumas are the new actual brain damage. Brain damage itself acts as a way to acquire traumas: every time brain damage is dealt, there's a chance of receiving a trauma.
//This chance gets higher the higher the mob's brainloss is. Removing traumas is a separate thing from removing brain damage: you can get restored to full brain operativity,
//but keep the quirks, until repaired by mannitol (for mild/special ones) or brain surgery (for severe ones).
/datum/brain_trauma
var/name = "Brain Trauma"
var/desc = "A trauma caused by brain damage, which causes issues to the patient."
var/scan_desc = "a generic brain trauma" //description when detected by a health scanner
var/mob/living/carbon/owner //the poor bastard
var/obj/item/organ/brain/brain //the poor bastard's brain
var/gain_text = "<span class='notice'>You feel traumatized.</span>"
var/lose_text = "<span class='notice'>You no longer feel traumatized.</span>"
var/can_gain = TRUE //can this be gained through random traumas?
var/permanent = FALSE //can this be cured?
/datum/brain_trauma/New(obj/item/organ/brain/B, _permanent)
brain = B
owner = B.owner
permanent = _permanent
if(owner)
on_gain()
/datum/brain_trauma/Destroy()
brain.traumas -= src
if(owner)
on_lose()
brain = null
owner = null
return ..()
//Called on life ticks
/datum/brain_trauma/proc/on_life()
return
//Called when given to a mob
/datum/brain_trauma/proc/on_gain()
to_chat(owner, gain_text)
//Called when removed from a mob
/datum/brain_trauma/proc/on_lose(silent)
if(!silent)
to_chat(owner, lose_text)
//Called when hearing a spoken message
/datum/brain_trauma/proc/on_hear(message, speaker, message_language, raw_message, radio_freq)
return message
//Called when speaking
/datum/brain_trauma/proc/on_say(message)
return message
+135
View File
@@ -0,0 +1,135 @@
//Mild traumas are the most common; they are generally minor annoyances.
//They can be cured with mannitol and patience, although brain surgery still works.
//Most of the old brain damage effects have been transferred to the dumbness trauma.
/datum/brain_trauma/mild
/datum/brain_trauma/mild/hallucinations
name = "Hallucinations"
desc = "Patient suffers constant hallucinations."
scan_desc = "schizophrenia"
gain_text = "<span class='warning'>You feel your grip on reality slipping...</span>"
lose_text = "<span class='notice'>You feel more grounded.</span>"
/datum/brain_trauma/mild/hallucinations/on_life()
owner.hallucination = min(owner.hallucination + 10, 50)
..()
/datum/brain_trauma/mild/hallucinations/on_lose()
owner.hallucination = 0
..()
/datum/brain_trauma/mild/stuttering
name = "Stuttering"
desc = "Patient can't speak properly."
scan_desc = "reduced mouth coordination"
gain_text = "<span class='warning'>Speaking clearly is getting harder.</span>"
lose_text = "<span class='notice'>You feel in control of your speech.</span>"
/datum/brain_trauma/mild/stuttering/on_life()
owner.stuttering = min(owner.stuttering + 5, 25)
..()
/datum/brain_trauma/mild/stuttering/on_lose()
owner.stuttering = 0
..()
/datum/brain_trauma/mild/dumbness
name = "Dumbness"
desc = "Patient has reduced brain activity, making them less intelligent."
scan_desc = "reduced brain activity"
gain_text = "<span class='warning'>You feel dumber.</span>"
lose_text = "<span class='notice'>You feel smart again.</span>"
/datum/brain_trauma/mild/dumbness/on_gain()
owner.disabilities |= DUMB
..()
/datum/brain_trauma/mild/dumbness/on_life()
owner.derpspeech = min(owner.derpspeech + 5, 25)
if(prob(3))
owner.emote("drool")
else if(owner.stat == CONSCIOUS && prob(3))
owner.say(pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage"))
..()
/datum/brain_trauma/mild/dumbness/on_lose()
owner.disabilities &= ~DUMB
owner.derpspeech = 0
..()
/datum/brain_trauma/mild/speech_impediment
name = "Speech Impediment"
desc = "Patient is unable to form coherent sentences."
scan_desc = "communication disorder"
gain_text = "" //mutation will handle the text
lose_text = ""
/datum/brain_trauma/mild/speech_impediment/on_gain()
owner.dna.add_mutation(UNINTELLIGIBLE)
..()
//no fiddling with genetics to get out of this one
/datum/brain_trauma/mild/speech_impediment/on_life()
if(!(GLOB.mutations_list[UNINTELLIGIBLE] in owner.dna.mutations))
on_gain()
..()
/datum/brain_trauma/mild/speech_impediment/on_lose()
owner.dna.remove_mutation(UNINTELLIGIBLE)
..()
/datum/brain_trauma/mild/concussion
name = "Concussion"
desc = "Patient's brain is concussed."
scan_desc = "a concussion"
gain_text = "<span class='warning'>Your head hurts!</span>"
lose_text = "<span class='notice'>The pressure inside your head starts fading.</span>"
/datum/brain_trauma/mild/concussion/on_life()
if(prob(5))
switch(rand(1,11))
if(1)
owner.vomit()
if(2,3)
owner.dizziness += 10
if(4,5)
owner.confused += 10
owner.blur_eyes(10)
if(6 to 9)
owner.slurring += 30
if(10)
to_chat(owner, "<span class='notice'>You forget for a moment what you were doing.</span>")
owner.Stun(20)
if(11)
to_chat(owner, "<span class='warning'>You faint.</span>")
owner.Unconscious(80)
..()
/datum/brain_trauma/mild/muscle_weakness
name = "Muscle Weakness"
desc = "Patient experiences occasional bouts of muscle weakness."
scan_desc = "weak motor nerve signal"
gain_text = "<span class='warning'>Your muscles feel oddly faint.</span>"
lose_text = "<span class='notice'>You feel in control of your muscles again.</span>"
/datum/brain_trauma/mild/muscle_weakness/on_life()
var/fall_chance = 1
if(owner.m_intent == MOVE_INTENT_RUN)
fall_chance += 2
if(prob(fall_chance) && !owner.lying && !owner.buckled)
to_chat(owner, "<span class='warning'>Your leg gives out!</span>")
owner.Knockdown(35)
else if(owner.get_active_held_item())
var/drop_chance = 1
var/obj/item/I = owner.get_active_held_item()
drop_chance += I.w_class
if(prob(drop_chance) && owner.dropItemToGround(I))
to_chat(owner, "<span class='warning'>You drop [I]!</span>")
else if(prob(3))
to_chat(owner, "<span class='warning'>You feel a sudden weakness in your muscles!</span>")
owner.adjustStaminaLoss(50)
..()
+115
View File
@@ -0,0 +1,115 @@
/datum/brain_trauma/mild/phobia
name = "Phobia"
desc = "Patient is unreasonably afraid of something."
scan_desc = "phobia"
gain_text = ""
lose_text = ""
var/phobia_type
var/next_check = 0
var/next_scare = 0
var/list/trigger_words
//instead of cycling every atom, only cycle the relevant types
var/list/trigger_mobs
var/list/trigger_objs //also checked in mob equipment
var/list/trigger_turfs
var/list/trigger_species
/datum/brain_trauma/mild/phobia/New(mob/living/carbon/C, _permanent, specific_type)
phobia_type = specific_type
if(!phobia_type)
phobia_type = pick(SStraumas.phobia_types)
gain_text = "<span class='warning'>You start finding [phobia_type] very unnerving...</span>"
lose_text = "<span class='notice'>You no longer feel afraid of [phobia_type].</span>"
scan_desc += " of [phobia_type]"
trigger_words = SStraumas.phobia_words[phobia_type]
trigger_mobs = SStraumas.phobia_mobs[phobia_type]
trigger_objs = SStraumas.phobia_objs[phobia_type]
trigger_turfs = SStraumas.phobia_turfs[phobia_type]
trigger_species = SStraumas.phobia_species[phobia_type]
..()
/datum/brain_trauma/mild/phobia/on_life()
..()
if(owner.eye_blind)
return
if(world.time > next_check && world.time > next_scare)
next_check = world.time + 50
var/list/seen_atoms = view(7, owner)
if(LAZYLEN(trigger_objs))
for(var/obj/O in seen_atoms)
if(is_type_in_typecache(O, trigger_objs))
freak_out(O)
return
if(LAZYLEN(trigger_turfs))
for(var/turf/T in seen_atoms)
if(is_type_in_typecache(T, trigger_turfs))
freak_out(T)
return
if(LAZYLEN(trigger_mobs) || LAZYLEN(trigger_objs))
for(var/mob/M in seen_atoms)
if(is_type_in_typecache(M, trigger_mobs))
freak_out(M)
return
else if(ishuman(M)) //check their equipment for trigger items
var/mob/living/carbon/human/H = M
if(LAZYLEN(trigger_species) && H.dna && H.dna.species && is_type_in_typecache(H.dna.species, trigger_species))
freak_out(H)
for(var/X in H.get_all_slots() | H.held_items)
var/obj/I = X
if(!QDELETED(I) && is_type_in_typecache(I, trigger_objs))
freak_out(I)
return
/datum/brain_trauma/mild/phobia/on_hear(message, speaker, message_language, raw_message, radio_freq)
if(owner.disabilities & DEAF || world.time < next_scare) //words can't trigger you if you can't hear them *taps head*
return message
for(var/word in trigger_words)
if(findtext(message, word))
addtimer(CALLBACK(src, .proc/freak_out, null, word), 10) //to react AFTER the chat message
break
return message
/datum/brain_trauma/mild/phobia/on_say(message)
for(var/word in trigger_words)
if(findtext(message, word))
to_chat(owner, "<span class='warning'>You can't bring yourself to say the word \"[word]\"!</span>")
return ""
return message
/datum/brain_trauma/mild/phobia/proc/freak_out(atom/reason, trigger_word)
next_scare = world.time + 120
var/message = pick("spooks you to the bone", "shakes you up", "terrifies you", "sends you into a panic", "sends chills down your spine")
if(reason)
to_chat(owner, "<span class='userdanger'>Seeing [reason] [message]!</span>")
else if(trigger_word)
to_chat(owner, "<span class='userdanger'>Hearing \"[trigger_word]\" [message]!</span>")
else
to_chat(owner, "<span class='userdanger'>Something [message]!</span>")
var/reaction = rand(1,4)
switch(reaction)
if(1)
to_chat(owner, "<span class='warning'>You are paralyzed with fear!</span>")
owner.Stun(70)
owner.Jitter(8)
if(2)
owner.emote("scream")
owner.Jitter(5)
owner.say("AAAAH!!")
if(reason)
owner.pointed(reason)
if(3)
to_chat(owner, "<span class='warning'>You shut your eyes in terror!</span>")
owner.Jitter(5)
owner.blind_eyes(10)
if(4)
owner.dizziness += 10
owner.confused += 10
owner.Jitter(10)
owner.stuttering += 10
+179
View File
@@ -0,0 +1,179 @@
//Severe traumas, when your brain gets abused way too much.
//These range from very annoying to completely debilitating.
//They cannot be cured with chemicals, and require brain surgery to solve.
/datum/brain_trauma/severe
/datum/brain_trauma/severe/mute
name = "Mutism"
desc = "Patient is completely unable to speak."
scan_desc = "extensive damage to the brain's language center"
gain_text = "<span class='warning'>You forget how to speak!</span>"
lose_text = "<span class='notice'>You suddenly remember how to speak.</span>"
/datum/brain_trauma/severe/mute/on_gain()
owner.disabilities |= MUTE
..()
//no fiddling with genetics to get out of this one
/datum/brain_trauma/severe/mute/on_life()
if(!(owner.disabilities & MUTE))
on_gain()
..()
/datum/brain_trauma/severe/mute/on_lose()
owner.disabilities &= ~MUTE
..()
/datum/brain_trauma/severe/blindness
name = "Cerebral Blindness"
desc = "Patient's brain is no longer connected to its eyes."
scan_desc = "extensive damage to the brain's occipital lobe"
gain_text = "<span class='warning'>You can't see!</span>"
lose_text = "<span class='notice'>Your vision returns.</span>"
/datum/brain_trauma/severe/blindness/on_gain()
owner.become_blind()
..()
//no fiddling with genetics to get out of this one
/datum/brain_trauma/severe/blindness/on_life()
if(!(owner.disabilities & BLIND))
on_gain()
..()
/datum/brain_trauma/severe/blindness/on_lose()
owner.cure_blind()
..()
/datum/brain_trauma/severe/paralysis
name = "Paralysis"
desc = "Patient's brain can no longer control its motor functions."
scan_desc = "cerebral paralysis"
gain_text = "<span class='warning'>You can't feel your body anymore!</span>"
lose_text = "<span class='notice'>You can feel your limbs again!</span>"
/datum/brain_trauma/severe/paralysis/on_life()
owner.Knockdown(200, ignore_canknockdown = TRUE)
..()
/datum/brain_trauma/severe/paralysis/on_lose()
owner.SetKnockdown(0)
..()
/datum/brain_trauma/severe/narcolepsy
name = "Narcolepsy"
desc = "Patient may involuntarily fall asleep during normal activities."
scan_desc = "traumatic narcolepsy"
gain_text = "<span class='warning'>You have a constant feeling of drowsiness...</span>"
lose_text = "<span class='notice'>You feel awake and aware again.</span>"
/datum/brain_trauma/severe/narcolepsy/on_life()
..()
if(owner.IsSleeping())
return
var/sleep_chance = 1
if(owner.m_intent == MOVE_INTENT_RUN)
sleep_chance += 2
if(owner.drowsyness)
sleep_chance += 3
if(prob(sleep_chance))
to_chat(owner, "<span class='warning'>You fall asleep.</span>")
owner.Sleeping(60)
else if(!owner.drowsyness && prob(sleep_chance * 2))
to_chat(owner, "<span class='warning'>You feel tired...</span>")
owner.drowsyness += 10
/datum/brain_trauma/severe/monophobia
name = "Monophobia"
desc = "Patient feels sick and distressed when not around other people, leading to potentially lethal levels of stress."
scan_desc = "severe monophobia"
gain_text = ""
lose_text = "<span class='notice'>You feel like you could be safe on your own.</span>"
var/stress = 0
/datum/brain_trauma/severe/monophobia/on_gain()
..()
if(check_alone())
to_chat(owner, "<span class='warning'>You feel really lonely...</span>")
else
to_chat(owner, "<span class='notice'>You feel safe, as long as you have people around you.</span>")
/datum/brain_trauma/severe/monophobia/on_life()
..()
if(check_alone())
stress = min(stress + 0.5, 100)
if(stress > 10 && (prob(5)))
stress_reaction()
else
stress -= 4
/datum/brain_trauma/severe/monophobia/proc/check_alone()
if(owner.disabilities & BLIND)
return TRUE
for(var/mob/M in oview(owner, 7))
if(!isliving(M)) //ghosts ain't people
continue
if((istype(M, /mob/living/simple_animal/pet)) || M.ckey)
return FALSE
return TRUE
/datum/brain_trauma/severe/monophobia/proc/stress_reaction()
if(owner.stat != CONSCIOUS)
return
var/high_stress = (stress > 60) //things get psychosomatic from here on
switch(rand(1,6))
if(1)
if(!high_stress)
to_chat(owner, "<span class='warning'>You feel sick...</span>")
else
to_chat(owner, "<span class='warning'>You feel really sick at the thought of being alone!</span>")
addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress
if(2)
if(!high_stress)
to_chat(owner, "<span class='warning'>You can't stop shaking...</span>")
owner.dizziness += 20
owner.confused += 20
owner.Jitter(20)
else
to_chat(owner, "<span class='warning'>You feel weak and scared! If only you weren't alone...</span>")
owner.dizziness += 20
owner.confused += 20
owner.Jitter(20)
owner.adjustStaminaLoss(50)
if(3, 4)
if(!high_stress)
to_chat(owner, "<span class='warning'>You feel really lonely...</span>")
else
to_chat(owner, "<span class='warning'>You're going mad with loneliness!</span>")
owner.hallucination += 20
if(5)
if(!high_stress)
to_chat(owner, "<span class='warning'>Your heart skips a beat.</span>")
owner.adjustOxyLoss(8)
else
if(prob(15) && ishuman(owner))
var/mob/living/carbon/human/H = owner
H.set_heartattack(TRUE)
to_chat(H, "<span class='userdanger'>You feel a stabbing pain in your heart!</span>")
else
to_chat(owner, "<span class='userdanger'>You feel your heart lurching in your chest...</span>")
owner.adjustOxyLoss(8)
/datum/brain_trauma/severe/discoordination
name = "Discoordination"
desc = "Patient is unable to use complex tools or machinery."
scan_desc = "extreme discoordination"
gain_text = "<span class='warning'>You can barely control your hands!</span>"
lose_text = "<span class='notice'>You feel in control of your hands again.</span>"
/datum/brain_trauma/severe/discoordination/on_gain()
owner.disabilities |= MONKEYLIKE
..()
/datum/brain_trauma/severe/discoordination/on_lose()
owner.disabilities &= ~MONKEYLIKE
..()
+122
View File
@@ -0,0 +1,122 @@
//Brain traumas that are rare and/or somewhat beneficial;
//they are the easiest to cure, which means that if you want
//to keep them, you can't cure your other traumas
/datum/brain_trauma/special
/datum/brain_trauma/special/godwoken
name = "Godwoken Syndrome"
desc = "Patient occasionally and uncontrollably channels an eldritch god when speaking."
scan_desc = "god delusion"
gain_text = "<span class='notice'>You feel a higher power inside your mind...</span>"
lose_text = "<span class='warning'>The divine presence leaves your head, no longer interested.</span>"
var/next_speech = 0
var/inspiration = FALSE
/datum/brain_trauma/special/godwoken/on_life()
..()
if(!inspiration && world.time > next_speech && prob(4))
to_chat(owner, "<span class='notice'>[pick("You feel inspired!","You feel power course through you...","You feel something within you itching to speak...")]</span>")
inspiration = TRUE
/datum/brain_trauma/special/godwoken/on_say(message)
if(world.time > next_speech && inspiration)
playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 300, 1, 5)
var/cooldown = voice_of_god(message, owner, list("colossus","yell"), 2)
cooldown *= 0.33
next_speech = world.time + cooldown
inspiration = FALSE
return ""
else
return message
/datum/brain_trauma/special/bluespace_prophet
name = "Bluespace Prophecy"
desc = "Patient can sense the bob and weave of bluespace around them, showing them passageways no one else can see."
scan_desc = "bluespace attunement"
gain_text = "<span class='notice'>You feel the bluespace pulsing around you...</span>"
lose_text = "<span class='warning'>The faint pulsing of bluespace fades into silence.</span>"
var/next_portal = 0
/datum/brain_trauma/special/bluespace_prophet/on_life()
if(world.time > next_portal)
next_portal = world.time + 100
var/list/turf/possible_turfs = list()
for(var/turf/T in range(owner, 8))
if(!T.density)
var/clear = TRUE
for(var/obj/O in T)
if(O.density)
clear = FALSE
break
if(clear)
possible_turfs += T
if(!LAZYLEN(possible_turfs))
return
var/turf/first_turf = pick(possible_turfs)
if(!first_turf)
return
possible_turfs -= (possible_turfs & range(first_turf, 3))
var/turf/second_turf = pick(possible_turfs)
if(!second_turf)
return
var/obj/effect/hallucination/simple/bluespace_stream/first = new(first_turf, owner)
var/obj/effect/hallucination/simple/bluespace_stream/second = new(second_turf, owner)
first.linked_to = second
second.linked_to = first
first.seer = owner
second.seer = owner
/obj/effect/hallucination/simple/bluespace_stream
name = "bluespace stream"
desc = "You see a hidden pathway through bluespace..."
image_icon = 'icons/effects/effects.dmi'
image_state = "bluestream"
image_layer = ABOVE_MOB_LAYER
var/obj/effect/hallucination/simple/bluespace_stream/linked_to
var/mob/living/carbon/seer
/obj/effect/hallucination/simple/bluespace_stream/Initialize()
. = ..()
QDEL_IN(src, 300)
/obj/effect/hallucination/simple/bluespace_stream/attack_hand(mob/user)
if(user != seer || !linked_to)
return
var/slip_in_message = pick("slides sideways in an odd way, and disappears", "jumps into an unseen dimension",\
"sticks one leg straight out, wiggles [user.p_their()] foot, and is suddenly gone", "stops, then blinks out of reality", \
"is pulled into an invisible vortex, vanishing from sight")
var/slip_out_message = pick("silently fades in", "leaps out of thin air","appears", "walks out of an invisible doorway",\
"slides out of a fold in spacetime")
to_chat(user, "<span class='notice'>You try to align with the bluespace stream...</span>")
if(do_after(user, 20, target = src))
new /obj/effect/temp_visual/bluespace_fissure(get_turf(src))
new /obj/effect/temp_visual/bluespace_fissure(get_turf(linked_to))
user.forceMove(get_turf(linked_to))
user.visible_message("<span class='warning'>[user] [slip_in_message].</span>", ignored_mob = user)
user.visible_message("<span class='warning'>[user] [slip_out_message].</span>", "<span class='notice'>...and find your way to the other side.</span>")
/datum/brain_trauma/special/psychotic_brawling
name = "Violent Psychosis"
desc = "Patient fights in unpredictable ways, ranging from helping his target to hitting them with brutal strength."
scan_desc = "violent psychosis"
gain_text = "<span class='warning'>You feel unhinged...</span>"
lose_text = "<span class='notice'>You feel more balanced.</span>"
var/datum/martial_art/psychotic_brawling/psychotic_brawling
/datum/brain_trauma/special/psychotic_brawling/on_gain()
..()
psychotic_brawling = new(null)
if(!psychotic_brawling.teach(owner, TRUE))
to_chat(owner, "<span class='notice'>But your martial knowledge keeps you grounded.</span>")
qdel(src)
/datum/brain_trauma/special/psychotic_brawling/on_lose()
..()
psychotic_brawling.remove(owner)
QDEL_NULL(psychotic_brawling)
@@ -0,0 +1,218 @@
#define OWNER 0
#define STRANGER 1
/datum/brain_trauma/severe/split_personality
name = "Split Personality"
desc = "Patient's brain is split into two personalities, which randomly switch control of the body."
scan_desc = "complete lobe separation"
gain_text = "<span class='warning'>You feel like your mind was split in two.</span>"
lose_text = "<span class='notice'>You feel alone again.</span>"
var/current_controller = OWNER
var/initialized = FALSE //to prevent personalities deleting themselves while we wait for ghosts
var/mob/living/split_personality/stranger_backseat //there's two so they can swap without overwriting
var/mob/living/split_personality/owner_backseat
/datum/brain_trauma/severe/split_personality/on_gain()
..()
make_backseats()
get_ghost()
/datum/brain_trauma/severe/split_personality/proc/make_backseats()
stranger_backseat = new(owner, src)
owner_backseat = new(owner, src)
/datum/brain_trauma/severe/split_personality/proc/get_ghost()
set waitfor = FALSE
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s split personality?", null, null, null, 75, stranger_backseat)
if(LAZYLEN(candidates))
var/client/C = pick(candidates)
stranger_backseat.key = C.key
else
qdel(src)
/datum/brain_trauma/severe/split_personality/on_life()
if(owner.stat == DEAD)
if(current_controller != OWNER)
switch_personalities()
qdel(src)
else if(prob(3))
switch_personalities()
..()
/datum/brain_trauma/severe/split_personality/on_lose()
if(current_controller != OWNER) //it would be funny to cure a guy only to be left with the other personality, but it seems too cruel
switch_personalities()
QDEL_NULL(stranger_backseat)
QDEL_NULL(owner_backseat)
..()
/datum/brain_trauma/severe/split_personality/proc/switch_personalities()
if(QDELETED(owner) || owner.stat == DEAD || QDELETED(stranger_backseat) || QDELETED(owner_backseat))
return
var/mob/living/split_personality/current_backseat
var/mob/living/split_personality/free_backseat
if(current_controller == OWNER)
current_backseat = stranger_backseat
free_backseat = owner_backseat
else
current_backseat = owner_backseat
free_backseat = stranger_backseat
log_game("[current_backseat]/([current_backseat.ckey]) assumed control of [owner]/([owner.ckey] due to [src]. (Original owner: [current_controller == OWNER ? owner.ckey : current_backseat.ckey])")
to_chat(owner, "<span class='userdanger'>You feel your control being taken away... your other personality is in charge now!</span>")
to_chat(current_backseat, "<span class='userdanger'>You manage to take control of your body!</span>")
//Body to backseat
var/h2b_id = owner.computer_id
var/h2b_ip= owner.lastKnownIP
owner.computer_id = null
owner.lastKnownIP = null
free_backseat.ckey = owner.ckey
free_backseat.name = owner.name
if(owner.mind)
free_backseat.mind = owner.mind
if(!free_backseat.computer_id)
free_backseat.computer_id = h2b_id
if(!free_backseat.lastKnownIP)
free_backseat.lastKnownIP = h2b_ip
//Backseat to body
var/s2h_id = current_backseat.computer_id
var/s2h_ip= current_backseat.lastKnownIP
current_backseat.computer_id = null
current_backseat.lastKnownIP = null
owner.ckey = current_backseat.ckey
owner.mind = current_backseat.mind
if(!owner.computer_id)
owner.computer_id = s2h_id
if(!owner.lastKnownIP)
owner.lastKnownIP = s2h_ip
current_controller = !current_controller
/mob/living/split_personality
name = "split personality"
real_name = "unknown conscience"
var/mob/living/carbon/body
var/datum/brain_trauma/severe/split_personality/trauma
/mob/living/split_personality/Initialize(mapload, _trauma)
if(iscarbon(loc))
body = loc
name = body.real_name
real_name = body.real_name
trauma = _trauma
return ..()
/mob/living/split_personality/Life()
if(QDELETED(body))
qdel(src) //in case trauma deletion doesn't already do it
if((body.stat == DEAD && trauma.owner_backseat == src))
trauma.switch_personalities()
qdel(trauma)
//if one of the two ghosts, the other one stays permanently
if(!body.client && trauma.initialized)
trauma.switch_personalities()
qdel(trauma)
..()
/mob/living/split_personality/Login()
..()
to_chat(src, "<span class='notice'>As a split personality, you cannot do anything but observe. However, you will eventually gain control of your body, switching places with the current personality.</span>")
/mob/living/split_personality/say(message)
to_chat(src, "<span class='warning'>You cannot speak, your other self is controlling your body!</span>")
return FALSE
/mob/living/split_personality/emote(message)
return
///////////////BRAINWASHING////////////////////
/datum/brain_trauma/severe/split_personality/brainwashing
name = "Split Personality"
desc = "Patient's brain is split into two personalities, which randomly switch control of the body."
scan_desc = "complete lobe separation"
gain_text = ""
lose_text = "<span class='notice'>You are free of your brainwashing.</span>"
can_gain = FALSE
var/codeword
var/objective
/datum/brain_trauma/severe/split_personality/brainwashing/New(obj/item/organ/brain/B, _permanent, _codeword, _objective)
..()
if(_codeword)
codeword = _codeword
else
codeword = pick(strings("ion_laws.json", "ionabstract")\
| strings("ion_laws.json", "ionobjects")\
| strings("ion_laws.json", "ionadjectives")\
| strings("ion_laws.json", "ionthreats")\
| strings("ion_laws.json", "ionfood")\
| strings("ion_laws.json", "iondrinks"))
/datum/brain_trauma/severe/split_personality/brainwashing/on_gain()
..()
var/mob/living/split_personality/traitor/traitor_backseat = stranger_backseat
traitor_backseat.codeword = codeword
traitor_backseat.objective = objective
/datum/brain_trauma/severe/split_personality/brainwashing/make_backseats()
stranger_backseat = new /mob/living/split_personality/traitor(owner, src, codeword, objective)
owner_backseat = new(owner, src)
/datum/brain_trauma/severe/split_personality/brainwashing/get_ghost()
set waitfor = FALSE
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s brainwashed mind?", null, null, null, 75, stranger_backseat)
if(LAZYLEN(candidates))
var/client/C = pick(candidates)
stranger_backseat.key = C.key
else
qdel(src)
/datum/brain_trauma/severe/split_personality/brainwashing/on_life()
return //no random switching
/datum/brain_trauma/severe/split_personality/brainwashing/on_hear(message, speaker, message_language, raw_message, radio_freq)
if(owner.disabilities & DEAF || owner == speaker)
return message
if(findtext(message, codeword))
message = replacetext(message, codeword, "<span class='warning'>[codeword]</span>")
addtimer(CALLBACK(src, /datum/brain_trauma/severe/split_personality.proc/switch_personalities), 10)
return message
/datum/brain_trauma/severe/split_personality/brainwashing/on_say(message)
if(findtext(message, codeword))
return "" //oh hey did you want to tell people about the secret word to bring you back?
return message
/mob/living/split_personality/traitor
name = "split personality"
real_name = "unknown conscience"
var/objective
var/codeword
/mob/living/split_personality/traitor/Login()
..()
to_chat(src, "<span class='notice'>As a brainwashed personality, you cannot do anything yet but observe. However, you may gain control of your body if you hear the special codeword, switching places with the current personality.</span>")
to_chat(src, "<span class='notice'>Your activation codeword is: <b>[codeword]</b></span>")
if(objective)
to_chat(src, "<span class='notice'>Your master left you an objective: <b>[objective]</b>. Follow it at all costs when in control.</span>")
#undef OWNER
#undef STRANGER
+60
View File
@@ -0,0 +1,60 @@
/datum/component/caltrop
var/min_damage
var/max_damage
var/probability
var/flags
var/cooldown = 0
/datum/component/caltrop/Initialize(_min_damage = 0, _max_damage = 0, _probability = 100, _flags = NONE)
min_damage = _min_damage
max_damage = max(_min_damage, _max_damage)
probability = _probability
flags = _flags
RegisterSignal(list(COMSIG_MOVABLE_CROSSED), .proc/Crossed)
/datum/component/caltrop/proc/Crossed(atom/movable/AM)
var/atom/A = parent
if(!A.has_gravity())
return
if(!prob(probability))
return
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
if(PIERCEIMMUNE in H.dna.species.species_traits)
return
if((flags & CALTROP_IGNORE_WALKERS) && H.m_intent == MOVE_INTENT_WALK)
return
var/picked_def_zone = pick("l_leg", "r_leg")
var/obj/item/bodypart/O = H.get_bodypart(picked_def_zone)
if(!istype(O))
return
if(O.status == BODYPART_ROBOTIC)
return
var/feetCover = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) || (H.w_uniform && (H.w_uniform.body_parts_covered & FEET))
if(!(flags & CALTROP_BYPASS_SHOES) && (H.shoes || feetCover))
return
if((H.movement_type & FLYING) || H.buckled)
return
var/damage = rand(min_damage, max_damage)
H.apply_damage(damage, BRUTE, picked_def_zone)
if(cooldown < world.time - 10) //cooldown to avoid message spam.
if(!H.incapacitated(ignore_restraints = TRUE))
H.visible_message("<span class='danger'>[H] steps on [A].</span>", \
"<span class='userdanger'>You step on [A]!</span>")
else
H.visible_message("<span class='danger'>[H] slides on [A]!</span>", \
"<span class='userdanger'>You slide on [A]!</span>")
cooldown = world.time
H.Knockdown(60)
+1 -1
View File
@@ -58,7 +58,7 @@
return
. = COMPONENT_NO_AFTERATTACK
var/datum/callback/pc = precondition
if(pc && !pc.Invoke())
if(pc && !pc.Invoke(user))
return
var/material_amount = get_item_material_amount(I)
if(!material_amount)
+326 -326
View File
@@ -1,326 +1,326 @@
/datum/component/riding
var/next_vehicle_move = 0 //used for move delays
var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower
var/keytype
var/slowed = FALSE
var/slowvalue = 1
var/list/riding_offsets = list() //position_of_user = list(dir = list(px, py)), or RIDING_OFFSET_ALL for a generic one.
var/list/directional_vehicle_layers = list() //["[DIRECTION]"] = layer. Don't set it for a direction for default, set a direction to null for no change.
var/list/directional_vehicle_offsets = list() //same as above but instead of layer you have a list(px, py)
var/list/allowed_turf_typecache
var/list/forbid_turf_typecache //allow typecache for only certain turfs, forbid to allow all but those. allow only certain turfs will take precedence.
var/allow_one_away_from_valid_turf = TRUE //allow moving one tile away from a valid turf but not more.
var/override_allow_spacemove = FALSE
var/drive_verb = "drive"
var/ride_check_rider_incapacitated = FALSE
var/ride_check_rider_restrained = FALSE
var/ride_check_ridden_incapacitated = FALSE
/datum/component/riding/Initialize()
if(!ismovableatom(parent))
. = COMPONENT_INCOMPATIBLE
CRASH("RIDING COMPONENT ASSIGNED TO NON ATOM MOVABLE!")
RegisterSignal(COMSIG_MOVABLE_BUCKLE, .proc/vehicle_mob_buckle)
RegisterSignal(COMSIG_MOVABLE_UNBUCKLE, .proc/vehicle_mob_unbuckle)
RegisterSignal(COMSIG_MOVABLE_MOVED, .proc/vehicle_moved)
/datum/component/riding/proc/vehicle_mob_unbuckle(mob/living/M, force = FALSE)
restore_position(M)
unequip_buckle_inhands(M)
/datum/component/riding/proc/vehicle_mob_buckle(mob/living/M, force = FALSE)
handle_vehicle_offsets()
/datum/component/riding/proc/handle_vehicle_layer()
var/atom/movable/AM = parent
var/static/list/defaults = list(TEXT_NORTH = OBJ_LAYER, TEXT_SOUTH = ABOVE_MOB_LAYER, TEXT_EAST = ABOVE_MOB_LAYER, TEXT_WEST = ABOVE_MOB_LAYER)
. = defaults["[AM.dir]"]
if(directional_vehicle_layers["[AM.dir]"])
. = directional_vehicle_layers["[AM.dir]"]
if(isnull(.)) //you can set it to null to not change it.
. = AM.layer
AM.layer = .
/datum/component/riding/proc/set_vehicle_dir_layer(dir, layer)
directional_vehicle_layers["[dir]"] = layer
/datum/component/riding/proc/vehicle_moved()
var/atom/movable/AM = parent
for(var/i in AM.buckled_mobs)
ride_check(i)
handle_vehicle_offsets()
handle_vehicle_layer()
/datum/component/riding/proc/ride_check(mob/living/M)
var/atom/movable/AM = parent
var/mob/AMM = AM
if((ride_check_rider_restrained && M.restrained(TRUE)) || (ride_check_rider_incapacitated && M.incapacitated(FALSE, TRUE)) || (ride_check_ridden_incapacitated && istype(AMM) && AMM.incapacitated(FALSE, TRUE)))
AM.visible_message("<span class='warning'>[M] falls off of [AM]!</span>")
AM.unbuckle_mob(M)
return TRUE
/datum/component/riding/proc/force_dismount(mob/living/M)
var/atom/movable/AM = parent
AM.unbuckle_mob(M)
/datum/component/riding/proc/handle_vehicle_offsets()
var/atom/movable/AM = parent
var/AM_dir = "[AM.dir]"
var/passindex = 0
if(AM.has_buckled_mobs())
for(var/m in AM.buckled_mobs)
passindex++
var/mob/living/buckled_mob = m
var/list/offsets = get_offsets(passindex)
var/rider_dir = get_rider_dir(passindex)
buckled_mob.setDir(rider_dir)
dir_loop:
for(var/offsetdir in offsets)
if(offsetdir == AM_dir)
var/list/diroffsets = offsets[offsetdir]
buckled_mob.pixel_x = diroffsets[1]
if(diroffsets.len >= 2)
buckled_mob.pixel_y = diroffsets[2]
if(diroffsets.len == 3)
buckled_mob.layer = diroffsets[3]
break dir_loop
var/list/static/default_vehicle_pixel_offsets = list(TEXT_NORTH = list(0, 0), TEXT_SOUTH = list(0, 0), TEXT_EAST = list(0, 0), TEXT_WEST = list(0, 0))
var/px = default_vehicle_pixel_offsets[AM_dir]
var/py = default_vehicle_pixel_offsets[AM_dir]
if(directional_vehicle_offsets[AM_dir])
if(isnull(directional_vehicle_offsets[AM_dir]))
px = AM.pixel_x
py = AM.pixel_y
else
px = directional_vehicle_offsets[AM_dir][1]
py = directional_vehicle_offsets[AM_dir][2]
AM.pixel_x = px
AM.pixel_y = py
/datum/component/riding/proc/set_vehicle_dir_offsets(dir, x, y)
directional_vehicle_offsets["[dir]"] = list(x, y)
//Override this to set your vehicle's various pixel offsets
/datum/component/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer)
. = list(TEXT_NORTH = list(0, 0), TEXT_SOUTH = list(0, 0), TEXT_EAST = list(0, 0), TEXT_WEST = list(0, 0))
if(riding_offsets["[pass_index]"])
. = riding_offsets["[pass_index]"]
else if(riding_offsets["[RIDING_OFFSET_ALL]"])
. = riding_offsets["[RIDING_OFFSET_ALL]"]
/datum/component/riding/proc/set_riding_offsets(index, list/offsets)
if(!islist(offsets))
return FALSE
riding_offsets["[index]"] = offsets
//Override this to set the passengers/riders dir based on which passenger they are.
//ie: rider facing the vehicle's dir, but passenger 2 facing backwards, etc.
/datum/component/riding/proc/get_rider_dir(pass_index)
var/atom/movable/AM = parent
return AM.dir
//KEYS
/datum/component/riding/proc/keycheck(mob/user)
return !keytype || user.is_holding_item_of_type(keytype)
//BUCKLE HOOKS
/datum/component/riding/proc/restore_position(mob/living/buckled_mob)
if(buckled_mob)
buckled_mob.pixel_x = 0
buckled_mob.pixel_y = 0
if(buckled_mob.client)
buckled_mob.client.change_view(world.view)
//MOVEMENT
/datum/component/riding/proc/turf_check(turf/next, turf/current)
if(allowed_turf_typecache && !allowed_turf_typecache[next.type])
return (allow_one_away_from_valid_turf && allowed_turf_typecache[current.type])
else if(forbid_turf_typecache && forbid_turf_typecache[next.type])
return (allow_one_away_from_valid_turf && !forbid_turf_typecache[current.type])
return TRUE
/datum/component/riding/proc/handle_ride(mob/user, direction)
var/atom/movable/AM = parent
if(user.incapacitated())
Unbuckle(user)
return
if(world.time < next_vehicle_move)
return
next_vehicle_move = world.time + vehicle_move_delay
if(keycheck(user))
var/turf/next = get_step(AM, direction)
var/turf/current = get_turf(AM)
if(!istype(next) || !istype(current))
return //not happening.
if(!turf_check(next, current))
to_chat(user, "Your \the [AM] can not go onto [next]!")
return
if(!Process_Spacemove(direction) || !isturf(AM.loc))
return
step(AM, direction)
handle_vehicle_layer()
handle_vehicle_offsets()
else
to_chat(user, "<span class='notice'>You'll need the keys in one of your hands to [drive_verb] [AM].</span>")
/datum/component/riding/proc/Unbuckle(atom/movable/M)
addtimer(CALLBACK(parent, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE)
/datum/component/riding/proc/Process_Spacemove(direction)
var/atom/movable/AM = parent
return override_allow_spacemove || AM.has_gravity()
/datum/component/riding/proc/account_limbs(mob/living/M)
if(M.get_num_legs() < 2 && !slowed)
vehicle_move_delay = vehicle_move_delay + slowvalue
slowed = TRUE
else if(slowed)
vehicle_move_delay = vehicle_move_delay - slowvalue
slowed = FALSE
///////Yes, I said humans. No, this won't end well...//////////
/datum/component/riding/human
/datum/component/riding/human/Initialize()
. = ..()
RegisterSignal(COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee)
/datum/component/riding/human/proc/on_host_unarmed_melee(atom/target)
var/mob/living/carbon/human/AM = parent
if(AM.a_intent == INTENT_DISARM && (target in AM.buckled_mobs))
force_dismount(target)
/datum/component/riding/human/handle_vehicle_layer()
var/atom/movable/AM = parent
if(AM.buckled_mobs && AM.buckled_mobs.len)
if(AM.dir == SOUTH)
AM.layer = ABOVE_MOB_LAYER
else
AM.layer = OBJ_LAYER
else
AM.layer = MOB_LAYER
/datum/component/riding/human/force_dismount(mob/living/user)
var/atom/movable/AM = parent
AM.unbuckle_mob(user)
user.Knockdown(60)
user.visible_message("<span class='warning'>[AM] pushes [user] off of them!</span>")
/datum/component/riding/cyborg
/datum/component/riding/cyborg/ride_check(mob/user)
var/atom/movable/AM = parent
if(user.incapacitated())
var/kick = TRUE
if(iscyborg(AM))
var/mob/living/silicon/robot/R = AM
if(R.module && R.module.ride_allow_incapacitated)
kick = FALSE
if(kick)
to_chat(user, "<span class='userdanger'>You fall off of [AM]!</span>")
Unbuckle(user)
return
if(iscarbon(user))
var/mob/living/carbon/carbonuser = user
if(!carbonuser.get_num_arms())
Unbuckle(user)
to_chat(user, "<span class='userdanger'>You can't grab onto [AM] with no hands!</span>")
return
/datum/component/riding/cyborg/handle_vehicle_layer()
var/atom/movable/AM = parent
if(AM.buckled_mobs && AM.buckled_mobs.len)
if(AM.dir == SOUTH)
AM.layer = ABOVE_MOB_LAYER
else
AM.layer = OBJ_LAYER
else
AM.layer = MOB_LAYER
/datum/component/riding/cyborg/get_offsets(pass_index) // list(dir = x, y, layer)
return list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(-6, 3), TEXT_WEST = list( 6, 3))
/datum/component/riding/cyborg/handle_vehicle_offsets()
var/atom/movable/AM = parent
if(AM.has_buckled_mobs())
for(var/mob/living/M in AM.buckled_mobs)
M.setDir(AM.dir)
if(iscyborg(AM))
var/mob/living/silicon/robot/R = AM
if(istype(R.module))
M.pixel_x = R.module.ride_offset_x[dir2text(AM.dir)]
M.pixel_y = R.module.ride_offset_y[dir2text(AM.dir)]
else
..()
/datum/component/riding/cyborg/force_dismount(mob/living/M)
var/atom/movable/AM = parent
AM.unbuckle_mob(M)
var/turf/target = get_edge_target_turf(AM, AM.dir)
var/turf/targetm = get_step(get_turf(AM), AM.dir)
M.Move(targetm)
M.visible_message("<span class='warning'>[M] is thrown clear of [AM]!</span>")
M.throw_at(target, 14, 5, AM)
M.Knockdown(60)
/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1)
var/atom/movable/AM = parent
var/amount_equipped = 0
for(var/amount_needed = amount_required, amount_needed > 0, amount_needed--)
var/obj/item/riding_offhand/inhand = new /obj/item/riding_offhand(user)
inhand.rider = user
inhand.parent = AM
if(user.put_in_hands(inhand, TRUE))
amount_equipped++
else
break
if(amount_equipped >= amount_required)
return TRUE
else
unequip_buckle_inhands(user)
return FALSE
/datum/component/riding/proc/unequip_buckle_inhands(mob/living/carbon/user)
var/atom/movable/AM = parent
for(var/obj/item/riding_offhand/O in user.contents)
if(O.parent != AM)
CRASH("RIDING OFFHAND ON WRONG MOB")
continue
if(O.selfdeleting)
continue
else
qdel(O)
return TRUE
/obj/item/riding_offhand
name = "offhand"
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "offhand"
w_class = WEIGHT_CLASS_HUGE
flags_1 = ABSTRACT_1 | DROPDEL_1 | NOBLUDGEON_1
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
var/mob/living/carbon/rider
var/mob/living/parent
var/selfdeleting = FALSE
/obj/item/riding_offhand/dropped()
selfdeleting = TRUE
. = ..()
/obj/item/riding_offhand/equipped()
if(loc != rider)
selfdeleting = TRUE
qdel(src)
. = ..()
/obj/item/riding_offhand/Destroy()
var/atom/movable/AM = parent
if(selfdeleting)
if(rider in AM.buckled_mobs)
AM.unbuckle_mob(rider)
. = ..()
/datum/component/riding
var/next_vehicle_move = 0 //used for move delays
var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower
var/keytype
var/slowed = FALSE
var/slowvalue = 1
var/list/riding_offsets = list() //position_of_user = list(dir = list(px, py)), or RIDING_OFFSET_ALL for a generic one.
var/list/directional_vehicle_layers = list() //["[DIRECTION]"] = layer. Don't set it for a direction for default, set a direction to null for no change.
var/list/directional_vehicle_offsets = list() //same as above but instead of layer you have a list(px, py)
var/list/allowed_turf_typecache
var/list/forbid_turf_typecache //allow typecache for only certain turfs, forbid to allow all but those. allow only certain turfs will take precedence.
var/allow_one_away_from_valid_turf = TRUE //allow moving one tile away from a valid turf but not more.
var/override_allow_spacemove = FALSE
var/drive_verb = "drive"
var/ride_check_rider_incapacitated = FALSE
var/ride_check_rider_restrained = FALSE
var/ride_check_ridden_incapacitated = FALSE
/datum/component/riding/Initialize()
if(!ismovableatom(parent))
. = COMPONENT_INCOMPATIBLE
CRASH("RIDING COMPONENT ASSIGNED TO NON ATOM MOVABLE!")
RegisterSignal(COMSIG_MOVABLE_BUCKLE, .proc/vehicle_mob_buckle)
RegisterSignal(COMSIG_MOVABLE_UNBUCKLE, .proc/vehicle_mob_unbuckle)
RegisterSignal(COMSIG_MOVABLE_MOVED, .proc/vehicle_moved)
/datum/component/riding/proc/vehicle_mob_unbuckle(mob/living/M, force = FALSE)
restore_position(M)
unequip_buckle_inhands(M)
/datum/component/riding/proc/vehicle_mob_buckle(mob/living/M, force = FALSE)
handle_vehicle_offsets()
/datum/component/riding/proc/handle_vehicle_layer()
var/atom/movable/AM = parent
var/static/list/defaults = list(TEXT_NORTH = OBJ_LAYER, TEXT_SOUTH = ABOVE_MOB_LAYER, TEXT_EAST = ABOVE_MOB_LAYER, TEXT_WEST = ABOVE_MOB_LAYER)
. = defaults["[AM.dir]"]
if(directional_vehicle_layers["[AM.dir]"])
. = directional_vehicle_layers["[AM.dir]"]
if(isnull(.)) //you can set it to null to not change it.
. = AM.layer
AM.layer = .
/datum/component/riding/proc/set_vehicle_dir_layer(dir, layer)
directional_vehicle_layers["[dir]"] = layer
/datum/component/riding/proc/vehicle_moved()
var/atom/movable/AM = parent
for(var/i in AM.buckled_mobs)
ride_check(i)
handle_vehicle_offsets()
handle_vehicle_layer()
/datum/component/riding/proc/ride_check(mob/living/M)
var/atom/movable/AM = parent
var/mob/AMM = AM
if((ride_check_rider_restrained && M.restrained(TRUE)) || (ride_check_rider_incapacitated && M.incapacitated(FALSE, TRUE)) || (ride_check_ridden_incapacitated && istype(AMM) && AMM.incapacitated(FALSE, TRUE)))
AM.visible_message("<span class='warning'>[M] falls off of [AM]!</span>")
AM.unbuckle_mob(M)
return TRUE
/datum/component/riding/proc/force_dismount(mob/living/M)
var/atom/movable/AM = parent
AM.unbuckle_mob(M)
/datum/component/riding/proc/handle_vehicle_offsets()
var/atom/movable/AM = parent
var/AM_dir = "[AM.dir]"
var/passindex = 0
if(AM.has_buckled_mobs())
for(var/m in AM.buckled_mobs)
passindex++
var/mob/living/buckled_mob = m
var/list/offsets = get_offsets(passindex)
var/rider_dir = get_rider_dir(passindex)
buckled_mob.setDir(rider_dir)
dir_loop:
for(var/offsetdir in offsets)
if(offsetdir == AM_dir)
var/list/diroffsets = offsets[offsetdir]
buckled_mob.pixel_x = diroffsets[1]
if(diroffsets.len >= 2)
buckled_mob.pixel_y = diroffsets[2]
if(diroffsets.len == 3)
buckled_mob.layer = diroffsets[3]
break dir_loop
var/list/static/default_vehicle_pixel_offsets = list(TEXT_NORTH = list(0, 0), TEXT_SOUTH = list(0, 0), TEXT_EAST = list(0, 0), TEXT_WEST = list(0, 0))
var/px = default_vehicle_pixel_offsets[AM_dir]
var/py = default_vehicle_pixel_offsets[AM_dir]
if(directional_vehicle_offsets[AM_dir])
if(isnull(directional_vehicle_offsets[AM_dir]))
px = AM.pixel_x
py = AM.pixel_y
else
px = directional_vehicle_offsets[AM_dir][1]
py = directional_vehicle_offsets[AM_dir][2]
AM.pixel_x = px
AM.pixel_y = py
/datum/component/riding/proc/set_vehicle_dir_offsets(dir, x, y)
directional_vehicle_offsets["[dir]"] = list(x, y)
//Override this to set your vehicle's various pixel offsets
/datum/component/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer)
. = list(TEXT_NORTH = list(0, 0), TEXT_SOUTH = list(0, 0), TEXT_EAST = list(0, 0), TEXT_WEST = list(0, 0))
if(riding_offsets["[pass_index]"])
. = riding_offsets["[pass_index]"]
else if(riding_offsets["[RIDING_OFFSET_ALL]"])
. = riding_offsets["[RIDING_OFFSET_ALL]"]
/datum/component/riding/proc/set_riding_offsets(index, list/offsets)
if(!islist(offsets))
return FALSE
riding_offsets["[index]"] = offsets
//Override this to set the passengers/riders dir based on which passenger they are.
//ie: rider facing the vehicle's dir, but passenger 2 facing backwards, etc.
/datum/component/riding/proc/get_rider_dir(pass_index)
var/atom/movable/AM = parent
return AM.dir
//KEYS
/datum/component/riding/proc/keycheck(mob/user)
return !keytype || user.is_holding_item_of_type(keytype)
//BUCKLE HOOKS
/datum/component/riding/proc/restore_position(mob/living/buckled_mob)
if(buckled_mob)
buckled_mob.pixel_x = 0
buckled_mob.pixel_y = 0
if(buckled_mob.client)
buckled_mob.client.change_view(CONFIG_GET(string/default_view))
//MOVEMENT
/datum/component/riding/proc/turf_check(turf/next, turf/current)
if(allowed_turf_typecache && !allowed_turf_typecache[next.type])
return (allow_one_away_from_valid_turf && allowed_turf_typecache[current.type])
else if(forbid_turf_typecache && forbid_turf_typecache[next.type])
return (allow_one_away_from_valid_turf && !forbid_turf_typecache[current.type])
return TRUE
/datum/component/riding/proc/handle_ride(mob/user, direction)
var/atom/movable/AM = parent
if(user.incapacitated())
Unbuckle(user)
return
if(world.time < next_vehicle_move)
return
next_vehicle_move = world.time + vehicle_move_delay
if(keycheck(user))
var/turf/next = get_step(AM, direction)
var/turf/current = get_turf(AM)
if(!istype(next) || !istype(current))
return //not happening.
if(!turf_check(next, current))
to_chat(user, "Your \the [AM] can not go onto [next]!")
return
if(!Process_Spacemove(direction) || !isturf(AM.loc))
return
step(AM, direction)
handle_vehicle_layer()
handle_vehicle_offsets()
else
to_chat(user, "<span class='notice'>You'll need the keys in one of your hands to [drive_verb] [AM].</span>")
/datum/component/riding/proc/Unbuckle(atom/movable/M)
addtimer(CALLBACK(parent, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE)
/datum/component/riding/proc/Process_Spacemove(direction)
var/atom/movable/AM = parent
return override_allow_spacemove || AM.has_gravity()
/datum/component/riding/proc/account_limbs(mob/living/M)
if(M.get_num_legs() < 2 && !slowed)
vehicle_move_delay = vehicle_move_delay + slowvalue
slowed = TRUE
else if(slowed)
vehicle_move_delay = vehicle_move_delay - slowvalue
slowed = FALSE
///////Yes, I said humans. No, this won't end well...//////////
/datum/component/riding/human
/datum/component/riding/human/Initialize()
. = ..()
RegisterSignal(COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee)
/datum/component/riding/human/proc/on_host_unarmed_melee(atom/target)
var/mob/living/carbon/human/AM = parent
if(AM.a_intent == INTENT_DISARM && (target in AM.buckled_mobs))
force_dismount(target)
/datum/component/riding/human/handle_vehicle_layer()
var/atom/movable/AM = parent
if(AM.buckled_mobs && AM.buckled_mobs.len)
if(AM.dir == SOUTH)
AM.layer = ABOVE_MOB_LAYER
else
AM.layer = OBJ_LAYER
else
AM.layer = MOB_LAYER
/datum/component/riding/human/force_dismount(mob/living/user)
var/atom/movable/AM = parent
AM.unbuckle_mob(user)
user.Knockdown(60)
user.visible_message("<span class='warning'>[AM] pushes [user] off of them!</span>")
/datum/component/riding/cyborg
/datum/component/riding/cyborg/ride_check(mob/user)
var/atom/movable/AM = parent
if(user.incapacitated())
var/kick = TRUE
if(iscyborg(AM))
var/mob/living/silicon/robot/R = AM
if(R.module && R.module.ride_allow_incapacitated)
kick = FALSE
if(kick)
to_chat(user, "<span class='userdanger'>You fall off of [AM]!</span>")
Unbuckle(user)
return
if(iscarbon(user))
var/mob/living/carbon/carbonuser = user
if(!carbonuser.get_num_arms())
Unbuckle(user)
to_chat(user, "<span class='userdanger'>You can't grab onto [AM] with no hands!</span>")
return
/datum/component/riding/cyborg/handle_vehicle_layer()
var/atom/movable/AM = parent
if(AM.buckled_mobs && AM.buckled_mobs.len)
if(AM.dir == SOUTH)
AM.layer = ABOVE_MOB_LAYER
else
AM.layer = OBJ_LAYER
else
AM.layer = MOB_LAYER
/datum/component/riding/cyborg/get_offsets(pass_index) // list(dir = x, y, layer)
return list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(-6, 3), TEXT_WEST = list( 6, 3))
/datum/component/riding/cyborg/handle_vehicle_offsets()
var/atom/movable/AM = parent
if(AM.has_buckled_mobs())
for(var/mob/living/M in AM.buckled_mobs)
M.setDir(AM.dir)
if(iscyborg(AM))
var/mob/living/silicon/robot/R = AM
if(istype(R.module))
M.pixel_x = R.module.ride_offset_x[dir2text(AM.dir)]
M.pixel_y = R.module.ride_offset_y[dir2text(AM.dir)]
else
..()
/datum/component/riding/cyborg/force_dismount(mob/living/M)
var/atom/movable/AM = parent
AM.unbuckle_mob(M)
var/turf/target = get_edge_target_turf(AM, AM.dir)
var/turf/targetm = get_step(get_turf(AM), AM.dir)
M.Move(targetm)
M.visible_message("<span class='warning'>[M] is thrown clear of [AM]!</span>")
M.throw_at(target, 14, 5, AM)
M.Knockdown(60)
/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1)
var/atom/movable/AM = parent
var/amount_equipped = 0
for(var/amount_needed = amount_required, amount_needed > 0, amount_needed--)
var/obj/item/riding_offhand/inhand = new /obj/item/riding_offhand(user)
inhand.rider = user
inhand.parent = AM
if(user.put_in_hands(inhand, TRUE))
amount_equipped++
else
break
if(amount_equipped >= amount_required)
return TRUE
else
unequip_buckle_inhands(user)
return FALSE
/datum/component/riding/proc/unequip_buckle_inhands(mob/living/carbon/user)
var/atom/movable/AM = parent
for(var/obj/item/riding_offhand/O in user.contents)
if(O.parent != AM)
CRASH("RIDING OFFHAND ON WRONG MOB")
continue
if(O.selfdeleting)
continue
else
qdel(O)
return TRUE
/obj/item/riding_offhand
name = "offhand"
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "offhand"
w_class = WEIGHT_CLASS_HUGE
flags_1 = ABSTRACT_1 | DROPDEL_1 | NOBLUDGEON_1
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
var/mob/living/carbon/rider
var/mob/living/parent
var/selfdeleting = FALSE
/obj/item/riding_offhand/dropped()
selfdeleting = TRUE
. = ..()
/obj/item/riding_offhand/equipped()
if(loc != rider)
selfdeleting = TRUE
qdel(src)
. = ..()
/obj/item/riding_offhand/Destroy()
var/atom/movable/AM = parent
if(selfdeleting)
if(rider in AM.buckled_mobs)
AM.unbuckle_mob(rider)
. = ..()
+37 -9
View File
@@ -104,15 +104,7 @@
else
atomsnowflake += "<b>[D]</b>"
var/formatted_type = "[type]"
if(length(formatted_type) > 25)
var/middle_point = length(formatted_type) / 2
var/splitpoint = findtext(formatted_type,"/",middle_point)
if(splitpoint)
formatted_type = "[copytext(formatted_type,1,splitpoint)]<br>[copytext(formatted_type,splitpoint)]"
else
formatted_type = "Type too long" //No suitable splitpoint (/) found.
var/formatted_type = replacetext("[type]", "/", "<wbr>/")
var/marked
if(holder && holder.marked_datum && holder.marked_datum == D)
marked = "<br><font size='1' color='red'><b>Marked Object</b></font>"
@@ -962,6 +954,42 @@
manipulate_organs(C)
href_list["datumrefresh"] = href_list["editorgans"]
else if(href_list["givetrauma"])
if(!check_rights(0))
return
var/mob/living/carbon/C = locate(href_list["givetrauma"]) in GLOB.mob_list
if(!istype(C))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
var/list/traumas = subtypesof(/datum/brain_trauma)
var/result = input(usr, "Choose the brain trauma to apply","Traumatize") as null|anything in traumas
var/permanent = alert("Do you want to make the trauma unhealable?", "Permanently Traumatize", "Yes", "No")
if(!usr)
return
if(QDELETED(C))
to_chat(usr, "Mob doesn't exist anymore")
return
if(result)
C.gain_trauma(result, permanent)
href_list["datumrefresh"] = href_list["givetrauma"]
else if(href_list["curetraumas"])
if(!check_rights(0))
return
var/mob/living/carbon/C = locate(href_list["curetraumas"]) in GLOB.mob_list
if(!istype(C))
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
C.cure_all_traumas(TRUE, TRUE)
href_list["datumrefresh"] = href_list["curetraumas"]
else if(href_list["hallucinate"])
if(!check_rights(0))
return
@@ -54,8 +54,8 @@ Bonus
else
to_chat(M, "<span class='userdanger'>You can't think straight!</span>")
M.confused = min(100 * power, M.confused + 8)
if(brain_damage && M.getBrainLoss()<=80)
M.adjustBrainLoss(5 * power)
if(brain_damage)
M.adjustBrainLoss(3 * power, 80)
M.updatehealth()
return
@@ -27,7 +27,9 @@ Bonus
symptom_delay_max = 10
var/purge_alcohol = FALSE
var/brain_heal = FALSE
var/trauma_heal = FALSE
threshold_desc = "<b>Resistance 6:</b> Heals brain damage.<br>\
<b>Resistance 9:</b> Heals brain traumas.<br>\
<b>Transmission 8:</b> Purges alcohol in the bloodstream."
/datum/symptom/mind_restoration/Start(datum/disease/advance/A)
@@ -35,6 +37,8 @@ Bonus
return
if(A.properties["resistance"] >= 6) //heal brain damage
brain_heal = TRUE
if(A.properties["resistance"] >= 9) //heal brain traumas
trauma_heal = TRUE
if(A.properties["transmittable"] >= 8) //purge alcohol
purge_alcohol = TRUE
@@ -66,3 +70,9 @@ Bonus
if(brain_heal && A.stage >= 5)
M.adjustBrainLoss(-3)
if(trauma_heal && iscarbon(M))
var/mob/living/carbon/C = M
if(prob(30) && C.has_trauma_type(BRAIN_TRAUMA_SPECIAL))
C.cure_trauma_type(BRAIN_TRAUMA_SPECIAL)
if(prob(10) && C.has_trauma_type(BRAIN_TRAUMA_MILD))
C.cure_trauma_type(BRAIN_TRAUMA_MILD)
+5 -5
View File
@@ -24,15 +24,15 @@
if(prob(2))
to_chat(affected_mob, "<span class='danger'>You don't feel like yourself.</span>")
if(prob(5))
affected_mob.adjustBrainLoss(1)
affected_mob.adjustBrainLoss(1, 170)
affected_mob.updatehealth()
if(3)
if(prob(2))
affected_mob.emote("stare")
if(prob(2))
affected_mob.emote("drool")
if(prob(10) && affected_mob.getBrainLoss()<=98)//shouldn't retard you to death now
affected_mob.adjustBrainLoss(2)
if(prob(10))
affected_mob.adjustBrainLoss(2, 170)
affected_mob.updatehealth()
if(prob(2))
to_chat(affected_mob, "<span class='danger'>Your try to remember something important...but can't.</span>")
@@ -42,8 +42,8 @@
affected_mob.emote("stare")
if(prob(2))
affected_mob.emote("drool")
if(prob(15) && affected_mob.getBrainLoss()<=98) //shouldn't retard you to death now
affected_mob.adjustBrainLoss(3)
if(prob(15))
affected_mob.adjustBrainLoss(3, 170)
affected_mob.updatehealth()
if(prob(2))
to_chat(affected_mob, "<span class='danger'>Strange buzzing fills your head, removing all thoughts.</span>")
+1 -1
View File
@@ -58,7 +58,7 @@
"<span class='userdanger'>[A] kicks your head, knocking you out!</span>")
playsound(get_turf(A), 'sound/weapons/genhit1.ogg', 50, 1, -1)
D.SetSleeping(300)
D.adjustBrainLoss(25)
D.adjustBrainLoss(15, 150)
return 1
/datum/martial_art/cqc/proc/Pressure(mob/living/carbon/human/A, mob/living/carbon/human/D)

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