Merge branch 'master' into Safety-Tether

This commit is contained in:
haha26315
2022-09-14 21:18:24 -04:00
22 changed files with 430 additions and 248 deletions
+201 -76
View File
@@ -2809,7 +2809,7 @@
/area/security/range)
"ahY" = (
/obj/effect/landmark/carpspawn,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"ahZ" = (
/obj/structure/railing{
@@ -6734,7 +6734,7 @@
/area/crew_quarters/theatre)
"aOX" = (
/obj/structure/ore_box,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"aPc" = (
/obj/effect/turf_decal/stripes/line{
@@ -8910,9 +8910,12 @@
/turf/open/floor/plating/asteroid/layenia,
/area/layenia/cave)
"biu" = (
/obj/structure/flora/crystal/small/growth,
/turf/open/indestructible/layenia/sand{
initial_gas_mix = "o2=22;n2=82;TEMP=293.15"
/obj/structure/railing{
dir = 1
},
/turf/open/floor/plasteel/dark{
dir = 4;
icon_state = "darkfull_plate"
},
/area/hallway/primary/aft/upper)
"biA" = (
@@ -19034,7 +19037,7 @@
/obj/effect/turf_decal/weather/grass/line{
dir = 6
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"cXg" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
@@ -19367,7 +19370,7 @@
/area/ai_monitored/turret_protected/ai)
"daS" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"daT" = (
/obj/structure/chair/office/dark{
@@ -21098,6 +21101,9 @@
name = "scrubbers pipe"
},
/obj/machinery/door/firedoor/heavy,
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/dark{
icon_state = "darkfull_whole_alt"
},
@@ -27505,7 +27511,7 @@
dir = 1;
name = "visible"
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"ewF" = (
/obj/machinery/space_heater,
@@ -27527,7 +27533,7 @@
dir = 1;
name = "visible"
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"ewN" = (
/obj/effect/turf_decal/loading_area{
@@ -27916,7 +27922,7 @@
/area/quartermaster/miningdock)
"eyS" = (
/obj/structure/fence,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"eyW" = (
/obj/effect/turf_decal/tile/neutral{
@@ -28725,7 +28731,7 @@
/obj/structure/fence/door{
dir = 4
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"eGn" = (
/obj/effect/turf_decal/loading_area{
@@ -29967,6 +29973,19 @@
"ePg" = (
/turf/closed/wall/r_wall,
/area/maintenance/solars/port/fore)
"ePs" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/obj/machinery/door/poddoor/preopen{
dir = 8;
id = "bridgespace";
name = "bridge external shutters"
},
/obj/machinery/door/firedoor{
dir = 8
},
/turf/open/floor/plating,
/area/hallway/primary/aft/upper)
"ePt" = (
/obj/effect/turf_decal/loading_area{
color = "#55391A";
@@ -31522,7 +31541,7 @@
icon_state = "drain_corner";
name = "drain"
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"fbB" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3{
@@ -34344,7 +34363,7 @@
},
/area/engine/atmos)
"fxA" = (
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"fxC" = (
/obj/machinery/power/apc{
@@ -38259,7 +38278,11 @@
},
/area/crew_quarters/dorms/upper)
"gdN" = (
/turf/open/indestructible/layenia/sand{
/obj/structure/flora/crystal/small/growth,
/obj/structure/sign/poster/random{
pixel_x = 32
},
/turf/open/floor/plating/asteroid/layenia/sand{
initial_gas_mix = "o2=22;n2=82;TEMP=293.15"
},
/area/hallway/primary/aft/upper)
@@ -44641,7 +44664,7 @@
dir = 1
},
/obj/structure/flora/crystal/small/growth,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"hdo" = (
/obj/effect/turf_decal/tile/neutral{
@@ -45415,7 +45438,7 @@
/area/layenia)
"hjz" = (
/obj/item/shovel,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"hjD" = (
/obj/effect/turf_decal/stripes/line{
@@ -45705,7 +45728,7 @@
/area/quartermaster/sorting)
"hlA" = (
/obj/effect/decal/cleanable/vomit,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"hlB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
@@ -46068,7 +46091,7 @@
/area/crew_quarters/heads/chief)
"hny" = (
/obj/structure/bonfire,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"hnA" = (
/obj/structure/closet,
@@ -46474,6 +46497,15 @@
},
/turf/open/floor/engine,
/area/engine/engineering/reactor_core)
"hqM" = (
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/dark{
dir = 8;
icon_state = "darkfull_trim"
},
/area/bridge)
"hqO" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
@@ -47918,6 +47950,12 @@
name = "parquet"
},
/area/crew_quarters/bar/cafe)
"hBJ" = (
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/dark,
/area/bridge)
"hBM" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
name = "scrubbers pipe"
@@ -51392,7 +51430,7 @@
dir = 8;
pixel_x = -7
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"iah" = (
/obj/effect/turf_decal/tile/neutral{
@@ -63172,6 +63210,21 @@
},
/turf/open/floor/circuit/telecomms,
/area/science/xenobiology)
"jNZ" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "0-2"
},
/obj/machinery/door/poddoor/preopen{
dir = 8;
id = "bridgespace";
name = "bridge external shutters"
},
/obj/machinery/door/firedoor{
dir = 8
},
/turf/open/floor/plating,
/area/hallway/primary/aft/upper)
"jOa" = (
/obj/structure/table,
/obj/item/stock_parts/subspace/filter,
@@ -63387,13 +63440,13 @@
/area/security/locker)
"jPP" = (
/obj/structure/flora/crystal/small/pile,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"jPU" = (
/obj/effect/turf_decal/weather/grass/line{
dir = 10
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"jQa" = (
/obj/structure/lattice/catwalk,
@@ -65589,7 +65642,7 @@
/area/security/locker)
"khn" = (
/obj/structure/flora/crystal/small/growth,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"khp" = (
/obj/machinery/door/firedoor{
@@ -69638,7 +69691,7 @@
/area/hallway/primary/fore/upper)
"kLI" = (
/obj/effect/turf_decal/stripes/corner,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"kLQ" = (
/obj/effect/turf_decal/tile/neutral{
@@ -70516,7 +70569,7 @@
icon_state = "drain_corner";
name = "drain"
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"kUe" = (
/obj/effect/decal/cleanable/oil{
@@ -71156,7 +71209,7 @@
/obj/effect/turf_decal/weather/grass/line{
dir = 4
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"kZl" = (
/obj/machinery/light{
@@ -73915,7 +73968,7 @@
/obj/effect/turf_decal/weather/grass/line{
dir = 1
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"lyu" = (
/obj/structure/closet/secure_closet/personal,
@@ -74663,8 +74716,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/dark/side{
dir = 4
/turf/open/floor/plasteel/dark{
dir = 8;
icon_state = "darkfull_trim"
},
/area/bridge)
"lDk" = (
@@ -75494,7 +75548,7 @@
/obj/effect/turf_decal/weather/grass/line{
dir = 5
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"lJV" = (
/obj/effect/turf_decal/stripes/line,
@@ -76296,7 +76350,7 @@
/obj/effect/turf_decal/weather/grass/line{
dir = 8
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"lRm" = (
/obj/effect/turf_decal/tile/neutral{
@@ -76515,7 +76569,7 @@
dir = 4
},
/obj/structure/flora/tree/jungle/small,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"lTe" = (
/obj/effect/turf_decal/loading_area{
@@ -78009,6 +78063,12 @@
icon_state = "darkfull_plate"
},
/area/security/checkpoint/science)
"mfV" = (
/turf/open/floor/plasteel/dark{
dir = 4;
icon_state = "darkfull_trim"
},
/area/hallway/primary/aft/upper)
"mge" = (
/obj/structure/chair{
dir = 8
@@ -81029,7 +81089,7 @@
/area/hallway/primary/port/upper)
"mBS" = (
/obj/effect/turf_decal/weather/grass/line,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"mBU" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
@@ -82416,7 +82476,7 @@
icon_state = "drain_corner";
name = "drain"
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"mNh" = (
/obj/structure/cable{
@@ -82500,6 +82560,9 @@
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer3{
name = "air supply pipe"
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/dark,
/area/bridge)
"mNt" = (
@@ -82537,7 +82600,7 @@
/turf/open/floor/plasteel/white,
/area/medical/psych/ward)
"mNC" = (
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"mNF" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
@@ -83399,6 +83462,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
name = "air supply pipe"
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel/dark/side{
dir = 8
},
@@ -92768,6 +92834,9 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
name = "air scrubber"
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/dark,
/area/bridge)
"omB" = (
@@ -93056,6 +93125,9 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3{
name = "air vent"
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/dark,
/area/bridge)
"ooF" = (
@@ -93545,7 +93617,7 @@
},
/area/construction/mining/aux_base)
"orv" = (
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"orw" = (
/obj/structure/table,
@@ -95114,7 +95186,7 @@
icon_state = "drain_corner";
name = "drain"
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"oDa" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
@@ -101051,13 +101123,7 @@
},
/area/science/circuit)
"ppi" = (
/obj/structure/railing{
dir = 1
},
/obj/item/twohanded/required/kirbyplants/random,
/obj/structure/sign/poster/random{
pixel_x = 32
},
/turf/open/floor/plasteel/dark{
dir = 4;
icon_state = "darkfull_plate"
@@ -102201,7 +102267,7 @@
pixel_x = 7
},
/obj/structure/flora/crystal/small/pile,
/turf/open/indestructible/layenia/sand{
/turf/open/floor/plating/asteroid/layenia/sand{
initial_gas_mix = "o2=22;n2=82;TEMP=293.15"
},
/area/hallway/primary/aft/upper)
@@ -108708,10 +108774,21 @@
/turf/open/floor/plasteel/white,
/area/medical/virology)
"qun" = (
/obj/structure/sign/nanotrasen{
pixel_y = 31
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
dir = 8;
name = "air supply pipe"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 4;
name = "scrubbers pipe"
},
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/dark{
dir = 4;
icon_state = "darkfull_trim"
},
/turf/open/floor/plasteel/dark/corner,
/area/bridge)
"quv" = (
/obj/structure/cable{
@@ -110873,7 +110950,7 @@
/area/hallway/primary/aft)
"qKb" = (
/obj/effect/decal/cleanable/oil,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"qKd" = (
/obj/structure/chair/comfy/black{
@@ -114995,7 +115072,7 @@
dir = 8;
name = "visible"
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"rkc" = (
/obj/machinery/light{
@@ -117858,8 +117935,8 @@
pixel_y = -1
},
/obj/item/twohanded/required/kirbyplants/random,
/turf/open/floor/plasteel/dark/corner{
dir = 4
/turf/open/floor/plasteel/dark/side{
dir = 1
},
/area/bridge)
"rFz" = (
@@ -122108,6 +122185,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
name = "air supply pipe"
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel/dark/side{
dir = 8
},
@@ -123648,6 +123728,30 @@
icon_state = "floor_plate"
},
/area/crew_quarters/dorms/upper)
"stF" = (
/obj/machinery/door/airlock/command/glass{
dir = 4;
name = "Ferry Docking Airlock";
req_access_txt = "19"
},
/obj/structure/cable{
icon_state = "1-4"
},
/obj/structure/cable{
icon_state = "2-4"
},
/obj/machinery/door/poddoor/preopen{
dir = 8;
id = "bridgespace";
name = "bridge external shutters"
},
/obj/machinery/door/firedoor{
dir = 8
},
/turf/open/floor/plasteel/dark{
icon_state = "darkfull_whole_alt"
},
/area/hallway/primary/aft/upper)
"stI" = (
/obj/structure/ladder,
/turf/open/floor/plating,
@@ -125799,7 +125903,7 @@
icon_state = "drain";
name = "drain"
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"sIe" = (
/obj/machinery/button/door{
@@ -126205,7 +126309,7 @@
/obj/structure/fence/corner{
dir = 6
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia)
"sKU" = (
/obj/structure/railing{
@@ -129353,7 +129457,13 @@
dir = 1;
name = "air supply pipe"
},
/turf/open/floor/plasteel/dark,
/obj/structure/cable{
icon_state = "2-4"
},
/turf/open/floor/plasteel/dark{
dir = 4;
icon_state = "darkfull_trim"
},
/area/bridge)
"tju" = (
/obj/structure/cable{
@@ -129950,7 +130060,7 @@
/area/crew_quarters/heads/cmo)
"tmZ" = (
/obj/item/picket_sign,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"tnl" = (
/obj/effect/turf_decal/tile/blue{
@@ -136972,6 +137082,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
name = "air supply pipe"
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel/dark,
/area/bridge)
"ujn" = (
@@ -138162,7 +138275,7 @@
dir = 4;
pixel_x = 7
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cave)
"usj" = (
/obj/effect/decal/cleanable/cobweb{
@@ -141742,7 +141855,7 @@
/obj/effect/turf_decal/weather/grass/line{
dir = 9
},
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"uUm" = (
/obj/structure/chair/bench/metal/right{
@@ -146738,6 +146851,9 @@
/obj/machinery/camera/autoname{
dir = 8
},
/obj/structure/cable{
icon_state = "1-8"
},
/turf/open/floor/plasteel/dark/side{
dir = 8
},
@@ -157982,7 +158098,13 @@
dir = 4;
name = "scrubbers pipe"
},
/turf/open/floor/plasteel/dark,
/obj/structure/cable{
icon_state = "4-8"
},
/turf/open/floor/plasteel/dark{
dir = 8;
icon_state = "darkfull_trim"
},
/area/bridge)
"xhO" = (
/obj/structure/trash_pile,
@@ -160102,7 +160224,7 @@
/area/science/research)
"xyC" = (
/obj/structure/flora/tree/jungle/small,
/turf/open/indestructible/layenia/sand,
/turf/open/floor/plating/asteroid/layenia/sand,
/area/layenia/cloudlayer)
"xyH" = (
/obj/machinery/light{
@@ -163318,6 +163440,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
name = "air supply pipe"
},
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plasteel/dark/side{
dir = 8
},
@@ -257175,7 +257300,7 @@ jcF
kcC
bHk
kFC
bhk
kFC
bhk
qZk
bca
@@ -257947,8 +258072,8 @@ ydu
dgu
dgu
dgu
dgu
dgu
ydu
ydu
ydu
ydu
xFG
@@ -258205,7 +258330,7 @@ fSd
pxr
gdN
biu
fSd
mfV
ppi
wNm
beE
@@ -258461,9 +258586,9 @@ xep
xep
xep
xep
xep
xep
xep
jNZ
stF
ePs
xep
bQr
ojU
@@ -258718,8 +258843,8 @@ uMt
sVQ
jUY
dsv
qun
xYB
lzr
hqM
rFs
xep
xIn
@@ -258976,7 +259101,7 @@ xFo
xFo
vAh
wPH
vor
hBJ
sGW
xep
rLw
@@ -259233,7 +259358,7 @@ wZA
xFo
vAh
wPH
vor
hBJ
sGW
xep
jPA
@@ -259747,7 +259872,7 @@ wZA
nRt
rHk
wPH
vor
hBJ
iuc
xep
xQy
@@ -260261,7 +260386,7 @@ wZA
xFo
vAh
wPH
vor
hBJ
dqp
xep
bfa
@@ -260518,7 +260643,7 @@ xFo
xFo
vAh
wPH
vor
hBJ
dqp
xep
aXf
@@ -260775,7 +260900,7 @@ vAh
vAh
dsv
lzr
vor
hBJ
ozL
xep
oFj
@@ -261032,7 +261157,7 @@ xYB
xOb
xYB
xfx
vor
hBJ
oAY
xep
xQy
@@ -262053,7 +262178,7 @@ pPj
yfh
eic
ujI
xhM
fFc
skM
wKH
wYk
@@ -262824,7 +262949,7 @@ eic
qhD
eic
lBm
fFc
qun
kGO
wKH
uyq
+74
View File
@@ -0,0 +1,74 @@
// This list was originally created to narrow the list of safe areas for mobs to spawn in the station. If an area is considered too dangerous for something to spawn in, kindly add it to this list.
GLOBAL_LIST_INIT(basic_blacklisted_area_list, typecacheof(list(
/area/space,
/area/shuttle,
/area/mine,
/area/holodeck,
/area/ruin,
/area/hallway,
/area/hallway/primary,
/area/hallway/secondary,
/area/hallway/secondary/entry,
/area/engine/supermatter,
/area/engine/atmospherics_engine,
/area/engine/engineering/reactor_core,
/area/engine/engineering/reactor_control,
/area/ai_monitored/turret_protected,
/area/layenia/cloudlayer,
/area/asteroid/nearstation,
/area/science/server,
/area/science/explab,
/area/science/xenobiology,
/area/security/processing)))
// Performance intensive check for picking an area with turfs that are considered the safest possible to spawn something in.
//Only use this for creatures, as it considers people around, temperature, area size and more.
/proc/get_safest_spawn_turfs(list/blacklisted_areas, spawncount)
var/list/area/stationAreas = list()
var/list/area/eligible_areas = list()
var/validFound = FALSE
var/list/turf/validTurfs = list()
var/area/pickedArea
if(!blacklisted_areas.len)
blacklisted_areas = GLOB.basic_blacklisted_area_list
for(var/area/A in world) // Get the areas in the Z level
if(A.z == SSmapping.station_start)
stationAreas += A
for(var/area/place in stationAreas) // first we check if it's a valid area
if(place.outdoors)
continue
if(place.areasize < spawncount * 2)
continue
if(is_type_in_typecache(place, blacklisted_areas))
continue
eligible_areas += place
for(var/area/place in eligible_areas) // now we check if there are people in that area
var/numOfPeople
for(var/mob/living/carbon/H in place)
numOfPeople++
break
if(numOfPeople > 0)
eligible_areas -= place // removes this area from the list of eligible areas, it has people in it
while(!validFound || !eligible_areas.len)
pickedArea = pick_n_take(eligible_areas)
var/list/turf/t = get_area_turfs(pickedArea, SSmapping.station_start)
for(var/turf/thisTurf in t) // now we check if it's a closed turf, cold turf or occupied turf and yeet it
if(isopenturf(thisTurf))
var/turf/open/tempGet = thisTurf
if(tempGet.air.temperature <= T0C)
t -= thisTurf
continue
if(isclosedturf(thisTurf))
t -= thisTurf
else
for(var/obj/O in thisTurf)
if(O.density && !(istype(O, /obj/structure/table)))
t -= thisTurf
break
if(t.len >= spawncount) //Is the number of available turfs equal or bigger than spawncount?
validFound = TRUE
validTurfs = t
return validTurfs
if(!validFound)
message_admins("A function attempted to get safe turfs, but we found none.")
return null
+1 -1
View File
@@ -44,7 +44,7 @@ SUBSYSTEM_DEF(ticker)
var/start_at
var/gametime_offset = 432000 //Deciseconds to add to world.time for station time.
var/station_time_rate_multiplier = 20 //factor of station time progressal vs real time.
var/station_time_rate_multiplier = 10 //factor of station time progressal vs real time.
var/totalPlayers = 0 //used for pregame stats on statpanel
var/totalPlayersReady = 0 //used for pregame stats on statpanel
-35
View File
@@ -75,19 +75,6 @@
if(istype(AM))
playsound(src,sound,50,1)
/turf/open/indestructible/concrete
name = "concrete"
icon = 'icons/turf/floors.dmi'
icon_state = "concrete"
baseturfs = /turf/open/floor/plating/asteroid/layenia
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = TRUE
/turf/open/indestructible/concrete/smooth
icon_state = "concrete2"
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = TRUE
/turf/open/indestructible/cobble/side
icon_state = "cobble_side"
@@ -106,28 +93,6 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
/turf/open/indestructible/layenia/crystal
name = "Lattice Crystal"
desc = "A glowing azure crystal, with strange properties to make things float."
icon = 'icons/turf/floors/crystal_floor.dmi'
icon_state = "mapping"
baseturfs = /turf/open/indestructible/layenia/crystal
slowdown = 1
light_range = 4
light_power = 0.5
barefootstep = FOOTSTEP_HARD_BAREFOOT
clawfootstep = FOOTSTEP_HARD_CLAW
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
light_color = LIGHT_COLOR_BLUE
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = TRUE
smooth = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE
canSmoothWith = list(/turf/open/indestructible/layenia/crystal)
/turf/open/indestructible/layenia/crystal/garden
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
planetary_atmos = TRUE
/turf/open/indestructible/necropolis
name = "necropolis floor"
desc = "It's regarding you suspiciously."
@@ -365,43 +365,3 @@
/turf/open/floor/plating/asteroid/snow/atmosphere
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = FALSE
//Layenia stuff
/turf/open/floor/plating/asteroid/layenia
gender = PLURAL //trans rights
name = "crimson Rock"
desc = "A cold rock, rusted scarlet in color."
icon = 'icons/turf/floors.dmi'
baseturfs = /turf/open/floor/plating/asteroid/layenia
icon_state = "layenia"
icon_plating = "layenia"
initial_gas_mix = FROZEN_ATMOS
slowdown = 1
environment_type = "layenia"
flags_1 = NONE
heat_capacity = INFINITY //Makes it so no matter the heat, it will not burn out.
planetary_atmos = TRUE
burnt_states = null
bullet_sizzle = TRUE
bullet_bounce_sound = null
digResult = /obj/item/stack/ore/glass/basalt
floor_variance = 50 //This means 50% chance of variating from the default tile.
quantity_of_available_tiles = 5
//light_range = 2
//light_power = 0.15
//light_color = LIGHT_COLOR_WHITE
/turf/open/floor/plating/asteroid/layenia/Initialize()
. = ..()
//We no longer randomize the icon state here. That is done by the supercall in our parent, asteroid.
set_layenia_light(src)
/turf/open/floor/plating/asteroid/layenia/garden
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
planetary_atmos = TRUE
/proc/set_layenia_light(turf/open/floor/B)
switch(B.icon_state)
if("layenia3", "layenia4")
B.set_light(2, 0.6, LIGHT_COLOR_BLUE) //more light
-12
View File
@@ -539,15 +539,3 @@
baseturfs = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
defer_change = 1
/turf/closed/mineral/layenia
name = "Crimson rock"
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/layeniarocks.dmi'
icon_state = "layenia"
smooth = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = null
baseturfs = /turf/open/floor/plating/asteroid/layenia
initial_gas_mix = FROZEN_ATMOS
environment_type = "layenia"
turf_type = /turf/open/floor/plating/asteroid/layenia
+29
View File
@@ -1040,3 +1040,32 @@
message_admins("<span class='adminnotice'>[key_name_admin(usr)] told everybody to man up.</span>")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Man Up Global")
/client/proc/cmd_admin_preload_resource(F as icon)
set category = "Special Verbs"
set name = "Preload Resource"
if(!check_rights(R_ADMIN))
return
var/resource = fcopy_rsc(F)
for(var/thing in GLOB.clients)
var/client/C = thing
if (!C)
continue
C.Export("##action=load_rsc", resource)
message_admins("<span class='adminnotice'>[key_name_admin(usr)] preloaded resouce [F].</span>")
/client/proc/cmd_admin_preload_sound(F as sound)
set category = "Special Verbs"
set name = "Preload Sound"
if(!check_rights(R_ADMIN))
return
var/resource = fcopy_rsc(F)
for(var/thing in GLOB.clients)
var/client/C = thing
if (!C)
continue
C.Export("##action=load_rsc", resource)
message_admins("<span class='adminnotice'>[key_name_admin(usr)] preloaded sound [F].</span>")
+2
View File
@@ -57,6 +57,8 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin())
/client/proc/cmd_admin_local_narrate, /*sends text to all mobs within view of atom*/
/client/proc/cmd_admin_man_up, //CIT CHANGE - adds man up verb
/client/proc/cmd_admin_man_up_global, //CIT CHANGE - ditto
/client/proc/cmd_admin_preload_resource,
/client/proc/cmd_admin_preload_sound,
/client/proc/cmd_admin_create_centcom_report,
/client/proc/cmd_change_command_name,
/client/proc/cmd_admin_check_player_exp, /* shows players by playtime */
+1 -1
View File
@@ -67,7 +67,7 @@
var/whitelist_type = ""
//load characters loadout on spawn
var loadout = TRUE
var/loadout = TRUE
//Only override this proc
//H is usually a human unless an /equip override transformed it
+1 -1
View File
@@ -212,7 +212,7 @@
var/nightshift_enabled = FALSE //Currently in night shift mode?
var/nightshift_allowed = TRUE //Set to FALSE to never let this light get switched to night mode.
var/nightshift_brightness = 7
var/nightshift_brightness = 8
var/nightshift_light_power = 0.45
var/nightshift_light_color = "#dafcff"
+76 -7
View File
@@ -1,14 +1,83 @@
/turf/open/indestructible/layenia/sand
/turf/open/indestructible/concrete
name = "concrete"
icon = 'icons/turf/floors.dmi'
icon_state = "concrete"
baseturfs = /turf/open/floor/plating/asteroid/layenia
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = TRUE
/turf/open/indestructible/concrete/smooth
icon_state = "concrete2"
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = TRUE
/turf/open/indestructible/layenia/crystal
name = "Lattice Crystal"
desc = "A glowing azure crystal, with strange properties to make things float."
icon = 'hyperstation/icons/turf/floors/layeniacrystal.dmi'
icon_state = "mapping"
baseturfs = /turf/open/indestructible/layenia/crystal
slowdown = 1
light_range = 4
light_power = 0.5
barefootstep = FOOTSTEP_HARD_BAREFOOT
clawfootstep = FOOTSTEP_HARD_CLAW
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
light_color = LIGHT_COLOR_BLUE
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = TRUE
smooth = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE
canSmoothWith = list(/turf/open/indestructible/layenia/crystal)
/turf/open/indestructible/layenia/crystal/garden
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
planetary_atmos = TRUE
/turf/open/floor/plating/asteroid/layenia
gender = PLURAL //trans rights
name = "crimson Rock"
desc = "A cold rock, rusted scarlet in color."
icon = 'hyperstation/icons/turf/floors/layenia.dmi'
baseturfs = /turf/open/floor/plating/asteroid/layenia
icon_state = "layenia"
icon_plating = "layenia"
initial_gas_mix = FROZEN_ATMOS
slowdown = 1
environment_type = "layenia"
flags_1 = NONE
heat_capacity = INFINITY //Makes it so no matter the heat, it will not burn out.
planetary_atmos = TRUE
burnt_states = null
bullet_sizzle = TRUE
bullet_bounce_sound = null
digResult = /obj/item/stack/ore/glass/basalt
floor_variance = 50 //This means 50% chance of variating from the default tile.
quantity_of_available_tiles = 5
//light_range = 2
//light_power = 0.15
//light_color = LIGHT_COLOR_WHITE
/turf/open/floor/plating/asteroid/layenia/Initialize()
. = ..()
//We no longer randomize the icon state here. That is done by the supercall in our parent, asteroid.
set_layenia_light(src)
/turf/open/floor/plating/asteroid/layenia/garden
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
planetary_atmos = TRUE
/turf/open/floor/plating/asteroid/layenia/sand
name = "\improper crimson sand"
desc = "A reddish sand."
icon = 'hyperstation/icons/turf/floors/layeniasand.dmi'
icon_state = "mapping"
baseturfs = /turf/open/indestructible/layenia/crystal
slowdown = 1
baseturfs = /turf/open/floor/plating/asteroid/layenia/sand
barefootstep = FOOTSTEP_SAND
clawfootstep = FOOTSTEP_SAND
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = TRUE
smooth = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE
canSmoothWith = list(/turf/open/indestructible/layenia/sand)
canSmoothWith = list(/turf/open/floor/plating/asteroid/layenia/sand)
/proc/set_layenia_light(turf/open/floor/B)
switch(B.icon_state)
if("layenia3", "layenia4")
B.set_light(2, 0.6, LIGHT_COLOR_BLUE) //more light
@@ -0,0 +1,11 @@
/turf/closed/mineral/layenia
name = "Crimson rock"
icon = 'hyperstation/icons/turf/floors/layeniamining.dmi'
smooth_icon = 'hyperstation/icons/turf/floors/layeniarocks.dmi'
icon_state = "layenia"
smooth = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = null
baseturfs = /turf/open/floor/plating/asteroid/layenia
initial_gas_mix = FROZEN_ATMOS
environment_type = "layenia"
turf_type = /turf/open/floor/plating/asteroid/layenia
+3 -66
View File
@@ -322,26 +322,6 @@
/datum/round_event/mimic_infestation
announceWhen = 200
var/static/list/mimic_station_areas_blacklist = typecacheof(/area/space,
/area/shuttle,
/area/mine,
/area/holodeck,
/area/ruin,
/area/hallway,
/area/hallway/primary,
/area/hallway/secondary,
/area/hallway/secondary/entry,
/area/engine/supermatter,
/area/engine/atmospherics_engine,
/area/engine/engineering/reactor_core,
/area/engine/engineering/reactor_control,
/area/ai_monitored/turret_protected,
/area/layenia/cloudlayer,
/area/asteroid/nearstation,
/area/science/server,
/area/science/explab,
/area/science/xenobiology,
/area/security/processing)
var/spawncount = 1
fakeable = FALSE
@@ -353,54 +333,11 @@
priority_announce("Unidentified lifesigns detected aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg')
/datum/round_event/mimic_infestation/start()
var/list/area/stationAreas = list()
var/list/area/eligible_areas = list()
for(var/area/A in world) // Get the areas in the Z level
if(A.z == SSmapping.station_start)
stationAreas += A
for(var/area/place in stationAreas) // first we check if it's a valid area
if(place.outdoors)
continue
if(place.areasize < 16)
continue
if(is_type_in_typecache(place, mimic_station_areas_blacklist))
continue
eligible_areas += place
for(var/area/place in eligible_areas) // now we check if there are people in that area
var/numOfPeople
for(var/mob/living/carbon/H in place)
numOfPeople++
break
if(numOfPeople > 0)
eligible_areas -= place
var/validFound = FALSE
var/list/turf/validTurfs = list()
var/area/pickedArea
while(!validFound || !eligible_areas.len)
pickedArea = pick_n_take(eligible_areas)
var/list/turf/t = get_area_turfs(pickedArea, SSmapping.station_start)
for(var/turf/thisTurf in t) // now we check if it's a closed turf, cold turf or occupied turf and yeet it
if(isopenturf(thisTurf))
var/turf/open/tempGet = thisTurf
if(tempGet.air.temperature <= T0C)
t -= thisTurf
continue
if(isclosedturf(thisTurf))
t -= thisTurf
else
for(var/obj/O in thisTurf)
if(O.density && !(istype(O, /obj/structure/table)))
t -= thisTurf
break
if(t.len >= spawncount) //Is the number of available turfs equal or bigger than spawncount?
validFound = TRUE
validTurfs = t
if(!eligible_areas.len)
var/list/turf/validTurfs = get_safest_spawn_turfs(GLOB.basic_blacklisted_area_list, spawncount)
if(!validTurfs.len)
message_admins("No eligible areas for spawning mimics.")
return WAITING_FOR_SOMETHING
var/area/pickedArea = get_area(pick(validTurfs))
notify_ghosts("A group of mimics has spawned in [pickedArea]!", source=pickedArea, action=NOTIFY_ATTACK, flashwindow = FALSE)
while(spawncount > 0 && validTurfs.len)
spawncount--
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 KiB

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 39 KiB

@@ -75,13 +75,13 @@
//christ this was a mistake, but it's here just in case someone wants to selectively fix
/************* Lizard compatable snoots ***********
/datum/sprite_accessory/snouts/bird
name = "Beak"
name = "Beak (Hyper)"
icon_state = "bird"
icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
color_src = MATRIXED
/datum/sprite_accessory/snouts/bigbeak
name = "Big Beak"
name = "Big Beak (Hyper)"
icon_state = "bigbeak"
icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
color_src = MATRIXED
@@ -163,6 +163,12 @@
icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
color_src = MATRIXED
/datum/sprite_accessory/snouts/owlbird
name = "Owl (Hyper)"
icon_state = "owlbird"
icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
color_src = MATRIXED
/datum/sprite_accessory/snouts/otie
name = "Otie"
icon_state = "otie"
@@ -187,8 +193,14 @@
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
/datum/sprite_accessory/snouts/sharpebird
name = "Sharpened, beak (Hyper)"
icon_state = "sharpebird"
icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
color_src = MATRIXED
/datum/sprite_accessory/snouts/toucan
name = "Toucan"
name = "Toucan (Hyper)"
icon_state = "toucan"
icon = 'modular_citadel/icons/mob/mam_snouts.dmi'
color_src = MATRIXED
@@ -760,11 +772,11 @@ datum/sprite_accessory/ears/human/gret
*******************************************/
/datum/sprite_accessory/mam_snouts/bird
name = "Beak"
name = "Beak (Hyper)"
icon_state = "bird"
/datum/sprite_accessory/mam_snouts/bigbeak
name = "Big Beak"
name = "Big Beak (Hyper)"
icon_state = "bigbeak"
/datum/sprite_accessory/mam_snouts/bug
@@ -906,6 +918,10 @@ datum/sprite_accessory/ears/human/gret
name = "Orca"
icon_state = "orca"
/datum/sprite_accessory/mam_snouts/owlbird
name = "Owl (Hyper)"
icon_state = "owlbird"
/datum/sprite_accessory/mam_snouts/pede
name = "Scolipede"
icon_state = "pede"
@@ -918,8 +934,12 @@ datum/sprite_accessory/ears/human/gret
name = "Shark"
icon_state = "shark"
/datum/sprite_accessory/mam_snouts/sharpebird
name = "Sharpened, beak (Hyper)"
icon_state = "sharpebird"
/datum/sprite_accessory/mam_snouts/toucan
name = "Toucan"
name = "Toucan (Hyper)"
icon_state = "toucan"
/datum/sprite_accessory/mam_snouts/sharp
@@ -1058,11 +1078,11 @@ datum/sprite_accessory/ears/human/gret
*************but higher up*****************/
/datum/sprite_accessory/mam_snouts/fbird
name = "Beak (Top)"
name = "Beak (Top) (Hyper)"
icon_state = "fbird"
/datum/sprite_accessory/mam_snouts/fbigbeak
name = "Big Beak (Top)"
name = "Big Beak (Top) (Hyper)"
icon_state = "fbigbeak"
/datum/sprite_accessory/mam_snouts/fbug
@@ -1137,7 +1157,7 @@ datum/sprite_accessory/ears/human/gret
icon_state = "fshark"
/datum/sprite_accessory/mam_snouts/ftoucan
name = "Toucan (Top)"
name = "Toucan (Top) (Hyper)"
icon_state = "ftoucan"
/datum/sprite_accessory/mam_snouts/fsharp
Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

+2
View File
@@ -159,6 +159,7 @@
#include "code\__HELPERS\typelists.dm"
#include "code\__HELPERS\unique_ids.dm"
#include "code\__HELPERS\unsorted.dm"
#include "code\__HELPERS\unsorted_hyper.dm"
#include "code\__HELPERS\verbs.dm"
#include "code\__HELPERS\view.dm"
#include "code\__HELPERS\sorts\__main.dm"
@@ -3135,6 +3136,7 @@
#include "hyperstation\code\game\objects\structures\sauna_oven.dm"
#include "hyperstation\code\game\objects\structures\tables_racks.dm"
#include "hyperstation\code\game\turfs\open.dm"
#include "hyperstation\code\game\turfs\simulated\minerals.dm"
#include "hyperstation\code\game\turfs\simulated\floor\fancy_floor.dm"
#include "hyperstation\code\game\turfs\simulated\wall\mineral_walls.dm"
#include "hyperstation\code\gamemode\traitor_lewd.dm"