Merge branch 'master' into Dynamic2

This commit is contained in:
JaySparrow
2020-10-12 18:40:57 -05:00
659 changed files with 380193 additions and 32548 deletions
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
+2 -2
View File
@@ -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{
+7 -4
View File
@@ -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,
+441 -218
View File
@@ -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
+16 -5
View File
@@ -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
+3 -3
View File
@@ -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"
},
+8 -8
View File
@@ -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"
},
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
+203 -127
View File
@@ -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
+2 -1
View File
@@ -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
+12 -6
View File
@@ -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)
+51 -52
View File
@@ -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
+3 -1
View File
@@ -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
View File
@@ -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 "&nbsp;&nbsp;&nbsp;&nbsp;"
#define FOURSPACES "&nbsp;&nbsp;&nbsp;&nbsp;"
#define CANT_REENTER_ROUND -1
+20
View File
@@ -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))
+16
View File
@@ -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))
+13
View File
@@ -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.
))
+3 -3
View File
@@ -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
+24
View File
@@ -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.
+15
View File
@@ -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"
+3 -8
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -11
View File
@@ -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
+5 -2
View File
@@ -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
),
))
))
+2
View File
@@ -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
+3 -1
View File
@@ -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)
+3 -2
View File
@@ -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
+1 -1
View File
@@ -25,7 +25,7 @@
return ..()
/obj/screen/examine(mob/user)
return
return list()
/obj/screen/orbit()
return
+10 -9
View File
@@ -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))
+2 -3
View File
@@ -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
+3
View File
@@ -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()
+24 -3
View File
@@ -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
+2 -2
View File
@@ -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
+14
View File
@@ -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...
+1
View File
@@ -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
+2 -1
View File
@@ -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)
+2 -1
View File
@@ -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
+11
View File
@@ -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
+6 -6
View File
@@ -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))
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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
-30
View File
@@ -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)
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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)
+18
View File
@@ -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)
+12 -10
View File
@@ -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
+8 -2
View File
@@ -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()
+2 -2
View File
@@ -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))
+49
View File
@@ -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>")
+39
View File
@@ -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>")
+37
View File
@@ -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 .
+194
View File
@@ -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)
+21
View File
@@ -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)
+64
View File
@@ -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)
+2 -1
View File
@@ -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
+1
View File
@@ -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
+2
View File
@@ -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>")
+3 -2
View File
@@ -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
View File
@@ -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"
+9
View File
@@ -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
+56
View File
@@ -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"
+34 -9
View File
@@ -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
+1 -1
View File
@@ -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)
+5
View File
@@ -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"
+5
View File
@@ -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
+2
View File
@@ -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
View File
@@ -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
View File
@@ -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