Merge remote-tracking branch 'Citadel-Station-13/master' into Garlic

This commit is contained in:
Artur
2020-03-31 19:42:35 +03:00
605 changed files with 4990 additions and 5304 deletions

View File

@@ -1,4 +1,4 @@
FROM tgstation/byond:513.1503 as base
FROM tgstation/byond:513.1508 as base
FROM base as build_base

View File

@@ -1,4 +1,35 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ab" = (
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ac" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ad" = (
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/turf/open/floor/plating,
/area/engine/engineering)
"aT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/button/door{
@@ -166,13 +197,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"wt" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"xx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -320,16 +344,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"HW" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"In" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -366,13 +380,6 @@
/obj/machinery/power/am_control_unit,
/turf/open/floor/plating,
/area/engine/engineering)
"JC" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"JZ" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
@@ -525,16 +532,6 @@
/obj/effect/turf_decal/box/red,
/turf/open/floor/engine,
/area/engine/engineering)
"YY" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"Zb" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
@@ -862,7 +859,7 @@ xJ
gf
fh
dN
YY
aa
MD
Ch
dz
@@ -890,7 +887,7 @@ LO
Eu
Pg
cP
JC
ab
WI
rj
dz
@@ -918,7 +915,7 @@ NS
xx
fh
zW
JC
ab
WI
rj
dz
@@ -946,7 +943,7 @@ yo
me
aT
Aw
JC
ab
WI
rj
dz
@@ -973,7 +970,7 @@ MJ
jH
FK
Ch
wt
ad
Ch
rj
rj
@@ -1026,7 +1023,7 @@ MJ
MJ
"}
(17,1,1) = {"
wt
ad
Zz
Wf
Ox
@@ -1082,7 +1079,7 @@ MJ
MJ
"}
(19,1,1) = {"
wt
ad
eJ
Zx
nW
@@ -1141,7 +1138,7 @@ MJ
jH
Nz
Ch
wt
ad
Ch
rj
rj
@@ -1170,7 +1167,7 @@ fh
WX
HQ
Aw
JC
ab
WI
rj
dz
@@ -1198,7 +1195,7 @@ fh
kh
fh
fh
JC
ab
WI
rj
dz
@@ -1226,7 +1223,7 @@ fh
kh
uG
cP
JC
ab
WI
rj
dz
@@ -1254,7 +1251,7 @@ eA
FY
mB
Rp
HW
ac
Mi
Ch
dz

View File

@@ -1,4 +1,52 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/turf/open/floor/plasteel,
/area/engine/engineering)
"ab" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/turf/open/floor/plasteel,
/area/engine/engineering)
"ac" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/turf/open/floor/plasteel,
/area/engine/engineering)
"ad" = (
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/turf/open/floor/plasteel,
/area/engine/engineering)
"ae" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen,
/turf/open/floor/plasteel,
/area/engine/engineering)
"af" = (
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/button/door{
@@ -35,16 +83,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"dW" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ea" = (
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/engine,
@@ -299,23 +337,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"wt" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"xg" = (
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"xx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -542,16 +563,6 @@
/obj/structure/closet/radiation,
/turf/open/floor/plasteel,
/area/engine/engineering)
"HW" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"In" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -582,19 +593,6 @@
},
/turf/open/floor/plating,
/area/engine/engineering)
"JC" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"Kg" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -825,19 +823,6 @@
},
/turf/closed/wall,
/area/engine/engineering)
"YY" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"Zb" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
@@ -1169,7 +1154,7 @@ xJ
gf
fh
dN
YY
aa
MD
Ch
Pt
@@ -1197,7 +1182,7 @@ LO
Eu
Pg
cP
JC
ab
tv
rj
Pt
@@ -1225,7 +1210,7 @@ NS
xx
fh
zW
dW
ac
ea
rj
Pt
@@ -1253,7 +1238,7 @@ yo
me
aT
Aw
JC
ab
tv
rj
Og
@@ -1280,7 +1265,7 @@ MJ
jH
FK
Ch
wt
af
tE
rj
rj
@@ -1333,7 +1318,7 @@ dz
MJ
"}
(17,1,1) = {"
wt
af
Zz
Wf
Ox
@@ -1389,7 +1374,7 @@ MJ
MJ
"}
(19,1,1) = {"
wt
af
eJ
Zx
nW
@@ -1448,7 +1433,7 @@ MJ
jH
Nz
Ch
wt
af
tE
rj
rj
@@ -1477,7 +1462,7 @@ AF
WX
HQ
Aw
JC
ab
tv
rj
Og
@@ -1505,7 +1490,7 @@ fh
kh
fh
fh
dW
ac
ea
rj
Pt
@@ -1533,7 +1518,7 @@ fh
kh
uG
cP
xg
ad
tv
rj
Pt
@@ -1561,7 +1546,7 @@ eA
FY
mB
Rp
HW
ae
Mi
Ch
Pt

View File

@@ -1,4 +1,18 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ab" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -13,6 +27,76 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"ad" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ae" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/item/tank/internals/plasma,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"af" = (
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ag" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ah" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"at" = (
/obj/structure/closet/crate/bin,
/obj/effect/turf_decal/stripes/line{
@@ -178,21 +262,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"df" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"dl" = (
/obj/structure/cable{
icon_state = "1-4"
@@ -600,21 +669,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"nW" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/item/tank/internals/plasma,
/turf/open/floor/plating,
/area/engine/supermatter)
"ou" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
@@ -636,20 +690,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"px" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"pA" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
@@ -737,19 +777,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/engine,
/area/engine/supermatter)
"re" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"rt" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
dir = 4
@@ -1091,19 +1118,6 @@
/obj/machinery/meter,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"Cn" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"CH" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/engineering/glass{
@@ -1571,20 +1585,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"Nw" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"Nx" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -2385,9 +2385,9 @@ VP
EX
Vg
KX
px
nW
Cn
aa
ae
ag
fj
xB
WI
@@ -2609,9 +2609,9 @@ Ws
Pa
wz
fj
Nw
df
re
ad
af
ah
KX
ni
lw

View File

@@ -1,4 +1,11 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/engine,
/area/engine/supermatter)
"ab" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -1805,13 +1812,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"Vz" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/engine,
/area/engine/supermatter)
"VP" = (
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/simple/green/visible{
@@ -2320,7 +2320,7 @@ Vg
KX
px
nW
Vz
aa
cN
xB
WI
@@ -2348,7 +2348,7 @@ lQ
KX
RA
tE
Vz
aa
cN
Xy
Ml
@@ -2376,7 +2376,7 @@ uz
RA
ti
YY
Vz
aa
cN
JK
WT
@@ -2488,7 +2488,7 @@ RA
Wf
mW
bq
Vz
aa
cN
JK
WT
@@ -2516,7 +2516,7 @@ wz
fj
RA
cY
Vz
aa
cN
vO
Np
@@ -2544,7 +2544,7 @@ Ey
fj
Cn
df
Vz
aa
cN
JK
lw

View File

@@ -1,4 +1,18 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ab" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -13,6 +27,76 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"ad" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ae" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/item/tank/internals/plasma,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"af" = (
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ag" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ah" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"at" = (
/obj/structure/closet/crate/bin,
/obj/effect/turf_decal/stripes/line{
@@ -178,21 +262,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"df" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"dl" = (
/obj/structure/cable{
icon_state = "1-4"
@@ -591,21 +660,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"nW" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/item/tank/internals/plasma,
/turf/open/floor/plating,
/area/engine/supermatter)
"ou" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
@@ -627,20 +681,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"px" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"pA" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
@@ -728,19 +768,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/engine,
/area/engine/supermatter)
"re" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"rt" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
dir = 4
@@ -1065,19 +1092,6 @@
/obj/machinery/meter,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"Cn" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"CH" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/engineering/glass{
@@ -1546,20 +1560,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"Nw" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"Nx" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -2335,9 +2335,9 @@ VP
EX
Vg
KX
px
nW
Cn
aa
ae
ag
fj
xB
WI
@@ -2559,9 +2559,9 @@ Ws
Pa
wz
fj
Nw
df
re
ad
af
ah
KX
ni
lw

View File

@@ -1,4 +1,18 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ab" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -13,6 +27,76 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"ad" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ae" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/item/tank/internals/plasma,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"af" = (
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ag" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ah" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"at" = (
/obj/structure/closet/crate/bin,
/obj/effect/turf_decal/stripes/line{
@@ -190,21 +274,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"df" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/oil,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"dl" = (
/obj/structure/cable{
icon_state = "1-4"
@@ -619,21 +688,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"nW" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/item/tank/internals/plasma,
/turf/open/floor/plating,
/area/engine/supermatter)
"ou" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
@@ -655,20 +709,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"px" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"pA" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 4
@@ -770,19 +810,6 @@
},
/turf/open/floor/engine,
/area/engine/supermatter)
"re" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"rt" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 1
@@ -1127,19 +1154,6 @@
/obj/machinery/meter,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"Cn" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"CH" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/engineering/glass{
@@ -1605,20 +1619,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"Nw" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"Nx" = (
/obj/effect/turf_decal/stripes/line{
dir = 9
@@ -2384,11 +2384,11 @@ bW
VP
rt
Vg
px
px
nW
Cn
Cn
aa
aa
ae
ag
ag
xB
WI
IE
@@ -2608,12 +2608,12 @@ hy
js
Pa
xB
Nw
Nw
df
re
re
Vg
ad
ad
af
ah
ah
vO
lw
bH
JV

View File

@@ -1,4 +1,67 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"ab" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ac" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ad" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"ae" = (
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"af" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aT" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/button/door{
@@ -348,23 +411,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"wt" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"xg" = (
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"xx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -478,19 +524,6 @@
},
/turf/open/floor/plating,
/area/engine/engineering)
"Bh" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/structure/cable{
icon_state = "2-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"Bj" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -605,16 +638,6 @@
/obj/item/clothing/gloves/color/yellow,
/turf/open/floor/plasteel,
/area/engine/engineering)
"HW" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"In" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -645,16 +668,6 @@
},
/turf/open/floor/plating,
/area/engine/engineering)
"JC" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"JZ" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
@@ -968,19 +981,6 @@
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"YY" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"Zb" = (
/obj/effect/turf_decal/stripes/line{
dir = 10
@@ -1318,7 +1318,7 @@ xJ
gf
fh
dN
YY
ab
MD
Ch
Pt
@@ -1346,7 +1346,7 @@ LO
Eu
Pg
cP
Bh
ac
tv
rj
Pt
@@ -1374,7 +1374,7 @@ NS
xx
fh
zW
Bh
ac
tv
rj
Pt
@@ -1402,7 +1402,7 @@ yo
me
aT
Aw
JC
ad
WI
rj
Og
@@ -1429,7 +1429,7 @@ MJ
jH
FK
Ch
wt
aa
tE
rj
rj
@@ -1482,7 +1482,7 @@ dz
MJ
"}
(17,1,1) = {"
wt
aa
Zz
Wf
Ox
@@ -1538,7 +1538,7 @@ MJ
MJ
"}
(19,1,1) = {"
wt
aa
eJ
Zx
nW
@@ -1597,7 +1597,7 @@ MJ
jH
Nz
Ch
wt
aa
tE
rj
rj
@@ -1626,7 +1626,7 @@ AF
WX
HQ
Aw
JC
ad
WI
rj
Og
@@ -1654,7 +1654,7 @@ fh
kh
fh
fh
Bh
ac
tv
rj
Pt
@@ -1682,7 +1682,7 @@ fh
kh
uG
cP
xg
ae
tv
rj
Pt
@@ -1710,7 +1710,7 @@ eA
FY
mB
Rp
HW
af
Mi
Ch
Pt

File diff suppressed because it is too large Load Diff

View File

@@ -124,6 +124,33 @@
},
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"aaq" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aar" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aas" = (
/obj/docking_port/stationary/random{
id = "pod_lavaland1";
@@ -143,10 +170,265 @@
/obj/effect/landmark/xeno_spawn,
/turf/open/space,
/area/solar/starboard/fore)
"aav" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/decal/cleanable/oil,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aaw" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aax" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engpa";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aay" = (
/obj/structure/cable{
icon_state = "2-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engpa";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aaz" = (
/obj/effect/decal/cleanable/oil,
/obj/structure/cable{
icon_state = "1-4"
},
/obj/structure/cable{
icon_state = "2-4"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engpa";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aaA" = (
/obj/structure/cable{
icon_state = "1-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engpa";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aaB" = (
/obj/structure/cable{
icon_state = "1-2"
},
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engpa";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aaC" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engpa";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aaD" = (
/obj/structure/cable{
icon_state = "1-4"
},
/obj/structure/cable{
icon_state = "2-4"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engpa";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aaE" = (
/obj/structure/lattice/catwalk,
/turf/open/space,
/area/solar/starboard/fore)
"aaF" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 4
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/atmospherics_engine)
"aaG" = (
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/structure/cable/white{
icon_state = "0-2"
},
/obj/structure/cable/white{
icon_state = "2-4"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/atmospherics_engine)
"aaH" = (
/obj/structure/cable/white{
icon_state = "0-8"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/atmospherics_engine)
"aaI" = (
/obj/structure/dresser,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/sign/poster/contraband/scum{
pixel_x = 32
},
/turf/open/floor/plasteel/cafeteria,
/area/maintenance/port/fore)
"aaJ" = (
/obj/item/twohanded/required/kirbyplants/random,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/structure/sign/poster/official/nt_storm_officer{
pixel_y = -32
},
/turf/open/floor/plasteel,
/area/security/main)
"aaK" = (
/obj/machinery/flasher/portable,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/sign/poster/official/nt_storm{
pixel_y = 32
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"aaL" = (
/obj/structure/rack,
/obj/item/gun/energy/ionrifle,
/obj/item/clothing/suit/armor/laserproof,
/obj/item/gun/energy/temperature/security,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/sign/poster/official/ion_rifle{
pixel_x = 32
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"aaM" = (
/obj/machinery/vending/wardrobe/medi_wardrobe,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/sign/poster/official/medical_green_cross{
pixel_y = 32
},
/turf/open/floor/plasteel,
/area/medical/storage)
"aaN" = (
/obj/structure/bed/roller,
/obj/machinery/iv_drip,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/structure/sign/poster/official/medical_green_cross{
pixel_y = 32
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"aaO" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -154,6 +436,30 @@
"aaP" = (
/turf/closed/wall/mineral/plastitanium,
/area/hallway/secondary/entry)
"aaQ" = (
/obj/structure/sign/poster/official/medical_green_cross,
/turf/closed/wall,
/area/medical/medbay/central)
"aaR" = (
/obj/structure/table/wood,
/obj/item/assembly/igniter,
/obj/item/assembly/igniter,
/obj/item/assembly/timer{
pixel_x = 3;
pixel_y = 3
},
/obj/effect/decal/cleanable/dirt,
/obj/structure/sign/poster/contraband/scum{
pixel_x = 32
},
/obj/structure/sign/poster/contraband/scum{
pixel_x = 32
},
/obj/structure/sign/poster/contraband/scum{
pixel_x = 32
},
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"aaS" = (
/turf/closed/wall/mineral/plastitanium,
/area/construction/mining/aux_base)
@@ -9068,13 +9374,6 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
"avk" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 4
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/atmospherics_engine)
"avl" = (
/obj/structure/lattice/catwalk,
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{
@@ -10232,20 +10531,6 @@
},
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
"axv" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plating,
/area/engine/supermatter)
"axw" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -10303,19 +10588,6 @@
},
/turf/open/floor/engine,
/area/engine/supermatter)
"axD" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/supermatter)
"axE" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -10427,12 +10699,6 @@
},
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"axN" = (
/obj/structure/dresser,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/cafeteria,
/area/maintenance/port/fore)
"axO" = (
/obj/structure/table/wood,
/obj/item/camera,
@@ -10979,20 +11245,6 @@
},
/turf/open/floor/circuit/green,
/area/engine/supermatter)
"ayM" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/oil,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ayN" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -11587,19 +11839,6 @@
},
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
"azS" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plating,
/area/engine/supermatter)
"azT" = (
/obj/machinery/power/rad_collector/anchored,
/obj/machinery/atmospherics/pipe/manifold/general/visible{
@@ -16677,20 +16916,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
/area/engine/atmospherics_engine)
"aID" = (
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/structure/cable/white{
icon_state = "0-2"
},
/obj/structure/cable/white{
icon_state = "2-4"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/atmospherics_engine)
"aIE" = (
/obj/machinery/door/firedoor,
/obj/structure/cable/white{
@@ -16710,14 +16935,6 @@
},
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
"aIF" = (
/obj/structure/cable/white{
icon_state = "0-8"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/atmospherics_engine)
"aIG" = (
/obj/machinery/portable_atmospherics/canister/toxins,
/obj/effect/turf_decal/bot,
@@ -41291,14 +41508,6 @@
},
/turf/open/floor/plasteel,
/area/security/main)
"bwj" = (
/obj/item/twohanded/required/kirbyplants/random,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
},
/turf/open/floor/plasteel,
/area/security/main)
"bwk" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -60266,23 +60475,6 @@
},
/turf/open/floor/plasteel,
/area/ai_monitored/security/armory)
"bXR" = (
/obj/structure/rack,
/obj/item/gun/energy/ionrifle,
/obj/item/clothing/suit/armor/laserproof,
/obj/item/gun/energy/temperature/security,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"bXS" = (
/obj/structure/window/reinforced{
dir = 8
@@ -66492,16 +66684,6 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plating,
/area/engine/engineering)
"chv" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engpa";
name = "Engineering Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/engineering)
"chw" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -67523,19 +67705,6 @@
},
/turf/open/floor/plating,
/area/engine/engineering)
"cjf" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engpa";
name = "Engineering Chamber Shutters"
},
/obj/structure/cable{
icon_state = "2-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/engineering)
"cjg" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
@@ -68306,26 +68475,6 @@
},
/turf/open/floor/plating/airless,
/area/space/nearstation)
"ckA" = (
/obj/effect/decal/cleanable/oil,
/obj/machinery/door/poddoor/shutters/preopen{
id = "engpa";
name = "Engineering Chamber Shutters"
},
/obj/structure/cable{
icon_state = "1-4"
},
/obj/structure/cable{
icon_state = "2-4"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/engineering)
"ckB" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -69094,19 +69243,6 @@
},
/turf/open/floor/plating/airless,
/area/space/nearstation)
"clV" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engpa";
name = "Engineering Chamber Shutters"
},
/obj/structure/cable{
icon_state = "1-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/engineering)
"clW" = (
/obj/structure/rack,
/obj/item/crowbar,
@@ -70125,20 +70261,6 @@
/obj/machinery/status_display/evac,
/turf/closed/wall/r_wall,
/area/engine/engineering)
"cnE" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engpa";
name = "Engineering Chamber Shutters"
},
/obj/structure/cable{
icon_state = "1-2"
},
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"cnF" = (
/obj/machinery/requests_console{
department = "Chapel Office";
@@ -71572,22 +71694,6 @@
},
/turf/open/floor/plating,
/area/engine/engineering)
"cqw" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engpa";
name = "Engineering Chamber Shutters"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"cqx" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -76839,25 +76945,6 @@
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plating/airless,
/area/space/nearstation)
"czs" = (
/obj/machinery/door/poddoor/shutters/preopen{
id = "engpa";
name = "Engineering Chamber Shutters"
},
/obj/structure/cable{
icon_state = "1-4"
},
/obj/structure/cable{
icon_state = "2-4"
},
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/engineering)
"czt" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -85482,14 +85569,6 @@
},
/turf/open/floor/plasteel,
/area/medical/storage)
"cNO" = (
/obj/machinery/vending/wardrobe/medi_wardrobe,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel,
/area/medical/storage)
"cNP" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk,
@@ -87271,17 +87350,6 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cRa" = (
/obj/structure/bed/roller,
/obj/machinery/iv_drip,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cRb" = (
/obj/structure/bed/roller,
/obj/machinery/iv_drip,
@@ -103990,17 +104058,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/wood,
/area/crew_quarters/abandoned_gambling_den)
"duk" = (
/obj/structure/table/wood,
/obj/item/assembly/igniter,
/obj/item/assembly/igniter,
/obj/item/assembly/timer{
pixel_x = 3;
pixel_y = 3
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"dul" = (
/obj/structure/table,
/obj/item/stack/packageWrap,
@@ -151484,10 +151541,10 @@ car
cbV
cdJ
car
chv
cjf
ckA
clV
aax
aay
aaz
aaA
cnC
cpa
cqs
@@ -151495,10 +151552,10 @@ cqr
ctq
cuR
cnC
cjf
czs
clV
chv
aay
aaD
aaA
aax
car
cFO
cbV
@@ -152002,13 +152059,13 @@ chx
cjh
ckC
clX
cnE
aaB
cpc
cqu
cqr
cts
cuT
cnE
aaB
clX
czt
cAL
@@ -152040,7 +152097,7 @@ dof
dmi
dry
dta
duk
aaR
dvY
dod
dmi
@@ -152458,9 +152515,9 @@ asq
atO
auX
awf
axv
axv
azS
aaq
aaq
aaw
awi
aCk
aDn
@@ -152518,9 +152575,9 @@ cjn
clZ
cnF
car
cqw
aaC
car
cqw
aaC
car
car
cxF
@@ -154514,16 +154571,16 @@ asy
atW
avf
awi
axD
ayM
axD
aar
aav
aar
awf
aCp
aDs
aEv
aFE
aHh
aID
aaG
aKb
aLv
aMG
@@ -155037,7 +155094,7 @@ aDt
aEx
aFG
aHj
aIF
aaH
aKd
aLx
aMG
@@ -155797,8 +155854,8 @@ aad
alT
alT
alT
avk
avk
aaF
aaF
alT
alT
azZ
@@ -159140,7 +159197,7 @@ asL
aue
avt
aws
axN
aaI
ayY
aAc
aBo
@@ -170534,7 +170591,7 @@ cNz
dbm
dcX
dev
cPy
aaQ
dhe
diz
dkp
@@ -171296,7 +171353,7 @@ cKE
bsE
cNE
cPy
cRa
aaN
cSK
cUE
cQX
@@ -174892,7 +174949,7 @@ cIc
cAm
cKO
cMm
cNO
aaM
vEq
cRi
cSV
@@ -180771,7 +180828,7 @@ bFP
bHI
bJC
bLs
bNp
aaK
bNp
bNp
bTi
@@ -181018,7 +181075,7 @@ bpp
bru
btt
buQ
bwj
aaJ
bhd
byO
bAs
@@ -181804,7 +181861,7 @@ bPA
bRw
bTk
bVr
bXR
aaL
bZY
cbL
bLs

View File

@@ -53,6 +53,17 @@
"aaf" = (
/turf/closed/wall/r_wall,
/area/security/brig)
"aag" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/caution/stand_clear,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plasteel/dark,
/area/engine/supermatter)
"aah" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/preopen{
@@ -72321,17 +72332,6 @@
},
/turf/open/floor/plasteel/showroomfloor,
/area/ai_monitored/security/armory)
"cin" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/caution/stand_clear,
/turf/open/floor/plasteel/dark,
/area/engine/supermatter)
"cio" = (
/obj/effect/turf_decal/tile/red{
dir = 4
@@ -122951,9 +122951,9 @@ coc
azE
brn
aLF
cin
cin
cin
aag
aag
aag
aLF
cut
cuO
@@ -125007,9 +125007,9 @@ cos
aAd
bFh
aLF
cin
cin
cin
aag
aag
aag
aLF
cuA
cuW

View File

@@ -2,10 +2,77 @@
"aaa" = (
/turf/open/space/basic,
/area/space)
"aab" = (
/obj/item/radio/intercom{
name = "Station Intercom (General)";
pixel_y = 24
},
/obj/structure/rack,
/obj/item/grenade/barrier{
pixel_x = -3;
pixel_y = 1
},
/obj/item/grenade/barrier,
/obj/item/grenade/barrier{
pixel_x = 3;
pixel_y = -1
},
/obj/item/grenade/barrier{
pixel_x = 6;
pixel_y = -2
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/sign/poster/official/nt_storm_officer{
pixel_x = -32
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"aac" = (
/obj/effect/landmark/carpspawn,
/turf/open/space,
/area/space)
"aad" = (
/obj/structure/rack,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/head/helmet/alt,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/head/helmet/alt,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/head/helmet/alt,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/sign/poster/official/nt_storm{
pixel_x = 32
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"aae" = (
/obj/structure/cable{
icon_state = "1-2"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aaf" = (
/obj/structure/lattice,
/turf/open/space,
@@ -246,6 +313,19 @@
},
/turf/open/floor/plating,
/area/security/prison)
"aaM" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable{
icon_state = "1-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aaN" = (
/obj/structure/cable{
icon_state = "0-2"
@@ -288,6 +368,58 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
"aaU" = (
/obj/structure/cable{
icon_state = "1-2"
},
/obj/item/crowbar,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aaV" = (
/obj/structure/cable/yellow{
icon_state = "1-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/obj/effect/landmark/start/station_engineer,
/turf/open/floor/plasteel,
/area/engine/engineering)
"aaW" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/door/poddoor/shutters/window{
id = "armory";
name = "Armoury Shutters"
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"aaX" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/landmark/start/station_engineer,
/turf/open/floor/plasteel,
/area/engine/engineering)
"aaY" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -322,6 +454,20 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/security/prison)
"abd" = (
/obj/machinery/vending/cola/random,
/obj/structure/sign/poster/official/pda_ad600{
pixel_x = -32
},
/obj/structure/sign/poster/official/pda_ad800{
pixel_x = -32;
pixel_y = 32
},
/obj/structure/sign/poster/official/pda_ad{
pixel_y = 32
},
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/command)
"abe" = (
/turf/closed/wall,
/area/security/prison)
@@ -376,6 +522,14 @@
/obj/item/canvas/twentythreeXtwentythree,
/turf/open/floor/plasteel,
/area/security/prison)
"abk" = (
/obj/structure/kitchenspike_frame,
/obj/effect/decal/cleanable/blood/gibs/old,
/obj/structure/sign/poster/contraband/scum{
pixel_y = -32
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
"abl" = (
/obj/structure/table,
/obj/machinery/computer/libraryconsole/bookmanagement,
@@ -445,6 +599,25 @@
},
/turf/open/floor/plasteel/cafeteria,
/area/security/prison)
"abt" = (
/obj/machinery/vending/hydroseeds{
slogan_delay = 700
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/sign/poster/official/hydro_ad{
pixel_x = -32
},
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
"abu" = (
/obj/docking_port/stationary{
dwidth = 1;
@@ -521,6 +694,16 @@
/obj/structure/chair/stool,
/turf/open/floor/plasteel,
/area/security/prison)
"abE" = (
/obj/machinery/hydroponics/constructable,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/structure/sign/poster/official/hydro_ad{
pixel_y = -32
},
/turf/open/floor/plasteel,
/area/hydroponics)
"abF" = (
/obj/structure/table,
/obj/structure/cable/yellow{
@@ -542,6 +725,30 @@
/obj/item/toy/cards/deck,
/turf/open/floor/plasteel,
/area/security/prison)
"abH" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/light{
dir = 1
},
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/structure/sign/poster/official/medical_green_cross{
pixel_y = 32
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"abI" = (
/obj/structure/cable/yellow{
icon_state = "2-4"
@@ -723,6 +930,16 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/security/prison)
"acd" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/sign/poster/official/medical_green_cross{
pixel_x = -32
},
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"ace" = (
/obj/machinery/vending/sustenance{
desc = "A vending machine normally reserved for work camps.";
@@ -1388,6 +1605,22 @@
},
/turf/open/floor/plating,
/area/crew_quarters/fitness/recreation)
"adk" = (
/obj/structure/sign/poster/contraband/scum{
pixel_y = -32
},
/turf/open/floor/plating,
/area/maintenance/fore)
"adl" = (
/obj/structure/closet/crate{
icon_state = "crateopen"
},
/obj/item/storage/box/donkpockets,
/obj/structure/sign/poster/contraband/scum{
pixel_y = -32
},
/turf/open/floor/plating,
/area/maintenance/fore)
"adm" = (
/obj/structure/table,
/obj/item/flashlight/lamp,
@@ -1568,6 +1801,35 @@
},
/turf/open/space,
/area/space/nearstation)
"adH" = (
/obj/structure/closet/wardrobe/grey,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/structure/sign/poster/official/fashion{
pixel_y = -32
},
/obj/structure/sign/poster/official/fashion{
pixel_y = -32
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/locker)
"adI" = (
/obj/structure/rack,
/obj/item/hatchet,
/obj/item/reagent_containers/blood/random,
/obj/structure/sign/poster/contraband/scum{
pixel_y = -32
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"adJ" = (
/obj/item/radio/intercom{
name = "Station Intercom (General)";
@@ -2918,37 +3180,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"afZ" = (
/obj/item/radio/intercom{
name = "Station Intercom (General)";
pixel_y = 24
},
/obj/structure/rack,
/obj/item/grenade/barrier{
pixel_x = -3;
pixel_y = 1
},
/obj/item/grenade/barrier,
/obj/item/grenade/barrier{
pixel_x = 3;
pixel_y = -1
},
/obj/item/grenade/barrier{
pixel_x = 6;
pixel_y = -2
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"aga" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -3427,26 +3658,6 @@
},
/turf/open/floor/plasteel/dark,
/area/security/prison)
"agQ" = (
/obj/structure/rack,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/head/helmet/alt,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/head/helmet/alt,
/obj/item/clothing/suit/armor/bulletproof,
/obj/item/clothing/head/helmet/alt,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"agR" = (
/obj/machinery/airalarm{
dir = 4;
@@ -4781,23 +4992,6 @@
},
/turf/open/floor/plasteel/dark,
/area/security/warden)
"ajs" = (
/obj/machinery/door/poddoor/shutters{
id = "armory";
name = "armory shutters"
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"ajt" = (
/obj/structure/closet{
name = "Evidence Closet 5"
@@ -11663,13 +11857,6 @@
},
/turf/open/floor/plasteel/dark,
/area/security/brig)
"awA" = (
/obj/structure/closet/crate{
icon_state = "crateopen"
},
/obj/item/storage/box/donkpockets,
/turf/open/floor/plating,
/area/maintenance/fore)
"awB" = (
/obj/structure/reagent_dispensers/watertank,
/obj/item/storage/box/lights/mixed,
@@ -16876,11 +17063,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aGW" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/landmark/start/station_engineer,
/turf/open/floor/plasteel,
/area/engine/engineering)
"aGX" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
@@ -21786,20 +21968,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aRq" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/effect/landmark/start/station_engineer,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable{
icon_state = "1-8"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aRr" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -22834,15 +23002,6 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"aTF" = (
/obj/structure/cable/yellow{
icon_state = "1-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 10
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aTG" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -23483,20 +23642,6 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/locker)
"aUO" = (
/obj/structure/closet/wardrobe/grey,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/locker)
"aUP" = (
/obj/structure/closet/wardrobe/white,
/obj/effect/turf_decal/tile/neutral{
@@ -26034,19 +26179,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aZJ" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aZK" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/machinery/shower{
@@ -39514,10 +39646,6 @@
"bzJ" = (
/turf/closed/wall,
/area/hallway/secondary/command)
"bzK" = (
/obj/machinery/vending/cola/random,
/turf/open/floor/plasteel/dark,
/area/hallway/secondary/command)
"bzL" = (
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
@@ -53582,22 +53710,6 @@
},
/turf/open/floor/wood,
/area/crew_quarters/theatre)
"ccp" = (
/obj/machinery/vending/hydroseeds{
slogan_delay = 700
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
"ccq" = (
/obj/structure/table,
/obj/item/book/manual/hydroponics_pod_people,
@@ -56716,27 +56828,6 @@
},
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"cik" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/light{
dir = 1
},
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cil" = (
/obj/structure/cable/yellow{
icon_state = "2-8"
@@ -61846,12 +61937,6 @@
/obj/item/gun/syringe/dart,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"csb" = (
/obj/structure/rack,
/obj/item/hatchet,
/obj/item/reagent_containers/blood/random,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"csc" = (
/obj/machinery/iv_drip,
/obj/item/roller,
@@ -80107,27 +80192,6 @@
/obj/structure/lattice/catwalk,
/turf/open/space,
/area/science/xenobiology)
"djt" = (
/obj/structure/cable{
icon_state = "1-2"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"djx" = (
/obj/structure/cable{
icon_state = "1-2"
},
/obj/item/crowbar,
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"djz" = (
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/obj/machinery/door/airlock/external{
@@ -81817,11 +81881,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/wood,
/area/security/vacantoffice)
"hvt" = (
/obj/structure/kitchenspike_frame,
/obj/effect/decal/cleanable/blood/gibs/old,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"hyP" = (
/obj/machinery/door/airlock/external{
name = "Escape Pod Two"
@@ -99850,7 +99909,7 @@ dux
iLj
dvt
bXE
hvt
abk
dux
dux
dux
@@ -105768,7 +105827,7 @@ cdr
cew
cfL
bXK
cik
abH
cjK
clj
cmr
@@ -106515,7 +106574,7 @@ bsM
bun
bwi
bkz
bzK
abd
bBz
bDa
bEE
@@ -110319,7 +110378,7 @@ aaa
aaf
aeq
aeq
afZ
aab
agR
ahE
aiA
@@ -110394,7 +110453,7 @@ cdG
caq
cgb
chg
chg
acd
chg
clx
cmD
@@ -111607,7 +111666,7 @@ afX
agc
dBX
agc
ajs
aaW
ajz
akI
amc
@@ -111861,7 +111920,7 @@ aaa
aaf
aeq
aeq
agQ
aad
ahC
ahI
aeq
@@ -115529,7 +115588,7 @@ bWH
bYc
bZq
caG
ccp
abt
bSS
ceZ
cgo
@@ -116750,7 +116809,7 @@ agq
agq
aje
alb
aje
adk
agq
aur
aqb
@@ -117034,7 +117093,7 @@ aOt
aQU
aSg
aTt
aUO
adH
aUM
boW
aZt
@@ -117272,7 +117331,7 @@ ary
asR
aje
auc
awA
adl
axC
ayK
aAa
@@ -117842,7 +117901,7 @@ bWQ
soe
bWQ
caL
ccv
abE
bST
csg
cgq
@@ -121195,7 +121254,7 @@ dwX
ciL
ciL
cou
csb
adI
dvY
mjJ
krD
@@ -123201,7 +123260,7 @@ axY
aPY
aRn
aSt
aTF
aaV
aUY
aWA
aYp
@@ -123962,7 +124021,7 @@ aBK
aCS
aEo
aFw
aGW
aHY
aHY
aHY
aKB
@@ -123970,7 +124029,7 @@ aMd
aNr
aOP
dCw
aRq
aaM
aSw
aTI
aVb
@@ -124233,7 +124292,7 @@ aTJ
dfX
aWD
aVc
aZJ
aaX
bbz
bcK
bel
@@ -126275,7 +126334,7 @@ ddZ
ded
del
des
djt
aae
daY
daZ
dbb
@@ -126283,7 +126342,7 @@ aMk
aNv
dfk
dfq
djt
aae
dfG
dfQ
dfZ
@@ -126532,7 +126591,7 @@ aBQ
dee
aEr
des
djt
aae
daY
daZ
dbb
@@ -126540,7 +126599,7 @@ dfa
aNv
dfk
daY
djx
aaU
dfG
cXz
aVe
@@ -126789,7 +126848,7 @@ aBQ
dee
aEr
aKL
djt
aae
daY
deS
dbb
@@ -126797,7 +126856,7 @@ aMk
aNv
dfm
daY
djt
aae
dbg
dfR
dga

View File

@@ -950,6 +950,23 @@
},
/turf/open/floor/plasteel/dark,
/area/bridge)
"abn" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "1-2"
},
/obj/structure/cable/white{
icon_state = "0-8"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"abo" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -1257,6 +1274,20 @@
},
/turf/open/floor/plasteel,
/area/science/mixing)
"abQ" = (
/obj/structure/cable/white{
icon_state = "0-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/gravity_generator)
"abR" = (
/obj/structure/lattice,
/turf/open/space,
@@ -1638,6 +1669,54 @@
},
/turf/open/floor/plasteel,
/area/maintenance/starboard)
"acz" = (
/obj/structure/cable/white{
icon_state = "0-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"acA" = (
/obj/structure/cable/white,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/gravity_generator)
"acB" = (
/obj/structure/cable/white,
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"acC" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"acD" = (
/obj/item/pickaxe/emergency,
/turf/open/floor/plating/asteroid,
@@ -2076,6 +2155,33 @@
/obj/structure/sign/warning/vacuum,
/turf/open/floor/plating,
/area/quartermaster/storage)
"adr" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"ads" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/effect/decal/cleanable/oil,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"adv" = (
/obj/structure/closet/crate{
icon_state = "crateopen"
@@ -18300,19 +18406,6 @@
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"aGl" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable{
icon_state = "1-2"
},
/obj/structure/cable/white{
icon_state = "0-8"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
"aGm" = (
/obj/structure/sign/warning/radiation,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -20085,16 +20178,6 @@
},
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"aJo" = (
/obj/structure/cable/white{
icon_state = "0-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/gravity_generator)
"aJp" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -20171,16 +20254,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"aJA" = (
/obj/structure/cable/white{
icon_state = "0-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/engineering)
"aJB" = (
/obj/structure/table/reinforced,
/obj/item/stack/sheet/metal/fifty,
@@ -21472,14 +21545,6 @@
/obj/item/clothing/glasses/meson/engine,
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
"aLL" = (
/obj/structure/cable/white,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/gravity_generator)
"aLM" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -21574,11 +21639,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"aLX" = (
/obj/structure/cable/white,
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plating,
/area/engine/engineering)
"aLY" = (
/obj/effect/turf_decal/tile/yellow{
dir = 1
@@ -22553,20 +22613,6 @@
/obj/machinery/power/supermatter_crystal/shard/engine,
/turf/open/floor/engine,
/area/engine/supermatter)
"aOb" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/oil,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aOd" = (
/obj/machinery/power/apc{
areastring = "/area/engine/engineering";
@@ -22788,19 +22834,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"aOB" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aOC" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
dir = 5
@@ -22827,19 +22860,6 @@
},
/turf/open/floor/circuit/green,
/area/engine/supermatter)
"aOE" = (
/obj/structure/cable{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aOF" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -72989,9 +73009,9 @@ aFq
aGf
sIA
aIe
aJo
abQ
aKx
aLL
acA
aMN
aMN
sJD
@@ -73763,9 +73783,9 @@ aIh
aJr
aKz
aLO
aOB
aOB
aOB
acC
acC
acC
aLU
aQK
aRH
@@ -75042,7 +75062,7 @@ kaA
aDr
aEv
aFx
aGl
abn
aHp
aIm
bxa
@@ -75819,9 +75839,9 @@ aIp
aJw
aKE
aLU
aOE
aOb
aOE
adr
ads
adr
aLO
blK
aRP
@@ -76587,9 +76607,9 @@ aDv
aDv
aHv
sHV
aJA
acz
aKH
aLX
acB
aEt
aEt
aOH

View File

@@ -2,12 +2,267 @@
"aaa" = (
/turf/open/space/basic,
/area/space)
"aab" = (
/obj/machinery/holopad,
/obj/effect/landmark/start/cyborg,
/mob/living/simple_animal/bot/secbot/pingsky,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"aac" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aad" = (
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
/area/maintenance/department/science)
"aae" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/structure/cable{
icon_state = "1-2"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aaf" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aag" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aah" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aai" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aaj" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aak" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 4
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aal" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 9
},
/turf/open/floor/plating,
/area/engine/engineering)
"aam" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aan" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aao" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aap" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 9
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aaq" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/engineering)
"aar" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/item/tank/internals/plasma,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aas" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/effect/decal/cleanable/oil,
/obj/machinery/door/poddoor/shutters/radiation/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"aat" = (
/obj/structure/closet/wardrobe/green,
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/structure/sign/poster/official/fashion{
pixel_y = -32
},
/obj/structure/sign/poster/official/fashion{
pixel_y = -32
},
/turf/open/floor/plasteel/white/corner,
/area/crew_quarters/fitness/recreation)
"aau" = (
/obj/structure/closet/secure_closet/hydroponics,
/obj/structure/sign/poster/official/hydro_ad{
pixel_y = 32
},
/turf/open/floor/plasteel,
/area/hydroponics)
"aav" = (
/obj/structure/closet,
/obj/effect/spawner/lootdrop/maintenance,
/obj/structure/sign/poster/contraband/scum{
pixel_y = 32
},
/turf/open/floor/plating,
/area/maintenance/department/cargo)
"aaw" = (
/obj/structure/sign/poster/official/hydro_ad,
/turf/closed/wall,
/area/hydroponics)
"aax" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/structure/sign/poster/official/medical_green_cross{
pixel_x = 32
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone3)
"aay" = (
/obj/structure/sign/poster/official/medical_green_cross,
/turf/closed/wall,
/area/medical/medbay/central)
"aaz" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/sign/poster/official/medical_green_cross{
pixel_x = 32;
pixel_y = -32
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"aaA" = (
/obj/structure/sign/poster/contraband/scum{
pixel_y = 32
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"aaB" = (
/obj/structure/closet/masks,
/obj/item/reagent_containers/food/snacks/deadmouse,
/obj/structure/sign/poster/contraband/scum{
pixel_y = 32
},
/obj/structure/sign/poster/contraband/scum{
pixel_y = 32
},
/turf/open/floor/plating,
/area/maintenance/department/engine)
"aaC" = (
/obj/structure/sign/poster/contraband/scum{
pixel_y = 32
},
/turf/open/floor/plasteel,
/area/maintenance/department/engine)
"abf" = (
/obj/structure/bed,
/turf/open/floor/plating,
@@ -1589,12 +1844,6 @@
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"afP" = (
/obj/machinery/holopad,
/mob/living/simple_animal/bot/secbot/pingsky,
/obj/effect/landmark/start/cyborg,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"afQ" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -11506,13 +11755,6 @@
},
/turf/open/floor/plasteel/white/corner,
/area/crew_quarters/fitness/recreation)
"aBV" = (
/obj/structure/closet/wardrobe/green,
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/turf/open/floor/plasteel/white/corner,
/area/crew_quarters/fitness/recreation)
"aBW" = (
/obj/structure/closet/wardrobe/grey,
/obj/machinery/light,
@@ -15182,13 +15424,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/cargo)
"aKm" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
"aKn" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -18463,10 +18698,6 @@
},
/turf/open/floor/plasteel,
/area/hydroponics)
"aSD" = (
/obj/structure/closet/secure_closet/hydroponics,
/turf/open/floor/plasteel,
/area/hydroponics)
"aSE" = (
/obj/machinery/airalarm{
pixel_y = 24
@@ -19833,11 +20064,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/cargo)
"aVF" = (
/obj/structure/closet,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/department/cargo)
"aVG" = (
/obj/structure/easel,
/turf/open/floor/plating,
@@ -27844,14 +28070,6 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone3)
"boB" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone3)
"boC" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel/dark,
@@ -31673,13 +31891,6 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bwM" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"bwN" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -36749,11 +36960,6 @@
icon_state = "platingdmg3"
},
/area/maintenance/department/engine)
"bGL" = (
/obj/structure/closet/masks,
/obj/item/reagent_containers/food/snacks/deadmouse,
/turf/open/floor/plating,
/area/maintenance/department/engine)
"bGM" = (
/obj/machinery/vending/cigarette,
/turf/open/floor/plating,
@@ -46083,13 +46289,6 @@
/obj/structure/sign/warning/nosmoking,
/turf/closed/wall/r_wall,
/area/engine/engineering)
"ccd" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/structure/cable{
icon_state = "1-2"
},
/turf/open/floor/plating,
/area/engine/engineering)
"cci" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/light{
@@ -47013,17 +47212,6 @@
/obj/structure/closet/firecloset,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"cfV" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 4
},
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/engine/engineering)
"cfX" = (
/obj/machinery/atmospherics/pipe/manifold/orange/visible{
dir = 1
@@ -47378,23 +47566,6 @@
},
/turf/open/floor/plating,
/area/engine/engineering)
"chw" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
/turf/open/floor/plating,
/area/engine/engineering)
"chA" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/turf/open/floor/plating,
/area/engine/supermatter)
"chB" = (
/obj/item/seeds/banana,
/obj/item/seeds/grass,
@@ -54807,17 +54978,6 @@
icon_state = "platingdmg3"
},
/area/maintenance/department/science)
"hQy" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/item/tank/internals/plasma,
/turf/open/floor/plating,
/area/engine/supermatter)
"hQz" = (
/obj/structure/closet/emcloset/anchored,
/obj/structure/cable/yellow{
@@ -55157,11 +55317,6 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"izm" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/engine/engineering)
"izB" = (
/obj/machinery/door/airlock/external{
name = "Escape Pod"
@@ -56542,13 +56697,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/engine)
"lRX" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 9
},
/turf/open/floor/plating,
/area/engine/engineering)
"lTC" = (
/obj/item/shard,
/obj/effect/turf_decal/stripes/line{
@@ -57810,13 +57958,6 @@
},
/turf/open/floor/plating,
/area/engine/engineering)
"oJr" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
/turf/open/floor/plating,
/area/engine/engineering)
"oKa" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance{
@@ -58798,11 +58939,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/engine)
"qOS" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/engine/engineering)
"qPB" = (
/obj/structure/chair/stool,
/obj/machinery/light/small{
@@ -59976,13 +60112,6 @@
},
/turf/open/floor/engine,
/area/engine/engineering)
"tQT" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plating,
/area/engine/engineering)
"tRc" = (
/obj/structure/ore_box,
/turf/open/floor/plating{
@@ -60180,17 +60309,6 @@
luminosity = 2
},
/area/maintenance/department/science)
"uoq" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/engine/supermatter)
"uos" = (
/obj/machinery/computer/camera_advanced/base_construction,
/obj/effect/turf_decal/stripes/line{
@@ -60626,13 +60744,6 @@
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"vor" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/structure/cable/yellow{
icon_state = "1-2"
},
/turf/open/floor/plating,
/area/engine/engineering)
"vpz" = (
/obj/structure/girder,
/turf/open/floor/plating{
@@ -61074,17 +61185,6 @@
/obj/structure/sign/warning,
/turf/closed/wall,
/area/science/mixing)
"woh" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/machinery/door/poddoor/shutters/preopen{
id = "engsm";
name = "Radiation Chamber Shutters"
},
/obj/effect/decal/cleanable/oil,
/turf/open/floor/plating,
/area/engine/supermatter)
"woq" = (
/obj/structure/chair,
/turf/open/floor/plating,
@@ -61228,13 +61328,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"wHI" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{
dir = 9
},
/turf/open/floor/plating,
/area/engine/engineering)
"wIo" = (
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
/obj/structure/lattice,
@@ -83932,7 +84025,7 @@ bBX
bva
bEm
bva
bGL
aaB
bHQ
bJe
bKj
@@ -85497,7 +85590,7 @@ bSw
bva
bOB
bva
kRq
aaC
kRq
kRq
bva
@@ -87507,7 +87600,7 @@ aVS
aVS
aVS
aVS
aRL
aaw
aJI
aDZ
aHN
@@ -88030,7 +88123,7 @@ bjR
blc
biX
bny
boB
aax
bpF
brd
bsz
@@ -88522,7 +88615,7 @@ aKP
aPz
aQJ
aRL
aSD
aau
aTT
aXS
aRL
@@ -90606,7 +90699,7 @@ brg
bsG
brf
bvn
bwM
aaz
byt
bzX
bpP
@@ -90905,9 +90998,9 @@ svA
mjK
mjK
mjK
wHI
eyj
eyj
aap
aac
aac
bXk
shH
shH
@@ -91157,7 +91250,7 @@ cah
cdO
ioF
ceX
qOS
aah
cfS
fFv
fmL
@@ -91631,7 +91724,7 @@ bnD
boJ
bpS
bjd
bjc
aay
cqm
bvl
bwP
@@ -91671,7 +91764,7 @@ cbh
cbh
cbh
hjD
vor
aai
cfU
tIS
iCs
@@ -91929,12 +92022,12 @@ irM
qFu
cet
ulY
cfV
aak
cgu
cgU
izm
chw
eyj
aam
aaq
aac
jzE
bXk
bXk
@@ -92181,9 +92274,9 @@ bZA
can
cbi
ccc
eyj
aac
cdR
tQT
aaf
bXk
bXk
sWW
@@ -92437,12 +92530,12 @@ bYR
bZA
can
cbj
eyj
aac
cbX
wcs
iyJ
cfa
eyj
aac
twv
hoS
sWj
@@ -92694,7 +92787,7 @@ bYS
bZA
can
qpS
ccd
aae
ccX
ccX
ceu
@@ -92703,9 +92796,9 @@ cfu
tlN
ncm
cCI
uoq
hQy
chA
aan
aar
aao
meF
oKv
wbB
@@ -92951,12 +93044,12 @@ bYT
bZB
caq
cbk
eyj
aac
ccY
cdT
ccY
cbX
eyj
aac
vlC
iej
qeY
@@ -93208,7 +93301,7 @@ bYU
bZE
car
mgz
eyj
aac
cbX
wcs
wcs
@@ -94236,7 +94329,7 @@ bYQ
bZA
cam
mgz
eyj
aac
cbX
wcs
wcs
@@ -94493,12 +94586,12 @@ wjm
bZF
cbm
mgz
eyj
aac
oHa
oHa
eWi
cbX
eyj
aac
vlC
cgx
qeY
@@ -94750,7 +94843,7 @@ bYO
bZA
cam
lrM
ccd
aae
cAQ
cAQ
cLw
@@ -94759,9 +94852,9 @@ cfu
jBn
oxw
meF
chA
chA
woh
aao
aao
aas
cCI
cBS
iLh
@@ -94900,7 +94993,7 @@ aey
aeO
aff
afy
afP
aab
bIK
agt
agD
@@ -95007,12 +95100,12 @@ bYY
bZA
cam
cbn
eyj
aac
cbX
wcs
cfP
cff
eyj
aac
cfX
vVO
iop
@@ -95265,9 +95358,9 @@ bZG
cax
cbo
ccc
eyj
aac
cdR
oJr
aag
bXq
bXq
cfY
@@ -95527,7 +95620,7 @@ kTj
qhE
loz
frj
lRX
aal
eyj
uIB
eyj
@@ -95783,7 +95876,7 @@ cam
cam
cam
haA
aKm
aaj
upc
wIo
hyh
@@ -96040,7 +96133,7 @@ cCV
ceb
epV
qLI
aKm
aaj
eiV
upc
dsz
@@ -103154,7 +103247,7 @@ axx
ayv
azD
aAS
aBV
aat
atn
aEh
aFe
@@ -107799,7 +107892,7 @@ sZh
aLm
aTx
aEj
aVF
aav
aFi
aFi
aFi
@@ -109372,7 +109465,7 @@ blX
blX
blX
bkF
lWy
aaA
lWy
fKj
lWy

View File

@@ -2,18 +2,6 @@
//Be sure to update the min/max of these if you do change them.
//Measurements are in imperial units. Inches, feet, yards, miles. Tsp, tbsp, cups, quarts, gallons, etc
//HUD stuff
#define ui_arousal "EAST-1:28,CENTER-4:8"//Below the health doll
#define ui_stamina "EAST-1:28,CENTER:17" // replacing internals button
#define ui_overridden_resist "EAST-3:24,SOUTH+1:7"
#define ui_combat_toggle "EAST-4:22,SOUTH:5"
//1:1 HUD layout stuff
#define ui_boxcraft "EAST-4:22,SOUTH+1:6"
#define ui_boxarea "EAST-4:6,SOUTH+1:6"
#define ui_boxlang "EAST-5:22,SOUTH+1:6"
#define ui_boxvore "EAST-5:22,SOUTH+1:6"
//Filters
#define CIT_FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, color="#04080F")
@@ -35,6 +23,8 @@
#define MASTURBATE_LINKED_ORGAN (1<<6) //used to pass our mission to the linked organ
#define CAN_CLIMAX_WITH (1<<7)
#define GENITAL_CAN_AROUSE (1<<8)
#define GENITAL_UNDIES_HIDDEN (1<<9)
#define UPDATE_OWNER_APPEARANCE (1<<10)
#define DEF_VAGINA_SHAPE "Human"
@@ -71,6 +61,12 @@
#define MILK_RATE_MULT 1
#define MILK_EFFICIENCY 1
//visibility toggles defines to avoid errors typos code errors.
#define GEN_VISIBLE_ALWAYS "Always visible"
#define GEN_VISIBLE_NO_CLOTHES "Hidden by clothes"
#define GEN_VISIBLE_NO_UNDIES "Hidden by underwear"
#define GEN_VISIBLE_NEVER "Always hidden"
//Individual logging define
#define INDIVIDUAL_LOOC_LOG "LOOC log"

View File

@@ -82,6 +82,7 @@
#define CANUNCONSCIOUS (1<<2)
#define CANPUSH (1<<3)
#define GODMODE (1<<4)
#define CANSTAGGER (1<<5)
//Health Defines
#define HEALTH_THRESHOLD_CRIT 0

View File

@@ -175,6 +175,7 @@
#define SPEECH_LANGUAGE 5
// #define SPEECH_IGNORE_SPAM 6
// #define SPEECH_FORCED 7
#define COMSIG_MOB_ANTAG_ON_GAIN "mob_antag_on_gain" //from base of /datum/antagonist/on_gain(): (antag_datum)
// /mob/living signals
#define COMSIG_LIVING_REGENERATE_LIMBS "living_regenerate_limbs" //from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs)
@@ -185,6 +186,7 @@
#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: ()
#define COMSIG_LIVING_REVIVE "living_revive" //from base of mob/living/revive() (full_heal, admin_revive)
#define COMSIG_MOB_CLIENT_LOGIN "comsig_mob_client_login" //sent when a mob/login() finishes: (client)
#define COMSIG_MOB_CLIENT_MOVE "comsig_mob_client_move" //sent when client/Move() finishes with no early returns: (client, direction, n, oldloc)
#define COMSIG_LIVING_GUN_PROCESS_FIRE "living_gun_process_fire" //from base of /obj/item/gun/proc/process_fire(): (atom/target, params, zone_override)
#define COMSIG_LIVING_COMBAT_ENABLED "combatmode_enabled" //from base of mob/living/enable_combat_mode() (was_forced)
#define COMSIG_LIVING_COMBAT_DISABLED "combatmode_disabled" //from base of mob/living/disable_combat_mode() (was_forced)

View File

@@ -6,6 +6,7 @@
#define NO_ASSASSIN (1<<0)
#define WAROPS_ALWAYS_ALLOWED (1<<1)
#define USE_PREF_WEIGHTS (1<<2)
#define FORCE_IF_WON (1<<3)
#define ONLY_RULESET (1<<0)
#define HIGHLANDER_RULESET (1<<1)

View File

@@ -4,11 +4,16 @@
#define CLICKCATCHER_PLANE -99
#define PLANE_SPACE -95
#define PLANE_SPACE_RENDER_TARGET "PLANE_SPACE"
#define PLANE_SPACE_PARALLAX -90
#define PLANE_SPACE_PARALLAX_RENDER_TARGET "PLANE_SPACE_PARALLAX"
#define FLOOR_PLANE -2
#define FLOOR_PLANE_RENDER_TARGET "FLOOR_PLANE"
#define GAME_PLANE -1
#define GAME_PLANE_RENDER_TARGET "GAME_PLANE"
#define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals
#define BLACKNESS_PLANE_RENDER_TARGET "BLACKNESS_PLANE"
#define SPACE_LAYER 1.8
//#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define
@@ -78,20 +83,38 @@
#define MASSIVE_OBJ_LAYER 11
#define POINT_LAYER 12
#define EMISSIVE_BLOCKER_PLANE 12
#define EMISSIVE_BLOCKER_LAYER 12
#define EMISSIVE_BLOCKER_RENDER_TARGET "*EMISSIVE_BLOCKER_PLANE"
#define EMISSIVE_PLANE 13
#define EMISSIVE_LAYER 13
#define EMISSIVE_RENDER_TARGET "*EMISSIVE_PLANE"
#define EMISSIVE_UNBLOCKABLE_PLANE 14
#define EMISSIVE_UNBLOCKABLE_LAYER 14
#define EMISSIVE_UNBLOCKABLE_RENDER_TARGET "*EMISSIVE_UNBLOCKABLE_PLANE"
#define LIGHTING_PLANE 15
#define LIGHTING_LAYER 15
#define LIGHTING_RENDER_TARGET "LIGHT_PLANE"
#define ABOVE_LIGHTING_PLANE 16
#define ABOVE_LIGHTING_LAYER 16
#define ABOVE_LIGHTING_RENDER_TARGET "ABOVE_LIGHTING_PLANE"
#define FLOOR_OPENSPACE_PLANE 17
#define OPENSPACE_LAYER 17
#define OPENSPACE_RENDER_TARGET "OPENSPACE_PLANE"
#define BYOND_LIGHTING_PLANE 18
#define BYOND_LIGHTING_LAYER 18
#define BYOND_LIGHTING_RENDER_TARGET "BYOND_LIGHTING_PLANE"
#define CAMERA_STATIC_PLANE 19
#define CAMERA_STATIC_LAYER 19
#define CAMERA_STATIC_RENDER_TARGET "CAMERA_STATIC_PLANE"
//HUD layer defines
#define FULLSCREEN_PLANE 20
@@ -101,11 +124,16 @@
#define BLIND_LAYER 20.3
#define CRIT_LAYER 20.4
#define CURSE_LAYER 20.5
#define FULLSCREEN_RENDER_TARGET "FULLSCREEN_PLANE"
#define HUD_PLANE 21
#define HUD_LAYER 21
#define HUD_RENDER_TARGET "HUD_PLANE"
#define ABOVE_HUD_PLANE 22
#define ABOVE_HUD_LAYER 22
#define ABOVE_HUD_RENDER_TARGET "ABOVE_HUD_PLANE"
#define SPLASHSCREEN_LAYER 23
#define SPLASHSCREEN_PLANE 23
#define SPLASHSCREEN_RENDER_TARGET "SPLASHSCREEN_PLANE"

View File

@@ -83,3 +83,8 @@
#define FLASH_LIGHT_DURATION 2
#define FLASH_LIGHT_POWER 3
#define FLASH_LIGHT_RANGE 3.8
/// Uses vis_overlays to leverage caching so that very few new items need to be made for the overlay. For anything that doesn't change outline or opaque area much or at all.
#define EMISSIVE_BLOCK_GENERIC 1
/// Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans.
#define EMISSIVE_BLOCK_UNIQUE 2

View File

@@ -30,7 +30,7 @@
#define FLOOR(x, y) ( round((x) / (y)) * (y) )
// Similar to clamp but the bottom rolls around to the top and vice versa. min is inclusive, max is exclusive
#define WRAP(val, min, max) ( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) )
#define WRAP(val, min, max) CLAMP(( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ),min,max-1)
// Real modulus that handles decimals
#define MODULUS(x, y) ( (x) - (y) * round((x) / (y)) )
@@ -203,5 +203,7 @@
#define MANHATTAN_DISTANCE(a, b) (abs(a.x - b.x) + abs(a.y - b.y))
#define LOGISTIC_FUNCTION(L,k,x,x_0) (L/(1+(NUM_E**(-k*(x-x_0)))))
/// Make sure something is a boolean TRUE/FALSE 1/0 value, since things like bitfield & bitflag doesn't always give 1s and 0s.
#define FORCE_BOOLEAN(x) ((x)? TRUE : FALSE)

View File

@@ -345,11 +345,10 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
#define COLOUR_PRIORITY_AMOUNT 4 //how many priority levels there are.
//Endgame Results
#define NUKE_NEAR_MISS 1
#define NUKE_MISS_STATION 2
#define NUKE_SYNDICATE_BASE 3
#define STATION_DESTROYED_NUKE 4
#define STATION_EVACUATED 5
#define NUKE_MISS_STATION 1
#define NUKE_SYNDICATE_BASE 2
#define STATION_DESTROYED_NUKE 3
#define STATION_EVACUATED 4
#define BLOB_WIN 8
#define BLOB_NUKE 9
#define BLOB_DESTROYED 10

View File

@@ -289,4 +289,5 @@
#define HUMAN_FIRE_STACK_ICON_NUM 3
#define PULL_PRONE_SLOWDOWN 0.6
#define HUMAN_CARRY_SLOWDOWN 0
#define FIREMAN_CARRY_SLOWDOWN 0
#define PIGGYBACK_CARRY_SLOWDOWN 1

View File

@@ -212,6 +212,7 @@
#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
#define TRAIT_NO_INTERNALS "no-internals"
#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
#define TRAIT_MUTATION_STASIS "mutation_stasis" //Prevents processed genetics mutations from processing.
// common trait sources
#define TRAIT_GENERIC "generic"
@@ -236,6 +237,7 @@
#define APHRO_TRAIT "aphro"
#define BLOODSUCKER_TRAIT "bloodsucker"
#define CLOTHING_TRAIT "clothing" //used for quirky carrygloves
#define SHOES_TRAIT "shoes" //inherited from your sweet kicks
// unique trait sources, still defines
#define STATUE_MUTE "statue"

View File

@@ -5,6 +5,11 @@
#define MAJORITY_JUDGEMENT_VOTING 4
#define INSTANT_RUNOFF_VOTING 5
#define SHOW_RESULTS (1<<0)
#define SHOW_VOTES (1<<1)
#define SHOW_WINNER (1<<2)
#define SHOW_ABSTENTION (1<<3)
GLOBAL_LIST_INIT(vote_score_options,list("Bad","Poor","Acceptable","Good","Great"))
GLOBAL_LIST_INIT(vote_type_names,list(\
@@ -15,3 +20,10 @@ GLOBAL_LIST_INIT(vote_type_names,list(\
"Raw Score (returns results from 0 to 1, winner is 1)" = SCORE_VOTING,\
"Majority Judgement (single-winner score voting)" = MAJORITY_JUDGEMENT_VOTING,\
))
GLOBAL_LIST_INIT(display_vote_settings, list(\
"Results" = SHOW_RESULTS,
"Ongoing Votes" = SHOW_VOTES,
"Winner" = SHOW_WINNER,
"Abstainers" = SHOW_ABSTENTION
))

View File

@@ -58,14 +58,13 @@ GLOBAL_LIST_EMPTY(ipc_antennas_list)
//Genitals and Arousal Lists
GLOBAL_LIST_EMPTY(genitals_list)
GLOBAL_LIST_EMPTY(cock_shapes_list)
GLOBAL_LIST_EMPTY(gentlemans_organ_names)
GLOBAL_LIST_EMPTY(balls_shapes_list)
GLOBAL_LIST_EMPTY(breasts_shapes_list)
GLOBAL_LIST_EMPTY(vagina_shapes_list)
GLOBAL_LIST_INIT(cum_into_containers_list, list(/obj/item/reagent_containers/food/snacks/pie)) //Yer fuggin snowflake name list jfc
GLOBAL_LIST_INIT(dick_nouns, list("dick","cock","member","shaft"))
GLOBAL_LIST_INIT(cum_id_list,"semen")
GLOBAL_LIST_INIT(milk_id_list,"milk")
//longcat memes.
GLOBAL_LIST_INIT(dick_nouns, list("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret", "One eyed trouser trout", "Ding dong", "ankle spanker", "Pork sword", "engine cranker", "Harry hot dog", "Davy Crockett", "Kidney cracker", "Heat seeking moisture missile", "Giggle stick", "love whistle", "Tube steak", "Uncle Dick", "Purple helmet warrior"))
GLOBAL_LIST_INIT(genitals_visibility_toggles, list(GEN_VISIBLE_ALWAYS, GEN_VISIBLE_NO_CLOTHES, GEN_VISIBLE_NO_UNDIES, GEN_VISIBLE_NEVER))
GLOBAL_LIST_INIT(dildo_shapes, list(
"Human" = "human",

View File

@@ -54,11 +54,6 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, GLOB.vagina_shapes_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_shapes_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/testicles, GLOB.balls_shapes_list)
GLOB.gentlemans_organ_names = list("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ",
"cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret",
"baloney pony", "schlanger", "Mutton dagger", "old blind bob","Hanging Johnny", "fishing rod", "Tally whacker", "polly rocket",
"One eyed trouser trout", "Ding dong", "ankle spanker", "Pork sword", "engine cranker", "Harry hot dog", "Davy Crockett",
"Kidney cracker", "Heat seeking moisture missile", "Giggle stick", "love whistle", "Tube steak", "Uncle Dick", "Purple helmet warrior")
for(var/gpath in subtypesof(/obj/item/organ/genital))
var/obj/item/organ/genital/G = gpath

View File

@@ -185,7 +185,6 @@
"cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF,
"cock_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"has_balls" = FALSE,
"balls_internal" = FALSE,
"balls_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"balls_size" = BALLS_SIZE_DEF,
"balls_shape" = DEF_BALLS_SHAPE,
@@ -200,13 +199,11 @@
"has_vag" = FALSE,
"vag_shape" = pick(GLOB.vagina_shapes_list),
"vag_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
"vag_clits" = 1,
"vag_clit_diam" = 0.25,
"vag_clit_len" = 0.25,
"has_womb" = FALSE,
"womb_cum_rate" = CUM_RATE,
"womb_cum_mult" = CUM_RATE_MULT,
"womb_efficiency" = CUM_EFFICIENCY,
"balls_visibility" = GEN_VISIBLE_NO_UNDIES,
"breasts_visibility"= GEN_VISIBLE_NO_UNDIES,
"cock_visibility" = GEN_VISIBLE_NO_UNDIES,
"vag_visibility" = GEN_VISIBLE_NO_UNDIES,
"ipc_screen" = snowflake_ipc_antenna_list ? pick(snowflake_ipc_antenna_list) : "None",
"ipc_antenna" = "None",
"flavor_text" = "",

View File

@@ -320,8 +320,8 @@
parts += "[FOURSPACES]<i>Nobody died this shift!</i>"
if(istype(SSticker.mode, /datum/game_mode/dynamic))
var/datum/game_mode/dynamic/mode = SSticker.mode
parts += "[FOURSPACES]Threat level: [mode.threat_level]"
parts += "[FOURSPACES]Threat left: [mode.threat]"
parts += "[FOURSPACES]Final threat level: [mode.threat_level]"
parts += "[FOURSPACES]Final threat: [mode.threat]"
parts += "[FOURSPACES]Executed rules:"
for(var/datum/dynamic_ruleset/rule in mode.executed_rules)
parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - <b>[rule.name]</b>: -[rule.cost + rule.scaled_times * rule.scaling_cost] threat"
@@ -331,7 +331,7 @@
for(var/entry in mode.threat_tallies)
parts += "[FOURSPACES][FOURSPACES][entry] added [mode.threat_tallies[entry]]"
SSblackbox.record_feedback("tally","dynamic_threat",mode.threat_level,"Final threat level")
SSblackbox.record_feedback("tally","dynamic_threat",mode.threat,"Threat left")
SSblackbox.record_feedback("tally","dynamic_threat",mode.threat,"Final Threat")
return parts.Join("<br>")
/client/proc/roundend_report_file()

View File

@@ -152,10 +152,10 @@
else
if(ismob(A))
changeNext_move(CLICK_CD_MELEE)
UnarmedAttack(A,1)
UnarmedAttack(A, 1)
else
if(W)
W.afterattack(A,src,0,params)
W.ranged_attack_chain(src, A, params)
else
RangedAttack(A,params)

View File

@@ -163,3 +163,14 @@
#define ui_ghost_reenter_corpse "SOUTH:6,CENTER:24"
#define ui_ghost_teleport "SOUTH:6,CENTER+1:24"
#define ui_ghost_pai "SOUTH: 6, CENTER+2:24"
//UI position overrides for 1:1 screen layout. (default is 7:5)
#define ui_stamina "EAST-1:28,CENTER:17" // replacing internals button
#define ui_overridden_resist "EAST-3:24,SOUTH+1:7"
#define ui_combat_toggle "EAST-4:22,SOUTH:5"
#define ui_boxcraft "EAST-4:22,SOUTH+1:6"
#define ui_boxarea "EAST-4:6,SOUTH+1:6"
#define ui_boxlang "EAST-5:22,SOUTH+1:6"
#define ui_boxvore "EAST-5:22,SOUTH+1:6"

View File

@@ -16,6 +16,7 @@
//Trust me, you need one. Period. If you don't think you do, you're doing something extremely wrong.
/obj/screen/plane_master/proc/backdrop(mob/mymob)
///Things rendered on "openspace"; holes in multi-z
/obj/screen/plane_master/openspace
name = "open space plane master"
plane = FLOOR_OPENSPACE_PLANE
@@ -38,12 +39,14 @@
/obj/screen/plane_master/proc/clear_filters()
filters = list()
///Contains just the floor
/obj/screen/plane_master/floor
name = "floor plane master"
plane = FLOOR_PLANE
appearance_flags = PLANE_MASTER
blend_mode = BLEND_OVERLAY
///Contains most things in the game world
/obj/screen/plane_master/game_world
name = "game world plane master"
plane = GAME_PLANE
@@ -57,12 +60,60 @@
remove_filter("ambient_occlusion")
update_filters()
///Contains all lighting objects
/obj/screen/plane_master/lighting
name = "lighting plane master"
plane = LIGHTING_PLANE
blend_mode = BLEND_MULTIPLY
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/screen/plane_master/lighting/Initialize()
. = ..()
filters += filter(type="alpha", render_source=EMISSIVE_RENDER_TARGET, flags=MASK_INVERSE)
filters += filter(type="alpha", render_source=EMISSIVE_UNBLOCKABLE_RENDER_TARGET, flags=MASK_INVERSE)
/**
* Things placed on this mask the lighting plane. Doesn't render directly.
*
* Gets masked by blocking plane. Use for things that you want blocked by
* mobs, items, etc.
*/
/obj/screen/plane_master/emissive
name = "emissive plane master"
plane = EMISSIVE_PLANE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
render_target = EMISSIVE_RENDER_TARGET
/obj/screen/plane_master/emissive/Initialize()
. = ..()
filters += filter(type="alpha", render_source=EMISSIVE_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE)
/**
* Things placed on this always mask the lighting plane. Doesn't render directly.
*
* Always masks the light plane, isn't blocked by anything. Use for on mob glows,
* magic stuff, etc.
*/
/obj/screen/plane_master/emissive_unblockable
name = "unblockable emissive plane master"
plane = EMISSIVE_UNBLOCKABLE_PLANE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
render_target = EMISSIVE_UNBLOCKABLE_RENDER_TARGET
/**
* Things placed on this layer mask the emissive layer. Doesn't render directly
*
* You really shouldn't be directly using this, use atom helpers instead
*/
/obj/screen/plane_master/emissive_unblockable
name = "emissive mob plane master"
plane = EMISSIVE_BLOCKER_PLANE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
render_target = EMISSIVE_BLOCKER_RENDER_TARGET
///Contains space parallax
/obj/screen/plane_master/parallax
name = "parallax plane master"
plane = PLANE_SPACE_PARALLAX

View File

@@ -8,12 +8,15 @@
*afterattack. The return value does not matter.
*/
/obj/item/proc/melee_attack_chain(mob/user, atom/target, params)
if(item_flags & NO_ATTACK_CHAIN_SOFT_STAMCRIT)
if(isliving(user))
var/mob/living/L = user
if(isliving(user))
var/mob/living/L = user
if(item_flags & NO_ATTACK_CHAIN_SOFT_STAMCRIT)
if(IS_STAMCRIT(L))
to_chat(L, "<span class='warning'>You are too exhausted to swing [src]!</span>")
return
if(!CHECK_MOBILITY(L, MOBILITY_USE))
to_chat(L, "<span class='warning'>You are unable to swing [src] right now!</span>")
return
if(tool_behaviour && target.tool_act(user, src, tool_behaviour))
return
if(pre_attack(target, user, params))
@@ -24,6 +27,15 @@
return
afterattack(target, user, TRUE, params)
/// Like melee_attack_chain but for ranged.
/obj/item/proc/ranged_attack_chain(mob/user, atom/target, params)
if(isliving(user))
var/mob/living/L = user
if(!CHECK_MOBILITY(L, MOBILITY_USE))
to_chat(L, "<span class='warning'>You are unable to raise [src] right now!</span>")
return
afterattack(target, user, FALSE, params)
// Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown.
/obj/item/proc/attack_self(mob/user)
if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user) & COMPONENT_NO_INTERACT)
@@ -50,7 +62,6 @@
user.changeNext_move(CLICK_CD_MELEE)
return I.attack(src, user)
/obj/item/proc/attack(mob/living/M, mob/living/user)
if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, M, user) & COMPONENT_ITEM_NO_ATTACK)
return
@@ -117,6 +128,7 @@
if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration))
return FALSE
send_item_attack_message(I, user)
I.do_stagger_action(src, user)
if(I.force)
apply_damage(totitemdamage, I.damtype) //CIT CHANGE - replaces I.force with totitemdamage
if(I.damtype == BRUTE)
@@ -166,5 +178,33 @@
playsound(src, 'sound/weapons/dink.ogg', 30, 1)
return 1
/// How much stamina this takes to swing this is not for realism purposes hecc off.
/obj/item/proc/getweight()
return total_mass || w_class * 1.25
/// How long this staggers for. 0 and negatives supported.
/obj/item/proc/melee_stagger_duration()
if(!isnull(stagger_force))
return stagger_force
/// totally not an untested, arbitrary equation.
return clamp((1.5 + (w_class/7.5)) * (force / 2), 0, 10 SECONDS)
/obj/item/proc/do_stagger_action(mob/living/target, mob/living/user)
if(!CHECK_BITFIELD(target.status_flags, CANSTAGGER))
return FALSE
if(target.combat_flags & COMBAT_FLAG_SPRINT_ACTIVE)
target.do_staggered_animation()
var/duration = melee_stagger_duration()
if(!duration) //0
return FALSE
else if(duration > 0)
target.Stagger(duration)
else //negative
target.AdjustStaggered(duration)
return TRUE
/mob/proc/do_staggered_animation()
set waitfor = FALSE
animate(src, pixel_x = -2, pixel_y = -2, time = 1, flags = ANIMATION_RELATIVE | ANIMATION_PARALLEL)
animate(pixel_x = 4, pixel_y = 4, time = 1, flags = ANIMATION_RELATIVE)
animate(pixel_x = -2, pixel_y = -2, time = 0.5, flags = ANIMATION_RELATIVE)

View File

@@ -368,12 +368,16 @@
var/list/datum/dynamic_storyteller/runnable_storytellers = new
var/list/probabilities = Get(/datum/config_entry/keyed_list/storyteller_weight)
var/list/repeated_mode_adjust = Get(/datum/config_entry/number_list/repeated_mode_adjust)
var/list/min_player_counts = Get(/datum/config_entry/keyed_list/storyteller_min_players)
for(var/T in storyteller_cache)
var/datum/dynamic_storyteller/S = T
var/config_tag = initial(S.config_tag)
var/probability = (config_tag in probabilities) ? probabilities[config_tag] : initial(S.weight)
var/min_players = (config_tag in min_player_counts) ? min_player_counts[config_tag] : initial(S.min_players)
if(probability <= 0)
continue
if(length(GLOB.player_list) < min_players)
continue
if(SSpersistence.saved_storytellers.len == repeated_mode_adjust.len)
var/name = initial(S.name)
var/recent_round = min(SSpersistence.saved_storytellers.Find(name),3)

View File

@@ -92,3 +92,7 @@
/datum/config_entry/keyed_list/storyteller_weight
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_NUM
/datum/config_entry/keyed_list/storyteller_min_players
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_NUM

View File

@@ -396,6 +396,14 @@
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_NUM
/datum/config_entry/keyed_list/job_threat
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_NUM
/datum/config_entry/keyed_list/antag_threat
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_NUM
/datum/config_entry/number/monkeycap
config_entry_value = 64
min_val = 0
@@ -436,3 +444,8 @@
/datum/config_entry/number/penis_max_inches_prefs
config_entry_value = 20
min_val = 0
/datum/config_entry/keyed_list/safe_visibility_toggles
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_FLAG
config_entry_value = list(GEN_VISIBLE_NO_CLOTHES, GEN_VISIBLE_NO_UNDIES, GEN_VISIBLE_NEVER) //refer to cit_helpers for all toggles.

View File

@@ -66,6 +66,7 @@ SUBSYSTEM_DEF(job)
/datum/controller/subsystem/job/proc/GetJob(rank)
RETURN_TYPE(/datum/job)
if(!occupations.len)
SetupOccupations()
return name_occupations[rank]
@@ -738,4 +739,4 @@ SUBSYSTEM_DEF(job)
. |= player.mind
/datum/controller/subsystem/job/proc/JobDebug(message)
log_job_debug(message)
log_job_debug(message)

View File

@@ -37,11 +37,11 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
if(job?.blacklisted_quirks)
cut = filter_quirks(my_quirks, job.blacklisted_quirks)
for(var/V in my_quirks)
var/datum/quirk/Q = quirks[V]
if(Q)
if(V in quirks)
var/datum/quirk/Q = quirks[V]
user.add_quirk(Q, spawn_effects)
else
stack_trace("Invalid quirk \"[V]\" in client [cli.ckey] preferences")
log_admin("Invalid quirk \"[V]\" in client [cli.ckey] preferences")
cli.prefs.all_quirks -= V
badquirk = TRUE
if(badquirk)

View File

@@ -479,15 +479,15 @@ SUBSYSTEM_DEF(ticker)
var/vote_type = CONFIG_GET(string/map_vote_type)
switch(vote_type)
if("PLURALITY")
SSvote.initiate_vote("map","server",hideresults=TRUE)
SSvote.initiate_vote("map","server", display = SHOW_RESULTS)
if("APPROVAL")
SSvote.initiate_vote("map","server",hideresults=TRUE,votesystem = APPROVAL_VOTING)
SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = APPROVAL_VOTING)
if("IRV")
SSvote.initiate_vote("map","server",hideresults=TRUE,votesystem = INSTANT_RUNOFF_VOTING)
SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = INSTANT_RUNOFF_VOTING)
if("SCORE")
SSvote.initiate_vote("map","server",hideresults=TRUE,votesystem = MAJORITY_JUDGEMENT_VOTING)
SSvote.initiate_vote("map","server", display = SHOW_RESULTS, votesystem = MAJORITY_JUDGEMENT_VOTING)
else
SSvote.initiate_vote("map","server",hideresults=TRUE)
SSvote.initiate_vote("map","server", display = SHOW_RESULTS)
// fallback
/datum/controller/subsystem/ticker/proc/HasRoundStarted()
@@ -503,9 +503,9 @@ SUBSYSTEM_DEF(ticker)
SSticker.modevoted = TRUE
var/dynamic = CONFIG_GET(flag/dynamic_voting)
if(dynamic)
SSvote.initiate_vote("dynamic","server",hideresults=TRUE,votesystem=SCORE_VOTING,forced=TRUE,vote_time = 20 MINUTES)
SSvote.initiate_vote("dynamic", "server", display = NONE, votesystem = SCORE_VOTING, forced = TRUE,vote_time = 20 MINUTES)
else
SSvote.initiate_vote("roundtype","server",hideresults=TRUE,votesystem=PLURALITY_VOTING,forced=TRUE, \
SSvote.initiate_vote("roundtype", "server", display = NONE, votesystem = PLURALITY_VOTING, forced=TRUE, \
vote_time = (CONFIG_GET(flag/modetier_voting) ? 1 MINUTES : 20 MINUTES))
/datum/controller/subsystem/ticker/Recover()

View File

@@ -23,7 +23,7 @@ SUBSYSTEM_DEF(vote)
var/list/generated_actions = list()
var/next_pop = 0
var/obfuscated = FALSE//CIT CHANGE - adds obfuscated/admin-only votes
var/display_votes = SHOW_RESULTS|SHOW_VOTES|SHOW_WINNER|SHOW_ABSTENTION //CIT CHANGE - adds obfuscated/admin-only votes
var/list/stored_gamemode_votes = list() //Basically the last voted gamemode is stored here for end-of-round use.
@@ -59,7 +59,7 @@ SUBSYSTEM_DEF(vote)
voted.Cut()
voting.Cut()
scores.Cut()
obfuscated = FALSE //CIT CHANGE - obfuscated votes
display_votes = initial(display_votes) //CIT CHANGE - obfuscated votes
remove_action_buttons()
/datum/controller/subsystem/vote/proc/get_result()
@@ -250,7 +250,7 @@ SUBSYSTEM_DEF(vote)
if(winners.len > 0)
if(was_roundtype_vote)
stored_gamemode_votes = list()
if(!obfuscated)
if(display_votes & SHOW_RESULTS)
if(vote_system == SCHULZE_VOTING)
text += "\nIt should be noted that this is not a raw tally of votes (impossible in ranked choice) but the score determined by the schulze method of voting, so the numbers will look weird!"
if(vote_system == MAJORITY_JUDGEMENT_VOTING)
@@ -261,15 +261,15 @@ SUBSYSTEM_DEF(vote)
votes = 0
if(was_roundtype_vote)
stored_gamemode_votes[choices[i]] = votes
text += "\n<b>[choices[i]]:</b> [obfuscated ? "???" : votes]" //CIT CHANGE - adds obfuscated votes
text += "\n<b>[choices[i]]:</b> [display_votes & SHOW_RESULTS ? votes : "???"]" //CIT CHANGE - adds obfuscated votes
if(mode != "custom")
if(winners.len > 1 && !obfuscated) //CIT CHANGE - adds obfuscated votes
if(winners.len > 1 && display_votes & SHOW_WINNER) //CIT CHANGE - adds obfuscated votes
text = "\n<b>Vote Tied Between:</b>"
for(var/option in winners)
text += "\n\t[option]"
. = pick(winners)
text += "\n<b>Vote Result: [obfuscated ? "???" : .]</b>" //CIT CHANGE - adds obfuscated votes
else
text += "\n<b>Vote Result: [display_votes & SHOW_WINNER ? . : "???"]</b>" //CIT CHANGE - adds obfuscated votes
if(display_votes & SHOW_ABSTENTION)
text += "\n<b>Did not vote:</b> [GLOB.clients.len-voted.len]"
else if(vote_system == SCORE_VOTING)
for(var/score_name in scores)
@@ -278,7 +278,7 @@ SUBSYSTEM_DEF(vote)
score = 0
if(was_roundtype_vote)
stored_gamemode_votes[score_name] = score
text = "\n<b>[score_name]:</b> [obfuscated ? "???" : score]"
text = "\n<b>[score_name]:</b> [display_votes & SHOW_RESULTS ? score : "???"]"
. = 1
else
text += "<b>Vote Result: Inconclusive - No Votes!</b>"
@@ -295,7 +295,7 @@ SUBSYSTEM_DEF(vote)
if(islist(myvote))
for(var/j=1,j<=myvote.len,j++)
SSblackbox.record_feedback("nested tally","voting",1,list(vote_title_text,"[j]\th",choices[myvote[j]]))
if(obfuscated) //CIT CHANGE - adds obfuscated votes. this messages admins with the vote's true results
if(!(display_votes & SHOW_RESULTS)) //CIT CHANGE - adds obfuscated votes. this messages admins with the vote's true results
var/admintext = "Obfuscated results"
if(vote_system != SCORE_VOTING)
if(vote_system == SCHULZE_VOTING)
@@ -327,7 +327,7 @@ SUBSYSTEM_DEF(vote)
if(CONFIG_GET(flag/modetier_voting))
reset()
started_time = 0
initiate_vote("mode tiers","server",hideresults=FALSE,votesystem=SCORE_VOTING,forced=TRUE, vote_time = 30 MINUTES)
initiate_vote("mode tiers","server", votesystem=SCORE_VOTING, forced=TRUE, vote_time = 30 MINUTES)
to_chat(world,"<b>The vote will end right as the round starts.</b>")
return .
if("restart")
@@ -354,11 +354,15 @@ SUBSYSTEM_DEF(vote)
return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.")
GLOB.master_mode = "dynamic"
var/list/runnable_storytellers = config.get_runnable_storytellers()
var/datum/dynamic_storyteller/picked
for(var/T in runnable_storytellers)
var/datum/dynamic_storyteller/S = T
if(stored_gamemode_votes[initial(S.name)] == 1 && CHECK_BITFIELD(initial(S.flags), FORCE_IF_WON))
picked = S
runnable_storytellers[S] *= round(stored_gamemode_votes[initial(S.name)]*100000,1)
var/datum/dynamic_storyteller/S = pickweightAllowZero(runnable_storytellers)
GLOB.dynamic_storyteller_type = S
if(!picked)
picked = pickweightAllowZero(runnable_storytellers)
GLOB.dynamic_storyteller_type = picked
if("map")
var/datum/map_config/VM = config.maplist[.]
message_admins("The map has been voted for and will change to: [VM.map_name]")
@@ -432,7 +436,7 @@ SUBSYSTEM_DEF(vote)
saved -= usr.ckey
return 0
/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, hideresults, votesystem = PLURALITY_VOTING, forced = FALSE,vote_time = -1)//CIT CHANGE - adds hideresults argument to votes to allow for obfuscated votes
/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, display = display_votes, votesystem = PLURALITY_VOTING, forced = FALSE,vote_time = -1)//CIT CHANGE - adds display argument to votes to allow for obfuscated votes
vote_system = votesystem
if(!mode)
if(started_time)
@@ -452,7 +456,7 @@ SUBSYSTEM_DEF(vote)
SEND_SOUND(world, sound('sound/misc/notice2.ogg'))
reset()
obfuscated = hideresults //CIT CHANGE - adds obfuscated votes
display_votes = display //CIT CHANGE - adds obfuscated votes
switch(vote_type)
if("restart")
choices.Add("Restart Round","Continue Playing")
@@ -503,6 +507,21 @@ SUBSYSTEM_DEF(vote)
if(!option || mode || !usr.client)
break
choices.Add(option)
var/keep_going = TRUE
var/toggles = SHOW_RESULTS|SHOW_VOTES|SHOW_WINNER
while(keep_going)
var/list/choices = list()
for(var/A in GLOB.display_vote_settings)
var/toggletext
var/bitflag = GLOB.display_vote_settings[A]
toggletext = "[toggles & bitflag ? "Show" : "Hide"] [A]"
choices[toggletext] = bitflag
var/chosen = input(usr, "Toggle vote display settings. Cancel to finalize.", toggles) as null|anything in choices
if(!chosen)
keep_going = FALSE
else
toggles ^= choices[chosen]
display_votes = toggles
else
return 0
mode = vote_type
@@ -573,7 +592,7 @@ SUBSYSTEM_DEF(vote)
ivotedforthis = ((C.ckey in voted) && (i in voted[C.ckey]))
if(!votes)
votes = 0
. += "<li>[ivotedforthis ? "<b>" : ""]<a href='?src=[REF(src)];vote=[i]'>[choices[i]]</a> ([obfuscated ? (admin ? "??? ([votes])" : "???") : votes] votes)[ivotedforthis ? "</b>" : ""]</li>" // CIT CHANGE - adds obfuscated votes
. += "<li>[ivotedforthis ? "<b>" : ""]<a href='?src=[REF(src)];vote=[i]'>[choices[i]]</a> ([display_votes & SHOW_VOTES ? votes : (admin ? "??? ([votes])" : "???")] votes)[ivotedforthis ? "</b>" : ""]</li>" // CIT CHANGE - adds obfuscated votes
if(choice_descs.len >= i)
. += "<li>[choice_descs[i]]</li>"
. += "</ul><hr>"

View File

@@ -9,8 +9,8 @@
var/max_distance = 0
var/sleep_time = 3
var/finished = 0
var/target_oldloc = null
var/origin_oldloc = null
var/turf/target_oldloc
var/turf/origin_oldloc
var/static_beam = 0
var/beam_type = /obj/effect/ebeam //must be subtype
var/timing_id = null
@@ -23,13 +23,13 @@
target_oldloc = get_turf(target)
sleep_time = beam_sleep_time
if(origin_oldloc == origin && target_oldloc == target)
static_beam = 1
static_beam = TRUE
max_distance = maxdistance
base_icon = new(beam_icon,beam_icon_state)
icon = beam_icon
icon_state = beam_icon_state
beam_type = btype
if(time < INFINITY)
if(time < INFINITY)
addtimer(CALLBACK(src,.proc/End), time)
/datum/beam/proc/Start()
@@ -42,10 +42,14 @@
return
recalculating = TRUE
timing_id = null
if(origin && target && get_dist(origin,target)<max_distance && origin.z == target.z)
var/origin_turf = get_turf(origin)
var/target_turf = get_turf(target)
if(!static_beam && (origin_turf != origin_oldloc || target_turf != target_oldloc))
var/turf/origin_turf
if(origin)
origin_turf = get_turf(origin)
var/turf/target_turf
if(target)
target_turf = get_turf(target)
if(origin_turf && target_turf && (get_dist(origin_turf, target_turf) < max_distance) && (origin_turf.z == target_turf.z))
if(!static_beam && ((origin_turf != origin_oldloc) || (target_turf != target_oldloc)))
origin_oldloc = origin_turf //so we don't keep checking against their initial positions, leading to endless Reset()+Draw() calls
target_oldloc = target_turf
Reset()
@@ -90,13 +94,15 @@
return ..()
/datum/beam/proc/Draw()
var/Angle = round(Get_Angle(origin,target))
if(!origin_oldloc || !target_oldloc)
return
var/Angle = round(Get_Angle(origin_oldloc,target_oldloc))
var/matrix/rot_matrix = matrix()
rot_matrix.Turn(Angle)
//Translation vector for origin and target
var/DX = (32*target.x+target.pixel_x)-(32*origin.x+origin.pixel_x)
var/DY = (32*target.y+target.pixel_y)-(32*origin.y+origin.pixel_y)
var/DX = (32*target_oldloc.x+target_oldloc.pixel_x)-(32*origin_oldloc.x+origin_oldloc.pixel_x)
var/DY = (32*target_oldloc.y+target_oldloc.pixel_y)-(32*origin_oldloc.y+origin_oldloc.pixel_y)
var/N = 0
var/length = round(sqrt((DX)**2+(DY)**2)) //hypotenuse of the triangle formed by target and origin's displacement

View File

@@ -20,6 +20,7 @@
..()
make_backseats()
get_ghost()
RegisterSignal(M, COMSIG_MOB_DEATH, .proc/revert_to_normal)
/datum/brain_trauma/severe/split_personality/proc/make_backseats()
stranger_backseat = new(owner, src)
@@ -37,23 +38,23 @@
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))
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()
switch_personalities(TRUE)
QDEL_NULL(stranger_backseat)
QDEL_NULL(owner_backseat)
UnregisterSignal(owner, COMSIG_MOB_DEATH)
..()
/datum/brain_trauma/severe/split_personality/proc/switch_personalities()
if(QDELETED(owner) || owner.stat == DEAD || QDELETED(stranger_backseat) || QDELETED(owner_backseat))
/datum/brain_trauma/severe/split_personality/proc/revert_to_normal()
qdel(src)
/datum/brain_trauma/severe/split_personality/proc/switch_personalities(forced = FALSE)
if(QDELETED(owner) || (owner.stat == DEAD && !forced) || QDELETED(stranger_backseat) || QDELETED(owner_backseat))
return
var/mob/living/split_personality/current_backseat
@@ -126,10 +127,6 @@
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()

View File

@@ -72,9 +72,9 @@
return {"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
[head_content]
</head>
<body scroll=auto>

View File

@@ -8,6 +8,8 @@
var/obj/screen/craft/C = new()
C.icon = H.ui_style
H.static_inventory += C
if(!CL.prefs.widescreenpref)
C.screen_loc = ui_boxcraft
CL.screen += C
RegisterSignal(C, COMSIG_CLICK, .proc/component_ui_interact)

View File

@@ -191,20 +191,28 @@
///////Yes, I said humans. No, this won't end well...//////////
/datum/component/riding/human
var/fireman_carrying = FALSE
/datum/component/riding/human/Initialize()
. = ..()
RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee)
/datum/component/riding/human/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE)
var/mob/living/carbon/human/H = parent
H.remove_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING)
. = ..()
var/mob/living/carbon/human/H = parent
if(!length(H.buckled_mobs))
H.remove_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING)
if(!fireman_carrying)
M.Daze(25)
REMOVE_TRAIT(M, TRAIT_MOBILITY_NOUSE, src)
/datum/component/riding/human/vehicle_mob_buckle(datum/source, mob/living/M, force = FALSE)
. = ..()
var/mob/living/carbon/human/H = parent
H.add_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING, multiplicative_slowdown = HUMAN_CARRY_SLOWDOWN)
if(length(H.buckled_mobs))
H.add_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING, multiplicative_slowdown = fireman_carrying? FIREMAN_CARRY_SLOWDOWN : PIGGYBACK_CARRY_SLOWDOWN)
if(fireman_carrying)
ADD_TRAIT(M, TRAIT_MOBILITY_NOUSE, src)
/datum/component/riding/human/proc/on_host_unarmed_melee(atom/target)
var/mob/living/carbon/human/H = parent
@@ -236,11 +244,11 @@
else
return list(TEXT_NORTH = list(0, 6), TEXT_SOUTH = list(0, 6), TEXT_EAST = list(-6, 4), TEXT_WEST = list( 6, 4))
/datum/component/riding/human/force_dismount(mob/living/user)
var/atom/movable/AM = parent
AM.unbuckle_mob(user)
user.DefaultCombatKnockdown(60)
user.Daze(50)
user.visible_message("<span class='warning'>[AM] pushes [user] off of [AM.p_them()]!</span>")
/datum/component/riding/cyborg

View File

@@ -175,6 +175,7 @@
var/html = {"
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>[title]</title>
<style>
body {

View File

@@ -412,13 +412,13 @@
switch(deconstruct_block(getblock(dna.uni_identity, DNA_GENDER_BLOCK), 4))
if(G_MALE)
set_gender(MALE, TRUE)
set_gender(MALE, TRUE, forced = TRUE)
if(G_FEMALE)
set_gender(FEMALE, TRUE)
set_gender(FEMALE, TRUE, forced = TRUE)
if(G_PLURAL)
set_gender(PLURAL, TRUE)
set_gender(PLURAL, TRUE, forced = TRUE)
else
set_gender(NEUTER, TRUE)
set_gender(NEUTER, TRUE, forced = TRUE)
/mob/living/carbon/human/updateappearance(icon_update=1, mutcolor_update=0, mutations_overlay_update=0)
..()

View File

@@ -72,7 +72,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
var/atom/target = locate(href_list["show_flavor"])
var/text = texts_by_atom[target]
if(text)
usr << browse("<HTML><HEAD><TITLE>[target.name]</TITLE></HEAD><BODY><TT>[replacetext(texts_by_atom[target], "\n", "<BR>")]</TT></BODY></HTML>", "window=[target.name];size=500x200")
usr << browse("<HTML><HEAD><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><TITLE>[target.name]</TITLE></HEAD><BODY><TT>[replacetext(texts_by_atom[target], "\n", "<BR>")]</TT></BODY></HTML>", "window=[target.name];size=500x200")
onclose(usr, "[target.name]")
return TRUE
@@ -114,6 +114,9 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
//subtypes with additional hooks for DNA and preferences.
/datum/element/flavor_text/carbon
//list of antagonists etcetera that should have nothing to do with people's snowflakes.
var/static/list/i_dont_even_know_who_you_are = typecacheof(list(/datum/antagonist/abductor, /datum/antagonist/ert,
/datum/antagonist/nukeop, /datum/antagonist/wizard))
/datum/element/flavor_text/carbon/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE)
if(!iscarbon(target))
@@ -122,6 +125,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
if(. == ELEMENT_INCOMPATIBLE)
return
RegisterSignal(target, COMSIG_CARBON_IDENTITY_TRANSFERRED_TO, .proc/update_dna_flavor_text)
RegisterSignal(target, COMSIG_MOB_ANTAG_ON_GAIN, .proc/on_antag_gain)
if(ishuman(target))
RegisterSignal(target, COMSIG_HUMAN_PREFS_COPIED_TO, .proc/update_prefs_flavor_text)
RegisterSignal(target, COMSIG_HUMAN_HARDSET_DNA, .proc/update_dna_flavor_text)
@@ -129,7 +133,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
/datum/element/flavor_text/carbon/Detach(mob/living/carbon/C)
. = ..()
UnregisterSignal(C, list(COMSIG_CARBON_IDENTITY_TRANSFERRED_TO, COMSIG_HUMAN_PREFS_COPIED_TO, COMSIG_HUMAN_HARDSET_DNA, COMSIG_HUMAN_ON_RANDOMIZE))
UnregisterSignal(C, list(COMSIG_CARBON_IDENTITY_TRANSFERRED_TO, COMSIG_MOB_ANTAG_ON_GAIN, COMSIG_HUMAN_PREFS_COPIED_TO, COMSIG_HUMAN_HARDSET_DNA, COMSIG_HUMAN_ON_RANDOMIZE))
/datum/element/flavor_text/carbon/proc/update_dna_flavor_text(mob/living/carbon/C)
texts_by_atom[C] = C.dna.features["flavor_text"]
@@ -144,3 +148,9 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
/datum/element/flavor_text/carbon/proc/unset_flavor(mob/living/carbon/user)
texts_by_atom[user] = ""
/datum/element/flavor_text/carbon/proc/on_antag_gain(mob/living/carbon/user, datum/antagonist/antag)
if(is_type_in_typecache(antag, i_dont_even_know_who_you_are))
texts_by_atom[user] = ""
if(user.dna)
user.dna.features["flavor_text"] = ""

View File

@@ -15,4 +15,4 @@
/datum/element/sword_point/proc/point(datum/source, atom/target, mob/user, proximity_flag, params)
if(!proximity_flag && ismob(target))
user.visible_message("<span class='notice'>[user] points the tip of [source] at [target].</span>", "<span class='notice'>You point the tip of [src] at [target].</span>")
user.visible_message("<span class='notice'>[user] points the tip of [source] at [target].</span>", "<span class='notice'>You point the tip of [source] at [target].</span>")

View File

@@ -37,7 +37,7 @@
D.apply_damage(damage, STAMINA, affecting, armor_block)
log_combat(A, D, "punched (boxing) ")
if(D.getStaminaLoss() > 100)
if(D.getStaminaLoss() > 100 && istype(D.mind?.martial_art, /datum/martial_art/boxing))
var/knockout_prob = (D.getStaminaLoss() + rand(-15,15))*0.75
if((D.stat != DEAD) && prob(knockout_prob))
D.visible_message("<span class='danger'>[A] has knocked [D] out with a haymaker!</span>", \

View File

@@ -18,7 +18,6 @@
name = "Asteroid 1"
description = "I-spy with my little eye, something beginning with R."
/datum/map_template/ruin/space/asteroid2
id = "asteroid2"
suffix = "asteroid2.dmm"
@@ -187,6 +186,7 @@
name = "Abandoned Teleporter"
description = "In space construction the teleporter is often the first system brought online. \
This lonely half built teleporter is a sign of a proposed structure that for one reason or another just never got built."
always_place = TRUE
/datum/map_template/ruin/space/crashedclownship
id = "crashedclownship"
@@ -268,6 +268,7 @@
suffix = "whiteshipdock.dmm"
name = "Whiteship Dock"
description = "An abandoned but functional vessel parked in deep space, ripe for the taking."
always_place = TRUE
/datum/map_template/ruin/space/cat_experiments
id = "meow"
@@ -287,6 +288,7 @@
suffix = "hilbertshoteltestingsite.dmm"
name = "Hilbert Research Facility"
description = "A research facility of great bluespace discoveries. Long since abandoned, willingly or not..."
/datum/map_template/ruin/space/augmentation
id = "augmentationfacility"
suffix = "augmentationfacility.dmm"
@@ -376,13 +378,13 @@
id = "roid8"
suffix = "roid8.dmm"
name = "Dead wizard Roid"
description = "Mineral asteroid. Ft. Dead wizard and toilet paradox bag."
description = "Mineral asteroid. Ft. Dead wizard and toilet wand."
/datum/map_template/ruin/spacenearstation/roid9
id = "roid9"
suffix = "roid9.dmm"
name = "Monitoring Roid"
description = "Mineral asteroid. Ft. Station monitoring, syndie toolbox and erp."
description = "Mineral asteroid. Ft. Station monitoring, toolbox and erp."
/datum/map_template/ruin/spacenearstation/roid10
id = "roid10"

View File

@@ -90,6 +90,7 @@
/datum/status_effect/staggered
id = "staggered"
blocks_sprint = TRUE
alert_type = null
/datum/status_effect/staggered/on_creation(mob/living/new_owner, set_duration)
if(isnum(set_duration))

View File

@@ -88,14 +88,6 @@
if(quirk_holder)
quirk_holder.remove_client_colour(/datum/client_colour/monochrome)
/datum/quirk/libido
name = "Nymphomania"
desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual."
value = 0
mob_trait = TRAIT_PERMABONER
gain_text = "<span class='notice'>You are feeling extra wild.</span>"
lose_text = "<span class='notice'>You don't feel that burning sensation anymore.</span>"
/datum/quirk/maso
name = "Masochism"
desc = "You are aroused by pain."

View File

@@ -39,6 +39,37 @@
var/zfalling = FALSE
/// Either FALSE, [EMISSIVE_BLOCK_GENERIC], or [EMISSIVE_BLOCK_UNIQUE]
var/blocks_emissive = FALSE
///Internal holder for emissive blocker object, do not use directly use blocks_emissive
var/atom/movable/emissive_blocker/em_block
/atom/movable/Initialize(mapload)
. = ..()
switch(blocks_emissive)
if(EMISSIVE_BLOCK_GENERIC)
update_emissive_block()
if(EMISSIVE_BLOCK_UNIQUE)
render_target = ref(src)
em_block = new(src, render_target)
vis_contents += em_block
/atom/movable/Destroy()
QDEL_NULL(em_block)
return ..()
/atom/movable/proc/update_emissive_block()
if(blocks_emissive != EMISSIVE_BLOCK_GENERIC)
return
if(length(managed_vis_overlays))
for(var/a in managed_vis_overlays)
var/obj/effect/overlay/vis/vs
if(vs.plane == EMISSIVE_BLOCKER_PLANE)
SSvis_overlays.remove_vis_overlay(src, list(vs))
break
SSvis_overlays.add_vis_overlay(src, icon, icon_state, EMISSIVE_BLOCKER_LAYER, EMISSIVE_BLOCKER_PLANE)
/atom/movable/proc/can_zFall(turf/source, levels = 1, turf/target, direction)
if(!direction)
direction = DOWN

View File

@@ -23,7 +23,7 @@
antag_flag = ROLE_BLOODSUCKER
false_report_weight = 1
restricted_jobs = list("AI","Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster")
protected_jobs = list("Chaplain", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster")
required_players = 20
required_enemies = 2
recommended_enemies = 4

View File

@@ -88,13 +88,13 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th
user.underwear = chosen_prof.underwear
user.undie_color = chosen_prof.undie_color
user.undershirt = chosen_prof.undershirt
user.shirt_color =chosen_prof.shirt_color
user.shirt_color = chosen_prof.shirt_color
user.socks = chosen_prof.socks
user.socks_color =chosen_prof.socks_color
chosen_dna.transfer_identity(user, 1)
user.updateappearance(mutcolor_update=1)
user.update_body()
user.update_body(TRUE)
user.domutcheck()
//vars hackery. not pretty, but better than the alternative.

View File

@@ -351,5 +351,5 @@ Credit where due:
/obj/item/paper/servant_primer/oui_getcontent(mob/target)
if(!is_servant_of_ratvar(target) && !isobserver(target))
return "<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)]<HR>[stamps]</BODY></HTML>"
return "<HTML><HEAD><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)]<HR>[stamps]</BODY></HTML>"
return ..()

View File

@@ -54,16 +54,16 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
// Current storyteller
var/datum/dynamic_storyteller/storyteller = null
// Threat logging vars
/// The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations
/// Target threat level right now. Events and antags will try to keep the round at this level.
var/threat_level = 0
/// Set at the beginning of the round. Spent by the mode to "purchase" rules.
var/threat = 0
/// The current antag threat. Recalculated every time a ruletype starts or ends.
var/threat = 0
/// Starting threat level, for things that increase it but can bring it back down.
var/initial_threat_level = 0
/// Things that cause a rolling threat adjustment to be displayed at roundend.
var/list/threat_tallies = list()
/// Running information about the threat. Can store text or datum entries.
var/list/threat_log = list()
var/list/threat_log = list()
/// As above, but with info such as refunds.
var/list/threat_log_verbose = list()
/// List of roundstart rules used for selecting the rules.
@@ -127,6 +127,8 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
var/only_ruleset_executed = FALSE
/// Antags rolled by rules so far, to keep track of and discourage scaling past a certain ratio of crew/antags especially on lowpop.
var/antags_rolled = 0
// Arbitrary threat addition, for fudging purposes.
var/added_threat = 50
/datum/game_mode/dynamic/New() // i have NO IDEA if this is the proper way to do this.
..()
@@ -150,11 +152,11 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
GLOB.dynamic_first_midround_delay_max = CONFIG_GET(number/dynamic_first_midround_delay_max)*600
/datum/game_mode/dynamic/admin_panel()
var/list/dat = list("<html><head><title>Game Mode Panel</title></head><body><h1><B>Game Mode Panel</B></h1>")
var/list/dat = list("<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Game Mode Panel</title></head><body><h1><B>Game Mode Panel</B></h1>")
dat += "Dynamic Mode <a href='?_src_=vars;[HrefToken()];Vars=[REF(src)]'>\[VV\]</A><a href='?src=\ref[src];[HrefToken()]'>\[Refresh\]</A><BR>"
dat += "Threat Level: <b>[threat_level]</b><br/>"
dat += "Target threat: <b>[threat_level]</b><br/>"
dat += "Threat to Spend: <b>[threat]</b> <a href='?src=\ref[src];[HrefToken()];adjustthreat=1'>\[Adjust\]</A> <a href='?src=\ref[src];[HrefToken()];threatlog=1'>\[View Log\]</a><br/>"
dat += "Current threat: <b>[threat]</b> <a href='?src=\ref[src];[HrefToken()];adjustthreat=1'>\[Adjust\]</A> <a href='?src=\ref[src];[HrefToken()];threatlog=1'>\[View Log\]</a><br/>"
dat += "<br/>"
dat += "Storyteller: <b>[storyteller.name]</b><br/>"
dat += "Parameters: centre = [GLOB.dynamic_curve_centre] ; width = [GLOB.dynamic_curve_width].<br/>"
@@ -172,9 +174,9 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
else
dat += "none.<br>"
dat += "<br>Injection Timers: (<b>[storyteller.get_injection_chance(TRUE)]%</b> chance)<BR>"
dat += "Latejoin: [(latejoin_injection_cooldown-world.time)>60*10 ? "[round((latejoin_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(latejoin_injection_cooldown-world.time)] seconds"] <a href='?src=\ref[src];[HrefToken()];injectlate=1'>\[Now!\]</a><BR>"
dat += "Midround: [(midround_injection_cooldown-world.time)>60*10 ? "[round((midround_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(midround_injection_cooldown-world.time)] seconds"] <a href='?src=\ref[src];[HrefToken()];injectmid=1'>\[Now!\]</a><BR>"
dat += "Event: [(event_injection_cooldown-world.time)>60*10 ? "[round((event_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(event_injection_cooldown-world.time)] seconds"] <a href='?src=\ref[src];[HrefToken()];forceevent=1'>\[Now!\]</a><BR>"
dat += "Latejoin: [(latejoin_injection_cooldown-world.time)>60*10 ? "[round((latejoin_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(latejoin_injection_cooldown-world.time)/10] seconds"] <a href='?src=\ref[src];[HrefToken()];injectlate=1'>\[Now!\]</a><BR>"
dat += "Midround: [(midround_injection_cooldown-world.time)>60*10 ? "[round((midround_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(midround_injection_cooldown-world.time)/10] seconds"] <a href='?src=\ref[src];[HrefToken()];injectmid=1'>\[Now!\]</a><BR>"
dat += "Event: [(event_injection_cooldown-world.time)>60*10 ? "[round((event_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(event_injection_cooldown-world.time)/10] seconds"] <a href='?src=\ref[src];[HrefToken()];forceevent=1'>\[Now!\]</a><BR>"
usr << browse(dat.Join(), "window=gamemode_panel;size=500x500")
/datum/game_mode/dynamic/Topic(href, href_list)
@@ -261,11 +263,11 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
. += "<b>Uncharted Space</b></center><BR>"
. += "Congratulations and thank you for participating in the NT 'Frontier' space program! Your station is actively orbiting a high value system far from the nearest support stations. Little is known about your region of space, and the opportunity to encounter the unknown invites greater glory. You are encouraged to elevate security as necessary to protect Nanotrasen assets."
set_security_level(SEC_LEVEL_BLUE)
if(80 to 99)
if(80 to 95)
. += "<b>Black Orbit</b></center><BR>"
. += "As part of a mandatory security protocol, we are required to inform you that as a result of your orbital pattern directly behind an astrological body (oriented from our nearest observatory), your station will be under decreased monitoring and support. It is anticipated that your extreme location and decreased surveillance could pose security risks. Avoid unnecessary risks and attempt to keep your station in one piece."
set_security_level(SEC_LEVEL_AMBER)
if(100)
if(96 to 100)
. += "<b>Impending Doom</b></center><BR>"
. += "Your station is somehow in the middle of hostile territory, in clear view of any enemy of the corporation. Your likelihood to survive is low, and station destruction is expected and almost inevitable. Secure any sensitive material and neutralize any enemy you will come across. It is important that you at least try to maintain the station.<BR>"
. += "Good luck."
@@ -330,7 +332,6 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
peaceful_percentage = round(LORENTZ_CUMULATIVE_DISTRIBUTION(relative_threat, GLOB.dynamic_curve_centre, GLOB.dynamic_curve_width), 0.01)*100
threat = threat_level
SSblackbox.record_feedback("tally","dynamic_threat",threat_level,"Initial threat level")
SSblackbox.record_feedback("tally","dynamic_threat",GLOB.dynamic_curve_centre,"Curve centre")
SSblackbox.record_feedback("tally","dynamic_threat",GLOB.dynamic_curve_width,"Curve width")
@@ -340,9 +341,10 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
storyteller = new GLOB.dynamic_storyteller_type // this is where all the initialization happens
storyteller.on_start()
SSblackbox.record_feedback("text","dynamic_storyteller",1,storyteller.name)
message_admins("Dynamic mode parameters for the round:")
message_admins("Centre is [GLOB.dynamic_curve_centre], Width is [GLOB.dynamic_curve_width], Forced extended is [GLOB.dynamic_forced_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].")
message_admins("Stacking limit is [GLOB.dynamic_stacking_limit], Classic secret is [GLOB.dynamic_classic_secret ? "Enabled" : "Disabled"], High population limit is [GLOB.dynamic_high_pop_limit].")
message_admins("Dynamic mode parameters for the round:\n\
Storyteller is [storyteller.name].\n\
Centre is [GLOB.dynamic_curve_centre], Width is [GLOB.dynamic_curve_width], Forced extended is [GLOB.dynamic_forced_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].\n\
Stacking limit is [GLOB.dynamic_stacking_limit], Classic secret is [GLOB.dynamic_classic_secret ? "Enabled" : "Disabled"], High population limit is [GLOB.dynamic_high_pop_limit].")
log_game("DYNAMIC: Dynamic mode parameters for the round:")
log_game("DYNAMIC: Centre is [GLOB.dynamic_curve_centre], Width is [GLOB.dynamic_curve_width], Forced extended is [GLOB.dynamic_forced_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].")
log_game("DYNAMIC: Stacking limit is [GLOB.dynamic_stacking_limit], Classic secret is [GLOB.dynamic_classic_secret ? "Enabled" : "Disabled"], High population limit is [GLOB.dynamic_high_pop_limit].")
@@ -404,7 +406,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
/datum/game_mode/dynamic/post_setup(report)
update_playercounts()
for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules)
addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_roundstart_rule, rule), rule.delay)
..()
@@ -463,7 +465,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
log_game("DYNAMIC: Additional ruleset picked successfully, now [executed_rules.len] picked. [extra_rulesets_amount] remaining.")
else
if(threat >= 50)
if(threat_level >= 50)
message_admins("DYNAMIC: Picking first roundstart ruleset failed. You should report this.")
log_game("DYNAMIC: Picking first roundstart ruleset failed. drafted_rules.len = [drafted_rules.len] and threat = [threat]/[threat_level]")
return FALSE
@@ -509,10 +511,9 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
drafted_rules -= starting_rule
starting_rule.trim_candidates()
var/added_threat = starting_rule.scale_up(extra_rulesets_amount, threat)
starting_rule.scale_up(extra_rulesets_amount, threat)
if (starting_rule.pre_execute())
spend_threat(starting_rule.cost + added_threat)
log_threat("[starting_rule.ruletype] - <b>[starting_rule.name]</b> -[starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat", verbose = TRUE)
log_threat("[starting_rule.ruletype] - <b>[starting_rule.name]</b> [starting_rule.cost + starting_rule.scaled_times * starting_rule.scaling_cost] threat", verbose = TRUE)
if(starting_rule.flags & HIGHLANDER_RULESET)
highlander_executed = TRUE
else if(starting_rule.flags & ONLY_RULESET)
@@ -534,8 +535,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
/datum/game_mode/dynamic/proc/execute_roundstart_rule(sent_rule)
var/datum/dynamic_ruleset/rule = sent_rule
if(rule.execute())
if(rule.persistent)
current_rules += rule
current_rules += rule
SSblackbox.record_feedback("associative","dynamic_rulesets",1,rule.get_blackbox_info())
return TRUE
rule.clean_up() // Refund threat, delete teams and so on.
@@ -607,8 +607,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
if ((forced || (new_rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && new_rule.cost <= threat)))
new_rule.trim_candidates()
if (new_rule.ready(forced))
spend_threat(new_rule.cost)
log_threat("[new_rule.ruletype] - <b>[new_rule.name]</b> -[new_rule.cost] threat", verbose = TRUE)
log_threat("[new_rule.ruletype] - <b>[new_rule.name]</b> [new_rule.cost] threat", verbose = TRUE)
if (new_rule.execute()) // This should never fail since ready() returned 1
if(new_rule.flags & HIGHLANDER_RULESET)
highlander_executed = TRUE
@@ -617,8 +616,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
log_game("DYNAMIC: Making a call to a specific ruleset...[new_rule.name]!")
SSblackbox.record_feedback("associative","dynamic_rulesets",1,new_rule.get_blackbox_info())
executed_rules += new_rule
if (new_rule.persistent)
current_rules += new_rule
current_rules += new_rule
return TRUE
else if (forced)
log_game("DYNAMIC: The ruleset [new_rule.name] couldn't be executed due to lack of eligible players.")
@@ -629,8 +627,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
var/datum/dynamic_ruleset/rule = sent_rule
if (rule.execute())
log_game("DYNAMIC: Injected a [rule.ruletype == "latejoin" ? "latejoin" : "midround"] ruleset [rule.name].")
spend_threat(rule.cost)
log_threat("[rule.ruletype] [rule.name] spent [rule.cost]", verbose = TRUE)
log_threat("[rule.ruletype] [rule.name] added [rule.cost]", verbose = TRUE)
if(rule.flags & HIGHLANDER_RULESET)
highlander_executed = TRUE
else if(rule.flags & ONLY_RULESET)
@@ -649,7 +646,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
return FALSE
/datum/game_mode/dynamic/process()
if (pop_last_updated < world.time - (60 SECONDS))
if (pop_last_updated < world.time - (120 SECONDS))
pop_last_updated = world.time
update_playercounts()
@@ -658,9 +655,9 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
current_rules -= rule
SSblackbox.record_feedback("tally","dynamic",1,"Rulesets finished")
SSblackbox.record_feedback("associative","dynamic_rulesets_finished",1,rule.get_blackbox_info())
storyteller.do_process()
if (midround_injection_cooldown < world.time)
if (GLOB.dynamic_forced_extended)
return
@@ -717,7 +714,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
current_players[CURRENT_OBSERVERS].Add(M)
continue
current_players[CURRENT_DEAD_PLAYERS].Add(M) // Players who actually died (and admins who ghosted, would be nice to avoid counting them somehow)
threat = storyteller.calculate_threat() + added_threat
/// Removes type from the list
/datum/game_mode/dynamic/proc/remove_from_list(list/type_list, type)
for(var/I in type_list)
@@ -767,25 +764,23 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic)
SSblackbox.record_feedback("tally","dynamic",1,"Successful latejoin injections")
latejoin_injection_cooldown = storyteller.get_latejoin_cooldown() + world.time
/// Refund threat, but no more than threat_level.
/datum/game_mode/dynamic/proc/refund_threat(regain)
threat = min(threat_level,threat+regain)
SSblackbox.record_feedback("tally","dynamic_threat",regain,"Refunded threat")
log_threat("[regain] refunded. Threat is now [threat].", verbose = TRUE)
/// Generate threat and increase the threat_level if it goes beyond, capped at 100
/// Increase the threat level.
/datum/game_mode/dynamic/proc/create_threat(gain)
threat = min(100, threat+gain)
if(threat > threat_level)
threat_level = threat
SSblackbox.record_feedback("tally","dynamic_threat",gain,"Created threat")
log_threat("[gain] created. Threat is now [threat] and threat level is now [threat_level].", verbose = TRUE)
threat_level += gain
SSblackbox.record_feedback("tally","dynamic_threat",gain,"Created threat level")
log_threat("[gain] created. Threat level is now [threat_level].", verbose = TRUE)
/// Expend threat, can't fall under 0.
/// Decrease the threat level.
/datum/game_mode/dynamic/proc/remove_threat(loss)
threat_level -= loss
SSblackbox.record_feedback("tally","dynamic_threat",loss,"Removed threat level")
log_threat("[loss] removed. Threat level is now [threat_level].", verbose = TRUE)
/// Fill up more of the threat level.
/datum/game_mode/dynamic/proc/spend_threat(cost)
threat = max(threat-cost,0)
SSblackbox.record_feedback("tally","dynamic_threat",cost,"Threat spent")
log_threat("[cost] spent. Threat is now [threat].", verbose = TRUE)
added_threat += cost
SSblackbox.record_feedback("tally","dynamic_threat",cost,"Threat added")
log_threat("[cost] added. Threat is now [threat].", verbose = TRUE)
/// Turns the value generated by lorentz distribution to threat value between 0 and 100.
/datum/game_mode/dynamic/proc/lorentz_to_threat(x)

View File

@@ -174,8 +174,8 @@
/// This is called if persistent variable is true everytime SSTicker ticks.
/datum/dynamic_ruleset/proc/rule_process()
return
return TRUE
/// Called on game mode pre_setup for roundstart rulesets.
/// Do everything you need to do before job is assigned here.
/// IMPORTANT: ASSIGN special_role HERE
@@ -201,8 +201,7 @@
/// Runs from gamemode process() if ruleset fails to start, like delayed rulesets not getting valid candidates.
/// This one only handles refunding the threat, override in ruleset to clean up the rest.
/datum/dynamic_ruleset/proc/clean_up()
mode.refund_threat(cost + (scaled_times * scaling_cost))
mode.log_threat("[ruletype] [name] refunded [cost + (scaled_times * scaling_cost)]",verbose=TRUE)
return
/// Gets weight of the ruleset
/// Note that this decreases weight if repeatable is TRUE and repeatable_weight_decrease is higher than 0

View File

@@ -106,7 +106,7 @@
if (M.mind && M.mind.assigned_role && (M.mind.assigned_role in enemy_roles) && (!(M in candidates) || (M.mind.assigned_role in restricted_roles)))
job_check++ // Checking for "enemies" (such as sec officers). To be counters, they must either not be candidates to that rule, or have a job that restricts them from it
var/threat = round(mode.threat_level/10)
var/threat = CLAMP(round(mode.threat_level/10),1,10)
if (job_check < required_enemies[threat])
SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough enemy roles")
return FALSE
@@ -216,7 +216,7 @@
var/player_count = mode.current_players[CURRENT_LIVING_PLAYERS].len
var/antag_count = mode.current_players[CURRENT_LIVING_ANTAGS].len
var/max_traitors = round(player_count / 10) + 1
if ((antag_count < max_traitors) && prob(mode.threat_level))//adding traitors if the antag population is getting low
if ((antag_count < max_traitors) && prob(min(100,mode.threat_level)))//adding traitors if the antag population is getting low
return ..()
else
return FALSE
@@ -315,7 +315,6 @@
/datum/dynamic_ruleset/midround/from_ghosts/wizard
name = "Wizard"
config_tag = "midround_wizard"
persistent = TRUE
antag_datum = /datum/antagonist/wizard
antag_flag = ROLE_WIZARD
enemy_roles = list("Security Officer","Detective","Head of Security", "Captain")
@@ -344,7 +343,6 @@
/datum/dynamic_ruleset/midround/from_ghosts/wizard/rule_process() // i can literally copy this from are_special_antags_dead it's great
if(isliving(wizard.current) && wizard.current.stat!=DEAD)
return FALSE
for(var/obj/item/phylactery/P in GLOB.poi_list) //TODO : IsProperlyDead()
if(P.mind && P.mind.has_antag_datum(/datum/antagonist/wizard))
return FALSE
@@ -417,7 +415,7 @@
required_candidates = 1
blocking_rules = list(/datum/dynamic_ruleset/roundstart/clockcult)
weight = 4
cost = 10
cost = 20
requirements = list(101,101,101,80,60,50,50,50,50,50)
high_population_requirement = 50
repeatable = TRUE
@@ -666,9 +664,6 @@
Mind.transfer_to(Ninja)
var/datum/antagonist/ninja/ninjadatum = new
ninjadatum.helping_station = pick(TRUE,FALSE)
if(ninjadatum.helping_station)
mode.refund_threat(cost+5)
mode.log_threat("Ninja was helping station; [cost+5] cost refunded.")
Mind.add_antag_datum(ninjadatum)
if(Ninja.mind != Mind) //something has gone wrong!

View File

@@ -802,11 +802,10 @@
/datum/dynamic_ruleset/roundstart/bloodsucker
name = "Bloodsuckers"
config_tag = "bloodsucker"
persistent = TRUE
antag_flag = ROLE_BLOODSUCKER
antag_datum = ANTAG_DATUM_BLOODSUCKER
minimum_required_age = 0
protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster")
protected_roles = list("Chaplain", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster")
restricted_roles = list("Cyborg", "AI")
required_candidates = 1
weight = 2

View File

@@ -5,17 +5,19 @@
var/list/property_weights = list() // See below.
var/curve_centre = 0 // As GLOB.dynamic_curve_centre.
var/curve_width = 1.8 // As GLOB.dynamic_curve_width.
var/forced_threat_level = -1
var/forced_threat_level = -1 // As GLOB.dynamic_forced_threat_level
/*
NO_ASSASSIN: Will not have permanent assassination targets.
WAROPS_ALWAYS_ALLOWED: Can always do warops, regardless of threat level.
USE_PREF_WEIGHTS: Will use peoples' preferences to change the threat centre.
FORCE_IF_WON: If this mode won the vote, forces it
*/
var/flags = 0
var/dead_player_weight = 1 // How much dead players matter for threat calculation
var/weight = 3 // Weights for randomly picking storyteller. Multiplied by score after voting.
var/event_frequency_lower = 6 MINUTES // How rare events will be, at least.
var/event_frequency_upper = 20 MINUTES // How rare events will be, at most.
var/pop_antag_ratio = 5 // How many non-antags there should be vs antags.
var/min_players = -1 // How many players are required for this one to start.
var/datum/game_mode/dynamic/mode = null // Cached as soon as it's made, by dynamic.
/**
@@ -39,6 +41,29 @@ Property weights are:
var/event_injection_cooldown_middle = 0.5*(GLOB.dynamic_event_delay_max + GLOB.dynamic_event_delay_min)
mode.event_injection_cooldown = (round(CLAMP(EXP_DISTRIBUTION(event_injection_cooldown_middle), GLOB.dynamic_event_delay_min, GLOB.dynamic_event_delay_max)) + world.time)
/datum/dynamic_storyteller/proc/calculate_threat()
var/threat = 0
for(var/datum/antagonist/A in GLOB.antagonists)
if(A?.owner?.current && A.owner.current.stat != DEAD)
threat += A.threat()
for(var/r in SSevents.running)
var/datum/round_event/R = r
threat += R.threat()
for(var/mob/living/simple_animal/hostile/H in GLOB.mob_living_list)
var/turf/T = get_turf(H)
if(H.stat != DEAD && is_station_level(T.z) && !("Station" in H.faction))
threat += H.threat()
for (var/mob/M in mode.current_players[CURRENT_LIVING_PLAYERS])
if (M?.mind?.assigned_role && M.stat != DEAD)
var/datum/job/J = SSjob.GetJob(M.mind.assigned_role)
if(J)
if(length(M.mind.antag_datums))
threat += J.GetThreat()
else
threat -= J.GetThreat()
threat += (mode.current_players[CURRENT_DEAD_PLAYERS].len)*dead_player_weight
return round(threat,0.1)
/datum/dynamic_storyteller/proc/do_process()
return
@@ -83,30 +108,14 @@ Property weights are:
if(mode.forced_injection)
mode.forced_injection = !dry_run
return 100
var/chance = 0
// If the high pop override is in effect, we reduce the impact of population on the antag injection chance
var/high_pop_factor = (mode.current_players[CURRENT_LIVING_PLAYERS].len >= GLOB.dynamic_high_pop_limit)
var/max_pop_per_antag = max(pop_antag_ratio,15 - round(mode.threat_level/10) - round(mode.current_players[CURRENT_LIVING_PLAYERS].len/(high_pop_factor ? 10 : 5)))
if (!mode.current_players[CURRENT_LIVING_ANTAGS].len)
chance += 80 // No antags at all? let's boost those odds!
else
var/current_pop_per_antag = mode.current_players[CURRENT_LIVING_PLAYERS].len / mode.current_players[CURRENT_LIVING_ANTAGS].len
if (current_pop_per_antag > max_pop_per_antag)
chance += min(50, 25+10*(current_pop_per_antag-max_pop_per_antag))
else
chance += 25-10*(max_pop_per_antag-current_pop_per_antag)
if (mode.current_players[CURRENT_DEAD_PLAYERS].len > mode.current_players[CURRENT_LIVING_PLAYERS].len)
chance -= 30 // More than half the crew died? ew, let's calm down on antags
if (mode.threat > 70)
chance += 15
if (mode.threat < 30)
chance -= 15
return round(max(0,chance))
var/threat_perc = mode.threat/mode.threat_level
return round(max(0,100*(1-(threat_perc*threat_perc*threat_perc))))
/datum/dynamic_storyteller/proc/roundstart_draft()
var/list/drafted_rules = list()
for (var/datum/dynamic_ruleset/roundstart/rule in mode.roundstart_rules)
if (rule.acceptable(mode.roundstart_pop_ready, mode.threat_level) && mode.threat >= rule.cost) // If we got the population and threat required
if (rule.acceptable(mode.roundstart_pop_ready, mode.threat_level)) // If we got the population and threat required
rule.candidates = mode.candidates.Copy()
rule.trim_candidates()
if (rule.ready() && rule.candidates.len > 0)
@@ -114,32 +123,41 @@ Property weights are:
for(var/property in property_weights)
if(property in rule.property_weights) // just treat it as 0 if it's not in there
property_weight += rule.property_weights[property] * property_weights[property]
drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult
drafted_rules[rule] = (rule.get_weight() * property_weight)*rule.weight_mult
return drafted_rules
/datum/dynamic_storyteller/proc/midround_draft()
var/list/drafted_rules = list()
for (var/datum/dynamic_ruleset/midround/rule in mode.midround_rules)
// if there are antags OR the rule is an antag rule, antag_acceptable will be true.
if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost)
if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level))
// Classic secret : only autotraitor/minor roles
if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET)))
continue
rule.trim_candidates()
var/cost_difference = abs(rule.cost-(mode.threat_level-mode.threat))
/* Basically, the closer the cost is to the current threat-level-away-from-threat, the more likely it is to
pick this particular ruleset.
Let's use a toy example: there's 60 threat level and 10 threat spent.
We want to pick a ruleset that's close to that, so we run the below equation, on two rulesets.
Ruleset 1 has 30 cost, ruleset 2 has 5 cost.
When we do the math, ruleset 1's threat_weight is 0.538, and ruleset 2's is 0.238, meaning ruleset 1
is 2.26 times as likely to be picked, all other things considered.
Of course, we don't want it to GUARANTEE the closest, that's no fun, so it's just a weight.
*/
var/threat_weight = 1-abs(1-LOGISTIC_FUNCTION(2,0.05,cost_difference,0))
if (rule.ready())
var/property_weight = 0
for(var/property in property_weights)
if(property in rule.property_weights)
property_weight += rule.property_weights[property] * property_weights[property]
drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult
else if(mode.threat < rule.cost)
SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend")
drafted_rules[rule] = round(((rule.get_weight() * property_weight)*rule.weight_mult*threat_weight)*1000,1)
return drafted_rules
/datum/dynamic_storyteller/proc/latejoin_draft(mob/living/carbon/human/newPlayer)
var/list/drafted_rules = list()
for (var/datum/dynamic_ruleset/latejoin/rule in mode.latejoin_rules)
if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost)
if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level - mode.threat))
// Classic secret : only autotraitor/minor roles
if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET)))
continue
@@ -150,56 +168,54 @@ Property weights are:
rule.candidates = list(newPlayer)
rule.trim_candidates()
var/cost_difference = abs(rule.cost-(mode.threat_level-mode.threat))
var/threat_weight = 1-abs(1-(LOGISTIC_FUNCTION(2,0.05,cost_difference,0)))
if (rule.ready())
var/property_weight = 0
for(var/property in property_weights)
if(property in rule.property_weights)
property_weight += rule.property_weights[property] * property_weights[property]
drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult
else if(mode.threat < rule.cost)
SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend")
drafted_rules[rule] = round(((rule.get_weight() * property_weight)*rule.weight_mult*threat_weight)*1000,1)
return drafted_rules
/datum/dynamic_storyteller/proc/event_draft()
var/list/drafted_rules = list()
for(var/datum/dynamic_ruleset/event/rule in mode.events)
if(rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost)
if(rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && (mode.threat_level - mode.threat) >= rule.cost)
if(rule.ready())
var/property_weight = 0
for(var/property in property_weights)
if(property in rule.property_weights)
property_weight += rule.property_weights[property] * property_weights[property]
drafted_rules[rule] = (rule.get_weight() + property_weight)*rule.weight_mult
else if(mode.threat < rule.cost)
SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough threat to spend")
return drafted_rules
/datum/dynamic_storyteller/cowabunga
/datum/dynamic_storyteller/chaotic
name = "Chaotic"
config_tag = "chaotic"
curve_centre = 10
desc = "High chaos modes. Revs, wizard, clock cult. Multiple antags at once. Chaos is kept up all round."
property_weights = list("extended" = -1, "chaos" = 10)
property_weights = list("extended" = -1, "chaos" = 1)
weight = 1
event_frequency_lower = 2 MINUTES
event_frequency_upper = 10 MINUTES
flags = WAROPS_ALWAYS_ALLOWED
pop_antag_ratio = 4
flags = WAROPS_ALWAYS_ALLOWED | FORCE_IF_WON
min_players = 40
var/refund_cooldown = 0
/datum/dynamic_storyteller/cowabunga/get_midround_cooldown()
/datum/dynamic_storyteller/chaotic/do_process()
if(refund_cooldown < world.time)
mode.create_threat(20)
mode.log_threat("Chaotic storyteller ramped up the chaos. Threat level is now [mode.threat_level].")
refund_cooldown = world.time + 20 MINUTES
/datum/dynamic_storyteller/chaotic/get_midround_cooldown()
return ..() / 4
/datum/dynamic_storyteller/cowabunga/get_latejoin_cooldown()
/datum/dynamic_storyteller/chaotic/get_latejoin_cooldown()
return ..() / 4
/datum/dynamic_storyteller/cowabunga/do_process()
if(refund_cooldown < world.time)
mode.refund_threat(40)
mode.log_threat("Chaotic storyteller refunded 40 threat. Threat is now [mode.threat].")
refund_cooldown = world.time + 1200 SECONDS
/datum/dynamic_storyteller/team
name = "Teamwork"
config_tag = "teamwork"
@@ -207,6 +223,7 @@ Property weights are:
curve_centre = 2
curve_width = 1.5
weight = 2
min_players = 30
flags = WAROPS_ALWAYS_ALLOWED
property_weights = list("valid" = 3, "trust" = 5)
@@ -223,23 +240,93 @@ Property weights are:
flags = WAROPS_ALWAYS_ALLOWED
property_weights = list("valid" = 1, "conversion" = 20)
/datum/dynamic_storyteller/classic
/datum/dynamic_storyteller/random
name = "Random"
config_tag = "random"
desc = "No special weights attached. Anything goes."
weight = 4
curve_width = 4
pop_antag_ratio = 7
flags = USE_PREF_WEIGHTS
weight = 1
desc = "No weighting at all; every ruleset has the same chance of happening. Cooldowns vary wildly. As random as it gets."
forced_threat_level = 100
/datum/dynamic_storyteller/random/get_midround_cooldown()
return rand(GLOB.dynamic_midround_delay_min/2, GLOB.dynamic_midround_delay_max*2)
/datum/dynamic_storyteller/random/get_event_cooldown()
return rand(GLOB.dynamic_event_delay_min/2, GLOB.dynamic_event_delay_max*2)
/datum/dynamic_storyteller/random/get_latejoin_cooldown()
return rand(GLOB.dynamic_latejoin_delay_min/2, GLOB.dynamic_latejoin_delay_max*2)
/datum/dynamic_storyteller/random/get_injection_chance()
return 50 // i would do rand(0,100) but it's actually the same thing when you do the math
/datum/dynamic_storyteller/random/calculate_threat()
return 0 // what IS threat
/datum/dynamic_storyteller/random/roundstart_draft()
var/list/drafted_rules = list()
for (var/datum/dynamic_ruleset/roundstart/rule in mode.roundstart_rules)
if (rule.acceptable(mode.roundstart_pop_ready, mode.threat_level)) // If we got the population and threat required
rule.candidates = mode.candidates.Copy()
rule.trim_candidates()
if (rule.ready() && rule.candidates.len > 0)
drafted_rules[rule] = 1
return drafted_rules
/datum/dynamic_storyteller/random/midround_draft()
var/list/drafted_rules = list()
for (var/datum/dynamic_ruleset/midround/rule in mode.midround_rules)
if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level))
// Classic secret : only autotraitor/minor roles
if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET)))
continue
rule.trim_candidates()
if (rule.ready())
drafted_rules[rule] = 1
return drafted_rules
/datum/dynamic_storyteller/random/latejoin_draft(mob/living/carbon/human/newPlayer)
var/list/drafted_rules = list()
for (var/datum/dynamic_ruleset/latejoin/rule in mode.latejoin_rules)
if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level))
// Classic secret : only autotraitor/minor roles
if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET)))
continue
// No stacking : only one round-ender, unless threat level > stacking_limit.
if (mode.threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking)
if(rule.flags & HIGHLANDER_RULESET && mode.highlander_executed)
continue
rule.candidates = list(newPlayer)
rule.trim_candidates()
if (rule.ready())
drafted_rules[rule] = 1
return drafted_rules
/datum/dynamic_storyteller/random/event_draft()
var/list/drafted_rules = list()
for(var/datum/dynamic_ruleset/event/rule in mode.events)
if(rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level))
if(rule.ready())
drafted_rules[rule] = 1
return drafted_rules
/datum/dynamic_storyteller/story
name = "Story"
config_tag = "story"
desc = "Antags with options for loadouts and gimmicks. Traitor, wizard, nukies."
desc = "Antags with options for loadouts and gimmicks. Traitor, wizard, nukies. Has a buildup-climax-falling action threat curve."
weight = 2
curve_width = 2
pop_antag_ratio = 7
property_weights = list("story_potential" = 10)
property_weights = list("story_potential" = 2)
/datum/dynamic_storyteller/story/do_process()
var/current_time = (world.time / SSautotransfer.targettime)*180
mode.threat_level = round(mode.initial_threat_level*(sin(current_time)+0.5),0.1)
/datum/dynamic_storyteller/classic
name = "Classic"
config_tag = "classic"
desc = "No special antagonist weights. Good variety, but not like random. Uses your chaos preference to weight."
flags = USE_PREF_WEIGHTS
/datum/dynamic_storyteller/suspicion
name = "Intrigue"
@@ -247,8 +334,8 @@ Property weights are:
desc = "Antags that instill distrust in the crew. Traitors, bloodsuckers."
weight = 2
curve_width = 2
pop_antag_ratio = 7
property_weights = list("trust" = -5)
dead_player_weight = 2
property_weights = list("trust" = -3)
/datum/dynamic_storyteller/liteextended
name = "Calm"
@@ -256,10 +343,10 @@ Property weights are:
desc = "Low-chaos round. Few antags. No conversion."
curve_centre = -3
curve_width = 0.5
flags = NO_ASSASSIN
flags = NO_ASSASSIN | FORCE_IF_WON
weight = 1
pop_antag_ratio = 10
property_weights = list("extended" = 1, "chaos" = -1, "valid" = -1, "story_potential" = 1, "conversion" = -10)
dead_player_weight = 5
property_weights = list("extended" = 2, "chaos" = -1, "valid" = -1, "story_potential" = 1, "conversion" = -10)
/datum/dynamic_storyteller/no_antag
name = "Extended"
@@ -267,7 +354,7 @@ Property weights are:
desc = "No standard antags. Threatening events may still spawn."
curve_centre = -5
curve_width = 0.5
flags = NO_ASSASSIN
flags = NO_ASSASSIN | FORCE_IF_WON
weight = 1
property_weights = list("extended" = 2)

View File

@@ -323,7 +323,7 @@
var/free_tickets = CONFIG_GET(number/default_antag_tickets)
//Max extra tickets you can use
var/additional_tickets = CONFIG_GET(number/max_tickets_per_roll)
var/list/ckey_to_mind = list() //this is admittedly shitcode but I'm webediting
var/list/prev_tickets = SSpersistence.antag_rep //cache for hyper-speed in theory. how many tickets someone has stored
var/list/curr_tickets = list() //how many tickets someone has for *this* antag roll, so with the free tickets
@@ -337,7 +337,7 @@
continue
curr_tickets[mind_ckey] = amount
ckey_to_mind[mind_ckey] = M //make sure we can look them up after picking
if(!return_list) //return a single guy
var/ckey
if(length(curr_tickets))
@@ -584,7 +584,7 @@
//By default nuke just ends the round
/datum/game_mode/proc/OnNukeExplosion(off_station)
nuke_off_station = off_station
if(off_station < 2)
if(!off_station)
station_was_nuked = TRUE //Will end the round on next check.
//Additional report section in roundend report

View File

@@ -4,6 +4,7 @@
can_coexist_with_others = FALSE
job_rank = ROLE_GANG
antagpanel_category = "Gang"
threat = 2
var/hud_type = "gangster"
var/message_name = "Gangster"
var/datum/team/gang/gang
@@ -167,6 +168,7 @@
name = "Gang boss"
hud_type = "gang_boss"
message_name = "Leader"
threat = 10
/datum/antagonist/gang/boss/on_gain()
..()
@@ -474,4 +476,4 @@
#undef MAXIMUM_RECALLS
#undef INFLUENCE_INTERVAL
#undef INFLUENCE_INTERVAL

View File

@@ -240,10 +240,10 @@
to_chat(AI, "<b>[U]</b> holds <a href='?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...")
else
to_chat(AI, "<b><a href='?src=[REF(AI)];track=[html_encode(U.name)]'>[U]</a></b> holds <a href='?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...")
AI.last_paper_seen = "<HTML><HEAD><TITLE>[itemname]</TITLE></HEAD><BODY><TT>[info]</TT></BODY></HTML>"
AI.last_paper_seen = "<HTML><HEAD><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><TITLE>[itemname]</TITLE></HEAD><BODY><TT>[info]</TT></BODY></HTML>"
else if (O.client && O.client.eye == src)
to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...")
O << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", itemname, info), text("window=[]", itemname))
O << browse(text("<HTML><HEAD<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", itemname, info), text("window=[]", itemname))
return
else if(istype(I, /obj/item/camera_bug))

View File

@@ -180,6 +180,7 @@
//Get the clone body ready
maim_clone(H)
ADD_TRAIT(H, TRAIT_MUTATION_STASIS, CLONING_POD_TRAIT)
ADD_TRAIT(H, TRAIT_STABLEHEART, CLONING_POD_TRAIT)
ADD_TRAIT(H, TRAIT_STABLELIVER, CLONING_POD_TRAIT)
ADD_TRAIT(H, TRAIT_EMOTEMUTE, CLONING_POD_TRAIT)
@@ -369,6 +370,7 @@
return
REMOVE_TRAIT(mob_occupant, TRAIT_STABLEHEART, CLONING_POD_TRAIT)
REMOVE_TRAIT(mob_occupant, TRAIT_MUTATION_STASIS, CLONING_POD_TRAIT)
REMOVE_TRAIT(mob_occupant, TRAIT_STABLELIVER, CLONING_POD_TRAIT)
REMOVE_TRAIT(mob_occupant, TRAIT_EMOTEMUTE, CLONING_POD_TRAIT)
REMOVE_TRAIT(mob_occupant, TRAIT_MUTE, CLONING_POD_TRAIT)

View File

@@ -62,7 +62,7 @@
if(stat & BROKEN)
overlay_state = "[icon_state]_broken"
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir, alpha=128)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha=128)
/obj/machinery/computer/power_change()
..()

View File

@@ -94,4 +94,4 @@
overlay_state = "alert:0"
. |= overlay_state
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir, alpha=128)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha=128)

View File

@@ -11,16 +11,19 @@
/obj/machinery/computer/robotics/proc/can_control(mob/user, mob/living/silicon/robot/R)
if(!istype(R))
return 0
return FALSE
if(isAI(user))
if (R.connected_ai != user)
return 0
return FALSE
if(iscyborg(user))
if (R != user)
return 0
return FALSE
if(R.scrambledcodes)
return 0
return 1
return FALSE
if (hasSiliconAccessInArea(user) && !issilicon(user))
if (!Adjacent(user))
return FALSE
return TRUE
/obj/machinery/computer/robotics/ui_interact(mob/user)
. = ..()

View File

@@ -94,4 +94,4 @@
overlay_state = "alert:0"
. |= overlay_state
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir, alpha=128)
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha=128)

View File

@@ -1,13 +1,68 @@
/obj/machinery/door/poddoor/shutters
gender = PLURAL
name = "shutters"
desc = "Heavy duty metal shutters that open mechanically."
desc = "Mechanical metal shutters operated by a button with a magnetic seal, keeping them airtight."
icon = 'icons/obj/doors/shutters.dmi'
layer = SHUTTER_LAYER
closingLayer = SHUTTER_LAYER
armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 75, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 70)
damage_deflection = 20
max_integrity = 100
/obj/machinery/door/poddoor/shutters/preopen
icon_state = "open"
density = FALSE
opacity = 0
// The below shutters are the original ones from the TG codebase. They are remaining as "secure" shutters. If anyone wants to improve their animation, feel free.
// The original shutters are now shutters_old.dmi; copy the naming format of the files into new a new .dmi to add new shutters that work with the poddoor code for animating the doors.
// Originally, the shutters were reskins of blast doors. Eighty hits with the Cap's sabre to destroy one shutter is far too powerful considering shutters cannot be deconstructed (yet).
// If you're a mapper and want super strong shutter, use the 'old' ones.
/obj/machinery/door/poddoor/shutters/old
name = "strong shutters"
desc = "These shutters have an armoured frame; it looks like plasteel. These shutters look robust enough to survive explosions."
icon = 'icons/obj/doors/shutters_old.dmi'
icon_state = "closed"
armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 75, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 70)
max_integrity = 300
/obj/machinery/door/poddoor/shutters/old/preopen
icon_state = "open"
density = FALSE
opacity = 0
// End of old shutter stuff. Credit for the old shutter sprites to TG.
/obj/machinery/door/poddoor/shutters/radiation
name = "radiation shutters"
desc = "Lead-lined shutters painted yellow with a radioactive hazard symbol on it. Blocks out most radiation"
icon = 'icons/obj/doors/shutters_radiation.dmi'
icon_state = "closed"
rad_insulation = 0.2
/obj/machinery/door/poddoor/shutters/radiation/preopen
icon_state = "open"
density = FALSE
opacity = 0
rad_insulation = 1
/obj/machinery/door/poddoor/shutters/radiation/do_animate(animation)
..()
switch(animation)
if("opening")
rad_insulation = 1
if("closing")
rad_insulation = 0.2
/obj/machinery/door/poddoor/shutters/window
name = "windowed shutters"
desc = "Mechanical shutters that have some form of plastic window in them, allowing you to see through the shutters at all times."
icon = 'icons/obj/doors/shutters_window.dmi'
icon_state = "closed"
opacity = 0
glass = 1
/obj/machinery/door/poddoor/shutters/window/preopen
icon_state = "open"
density = FALSE

View File

@@ -77,23 +77,23 @@
if(is_station_level(z))
. += "fire_[GLOB.security_level]"
SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
else
. += "fire_[SEC_LEVEL_GREEN]"
SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
var/area/A = src.loc
A = A.loc
if(!detecting || !A.fire)
. += "fire_off"
SSvis_overlays.add_vis_overlay(src, icon, "fire_off", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
SSvis_overlays.add_vis_overlay(src, icon, "fire_off", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
else if(obj_flags & EMAGGED)
. += "fire_emagged"
SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
else
. += "fire_on"
SSvis_overlays.add_vis_overlay(src, icon, "fire_on", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir)
SSvis_overlays.add_vis_overlay(src, icon, "fire_on", EMISSIVE_LAYER, EMISSIVE_PLANE, dir)
/obj/machinery/firealarm/emp_act(severity)
. = ..()

View File

@@ -141,7 +141,7 @@
if(href_list["photo"])
var/mob/M = usr
M << browse_rsc(picture.picture_image, "pda_photo.png")
M << browse("<html><head><title>PDA Photo</title></head>" \
M << browse("<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>PDA Photo</title></head>" \
+ "<body style='overflow:hidden;margin:0;text-align:center'>" \
+ "<img src='pda_photo.png' width='192' style='-ms-interpolation-mode:nearest-neighbor' />" \
+ "</body></html>", "window=pdaphoto;size=[picture.psize_x]x[picture.psize_y];can-close=true")

View File

@@ -42,7 +42,9 @@
/obj/mecha/combat/honker/get_stats_html()
var/output = {"<html>
<head><title>[src.name] data</title>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>[src.name] data</title>
<style>
body {color: #00ff00; background: #32CD32; font-family:"Courier",monospace; font-size: 12px;}
hr {border: 1px solid #0f0; color: #fff; background-color: #000;}

View File

@@ -125,6 +125,7 @@
return
return {"<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>[patient] statistics</title>
<script language='javascript' type='text/javascript'>
[js_byjax]
@@ -259,7 +260,8 @@
. = ..()
create_reagents(max_volume, NO_REACT)
syringes = new
known_reagents = list(/datum/reagent/medicine/epinephrine = "Epinephrine", /datum/reagent/medicine/charcoal = "Charcoal")
known_reagents = list(/datum/reagent/medicine/epinephrine = "Epinephrine", /datum/reagent/medicine/charcoal = "Charcoal", /datum/reagent/medicine/prussian_blue = "Prussian Blue", \
/datum/reagent/medicine/dexalin = "Dexalin", /datum/reagent/medicine/insulin = "Insulin", /datum/reagent/medicine/kelotane = "Kelotane", /datum/reagent/medicine/bicaridine = "Bicaridine")
processed_reagents = new
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/detach()
@@ -390,6 +392,7 @@
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/get_reagents_page()
var/output = {"<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>Reagent Synthesizer</title>
<script language='javascript' type='text/javascript'>
[js_byjax]

View File

@@ -297,7 +297,8 @@
left_part += "<hr><a href='?src=[REF(src)];screen=main'>Return</a>"
dat = {"<html>
<head>
<title>[name]</title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>[name] data</title>
<style>
.res_name {font-weight: bold; text-transform: capitalize;}
.red {color: #f00;}

View File

@@ -11,7 +11,7 @@
/obj/machinery/computer/mecha/ui_interact(mob/user)
. = ..()
var/dat = "<html><head><title>[src.name]</title><style>h3 {margin: 0px; padding: 0px;}</style></head><body>"
var/dat = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>[src.name]</title><style>h3 {margin: 0px; padding: 0px;}</style></head><body>"
if(screen == 0)
dat += "<h3>Tracking beacons data</h3>"
var/list/trackerlist = list()

View File

@@ -5,7 +5,9 @@
/obj/mecha/proc/get_stats_html()
. = {"<html>
<head><title>[src.name] data</title>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>[name] data</title>
<style>
body {color: #00ff00; background: #000000; font-family:"Lucida Console",monospace; font-size: 12px;}
hr {border: 1px solid #0f0; color: #0f0; background-color: #0f0;}
@@ -149,7 +151,7 @@
/obj/mecha/proc/get_log_html()
. = "<html><head><title>[src.name] Log</title></head><body style='font: 13px 'Courier', monospace;'>"
. = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>[src.name] Log</title></head><body style='font: 13px 'Courier', monospace;'>"
for(var/list/entry in log)
. += {"<div style='font-weight: bold;'>[entry["time"]] [time2text(entry["date"],"MMM DD")] [entry["year"]]</div>
<div style='margin-left:15px; margin-bottom:10px;'>[entry["message"]]</div>
@@ -162,7 +164,9 @@
if(!id_card || !user)
return
. = {"<html>
<head><style>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
h1 {font-size:15px;margin-bottom:4px;}
body {color: #00ff00; background: #000000; font-family:"Courier New", Courier, monospace; font-size: 12px;}
a {color:#0f0;}
@@ -192,6 +196,7 @@
return
. = {"<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
body {color: #00ff00; background: #000000; font-family:"Courier New", Courier, monospace; font-size: 12px;}
a {padding:2px 5px; background:#32CD32;color:#000;display:block;margin:2px;text-align:center;text-decoration:none;}

View File

@@ -7,6 +7,8 @@
move_resist = INFINITY
obj_flags = 0
vis_flags = NONE
/obj/effect/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
return

View File

@@ -7,6 +7,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
/obj/item
name = "item"
icon = 'icons/obj/items_and_weapons.dmi'
blocks_emissive = EMISSIVE_BLOCK_GENERIC
var/item_state = null
var/lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
var/righthand_file = 'icons/mob/inhands/items_righthand.dmi'
@@ -34,7 +35,12 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/usesound = null
var/throwhitsound = null
var/w_class = WEIGHT_CLASS_NORMAL
/// The amount of stamina it takes to swing an item in a normal melee attack do not lie to me and say it's for realism because it ain't. If null it will autocalculate from w_class.
var/total_mass //Total mass in arbitrary pound-like values. If there's no balance reasons for an item to have otherwise, this var should be the item's weight in pounds.
/// How long, in deciseconds, this staggers for, if null it will autocalculate from w_class and force. Unlike total mass this supports 0 and negatives.
var/stagger_force
var/slot_flags = 0 //This is used to determine on which slots an item can fit.
pass_flags = PASSTABLE
pressure_resistance = 4

View File

@@ -13,7 +13,8 @@
/obj/item/areaeditor/attack_self(mob/user)
add_fingerprint(user)
. = "<BODY><HTML><head><title>[src]</title></head> \
. = "<BODY><HTML><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>\
<title>[src]</title></head> \
<h2>[station_name()] [src.name]</h2> \
<small>[fluffnotice]</small><hr>"
switch(get_area_type())

View File

@@ -271,7 +271,7 @@ GLOBAL_LIST_EMPTY(PDAs)
user.set_machine(src)
var/dat = "<!DOCTYPE html><html><head><title>Personal Data Assistant</title><link href=\"https://fonts.googleapis.com/css?family=Orbitron|Share+Tech+Mono|VT323\" rel=\"stylesheet\"></head><body bgcolor=\"" + background_color + "\"><style>body{" + font_mode + "}ul,ol{list-style-type: none;}a, a:link, a:visited, a:active, a:hover { color: #000000;text-decoration:none; }img {border-style:none;}a img{padding-right: 9px;}</style>"
var/dat = "<!DOCTYPE html><html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Personal Data Assistant</title><link href=\"https://fonts.googleapis.com/css?family=Orbitron|Share+Tech+Mono|VT323\" rel=\"stylesheet\"></head><body bgcolor=\"" + background_color + "\"><style>body{" + font_mode + "}ul,ol{list-style-type: none;}a, a:link, a:visited, a:active, a:hover { color: #000000;text-decoration:none; }img {border-style:none;}a img{padding-right: 9px;}</style>"
dat += assets.css_tag()
dat += emoji_s.css_tag()
@@ -1192,7 +1192,7 @@ GLOBAL_LIST_EMPTY(PDAs)
if(incapacitated())
return
if(!isnull(aiPDA))
var/HTML = "<html><head><title>AI PDA Message Log</title></head><body>[aiPDA.tnote]</body></html>"
var/HTML = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>AI PDA Message Log</title></head><body>[aiPDA.tnote]</body></html>"
user << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0")
else
to_chat(user, "You do not have a PDA. You should make an issue report about this.")

View File

@@ -170,7 +170,7 @@
flags_1 = CONDUCT_1
brightness_on = 2
light_color = "#FFDDCC"
flashlight_power = 0.3
flashlight_power = 0.5
var/holo_cooldown = 0
/obj/item/flashlight/pen/afterattack(atom/target, mob/user, proximity_flag)
@@ -227,15 +227,12 @@
custom_materials = null
on = TRUE
// green-shaded desk lamp
/obj/item/flashlight/lamp/green
desc = "A classic green-shaded desk lamp."
icon_state = "lampgreen"
item_state = "lampgreen"
/obj/item/flashlight/lamp/verb/toggle_light()
set name = "Toggle light"
set category = "Object"
@@ -258,12 +255,13 @@
desc = "A red Nanotrasen issued flare. There are instructions on the side, it reads 'pull cord, make light'."
w_class = WEIGHT_CLASS_SMALL
brightness_on = 7 // Pretty bright.
total_mass = 0.8
light_color = "#FA421A"
icon_state = "flare"
item_state = "flare"
actions_types = list()
var/fuel = 0
var/on_damage = 7
var/on_damage = 9
var/produce_heat = 1500
heat = 1000
light_color = LIGHT_COLOR_FLARE
@@ -331,14 +329,15 @@
name = "torch"
desc = "A torch fashioned from some leaves and a log."
w_class = WEIGHT_CLASS_BULKY
brightness_on = 4
brightness_on = 6 //When on were like a lantern
light_color = "#FAA44B"
icon_state = "torch"
item_state = "torch"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
light_color = LIGHT_COLOR_ORANGE
on_damage = 10
total_mass = TOTAL_MASS_NORMAL_ITEM
on_damage = 12 //Its a log thats on fire
slot_flags = null
/obj/item/flashlight/lantern
@@ -348,10 +347,9 @@
lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi'
desc = "A mining lantern."
brightness_on = 6 // luminosity when on
brightness_on = 6 // luminosity when on
light_color = "#FFAA44"
flashlight_power = 0.75
flashlight_power = 0.8
/obj/item/flashlight/slime
gender = PLURAL
@@ -372,7 +370,6 @@
var/emp_cur_charges = 4
var/charge_tick = 0
/obj/item/flashlight/emp/New()
..()
START_PROCESSING(SSobj, src)
@@ -435,7 +432,7 @@
var/fuel = 0
/obj/item/flashlight/glowstick/Initialize()
fuel = rand(1600, 2000)
fuel = rand(1000, 1500)
light_color = color
. = ..()
@@ -540,7 +537,7 @@
/obj/item/flashlight/eyelight
name = "eyelight"
desc = "This shouldn't exist outside of someone's head, how are you seeing this?"
brightness_on = 15
brightness_on = 10
flags_1 = CONDUCT_1
item_flags = DROPDEL
actions_types = list()

View File

@@ -14,6 +14,7 @@
//book contents below
dat = {"<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
h1 {font-size: 18px; margin: 15px 0px 5px;}
h2 {font-size: 15px; margin: 15px 0px 5px;}
@@ -49,6 +50,7 @@
title = "APLU \"Ripley\" Construction and Operation Manual"
dat = {"<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
h1 {font-size: 18px; margin: 15px 0px 5px;}
h2 {font-size: 15px; margin: 15px 0px 5px;}
@@ -122,6 +124,7 @@
title = "Chef Recipes"
dat = {"<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
h1 {font-size: 18px; margin: 15px 0px 5px;}
h2 {font-size: 15px; margin: 15px 0px 5px;}
@@ -202,6 +205,10 @@
author = "Syndicate"
title = "Fission Mailed: Nuclear Sabotage 101"
dat = {"<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
</head>
<body>
Nuclear Explosives 101:<br>
Hello and thank you for choosing the Syndicate for your nuclear information needs.<br>
Today's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.<br>
@@ -229,6 +236,7 @@
<b>Disk, Code, Safety, Timer, Disk, RUN!</b><br>
Intelligence Analysts believe that normal Nanotrasen procedure is for the Captain to secure the nuclear authorisation disk.<br>
Good luck!
</body>
</html>"}
// Wiki books that are linked to the configured wiki link.
@@ -249,6 +257,7 @@
dat = {"
<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
iframe {
display: none;
@@ -284,6 +293,7 @@
dat = {"
<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
iframe {
display: none;

View File

@@ -58,6 +58,21 @@
new /obj/effect/abstract/DPtarget(get_turf(src), pod)
/obj/item/choice_beacon/ingredients
name = "ingredient box delivery beacon"
desc = "Summon a box of ingredients from a wide selection!"
icon_state = "gangtool-red"
/obj/item/choice_beacon/ingredients/generate_display_names()
var/static/list/ingredientboxes
if(!ingredientboxes)
ingredientboxes = list()
var/list/templist = typesof(/obj/item/storage/box/ingredients)
for(var/V in templist)
var/obj/item/storage/box/ingredients/A = V
ingredientboxes[initial(A.theme_name)] = A
return ingredientboxes
/obj/item/choice_beacon/hero
name = "heroic beacon"
desc = "To summon heroes from the past to protect the future."
@@ -72,7 +87,6 @@
hero_item_list[initial(A.name)] = A
return hero_item_list
/obj/item/storage/box/hero
name = "Courageous Tomb Raider - 1940's."
@@ -115,4 +129,5 @@
icon = 'icons/obj/supermatter.dmi'
icon_state = "supermatterspray"
w_class = WEIGHT_CLASS_SMALL
var/usesleft = 2
var/usesleft = 2

View File

@@ -120,6 +120,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
)), \
null, \
new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("pestle", /obj/item/pestle, 1, time = 50), \
new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, one_per_turf = TRUE, on_floor = TRUE), \
))
@@ -255,6 +256,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),\
null, \
new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 10),\
new/datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar, 3), \
new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),\
))

View File

@@ -52,7 +52,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
return
// If H is the Chaplain, we can set the icon_state of the bible (but only once!)
if(!GLOB.bible_icon_state && H.job == "Chaplain")
var/dat = "<html><head><title>Pick Bible Style</title></head><body><center><h2>Pick a bible style</h2></center><table>"
var/dat = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Pick Bible Style</title></head><body><center><h2>Pick a bible style</h2></center><table>"
for(var/i in 1 to GLOB.biblestates.len)
var/icon/bibleicon = icon('icons/obj/storage.dmi', GLOB.biblestates[i])
var/nicename = GLOB.biblenames[i]

View File

@@ -946,12 +946,47 @@
/obj/item/reagent_containers/food/snacks/grown/apple,
/obj/item/reagent_containers/food/snacks/chocolatebar,
/obj/item/reagent_containers/food/snacks/grown/cherries,
/obj/item/reagent_containers/food/snacks/grown/berries,
/obj/item/reagent_containers/food/snacks/grown/banana,
/obj/item/reagent_containers/food/snacks/grown/cabbage,
/obj/item/reagent_containers/food/snacks/grown/soybeans,
/obj/item/reagent_containers/food/snacks/grown/corn,
/obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet,
/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle)
/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle,
/obj/item/reagent_containers/food/snacks/faggot,
/obj/item/reagent_containers/food/snacks/grown/citrus/orange,
/obj/item/reagent_containers/food/snacks/grown/citrus/lemon,
/obj/item/reagent_containers/food/snacks/grown/citrus/lime,
/obj/item/reagent_containers/food/snacks/grown/bluecherries,
/obj/item/reagent_containers/food/snacks/grown/cocoapod,
/obj/item/reagent_containers/food/snacks/grown/vanillapod,
/obj/item/reagent_containers/food/snacks/grown/grapes,
/obj/item/reagent_containers/food/snacks/grown/strawberry,
/obj/item/reagent_containers/food/snacks/grown/whitebeet,
/obj/item/reagent_containers/food/snacks/meat/slab/bear,
/obj/item/reagent_containers/food/snacks/meat/slab/spider,
/obj/item/reagent_containers/food/snacks/spidereggs,
/obj/item/reagent_containers/food/snacks/carpmeat,
/obj/item/reagent_containers/food/snacks/meat/slab/xeno,
/obj/item/reagent_containers/food/snacks/meat/slab/corgi,
/obj/item/reagent_containers/food/snacks/grown/oat,
/obj/item/reagent_containers/food/snacks/grown/wheat,
/obj/item/reagent_containers/honeycomb,
/obj/item/reagent_containers/food/snacks/grown/watermelon,
/obj/item/reagent_containers/food/snacks/grown/onion,
/obj/item/reagent_containers/food/snacks/grown/peach,
/obj/item/reagent_containers/food/snacks/grown/peanut,
/obj/item/reagent_containers/food/snacks/grown/pineapple,
/obj/item/reagent_containers/food/snacks/grown/pumpkin,
/obj/item/reagent_containers/food/snacks/meat/rawcrab,
/obj/item/reagent_containers/food/snacks/meat/slab/goliath,
/obj/item/reagent_containers/food/snacks/meat/slab/chicken,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton,
/obj/item/reagent_containers/food/snacks/egg,
/obj/item/reagent_containers/food/snacks/grown/eggplant)
new randomFood(src)
/obj/item/storage/box/ingredients/fiesta
@@ -1061,6 +1096,15 @@
new /obj/item/reagent_containers/food/snacks/grown/cabbage(src)
new /obj/item/reagent_containers/food/snacks/grown/chili(src)
/obj/item/storage/box/ingredients/sushi
theme_name = "sushi"
/obj/item/storage/box/ingredients/sushi/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/reagent_containers/food/snacks/sea_weed(src)
new /obj/item/reagent_containers/food/snacks/carpmeat(src)
new /obj/item/reagent_containers/food/snacks/meat/rawcrab(src)
/obj/item/storage/box/emptysandbags
name = "box of empty sandbags"

View File

@@ -211,9 +211,6 @@
/obj/proc/check_uplink_validity()
return 1
/obj/proc/intercept_user_move(dir, mob, newLoc, oldLoc)
return
/obj/vv_get_dropdown()
. = ..()
.["Delete all of type"] = "?_src_=vars;[HrefToken()];delall=[REF(src)]"

View File

@@ -3,6 +3,7 @@
icon_state = "sofamiddle"
icon = 'icons/obj/sofa.dmi'
buildstackamount = 1
item_chair = null
var/mutable_appearance/armrest
/obj/structure/chair/sofa/Initialize()

View File

@@ -121,7 +121,7 @@
return FALSE
var/turf/T = get_turf(src)
for(var/mob/living/L in T)
if(L.anchored || horizontal && L.mob_size > MOB_SIZE_TINY && L.density)
if(L.move_resist >= MOVE_FORCE_VERY_STRONG || (horizontal && L.mob_size > MOB_SIZE_TINY && L.density))
if(user)
to_chat(user, "<span class='danger'>There's something large on top of [src], preventing it from opening.</span>" )
return FALSE
@@ -133,7 +133,7 @@
if(closet != src && !closet.wall_mounted)
return FALSE
for(var/mob/living/L in T)
if(L.anchored || horizontal && L.mob_size > MOB_SIZE_TINY && L.density)
if(L.move_resist >= MOVE_FORCE_VERY_STRONG || horizontal && L.mob_size > MOB_SIZE_TINY && L.density)
if(user)
to_chat(user, "<span class='danger'>There's something too large in [src], preventing it from closing.</span>")
return FALSE
@@ -216,7 +216,7 @@
if(!isliving(AM)) //let's not put ghosts or camera mobs inside closets...
return FALSE
var/mob/living/L = AM
if(L.anchored || L.buckled || L.incorporeal_move || L.has_buckled_mobs())
if(L.move_resist >= MOVE_FORCE_VERY_STRONG || L.buckled || L.incorporeal_move || L.has_buckled_mobs())
return FALSE
if(L.mob_size > MOB_SIZE_TINY) // Tiny mobs are treated as items.
if(horizontal && L.density)
@@ -451,7 +451,7 @@
/obj/structure/closet/relaymove(mob/user)
if(user.stat || !isturf(loc) || !isliving(user))
return
if(locked)
if(locked || welded)
if(message_cooldown <= world.time)
message_cooldown = world.time + 50
to_chat(user, "<span class='warning'>[src]'s door won't budge!</span>")

View File

@@ -73,7 +73,7 @@
H.socks_color = recolor_undergarment(H, "socks", H.socks_color)
add_fingerprint(H)
H.update_body()
H.update_body(TRUE)
/obj/structure/dresser/proc/recolor_undergarment(mob/living/carbon/human/H, garment_type = "underwear", default_color)
var/n_color = input(H, "Choose your [garment_type]'\s color.", "Character Preference", default_color) as color|null

View File

@@ -31,7 +31,7 @@
new_spawn.underwear = "Nude" //You're a plant, partner
new_spawn.undershirt = "Nude" //changing underwear/shirt/socks doesn't seem to function correctly right now because of some bug elsewhere?
new_spawn.socks = "Nude"
new_spawn.update_body()
new_spawn.update_body(TRUE)
//Ash walker eggs: Spawns in ash walker dens in lavaland. Ghosts become unbreathing lizards that worship the Necropolis and are advised to retrieve corpses to create more ash walkers.

View File

@@ -89,7 +89,7 @@ FLOOR SAFES
var/obj/item/P = contents[i]
dat += "<tr><td><a href='?src=[REF(src)];retrieve=[REF(P)]'>[P.name]</a></td></tr>"
dat += "</table></center>"
user << browse("<html><head><title>[name]</title></head><body>[dat]</body></html>", "window=safe;size=350x300")
user << browse("<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>[name]</title></head><body>[dat]</body></html>", "window=safe;size=350x300")
/obj/structure/safe/Topic(href, href_list)
if(!ishuman(usr))

View File

@@ -47,6 +47,9 @@
// by default, vis_contents is inherited from the turf that was here before
vis_contents.Cut()
if(color)
add_atom_colour(color, FIXED_COLOUR_PRIORITY)
assemble_baseturfs()
levelupdate()

View File

@@ -25,7 +25,7 @@
to_chat(usr, "You seem to be selecting a mob that doesn't exist anymore.")
return
var/body = "<html><head><title>Options for [M.key]</title></head>"
var/body = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Options for [M.key]</title></head>"
body += "<body>Options panel for <b>[M]</b>"
if(M.client)
body += " played by <b>[M.client]</b> "
@@ -194,7 +194,7 @@
body += "<A href='?_src_=holder;[HrefToken()];tdomeadmin=[REF(M)]'>Thunderdome Admin</A> | "
body += "<A href='?_src_=holder;[HrefToken()];tdomeobserve=[REF(M)]'>Thunderdome Observer</A> | "
body += "<A href='?_src_=holder;[HrefToken()];makementor=[M.ckey]'>Make mentor</A> | "
body += "<A href='?_src_=holder;[HrefToken()];removementor=[M.ckey]'>Remove mentor</A>"
body += "<A href='?_src_=holder;[HrefToken()];removementor=[M.ckey]'>Remove mentor</A> | "
body += "<A href='?_src_=holder;[HrefToken()];makeeligible=[REF(M)]'>Allow reentering round</A>"
body += "<br>"
body += "</body></html>"

View File

@@ -136,7 +136,7 @@
if(!SSticker.HasRoundStarted())
alert("The game hasn't started yet!")
return
var/list/dat = list("<html><head><title>Round Status</title></head><body><h1><B>Round Status</B></h1>")
var/list/dat = list("<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Round Status</title></head><body><h1><B>Round Status</B></h1>")
if(SSticker.mode.replacementmode)
dat += "Former Game Mode: <B>[SSticker.mode.name]</B><BR>"
dat += "Replacement Game Mode: <B>[SSticker.mode.replacementmode.name]</B><BR>"

View File

@@ -45,6 +45,6 @@
SEND_SIGNAL(H, COMSIG_HUMAN_ON_RANDOMIZE)
H.update_body()
H.update_body(TRUE)
H.update_hair()
H.update_body_parts()

View File

@@ -83,7 +83,9 @@
<hr style='background:#000000; border:0; height:1px'>"}
qdel(query_check_unused_rank)
else if(!action)
output += {"<head>
output += {"
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>Permissions Panel</title>
<script type='text/javascript' src='search.js'></script>
</head>

View File

@@ -2,7 +2,7 @@
if(!check_rights())
return
log_admin("[key_name(usr)] checked the player panel.")
var/dat = "<html><head><title>Player Panel</title></head>"
var/dat = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Player Panel</title></head>"
//javascript, the part that does most of the work~
dat += {"

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