mirror of
https://github.com/quotefox/Hyper-Station-13.git
synced 2026-08-24 05:06:14 +01:00
Merge branch 'master' into Dynamic2
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -226,7 +226,7 @@
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"ba" = (
|
||||
/obj/structure/stone_tile/slab,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bb" = (
|
||||
/obj/structure/stone_tile/cracked{
|
||||
@@ -240,7 +240,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/flashlight/lantern,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bc" = (
|
||||
/obj/structure/stone_tile/block,
|
||||
@@ -250,7 +250,7 @@
|
||||
/obj/structure/stone_tile{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bd" = (
|
||||
/obj/structure/stone_tile/block,
|
||||
@@ -261,7 +261,7 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/decal/cleanable/xenoblood,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"be" = (
|
||||
/obj/structure/stone_tile/block,
|
||||
@@ -271,7 +271,7 @@
|
||||
/obj/structure/stone_tile{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bf" = (
|
||||
/obj/structure/stone_tile,
|
||||
@@ -285,7 +285,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/flashlight/lantern,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bg" = (
|
||||
/obj/structure/alien/weeds,
|
||||
@@ -302,7 +302,7 @@
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bi" = (
|
||||
/obj/structure/alien/weeds,
|
||||
@@ -335,11 +335,11 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bm" = (
|
||||
/obj/structure/stone_tile/slab/cracked,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bn" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
@@ -351,7 +351,7 @@
|
||||
/obj/structure/stone_tile{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bo" = (
|
||||
/obj/structure/stone_tile/surrounding_tile{
|
||||
@@ -382,7 +382,7 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/decal/cleanable/xenoblood,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bs" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
@@ -415,7 +415,7 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/stone_tile/cracked,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bw" = (
|
||||
/obj/structure/stone_tile/cracked{
|
||||
@@ -429,7 +429,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/flashlight/lantern,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bx" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
@@ -440,7 +440,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/xenoblood,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"by" = (
|
||||
/obj/structure/stone_tile/block{
|
||||
@@ -450,7 +450,7 @@
|
||||
/obj/structure/stone_tile/cracked{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bz" = (
|
||||
/obj/structure/stone_tile/block/cracked{
|
||||
@@ -460,7 +460,7 @@
|
||||
/obj/structure/stone_tile{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bA" = (
|
||||
/obj/structure/stone_tile/cracked{
|
||||
@@ -474,7 +474,7 @@
|
||||
},
|
||||
/obj/structure/stone_tile,
|
||||
/obj/item/flashlight/lantern,
|
||||
/turf/open/indestructible/boss/air,
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/xenonest)
|
||||
"bB" = (
|
||||
/obj/structure/alien/weeds,
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
/turf/open/indestructible/boss,
|
||||
/area/ruin/unpowered/ash_walkers)
|
||||
"aH" = (
|
||||
/mob/living/simple_animal/hostile/spawner/lavaland/ash_walker,
|
||||
/obj/structure/lavaland/ash_walker,
|
||||
/turf/open/lava/smooth{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
"a" = (/turf/closed/mineral/volcanic/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"b" = (/obj/effect/decal/cleanable/blood/drip,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"c" = (/turf/closed/wall/mineral/iron,/area/ruin/powered)
|
||||
"d" = (/obj/item/circuitboard/machine/circuit_imprinter,/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
"e" = (/obj/item/clothing/mask/breath,/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"f" = (/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
"g" = (/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"h" = (/obj/item/shovel,/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"i" = (/obj/item/reagent_containers/glass/bucket,/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"j" = (/obj/structure/sink/puddle,/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"k" = (/obj/machinery/hydroponics/soil,/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"l" = (/obj/item/storage/toolbox/emergency,/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"m" = (/obj/structure/glowshroom/single,/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"n" = (/obj/structure/rack,/obj/item/seeds/reishi,/obj/item/seeds/plump,/obj/item/seeds/plump,/obj/item/seeds/tower,/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom,/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom,/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
"o" = (/turf/open/floor/plating,/area/ruin/powered)
|
||||
"p" = (/obj/structure/rack,/obj/item/storage/bag/plants/portaseeder,/obj/item/storage/bag/ore,/obj/item/storage/firstaid/regular,/obj/item/clothing/mask/breath,/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
"q" = (/obj/structure/glowshroom/single,/turf/open/floor/plating,/area/ruin/powered)
|
||||
"r" = (/obj/structure/rack,/obj/item/tank/internals/oxygen,/obj/item/pickaxe/emergency,/obj/item/tank/internals/oxygen,/obj/item/pickaxe/emergency,/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
"s" = (/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"t" = (/turf/closed/wall/mineral/titanium/survival/pod,/area/ruin/powered)
|
||||
"u" = (/obj/structure/bed/pod,/obj/item/bedsheet/black,/turf/open/floor/plating,/area/ruin/powered)
|
||||
"v" = (/obj/structure/fans,/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"w" = (/obj/machinery/smartfridge/survival_pod,/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"x" = (/obj/effect/mob_spawn/human/duohermit,/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"y" = (/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"z" = (/obj/machinery/light/small{dir = 4},/obj/structure/tubes,/turf/open/floor/plating,/area/ruin/powered)
|
||||
"A" = (/obj/structure/table,/obj/item/clothing/head/welding,/obj/item/hatchet,/obj/item/kitchen/knife/combat/survival,/turf/open/floor/plating,/area/ruin/powered)
|
||||
"C" = (/obj/structure/tubes,/obj/item/crowbar,/obj/effect/decal/cleanable/blood/drip,/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"D" = (/obj/effect/decal/cleanable/blood/footprints{dir = 1; icon_state = "blood1"},/obj/machinery/door/airlock/survival_pod/glass,/obj/structure/fans/tiny,/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"E" = (/obj/structure/chair/comfy/shuttle{dir = 4},/turf/open/floor/mineral/titanium/blue,/area/ruin/powered)
|
||||
"F" = (/obj/machinery/computer{desc = "A computer long since rendered non-functional due to lack of maintenance. Spitting out error messages."; dir = 8; name = "Broken Computer"},/turf/open/floor/mineral/titanium/blue,/area/ruin/powered)
|
||||
"G" = (/obj/item/clothing/suit/space/orange,/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"H" = (/obj/item/storage/toolbox/mechanical,/turf/open/floor/mineral/titanium/blue,/area/ruin/powered)
|
||||
"I" = (/obj/item/circuitboard/machine/autolathe,/obj/item/stock_parts/matter_bin,/turf/open/floor/mineral/titanium/blue,/area/ruin/powered)
|
||||
"J" = (/obj/item/stock_parts/manipulator,/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
"K" = (/obj/structure/mirror{pixel_x = 28},/turf/open/floor/plating,/area/ruin/powered)
|
||||
"L" = (/obj/item/clothing/head/helmet/space/orange,/turf/open/floor/plating/asteroid{name = "dirt"},/area/ruin/powered)
|
||||
"M" = (/obj/structure/girder,/turf/open/floor/plating{initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered)
|
||||
"N" = (/obj/effect/spawner/structure/window/shuttle,/turf/open/floor/plating{initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered)
|
||||
"O" = (/obj/machinery/door/airlock/titanium{name = "Escape Pod Airlock"},/turf/open/floor/mineral/titanium/blue,/area/ruin/powered)
|
||||
"Q" = (/obj/item/weldingtool,/turf/open/floor/mineral/titanium/blue,/area/ruin/powered)
|
||||
"R" = (/obj/item/stack/cable_coil/red,/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
"T" = (/obj/item/stock_parts/matter_bin,/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
"U" = (/obj/item/stock_parts/matter_bin,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"V" = (/turf/closed/wall/mineral/titanium/interior,/area/ruin/powered)
|
||||
"W" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/closed/wall/mineral/titanium/interior,/area/ruin/powered)
|
||||
"Y" = (/obj/item/mining_scanner,/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
"Z" = (/obj/item/circuitboard/machine/protolathe/department/science,/obj/item/circuitboard/computer/rdconsole,/turf/open/floor/plating/asteroid/basalt,/area/ruin/powered)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaccccaaaaa
|
||||
aaaacccfkkkcaaaa
|
||||
aaacdffgeGhkcaaa
|
||||
aacffffgijmkcaaa
|
||||
aacJfYffLilkcaaa
|
||||
aaccfffffgncaaaa
|
||||
aaacffZfRfpcaaaa
|
||||
aaacTfoqofrcaaaa
|
||||
saactttooucaaaaa
|
||||
saaatvwooKcaaaaa
|
||||
sssatxyztAcaaaaa
|
||||
sssstxyCtcWVVaaa
|
||||
ssssttDttaWEQMaa
|
||||
ssssssssssOEFNaa
|
||||
sssUssbsssWHIVaa
|
||||
sssssssssbWVVaaa
|
||||
"}
|
||||
@@ -24,7 +24,7 @@
|
||||
"x" = (/obj/effect/mob_spawn/human/hermit,/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"y" = (/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"z" = (/obj/machinery/light/small{dir = 4},/obj/structure/tubes,/turf/open/floor/plating,/area/ruin/powered)
|
||||
"A" = (/obj/structure/table,/obj/item/hatchet,/obj/item/kitchen/knife/combat/survival,/turf/open/floor/plating,/area/ruin/powered)
|
||||
"A" = (/obj/structure/table,/obj/item/hatchet,/obj/item/kitchen/knife/combat/survival,/obj/item/bluespace_thread{pixel_x = -1; pixel_y = 1},/turf/open/floor/plating,/area/ruin/powered)
|
||||
"B" = (/obj/structure/table/survival_pod,/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"C" = (/obj/structure/tubes,/obj/item/crowbar,/obj/effect/decal/cleanable/blood/drip,/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
"D" = (/obj/effect/decal/cleanable/blood/footprints{dir = 1; icon_state = "blood1"},/obj/machinery/door/airlock/survival_pod/glass,/obj/structure/fans/tiny,/turf/open/floor/pod/dark,/area/ruin/powered)
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
"b" = (
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"c" = (
|
||||
/obj/structure/closet/emcloset/anchored,
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/ruin/powered/seedvault)
|
||||
"d" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/lighter,
|
||||
@@ -211,6 +215,9 @@
|
||||
/obj/structure/table/wood,
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/ruin/powered/seedvault)
|
||||
"K" = (
|
||||
/turf/open/lava/smooth/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors)
|
||||
"L" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 5
|
||||
@@ -272,6 +279,14 @@
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/ruin/powered/seedvault)
|
||||
"Y" = (
|
||||
/obj/structure/closet,
|
||||
/obj/item/shovel,
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/mining_scanner,
|
||||
/obj/item/storage/bag/ore,
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/ruin/powered/seedvault)
|
||||
"Z" = (
|
||||
/obj/item/disk/design_disk/plant_disk,
|
||||
/obj/machinery/autolathe/hacked{
|
||||
@@ -451,7 +466,7 @@ F
|
||||
F
|
||||
V
|
||||
L
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
@@ -473,8 +488,8 @@ h
|
||||
k
|
||||
Q
|
||||
M
|
||||
a
|
||||
a
|
||||
K
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -494,11 +509,11 @@ D
|
||||
h
|
||||
p
|
||||
Q
|
||||
K
|
||||
K
|
||||
K
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
a
|
||||
@@ -517,8 +532,8 @@ h
|
||||
H
|
||||
Q
|
||||
a
|
||||
a
|
||||
a
|
||||
K
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
@@ -539,7 +554,7 @@ h
|
||||
X
|
||||
Q
|
||||
a
|
||||
a
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
@@ -591,7 +606,7 @@ a
|
||||
(15,1,1) = {"
|
||||
a
|
||||
a
|
||||
b
|
||||
Q
|
||||
Q
|
||||
Q
|
||||
Q
|
||||
@@ -614,18 +629,18 @@ a
|
||||
b
|
||||
a
|
||||
b
|
||||
j
|
||||
Q
|
||||
j
|
||||
Q
|
||||
j
|
||||
Q
|
||||
Q
|
||||
Q
|
||||
Y
|
||||
h
|
||||
h
|
||||
c
|
||||
Q
|
||||
Q
|
||||
j
|
||||
Q
|
||||
j
|
||||
a
|
||||
a
|
||||
a
|
||||
@@ -636,18 +651,18 @@ a
|
||||
a
|
||||
a
|
||||
a
|
||||
j
|
||||
a
|
||||
j
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
j
|
||||
Q
|
||||
m
|
||||
m
|
||||
Q
|
||||
j
|
||||
b
|
||||
b
|
||||
b
|
||||
j
|
||||
a
|
||||
a
|
||||
a
|
||||
|
||||
@@ -30,7 +30,10 @@
|
||||
"aD" = (/obj/structure/closet/secure_closet/medical1{req_access = null; req_access_txt = "150"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/item/defibrillator/compact/combat,/turf/open/floor/plasteel/white/side{dir = 9},/area/ruin/unpowered/syndicate_lava_base/medbay)
|
||||
"aE" = (/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/light/small{dir = 8},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/telecomms)
|
||||
"aF" = (/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"aG" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"aH" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1; pixel_y = 16},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"aI" = (/obj/machinery/airalarm/syndicate{dir = 4; pixel_x = -24},/obj/structure/closet/crate/bin,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/telecomms)
|
||||
"aJ" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light{dir = 4; light_color = "#c1caff"},/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"aK" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet{dir = 8},/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"aL" = (/turf/closed/wall/mineral/plastitanium/explosive,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"aM" = (/obj/machinery/door/window/southleft{dir = 4; req_access_txt = "150"},/obj/machinery/door/window/southleft{dir = 8; req_access_txt = "150"},/obj/effect/turf_decal/stripes/line{dir = 8},/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plating,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
@@ -45,6 +48,7 @@
|
||||
"aV" = (/obj/structure/cable/yellow{icon_state = "4-8"},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/medbay)
|
||||
"aW" = (/obj/structure/lattice/catwalk,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"aX" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 1; external_pressure_bound = 140; name = "killroom vent"; pressure_checks = 0},/turf/open/floor/circuit/telecomms,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"aY" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/turf_decal/stripes/red/box,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"aZ" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 8},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"ba" = (/mob/living/simple_animal/slime,/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bb" = (/obj/structure/table/glass,/obj/machinery/light/small{dir = 8},/obj/item/clothing/glasses/science,/obj/item/clothing/mask/gas,/obj/effect/turf_decal/tile/purple{dir = 8},/obj/effect/turf_decal/tile/purple{dir = 1},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
@@ -53,10 +57,10 @@
|
||||
"be" = (/obj/effect/turf_decal/stripes/line{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bf" = (/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bg" = (/obj/machinery/smartfridge/extract/preloaded,/obj/effect/turf_decal/tile/purple{dir = 8},/obj/effect/turf_decal/tile/purple{dir = 1},/obj/effect/turf_decal/tile/purple,/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bh" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bh" = (/obj/machinery/light{light_color = "#cee5d2"},/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bi" = (/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bj" = (/obj/structure/table/reinforced,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bk" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bj" = (/obj/machinery/light{dir = 4; light_color = "#c1caff"},/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bk" = (/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on,/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera{c_tag = "Xenobiology Inner South"; dir = 4; network = list("ss13","rd")},/obj/machinery/light{dir = 8},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bl" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3,/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 4},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bn" = (/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral,/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
@@ -86,7 +90,7 @@
|
||||
"bL" = (/obj/structure/sign/warning/biohazard,/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/unpowered/syndicate_lava_base/virology)
|
||||
"bM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/plasma/reinforced,/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bO" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/mineral/plastitanium,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bO" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/effect/turf_decal/stripes/line{dir = 8},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bP" = (/obj/effect/turf_decal/stripes/line{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/machinery/chem_dispenser/fullupgrade,/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/chemistry)
|
||||
"bQ" = (/obj/effect/turf_decal/stripes/corner{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"bR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,/obj/structure/cable/yellow{icon_state = "1-2"},/obj/effect/turf_decal/tile/red{dir = 8},/obj/effect/turf_decal/tile/green{dir = 1},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
@@ -117,9 +121,6 @@
|
||||
"cr" = (/obj/effect/turf_decal/stripes/line{dir = 10},/obj/machinery/chem_heater,/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/chemistry)
|
||||
"cs" = (/obj/structure/chair/office/light{dir = 1},/obj/effect/turf_decal/bot,/obj/effect/turf_decal/stripes/line,/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/chemistry)
|
||||
"ct" = (/obj/structure/grille,/obj/structure/window/plastitanium,/obj/machinery/door/poddoor/preopen{id = "lavalandsyndi_virology"},/turf/open/floor/plating,/area/ruin/unpowered/syndicate_lava_base/virology)
|
||||
"cu" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/turf_decal/stripes/red/box,/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"cv" = (/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on,/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera{c_tag = "Xenobiology Inner South"; dir = 4; network = list("ss13","rd")},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"cw" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/effect/turf_decal/stripes/line{dir = 8},/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/testlab)
|
||||
"cx" = (/obj/effect/decal/cleanable/dirt,/obj/effect/mapping_helpers/no_lava,/obj/effect/turf_decal/stripes/line{dir = 4},/turf/open/floor/plating{baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/lavaland/surface/outdoors)
|
||||
"cy" = (/obj/effect/decal/cleanable/dirt,/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/unpowered/syndicate_lava_base/circuits)
|
||||
"cz" = (/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/chair{dir = 8},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/bar)
|
||||
@@ -398,14 +399,14 @@
|
||||
"hR" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/brown{dir = 4},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"hS" = (/obj/structure/table/reinforced,/obj/item/folder,/obj/item/suppressor,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/cargo)
|
||||
"hT" = (/obj/machinery/vending/toyliberationstation{req_access_txt = "150"},/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/cargo)
|
||||
"hU" = (/obj/machinery/light/small,/obj/structure/filingcabinet/chestdrawer,/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/cargo)
|
||||
"hV" = (/obj/structure/filingcabinet/chestdrawer,/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/cargo)
|
||||
"hU" = (/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/obj/machinery/vending/autodrobe/all_access,/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/cargo)
|
||||
"hV" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/obj/machinery/vending/clothing,/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/cargo)
|
||||
"hW" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{dir = 4},/obj/structure/cable/yellow{icon_state = "4-8"},/obj/machinery/door/airlock/medical/glass{dir = 4; name = "Medbay"},/turf/open/floor/plasteel/white,/area/ruin/unpowered/syndicate_lava_base/medbay)
|
||||
"hX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{dir = 4; name = "Medbay"},/turf/open/floor/plasteel/white,/area/ruin/unpowered/syndicate_lava_base/medbay)
|
||||
"hY" = (/obj/machinery/button/door{id = "lavalandsyndi_arrivals"; name = "Arrivals Blast Door Control"; pixel_y = -26; req_access_txt = "150"},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral,/obj/machinery/light/small,/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/arrivals)
|
||||
"hZ" = (/obj/structure/flora/rock,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
|
||||
"ia" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{dir = 8},/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"ib" = (/obj/effect/mob_spawn/human/lavaland_syndicate{icon_state = "sleeper_s"; dir = 4},/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
"ib" = (/obj/effect/mob_spawn/human/lavaland_syndicate{dir = 4; icon_state = "sleeper_s"},/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
"ic" = (/obj/machinery/atmospherics/components/unary/vent_pump/on,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
"id" = (/obj/structure/toilet{pixel_y = 18},/obj/structure/sink{dir = 4; pixel_x = 11},/obj/machinery/light/small{dir = 8},/obj/structure/mirror{pixel_x = 28},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/turf/open/floor/plasteel/dark,/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
"ie" = (/obj/effect/mob_spawn/human/lavaland_syndicate/comms{dir = 8; icon_state = "sleeper_s"},/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
@@ -422,7 +423,7 @@
|
||||
"ip" = (/obj/effect/turf_decal/stripes/red/corner,/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"iq" = (/obj/structure/sign/warning/securearea,/turf/closed/wall/mineral/plastitanium/nodiagonal,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"ir" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/stripes/red/line{dir = 9},/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/ruin/unpowered/syndicate_lava_base/main)
|
||||
"is" = (/obj/machinery/light/small{dir = 1},/obj/machinery/turretid{control_area = "/area/ruin/unpowered/syndicate_lava_base/main"; dir = 1; icon_state = "control_kill"; ailock = 1; lethal = 1; name = "Base turret controls"; pixel_y = 30; req_access = null; req_access_txt = "150"},/turf/open/floor/circuit/red,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"is" = (/obj/machinery/light/small{dir = 1},/obj/machinery/turretid{ailock = 1; control_area = "/area/ruin/unpowered/syndicate_lava_base/main"; dir = 1; icon_state = "control_kill"; lethal = 1; name = "Base turret controls"; pixel_y = 30; req_access = null; req_access_txt = "150"},/turf/open/floor/circuit/red,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"it" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/stripes/red/line{dir = 5},/obj/structure/filingcabinet,/obj/item/folder/syndicate/mining,/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/ruin/unpowered/syndicate_lava_base/main)
|
||||
"iu" = (/obj/effect/turf_decal/stripes/line{dir = 8},/obj/effect/mapping_helpers/no_lava,/turf/open/floor/plating{baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/lavaland/surface/outdoors)
|
||||
"iv" = (/obj/effect/decal/cleanable/dirt,/obj/effect/mapping_helpers/no_lava,/turf/open/floor/plating{baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/lavaland/surface/outdoors)
|
||||
@@ -463,7 +464,7 @@
|
||||
"jk" = (/obj/effect/mapping_helpers/no_lava,/turf/open/floor/plating{baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/lavaland/surface/outdoors)
|
||||
"jl" = (/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"jm" = (/obj/effect/decal/cleanable/dirt,/obj/effect/turf_decal/tile/red,/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"jn" = (/obj/effect/mob_spawn/human/lavaland_syndicate{icon_state = "sleeper_s"; dir = 4},/obj/machinery/airalarm/syndicate{pixel_y = 24},/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
"jn" = (/obj/effect/mob_spawn/human/lavaland_syndicate{dir = 4; icon_state = "sleeper_s"},/obj/machinery/airalarm/syndicate{pixel_y = 24},/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
"jo" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
"jp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,/obj/structure/cable/yellow{icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plating,/area/ruin/unpowered/syndicate_lava_base/main)
|
||||
"jq" = (/obj/effect/mob_spawn/human/lavaland_syndicate{dir = 8; icon_state = "sleeper_s"},/obj/machinery/airalarm/syndicate{pixel_y = 24},/turf/open/floor/plasteel/grimy,/area/ruin/unpowered/syndicate_lava_base/dormitories)
|
||||
@@ -722,14 +723,14 @@ aaaaaaaaaaaaaaaaaaabaaaaaaaaabaaabababaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaabaaaa
|
||||
aaaaaaaaaaaaaaaaabababababababababababababababababababababababaaaaaaaaaaabababababaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaabaaababababababababababababababababababababababababababaaababababababababababaaaaaaaa
|
||||
aaaaaaabaaabababababadaeaeaeaeaeaeaeaeaeaeaeaeapabababababababababababababababababababababaaaaaa
|
||||
aaaaaaabababababababaeawaAaAaFaeaxbjboekaFaFaAaeababababababababababababababababababababaaaaaaaa
|
||||
aaaaababababababababaeaFaAaFaKcZbsbebiaMaFbabhaeababababababababababababababababababababababaaaa
|
||||
aaaaaaababababababacaebkaFaFaFaMcWcXcucZbMbMcGaegoabababababababababababababababababababababaaaa
|
||||
aaaaaaabababababababaeawaAaGaFaeaxaHboekaFaFaAaeababababababababababababababababababababaaaaaaaa
|
||||
aaaaababababababababaeaFaAaFaKcZbsbebiaMaFbaaJaeababababababababababababababababababababababaaaa
|
||||
aaaaaaababababababacaeaFaFaFaFaMcWcXaYcZbMbMcGaegoabababababababababababababababababababababaaaa
|
||||
aaaaabababababababavaeaFaFaAaFekbndcddekaFaFaFaehZasatatatasabababababababababababababababaaaaaa
|
||||
aaabababababababababaeaAaFaFaAaedecqbNaMaAaFbOaeasasbPbScaasapigababababababababababababababaaaa
|
||||
aaababababababababacaeaeaeaeaeaecvbQdicZbMbMcGaLdoducrcscAasasdydydydyihababababababababababaaaa
|
||||
abababababababababacihaeaNaOaNekcwazdlekaFaAaFaedAdBdCdCdEdIasdKdLdMdydydydydydyabababababababaa
|
||||
ababababababababababacaeaQaTaUcTdrbidfaMaFbabhaedTdUdVdXdYdZaseaebecdbdyeeefegdyapababababababaa
|
||||
aaabababababababababaeaAaFbhaAaedecqbNaMaAaFbjaeasasbPbScaasapigababababababababababababababaaaa
|
||||
aaababababababababacaeaeaeaeaeaebkbQdicZbMbMcGaLdoducrcscAasasdydydydyihababababababababababaaaa
|
||||
abababababababababacihaeaNaOaNekbOazdlekaFaAaFaedAdBdCdCdEdIasdKdLdMdydydydydydyabababababababaa
|
||||
ababababababababababacaeaQaTaUcTdrbidfaMaFbaaJaedTdUdVdXdYdZaseaebecdbdyeeefegdyapababababababaa
|
||||
abababababababababababaeaNaXaNekbeckdicZbDbDbJaeerdqdsdvevewasdwdxdHdxdOeBeCeDeEeFababababababaa
|
||||
abababababababababababaeaeaeaeaedDdacpaeaeaeaeaeeRedeneseVasaseteXdFeufafbfcfdfeeFababababababab
|
||||
ababababababababiiababacaZaecMdNcYdQdRdgaebpdWoPfmfnfofnfpasexeyfsftdydyfufvfwdydydyfxababababab
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/powered)
|
||||
"c" = (
|
||||
/turf/closed/mineral/random/high_chance,
|
||||
@@ -135,7 +135,7 @@
|
||||
/area/ruin/powered)
|
||||
"F" = (
|
||||
/obj/structure/closet/crate/trashcart,
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/powered)
|
||||
"G" = (
|
||||
/obj/structure/chair/sofa/right,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/powered)
|
||||
"c" = (
|
||||
/turf/closed/mineral/random/high_chance,
|
||||
@@ -176,8 +176,8 @@
|
||||
/obj/structure/table,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/autosurgeon{
|
||||
name = "rusted autosurgeon";
|
||||
desc = "A device that automatically inserts an implant or organ into the user without the hassle of extensive surgery. It has a slot to insert an organ of implant. But this rusted version looks like it could only manage one implant....";
|
||||
name = "rusted autosurgeon";
|
||||
uses = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -205,7 +205,7 @@
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/asteroid,
|
||||
/turf/open/floor/plating/asteroid/airless,
|
||||
/area/ruin/powered)
|
||||
"K" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
|
||||
|
||||
@@ -228,6 +228,8 @@
|
||||
/obj/item/stack/rods/fifty,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/circuitboard/computer/solar_control,
|
||||
/obj/item/electronics/tracker,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/deepstorage/storage)
|
||||
"aL" = (
|
||||
@@ -3065,10 +3067,11 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/deepstorage)
|
||||
"gR" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/cable/yellow,
|
||||
/obj/machinery/power/rtg/advanced,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/deepstorage/power)
|
||||
"gT" = (
|
||||
@@ -3113,7 +3116,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/deepstorage/power)
|
||||
"gX" = (
|
||||
/obj/machinery/power/rtg/advanced,
|
||||
/obj/machinery/power/rtg/advanced/fullupgrade,
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
@@ -3128,12 +3131,12 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/deepstorage/power)
|
||||
"gZ" = (
|
||||
/obj/machinery/power/rtg/advanced,
|
||||
/obj/machinery/power/rtg/advanced/fullupgrade,
|
||||
/obj/structure/cable/yellow,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/deepstorage/power)
|
||||
"ha" = (
|
||||
/obj/machinery/power/rtg/advanced,
|
||||
/obj/machinery/power/rtg/advanced/fullupgrade,
|
||||
/obj/machinery/light/small,
|
||||
/obj/structure/cable/yellow,
|
||||
/turf/open/floor/plating,
|
||||
|
||||
@@ -34,12 +34,13 @@
|
||||
/obj/structure/rack{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/clothing/suit/space/syndicate,
|
||||
/obj/item/clothing/head/helmet/space/syndicate,
|
||||
/obj/item/clothing/mask/gas{
|
||||
pixel_x = -3;
|
||||
pixel_y = 3
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/turf/open/floor/mineral/plastitanium/red,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"ag" = (
|
||||
@@ -92,10 +93,17 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"ak" = (
|
||||
/obj/machinery/telecomms/relay/preset/ruskie{
|
||||
use_power = 0
|
||||
/obj/structure/rack{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/stack/sheet/metal/fifty,
|
||||
/obj/item/integrated_circuit_printer/upgraded,
|
||||
/obj/item/multitool,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/stock_parts/cell/high/plus{
|
||||
pixel_x = 9;
|
||||
pixel_y = -3
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"al" = (
|
||||
@@ -105,6 +113,10 @@
|
||||
pixel_y = -12
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/clothing/glasses/meson/night{
|
||||
pixel_x = 1;
|
||||
pixel_y = 11
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"am" = (
|
||||
@@ -233,9 +245,26 @@
|
||||
pixel_x = 25
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/november,
|
||||
/obj/item/pen,
|
||||
/obj/item/paper_bin{
|
||||
pixel_x = -3;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/november{
|
||||
pixel_x = -3;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/pen{
|
||||
pixel_x = -4;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/stock_parts/cell/high/plus{
|
||||
pixel_x = -8;
|
||||
pixel_y = -3
|
||||
},
|
||||
/obj/item/integrated_electronics/wirer{
|
||||
pixel_x = 7;
|
||||
pixel_y = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aw" = (
|
||||
@@ -294,17 +323,8 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"az" = (
|
||||
/obj/structure/filingcabinet,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/april,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/may,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/june,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/july,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/august,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/september,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/october,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/receipt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/odd_report,
|
||||
/obj/machinery/autolathe/hacked,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aA" = (
|
||||
@@ -327,11 +347,17 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aB" = (
|
||||
/obj/structure/rack{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/multitool,
|
||||
/obj/structure/filingcabinet,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/april,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/may,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/june,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/july,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/august,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/september,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/reports/october,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/receipt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/paper/fluff/ruins/listeningstation/odd_report,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aC" = (
|
||||
@@ -339,43 +365,11 @@
|
||||
dir = 8;
|
||||
layer = 2.9
|
||||
},
|
||||
/obj/item/mining_scanner,
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/storage/bag/ore,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aD" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/storage/box/donkpockets{
|
||||
pixel_x = -2;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/storage/box/donkpockets{
|
||||
pixel_y = 3
|
||||
},
|
||||
/obj/item/storage/box/donkpockets{
|
||||
pixel_x = 2
|
||||
},
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/sign/poster/contraband/random{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/shovel,
|
||||
/obj/item/pickaxe/mini,
|
||||
/obj/item/t_scanner/adv_mining_scanner/lesser,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aE" = (
|
||||
@@ -414,12 +408,6 @@
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aH" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/crate/bin,
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_x = -27;
|
||||
pixel_y = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
@@ -430,10 +418,14 @@
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/door/airlock{
|
||||
dir = 4;
|
||||
name = "Food Court"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aI" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aJ" = (
|
||||
@@ -514,33 +506,18 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aN" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/firealarm{
|
||||
dir = 8;
|
||||
pixel_x = -26
|
||||
},
|
||||
/obj/machinery/microwave,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aO" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/closet/crate,
|
||||
/obj/item/stack/sheet/metal/twenty,
|
||||
/obj/item/stack/sheet/glass{
|
||||
amount = 10
|
||||
},
|
||||
/obj/item/stack/sheet/metal/fifty,
|
||||
/obj/item/stack/sheet/glass/fifty,
|
||||
/obj/item/stack/rods/ten,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
@@ -555,10 +532,11 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aP" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 4
|
||||
/obj/machinery/firealarm{
|
||||
dir = 8;
|
||||
pixel_x = -26
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aQ" = (
|
||||
@@ -585,6 +563,7 @@
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/machinery/door/airlock{
|
||||
dir = 4;
|
||||
name = "Personal Quarters"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -721,46 +700,30 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"aZ" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/computer/security/telescreen/entertainment{
|
||||
pixel_x = -30
|
||||
},
|
||||
/obj/item/reagent_containers/food/drinks/beer{
|
||||
pixel_x = -4;
|
||||
pixel_y = 14
|
||||
},
|
||||
/obj/item/reagent_containers/food/drinks/beer{
|
||||
pixel_x = 3;
|
||||
pixel_y = 11
|
||||
},
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_syndicate{
|
||||
pixel_x = -3
|
||||
},
|
||||
/obj/item/lighter{
|
||||
pixel_x = 7;
|
||||
pixel_y = -3
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"ba" = (
|
||||
/obj/structure/chair/stool,
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4;
|
||||
piping_layer = 3;
|
||||
pixel_x = 5;
|
||||
pixel_y = 5
|
||||
},
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"ba" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_x = -27;
|
||||
pixel_y = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
|
||||
dir = 1;
|
||||
piping_layer = 3;
|
||||
pixel_x = 5;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/structure/closet/crate/bin,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bb" = (
|
||||
@@ -845,7 +808,6 @@
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bj" = (
|
||||
/obj/machinery/computer/arcade/orion_trail,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
@@ -856,6 +818,15 @@
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||
dir = 1;
|
||||
piping_layer = 3;
|
||||
pixel_x = 5;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/structure/closet/firecloset/full{
|
||||
anchored = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bk" = (
|
||||
@@ -895,7 +866,7 @@
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bn" = (
|
||||
/obj/structure/sign/departments/medbay/alt,
|
||||
/turf/closed/wall,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bo" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
@@ -981,17 +952,20 @@
|
||||
pixel_y = 5
|
||||
},
|
||||
/turf/open/floor/plasteel/white/side{
|
||||
dir = 5
|
||||
dir = 1
|
||||
},
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bu" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/secure_closet/medical1{
|
||||
req_access = null;
|
||||
req_access_txt = "150"
|
||||
/obj/machinery/iv_drip,
|
||||
/obj/structure/sink{
|
||||
dir = 4;
|
||||
pixel_x = 11
|
||||
},
|
||||
/turf/open/floor/plasteel/white/side{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bv" = (
|
||||
/obj/structure/bookcase/random,
|
||||
@@ -1075,11 +1049,6 @@
|
||||
},
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bB" = (
|
||||
/obj/structure/sink{
|
||||
dir = 4;
|
||||
pixel_x = 11
|
||||
},
|
||||
/obj/machinery/iv_drip,
|
||||
/obj/machinery/light/small,
|
||||
/obj/machinery/airalarm/syndicate{
|
||||
dir = 1;
|
||||
@@ -1089,9 +1058,8 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/white/side{
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/chem_dispenser/fullupgrade,
|
||||
/turf/open/floor/plasteel/white/side,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bC" = (
|
||||
/obj/structure/cable,
|
||||
@@ -1102,6 +1070,9 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/wrench,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"bD" = (
|
||||
@@ -1165,6 +1136,258 @@
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"cE" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/obj/machinery/power/rtg/advanced/fullupgrade,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"eA" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"fs" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"fJ" = (
|
||||
/obj/structure/chair/stool,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"hJ" = (
|
||||
/obj/structure/closet/secure_closet/hydroponics{
|
||||
req_access = null
|
||||
},
|
||||
/obj/item/cultivator,
|
||||
/obj/item/plant_analyzer,
|
||||
/obj/item/reagent_containers/spray/pestspray{
|
||||
pixel_x = 3;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/shovel/spade,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/storage/bag/plants/portaseeder,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"ki" = (
|
||||
/obj/item/storage/daki{
|
||||
desc = "Make us whole.~";
|
||||
icon_state = "daki_Nar'Sie";
|
||||
name = "Nar-nar"
|
||||
},
|
||||
/obj/item/toy/plush/narplush,
|
||||
/turf/closed/mineral/random,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"lZ" = (
|
||||
/obj/structure/cable,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/structure/sign/warning/radiation{
|
||||
pixel_y = -31
|
||||
},
|
||||
/obj/machinery/power/rtg/advanced/fullupgrade,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"na" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/closet/secure_closet/medical1{
|
||||
req_access = null;
|
||||
req_access_txt = "150"
|
||||
},
|
||||
/turf/open/floor/plasteel/white/side{
|
||||
dir = 6
|
||||
},
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"tU" = (
|
||||
/obj/structure/sign/poster/contraband/random{
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/table,
|
||||
/obj/machinery/microwave,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"ux" = (
|
||||
/obj/machinery/telecomms/relay/preset/ruskie{
|
||||
use_power = 0
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"uB" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"za" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
|
||||
dir = 4;
|
||||
piping_layer = 3;
|
||||
pixel_x = 5;
|
||||
pixel_y = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"zq" = (
|
||||
/obj/machinery/hydroponics/constructable,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"zD" = (
|
||||
/obj/structure/sink{
|
||||
dir = 8;
|
||||
pixel_x = -12;
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/item/reagent_containers/glass/bucket,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/reagent_containers/glass/bucket{
|
||||
pixel_x = 9;
|
||||
pixel_y = 11
|
||||
},
|
||||
/obj/machinery/light/small{
|
||||
brightness = 3;
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"Bd" = (
|
||||
/obj/machinery/vending/hydroseeds{
|
||||
slogan_delay = 700
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"Bs" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"DC" = (
|
||||
/obj/machinery/airalarm/syndicate{
|
||||
dir = 1;
|
||||
pixel_y = -25
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/kitchen/rollingpin{
|
||||
pixel_x = -6;
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/reagentgrinder/constructed,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"DL" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/reagent_containers/food/drinks/beer{
|
||||
pixel_x = -4;
|
||||
pixel_y = 14
|
||||
},
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_syndicate{
|
||||
pixel_x = -3
|
||||
},
|
||||
/obj/item/reagent_containers/food/drinks/beer{
|
||||
pixel_x = 3;
|
||||
pixel_y = 11
|
||||
},
|
||||
/obj/item/lighter/slime{
|
||||
pixel_x = 6
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"Et" = (
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/obj/item/kitchen/knife/combat/survival,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"Gb" = (
|
||||
/obj/item/reagent_containers/glass/bottle/nutrient/rh{
|
||||
pixel_x = -4;
|
||||
pixel_y = -3
|
||||
},
|
||||
/obj/item/reagent_containers/glass/bottle/nutrient/rh{
|
||||
pixel_x = -6;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"IH" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/computer/arcade/orion_trail,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"Lx" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood/drip,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"Mh" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/box/donkpockets{
|
||||
pixel_x = -2;
|
||||
pixel_y = 6
|
||||
},
|
||||
/obj/item/storage/box/donkpockets{
|
||||
pixel_y = 3
|
||||
},
|
||||
/obj/item/storage/box/donkpockets{
|
||||
pixel_x = 2
|
||||
},
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/machinery/computer/security/telescreen/entertainment{
|
||||
pixel_y = -30
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"Ns" = (
|
||||
/obj/machinery/biogenerator,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"NQ" = (
|
||||
/obj/item/mop/advanced{
|
||||
pixel_x = -11
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood/drip,
|
||||
/turf/open/floor/plating,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"Qp" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/seed_extractor,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"QM" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4;
|
||||
piping_layer = 3;
|
||||
pixel_x = 5;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/structure/chair/stool,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"TK" = (
|
||||
/obj/machinery/chem_master/condimaster,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
"XM" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/listeningstation)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -1696,14 +1919,14 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -1736,14 +1959,14 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
hJ
|
||||
zD
|
||||
Bd
|
||||
Ns
|
||||
fJ
|
||||
DC
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -1776,14 +1999,14 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
zq
|
||||
Gb
|
||||
XM
|
||||
Qp
|
||||
Bs
|
||||
Mh
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -1816,14 +2039,14 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
zq
|
||||
XM
|
||||
Bs
|
||||
fs
|
||||
za
|
||||
tU
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -1858,11 +2081,11 @@ ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
TK
|
||||
Bs
|
||||
IH
|
||||
QM
|
||||
DL
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
@@ -1895,14 +2118,14 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ki
|
||||
ac
|
||||
aq
|
||||
ac
|
||||
aH
|
||||
aN
|
||||
aZ
|
||||
aD
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
@@ -1943,7 +2166,7 @@ aI
|
||||
aP
|
||||
ba
|
||||
bj
|
||||
ac
|
||||
eA
|
||||
bv
|
||||
ac
|
||||
ac
|
||||
@@ -2026,9 +2249,9 @@ bl
|
||||
ac
|
||||
bx
|
||||
bD
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -2062,13 +2285,13 @@ az
|
||||
ac
|
||||
aS
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
cE
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -2102,13 +2325,13 @@ aA
|
||||
aK
|
||||
aT
|
||||
bc
|
||||
ac
|
||||
ag
|
||||
bq
|
||||
by
|
||||
aO
|
||||
bC
|
||||
ac
|
||||
ab
|
||||
lZ
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -2135,7 +2358,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ux
|
||||
ak
|
||||
av
|
||||
aB
|
||||
@@ -2147,8 +2370,8 @@ br
|
||||
bz
|
||||
bF
|
||||
bH
|
||||
ac
|
||||
ab
|
||||
Lx
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -2174,7 +2397,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
@@ -2182,13 +2405,13 @@ ac
|
||||
aL
|
||||
aV
|
||||
be
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
uB
|
||||
Et
|
||||
NQ
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -2214,8 +2437,8 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ag
|
||||
ag
|
||||
al
|
||||
aw
|
||||
aC
|
||||
@@ -2225,10 +2448,10 @@ bf
|
||||
bn
|
||||
bs
|
||||
bA
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -2254,7 +2477,7 @@ aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ag
|
||||
af
|
||||
am
|
||||
ax
|
||||
@@ -2265,7 +2488,7 @@ bg
|
||||
bo
|
||||
bt
|
||||
bB
|
||||
ac
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -2294,18 +2517,18 @@ aa
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ac
|
||||
ac
|
||||
ag
|
||||
ag
|
||||
an
|
||||
ac
|
||||
aE
|
||||
ac
|
||||
aY
|
||||
bh
|
||||
ac
|
||||
ag
|
||||
bu
|
||||
ac
|
||||
ac
|
||||
na
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -2340,12 +2563,12 @@ ao
|
||||
ag
|
||||
aF
|
||||
ag
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ac
|
||||
ab
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ag
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -2425,7 +2648,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
|
||||
@@ -48,9 +48,12 @@
|
||||
/obj/item/stack/sheet/mineral/gold{
|
||||
amount = 25
|
||||
},
|
||||
/obj/item/stack/ore/bluespace_crystal,
|
||||
/obj/item/stack/ore/bluespace_crystal,
|
||||
/obj/item/stack/ore/bluespace_crystal,
|
||||
/obj/item/stack/ore/bluespace_crystal{
|
||||
amount = 4
|
||||
},
|
||||
/obj/item/stack/sheet/mineral/diamond{
|
||||
amount = 2
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ruin/space/has_grav/ancientstation/hivebot)
|
||||
"ak" = (
|
||||
@@ -149,8 +152,8 @@
|
||||
/area/ruin/space/has_grav/ancientstation/hivebot)
|
||||
"aF" = (
|
||||
/obj/structure/shuttle/engine/large{
|
||||
icon_state = "large_engine";
|
||||
dir = 4
|
||||
dir = 4;
|
||||
icon_state = "large_engine"
|
||||
},
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space/has_grav/ancientstation/hivebot)
|
||||
@@ -5139,6 +5142,14 @@
|
||||
pixel_x = -24
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/item/bluespace_thread{
|
||||
pixel_x = -3;
|
||||
pixel_y = -8
|
||||
},
|
||||
/obj/item/bluespace_thread{
|
||||
pixel_x = 1;
|
||||
pixel_y = 7
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/ancientstation)
|
||||
"ZY" = (
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -3669,7 +3669,7 @@
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"im" = (
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/mob/living/simple_animal/hostile/spawner/nether{
|
||||
/obj/structure/spawner/nether{
|
||||
max_mobs = 5
|
||||
},
|
||||
/turf/open/floor/engine/cult{
|
||||
@@ -8272,7 +8272,7 @@
|
||||
/turf/open/floor/engine/cult,
|
||||
/area/awaymission/snowdin/post/cavern2)
|
||||
"sb" = (
|
||||
/mob/living/simple_animal/hostile/spawner/nether{
|
||||
/obj/structure/spawner/nether{
|
||||
max_mobs = 4;
|
||||
name = "weak netherworld link"
|
||||
},
|
||||
@@ -10173,7 +10173,7 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/mob/living/simple_animal/hostile/spawner/nether{
|
||||
/obj/structure/spawner/nether{
|
||||
max_mobs = 4;
|
||||
name = "weak netherworld link"
|
||||
},
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
},
|
||||
/area/awaymission/caves/BMP_asteroid/level_four)
|
||||
"at" = (
|
||||
/mob/living/simple_animal/hostile/spawner/skeleton,
|
||||
/obj/structure/spawner/skeleton,
|
||||
/turf/open/floor/plating/asteroid/basalt/lava{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
@@ -164,7 +164,7 @@
|
||||
},
|
||||
/area/awaymission/caves/BMP_asteroid/level_four)
|
||||
"aB" = (
|
||||
/mob/living/simple_animal/hostile/spawner/skeleton,
|
||||
/obj/structure/spawner/skeleton,
|
||||
/turf/open/floor/engine/cult{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
@@ -374,7 +374,7 @@
|
||||
},
|
||||
/area/awaymission/caves/BMP_asteroid/level_three)
|
||||
"be" = (
|
||||
/mob/living/simple_animal/hostile/spawner/mining/goliath,
|
||||
/obj/structure/spawner/mining/goliath,
|
||||
/turf/open/floor/plating/asteroid/basalt{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
@@ -504,7 +504,7 @@
|
||||
/area/awaymission/caves/BMP_asteroid/level_three)
|
||||
"bw" = (
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/mob/living/simple_animal/hostile/spawner/skeleton,
|
||||
/obj/structure/spawner/skeleton,
|
||||
/turf/open/floor/engine/cult{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
@@ -930,7 +930,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/awaymission/caves/BMP_asteroid/level_two)
|
||||
"cL" = (
|
||||
/mob/living/simple_animal/hostile/spawner/mining/basilisk,
|
||||
/obj/structure/spawner/mining/basilisk,
|
||||
/turf/open/floor/plating/asteroid/basalt{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
@@ -1644,7 +1644,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/awaymission/caves/listeningpost)
|
||||
"fb" = (
|
||||
/mob/living/simple_animal/hostile/spawner/mining/hivelord,
|
||||
/obj/structure/spawner/mining/hivelord,
|
||||
/turf/open/floor/plating/asteroid/basalt{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
@@ -2133,7 +2133,7 @@
|
||||
/turf/open/floor/plasteel/recharge_floor,
|
||||
/area/awaymission/caves/BMP_asteroid)
|
||||
"gD" = (
|
||||
/mob/living/simple_animal/hostile/spawner/mining/hivelord,
|
||||
/obj/structure/spawner/mining/hivelord,
|
||||
/turf/open/floor/plating/asteroid/basalt{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
@@ -2206,7 +2206,7 @@
|
||||
},
|
||||
/area/awaymission/caves/BMP_asteroid)
|
||||
"gQ" = (
|
||||
/mob/living/simple_animal/hostile/spawner/mining/basilisk,
|
||||
/obj/structure/spawner/mining/basilisk,
|
||||
/turf/open/floor/plating/asteroid/basalt{
|
||||
initial_gas_mix = "n2=23;o2=14"
|
||||
},
|
||||
|
||||
+334
-240
File diff suppressed because it is too large
Load Diff
+128279
-7658
File diff suppressed because it is too large
Load Diff
+147930
-8430
File diff suppressed because it is too large
Load Diff
+70202
-782
File diff suppressed because it is too large
Load Diff
@@ -40,8 +40,7 @@
|
||||
"aj" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/xenoarch/gen)
|
||||
@@ -90,15 +89,13 @@
|
||||
"at" = (
|
||||
/obj/machinery/vending/autodrobe,
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/xenoarch/gen)
|
||||
"au" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/xenoarch/gen)
|
||||
@@ -126,8 +123,7 @@
|
||||
/area/xenoarch/arch)
|
||||
"aA" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window/spawner/east,
|
||||
/obj/item/twohanded/required/kirbyplants/random,
|
||||
@@ -161,8 +157,7 @@
|
||||
/area/xenoarch/arch)
|
||||
"aG" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/xenoarch/arch)
|
||||
@@ -183,8 +178,7 @@
|
||||
/area/xenoarch/arch)
|
||||
"aJ" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/airalarm{
|
||||
name = "Xenoarch science hallway air alarm";
|
||||
@@ -343,8 +337,7 @@
|
||||
"bg" = (
|
||||
/obj/structure/filingcabinet,
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/airalarm{
|
||||
name = "Xenoarch security office air alarm";
|
||||
@@ -371,7 +364,9 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/xenoarch/arch)
|
||||
"bk" = (
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"bl" = (
|
||||
/turf/open/floor/carpet,
|
||||
@@ -719,8 +714,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/xenoarch/gen)
|
||||
@@ -833,8 +827,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/airalarm{
|
||||
dir = 4;
|
||||
@@ -864,8 +857,7 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/xenoarch/arch)
|
||||
@@ -944,8 +936,7 @@
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/xenoarch/gen)
|
||||
@@ -990,8 +981,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/recharge_station,
|
||||
/obj/machinery/airalarm{
|
||||
@@ -1042,7 +1032,9 @@
|
||||
/area/xenoarch/bot)
|
||||
"cK" = (
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"cL" = (
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
@@ -1788,8 +1780,7 @@
|
||||
"ew" = (
|
||||
/obj/machinery/computer/crew,
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/xenoarch/gen)
|
||||
@@ -2156,8 +2147,7 @@
|
||||
/area/xenoarch/gen)
|
||||
"fn" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/vending/dinnerware,
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
@@ -2597,20 +2587,10 @@
|
||||
/turf/closed/wall,
|
||||
/area/xenoarch/gen)
|
||||
"gr" = (
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
dir = 8
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/xenoarch/arch)
|
||||
/area/xenoarch/gen)
|
||||
"gs" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
@@ -2667,8 +2647,7 @@
|
||||
/area/xenoarch/gen)
|
||||
"gz" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -2715,7 +2694,9 @@
|
||||
/obj/effect/turf_decal/stripes/asteroid{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"gG" = (
|
||||
/obj/structure/rack,
|
||||
@@ -2728,8 +2709,7 @@
|
||||
/area/xenoarch/gen)
|
||||
"gH" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/kitchen/knife,
|
||||
@@ -2995,7 +2975,9 @@
|
||||
dir = 10
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"hs" = (
|
||||
/turf/open/floor/carpet/purple,
|
||||
@@ -3049,8 +3031,7 @@
|
||||
/area/xenoarch/gen)
|
||||
"hx" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
@@ -3101,16 +3082,14 @@
|
||||
"hD" = (
|
||||
/obj/structure/bookcase/manuals/research_and_development,
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
/area/xenoarch/gen)
|
||||
"hE" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
/area/xenoarch/gen)
|
||||
@@ -3260,8 +3239,7 @@
|
||||
/area/xenoarch/gen)
|
||||
"ib" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/vending/snack,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
@@ -3276,7 +3254,6 @@
|
||||
/area/xenoarch/gen)
|
||||
"ic" = (
|
||||
/obj/machinery/door/airlock{
|
||||
dir = 2;
|
||||
id_tag = "Xenodorm1";
|
||||
name = "Room 1"
|
||||
},
|
||||
@@ -3677,8 +3654,7 @@
|
||||
dir = 7
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/xenoarch/gen)
|
||||
@@ -3778,7 +3754,6 @@
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Xenoarchaeology Entrance West";
|
||||
dir = 1;
|
||||
name = "security camera";
|
||||
network = list("ss13","rd","mine")
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -3814,7 +3789,6 @@
|
||||
/obj/item/radio/intercom{
|
||||
dir = 8;
|
||||
name = "Station Intercom (General)";
|
||||
pixel_x = 0;
|
||||
pixel_y = -24
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -3933,7 +3907,9 @@
|
||||
/obj/structure/ore_box,
|
||||
/obj/effect/turf_decal/stripes/asteroid,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"jJ" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
@@ -4045,8 +4021,7 @@
|
||||
/area/lavaland/surface/outdoors)
|
||||
"jW" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/xenoarch/gen)
|
||||
@@ -4092,7 +4067,9 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"kd" = (
|
||||
/obj/effect/turf_decal/tile/brown{
|
||||
@@ -4114,7 +4091,9 @@
|
||||
/obj/effect/turf_decal/stripes/asteroid{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"kg" = (
|
||||
/obj/structure/table,
|
||||
@@ -4132,10 +4111,11 @@
|
||||
/area/xenoarch/gen)
|
||||
"kh" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/xenoarch/gen)
|
||||
"ki" = (
|
||||
/obj/structure/chair/office{
|
||||
@@ -4156,7 +4136,9 @@
|
||||
/obj/effect/turf_decal/stripes/asteroid{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"kk" = (
|
||||
/obj/structure/flora/rock/pile,
|
||||
@@ -4197,7 +4179,9 @@
|
||||
/obj/effect/turf_decal/stripes/asteroid{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"ko" = (
|
||||
/obj/item/twohanded/required/kirbyplants/random,
|
||||
@@ -4243,7 +4227,9 @@
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"kv" = (
|
||||
/obj/structure/ore_box,
|
||||
@@ -4251,7 +4237,9 @@
|
||||
dir = 6
|
||||
},
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"kw" = (
|
||||
/obj/structure/barricade/wooden,
|
||||
@@ -4897,18 +4885,21 @@
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"lG" = (
|
||||
/obj/effect/turf_decal/stripes/asteroid{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"lH" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1;
|
||||
pixel_y = 0
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
@@ -5754,16 +5745,14 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
dir = 1;
|
||||
name = "maintenance access"
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/xenoarch/gen)
|
||||
"ob" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
dir = 1;
|
||||
name = "maintenance access"
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/xenoarch/gen)
|
||||
@@ -5902,7 +5891,6 @@
|
||||
/area/xenoarch/arch)
|
||||
"or" = (
|
||||
/obj/machinery/door/airlock/glass{
|
||||
dir = 2;
|
||||
name = "Xenoarchaeology Facility Radio and Ore Silo"
|
||||
},
|
||||
/obj/structure/fans/tiny,
|
||||
@@ -6128,14 +6116,18 @@
|
||||
/obj/structure/light_construct{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/turf/open/floor/plasteel/showroomfloor{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"oX" = (
|
||||
/obj/structure/sink{
|
||||
pixel_y = 30
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/turf/open/floor/plasteel/showroomfloor{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"oY" = (
|
||||
/obj/structure/trash_pile,
|
||||
@@ -6143,7 +6135,9 @@
|
||||
icon_state = "cobweb2"
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"oZ" = (
|
||||
/obj/structure/ore_box,
|
||||
@@ -6154,19 +6148,25 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/turf/open/floor/plasteel/showroomfloor{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pb" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pc" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2
|
||||
},
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/turf/open/floor/plasteel/showroomfloor{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pd" = (
|
||||
/obj/structure/fence{
|
||||
@@ -6195,23 +6195,31 @@
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pi" = (
|
||||
/obj/structure/girder,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pj" = (
|
||||
/obj/structure/mopbucket,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pk" = (
|
||||
/obj/structure/closet/crate/trashcart,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pl" = (
|
||||
/obj/structure/rack,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/oil,
|
||||
/obj/effect/spawner/lootdrop/grille_or_trash,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pm" = (
|
||||
/obj/structure/rack,
|
||||
@@ -6219,7 +6227,9 @@
|
||||
/obj/effect/decal/cleanable/cobweb{
|
||||
icon_state = "cobweb2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pn" = (
|
||||
/obj/structure/fence,
|
||||
@@ -6232,7 +6242,9 @@
|
||||
"pp" = (
|
||||
/obj/structure/ore_box,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pq" = (
|
||||
/obj/structure/table,
|
||||
@@ -6252,18 +6264,24 @@
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/ash,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pt" = (
|
||||
/obj/structure/chair/office,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pu" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/oil{
|
||||
icon_state = "floor6"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pv" = (
|
||||
/obj/structure/closet/crate{
|
||||
@@ -6273,7 +6291,9 @@
|
||||
/obj/effect/turf_decal/tile/brown{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pw" = (
|
||||
/obj/machinery/light{
|
||||
@@ -6281,20 +6301,26 @@
|
||||
light_color = "#e8eaff"
|
||||
},
|
||||
/obj/item/caution,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"px" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/generic,
|
||||
/mob/living/simple_animal/cockroach,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"py" = (
|
||||
/obj/structure/trash_pile,
|
||||
/obj/structure/light_construct{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pz" = (
|
||||
/obj/effect/turf_decal/loading_area,
|
||||
@@ -6321,11 +6347,15 @@
|
||||
/obj/item/lighter{
|
||||
pixel_x = -4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pC" = (
|
||||
/obj/structure/table,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pD" = (
|
||||
/obj/effect/spawner/lootdrop/grille_or_trash,
|
||||
@@ -6333,37 +6363,51 @@
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pE" = (
|
||||
/obj/effect/decal/cleanable/glass,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pF" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pG" = (
|
||||
/obj/machinery/door/airlock{
|
||||
name = "Facility Restroom"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pH" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/ash,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pI" = (
|
||||
/obj/structure/trash_pile,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pJ" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/light/tube/broken,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pK" = (
|
||||
/obj/structure/rack,
|
||||
/obj/effect/spawner/lootdrop/grille_or_trash,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pL" = (
|
||||
/obj/structure/flora/junglebush/large{
|
||||
@@ -6394,7 +6438,9 @@
|
||||
/obj/effect/decal/cleanable/oil{
|
||||
icon_state = "floor5"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pQ" = (
|
||||
/obj/machinery/light{
|
||||
@@ -6403,7 +6449,9 @@
|
||||
},
|
||||
/obj/effect/turf_decal/tile/brown,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pR" = (
|
||||
/obj/structure/sign/departments/cargo,
|
||||
@@ -6416,7 +6464,9 @@
|
||||
"pT" = (
|
||||
/obj/structure/grille,
|
||||
/obj/effect/decal/cleanable/glass,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pU" = (
|
||||
/obj/structure/fence/cut/medium,
|
||||
@@ -6428,28 +6478,38 @@
|
||||
},
|
||||
/obj/effect/turf_decal/tile/brown,
|
||||
/obj/item/chair,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pW" = (
|
||||
/obj/item/caution,
|
||||
/obj/item/mop,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pX" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/robot_debris,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pY" = (
|
||||
/obj/effect/turf_decal/tile/brown,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"pZ" = (
|
||||
/obj/item/broken_bottle,
|
||||
/obj/effect/turf_decal/tile/brown,
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/decal/cleanable/blood/gibs,
|
||||
/turf/open/floor/plasteel,
|
||||
/turf/open/floor/plasteel{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"qa" = (
|
||||
/obj/structure/flora/junglebush,
|
||||
@@ -6458,12 +6518,16 @@
|
||||
"qb" = (
|
||||
/obj/structure/grille,
|
||||
/obj/effect/decal/cleanable/generic,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"qc" = (
|
||||
/obj/structure/grille/broken,
|
||||
/obj/effect/decal/cleanable/glass,
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"qd" = (
|
||||
/obj/structure/fence/cut/large,
|
||||
@@ -6488,21 +6552,33 @@
|
||||
dir = 4;
|
||||
name = "Facility Storage"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"qi" = (
|
||||
/obj/structure/door_assembly/door_assembly_mhatch{
|
||||
name = "Strange Facility Airlock"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"qj" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/spawner/lootdrop/maintenance{
|
||||
lootcount = 2
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/lavaland/surface/outdoors)
|
||||
"AF" = (
|
||||
/obj/structure/closet/firecloset,
|
||||
/turf/open/floor/plating{
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
},
|
||||
/area/xenoarch/gen)
|
||||
"Hx" = (
|
||||
/turf/open/floor/carpet,
|
||||
/area/xenoarch/gen)
|
||||
@@ -11369,7 +11445,7 @@ fe
|
||||
fy
|
||||
fT
|
||||
ge
|
||||
gr
|
||||
fe
|
||||
fy
|
||||
kK
|
||||
fT
|
||||
@@ -11900,7 +11976,7 @@ Sy
|
||||
Sy
|
||||
lC
|
||||
Sy
|
||||
ks
|
||||
AF
|
||||
bk
|
||||
lQ
|
||||
ay
|
||||
@@ -18044,7 +18120,7 @@ lQ
|
||||
lQ
|
||||
lQ
|
||||
kf
|
||||
jN
|
||||
gr
|
||||
jI
|
||||
Sy
|
||||
lX
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -68,6 +68,7 @@
|
||||
#define ADMIN_PUNISHMENT_GIB "Gib"
|
||||
#define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device"
|
||||
#define ADMIN_PUNISHMENT_FIREBALL "Fireball"
|
||||
#define ADMIN_PUNISHMENT_CLUWNE "Floor Cluwne"
|
||||
#define ADMIN_PUNISHMENT_ROD "Immovable Rod"
|
||||
#define ADMIN_PUNISHMENT_SUPPLYPOD "Supply Pod"
|
||||
#define ADMIN_PUNISHMENT_MAZING "Puzzle"
|
||||
@@ -87,4 +88,4 @@
|
||||
///Max amount of keypress messages per second over two seconds before client is autokicked
|
||||
#define MAX_KEYPRESS_AUTOKICK 100
|
||||
///Length of held key rolling buffer
|
||||
#define HELD_KEY_BUFFER_LENGTH 15
|
||||
#define HELD_KEY_BUFFER_LENGTH 15
|
||||
|
||||
@@ -25,24 +25,18 @@
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
// /datum signals
|
||||
#define COMSIG_PARENT_QDELETED "parent_qdeleted" //after a datum's Destroy() is called: (force, qdel_hint), at this point none of the other components chose to interrupt qdel and Destroy has been called
|
||||
|
||||
// /atom signals
|
||||
//Positions for overrides list
|
||||
//End positions
|
||||
#define COMSIG_ATOM_RATVAR_ACT "atom_ratvar_act" //from base of atom/ratvar_act(): ()
|
||||
/////////////////
|
||||
|
||||
|
||||
|
||||
// /area signals
|
||||
|
||||
// /turf signals
|
||||
|
||||
// /atom/movable signals
|
||||
|
||||
// /mob signals
|
||||
|
||||
// /mob/living signals
|
||||
|
||||
// /mob/living/carbon signals
|
||||
@@ -96,3 +90,15 @@
|
||||
//Ouch my toes!
|
||||
#define CALTROP_BYPASS_SHOES 1
|
||||
#define CALTROP_IGNORE_WALKERS 2
|
||||
|
||||
#define ELEMENT_INCOMPATIBLE 1 // Return value to cancel attaching
|
||||
|
||||
// /datum/element flags
|
||||
/// Causes the detach proc to be called when the host object is being deleted
|
||||
#define ELEMENT_DETACH (1 << 0)
|
||||
/**
|
||||
* Only elements created with the same arguments given after `id_arg_index` share an element instance
|
||||
* The arguments are the same when the text and number values are the same and all other values have the same ref
|
||||
*/
|
||||
#define ELEMENT_BESPOKE (1 << 1)
|
||||
#define COMSIG_MOVABLE_UPDATE_GLIDE_SIZE "movable_glide_size" //Called when the movable's glide size is updated: (new_glide_size)
|
||||
@@ -180,22 +180,20 @@
|
||||
///from base of area/Exited(): (/area)
|
||||
#define COMSIG_EXIT_AREA "exit_area"
|
||||
///from base of atom/Click(): (location, control, params, mob/user)
|
||||
#define COMSIG_CLICK "atom_click"
|
||||
///from base of atom/ShiftClick(): (/mob)
|
||||
#define COMSIG_CLICK_SHIFT "shift_click"
|
||||
#define COMPONENT_ALLOW_EXAMINATE (1<<0) //Allows the user to examinate regardless of client.eye.
|
||||
///from base of atom/CtrlClickOn(): (/mob)
|
||||
#define COMSIG_CLICK_CTRL "ctrl_click"
|
||||
///from base of atom/AltClick(): (/mob)
|
||||
#define COMSIG_CLICK_ALT "alt_click"
|
||||
///from base of atom/CtrlShiftClick(/mob)
|
||||
#define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click"
|
||||
///from base of atom/MouseDrop(): (/atom/over, /mob/user)
|
||||
#define COMSIG_MOUSEDROP_ONTO "mousedrop_onto"
|
||||
#define COMPONENT_NO_MOUSEDROP (1<<0)
|
||||
///from base of atom/MouseDrop_T: (/atom/from, /mob/user)
|
||||
#define COMSIG_MOUSEDROPPED_ONTO "mousedropped_onto"
|
||||
#define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params, mob/user)
|
||||
#define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob)
|
||||
#define COMPONENT_ALLOW_EXAMINATE 1
|
||||
#define COMPONENT_DENY_EXAMINATE 2 //Higher priority compared to the above one
|
||||
|
||||
#define COMSIG_CLICK_CTRL "ctrl_click" //from base of atom/CtrlClickOn(): (/mob)
|
||||
#define COMSIG_CLICK_ALT "alt_click" //from base of atom/AltClick(): (/mob)
|
||||
#define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click" //from base of atom/CtrlShiftClick(/mob)
|
||||
#define COMSIG_MOUSEDROP_ONTO "mousedrop_onto" //from base of atom/MouseDrop(): (/atom/over, /mob/user)
|
||||
#define COMPONENT_NO_MOUSEDROP 1
|
||||
#define COMSIG_MOUSEDROPPED_ONTO "mousedropped_onto"
|
||||
|
||||
|
||||
#define COMSIG_MICRO_PICKUP_FEET "micro_force_grabbed" //From /datum/element/mob_holder/micro
|
||||
// /area signals
|
||||
|
||||
///from base of area/Entered(): (atom/movable/M)
|
||||
@@ -261,15 +259,45 @@
|
||||
|
||||
///called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source)
|
||||
#define COMSIG_MOVABLE_DISPOSING "movable_disposing"
|
||||
#define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination)
|
||||
|
||||
// /mob signals
|
||||
// /mob signals
|
||||
#define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/A)
|
||||
#define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed)
|
||||
#define COMPONENT_BLOCK_DEATH_BROADCAST 1 //stops the death from being broadcasted in deadchat.
|
||||
#define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize(): (can_reenter_corpse, special, penalize)
|
||||
#define COMPONENT_BLOCK_GHOSTING 1
|
||||
#define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj
|
||||
#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources)
|
||||
#define COMPONENT_BLOCK_MAGIC 1
|
||||
#define COMSIG_MOB_HUD_CREATED "mob_hud_created" //from base of mob/create_mob_hud(): ()
|
||||
#define COMSIG_MOB_ATTACK_HAND "mob_attack_hand" //from base of
|
||||
#define COMSIG_MOB_ITEM_ATTACK "mob_item_attack" //from base of /obj/item/attack(): (mob/M, mob/user)
|
||||
#define COMPONENT_ITEM_NO_ATTACK 1
|
||||
#define COMSIG_MOB_ITEM_AFTERATTACK "mob_item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, click_parameters)
|
||||
#define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" //from base of mob/RangedAttack(): (atom/A, params)
|
||||
#define COMSIG_MOB_THROW "mob_throw" //from base of /mob/throw_item(): (atom/target)
|
||||
#define COMSIG_MOB_KEY_CHANGE "mob_key_change" //from base of /mob/transfer_ckey(): (new_character, old_character)
|
||||
#define COMSIG_MOB_PRE_PLAYER_CHANGE "mob_pre_player_change" //sent to the target mob from base of /mob/transfer_ckey() and /mind/transfer_to(): (our_character, their_character)
|
||||
// #define COMPONENT_STOP_MIND_TRANSFER 1
|
||||
#define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" //from base of /mob/update_sight(): ()
|
||||
#define COMSIG_MOB_ON_NEW_MIND "mob_on_new_mind" //called when a new mind is assigned to a mob: ()
|
||||
#define COMSIG_MOB_SAY "mob_say" // from /mob/living/say(): (proc args list)
|
||||
#define COMPONENT_UPPERCASE_SPEECH 1
|
||||
// used to access COMSIG_MOB_SAY argslist
|
||||
#define SPEECH_MESSAGE 1
|
||||
// #define SPEECH_BUBBLE_TYPE 2
|
||||
#define SPEECH_SPANS 3
|
||||
/* #define SPEECH_SANITIZE 4
|
||||
#define SPEECH_LANGUAGE 5
|
||||
#define SPEECH_IGNORE_SPAM 6
|
||||
#define SPEECH_FORCED 7 */
|
||||
|
||||
///from base of /mob/Login(): ()
|
||||
#define COMSIG_MOB_LOGIN "mob_login"
|
||||
///from base of /mob/Logout(): ()
|
||||
#define COMSIG_MOB_LOGOUT "mob_logout"
|
||||
///from base of mob/death(): (gibbed)
|
||||
#define COMSIG_MOB_DEATH "mob_death"
|
||||
///from base of mob/set_stat(): (new_stat)
|
||||
#define COMSIG_MOB_STATCHANGE "mob_statchange"
|
||||
///from base of mob/clickon(): (atom/A, params)
|
||||
@@ -279,44 +307,12 @@
|
||||
///from base of mob/AltClickOn(): (atom/A)
|
||||
#define COMSIG_MOB_ALTCLICKON "mob_altclickon"
|
||||
#define COMSIG_MOB_CANCEL_CLICKON (1<<0)
|
||||
|
||||
///from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj
|
||||
#define COMSIG_MOB_ALLOWED "mob_allowed"
|
||||
///from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources)
|
||||
#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic"
|
||||
#define COMPONENT_BLOCK_MAGIC (1<<0)
|
||||
///from base of mob/create_mob_hud(): ()
|
||||
#define COMSIG_MOB_HUD_CREATED "mob_hud_created"
|
||||
///from base of atom/attack_hand(): (mob/user)
|
||||
#define COMSIG_MOB_ATTACK_HAND "mob_attack_hand"
|
||||
///from base of /obj/item/attack(): (mob/M, mob/user)
|
||||
#define COMSIG_MOB_ITEM_ATTACK "mob_item_attack"
|
||||
#define COMPONENT_ITEM_NO_ATTACK (1<<0)
|
||||
///from base of /mob/living/proc/apply_damage(): (damage, damagetype, def_zone)
|
||||
#define COMSIG_MOB_APPLY_DAMGE "mob_apply_damage"
|
||||
///from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, click_parameters)
|
||||
#define COMSIG_MOB_ITEM_AFTERATTACK "mob_item_afterattack"
|
||||
///from base of obj/item/attack_qdeleted(): (atom/target, mob/user, proxiumity_flag, click_parameters)
|
||||
#define COMSIG_MOB_ITEM_ATTACK_QDELETED "mob_item_attack_qdeleted"
|
||||
///from base of mob/RangedAttack(): (atom/A, params)
|
||||
#define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged"
|
||||
///from base of /mob/throw_item(): (atom/target)
|
||||
#define COMSIG_MOB_THROW "mob_throw"
|
||||
///from base of /mob/verb/examinate(): (atom/target)
|
||||
#define COMSIG_MOB_EXAMINATE "mob_examinate"
|
||||
///from base of /mob/update_sight(): ()
|
||||
#define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight"
|
||||
////from /mob/living/say(): ()
|
||||
#define COMSIG_MOB_SAY "mob_say"
|
||||
#define COMPONENT_UPPERCASE_SPEECH (1<<0)
|
||||
// used to access COMSIG_MOB_SAY argslist
|
||||
#define SPEECH_MESSAGE 1
|
||||
// #define SPEECH_BUBBLE_TYPE 2
|
||||
#define SPEECH_SPANS 3
|
||||
/* #define SPEECH_SANITIZE 4
|
||||
#define SPEECH_LANGUAGE 5
|
||||
#define SPEECH_IGNORE_SPAM 6
|
||||
#define SPEECH_FORCED 7 */
|
||||
#define COMSIG_MOB_ITEM_ATTACK_QDELETED "mob_item_attack_qdeleted" //from base of /mob/transfer_ckey(): (new_character, old_character)
|
||||
#define COMPONENT_DO_NOT_PENALIZE_GHOSTING (1<<1)
|
||||
#define COMPONENT_FREE_GHOSTING (1<<2)
|
||||
|
||||
///from /mob/say_dead(): (mob/speaker, message)
|
||||
#define COMSIG_MOB_DEADSAY "mob_deadsay"
|
||||
@@ -343,6 +339,9 @@
|
||||
#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock"
|
||||
///from base of mob/living/revive() (full_heal, admin_revive)
|
||||
#define COMSIG_LIVING_REVIVE "living_revive"
|
||||
|
||||
#define COMSIG_LIVING_GUN_PROCESS_FIRE "living_gun_process_fire" //from base of /obj/item/gun/proc/process_fire(): (atom/target, params, zone_override)
|
||||
|
||||
///from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs)
|
||||
#define COMSIG_LIVING_REGENERATE_LIMBS "living_regen_limbs"
|
||||
///from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment
|
||||
|
||||
@@ -52,7 +52,9 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
#define PASSMOB (1<<4)
|
||||
#define PASSCLOSEDTURF (1<<5)
|
||||
#define LETPASSTHROW (1<<6)
|
||||
|
||||
#define PASSMACHINES (1<<7)
|
||||
#define PASSCOMPUTER (1<<8)
|
||||
#define PASSDOOR (1<<13)
|
||||
|
||||
//Movement Types
|
||||
#define GROUND (1<<0)
|
||||
|
||||
+3
-25
@@ -25,30 +25,6 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
|
||||
#define NOT_IMPLEMENTED "NOT_IMPLEMENTED"
|
||||
|
||||
#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day
|
||||
|
||||
#define JANUARY 1
|
||||
#define FEBRUARY 2
|
||||
#define MARCH 3
|
||||
#define APRIL 4
|
||||
#define MAY 5
|
||||
#define JUNE 6
|
||||
#define JULY 7
|
||||
#define AUGUST 8
|
||||
#define SEPTEMBER 9
|
||||
#define OCTOBER 10
|
||||
#define NOVEMBER 11
|
||||
#define DECEMBER 12
|
||||
|
||||
//Select holiday names -- If you test for a holiday in the code, make the holiday's name a define and test for that instead
|
||||
#define NEW_YEAR "New Year"
|
||||
#define VALENTINES "Valentine's Day"
|
||||
#define APRIL_FOOLS "April Fool's Day"
|
||||
#define EASTER "Easter"
|
||||
#define HALLOWEEN "Halloween"
|
||||
#define CHRISTMAS "Christmas"
|
||||
#define FESTIVE_SEASON "Festive Season"
|
||||
|
||||
//Human Overlays Indexes/////////
|
||||
//LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS
|
||||
#define MUTATIONS_LAYER 31 //mutations. Tk headglows, cold resistance glow, etc
|
||||
@@ -503,4 +479,6 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
|
||||
#define FALL_STOP_INTERCEPTING (1<<2) //Used in situations where halting the whole "intercept" loop would be better, like supermatter dusting (and thus deleting) the atom.
|
||||
|
||||
//Misc text define. Does 4 spaces. Used as a makeshift tabulator.
|
||||
#define FOURSPACES " "
|
||||
#define FOURSPACES " "
|
||||
|
||||
#define CANT_REENTER_ROUND -1
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
//Defaults
|
||||
#define MOVE_FORCE_DEFAULT 1000
|
||||
#define MOVE_RESIST_DEFAULT 1000
|
||||
#define PULL_FORCE_DEFAULT 1000
|
||||
|
||||
//Factors/modifiers
|
||||
#define MOVE_FORCE_PULL_RATIO 1 //Same move force to pull objects
|
||||
#define MOVE_FORCE_PUSH_RATIO 1 //Same move force to normally push
|
||||
#define MOVE_FORCE_FORCEPUSH_RATIO 2 //2x move force to forcefully push
|
||||
#define MOVE_FORCE_CRUSH_RATIO 3 //3x move force to do things like crush objects
|
||||
#define MOVE_FORCE_THROW_RATIO 1 //Same force throw as resist to throw objects
|
||||
|
||||
#define MOVE_FORCE_OVERPOWERING (MOVE_FORCE_DEFAULT * MOVE_FORCE_CRUSH_RATIO * 10)
|
||||
#define MOVE_FORCE_EXTREMELY_STRONG (MOVE_FORCE_DEFAULT * MOVE_FORCE_CRUSH_RATIO * 3)
|
||||
#define MOVE_FORCE_VERY_STRONG ((MOVE_FORCE_DEFAULT * MOVE_FORCE_CRUSH_RATIO) - 1)
|
||||
#define MOVE_FORCE_STRONG (MOVE_FORCE_DEFAULT * 2)
|
||||
#define MOVE_FORCE_NORMAL MOVE_FORCE_DEFAULT
|
||||
#define MOVE_FORCE_WEAK (MOVE_FORCE_DEFAULT / 2)
|
||||
#define MOVE_FORCE_VERY_WEAK ((MOVE_FORCE_DEFAULT / MOVE_FORCE_CRUSH_RATIO) + 1)
|
||||
#define MOVE_FORCE_EXTREMELY_WEAK (MOVE_FORCE_DEFAULT / (MOVE_FORCE_CRUSH_RATIO * 3))
|
||||
@@ -0,0 +1,16 @@
|
||||
//The minimum for glide_size to be clamped to.
|
||||
#define MIN_GLIDE_SIZE 1
|
||||
//The maximum for glide_size to be clamped to.
|
||||
//This shouldn't be higher than the icon size, and generally you shouldn't be changing this, but it's here just in case.
|
||||
#define MAX_GLIDE_SIZE 32
|
||||
|
||||
// Originally a really stupid /tg/ var that sucked and was really bad and caused it to look horrible. Now it's a way of compensating for time dilation
|
||||
GLOBAL_VAR_INIT(glide_size_multiplier, 1.0)
|
||||
|
||||
///Broken down, here's what this does:
|
||||
/// divides the world icon_size (32) by delay divided by ticklag to get the number of pixels something should be moving each tick.
|
||||
/// The division result is given a min value of 1 to prevent obscenely slow glide sizes from being set
|
||||
/// Then that's multiplied by the global glide size multiplier. 1.25 by default feels pretty close to spot on. This is just to try to get byond to behave.
|
||||
/// The whole result is then clamped to within the range above.
|
||||
/// Not very readable but it works
|
||||
#define DELAY_TO_GLIDE_SIZE(delay) (CLAMP(((32 / max((delay) / world.tick_lag, 1)) * GLOB.glide_size_multiplier), MIN_GLIDE_SIZE, MAX_GLIDE_SIZE))
|
||||
@@ -0,0 +1,13 @@
|
||||
//TODO: move these to their own file
|
||||
#define POOL_FRIGID 1
|
||||
#define POOL_COOL 2
|
||||
#define POOL_NORMAL 3
|
||||
#define POOL_WARM 4
|
||||
#define POOL_SCALDING 5
|
||||
|
||||
GLOBAL_LIST_INIT(blacklisted_pool_reagents, list(
|
||||
/datum/reagent/toxin/plasma, /datum/reagent/oxygen, /datum/reagent/nitrous_oxide, /datum/reagent/nitrogen, //gases
|
||||
/datum/reagent/fermi, //blanket fermichem ban sorry. this also covers mkultra, genital enlargers, etc etc.
|
||||
/datum/reagent/drug/aphrodisiac, /datum/reagent/drug/anaphrodisiac, /datum/reagent/drug/aphrodisiacplus, /datum/reagent/drug/anaphrodisiacplus, //literally asking for prefbreaks
|
||||
/datum/reagent/consumable/femcum, /datum/reagent/consumable/semen //NO.
|
||||
))
|
||||
@@ -41,9 +41,9 @@ Ask ninjanomnom if they're around
|
||||
// WARNING: The deines below could have disastrous consequences if tweaked incorrectly. See: The great SM purge of Oct.6.2017
|
||||
// contamination_chance = (strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_CHANCE_COEFFICIENT * min(1/(steps*RAD_DISTANCE_COEFFICIENT), 1))
|
||||
// contamination_strength = (strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_STR_COEFFICIENT
|
||||
#define RAD_MINIMUM_CONTAMINATION 350 // How strong does a radiation wave have to be to contaminate objects
|
||||
#define RAD_MINIMUM_CONTAMINATION 300 // How strong does a radiation wave have to be to contaminate objects
|
||||
#define RAD_CONTAMINATION_CHANCE_COEFFICIENT 0.005 // Higher means higher strength scaling contamination chance
|
||||
#define RAD_CONTAMINATION_STR_COEFFICIENT 0.3 // Higher means higher strength scaling contamination strength
|
||||
#define RAD_CONTAMINATION_STR_COEFFICIENT 0.99 // Higher means higher strength scaling contamination strength
|
||||
#define RAD_DISTANCE_COEFFICIENT 1 // Lower means further rad spread
|
||||
|
||||
#define RAD_HALF_LIFE 90 // The half-life of contaminated objects
|
||||
#define RAD_HALF_LIFE 90 // The half-life of contaminated objects
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
#define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day
|
||||
|
||||
#define JANUARY 1
|
||||
#define FEBRUARY 2
|
||||
#define MARCH 3
|
||||
#define APRIL 4
|
||||
#define MAY 5
|
||||
#define JUNE 6
|
||||
#define JULY 7
|
||||
#define AUGUST 8
|
||||
#define SEPTEMBER 9
|
||||
#define OCTOBER 10
|
||||
#define NOVEMBER 11
|
||||
#define DECEMBER 12
|
||||
|
||||
//Select holiday names -- If you test for a holiday in the code, make the holiday's name a define and test for that instead
|
||||
#define NEW_YEAR "New Year"
|
||||
#define VALENTINES "Valentine's Day"
|
||||
#define APRIL_FOOLS "April Fool's Day"
|
||||
#define EASTER "Easter"
|
||||
#define HALLOWEEN "Halloween"
|
||||
#define CHRISTMAS "Christmas"
|
||||
#define FESTIVE_SEASON "Festive Season"
|
||||
|
||||
/*
|
||||
|
||||
Days of the week to make it easier to reference them.
|
||||
|
||||
@@ -124,6 +124,8 @@
|
||||
#define TRAIT_ALCOHOL_LIGHTWEIGHT "alcohol_lightweight" //Skyrat port
|
||||
#define TRAIT_CURSED_BLOOD "cursed_blood" //Yo dawg I heard you like bloodborne references so I put a
|
||||
|
||||
#define TRAIT_SWIMMING "swimming" //only applied by /datum/element/swimming, for checking
|
||||
|
||||
//non-mob traits
|
||||
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it
|
||||
|
||||
@@ -168,6 +170,11 @@
|
||||
#define TRAIT_COLDBLOODED "coldblooded" // Your body is literal room temperature. Does not make you immune to the temp.
|
||||
#define TRAIT_FLIMSY "flimsy" //you have 20% less maxhealth
|
||||
#define TRAIT_TOUGH "tough" //you have 10% more maxhealth
|
||||
#define TRAIT_AUTO_CATCH_ITEM "auto_catch_item"
|
||||
#define TRAIT_CLOWN_MENTALITY "clown_mentality" // The future is now, clownman.
|
||||
#define TRAIT_FREESPRINT "free_sprinting"
|
||||
#define TRAIT_NO_TELEPORT "no-teleport" //you just can't
|
||||
#define TRAIT_NO_ALCOHOL "alcohol_intolerance"
|
||||
|
||||
// common trait sources
|
||||
#define TRAIT_GENERIC "generic"
|
||||
@@ -217,3 +224,11 @@
|
||||
#define LOCKED_HELMET_TRAIT "locked-helmet"
|
||||
#define NINJA_SUIT_TRAIT "ninja-suit"
|
||||
#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant"
|
||||
#define SLEEPING_CARP_TRAIT "sleeping_carp"
|
||||
#define RISING_BASS_TRAIT "rising_bass"
|
||||
#define ABDUCTOR_ANTAGONIST "abductor-antagonist"
|
||||
#define NUKEOP_ANTAGONIST "nukeop-antagonist"
|
||||
#define MADE_UNCLONEABLE "made-uncloneable"
|
||||
#define NUKEOP_TRAIT "nuke-op"
|
||||
#define MEGAFAUNA_TRAIT "megafauna"
|
||||
#define DEATHSQUAD_TRAIT "deathsquad"
|
||||
|
||||
@@ -442,12 +442,7 @@
|
||||
candidates -= M
|
||||
|
||||
/proc/pollGhostCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE)
|
||||
var/list/candidates = list()
|
||||
|
||||
for(var/mob/dead/observer/G in GLOB.player_list)
|
||||
if(G.can_reenter_round)
|
||||
candidates += G
|
||||
|
||||
var/list/candidates = get_all_ghost_role_eligible()
|
||||
return pollCandidates(Question, jobbanType, gametypeCheck, be_special_flag, poll_time, ignore_category, flashwindow, candidates)
|
||||
|
||||
/proc/pollCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE, list/group = null)
|
||||
@@ -457,7 +452,7 @@
|
||||
var/list/result = list()
|
||||
for(var/m in group)
|
||||
var/mob/M = m
|
||||
if(!M.key || !M.client || (ignore_category && GLOB.poll_ignore[ignore_category] && M.ckey in GLOB.poll_ignore[ignore_category]))
|
||||
if(!M.key || !M.client || (ignore_category && GLOB.poll_ignore[ignore_category] && (M.ckey in GLOB.poll_ignore[ignore_category])))
|
||||
continue
|
||||
if(be_special_flag)
|
||||
if(!(M.client.prefs) || !(be_special_flag in M.client.prefs.be_special))
|
||||
@@ -510,7 +505,7 @@
|
||||
|
||||
G_found.client.prefs.copy_to(new_character)
|
||||
new_character.dna.update_dna_identity()
|
||||
new_character.key = G_found.key
|
||||
G_found.transfer_ckey(new_character, FALSE)
|
||||
|
||||
return new_character
|
||||
|
||||
|
||||
+21
-11
@@ -12,9 +12,9 @@
|
||||
))
|
||||
var/list/processing_list = list(location)
|
||||
. = list()
|
||||
while(processing_list.len)
|
||||
var/atom/thing = processing_list[1]
|
||||
processing_list -= thing
|
||||
var/i = 0
|
||||
while(i < length(processing_list))
|
||||
var/atom/thing = processing_list[++i]
|
||||
if(ignored_things[thing.type])
|
||||
continue
|
||||
. += thing
|
||||
@@ -25,8 +25,22 @@
|
||||
/proc/radiation_pulse(atom/source, intensity, range_modifier, log=FALSE, can_contaminate=TRUE)
|
||||
if(!SSradiation.can_fire)
|
||||
return
|
||||
for(var/dir in GLOB.cardinals)
|
||||
new /datum/radiation_wave(source, dir, intensity, range_modifier, can_contaminate)
|
||||
var/area/A = get_area(source)
|
||||
var/atom/nested_loc = source.loc
|
||||
var/spawn_waves = TRUE
|
||||
while(nested_loc != A)
|
||||
if(nested_loc.rad_flags & RAD_PROTECT_CONTENTS)
|
||||
spawn_waves = FALSE
|
||||
break
|
||||
nested_loc = nested_loc.loc
|
||||
if(spawn_waves)
|
||||
for(var/dir in GLOB.cardinals)
|
||||
new /datum/radiation_wave(source, dir, intensity, range_modifier, can_contaminate)
|
||||
|
||||
var/static/last_huge_pulse = 0
|
||||
if(intensity > 3000 && world.time > last_huge_pulse + 200)
|
||||
last_huge_pulse = world.time
|
||||
log = TRUE
|
||||
|
||||
var/list/things = get_rad_contents(source) //copypasta because I don't want to put special code in waves to handle their origin
|
||||
for(var/k in 1 to things.len)
|
||||
@@ -35,11 +49,7 @@
|
||||
continue
|
||||
thing.rad_act(intensity)
|
||||
|
||||
var/static/last_huge_pulse = 0
|
||||
if(intensity > 3000 && world.time > last_huge_pulse + 200)
|
||||
last_huge_pulse = world.time
|
||||
log = TRUE
|
||||
if(log)
|
||||
var/turf/_source_T = isturf(source) ? source : get_turf(source)
|
||||
log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [loc_name(_source_T)] ")
|
||||
var/turf/_source_T = get_turf(source)
|
||||
log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [loc_name(_source_T)][spawn_waves ? "" : " (contained by [nested_loc.name])"]")
|
||||
return TRUE
|
||||
|
||||
@@ -85,4 +85,4 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
|
||||
/proc/gameTimestamp(format = "hh:mm:ss", wtime=null)
|
||||
if(!wtime)
|
||||
wtime = world.time
|
||||
return time2text(wtime - GLOB.timezoneOffset, format)
|
||||
return time2text(wtime - GLOB.timezoneOffset, format)
|
||||
|
||||
@@ -768,16 +768,6 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list(
|
||||
/obj/item/stack/rods,
|
||||
/obj/item/pipe)))
|
||||
|
||||
/proc/can_embed(obj/item/W)
|
||||
if(W.is_sharp())
|
||||
return 1
|
||||
if(is_pointed(W))
|
||||
return 1
|
||||
|
||||
if(is_type_in_typecache(W, GLOB.can_embed_types))
|
||||
return 1
|
||||
|
||||
|
||||
/*
|
||||
Checks if that loc and dir has an item on the wall
|
||||
*/
|
||||
@@ -1317,7 +1307,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
invisibility = 101
|
||||
density = FALSE
|
||||
see_in_dark = 1e6
|
||||
anchored = TRUE
|
||||
move_resist = INFINITY
|
||||
var/ready_to_die = FALSE
|
||||
|
||||
/mob/dview/Initialize() //Properly prevents this mob from gaining huds or joining any global lists
|
||||
|
||||
@@ -96,7 +96,10 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"PASSBLOB" = PASSBLOB,
|
||||
"PASSMOB" = PASSMOB,
|
||||
"PASSCLOSEDTURF" = PASSCLOSEDTURF,
|
||||
"LETPASSTHROW" = LETPASSTHROW
|
||||
"LETPASSTHROW" = LETPASSTHROW,
|
||||
"PASSDOOR" = PASSDOOR, //yogs
|
||||
"PASSMACHINES" = PASSMACHINES,
|
||||
"PASSCOMPUTER" = PASSCOMPUTER
|
||||
),
|
||||
"movement_type" = list(
|
||||
"GROUND" = GROUND,
|
||||
@@ -201,4 +204,4 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"ORGAN_VITAL" = ORGAN_VITAL,
|
||||
"ORGAN_NO_SPOIL" = ORGAN_NO_SPOIL
|
||||
),
|
||||
))
|
||||
))
|
||||
|
||||
@@ -48,3 +48,5 @@ GLOBAL_LIST_EMPTY(sortedAreas)
|
||||
GLOBAL_LIST_EMPTY(areas_by_type)
|
||||
|
||||
GLOBAL_LIST_EMPTY(all_abstract_markers)
|
||||
|
||||
GLOBAL_LIST_EMPTY(stationroom_landmarks) //List of all spawns for stationrooms
|
||||
|
||||
@@ -17,6 +17,8 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE) //BSA unlocked by head ID swipes
|
||||
|
||||
GLOBAL_LIST_EMPTY(player_details) // ckey -> /datum/player_details
|
||||
|
||||
GLOBAL_LIST_EMPTY(clientless_round_timeouts) // ckey -> time that ckey can rejoin round
|
||||
|
||||
// All religion stuff
|
||||
GLOBAL_VAR(religion)
|
||||
GLOBAL_VAR(deity)
|
||||
@@ -24,4 +26,4 @@ GLOBAL_VAR(bible_name)
|
||||
GLOBAL_VAR(bible_icon_state)
|
||||
GLOBAL_VAR(bible_item_state)
|
||||
GLOBAL_VAR(holy_weapon_type)
|
||||
GLOBAL_VAR(holy_armor_type)
|
||||
GLOBAL_VAR(holy_armor_type)
|
||||
|
||||
@@ -315,9 +315,10 @@
|
||||
/mob/proc/ShiftClickOn(atom/A)
|
||||
A.ShiftClick(src)
|
||||
return
|
||||
|
||||
/atom/proc/ShiftClick(mob/user)
|
||||
SEND_SIGNAL(src, COMSIG_CLICK_SHIFT, user)
|
||||
if(user.client && user.client.eye == user || user.client.eye == user.loc)
|
||||
var/flags = SEND_SIGNAL(src, COMSIG_CLICK_SHIFT, user)
|
||||
if(!(flags & COMPONENT_DENY_EXAMINATE) && user.client && (user.client.eye == user || user.client.eye == user.loc || flags & COMPONENT_ALLOW_EXAMINATE))
|
||||
user.examinate(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/screen/examine(mob/user)
|
||||
return
|
||||
return list()
|
||||
|
||||
/obj/screen/orbit()
|
||||
return
|
||||
|
||||
@@ -109,17 +109,18 @@
|
||||
take_damage(I.force, I.damtype, "melee", 1)
|
||||
|
||||
/mob/living/attacked_by(obj/item/I, mob/living/user)
|
||||
var/totitemdamage = I.force
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/tempcarb = user
|
||||
if(!tempcarb.combatmode)
|
||||
totitemdamage *= 0.5
|
||||
if(user.resting)
|
||||
totitemdamage *= 0.5
|
||||
//CIT CHANGES END HERE
|
||||
if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration))
|
||||
return FALSE
|
||||
send_item_attack_message(I, user)
|
||||
if(I.force)
|
||||
//CIT CHANGES START HERE - combatmode and resting checks
|
||||
var/totitemdamage = I.force
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/tempcarb = user
|
||||
if(!tempcarb.combatmode)
|
||||
totitemdamage *= 0.5
|
||||
if(user.resting)
|
||||
totitemdamage *= 0.5
|
||||
//CIT CHANGES END HERE
|
||||
apply_damage(totitemdamage, I.damtype) //CIT CHANGE - replaces I.force with totitemdamage
|
||||
if(I.damtype == BRUTE)
|
||||
if(prob(33))
|
||||
|
||||
@@ -102,9 +102,8 @@
|
||||
|
||||
/obj/item/tk_grab/examine(user)
|
||||
if (focus)
|
||||
focus.examine(user)
|
||||
else
|
||||
..()
|
||||
return focus.examine(user)
|
||||
return ..()
|
||||
|
||||
/obj/item/tk_grab/attack_self(mob/user)
|
||||
if(!focus)
|
||||
|
||||
@@ -146,6 +146,7 @@
|
||||
var/key_mode
|
||||
var/value_mode
|
||||
var/splitter = " "
|
||||
var/lowercase = TRUE
|
||||
|
||||
/datum/config_entry/keyed_list/New()
|
||||
. = ..()
|
||||
@@ -162,7 +163,9 @@
|
||||
var/key_value = null
|
||||
|
||||
if(key_pos || value_mode == VALUE_MODE_FLAG)
|
||||
key_name = lowertext(copytext(str_val, 1, key_pos))
|
||||
key_name = copytext(str_val, 1, key_pos)
|
||||
if(lowercase)
|
||||
key_name = lowertext(key_name)
|
||||
key_value = copytext(str_val, key_pos + 1)
|
||||
var/new_key
|
||||
var/new_value
|
||||
|
||||
@@ -132,6 +132,14 @@
|
||||
min_val = 0
|
||||
max_val = 1
|
||||
|
||||
/datum/config_entry/number/suicide_reenter_round_timer
|
||||
config_entry_value = 30
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/roundstart_suicide_time_limit
|
||||
config_entry_value = 30
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/shuttle_refuel_delay
|
||||
config_entry_value = 12000
|
||||
min_val = 0
|
||||
@@ -361,8 +369,14 @@
|
||||
|
||||
/datum/config_entry/flag/disable_stambuffer
|
||||
|
||||
/datum/config_entry/keyed_list/box_random_engine
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
lowercase = FALSE
|
||||
splitter = ","
|
||||
|
||||
/datum/config_entry/number/auto_transfer_delay
|
||||
config_entry_value = 72000
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/dynamic_mode
|
||||
/datum/config_entry/flag/dynamic_mode
|
||||
|
||||
@@ -382,6 +382,9 @@ SUBSYSTEM_DEF(air)
|
||||
CHECK_TICK
|
||||
|
||||
/datum/controller/subsystem/air/proc/setup_template_machinery(list/atmos_machines)
|
||||
if(!initialized)
|
||||
return
|
||||
|
||||
for(var/A in atmos_machines)
|
||||
var/obj/machinery/atmospherics/AM = A
|
||||
AM.atmosinit()
|
||||
|
||||
@@ -1,6 +1,27 @@
|
||||
SUBSYSTEM_DEF(dcs)
|
||||
PROCESSING_SUBSYSTEM_DEF(dcs)
|
||||
name = "Datum Component System"
|
||||
flags = SS_NO_INIT | SS_NO_FIRE
|
||||
flags = SS_NO_INIT
|
||||
var/list/elements_by_type = list()
|
||||
|
||||
/datum/controller/subsystem/dcs/Recover()
|
||||
/datum/controller/subsystem/processing/dcs/Recover()
|
||||
comp_lookup = SSdcs.comp_lookup
|
||||
|
||||
/datum/controller/subsystem/processing/dcs/proc/GetElement(datum/element/eletype, ...)
|
||||
var/element_id = eletype
|
||||
|
||||
if(initial(eletype.element_flags) & ELEMENT_BESPOKE)
|
||||
var/list/fullid = list("[eletype]")
|
||||
for(var/i in initial(eletype.id_arg_index) to length(args))
|
||||
var/argument = args[i]
|
||||
if(istext(argument) || isnum(argument))
|
||||
fullid += "[argument]"
|
||||
else
|
||||
fullid += "[REF(argument)]"
|
||||
element_id = fullid.Join("&")
|
||||
|
||||
. = elements_by_type[element_id]
|
||||
if(.)
|
||||
return
|
||||
if(!ispath(eletype, /datum/element))
|
||||
CRASH("Attempted to instantiate [eletype] as a /datum/element")
|
||||
. = elements_by_type[element_id] = new eletype
|
||||
@@ -98,7 +98,7 @@ SUBSYSTEM_DEF(garbage)
|
||||
state = SS_RUNNING
|
||||
break
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_CHECK)
|
||||
@@ -266,8 +266,8 @@ SUBSYSTEM_DEF(garbage)
|
||||
D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED
|
||||
var/start_time = world.time
|
||||
var/start_tick = world.tick_usage
|
||||
SEND_SIGNAL(D, COMSIG_PARENT_QDELETING, force) // Let the (remaining) components know about the result of Destroy
|
||||
var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up.
|
||||
SEND_SIGNAL(D, COMSIG_PARENT_QDELETED, force, hint) // Let the (remaining) components know about the result of Destroy
|
||||
if(world.time != start_time)
|
||||
I.slept_destroy++
|
||||
else
|
||||
|
||||
@@ -89,6 +89,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
var/list/space_ruins = levels_by_trait(ZTRAIT_SPACE_RUINS)
|
||||
if (space_ruins.len)
|
||||
seedRuins(space_ruins, CONFIG_GET(number/space_budget), /area/space, space_ruins_templates)
|
||||
SSmapping.seedStation()
|
||||
loading_ruins = FALSE
|
||||
#endif
|
||||
repopulate_sorted_areas()
|
||||
@@ -362,6 +363,8 @@ GLOBAL_LIST_EMPTY(the_station_areas)
|
||||
lava_ruins_templates[R.name] = R
|
||||
else if(istype(R, /datum/map_template/ruin/space))
|
||||
space_ruins_templates[R.name] = R
|
||||
else if(istype(R, /datum/map_template/ruin/station))
|
||||
station_room_templates[R.name] = R
|
||||
|
||||
/datum/controller/subsystem/mapping/proc/preloadShuttleTemplates()
|
||||
var/list/unbuyable = generateMapList("[global.config.directory]/unbuyableshuttles.txt")
|
||||
@@ -524,3 +527,14 @@ GLOBAL_LIST_EMPTY(the_station_areas)
|
||||
isolated_ruins_z = add_new_zlevel("Isolated Ruins/Reserved", list(ZTRAIT_RESERVED = TRUE, ZTRAIT_ISOLATED_RUINS = TRUE))
|
||||
initialize_reserved_level(isolated_ruins_z.z_value)
|
||||
return isolated_ruins_z.z_value
|
||||
|
||||
// Station Ruins
|
||||
/datum/controller/subsystem/mapping
|
||||
var/list/station_room_templates = list()
|
||||
|
||||
/datum/controller/subsystem/mapping/proc/seedStation()
|
||||
for(var/V in GLOB.stationroom_landmarks)
|
||||
var/obj/effect/landmark/stationroom/LM = V
|
||||
LM.load()
|
||||
if(GLOB.stationroom_landmarks.len)
|
||||
seedStation() //I'm sure we can trust everyone not to insert a 1x1 rooms which loads a landmark which loads a landmark which loads a la...
|
||||
|
||||
@@ -46,6 +46,7 @@ SUBSYSTEM_DEF(spacedrift)
|
||||
var/old_dir = AM.dir
|
||||
var/old_loc = AM.loc
|
||||
AM.inertia_moving = TRUE
|
||||
AM.set_glide_size(DELAY_TO_GLIDE_SIZE(AM.inertia_move_delay))
|
||||
step(AM, AM.inertia_dir)
|
||||
AM.inertia_moving = FALSE
|
||||
AM.inertia_next_move = world.time + AM.inertia_move_delay
|
||||
|
||||
@@ -54,6 +54,7 @@ SUBSYSTEM_DEF(throwing)
|
||||
var/dist_y
|
||||
var/dx
|
||||
var/dy
|
||||
var/force = MOVE_FORCE_DEFAULT
|
||||
var/pure_diagonal
|
||||
var/diagonal_error
|
||||
var/datum/callback/callback
|
||||
@@ -109,7 +110,7 @@ SUBSYSTEM_DEF(throwing)
|
||||
finalize()
|
||||
return
|
||||
|
||||
AM.Move(step, get_dir(AM, step))
|
||||
AM.Move(step, get_dir(AM, step), DELAY_TO_GLIDE_SIZE(1 / speed))
|
||||
|
||||
if (!AM.throwing) // we hit something during our move
|
||||
finalize(hit = TRUE)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
SUBSYSTEM_DEF(time_track)
|
||||
name = "Time Tracking"
|
||||
wait = 600
|
||||
wait = 100
|
||||
flags = SS_NO_INIT|SS_NO_TICK_CHECK
|
||||
runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT
|
||||
|
||||
@@ -30,6 +30,7 @@ SUBSYSTEM_DEF(time_track)
|
||||
time_dilation_avg_fast = MC_AVERAGE_FAST(time_dilation_avg_fast, time_dilation_current)
|
||||
time_dilation_avg = MC_AVERAGE(time_dilation_avg, time_dilation_avg_fast)
|
||||
time_dilation_avg_slow = MC_AVERAGE_SLOW(time_dilation_avg_slow, time_dilation_avg)
|
||||
GLOB.glide_size_multiplier = (current_byondtime - last_tick_byond_time) / (current_realtime - last_tick_realtime)
|
||||
else
|
||||
first_run = FALSE
|
||||
last_tick_realtime = current_realtime
|
||||
|
||||
@@ -141,6 +141,17 @@
|
||||
current_button.add_overlay(mutable_appearance(icon_icon, button_icon_state))
|
||||
current_button.button_icon_state = button_icon_state
|
||||
|
||||
/datum/action/ghost
|
||||
icon_icon = 'icons/mob/mob.dmi'
|
||||
button_icon_state = "ghost"
|
||||
name = "Ghostize"
|
||||
desc = "Turn into a ghost and freely come back to your body."
|
||||
|
||||
/datum/action/ghost/Trigger()
|
||||
if(!..())
|
||||
return 0
|
||||
var/mob/M = target
|
||||
M.ghostize(1)
|
||||
|
||||
//Presets for item actions
|
||||
/datum/action/item_action
|
||||
|
||||
@@ -29,21 +29,21 @@
|
||||
var/obj/item/typecast = upgrade_item
|
||||
upgrade_name = initial(typecast.name)
|
||||
|
||||
/datum/component/armor_plate/proc/examine(datum/source, mob/user)
|
||||
/datum/component/armor_plate/proc/examine(datum/source, mob/user, list/examine_list)
|
||||
//upgrade_item could also be typecast here instead
|
||||
if(ismecha(parent))
|
||||
if(amount)
|
||||
if(amount < maxamount)
|
||||
to_chat(user, "<span class='notice'>Its armor is enhanced with [amount] [upgrade_name].</span>")
|
||||
examine_list += "<span class='notice'>Its armor is enhanced with [amount] [upgrade_name].</span>"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter.</span>")
|
||||
examine_list += "<span class='notice'>It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>It has attachment points for strapping monster hide on for added protection.</span>")
|
||||
examine_list += "<span class='notice'>It has attachment points for strapping monster hide on for added protection.</span>"
|
||||
else
|
||||
if(amount)
|
||||
to_chat(user, "<span class='notice'>It has been strengthened with [amount]/[maxamount] [upgrade_name].</span>")
|
||||
examine_list += "<span class='notice'>It has been strengthened with [amount]/[maxamount] [upgrade_name].</span>"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>It can be strengthened with up to [maxamount] [upgrade_name].</span>")
|
||||
examine_list += "<span class='notice'>It can be strengthened with up to [maxamount] [upgrade_name].</span>"
|
||||
|
||||
/datum/component/armor_plate/proc/applyplate(datum/source, obj/item/I, mob/user, params)
|
||||
if(!istype(I,upgrade_item))
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/action)
|
||||
update_parent(index)
|
||||
|
||||
/datum/component/construction/proc/examine(datum/source, mob/user)
|
||||
/datum/component/construction/proc/examine(datum/source, mob/user, list/examine_list)
|
||||
if(desc)
|
||||
to_chat(user, desc)
|
||||
examine_list += desc
|
||||
|
||||
/datum/component/construction/proc/on_step()
|
||||
if(index > steps.len)
|
||||
|
||||
@@ -71,5 +71,5 @@
|
||||
if(strength >= cleanable)
|
||||
qdel(src)
|
||||
|
||||
/datum/component/decal/proc/examine(datum/source, mob/user)
|
||||
to_chat(user, description)
|
||||
/datum/component/decal/proc/examine(datum/source, mob/user, list/examine_list)
|
||||
examine_list += description
|
||||
@@ -1,30 +0,0 @@
|
||||
// An item worn in the ear slot with this component will heal your ears each
|
||||
// Life() tick, even if normally your ears would be too damaged to heal.
|
||||
|
||||
/datum/component/earhealing
|
||||
var/mob/living/carbon/wearer
|
||||
|
||||
/datum/component/earhealing/Initialize()
|
||||
if(!isitem(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
RegisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged)
|
||||
|
||||
/datum/component/earhealing/proc/equippedChanged(datum/source, mob/living/carbon/user, slot)
|
||||
if (slot == SLOT_EARS && istype(user))
|
||||
if (!wearer)
|
||||
START_PROCESSING(SSobj, src)
|
||||
wearer = user
|
||||
else
|
||||
if (wearer)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
wearer = null
|
||||
|
||||
/datum/component/earhealing/process()
|
||||
if (!wearer)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return
|
||||
if(!HAS_TRAIT(wearer, TRAIT_DEAF))
|
||||
var/obj/item/organ/ears/ears = wearer.getorganslot(ORGAN_SLOT_EARS)
|
||||
if (ears)
|
||||
ears.deaf = max(ears.deaf - 1, (ears.damage < ears.maxHealth ? 0 : 1)) // Do not clear deafness if our ears are too damaged
|
||||
ears.damage = max(ears.damage - 0.1, 0)
|
||||
@@ -15,8 +15,8 @@
|
||||
for(var/i in parent)
|
||||
RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react)
|
||||
|
||||
/datum/component/magnetic_catch/proc/examine(datum/source, mob/user)
|
||||
to_chat(user, "It has been installed with inertia dampening to prevent coffee spills.")
|
||||
/datum/component/magnetic_catch/proc/examine(datum/source, mob/user, list/examine_list)
|
||||
examine_list += "It has been installed with inertia dampening to prevent coffee spills."
|
||||
|
||||
/datum/component/magnetic_catch/proc/crossed_react(datum/source, atom/movable/thing)
|
||||
RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react, TRUE)
|
||||
|
||||
@@ -49,13 +49,13 @@
|
||||
var/mat_path = possible_mats[id]
|
||||
materials[id] = new mat_path()
|
||||
|
||||
/datum/component/material_container/proc/OnExamine(datum/source, mob/user)
|
||||
/datum/component/material_container/proc/OnExamine(datum/source, mob/user, list/examine_list)
|
||||
if(show_on_examine)
|
||||
for(var/I in materials)
|
||||
var/datum/material/M = materials[I]
|
||||
var/amt = amount(M.id)
|
||||
if(amt)
|
||||
to_chat(user, "<span class='notice'>It has [amt] units of [lowertext(M.name)] stored.</span>")
|
||||
examine_list += "<span class='notice'>It has [amt] units of [lowertext(M.name)] stored.</span>"
|
||||
|
||||
/datum/component/material_container/proc/OnAttackBy(datum/source, obj/item/I, mob/living/user)
|
||||
var/list/tc = allowed_typecache
|
||||
|
||||
@@ -280,7 +280,7 @@
|
||||
var/datum/hud/hud = owner.hud_used
|
||||
screen_obj = new
|
||||
hud.infodisplay += screen_obj
|
||||
RegisterSignal(hud, COMSIG_PARENT_QDELETED, .proc/unmodify_hud)
|
||||
RegisterSignal(hud, COMSIG_PARENT_QDELETING, .proc/unmodify_hud)
|
||||
RegisterSignal(screen_obj, COMSIG_CLICK, .proc/hud_click)
|
||||
|
||||
/datum/component/mood/proc/unmodify_hud(datum/source)
|
||||
|
||||
@@ -28,10 +28,13 @@
|
||||
RegisterSignal(target, COMSIG_MOVABLE_MOVED, orbited_spy)
|
||||
target = target.loc
|
||||
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, .proc/orbiter_glide_size_update)
|
||||
|
||||
/datum/component/orbiter/UnregisterFromParent()
|
||||
var/atom/target = parent
|
||||
while(ismovableatom(target))
|
||||
UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
|
||||
UnregisterSignal(target, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE)
|
||||
target = target.loc
|
||||
|
||||
/datum/component/orbiter/Destroy()
|
||||
@@ -81,6 +84,12 @@
|
||||
orbiter.transform = shift
|
||||
|
||||
orbiter.SpinAnimation(rotation_speed, -1, clockwise, rotation_segments, parallel = FALSE)
|
||||
if(ismob(orbiter))
|
||||
var/mob/M = orbiter
|
||||
M.updating_glide_size = FALSE
|
||||
if(ismovableatom(parent))
|
||||
var/atom/movable/AM = parent
|
||||
orbiter.glide_size = AM.glide_size
|
||||
|
||||
//we stack the orbits up client side, so we can assign this back to normal server side without it breaking the orbit
|
||||
orbiter.transform = initial_transform
|
||||
@@ -95,6 +104,10 @@
|
||||
orbiters -= orbiter
|
||||
orbiter.stop_orbit(src)
|
||||
orbiter.orbiting = null
|
||||
if(ismob(orbiter))
|
||||
var/mob/M = orbiter
|
||||
M.updating_glide_size = TRUE
|
||||
M.glide_size = 8
|
||||
if(!refreshing && !length(orbiters) && !QDELING(src))
|
||||
qdel(src)
|
||||
|
||||
@@ -139,6 +152,11 @@
|
||||
return
|
||||
end_orbit(orbiter)
|
||||
|
||||
/datum/component/orbiter/proc/orbiter_glide_size_update(datum/source, target)
|
||||
for(var/orbiter in orbiters)
|
||||
var/atom/movable/AM = orbiter
|
||||
AM.glide_size = target
|
||||
|
||||
/////////////////////
|
||||
|
||||
/atom/movable/proc/orbit(atom/A, radius = 10, clockwise = FALSE, rotation_speed = 20, rotation_segments = 36, pre_rotation = TRUE)
|
||||
|
||||
@@ -18,14 +18,13 @@
|
||||
hl3_release_date = _half_life
|
||||
can_contaminate = _can_contaminate
|
||||
|
||||
if(istype(parent, /atom))
|
||||
if(istype(parent, /atom))
|
||||
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/rad_examine)
|
||||
if(istype(parent, /obj/item))
|
||||
RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/rad_attack)
|
||||
RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, .proc/rad_attack)
|
||||
else
|
||||
CRASH("Something that wasn't an atom was given /datum/component/radioactive")
|
||||
return
|
||||
|
||||
if(strength > RAD_MINIMUM_CONTAMINATION)
|
||||
SSradiation.warn(src)
|
||||
@@ -35,13 +34,12 @@
|
||||
var/atom/movable/master = parent
|
||||
master.add_filter("rad_glow", 2, list("type" = "outline", "color" = "#39ff1430", "size" = 2))
|
||||
addtimer(CALLBACK(src, .proc/glow_loop, master), rand(1,19))//Things should look uneven
|
||||
|
||||
START_PROCESSING(SSradiation, src)
|
||||
|
||||
/datum/component/radioactive/Destroy()
|
||||
STOP_PROCESSING(SSradiation, src)
|
||||
var/atom/movable/master = parent
|
||||
master.remove_filter("rad_glow")
|
||||
STOP_PROCESSING(SSradiation, src)
|
||||
return ..()
|
||||
|
||||
/datum/component/radioactive/process()
|
||||
@@ -55,13 +53,14 @@
|
||||
if(strength <= RAD_BACKGROUND_RADIATION)
|
||||
return PROCESS_KILL
|
||||
|
||||
|
||||
/datum/component/radioactive/proc/glow_loop(atom/movable/master)
|
||||
var/filter = master.get_filter("rad_glow")
|
||||
if(filter)
|
||||
animate(filter, alpha = 110, time = 15, loop = -1)
|
||||
animate(alpha = 40, time = 25)
|
||||
|
||||
/datum/component/radioactive/InheritComponent(datum/component/C, i_am_original, list/arguments)
|
||||
/datum/component/radioactive/InheritComponent(datum/component/C, i_am_original, _strength, _source, _half_life, _can_contaminate)
|
||||
if(!i_am_original)
|
||||
return
|
||||
if(!hl3_release_date) // Permanently radioactive things don't get to grow stronger
|
||||
@@ -70,9 +69,9 @@
|
||||
var/datum/component/radioactive/other = C
|
||||
strength = max(strength, other.strength)
|
||||
else
|
||||
strength = max(strength, arguments[1])
|
||||
strength = max(strength, _strength)
|
||||
|
||||
/datum/component/radioactive/proc/rad_examine(datum/source, mob/user, atom/thing)
|
||||
/datum/component/radioactive/proc/rad_examine(datum/source, mob/user, list/examine_list)
|
||||
var/atom/master = parent
|
||||
var/list/out = list()
|
||||
if(get_dist(master, user) <= 1)
|
||||
@@ -84,13 +83,16 @@
|
||||
out += "[out ? " and it " : "[master] "]seems to be glowing a bit."
|
||||
if(RAD_AMOUNT_HIGH to INFINITY) //At this level the object can contaminate other objects
|
||||
out += "[out ? " and it " : "[master] "]hurts to look at."
|
||||
else
|
||||
out += "."
|
||||
to_chat(user, out.Join())
|
||||
if(!LAZYLEN(out))
|
||||
return
|
||||
out += "."
|
||||
examine_list += out.Join()
|
||||
|
||||
/datum/component/radioactive/proc/rad_attack(datum/source, atom/movable/target, mob/living/user)
|
||||
radiation_pulse(parent, strength/20)
|
||||
target.rad_act(strength/2)
|
||||
if(!hl3_release_date)
|
||||
return
|
||||
strength -= strength / hl3_release_date
|
||||
|
||||
#undef RAD_AMOUNT_LOW
|
||||
|
||||
@@ -30,8 +30,12 @@
|
||||
/datum/component/riding/proc/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE)
|
||||
restore_position(M)
|
||||
unequip_buckle_inhands(M)
|
||||
M.updating_glide_size = TRUE
|
||||
|
||||
/datum/component/riding/proc/vehicle_mob_buckle(datum/source, mob/living/M, force = FALSE)
|
||||
var/atom/movable/AM = parent
|
||||
M.set_glide_size(AM.glide_size)
|
||||
M.updating_glide_size = FALSE
|
||||
handle_vehicle_offsets()
|
||||
|
||||
/datum/component/riding/proc/handle_vehicle_layer()
|
||||
@@ -49,8 +53,10 @@
|
||||
|
||||
/datum/component/riding/proc/vehicle_moved(datum/source)
|
||||
var/atom/movable/AM = parent
|
||||
for(var/i in AM.buckled_mobs)
|
||||
ride_check(i)
|
||||
AM.set_glide_size(DELAY_TO_GLIDE_SIZE(vehicle_move_delay))
|
||||
for(var/mob/M in AM.buckled_mobs)
|
||||
ride_check(M)
|
||||
M.set_glide_size(AM.glide_size)
|
||||
handle_vehicle_offsets()
|
||||
handle_vehicle_layer()
|
||||
|
||||
|
||||
@@ -77,9 +77,9 @@
|
||||
remove_verbs()
|
||||
. = ..()
|
||||
|
||||
/datum/component/simple_rotation/proc/ExamineMessage(datum/source, mob/user)
|
||||
/datum/component/simple_rotation/proc/ExamineMessage(datum/source, mob/user, list/examine_list)
|
||||
if(rotation_flags & ROTATION_ALTCLICK)
|
||||
to_chat(user, "<span class='notice'>Alt-click to rotate it clockwise.</span>")
|
||||
examine_list += "<span class='notice'>Alt-click to rotate it clockwise.</span>"
|
||||
|
||||
/datum/component/simple_rotation/proc/HandRot(datum/source, mob/user, rotation = default_rotation_direction)
|
||||
if(!can_be_rotated.Invoke(user, rotation) || !can_user_rotate.Invoke(user, rotation))
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
/datum/component/spawner
|
||||
var/mob_types = list(/mob/living/simple_animal/hostile/carp)
|
||||
var/spawn_time = 300 //30 seconds default
|
||||
var/list/spawned_mobs = list()
|
||||
var/spawn_delay = 0
|
||||
var/max_mobs = 5
|
||||
var/spawn_text = "emerges from"
|
||||
var/list/faction = list("mining")
|
||||
|
||||
/datum/component/spawner/Initialize(_mob_types, _spawn_time, _faction, _spawn_text, _max_mobs)
|
||||
if(_spawn_time)
|
||||
spawn_time=_spawn_time
|
||||
if(_mob_types)
|
||||
mob_types=_mob_types
|
||||
if(_faction)
|
||||
faction=_faction
|
||||
if(_spawn_text)
|
||||
spawn_text=_spawn_text
|
||||
if(_max_mobs)
|
||||
max_mobs=_max_mobs
|
||||
|
||||
RegisterSignal(parent, list(COMSIG_PARENT_QDELETING), .proc/stop_spawning)
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
/datum/component/spawner/process()
|
||||
try_spawn_mob()
|
||||
|
||||
|
||||
/datum/component/spawner/proc/stop_spawning(force, hint)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
for(var/mob/living/simple_animal/L in spawned_mobs)
|
||||
if(L.nest == src)
|
||||
L.nest = null
|
||||
spawned_mobs = null
|
||||
|
||||
/datum/component/spawner/proc/try_spawn_mob()
|
||||
var/atom/P = parent
|
||||
if(spawned_mobs.len >= max_mobs)
|
||||
return 0
|
||||
if(spawn_delay > world.time)
|
||||
return 0
|
||||
spawn_delay = world.time + spawn_time
|
||||
var/chosen_mob_type = pick(mob_types)
|
||||
var/mob/living/simple_animal/L = new chosen_mob_type(P.loc)
|
||||
L.flags_1 |= (P.flags_1 & ADMIN_SPAWNED_1)
|
||||
spawned_mobs += L
|
||||
L.nest = src
|
||||
L.faction = src.faction
|
||||
P.visible_message("<span class='danger'>[L] [spawn_text] [P].</span>")
|
||||
@@ -0,0 +1,39 @@
|
||||
/datum/element
|
||||
var/element_flags = NONE
|
||||
/**
|
||||
* The index of the first attach argument to consider for duplicate elements
|
||||
* Is only used when flags contains ELEMENT_BESPOKE
|
||||
* This is infinity so you must explicitly set this
|
||||
*/
|
||||
var/id_arg_index = INFINITY
|
||||
|
||||
/datum/element/proc/Attach(datum/target)
|
||||
if(type == /datum/element)
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
if(element_flags & ELEMENT_DETACH)
|
||||
RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/Detach, override = TRUE)
|
||||
|
||||
/datum/element/proc/Detach(datum/source, force)
|
||||
UnregisterSignal(source, COMSIG_PARENT_QDELETING)
|
||||
|
||||
/datum/element/Destroy(force)
|
||||
if(!force)
|
||||
return QDEL_HINT_LETMELIVE
|
||||
SSdcs.elements_by_type -= type
|
||||
return ..()
|
||||
|
||||
//DATUM PROCS
|
||||
|
||||
/datum/proc/AddElement(eletype, ...)
|
||||
var/datum/element/ele = SSdcs.GetElement(arglist(args))
|
||||
args[1] = src
|
||||
if(ele.Attach(arglist(args)) == ELEMENT_INCOMPATIBLE)
|
||||
CRASH("Incompatible [eletype] assigned to a [type]! args: [json_encode(args)]")
|
||||
|
||||
/**
|
||||
* Finds the singleton for the element type given and detaches it from src
|
||||
* You only need additional arguments beyond the type if you're using ELEMENT_BESPOKE
|
||||
*/
|
||||
/datum/proc/RemoveElement(eletype, ...)
|
||||
var/datum/element/ele = SSdcs.GetElement(arglist(args))
|
||||
ele.Detach(src)
|
||||
@@ -1,19 +1,18 @@
|
||||
/datum/component/cleaning
|
||||
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
|
||||
/datum/element/cleaning/Attach(datum/target)
|
||||
. = ..()
|
||||
if(!ismovableatom(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/Clean)
|
||||
|
||||
/datum/component/cleaning/Initialize()
|
||||
if(!ismovableatom(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Clean)
|
||||
/datum/element/cleaning/Detach(datum/target)
|
||||
. = ..()
|
||||
UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
|
||||
|
||||
/datum/component/cleaning/proc/Clean()
|
||||
var/atom/movable/AM = parent
|
||||
var/turf/tile = AM.loc
|
||||
if(!isturf(tile))
|
||||
return
|
||||
|
||||
SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
||||
for(var/A in tile)
|
||||
/datum/element/cleaning/proc/Clean(datum/source)
|
||||
var/atom/movable/AM = source
|
||||
var/turf/T = AM.loc
|
||||
SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
|
||||
for(var/A in T)
|
||||
if(is_cleanable(A))
|
||||
qdel(A)
|
||||
else if(istype(A, /obj/item))
|
||||
@@ -36,4 +35,4 @@
|
||||
SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
||||
cleaned_human.wash_cream()
|
||||
cleaned_human.regenerate_icons()
|
||||
to_chat(cleaned_human, "<span class='danger'>[AM] cleans your face!</span>")
|
||||
to_chat(cleaned_human, "<span class='danger'>[src] cleans your face!</span>")
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
/datum/element/earhealing
|
||||
element_flags = ELEMENT_DETACH
|
||||
var/list/user_by_item = list()
|
||||
|
||||
/datum/element/earhealing/New()
|
||||
START_PROCESSING(SSdcs, src)
|
||||
|
||||
/datum/element/earhealing/Attach(datum/target)
|
||||
. = ..()
|
||||
if(!isitem(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
|
||||
RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged)
|
||||
|
||||
/datum/element/earhealing/Detach(datum/target)
|
||||
. = ..()
|
||||
UnregisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
|
||||
user_by_item -= target
|
||||
|
||||
/datum/element/earhealing/proc/equippedChanged(datum/source, mob/living/carbon/user, slot)
|
||||
if(slot == SLOT_EARS && istype(user))
|
||||
user_by_item[source] = user
|
||||
else
|
||||
user_by_item -= source
|
||||
|
||||
/datum/element/earhealing/process()
|
||||
for(var/i in user_by_item)
|
||||
var/mob/living/carbon/user = user_by_item[i]
|
||||
if(HAS_TRAIT(user, TRAIT_DEAF))
|
||||
continue
|
||||
var/obj/item/organ/ears/ears = user.getorganslot(ORGAN_SLOT_EARS)
|
||||
if(!ears)
|
||||
continue
|
||||
ears.deaf = max(ears.deaf - 0.25, (ears.damage < ears.maxHealth ? 0 : 1)) // Do not clear deafness if our ears are too damaged
|
||||
ears.damage = max(ears.damage - 0.025, 0)
|
||||
CHECK_TICK
|
||||
@@ -0,0 +1,54 @@
|
||||
GLOBAL_LIST_EMPTY(ghost_eligible_mobs)
|
||||
|
||||
GLOBAL_LIST_EMPTY(client_ghost_timeouts)
|
||||
|
||||
/datum/element/ghost_role_eligibility
|
||||
element_flags = ELEMENT_DETACH | ELEMENT_BESPOKE
|
||||
id_arg_index = 2
|
||||
var/penalizing = FALSE
|
||||
var/free_ghost = FALSE
|
||||
|
||||
/datum/element/ghost_role_eligibility/Attach(datum/target,free_ghosting = FALSE, penalize_on_ghost = FALSE)
|
||||
. = ..()
|
||||
if(!ismob(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
penalizing = penalize_on_ghost
|
||||
free_ghost = free_ghosting
|
||||
var/mob/M = target
|
||||
if(!(M in GLOB.ghost_eligible_mobs))
|
||||
GLOB.ghost_eligible_mobs += M
|
||||
RegisterSignal(M, COMSIG_MOB_GHOSTIZE, .proc/get_ghost_flags)
|
||||
|
||||
/datum/element/ghost_role_eligibility/Detach(mob/M)
|
||||
. = ..()
|
||||
if(M in GLOB.ghost_eligible_mobs)
|
||||
GLOB.ghost_eligible_mobs -= M
|
||||
UnregisterSignal(M, COMSIG_MOB_GHOSTIZE)
|
||||
|
||||
/proc/get_all_ghost_role_eligible(silent = FALSE)
|
||||
var/list/candidates = list()
|
||||
for(var/m in GLOB.ghost_eligible_mobs)
|
||||
var/mob/M = m
|
||||
if(M.can_reenter_round(TRUE))
|
||||
candidates += M
|
||||
return candidates
|
||||
|
||||
/mob/proc/can_reenter_round(silent = FALSE)
|
||||
if(!(src in GLOB.ghost_eligible_mobs))
|
||||
return FALSE
|
||||
if(!(ckey in GLOB.client_ghost_timeouts))
|
||||
return TRUE
|
||||
var/timeout = GLOB.client_ghost_timeouts[ckey]
|
||||
if(timeout != CANT_REENTER_ROUND && timeout <= world.realtime)
|
||||
return TRUE
|
||||
if(!silent && client)
|
||||
to_chat(src, "<span class='warning'>You are unable to reenter the round[timeout != CANT_REENTER_ROUND ? " yet. Your ghost role blacklist will expire in [DisplayTimeText(timeout - world.realtime)]" : ""].</span>")
|
||||
return FALSE
|
||||
|
||||
/datum/element/ghost_role_eligibility/proc/get_ghost_flags()
|
||||
. = 0
|
||||
if(!penalizing)
|
||||
. |= COMPONENT_DO_NOT_PENALIZE_GHOSTING
|
||||
if(free_ghost)
|
||||
. |= COMPONENT_FREE_GHOSTING
|
||||
return .
|
||||
@@ -0,0 +1,194 @@
|
||||
/datum/element/mob_holder
|
||||
element_flags = ELEMENT_BESPOKE|ELEMENT_DETACH
|
||||
id_arg_index = 2
|
||||
var/worn_state
|
||||
var/alt_worn
|
||||
var/right_hand
|
||||
var/left_hand
|
||||
var/inv_slots
|
||||
var/proctype //if present, will be invoked on headwear generation.
|
||||
|
||||
/datum/element/mob_holder/Attach(datum/target, _worn_state, _alt_worn, _right_hand, _left_hand, _inv_slots = NONE, _proctype)
|
||||
. = ..()
|
||||
|
||||
if(!isliving(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
|
||||
worn_state = _worn_state
|
||||
alt_worn = _alt_worn
|
||||
right_hand = _right_hand
|
||||
left_hand = _left_hand
|
||||
inv_slots = _inv_slots
|
||||
proctype = _proctype
|
||||
|
||||
RegisterSignal(target, COMSIG_CLICK_ALT, .proc/mob_try_pickup)
|
||||
RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine)
|
||||
|
||||
/datum/element/mob_holder/Detach(datum/source, force)
|
||||
. = ..()
|
||||
UnregisterSignal(source, COMSIG_CLICK_ALT)
|
||||
UnregisterSignal(source, COMSIG_PARENT_EXAMINE)
|
||||
|
||||
/datum/element/mob_holder/proc/on_examine(mob/living/source, mob/user, list/examine_list)
|
||||
if(ishuman(user) && !istype(source.loc, /obj/item/clothing/head/mob_holder))
|
||||
examine_list += "<span class='notice'>Looks like [source.p_they(TRUE)] can be picked up with <b>Alt+Click</b>!</span>"
|
||||
|
||||
/datum/element/mob_holder/proc/mob_try_pickup(mob/living/source, mob/user)
|
||||
if(!ishuman(user) || !user.Adjacent(source) || user.incapacitated())
|
||||
return FALSE
|
||||
if(user.get_active_held_item())
|
||||
to_chat(user, "<span class='warning'>Your hands are full!</span>")
|
||||
return FALSE
|
||||
if(source.buckled)
|
||||
to_chat(user, "<span class='warning'>[source] is buckled to something!</span>")
|
||||
return FALSE
|
||||
if(source == user)
|
||||
to_chat(user, "<span class='warning'>You can't pick yourself up.</span>")
|
||||
return FALSE
|
||||
source.visible_message("<span class='warning'>[user] starts picking up [source].</span>", \
|
||||
"<span class='userdanger'>[user] starts picking you up!</span>")
|
||||
if(!do_after(user, 20, target = source) || source.buckled)
|
||||
return FALSE
|
||||
|
||||
source.visible_message("<span class='warning'>[user] picks up [source]!</span>", \
|
||||
"<span class='userdanger'>[user] picks you up!</span>")
|
||||
to_chat(user, "<span class='notice'>You pick [source] up.</span>")
|
||||
source.drop_all_held_items()
|
||||
var/obj/item/clothing/head/mob_holder/holder = new(get_turf(source), source, worn_state, alt_worn, right_hand, left_hand, inv_slots)
|
||||
if(proctype)
|
||||
INVOKE_ASYNC(src, proctype, source, holder, user)
|
||||
user.put_in_hands(holder)
|
||||
return TRUE
|
||||
|
||||
/datum/element/mob_holder/proc/drone_worn_icon(mob/living/simple_animal/drone/D, obj/item/clothing/head/mob_holder/holder, mob/user)
|
||||
var/new_state = "[D.visualAppearence]_hat"
|
||||
holder.item_state = new_state
|
||||
holder.icon_state = new_state
|
||||
|
||||
|
||||
//The item itself,
|
||||
/obj/item/clothing/head/mob_holder
|
||||
name = "bugged mob"
|
||||
desc = "Yell at coderbrush."
|
||||
icon = null
|
||||
alternate_worn_icon = 'icons/mob/animals_held.dmi'
|
||||
righthand_file = 'icons/mob/animals_held_rh.dmi'
|
||||
lefthand_file = 'icons/mob/animals_held_lh.dmi'
|
||||
icon_state = ""
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
dynamic_hair_suffix = ""
|
||||
var/mob/living/held_mob
|
||||
var/can_head = FALSE
|
||||
|
||||
/obj/item/clothing/head/mob_holder/Initialize(mapload, mob/living/target, worn_state, alt_worn, right_hand, left_hand, slots = NONE)
|
||||
. = ..()
|
||||
|
||||
if(target)
|
||||
assimilate(target)
|
||||
|
||||
if(alt_worn)
|
||||
alternate_worn_icon = alt_worn
|
||||
if(worn_state)
|
||||
item_state = worn_state
|
||||
icon_state = worn_state
|
||||
if(left_hand)
|
||||
lefthand_file = left_hand
|
||||
if(right_hand)
|
||||
righthand_file = right_hand
|
||||
slot_flags = slots
|
||||
|
||||
/obj/item/clothing/head/mob_holder/proc/assimilate(mob/living/target)
|
||||
target.setDir(SOUTH)
|
||||
held_mob = target
|
||||
target.forceMove(src)
|
||||
var/image/I = new //work around to retain the same appearance to the mob idependently from inhands/worn states.
|
||||
I.appearance = target.appearance
|
||||
I.layer = FLOAT_LAYER //So it doesn't get screwed up by layer overrides.
|
||||
I.plane = FLOAT_PLANE //Same as above but for planes.
|
||||
I.override = TRUE
|
||||
add_overlay(I)
|
||||
name = target.name
|
||||
desc = target.desc
|
||||
switch(target.mob_size)
|
||||
if(MOB_SIZE_TINY)
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
if(MOB_SIZE_SMALL)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
if(MOB_SIZE_HUMAN)
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
if(MOB_SIZE_LARGE)
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
|
||||
/obj/item/clothing/head/mob_holder/Destroy()
|
||||
if(held_mob)
|
||||
release()
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/mob_holder/examine(mob/user)
|
||||
return held_mob?.examine(user) || ..()
|
||||
|
||||
/obj/item/clothing/head/mob_holder/Exited(atom/movable/AM, atom/newloc)
|
||||
. = ..()
|
||||
if(AM == held_mob)
|
||||
held_mob.reset_perspective()
|
||||
held_mob = null
|
||||
QDEL_IN(src, 1) //To avoid a qdel loop.
|
||||
|
||||
/obj/item/clothing/head/mob_holder/Entered(atom/movable/AM, atom/newloc)
|
||||
. = ..()
|
||||
if(AM != held_mob)
|
||||
var/destination = loc
|
||||
if(isliving(loc)) //the mob is held or worn, drop things on the floor
|
||||
destination = get_turf(loc)
|
||||
AM.forceMove(destination)
|
||||
|
||||
/obj/item/clothing/head/mob_holder/dropped()
|
||||
. = ..()
|
||||
if(held_mob && isturf(loc))//don't release on soft-drops
|
||||
release()
|
||||
|
||||
/obj/item/clothing/head/mob_holder/proc/release()
|
||||
if(held_mob)
|
||||
var/mob/living/L = held_mob
|
||||
held_mob = null
|
||||
L.forceMove(get_turf(L))
|
||||
L.reset_perspective()
|
||||
L.setDir(SOUTH)
|
||||
if(!QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/clothing/head/mob_holder/relaymove(mob/user)
|
||||
return
|
||||
|
||||
/obj/item/clothing/head/mob_holder/container_resist()
|
||||
if(isliving(loc))
|
||||
var/mob/living/L = loc
|
||||
L.visible_message("<span class='warning'>[held_mob] escapes from [L]!</span>", "<span class='warning'>[held_mob] escapes your grip!</span>")
|
||||
release()
|
||||
|
||||
/obj/item/clothing/head/mob_holder/mob_can_equip(mob/living/M, mob/living/equipper, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE)
|
||||
if(!ishuman(M)) //monkeys holding monkeys holding monkeys...
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/mob_holder/assume_air(datum/gas_mixture/env)
|
||||
var/atom/location = loc
|
||||
if(!loc)
|
||||
return //null
|
||||
var/turf/T = get_turf(loc)
|
||||
while(location != T)
|
||||
location = location.loc
|
||||
if(ismob(location))
|
||||
return location.loc.assume_air(env)
|
||||
return location.assume_air(env)
|
||||
|
||||
/obj/item/clothing/head/mob_holder/remove_air(amount)
|
||||
var/atom/location = loc
|
||||
if(!loc)
|
||||
return //null
|
||||
var/turf/T = get_turf(loc)
|
||||
while(location != T)
|
||||
location = location.loc
|
||||
if(ismob(location))
|
||||
return location.loc.remove_air(amount)
|
||||
return location.remove_air(amount)
|
||||
@@ -0,0 +1,21 @@
|
||||
/// Just for marking when someone's swimming.
|
||||
/datum/element/swimming
|
||||
element_flags = ELEMENT_DETACH
|
||||
|
||||
/datum/element/swimming/Attach(datum/target)
|
||||
if((. = ..()) == ELEMENT_INCOMPATIBLE)
|
||||
return
|
||||
if(!isliving(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/check_valid)
|
||||
ADD_TRAIT(target, TRAIT_SWIMMING, TRAIT_SWIMMING) //seriously there's only one way to get this
|
||||
|
||||
/datum/element/swimming/Detach(datum/target)
|
||||
. = ..()
|
||||
UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
|
||||
REMOVE_TRAIT(target, TRAIT_SWIMMING, TRAIT_SWIMMING)
|
||||
|
||||
/datum/element/swimming/proc/check_valid(datum/source)
|
||||
var/mob/living/L = source
|
||||
if(!istype(L.loc, /turf/open/pool))
|
||||
source.RemoveElement(/datum/element/swimming)
|
||||
@@ -0,0 +1,64 @@
|
||||
|
||||
/datum/element/wuv //D'awwwww
|
||||
element_flags = ELEMENT_BESPOKE
|
||||
id_arg_index = 2
|
||||
//the for the me emote proc call when petted.
|
||||
var/pet_emote
|
||||
//whether the emote is visible or audible
|
||||
var/pet_type
|
||||
//same as above, except when harmed. "You are going into orbit, you stupid mutt!"
|
||||
var/punt_emote
|
||||
//same as pet_type
|
||||
var/punt_type
|
||||
//mood typepath for the moodlet signal when petted.
|
||||
var/pet_moodlet
|
||||
//same as above but for harm
|
||||
var/punt_moodlet
|
||||
|
||||
/datum/element/wuv/Attach(datum/target, pet, pet_t, pet_mood, punt, punt_t, punt_mood)
|
||||
. = ..()
|
||||
|
||||
if(!isliving(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
|
||||
pet_emote = pet
|
||||
pet_type = pet_t
|
||||
punt_emote = punt
|
||||
punt_type = punt_t
|
||||
pet_moodlet = pet_mood
|
||||
punt_moodlet = punt_mood
|
||||
|
||||
RegisterSignal(target, COMSIG_MOB_ATTACK_HAND, .proc/on_attack_hand)
|
||||
|
||||
/datum/element/wuv/Detach(datum/source, force)
|
||||
. = ..()
|
||||
UnregisterSignal(source, COMSIG_MOB_ATTACK_HAND)
|
||||
|
||||
/datum/element/wuv/proc/on_attack_hand(datum/source, mob/user)
|
||||
var/mob/living/L = source
|
||||
|
||||
if(L.stat == DEAD)
|
||||
return
|
||||
//we want to delay the effect to be displayed after the mob is petted, not before.
|
||||
switch(user.a_intent)
|
||||
if(INTENT_HARM, INTENT_DISARM)
|
||||
addtimer(CALLBACK(src, .proc/kick_the_dog, source, user), 1)
|
||||
if(INTENT_HELP)
|
||||
addtimer(CALLBACK(src, .proc/pet_the_dog, source, user), 1)
|
||||
|
||||
/datum/element/wuv/proc/pet_the_dog(mob/target, mob/user)
|
||||
if(QDELETED(target) || QDELETED(user) || target.stat != CONSCIOUS)
|
||||
return
|
||||
new /obj/effect/temp_visual/heart(target.loc)
|
||||
if(pet_emote)
|
||||
target.emote("me", pet_type, pet_emote)
|
||||
if(pet_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1)) //prevents unlimited happiness petting park exploit.
|
||||
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, pet_moodlet, target)
|
||||
|
||||
/datum/element/wuv/proc/kick_the_dog(mob/target, mob/user)
|
||||
if(QDELETED(target) || QDELETED(user) || target.stat != CONSCIOUS)
|
||||
return
|
||||
if(punt_emote)
|
||||
target.emote("me", punt_type, punt_emote)
|
||||
if(punt_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1))
|
||||
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, punt_moodlet, target)
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
var/area/A = get_area(curturf)
|
||||
var/area/B = get_area(destturf)
|
||||
if(!forced && (A.noteleport || B.noteleport))
|
||||
if(!forced && (HAS_TRAIT(teleatom, TRAIT_NO_TELEPORT) || A.noteleport || B.noteleport))
|
||||
return FALSE
|
||||
|
||||
if(SEND_SIGNAL(destturf, COMSIG_ATOM_INTERCEPT_TELEPORT, channel, curturf, destturf))
|
||||
@@ -79,6 +79,7 @@
|
||||
tele_play_specials(teleatom, destturf, effectout, asoundout)
|
||||
if(ismegafauna(teleatom))
|
||||
message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_VERBOSEJMP(curturf)] to [ADMIN_VERBOSEJMP(destturf)].")
|
||||
SEND_SIGNAL(teleatom, COMSIG_MOVABLE_TELEPORTED, channel, curturf, destturf)
|
||||
|
||||
if(ismob(teleatom))
|
||||
var/mob/M = teleatom
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
var/block_chance = 0 //Chance to block melee attacks using items while on throw mode.
|
||||
var/restraining = 0 //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not
|
||||
var/help_verb
|
||||
var/pacifism_check = TRUE //are the martial arts combos/attacks unable to be used by pacifist.
|
||||
var/no_guns = FALSE
|
||||
var/allow_temp_override = TRUE //if this martial art can be overridden by temporary martial arts
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
/datum/martial_art/boxing
|
||||
name = "Boxing"
|
||||
id = MARTIALART_BOXING
|
||||
pacifism_check = FALSE //Let's pretend pacifists can boxe the heck out of other people, it only deals stamina damage right now.
|
||||
|
||||
|
||||
/datum/martial_art/boxing/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
to_chat(A, "<span class='warning'>Can't disarm while boxing!</span>")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/martial_art/psychotic_brawling
|
||||
name = "Psychotic Brawling"
|
||||
id = MARTIALART_PSYCHOBRAWL
|
||||
pacifism_check = FALSE //Quite uncontrollable and unpredictable, people will still end up harming others with it.
|
||||
|
||||
/datum/martial_art/psychotic_brawling/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
return psycho_attack(A,D)
|
||||
@@ -25,7 +26,7 @@
|
||||
if(A.grab_state >= GRAB_AGGRESSIVE)
|
||||
D.grabbedby(A, 1)
|
||||
else
|
||||
A.start_pulling(D, 1)
|
||||
A.start_pulling(D, supress_message = TRUE)
|
||||
if(A.pulling)
|
||||
D.drop_all_held_items()
|
||||
D.stop_pulling()
|
||||
@@ -64,4 +65,4 @@
|
||||
|
||||
if(atk_verb)
|
||||
log_combat(A, D, "[atk_verb] (Psychotic Brawling)")
|
||||
return 1
|
||||
return 1
|
||||
|
||||
+8
-2
@@ -325,14 +325,20 @@
|
||||
|
||||
/datum/mind/proc/enslave_mind_to_creator(mob/living/creator)
|
||||
if(iscultist(creator))
|
||||
SSticker.mode.add_cultist(src)
|
||||
if(iscultist(creator, TRUE))
|
||||
SSticker.mode.add_cultist(src)
|
||||
else
|
||||
src.add_antag_datum(/datum/antagonist/cult/neutered/traitor)
|
||||
|
||||
else if(is_revolutionary(creator))
|
||||
var/datum/antagonist/rev/converter = creator.mind.has_antag_datum(/datum/antagonist/rev,TRUE)
|
||||
converter.add_revolutionary(src,FALSE)
|
||||
|
||||
else if(is_servant_of_ratvar(creator))
|
||||
add_servant_of_ratvar(current)
|
||||
if(is_servant_of_ratvar(creator, TRUE))
|
||||
add_servant_of_ratvar(current)
|
||||
else
|
||||
add_servant_of_ratvar(current, FALSE, FALSE, /datum/antagonist/clockcult/neutered/traitor)
|
||||
|
||||
else if(is_nuclear_operative(creator))
|
||||
var/datum/antagonist/nukeop/converter = creator.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE)
|
||||
|
||||
@@ -23,10 +23,13 @@
|
||||
mood_change = 3
|
||||
timeout = 3000
|
||||
|
||||
/datum/mood_event/pet_corgi
|
||||
description = "<span class='nicegreen'>Corgis are adorable! I can't stop petting them!</span>\n"
|
||||
mood_change = 3
|
||||
timeout = 3000
|
||||
/datum/mood_event/pet_animal
|
||||
description = "<span class='nicegreen'>Animals are adorable! I can't stop petting them!</span>\n"
|
||||
mood_change = 2
|
||||
timeout = 5 MINUTES
|
||||
|
||||
/datum/mood_event/pet_animal/add_effects(mob/animal)
|
||||
description = "<span class='nicegreen'>\The [animal.name] is adorable! I can't stop petting [animal.p_them()]!</span>\n"
|
||||
|
||||
/datum/mood_event/honk
|
||||
description = "<span class='nicegreen'>Maybe clowns aren't so bad after all. Honk!</span>\n"
|
||||
|
||||
@@ -194,12 +194,21 @@
|
||||
allow_duplicates = FALSE
|
||||
cost = 10
|
||||
|
||||
/datum/map_template/ruin/lavaland/duohermit
|
||||
name = "Makeshift Big Shelter"
|
||||
id = "duohermitcave"
|
||||
description = "A place of shelter for a couple of stranded hermits, scraping by to live another day."
|
||||
suffix = "lavaland_surface_duohermit.dmm"
|
||||
allow_duplicates = FALSE
|
||||
cost = 5
|
||||
|
||||
/datum/map_template/ruin/lavaland/hermit
|
||||
name = "Makeshift Shelter"
|
||||
id = "hermitcave"
|
||||
description = "A place of shelter for a lone hermit, scraping by to live another day."
|
||||
suffix = "lavaland_surface_hermit.dmm"
|
||||
allow_duplicates = FALSE
|
||||
never_spawn_with = list(/datum/map_template/ruin/lavaland/duohermit)
|
||||
cost = 5
|
||||
|
||||
/datum/map_template/ruin/lavaland/swarmer_boss
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/datum/map_template/ruin/station
|
||||
prefix = "_maps/RandomRuins/StationRuins/"
|
||||
cost = 0
|
||||
|
||||
// Boxstation
|
||||
// Engine
|
||||
|
||||
/datum/map_template/ruin/station/box/engine
|
||||
id = "engine_sm"
|
||||
suffix = "Box/Engine/engine_sm.dmm"
|
||||
name = "Box SM"
|
||||
|
||||
/datum/map_template/ruin/station/box/engine/onebythree
|
||||
id = "engine_sm_1x3"
|
||||
suffix = "Box/Engine/engine_sm_1x3.dmm"
|
||||
name = "Box SM 1x3"
|
||||
|
||||
/datum/map_template/ruin/station/box/engine/fivebyfive
|
||||
id = "engine_sm_5x5"
|
||||
suffix = "Box/Engine/engine_sm_5x5.dmm"
|
||||
name = "Box SM 5x5"
|
||||
|
||||
/datum/map_template/ruin/station/box/engine/threesm
|
||||
id = "engine_sm_3x"
|
||||
suffix = "Box/Engine/engine_sm_3x.dmm"
|
||||
name = "Box SM 3x"
|
||||
|
||||
/datum/map_template/ruin/station/box/engine/singulo
|
||||
id = "engine_singulo"
|
||||
suffix = "Box/Engine/engine_singulo.dmm"
|
||||
name = "Box Singulo"
|
||||
|
||||
/datum/map_template/ruin/station/box/engine/tesla
|
||||
id = "engine_tesla"
|
||||
suffix = "Box/Engine/engine_tesla.dmm"
|
||||
name = "Box Tesla"
|
||||
|
||||
/datum/map_template/ruin/station/box/engine/teg
|
||||
id = "engine_teg"
|
||||
suffix = "Box/Engine/engine_teg.dmm"
|
||||
name = "Box TEG"
|
||||
|
||||
/datum/map_template/ruin/station/box/engine/empty
|
||||
id = "engine_empty"
|
||||
suffix = "Box/Engine/empty.dmm"
|
||||
name = "Box Empty"
|
||||
|
||||
/datum/map_template/ruin/station/box/engine/am
|
||||
id = "engine_am"
|
||||
suffix = "Box/Engine/engine_am.dmm"
|
||||
name = "Box Antimatter"
|
||||
|
||||
/datum/map_template/ruin/station/box/engine/budget
|
||||
id = "engine_budget"
|
||||
suffix = "Box/Engine/budget.dmm"
|
||||
name = "Box P.A.C.M.A.N"
|
||||
@@ -94,11 +94,19 @@
|
||||
/datum/quirk/musician/on_spawn()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
var/obj/item/instrument/guitar/guitar = new(get_turf(H))
|
||||
H.put_in_hands(guitar)
|
||||
H.equip_to_slot(guitar, SLOT_IN_BACKPACK)
|
||||
var/list/instrument_slots = list (
|
||||
"backpack" = SLOT_IN_BACKPACK,
|
||||
"hands" = SLOT_HANDS,
|
||||
)
|
||||
H.equip_in_one_of_slots(guitar, instrument_slots, qdel_on_fail = TRUE)
|
||||
var/obj/item/musicaltuner/musicaltuner = new(get_turf(H))
|
||||
H.put_in_hands(musicaltuner)
|
||||
H.equip_to_slot(musicaltuner, SLOT_IN_BACKPACK)
|
||||
var/list/tuner_slots = list (
|
||||
"backpack" = SLOT_IN_BACKPACK,
|
||||
"hands" = SLOT_HANDS,
|
||||
"left pocket" = SLOT_L_STORE,
|
||||
"right pocket" = SLOT_R_STORE
|
||||
)
|
||||
H.equip_in_one_of_slots(musicaltuner, tuner_slots, qdel_on_fail = TRUE)
|
||||
H.regenerate_icons()
|
||||
|
||||
/datum/quirk/night_vision
|
||||
@@ -127,8 +135,14 @@
|
||||
/datum/quirk/photographer/on_spawn()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
var/obj/item/camera/camera = new(get_turf(H))
|
||||
H.put_in_hands(camera)
|
||||
H.equip_to_slot(camera, SLOT_NECK)
|
||||
var/list/camera_slots = list (
|
||||
"neck" = ITEM_SLOT_NECK,
|
||||
"left pocket" = SLOT_L_STORE,
|
||||
"right pocket" = SLOT_R_STORE,
|
||||
"backpack" = SLOT_IN_BACKPACK,
|
||||
"hands" = SLOT_HANDS
|
||||
)
|
||||
H.equip_in_one_of_slots(camera, camera_slots, qdel_on_fail = TRUE)
|
||||
H.regenerate_icons()
|
||||
|
||||
/datum/quirk/selfaware
|
||||
@@ -162,8 +176,13 @@
|
||||
/datum/quirk/tagger/on_spawn()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
var/obj/item/toy/crayon/spraycan/spraycan = new(get_turf(H))
|
||||
H.put_in_hands(spraycan)
|
||||
H.equip_to_slot(spraycan, SLOT_IN_BACKPACK)
|
||||
var/list/spray_slots = list (
|
||||
"backpack" = SLOT_IN_BACKPACK,
|
||||
"hands" = SLOT_HANDS,
|
||||
"left pocket" = SLOT_L_STORE,
|
||||
"right pocket" = SLOT_R_STORE
|
||||
)
|
||||
H.equip_in_one_of_slots(spraycan, spray_slots, qdel_on_fail = TRUE)
|
||||
H.regenerate_icons()
|
||||
|
||||
/datum/quirk/voracious
|
||||
@@ -184,7 +203,13 @@
|
||||
/datum/quirk/trandening/on_spawn()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
var/obj/item/autosurgeon/gloweyes/gloweyes = new(get_turf(H))
|
||||
H.equip_to_slot(gloweyes, SLOT_IN_BACKPACK)
|
||||
var/list/gloweye_slots = list (
|
||||
"backpack" = SLOT_IN_BACKPACK,
|
||||
"hands" = SLOT_HANDS,
|
||||
"left pocket" = SLOT_L_STORE,
|
||||
"right pocket" = SLOT_R_STORE
|
||||
)
|
||||
H.equip_in_one_of_slots(gloweyes, gloweye_slots, qdel_on_fail = TRUE)
|
||||
H.regenerate_icons()
|
||||
|
||||
/datum/quirk/bloodpressure
|
||||
|
||||
@@ -127,4 +127,4 @@
|
||||
mob_trait = TRAIT_CURSED_BLOOD
|
||||
gain_text = "<span class='notice'>A curse from a land where men return as beasts runs deep in your blood. Best to stay away from holy water... Hell water, on the other hand...</span>"
|
||||
lose_text = "<span class='notice'>You feel the weight of the curse in your blood finally gone.</span>"
|
||||
medical_record_text = "Patient from an unknown type of aversion to holy reagents. Keep them away from a chaplain."
|
||||
medical_record_text = "Patient suffers from an unknown type of aversion to holy reagents. Keep them away from a chaplain."
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
area_type = /area
|
||||
protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
|
||||
/area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/survivalpod, /area/crew_quarters/dorms)
|
||||
/area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/survivalpod, /area/crew_quarters/dorms, /area/security/prison, /area/ruin, /area/space/nearstation)
|
||||
target_trait = ZTRAIT_STATION
|
||||
|
||||
immunity_type = "rad"
|
||||
@@ -27,7 +27,6 @@
|
||||
..()
|
||||
status_alarm(TRUE)
|
||||
|
||||
|
||||
/datum/weather/rad_storm/weather_act(mob/living/L)
|
||||
var/resist = L.getarmor(null, "rad")
|
||||
if(prob(40))
|
||||
@@ -63,4 +62,4 @@
|
||||
signal.data["command"] = "shuttle"
|
||||
|
||||
var/atom/movable/virtualspeaker/virt = new(null)
|
||||
frequency.post_signal(virt, signal)
|
||||
frequency.post_signal(virt, signal)
|
||||
|
||||
@@ -1366,3 +1366,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/xenoarch/med
|
||||
name = "Xenoarchaeology Medical"
|
||||
icon_state = "xenomed"
|
||||
|
||||
//Pool
|
||||
/area/crew_quarters/fitness/pool
|
||||
name = "Pool Area"
|
||||
icon_state = "pool"
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
var/clockwork_warp_allowed = TRUE // Can servants warp into this area from Reebe?
|
||||
var/clockwork_warp_fail = "The structure there is too dense for warping to pierce. (This is normal in high-security areas.)"
|
||||
|
||||
/// if mobs can be spawned by natural random generation
|
||||
var/mob_spawn_allowed = FALSE
|
||||
/// If megafauna can be spawned by natural random generation
|
||||
var/megafauna_spawn_allowed = FALSE
|
||||
|
||||
var/fire = null
|
||||
var/atmos = TRUE
|
||||
var/atmosalm = FALSE
|
||||
|
||||
@@ -114,9 +114,11 @@
|
||||
|
||||
/area/lavaland/surface/outdoors/unexplored //monsters and ruins spawn here
|
||||
icon_state = "unexplored"
|
||||
mob_spawn_allowed = TRUE
|
||||
|
||||
/area/lavaland/surface/outdoors/unexplored/danger //megafauna will also spawn here
|
||||
icon_state = "danger"
|
||||
megafauna_spawn_allowed = TRUE
|
||||
|
||||
/area/lavaland/surface/outdoors/explored
|
||||
name = "Lavaland Labor Camp"
|
||||
|
||||
+31
-25
@@ -165,7 +165,7 @@
|
||||
|
||||
return FALSE
|
||||
|
||||
/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0)
|
||||
/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_HULK_ATTACK, user)
|
||||
if(does_attack_animation)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
@@ -254,18 +254,6 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/atom/proc/get_examine_name(mob/user)
|
||||
. = "\a [src]"
|
||||
var/list/override = list(gender == PLURAL ? "some" : "a", " ", "[name]")
|
||||
if(article)
|
||||
. = "[article] [src]"
|
||||
override[EXAMINE_POSITION_ARTICLE] = article
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED)
|
||||
. = override.Join("")
|
||||
|
||||
/atom/proc/get_examine_string(mob/user, thats = FALSE)
|
||||
. = "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]"
|
||||
|
||||
/atom/proc/update_icon_state()
|
||||
|
||||
/atom/proc/update_overlaysb()
|
||||
@@ -288,33 +276,51 @@
|
||||
managed_overlays = new_overlays
|
||||
add_overlay(new_overlays)
|
||||
|
||||
/atom/proc/get_examine_name(mob/user)
|
||||
. = "\a [src]"
|
||||
var/list/override = list(gender == PLURAL ? "some" : "a", " ", "[name]")
|
||||
if(article)
|
||||
. = "[article] [src]"
|
||||
override[EXAMINE_POSITION_ARTICLE] = article
|
||||
|
||||
var/should_override = FALSE
|
||||
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED)
|
||||
should_override = TRUE
|
||||
|
||||
if(should_override)
|
||||
. = override.Join("")
|
||||
|
||||
///Generate the full examine string of this atom (including icon for goonchat)
|
||||
/atom/proc/get_examine_string(mob/user, thats = FALSE)
|
||||
return "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]"
|
||||
|
||||
/atom/proc/examine(mob/user)
|
||||
to_chat(user, get_examine_string(user, TRUE))
|
||||
. = list("[get_examine_string(user, TRUE)].")
|
||||
|
||||
if(desc)
|
||||
to_chat(user, desc)
|
||||
. += desc
|
||||
|
||||
if(reagents)
|
||||
if(reagents.reagents_holder_flags & TRANSPARENT)
|
||||
to_chat(user, "It contains:")
|
||||
if(reagents.reagent_list.len)
|
||||
. += "It contains:"
|
||||
if(length(reagents.reagent_list))
|
||||
if(user.can_see_reagents()) //Show each individual reagent
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
to_chat(user, "[R.volume] units of [R.name]")
|
||||
. += "[R.volume] units of [R.name]"
|
||||
else //Otherwise, just show the total volume
|
||||
var/total_volume = 0
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
total_volume += R.volume
|
||||
to_chat(user, "[total_volume] units of various reagents")
|
||||
. += "[total_volume] units of various reagents"
|
||||
else
|
||||
to_chat(user, "Nothing.")
|
||||
. += "Nothing."
|
||||
else if(reagents.reagents_holder_flags & AMOUNT_VISIBLE)
|
||||
if(reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>It has [reagents.total_volume] unit\s left.</span>")
|
||||
. += "<span class='notice'>It has [reagents.total_volume] unit\s left.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='danger'>It's empty.</span>")
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user)
|
||||
. += "<span class='danger'>It's empty.</span>"
|
||||
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, .)
|
||||
|
||||
/atom/proc/relaymove(mob/user)
|
||||
if(buckle_message_cooldown <= world.time)
|
||||
@@ -341,7 +347,7 @@
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_FIRE_ACT, exposed_temperature, exposed_volume)
|
||||
return
|
||||
|
||||
/atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked)
|
||||
/atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
|
||||
if(density && !has_gravity(AM)) //thrown stuff bounces off dense stuff in no grav, unless the thrown stuff ends up inside what it hit(embedding, bola, etc...).
|
||||
addtimer(CALLBACK(src, .proc/hitby_react, AM), 2)
|
||||
|
||||
|
||||
+71
-31
@@ -3,6 +3,9 @@
|
||||
var/last_move = null
|
||||
var/last_move_time = 0
|
||||
var/anchored = FALSE
|
||||
var/move_resist = MOVE_RESIST_DEFAULT
|
||||
var/move_force = MOVE_FORCE_DEFAULT
|
||||
var/pull_force = PULL_FORCE_DEFAULT
|
||||
var/datum/thrownthing/throwing = null
|
||||
var/throw_speed = 2 //How many tiles to move per ds when being thrown. Float values are fully supported
|
||||
var/throw_range = 7
|
||||
@@ -26,7 +29,7 @@
|
||||
var/list/client_mobs_in_contents // This contains all the client mobs within this container
|
||||
var/list/acted_explosions //for explosion dodging
|
||||
glide_size = 8
|
||||
appearance_flags = TILE_BOUND|PIXEL_SCALE
|
||||
appearance_flags = TILE_BOUND|PIXEL_SCALE|LONG_GLIDE
|
||||
var/datum/forced_movement/force_moving = null //handled soley by forced_movement.dm
|
||||
var/floating = FALSE
|
||||
var/movement_type = GROUND //Incase you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc.
|
||||
@@ -116,20 +119,20 @@
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/atom/movable/proc/start_pulling(atom/movable/AM,gs)
|
||||
/atom/movable/proc/start_pulling(atom/movable/AM, state, force = move_force, supress_message = FALSE)
|
||||
if(QDELETED(AM))
|
||||
return FALSE
|
||||
if(!(AM.can_be_pulled(src)))
|
||||
if(!(AM.can_be_pulled(src, state, force)))
|
||||
return FALSE
|
||||
|
||||
// If we're pulling something then drop what we're currently pulling and pull this instead.
|
||||
if(pulling)
|
||||
if(gs==0)
|
||||
if(state == 0)
|
||||
stop_pulling()
|
||||
return FALSE
|
||||
// Are we trying to pull something we are already pulling? Then enter grab cycle and end.
|
||||
if(AM == pulling)
|
||||
grab_state = gs
|
||||
grab_state = state
|
||||
if(istype(AM,/mob/living))
|
||||
var/mob/living/AMob = AM
|
||||
AMob.grabbedby(src)
|
||||
@@ -142,13 +145,12 @@
|
||||
|
||||
pulling = AM
|
||||
AM.pulledby = src
|
||||
grab_state = gs
|
||||
|
||||
|
||||
grab_state = state
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
log_combat(src, M, "grabbed", addition="passive grab")
|
||||
visible_message("[src] has grabbed [M] passively.</span>")
|
||||
if(!supress_message)
|
||||
visible_message("<span class='warning'>[src] has grabbed [M] passively!</span>")
|
||||
return TRUE
|
||||
|
||||
//move character into tile whos grabbing you
|
||||
@@ -189,19 +191,21 @@
|
||||
|
||||
/atom/movable/proc/Move_Pulled(atom/A)
|
||||
if(!pulling)
|
||||
return
|
||||
return FALSE
|
||||
if(pulling.anchored || !pulling.Adjacent(src))
|
||||
stop_pulling()
|
||||
return
|
||||
return FALSE
|
||||
if(isliving(pulling))
|
||||
var/mob/living/L = pulling
|
||||
if(L.buckled && L.buckled.buckle_prevents_pull) //if they're buckled to something that disallows pulling, prevent it
|
||||
stop_pulling()
|
||||
return
|
||||
return FALSE
|
||||
if(A == loc && pulling.density)
|
||||
return
|
||||
if(!Process_Spacemove(get_dir(pulling.loc, A)))
|
||||
return
|
||||
return FALSE
|
||||
var/move_dir = get_dir(pulling.loc, A)
|
||||
if(!Process_Spacemove(move_dir))
|
||||
return FALSE
|
||||
pulling.Move(get_step(pulling.loc, move_dir), move_dir, glide_size)
|
||||
step(pulling, get_dir(pulling.loc, A))
|
||||
|
||||
|
||||
@@ -233,7 +237,7 @@
|
||||
// Here's where we rewrite how byond handles movement except slightly different
|
||||
// To be removed on step_ conversion
|
||||
// All this work to prevent a second bump
|
||||
/atom/movable/Move(atom/newloc, direct=0)
|
||||
/atom/movable/Move(atom/newloc, direct=0, glide_size_override = 0)
|
||||
. = FALSE
|
||||
if(!newloc || newloc == loc)
|
||||
return
|
||||
@@ -276,7 +280,7 @@
|
||||
//
|
||||
////////////////////////////////////////
|
||||
|
||||
/atom/movable/Move(atom/newloc, direct)
|
||||
/atom/movable/Move(atom/newloc, direct, glide_size_override = 0)
|
||||
var/atom/movable/pullee = pulling
|
||||
var/turf/T = loc
|
||||
if(pulling)
|
||||
@@ -289,6 +293,9 @@
|
||||
if(!loc || !newloc)
|
||||
return FALSE
|
||||
var/atom/oldloc = loc
|
||||
//Early override for some cases like diagonal movement
|
||||
if(glide_size_override)
|
||||
set_glide_size(glide_size_override)
|
||||
|
||||
if(loc != newloc)
|
||||
if (!(direct & (direct - 1))) //Cardinal move
|
||||
@@ -362,19 +369,32 @@
|
||||
var/pull_dir = get_dir(src, pulling)
|
||||
//puller and pullee more than one tile away or in diagonal position
|
||||
if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir)))
|
||||
pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position
|
||||
pulling.Move(T, get_dir(pulling, T), glide_size) //the pullee tries to reach our previous position
|
||||
if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up
|
||||
stop_pulling()
|
||||
|
||||
if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move.
|
||||
pulledby.stop_pulling()
|
||||
|
||||
//glide_size strangely enough can change mid movement animation and update correctly while the animation is playing
|
||||
//This means that if you don't override it late like this, it will just be set back by the movement update that's called when you move turfs.
|
||||
if(glide_size_override)
|
||||
set_glide_size(glide_size_override)
|
||||
|
||||
|
||||
|
||||
last_move = direct
|
||||
setDir(direct)
|
||||
if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s)
|
||||
if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc, direct, glide_size_override)) //movement failed due to buckled mob(s)
|
||||
return FALSE
|
||||
|
||||
/atom/movable/proc/set_glide_size(target = 8)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, target)
|
||||
glide_size = target
|
||||
|
||||
for(var/atom/movable/AM in buckled_mobs)
|
||||
AM.set_glide_size(target)
|
||||
|
||||
//Called after a successful Move(). By this point, we've already moved
|
||||
/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced)
|
||||
@@ -547,17 +567,19 @@
|
||||
/atom/movable/proc/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
set waitfor = 0
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum)
|
||||
return hit_atom.hitby(src)
|
||||
return hit_atom.hitby(src, throwingdatum=throwingdatum)
|
||||
|
||||
/atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked)
|
||||
if(!anchored && hitpush)
|
||||
/atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked, datum/thrownthing/throwingdatum)
|
||||
if(!anchored && hitpush && (!throwingdatum || (throwingdatum.force >= (move_resist * MOVE_FORCE_PUSH_RATIO))))
|
||||
step(src, AM.dir)
|
||||
..()
|
||||
|
||||
/atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback)
|
||||
return throw_at(target, range, speed, thrower, spin, diagonals_first, callback)
|
||||
/atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = INFINITY, messy_throw = TRUE)
|
||||
if((force < (move_resist * MOVE_FORCE_THROW_RATIO)) || (move_resist == INFINITY))
|
||||
return
|
||||
return throw_at(target, range, speed, thrower, spin, diagonals_first, callback, force, messy_throw)
|
||||
|
||||
/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback) //If this returns FALSE then callback will not be called.
|
||||
/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = INFINITY, messy_throw = TRUE) //If this returns FALSE then callback will not be called.
|
||||
. = FALSE
|
||||
if (!target || speed <= 0)
|
||||
return
|
||||
@@ -603,6 +625,7 @@
|
||||
TT.speed = speed
|
||||
TT.thrower = thrower
|
||||
TT.diagonals_first = diagonals_first
|
||||
TT.force = force
|
||||
TT.callback = callback
|
||||
|
||||
var/dist_x = abs(target.x - src.x)
|
||||
@@ -640,16 +663,32 @@
|
||||
SSthrowing.currentrun[src] = TT
|
||||
TT.tick()
|
||||
|
||||
/atom/movable/proc/handle_buckled_mob_movement(newloc,direct)
|
||||
/atom/movable/proc/handle_buckled_mob_movement(newloc, direct, glide_size_override)
|
||||
for(var/m in buckled_mobs)
|
||||
var/mob/living/buckled_mob = m
|
||||
if(!buckled_mob.Move(newloc, direct))
|
||||
if(!buckled_mob.Move(newloc, direct, glide_size_override))
|
||||
forceMove(buckled_mob.loc)
|
||||
last_move = buckled_mob.last_move
|
||||
inertia_dir = last_move
|
||||
buckled_mob.inertia_dir = last_move
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/atom/movable/proc/force_pushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction)
|
||||
return FALSE
|
||||
|
||||
/atom/movable/proc/force_push(atom/movable/AM, force = move_force, direction, silent = FALSE)
|
||||
. = AM.force_pushed(src, force, direction)
|
||||
if(!silent && .)
|
||||
visible_message("<span class='warning'>[src] forcefully pushes against [AM]!</span>", "<span class='warning'>You forcefully push against [AM]!</span>")
|
||||
|
||||
/atom/movable/proc/move_crush(atom/movable/AM, force = move_force, direction, silent = FALSE)
|
||||
. = AM.move_crushed(src, force, direction)
|
||||
if(!silent && .)
|
||||
visible_message("<span class='danger'>[src] crushes past [AM]!</span>", "<span class='danger'>You crush [AM]!</span>")
|
||||
|
||||
/atom/movable/proc/move_crushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction)
|
||||
return FALSE
|
||||
|
||||
/atom/movable/CanPass(atom/movable/mover, turf/target)
|
||||
if(mover in buckled_mobs)
|
||||
@@ -870,14 +909,15 @@
|
||||
/atom/movable/proc/get_cell()
|
||||
return
|
||||
|
||||
/atom/movable/proc/can_be_pulled(user)
|
||||
/atom/movable/proc/can_be_pulled(user, grab_state, force)
|
||||
if(src == user || !isturf(loc))
|
||||
return FALSE
|
||||
if(anchored || throwing)
|
||||
return FALSE
|
||||
if(force < (move_resist * MOVE_FORCE_PULL_RATIO))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/proc/do_pickup_animation(atom/target)
|
||||
set waitfor = FALSE
|
||||
if(!istype(loc, /turf))
|
||||
|
||||
@@ -145,9 +145,9 @@
|
||||
C.throw_mode_on() //so they can catch it on the return.
|
||||
return ..()
|
||||
|
||||
/obj/item/shield/energy/bananium/throw_impact(atom/hit_atom)
|
||||
/obj/item/shield/energy/bananium/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
if(active)
|
||||
var/caught = hit_atom.hitby(src, 0, 0)
|
||||
var/caught = hit_atom.hitby(src, FALSE, FALSE, throwingdatum=throwingdatum)
|
||||
if(iscarbon(hit_atom) && !caught)//if they are a carbon and they didn't catch it
|
||||
GET_COMPONENT(slipper, /datum/component/slippery)
|
||||
slipper.Slip(hit_atom)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user