Merge branch 'master' into Maintenance-Loot-Overhaul
@@ -8611,7 +8611,7 @@
|
||||
/obj/item/wallframe/camera,
|
||||
/obj/item/wallframe/camera,
|
||||
/obj/item/wallframe/camera,
|
||||
/obj/structure/window/reinforced/spawner,
|
||||
/obj/structure/window/reinforced/spawner/directional/south,
|
||||
/obj/structure/window/reinforced/spawner/directional/west,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/ruin/space/ancientstation/delta/ai)
|
||||
|
||||
@@ -2631,9 +2631,7 @@
|
||||
/turf/open/floor/iron/white,
|
||||
/area/ruin/space/has_grav/hotel/dock)
|
||||
"mE" = (
|
||||
/obj/item/kirbyplants{
|
||||
icon_state = "plant-25"
|
||||
},
|
||||
/obj/item/kirbyplants/random/dead,
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 10
|
||||
},
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
// SKYRAT EDIT ADDITON START - Compiling our modular maps too!
|
||||
#include "map_files\VoidRaptor\VoidRaptor.dmm"
|
||||
// SKYRAT EDIT END
|
||||
// BUBBER EDIT ADDITION START
|
||||
#include "map_files\biodome\biodome.dmm"
|
||||
// BUBBER EDIT ADDITION END
|
||||
|
||||
#ifdef CIBUILDING
|
||||
#include "templates.dm"
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"version": 1,
|
||||
"map_name": "Biodome",
|
||||
"map_path": "map_files/biodome",
|
||||
"map_file": "biodome.dmm",
|
||||
"shuttles": {
|
||||
"emergency": "emergency_skyrat",
|
||||
"cargo": "cargo_biodome",
|
||||
"ferry": "ferry_skyrat",
|
||||
"whiteship": "whiteship_box"
|
||||
},
|
||||
"traits": [
|
||||
{
|
||||
"Up": 1,
|
||||
"Baseturf": "/turf/open/misc/asteroid/airless",
|
||||
"Linkage": "Cross"
|
||||
},
|
||||
{
|
||||
"Down": -1,
|
||||
"Baseturf": "/turf/open/openspace",
|
||||
"Linkage": "Cross"
|
||||
}
|
||||
],
|
||||
"job_changes": {
|
||||
"Cook": {
|
||||
"additional_cqc_areas": ["/area/station/service/kitchen/diner"]
|
||||
},
|
||||
"Captain": {
|
||||
"special_charter": "asteroid"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/mob/living/basic/axolotl,
|
||||
/turf/open/water/jungle/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"f" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/flora/rock/pile/jungle/style_random,
|
||||
/turf/open/water/jungle/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"i" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/modular_map_connector,
|
||||
/turf/open/misc/ashplanet/wateryrock/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"n" = (
|
||||
/mob/living/basic/axolotl,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/misc/ashplanet/wateryrock/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"p" = (
|
||||
/obj/structure/flora/rock/pile/jungle/style_random,
|
||||
/turf/open/water/jungle/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"y" = (
|
||||
/mob/living/basic/axolotl,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/turf/open/misc/ashplanet/wateryrock/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"D" = (
|
||||
/turf/open/water/jungle/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"J" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/misc/ashplanet/wateryrock/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"P" = (
|
||||
/obj/machinery/light/warm/directional/south,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/misc/ashplanet/wateryrock/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"X" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
|
||||
/turf/open/misc/ashplanet/wateryrock/biodome,
|
||||
/area/station/maintenance/aft/upper)
|
||||
|
||||
(1,1,1) = {"
|
||||
X
|
||||
n
|
||||
P
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
p
|
||||
D
|
||||
i
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
D
|
||||
a
|
||||
J
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
y
|
||||
f
|
||||
J
|
||||
"}
|
||||
@@ -0,0 +1,91 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/bookcase/random,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"d" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"i" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/obj/structure/railing,
|
||||
/obj/effect/decal/cleanable/blood/tracks{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"p" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/structure/bookcase/random,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"q" = (
|
||||
/obj/structure/railing/corner{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood/tracks{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"s" = (
|
||||
/obj/structure/railing/corner,
|
||||
/obj/effect/decal/cleanable/blood/tracks{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"v" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
|
||||
/obj/structure/railing,
|
||||
/turf/open/floor/wood,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"w" = (
|
||||
/obj/machinery/light/warm/directional/south,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"z" = (
|
||||
/obj/structure/railing{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/decal/cleanable/blood/tracks,
|
||||
/turf/open/floor/wood/stairs/down,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"R" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/modular_map_connector,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"S" = (
|
||||
/obj/structure/railing{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/basic/creature/docile,
|
||||
/turf/open/floor/wood/stairs/down,
|
||||
/area/station/maintenance/aft/upper)
|
||||
|
||||
(1,1,1) = {"
|
||||
v
|
||||
p
|
||||
w
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
q
|
||||
z
|
||||
R
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
s
|
||||
S
|
||||
d
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
i
|
||||
a
|
||||
d
|
||||
"}
|
||||
@@ -0,0 +1,72 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/effect/spawner/structure/window/hollow/survival_pod,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"g" = (
|
||||
/obj/machinery/door/airlock/external/glass,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"h" = (
|
||||
/mob/living/basic/amoung/pequeno,
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
|
||||
/turf/open/floor/iron/textured,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"m" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/modular_map_connector,
|
||||
/turf/open/floor/iron/textured,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"n" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/effect/spawner/structure/window/hollow/survival_pod,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"u" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"v" = (
|
||||
/obj/machinery/light/warm/directional/south,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron/textured,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"E" = (
|
||||
/mob/living/basic/amoung,
|
||||
/turf/open/floor/iron/textured,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"F" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron/textured,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"S" = (
|
||||
/mob/living/basic/amoung,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/turf/open/floor/fakespace,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"W" = (
|
||||
/obj/item/toy/redbutton,
|
||||
/turf/open/floor/iron/textured,
|
||||
/area/station/maintenance/aft/upper)
|
||||
|
||||
(1,1,1) = {"
|
||||
h
|
||||
F
|
||||
v
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
W
|
||||
E
|
||||
m
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
a
|
||||
g
|
||||
n
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
S
|
||||
u
|
||||
u
|
||||
"}
|
||||
@@ -0,0 +1,75 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/mob/living/basic/ghost,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"c" = (
|
||||
/obj/machinery/light/warm/directional/south,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/decal/remains/human,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"e" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/obj/effect/mapping_helpers/broken_floor,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"u" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"A" = (
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"D" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/effect/decal/remains/human,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"H" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/effect/mapping_helpers/broken_floor,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"J" = (
|
||||
/obj/effect/mapping_helpers/broken_floor,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"M" = (
|
||||
/obj/effect/decal/cleanable/grand_remains,
|
||||
/obj/effect/decal/cleanable/ash/large,
|
||||
/mob/living/basic/ghost,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"V" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/modular_map_connector,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"W" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/mapping_helpers/broken_floor,
|
||||
/turf/open/floor/cult,
|
||||
/area/station/maintenance/aft/upper)
|
||||
|
||||
(1,1,1) = {"
|
||||
u
|
||||
W
|
||||
c
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
A
|
||||
M
|
||||
V
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
J
|
||||
a
|
||||
H
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
e
|
||||
D
|
||||
H
|
||||
"}
|
||||
@@ -0,0 +1,88 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/machinery/light/warm/directional/south,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/structure/flora/bush/leavy/style_random,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"d" = (
|
||||
/obj/effect/turf_decal/siding/thinplating/terracotta{
|
||||
dir = 6
|
||||
},
|
||||
/obj/item/fishing_rod,
|
||||
/turf/open/floor/iron/terracotta/herringbone,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"i" = (
|
||||
/obj/effect/turf_decal/siding/thinplating/terracotta{
|
||||
dir = 6
|
||||
},
|
||||
/obj/item/kirbyplants/random,
|
||||
/turf/open/floor/iron/terracotta/herringbone,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"j" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/modular_map_connector,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"k" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"n" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/mob/living/basic/garden_gnome,
|
||||
/obj/structure/flora/bush/pointy/style_random,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"q" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
|
||||
/obj/item/kirbyplants/random,
|
||||
/turf/open/floor/iron/terracotta/herringbone,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"H" = (
|
||||
/obj/structure/water_source/puddle,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"N" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/flora/bush/leavy/style_random,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"R" = (
|
||||
/obj/structure/flora/bush/leafy,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"T" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/turf_decal/siding/thinplating/terracotta,
|
||||
/mob/living/basic/garden_gnome,
|
||||
/turf/open/floor/iron/terracotta/herringbone,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"W" = (
|
||||
/obj/effect/turf_decal/siding/thinplating_new/terracotta/corner,
|
||||
/mob/living/basic/garden_gnome,
|
||||
/turf/open/floor/iron/terracotta/herringbone,
|
||||
/area/station/maintenance/aft/upper)
|
||||
|
||||
(1,1,1) = {"
|
||||
q
|
||||
T
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
W
|
||||
d
|
||||
j
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
i
|
||||
H
|
||||
N
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
k
|
||||
R
|
||||
n
|
||||
"}
|
||||
@@ -0,0 +1,78 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/machinery/light/warm/directional/south,
|
||||
/mob/living/basic/rabbit,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"e" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"i" = (
|
||||
/obj/structure/flora/bush/leavy/style_random,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"j" = (
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"n" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
|
||||
/obj/item/storage/basket/easter,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"u" = (
|
||||
/mob/living/basic/rabbit,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"v" = (
|
||||
/obj/structure/flora/bush/leafy,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"w" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/modular_map_connector,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"R" = (
|
||||
/mob/living/basic/rabbit,
|
||||
/obj/structure/flora/bush/leavy/style_random,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"S" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"W" = (
|
||||
/obj/structure/flora/bush/leavy/style_random,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"X" = (
|
||||
/obj/structure/flora/bush/pointy/style_random,
|
||||
/turf/open/floor/grass,
|
||||
/area/station/maintenance/aft/upper)
|
||||
|
||||
(1,1,1) = {"
|
||||
n
|
||||
e
|
||||
a
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
X
|
||||
R
|
||||
w
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
i
|
||||
j
|
||||
S
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
u
|
||||
v
|
||||
W
|
||||
"}
|
||||
@@ -0,0 +1,70 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/modular_map_connector,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"c" = (
|
||||
/mob/living/basic/cockroach,
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"g" = (
|
||||
/mob/living/basic/cockroach,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"p" = (
|
||||
/mob/living/basic/cockroach,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"w" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/effect/spawner/random/trash/botanical_waste,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"x" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
|
||||
/obj/item/clothing/mask/cigarette/rollie,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"z" = (
|
||||
/obj/item/cigbutt/roach,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"E" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/light/warm/directional/south,
|
||||
/obj/effect/spawner/random/trash/botanical_waste,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"T" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"Z" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
|
||||
(1,1,1) = {"
|
||||
x
|
||||
p
|
||||
E
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
Z
|
||||
z
|
||||
a
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
Z
|
||||
Z
|
||||
g
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
c
|
||||
T
|
||||
w
|
||||
"}
|
||||
@@ -0,0 +1,73 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/fake_eggs,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"e" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"f" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/modular_map_connector,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"i" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/machinery/light/warm/directional/south,
|
||||
/obj/structure/fake_eggs,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"j" = (
|
||||
/mob/living/basic/giant_spider/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"y" = (
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"B" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/structure/spider/cocoon,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"I" = (
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"M" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/mob/living/basic/giant_spider/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"O" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/mob/living/basic/giant_spider/maintenance,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
"X" = (
|
||||
/obj/structure/spider/cocoon,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/upper)
|
||||
|
||||
(1,1,1) = {"
|
||||
y
|
||||
O
|
||||
i
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
X
|
||||
I
|
||||
f
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
j
|
||||
I
|
||||
M
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
e
|
||||
a
|
||||
B
|
||||
"}
|
||||
@@ -0,0 +1,15 @@
|
||||
[rooms.cage_1]
|
||||
modules = ["cage_1_axolotl.dmm", "cage_1_creature.dmm"]
|
||||
# 1. A cage containing damp beasts.
|
||||
|
||||
[rooms.cage_2]
|
||||
modules = ["cage_2_amoung.dmm", "cage_2_ghost.dmm"]
|
||||
# 1. A cage containing humanoid anomalies.
|
||||
|
||||
[rooms.cage_3]
|
||||
modules = ["cage_3_rabbit.dmm", "cage_3_gnome.dmm"]
|
||||
# 1. A cage containing garden creatures.
|
||||
|
||||
[rooms.cage_4]
|
||||
modules = ["cage_4_cockroach.dmm", "cage_4_spider.dmm"]
|
||||
# 1. A cage containing insects.
|
||||
@@ -0,0 +1,505 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"b" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_x = 7;
|
||||
pixel_y = 7
|
||||
},
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_y = 2;
|
||||
pixel_x = -6
|
||||
},
|
||||
/obj/effect/spawner/random/clothing/island_time{
|
||||
pixel_y = 3
|
||||
},
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"c" = (
|
||||
/obj/structure/window/reinforced/spawner/directional/east{
|
||||
layer = 2.9
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_x = 2;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/book/granter/magazine/biodome{
|
||||
pixel_x = -7
|
||||
},
|
||||
/obj/docking_port/mobile/arrivals,
|
||||
/turf/open/floor/glass/reinforced,
|
||||
/area/shuttle/arrival)
|
||||
"e" = (
|
||||
/obj/machinery/power/shuttle_engine/heater{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced/spawner/directional/west,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/arrival)
|
||||
"f" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze,
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_x = 6;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/effect/spawner/random/clothing/island_time{
|
||||
pixel_x = -6;
|
||||
pixel_y = 7
|
||||
},
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"g" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/directional/north,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"h" = (
|
||||
/obj/item/radio/intercom/directional/south,
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/directional/south,
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"i" = (
|
||||
/obj/structure/window/reinforced/spawner/directional/north{
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/structure/fluff/beach_umbrella/science,
|
||||
/obj/machinery/light/directional/west,
|
||||
/turf/open/floor/glass/reinforced,
|
||||
/area/shuttle/arrival)
|
||||
"j" = (
|
||||
/obj/item/book/granter/magazine/biodome{
|
||||
pixel_y = 8;
|
||||
pixel_x = 4
|
||||
},
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"k" = (
|
||||
/obj/structure/window/reinforced/spawner/directional/east{
|
||||
layer = 2.9
|
||||
},
|
||||
/obj/structure/window/reinforced/spawner/directional/south{
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/glass/reinforced,
|
||||
/area/shuttle/arrival)
|
||||
"l" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_x = 5;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/book/granter/magazine/biodome{
|
||||
pixel_x = -6
|
||||
},
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"m" = (
|
||||
/obj/machinery/requests_console/directional/north{
|
||||
department = "Arrival shuttle"
|
||||
},
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/directional/north,
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"n" = (
|
||||
/obj/effect/spawner/structure/window/reinforced/shuttle,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"o" = (
|
||||
/obj/structure/fluff/beach_umbrella,
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"p" = (
|
||||
/obj/effect/turf_decal/siding/wood,
|
||||
/turf/open/water/beach,
|
||||
/area/shuttle/arrival)
|
||||
"q" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"r" = (
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"s" = (
|
||||
/obj/effect/spawner/random/clothing/island_time{
|
||||
pixel_y = -4;
|
||||
pixel_x = -3
|
||||
},
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"t" = (
|
||||
/obj/structure/fluff/beach_umbrella/cap,
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"v" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"w" = (
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "Arrivals Shuttle Airlock"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/arrival)
|
||||
"x" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/water/beach,
|
||||
/area/shuttle/arrival)
|
||||
"y" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"z" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"A" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"B" = (
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_x = 7
|
||||
},
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"C" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/directional/north,
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"D" = (
|
||||
/obj/structure/closet/wardrobe/mixed,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"E" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/water/beach,
|
||||
/area/shuttle/arrival)
|
||||
"F" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/directional/south,
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"G" = (
|
||||
/obj/structure/window/reinforced/spawner/directional/south{
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/structure/fluff/beach_umbrella/engine,
|
||||
/obj/machinery/light/directional/west,
|
||||
/turf/open/floor/glass/reinforced,
|
||||
/area/shuttle/arrival)
|
||||
"H" = (
|
||||
/obj/structure/window/reinforced/spawner/directional/east{
|
||||
layer = 2.9
|
||||
},
|
||||
/obj/structure/window/reinforced/spawner/directional/north{
|
||||
pixel_y = 2
|
||||
},
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/glass/reinforced,
|
||||
/area/shuttle/arrival)
|
||||
"I" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/water/beach,
|
||||
/area/shuttle/arrival)
|
||||
"J" = (
|
||||
/obj/machinery/door/airlock/titanium{
|
||||
name = "Arrivals Shuttle Back Deck"
|
||||
},
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"K" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"L" = (
|
||||
/turf/open/floor/wood/stairs/left,
|
||||
/area/shuttle/arrival)
|
||||
"M" = (
|
||||
/obj/effect/turf_decal/siding/wood,
|
||||
/obj/item/toy/beach_ball,
|
||||
/turf/open/water/beach,
|
||||
/area/shuttle/arrival)
|
||||
"N" = (
|
||||
/obj/structure/closet/emcloset,
|
||||
/obj/effect/turf_decal/siding/wood,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"O" = (
|
||||
/obj/machinery/power/shuttle_engine/propulsion{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/arrival)
|
||||
"P" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/arrival)
|
||||
"Q" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/water/beach,
|
||||
/area/shuttle/arrival)
|
||||
"R" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/storage/medkit/regular,
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"S" = (
|
||||
/obj/effect/spawner/structure/window/reinforced/shuttle,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/arrival)
|
||||
"T" = (
|
||||
/obj/structure/chair/comfy/shuttle{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/directional/south,
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"U" = (
|
||||
/obj/machinery/vending/vendcation,
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"V" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_x = 9;
|
||||
pixel_y = 9
|
||||
},
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_x = -4;
|
||||
pixel_y = 7
|
||||
},
|
||||
/turf/open/floor/iron/terracotta/small,
|
||||
/area/shuttle/arrival)
|
||||
"W" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze{
|
||||
pixel_x = -6;
|
||||
pixel_y = 5
|
||||
},
|
||||
/obj/item/book/granter/magazine/biodome{
|
||||
pixel_x = 5
|
||||
},
|
||||
/turf/open/floor/wood/large,
|
||||
/area/shuttle/arrival)
|
||||
"X" = (
|
||||
/turf/open/floor/glass/reinforced,
|
||||
/area/shuttle/arrival)
|
||||
"Y" = (
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/water/beach,
|
||||
/area/shuttle/arrival)
|
||||
|
||||
(1,1,1) = {"
|
||||
q
|
||||
q
|
||||
P
|
||||
S
|
||||
P
|
||||
q
|
||||
q
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
q
|
||||
P
|
||||
P
|
||||
A
|
||||
P
|
||||
P
|
||||
q
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
q
|
||||
S
|
||||
g
|
||||
a
|
||||
T
|
||||
S
|
||||
q
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
P
|
||||
P
|
||||
y
|
||||
z
|
||||
y
|
||||
P
|
||||
P
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
S
|
||||
N
|
||||
L
|
||||
L
|
||||
L
|
||||
R
|
||||
S
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
S
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
S
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
w
|
||||
a
|
||||
A
|
||||
l
|
||||
A
|
||||
a
|
||||
w
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
P
|
||||
C
|
||||
K
|
||||
o
|
||||
K
|
||||
F
|
||||
P
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
S
|
||||
U
|
||||
r
|
||||
x
|
||||
I
|
||||
B
|
||||
S
|
||||
"}
|
||||
(10,1,1) = {"
|
||||
S
|
||||
b
|
||||
r
|
||||
Y
|
||||
p
|
||||
j
|
||||
S
|
||||
"}
|
||||
(11,1,1) = {"
|
||||
S
|
||||
V
|
||||
t
|
||||
Y
|
||||
M
|
||||
r
|
||||
S
|
||||
"}
|
||||
(12,1,1) = {"
|
||||
S
|
||||
f
|
||||
r
|
||||
Q
|
||||
E
|
||||
s
|
||||
S
|
||||
"}
|
||||
(13,1,1) = {"
|
||||
P
|
||||
m
|
||||
v
|
||||
v
|
||||
v
|
||||
h
|
||||
P
|
||||
"}
|
||||
(14,1,1) = {"
|
||||
w
|
||||
a
|
||||
A
|
||||
W
|
||||
A
|
||||
a
|
||||
w
|
||||
"}
|
||||
(15,1,1) = {"
|
||||
P
|
||||
D
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
P
|
||||
"}
|
||||
(16,1,1) = {"
|
||||
e
|
||||
P
|
||||
n
|
||||
J
|
||||
n
|
||||
P
|
||||
e
|
||||
"}
|
||||
(17,1,1) = {"
|
||||
O
|
||||
e
|
||||
i
|
||||
X
|
||||
G
|
||||
e
|
||||
O
|
||||
"}
|
||||
(18,1,1) = {"
|
||||
q
|
||||
O
|
||||
H
|
||||
c
|
||||
k
|
||||
O
|
||||
q
|
||||
"}
|
||||
@@ -0,0 +1,234 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/machinery/power/shuttle_engine/propulsion,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/supply)
|
||||
"b" = (
|
||||
/obj/effect/decal/cleanable/oil/streak,
|
||||
/turf/open/floor/iron/dark/textured_edge,
|
||||
/area/shuttle/supply)
|
||||
"c" = (
|
||||
/obj/machinery/light/floor,
|
||||
/turf/open/floor/iron/dark/textured_edge{
|
||||
dir = 1
|
||||
},
|
||||
/area/shuttle/supply)
|
||||
"j" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/fake_iron_sand,
|
||||
/area/shuttle/supply)
|
||||
"l" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron/dark/textured_edge,
|
||||
/area/shuttle/supply)
|
||||
"m" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 4;
|
||||
id = "QMLoad2";
|
||||
name = "on ramp"
|
||||
},
|
||||
/turf/open/floor/fake_iron_sand,
|
||||
/area/shuttle/supply)
|
||||
"o" = (
|
||||
/obj/machinery/power/shuttle_engine/propulsion/burst/left,
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/shuttle/supply)
|
||||
"q" = (
|
||||
/turf/open/floor/iron/dark/textured_edge{
|
||||
dir = 1
|
||||
},
|
||||
/area/shuttle/supply)
|
||||
"r" = (
|
||||
/turf/open/floor/fake_iron_sand,
|
||||
/area/shuttle/supply)
|
||||
"w" = (
|
||||
/obj/machinery/door/airlock/shuttle{
|
||||
name = "Supply Shuttle Airlock"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/access/all/supply/general,
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/supply)
|
||||
"x" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/light/floor,
|
||||
/turf/open/floor/fake_iron_sand,
|
||||
/area/shuttle/supply)
|
||||
"A" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "QMLoaddoor2";
|
||||
name = "Supply Dock Loading Door"
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 8;
|
||||
id = "QMLoad"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/supply)
|
||||
"B" = (
|
||||
/obj/machinery/door/airlock/shuttle{
|
||||
name = "Supply Shuttle Airlock"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/access/all/supply/general,
|
||||
/obj/docking_port/mobile/supply{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/supply)
|
||||
"C" = (
|
||||
/obj/machinery/button/door/directional/west{
|
||||
id = "QMLoaddoor2";
|
||||
name = "Loading Doors";
|
||||
pixel_y = 8
|
||||
},
|
||||
/obj/machinery/button/door/directional/west{
|
||||
id = "QMLoaddoor";
|
||||
name = "Loading Doors";
|
||||
pixel_y = -8
|
||||
},
|
||||
/obj/machinery/light/floor,
|
||||
/turf/open/floor/fake_iron_sand,
|
||||
/area/shuttle/supply)
|
||||
"E" = (
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"F" = (
|
||||
/obj/effect/decal/cleanable/oil/streak,
|
||||
/turf/open/floor/fake_iron_sand,
|
||||
/area/shuttle/supply)
|
||||
"H" = (
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/supply)
|
||||
"K" = (
|
||||
/obj/machinery/door/poddoor{
|
||||
id = "QMLoaddoor";
|
||||
name = "Supply Dock Loading Door"
|
||||
},
|
||||
/obj/machinery/conveyor{
|
||||
dir = 4;
|
||||
id = "QMLoad2";
|
||||
name = "on ramp"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/supply)
|
||||
"P" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/iron/dark/textured_edge{
|
||||
dir = 1
|
||||
},
|
||||
/area/shuttle/supply)
|
||||
"S" = (
|
||||
/turf/open/floor/iron/dark/textured_edge,
|
||||
/area/shuttle/supply)
|
||||
"W" = (
|
||||
/obj/effect/decal/cleanable/oil,
|
||||
/turf/open/floor/fake_iron_sand,
|
||||
/area/shuttle/supply)
|
||||
"X" = (
|
||||
/turf/open/floor/iron/recharge_floor/asteroid,
|
||||
/area/shuttle/supply)
|
||||
"Z" = (
|
||||
/obj/machinery/conveyor{
|
||||
dir = 8;
|
||||
id = "QMLoad"
|
||||
},
|
||||
/turf/open/floor/fake_iron_sand,
|
||||
/area/shuttle/supply)
|
||||
|
||||
(1,1,1) = {"
|
||||
H
|
||||
H
|
||||
H
|
||||
A
|
||||
B
|
||||
H
|
||||
w
|
||||
K
|
||||
H
|
||||
H
|
||||
H
|
||||
E
|
||||
"}
|
||||
(2,1,1) = {"
|
||||
H
|
||||
c
|
||||
r
|
||||
Z
|
||||
r
|
||||
C
|
||||
r
|
||||
m
|
||||
x
|
||||
S
|
||||
H
|
||||
o
|
||||
"}
|
||||
(3,1,1) = {"
|
||||
H
|
||||
P
|
||||
r
|
||||
j
|
||||
r
|
||||
r
|
||||
r
|
||||
r
|
||||
r
|
||||
l
|
||||
H
|
||||
o
|
||||
"}
|
||||
(4,1,1) = {"
|
||||
H
|
||||
X
|
||||
r
|
||||
r
|
||||
r
|
||||
W
|
||||
r
|
||||
r
|
||||
r
|
||||
l
|
||||
H
|
||||
a
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
H
|
||||
q
|
||||
j
|
||||
F
|
||||
r
|
||||
r
|
||||
r
|
||||
j
|
||||
r
|
||||
S
|
||||
H
|
||||
o
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
H
|
||||
c
|
||||
j
|
||||
r
|
||||
r
|
||||
x
|
||||
r
|
||||
r
|
||||
x
|
||||
b
|
||||
H
|
||||
o
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
H
|
||||
H
|
||||
H
|
||||
H
|
||||
H
|
||||
H
|
||||
H
|
||||
H
|
||||
H
|
||||
H
|
||||
H
|
||||
E
|
||||
"}
|
||||
@@ -0,0 +1 @@
|
||||
#define OPFOR_EQUIPMENT_CATEGORY_ANTAGONIST_POWERS "Antagonist Powers"
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"amoung": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "amoung",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "amoung_visor",
|
||||
"blend_mode": "overlay"
|
||||
}
|
||||
],
|
||||
"amoung_dead": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "amoung_dead",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "amoung_bone",
|
||||
"blend_mode": "overlay"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"amoung_pequeno": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "amoung_pequeno",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "amoung_pequeno_visor",
|
||||
"blend_mode": "overlay"
|
||||
}
|
||||
],
|
||||
"amoung_pequeno_dead": [
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "amoung_pequeno_dead",
|
||||
"blend_mode": "overlay",
|
||||
"color_ids": [ 1 ]
|
||||
},
|
||||
{
|
||||
"type": "icon_state",
|
||||
"icon_state": "amoung_pequeno_bone",
|
||||
"blend_mode": "overlay"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -550,14 +550,15 @@
|
||||
if(robot.hasExpanded)
|
||||
to_chat(usr, span_warning("This unit already has an expand module installed!"))
|
||||
return FALSE
|
||||
// SKYRAT EDIT BEGIN
|
||||
/* // SKYRAT EDIT BEGIN - BUBBER EDIT REMOVAL
|
||||
if(robot.model.model_select_icon == "nomod")
|
||||
to_chat(usr, span_warning("Default models cannot take expand or shrink upgrades."))
|
||||
return FALSE
|
||||
if((R_TRAIT_WIDE in robot.model.model_features) || (R_TRAIT_TALL in robot.model.model_features))
|
||||
to_chat(usr, span_warning("This unit's chassis cannot be enlarged any further."))
|
||||
return FALSE
|
||||
// SKYRAT EDIT END
|
||||
return FALSE*/
|
||||
// SKYRAT EDIT END - BUBBER EDIT REMOVAL
|
||||
|
||||
|
||||
robot.notransform = TRUE
|
||||
var/prev_lockcharge = robot.lockcharge
|
||||
|
||||
@@ -11,3 +11,5 @@
|
||||
new /obj/item/cultivator(src)
|
||||
new /obj/item/hatchet(src)
|
||||
new /obj/item/secateurs(src)
|
||||
for(var/i in 1 to 2)
|
||||
new /obj/item/storage/box/disks_plantgene(src) // BUBBER EDIT ADDITION
|
||||
|
||||
@@ -136,6 +136,7 @@
|
||||
/obj/effect/visible_heretic_influence/proc/show_presence()
|
||||
animate(src, alpha = 255, time = 15 SECONDS)
|
||||
|
||||
/* Bubberstation change: hugboxes heretic stuff
|
||||
/obj/effect/visible_heretic_influence/attack_hand(mob/living/user, list/modifiers)
|
||||
. = ..()
|
||||
if(.)
|
||||
@@ -182,6 +183,7 @@
|
||||
var/datum/effect_system/reagents_explosion/explosion = new()
|
||||
explosion.set_up(1, get_turf(human_user), TRUE, 0)
|
||||
explosion.start(src)
|
||||
*/
|
||||
|
||||
/obj/effect/visible_heretic_influence/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -191,7 +193,7 @@
|
||||
var/mob/living/carbon/human/human_user = user
|
||||
to_chat(human_user, span_userdanger("Your mind burns as you stare at the tear!"))
|
||||
human_user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 10, 190)
|
||||
human_user.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus)
|
||||
// human_user.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus) Bubberstation change: Hugboxes heretics.
|
||||
|
||||
/obj/effect/heretic_influence
|
||||
name = "reality smash"
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
var/icon = "dna"
|
||||
/// Flags that determine if a gene can be modified.
|
||||
var/mutability_flags
|
||||
|
||||
/*
|
||||
* Returns the formatted name of the plant gene.
|
||||
*
|
||||
|
||||
@@ -79,6 +79,18 @@
|
||||
icon_harvest = "[species]-harvest"
|
||||
|
||||
if(!nogenes)
|
||||
// START Bubber edit
|
||||
genes += new /datum/plant_gene/core/lifespan(lifespan)
|
||||
genes += new /datum/plant_gene/core/endurance(endurance)
|
||||
genes += new /datum/plant_gene/core/weed_rate(weed_rate)
|
||||
genes += new /datum/plant_gene/core/weed_chance(weed_chance)
|
||||
if(yield != -1)
|
||||
genes += new /datum/plant_gene/core/yield(yield)
|
||||
genes += new /datum/plant_gene/core/production(production)
|
||||
if(potency != -1)
|
||||
genes += new /datum/plant_gene/core/potency(potency)
|
||||
genes += new /datum/plant_gene/core/instability(instability)
|
||||
// END Bubber edit
|
||||
for(var/plant_gene in genes)
|
||||
if(ispath(plant_gene))
|
||||
genes -= plant_gene
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/species/abductor
|
||||
name = "Abductor"
|
||||
id = SPECIES_ABDUCTOR
|
||||
sexes = FALSE
|
||||
sexes = TRUE//ZUBBER EDIT
|
||||
species_traits = list(
|
||||
NOEYESPRITES,
|
||||
NO_UNDERWEAR,
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
|
||||
species_cookie = /obj/item/food/energybar
|
||||
species_language_holder = /datum/language_holder/ethereal
|
||||
sexes = FALSE //no fetish content allowed
|
||||
sexes = TRUE //Zubber edit-let them play women.
|
||||
toxic_food = NONE
|
||||
// Body temperature for ethereals is much higher then humans as they like hotter environments
|
||||
bodytemp_normal = (BODYTEMP_NORMAL + 50)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "\improper Plasmaman"
|
||||
plural_form = "Plasmamen"
|
||||
id = SPECIES_PLASMAMAN
|
||||
sexes = 0
|
||||
sexes = TRUE//ZUBBER EDIT, SEX WILL BE REAL
|
||||
meat = /obj/item/stack/sheet/mineral/plasma
|
||||
species_traits = list(
|
||||
NOTRANSSTING,
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
hud_list[hud] = list()
|
||||
|
||||
else
|
||||
var/image/I = image('modular_skyrat/master_files/icons/mob/huds/hud.dmi', src, "") //SKYRAT EDIT: original filepath 'icons/mob/huds/hud.dmi'
|
||||
var/image/I = image('modular_zubbers/icons/mob/huds/hud.dmi', src, "") //ZUBBERS EDIT: original filepath 'icons/mob/huds/hud.dmi'
|
||||
I.appearance_flags = RESET_COLOR|RESET_TRANSFORM
|
||||
hud_list[hud] = I
|
||||
set_hud_image_active(hud, update_huds = FALSE) //by default everything is active. but dont add it to huds to keep control.
|
||||
|
||||
@@ -58,3 +58,7 @@ endmap
|
||||
map voidraptor
|
||||
votable
|
||||
endmap
|
||||
|
||||
map biodome
|
||||
votable
|
||||
endmap
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "INKVD"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Plant Gene Editor readded."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Icarus-The-Sun"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscdel: "Removes Hemophage's Virus Immunity."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "nevimer"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Biodome map, ported from Orbstation! A large vacation themed map!"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "nevimer"
|
||||
delete-after: True
|
||||
changes:
|
||||
- code_imp: "no more borg expansion restrictions"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Icarus-The-Sun"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Gives Species Genders."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "zeroisthebiggay"
|
||||
delete-after: True
|
||||
changes:
|
||||
- image: "huds"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "BurgerBB"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscdel: "Hugboxes pierced realities by removing some non-heretic functionality."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "INKVD"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Adds antag granters to OPFOR equipment selection."
|
||||
@@ -1,12 +1,12 @@
|
||||
/datum/job/blueshield
|
||||
title = JOB_BLUESHIELD
|
||||
description = "Protect the Heads of Staff and get your hands dirty so they can keep theirs clean."
|
||||
description = "Protect the Heads of Staff and get your hands dirty so they can keep theirs clean." // BUBBER EDIT
|
||||
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
|
||||
department_head = list(JOB_NT_REP)
|
||||
faction = FACTION_STATION
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "All Command Staff and Central Command when applicable"
|
||||
supervisors = "All Command Staff and Central Command when applicable" // BUBBER EDIT
|
||||
minimal_player_age = 7
|
||||
exp_requirements = 2400
|
||||
exp_required_type = EXP_TYPE_CREW
|
||||
|
||||
@@ -132,13 +132,13 @@
|
||||
|
||||
/datum/armament_entry/company_import/donk/foamforce/darts
|
||||
item_type = /obj/item/ammo_box/foambox
|
||||
lower_cost = CARGO_CRATE_VALUE * 0.25
|
||||
upper_cost = CARGO_CRATE_VALUE
|
||||
lower_cost = CARGO_CRATE_VALUE * 1.5 // BUBBER EDIT
|
||||
upper_cost = CARGO_CRATE_VALUE * 2.5 // BUBBER EDIT
|
||||
|
||||
/datum/armament_entry/company_import/donk/foamforce/riot_darts
|
||||
item_type = /obj/item/ammo_box/foambox/riot
|
||||
lower_cost = CARGO_CRATE_VALUE * 0.5
|
||||
upper_cost = CARGO_CRATE_VALUE * 1.5
|
||||
lower_cost = CARGO_CRATE_VALUE * 1.5 // BUBBER EDIT
|
||||
upper_cost = CARGO_CRATE_VALUE * 2.5 // BUBBER EDIT
|
||||
interest_required = COMPANY_SOME_INTEREST
|
||||
contraband = TRUE
|
||||
|
||||
|
||||
@@ -74,8 +74,7 @@
|
||||
TRAIT_ADVANCEDTOOLUSER,
|
||||
TRAIT_CAN_STRIP,
|
||||
TRAIT_NOHUNGER,
|
||||
TRAIT_NOBREATH,
|
||||
TRAIT_VIRUSIMMUNE,
|
||||
TRAIT_NOBREATH,//Bubber edit, removes Virus Immune.
|
||||
TRAIT_CAN_USE_FLIGHT_POTION,
|
||||
TRAIT_LITERATE,
|
||||
)
|
||||
@@ -312,9 +311,8 @@
|
||||
SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK,
|
||||
SPECIES_PERK_ICON = "biohazard",
|
||||
SPECIES_PERK_NAME = "Viral Symbiosis",
|
||||
SPECIES_PERK_DESC = "Hemophages, due to their condition, cannot get infected by \
|
||||
other viruses and don't actually require an external source of oxygen \
|
||||
to stay alive.",
|
||||
SPECIES_PERK_DESC = "Hemophages, due to their condition don't actually require an external source of oxygen \
|
||||
to stay alive.", // BUBBER EDIT
|
||||
),
|
||||
list(
|
||||
SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK,
|
||||
|
||||
@@ -108,7 +108,7 @@ would only be recognisable with someone that had the syndicate trait.
|
||||
var/mob/living/carbon/human/human_user = user
|
||||
if(!user?.mind.opposing_force)
|
||||
return
|
||||
for(var/datum/opposing_force_equipment/loadout/contractor/contractor_kit in user.mind.opposing_force.selected_equipment)
|
||||
for(var/datum/opposing_force_equipment/antagonist_powers/contractor/contractor_kit in user.mind.opposing_force.selected_equipment) // BUBBER EDIT: Original /datum/opposing_force_equipment/loadout/contractor
|
||||
composed_message = "You note the following because of your [span_red("<b>Contractor Status</b>")]: <br>"
|
||||
composed_message += special_desc
|
||||
. += composed_message
|
||||
|
||||
@@ -49,9 +49,10 @@
|
||||
name = "Snake Eater bundle"
|
||||
item_type = /obj/item/storage/box/syndie_kit/loadout/ocelotfoxtrot
|
||||
description = "A kit themed around one certain gun spinning cat. Includes his famous colt special, and personalised ammo."
|
||||
|
||||
/*
|
||||
/datum/opposing_force_equipment/loadout/contractor
|
||||
name = "Contractor bundle"
|
||||
item_type = /obj/item/storage/box/syndicate/contract_kit
|
||||
description = "A box containing everything you need to take contracts from the Syndicate. Kidnap people and drop them off at specified locations for rewards in the form of Telecrystals (Usable in the provided uplink) and Contractor Points."
|
||||
admin_note = "WARNING: This bundle is a pretty large change-up of how a person plays a round, giving them access to a swathe of new gear, in addition to a contractor PDA. This contractor PDA lets them take on objectives to non-lethally kidnap people in exhange for telecrystals, usable in the provided uplink."
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/opposing_force_equipment/other
|
||||
category = OPFOR_EQUIPMENT_CATEGORY_OTHER
|
||||
|
||||
/*
|
||||
/datum/opposing_force_equipment/other/uplink
|
||||
item_type = /obj/item/uplink/opfor
|
||||
name = "Syndicate Uplink"
|
||||
@@ -20,7 +20,7 @@
|
||||
item_type = /obj/item/stack/telecrystal/twenty
|
||||
name = "20 Raw Telecrystals"
|
||||
description = "A bundle of telecrystals in their rawest and purest form; can be utilized on active uplinks to increase their telecrystal count."
|
||||
|
||||
*/
|
||||
/datum/opposing_force_equipment/other/cashcase
|
||||
item_type = /obj/item/storage/secure/briefcase/syndie
|
||||
name = "Syndicate Briefcase Full of Cash"
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/obj/item/circuitboard/machine/plantgenes
|
||||
name = "Plant DNA Manipulator (Machine Board)"
|
||||
greyscale_colors = CIRCUIT_COLOR_SERVICE
|
||||
build_path = /obj/machinery/plantgenes
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/servo = 1,
|
||||
/obj/item/stock_parts/micro_laser = 1,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/stock_parts/scanning_module = 1)
|
||||
@@ -0,0 +1,7 @@
|
||||
/obj/item/storage/box/disks_plantgene
|
||||
name = "plant data disks box"
|
||||
illustration = "disk_kit"
|
||||
|
||||
/obj/item/storage/box/disks_plantgene/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/disk/plantgene(src)
|
||||
@@ -0,0 +1,464 @@
|
||||
/obj/machinery/plantgenes
|
||||
name = "plant DNA manipulator"
|
||||
desc = "An advanced device designed to manipulate plant genetic makeup."
|
||||
icon = 'icons/obj/hydroponics/equipment.dmi'
|
||||
icon_state = "dnamod"
|
||||
base_icon_state = "dnamod"
|
||||
var/working_state = "dnamod"
|
||||
var/nopower_state = "dnamod-off"
|
||||
density = TRUE
|
||||
circuit = /obj/item/circuitboard/machine/plantgenes
|
||||
pass_flags = PASSTABLE
|
||||
|
||||
var/obj/item/seeds/seed
|
||||
var/obj/item/disk/plantgene/disk
|
||||
|
||||
var/list/core_genes = list()
|
||||
var/list/reagent_genes = list()
|
||||
var/list/trait_genes = list()
|
||||
|
||||
var/datum/plant_gene/target
|
||||
var/operation = ""
|
||||
var/max_potency = 50 // See RefreshParts() for how these work
|
||||
var/max_yield = 2
|
||||
var/min_production = 12
|
||||
var/max_endurance = 10 // IMPT: ALSO AFFECTS LIFESPAN
|
||||
var/min_wchance = 67
|
||||
var/min_wrate = 10
|
||||
|
||||
/obj/machinery/plantgenes/RefreshParts() // Comments represent the max you can set per tier, respectively. seeds.dm [219] clamps these for us but we don't want to mislead the viewer.
|
||||
. = ..()
|
||||
for(var/obj/item/stock_parts/servo/M in component_parts)
|
||||
if(M.rating > 3)
|
||||
max_potency = 95
|
||||
else
|
||||
max_potency = initial(max_potency) + (M.rating**3) // 53,59,77,95 Clamps at 100
|
||||
|
||||
max_yield = initial(max_yield) + (M.rating*2) // 4,6,8,10 Clamps at 10
|
||||
|
||||
for(var/obj/item/stock_parts/scanning_module/SM in component_parts)
|
||||
if(SM.rating > 3) //If you create t5 parts I'm a step ahead mwahahaha!
|
||||
min_production = 1
|
||||
else
|
||||
min_production = 12 - (SM.rating * 3) //9,6,3,1. Requires if to avoid going below clamp [1]
|
||||
|
||||
max_endurance = initial(max_endurance) + (SM.rating * 25) // 35,60,85,100 Clamps at 10min 100max
|
||||
|
||||
for(var/obj/item/stock_parts/micro_laser/ML in component_parts)
|
||||
var/wratemod = ML.rating * 2.5
|
||||
min_wrate = FLOOR(10-wratemod,1) // 7,5,2,0 Clamps at 0 and 10 You want this low
|
||||
min_wchance = 67-(ML.rating*16) // 48,35,19,3 Clamps at 0 and 67 You want this low
|
||||
|
||||
/* lets not add the snowflake editor for plant people rn
|
||||
for(var/obj/item/circuitboard/machine/plantgenes/vaultcheck in component_parts)
|
||||
if(istype(vaultcheck, /obj/item/circuitboard/machine/plantgenes/vault)) // TRAIT_DUMB BOTANY TUTS
|
||||
max_potency = 100
|
||||
max_yield = 10
|
||||
min_production = 1
|
||||
max_endurance = 100
|
||||
min_wchance = 0
|
||||
min_wrate = 0
|
||||
*/
|
||||
|
||||
/obj/machinery/plantgenes/update_icon_state()
|
||||
icon_state = "[(nopower_state && !powered()) ? nopower_state : base_icon_state]"
|
||||
return ..()
|
||||
|
||||
/obj/machinery/plantgenes/update_overlays()
|
||||
. = ..()
|
||||
if(seed)
|
||||
. += "dnamod-dna"
|
||||
if(panel_open)
|
||||
. += "dnamod-open"
|
||||
|
||||
/obj/machinery/plantgenes/attackby(obj/item/I, mob/user, params)
|
||||
if(default_deconstruction_screwdriver(user, "dnamod", "dnamod", I))
|
||||
update_icon()
|
||||
return
|
||||
if(default_deconstruction_crowbar(I))
|
||||
return
|
||||
if(iscyborg(user))
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/seeds))
|
||||
if (operation)
|
||||
to_chat(user, "<span class='notice'>Please complete current operation.</span>")
|
||||
return
|
||||
if(!user.transferItemToLoc(I, src))
|
||||
return
|
||||
eject_seed()
|
||||
insert_seed(I)
|
||||
to_chat(user, "<span class='notice'>You add [I] to the machine.</span>")
|
||||
interact(user)
|
||||
else if(istype(I, /obj/item/disk/plantgene))
|
||||
if (operation)
|
||||
to_chat(user, "<span class='notice'>Please complete current operation.</span>")
|
||||
return
|
||||
if(!user.transferItemToLoc(I, src))
|
||||
return
|
||||
eject_disk()
|
||||
disk = I
|
||||
to_chat(user, "<span class='notice'>You add [I] to the machine.</span>")
|
||||
interact(user)
|
||||
else
|
||||
..()
|
||||
|
||||
//? Eventually refactor this into TGUI?
|
||||
/obj/machinery/plantgenes/ui_interact(mob/user)
|
||||
. = ..()
|
||||
if(!user)
|
||||
return
|
||||
|
||||
var/datum/browser/popup = new(user, "plantdna", "Plant DNA Manipulator", 450, 600)
|
||||
if(!(in_range(src, user) || issilicon(user)))
|
||||
popup.close()
|
||||
return
|
||||
|
||||
var/dat = ""
|
||||
|
||||
if(operation)
|
||||
if(!seed || (!target && operation != "insert"))
|
||||
operation = ""
|
||||
target = null
|
||||
interact(user)
|
||||
return
|
||||
if((operation == "replace" || operation == "insert") && (!disk || !disk.gene))
|
||||
operation = ""
|
||||
target = null
|
||||
interact(user)
|
||||
return
|
||||
|
||||
dat += "<div class='line'><h3>Confirm Operation</h3></div>"
|
||||
dat += "<div class='statusDisplay'>Are you sure you want to [operation] "
|
||||
switch(operation)
|
||||
if("remove")
|
||||
dat += "<span class='highlight'>[target.get_name()]</span> gene from \the <span class='highlight'>[seed]</span>?<br>"
|
||||
if("extract")
|
||||
dat += "<span class='highlight'>[target.get_name()]</span> gene from \the <span class='highlight'>[seed]</span>?<br>"
|
||||
dat += "<span class='bad'>The sample will be destroyed in process!</span>"
|
||||
if(istype(target, /datum/plant_gene/core))
|
||||
var/datum/plant_gene/core/gene = target
|
||||
if(istype(target, /datum/plant_gene/core/potency))
|
||||
if(gene.value > max_potency)
|
||||
dat += "<br><br>This device's extraction capabilities are currently limited to <span class='highlight'>[max_potency]</span> potency. "
|
||||
dat += "Target gene will be degraded to <span class='highlight'>[max_potency]</span> potency on extraction."
|
||||
else if(istype(target, /datum/plant_gene/core/lifespan))
|
||||
if(gene.value > max_endurance)
|
||||
dat += "<br><br>This device's extraction capabilities are currently limited to <span class='highlight'>[max_endurance]</span> lifespan. "
|
||||
dat += "Target gene will be degraded to <span class='highlight'>[max_endurance]</span> Lifespan on extraction."
|
||||
else if(istype(target, /datum/plant_gene/core/endurance))
|
||||
if(gene.value > max_endurance)
|
||||
dat += "<br><br>This device's extraction capabilities are currently limited to <span class='highlight'>[max_endurance]</span> endurance. "
|
||||
dat += "Target gene will be degraded to <span class='highlight'>[max_endurance]</span> endurance on extraction."
|
||||
else if(istype(target, /datum/plant_gene/core/yield))
|
||||
if(gene.value > max_yield)
|
||||
dat += "<br><br>This device's extraction capabilities are currently limited to <span class='highlight'>[max_yield]</span> yield. "
|
||||
dat += "Target gene will be degraded to <span class='highlight'>[max_yield]</span> yield on extraction."
|
||||
else if(istype(target, /datum/plant_gene/core/production))
|
||||
if(gene.value < min_production)
|
||||
dat += "<br><br>This device's extraction capabilities are currently limited to <span class='highlight'>[min_production]</span> production. "
|
||||
dat += "Target gene will be degraded to <span class='highlight'>[min_production]</span> production on extraction."
|
||||
else if(istype(target, /datum/plant_gene/core/weed_rate))
|
||||
if(gene.value < min_wrate)
|
||||
dat += "<br><br>This device's extraction capabilities are currently limited to <span class='highlight'>[min_wrate]</span> weed rate. "
|
||||
dat += "Target gene will be degraded to <span class='highlight'>[min_wrate]</span> weed rate on extraction."
|
||||
else if(istype(target, /datum/plant_gene/core/weed_chance))
|
||||
if(gene.value < min_wchance)
|
||||
dat += "<br><br>This device's extraction capabilities are currently limited to <span class='highlight'>[min_wchance]</span> weed chance. "
|
||||
dat += "Target gene will be degraded to <span class='highlight'>[min_wchance]</span> weed chance on extraction."
|
||||
|
||||
if("replace")
|
||||
dat += "<span class='highlight'>[target.get_name()]</span> gene with <span class='highlight'>[disk.gene.get_name()]</span>?<br>"
|
||||
if("insert")
|
||||
dat += "<span class='highlight'>[disk.gene.get_name()]</span> gene into \the <span class='highlight'>[seed]</span>?<br>"
|
||||
dat += "</div><div class='line'><a href='?src=[REF(src)];gene=[REF(target)];op=[operation]'>Confirm</a> "
|
||||
dat += "<a href='?src=[REF(src)];abort=1'>Abort</a></div>"
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
return
|
||||
|
||||
dat+= "<div class='statusDisplay'>"
|
||||
|
||||
dat += "<div class='line'><div class='statusLabel'>Plant Sample:</div><div class='statusValue'><a href='?src=[REF(src)];eject_seed=1'>"
|
||||
dat += seed ? seed.name : "None"
|
||||
dat += "</a></div></div>"
|
||||
|
||||
dat += "<div class='line'><div class='statusLabel'>Data Disk:</div><div class='statusValue'><a href='?src=[REF(src)];eject_disk=1'>"
|
||||
if(!disk)
|
||||
dat += "None"
|
||||
else if(!disk.gene)
|
||||
dat += "Empty Disk"
|
||||
else
|
||||
dat += disk.gene.get_name()
|
||||
if(disk && disk.read_only)
|
||||
dat += " (RO)"
|
||||
dat += "</a></div></div>"
|
||||
|
||||
dat += "<br></div>"
|
||||
|
||||
if(seed)
|
||||
var/can_insert = disk && disk.gene && disk.gene.can_add(seed)
|
||||
var/can_extract = disk && !disk.read_only
|
||||
|
||||
dat += "<div class='line'><h3>Core Genes</h3></div><div class='statusDisplay'><table>"
|
||||
for(var/a in core_genes)
|
||||
var/datum/plant_gene/G = a
|
||||
if(!G)
|
||||
continue
|
||||
dat += "<tr><td width='260px'>[G.get_name()]</td><td>"
|
||||
if(can_extract && G.mutability_flags & PLANT_GENE_GRAFTABLE)
|
||||
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=extract'>Extract</a>"
|
||||
if(can_insert && istype(disk.gene, G.type) && G.mutability_flags & PLANT_GENE_REMOVABLE)
|
||||
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=replace'>Replace</a>"
|
||||
dat += "</td></tr>"
|
||||
dat += "</table></div>"
|
||||
|
||||
if(seed.yield != -1)
|
||||
dat += "<div class='line'><h3>Content Genes</h3></div><div class='statusDisplay'>"
|
||||
if(reagent_genes.len)
|
||||
dat += "<table>"
|
||||
for(var/a in reagent_genes)
|
||||
var/datum/plant_gene/G = a
|
||||
dat += "<tr><td width='260px'>[G.get_name()]</td><td>"
|
||||
if(can_extract && G.mutability_flags & PLANT_GENE_GRAFTABLE)
|
||||
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=extract'>Extract</a>"
|
||||
if(G.mutability_flags & PLANT_GENE_REMOVABLE)
|
||||
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=remove'>Remove</a>"
|
||||
dat += "</td></tr>"
|
||||
dat += "</table>"
|
||||
else
|
||||
dat += "No content-related genes detected in sample.<br>"
|
||||
dat += "</div>"
|
||||
if(can_insert && istype(disk.gene, /datum/plant_gene/reagent))
|
||||
dat += "<a href='?src=[REF(src)];op=insert'>Insert: [disk.gene.get_name()]</a>"
|
||||
|
||||
dat += "<div class='line'><h3>Trait Genes</h3></div><div class='statusDisplay'>"
|
||||
if(trait_genes.len)
|
||||
dat += "<table>"
|
||||
for(var/a in trait_genes)
|
||||
var/datum/plant_gene/G = a
|
||||
dat += "<tr><td width='260px'>[G.get_name()]</td><td>"
|
||||
if(can_extract && G.mutability_flags & PLANT_GENE_GRAFTABLE)
|
||||
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=extract'>Extract</a>"
|
||||
if(G.mutability_flags & PLANT_GENE_REMOVABLE)
|
||||
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=remove'>Remove</a>"
|
||||
dat += "</td></tr>"
|
||||
dat += "</table>"
|
||||
else
|
||||
dat += "No trait-related genes detected in sample.<br>"
|
||||
if(can_insert && istype(disk.gene, /datum/plant_gene/trait))
|
||||
dat += "<a href='?src=[REF(src)];op=insert'>Insert: [disk.gene.get_name()]</a>"
|
||||
dat += "</div>"
|
||||
else
|
||||
dat += "<br>No sample found.<br><span class='highlight'>Please, insert a plant sample to use this device.</span>"
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
|
||||
|
||||
/obj/machinery/plantgenes/Topic(href, list/href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.set_machine(src)
|
||||
|
||||
if(href_list["eject_seed"] && !operation)
|
||||
var/obj/item/I = usr.get_active_held_item()
|
||||
if(istype(I, /obj/item/seeds))
|
||||
if(!usr.transferItemToLoc(I, src))
|
||||
return
|
||||
eject_seed()
|
||||
insert_seed(I)
|
||||
to_chat(usr, "<span class='notice'>You add [I] to the machine.</span>")
|
||||
else
|
||||
eject_seed()
|
||||
else if(href_list["eject_disk"] && !operation)
|
||||
var/obj/item/I = usr.get_active_held_item()
|
||||
if(istype(I, /obj/item/disk/plantgene))
|
||||
if(!usr.transferItemToLoc(I, src))
|
||||
return
|
||||
eject_disk()
|
||||
disk = I
|
||||
to_chat(usr, "<span class='notice'>You add [I] to the machine.</span>")
|
||||
else
|
||||
eject_disk()
|
||||
else if(href_list["op"] == "insert" && disk && disk.gene && seed)
|
||||
if(!operation) // Wait for confirmation
|
||||
operation = "insert"
|
||||
else
|
||||
if(!istype(disk.gene, /datum/plant_gene/core) && disk.gene.can_add(seed))
|
||||
seed.genes += disk.gene.Copy()
|
||||
if(istype(disk.gene, /datum/plant_gene/reagent))
|
||||
seed.reagents_from_genes()
|
||||
update_genes()
|
||||
repaint_seed()
|
||||
operation = ""
|
||||
target = null
|
||||
|
||||
else if(href_list["gene"] && seed)
|
||||
var/datum/plant_gene/G = seed.get_gene(href_list["gene"])
|
||||
if(!G || !href_list["op"] || !(href_list["op"] in list("remove", "extract", "replace")))
|
||||
interact(usr)
|
||||
return
|
||||
|
||||
if(!operation || target != G) // Wait for confirmation
|
||||
target = G
|
||||
operation = href_list["op"]
|
||||
|
||||
else if(operation == href_list["op"] && target == G)
|
||||
switch(href_list["op"])
|
||||
if("remove")
|
||||
if(!istype(G, /datum/plant_gene/core))
|
||||
seed.genes -= G
|
||||
if(istype(G, /datum/plant_gene/reagent))
|
||||
seed.reagents_from_genes()
|
||||
repaint_seed()
|
||||
if("extract")
|
||||
if(disk && !disk.read_only)
|
||||
disk.gene = G
|
||||
if(istype(G, /datum/plant_gene/core))
|
||||
var/datum/plant_gene/core/gene = G
|
||||
if(istype(G, /datum/plant_gene/core/potency))
|
||||
gene.value = min(gene.value, max_potency)
|
||||
else if(istype(G, /datum/plant_gene/core/lifespan))
|
||||
gene.value = min(gene.value, max_endurance) //INTENDED
|
||||
else if(istype(G, /datum/plant_gene/core/endurance))
|
||||
gene.value = min(gene.value, max_endurance)
|
||||
else if(istype(G, /datum/plant_gene/core/production))
|
||||
gene.value = max(gene.value, min_production)
|
||||
else if(istype(G, /datum/plant_gene/core/yield))
|
||||
gene.value = min(gene.value, max_yield)
|
||||
else if(istype(G, /datum/plant_gene/core/weed_rate))
|
||||
gene.value = max(gene.value, min_wrate)
|
||||
else if(istype(G, /datum/plant_gene/core/weed_chance))
|
||||
gene.value = max(gene.value, min_wchance)
|
||||
disk.update_name()
|
||||
qdel(seed)
|
||||
seed = null
|
||||
update_icon()
|
||||
if("replace")
|
||||
if(disk && disk.gene && istype(disk.gene, G.type) && istype(G, /datum/plant_gene/core))
|
||||
seed.genes -= G
|
||||
var/datum/plant_gene/core/C = disk.gene.Copy()
|
||||
seed.genes += C
|
||||
C.apply_stat(seed)
|
||||
repaint_seed()
|
||||
if("insert")
|
||||
if(disk && disk.gene && !istype(disk.gene, /datum/plant_gene/core) && disk.gene.can_add(seed))
|
||||
seed.genes += disk.gene.Copy()
|
||||
if(istype(disk.gene, /datum/plant_gene/reagent))
|
||||
seed.reagents_from_genes()
|
||||
disk.gene.apply_vars(seed)
|
||||
repaint_seed()
|
||||
|
||||
|
||||
update_genes()
|
||||
operation = ""
|
||||
target = null
|
||||
else if(href_list["abort"])
|
||||
operation = ""
|
||||
target = null
|
||||
|
||||
interact(usr)
|
||||
|
||||
/obj/machinery/plantgenes/proc/insert_seed(obj/item/seeds/S)
|
||||
if(!istype(S) || seed)
|
||||
return
|
||||
S.forceMove(src)
|
||||
seed = S
|
||||
update_genes()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/plantgenes/proc/eject_disk()
|
||||
if (disk && !operation)
|
||||
if(Adjacent(usr) && !issiliconoradminghost(usr))
|
||||
if (!usr.put_in_hands(disk))
|
||||
disk.forceMove(drop_location())
|
||||
else
|
||||
disk.forceMove(drop_location())
|
||||
disk = null
|
||||
update_genes()
|
||||
|
||||
/obj/machinery/plantgenes/proc/eject_seed()
|
||||
if (seed && !operation)
|
||||
if(Adjacent(usr) && !issiliconoradminghost(usr))
|
||||
if (!usr.put_in_hands(seed))
|
||||
seed.forceMove(drop_location())
|
||||
else
|
||||
seed.forceMove(drop_location())
|
||||
seed = null
|
||||
update_genes()
|
||||
|
||||
/obj/machinery/plantgenes/proc/update_genes()
|
||||
core_genes = list()
|
||||
reagent_genes = list()
|
||||
trait_genes = list()
|
||||
|
||||
if(seed)
|
||||
var/gene_paths = list(
|
||||
/datum/plant_gene/core/potency,
|
||||
/datum/plant_gene/core/yield,
|
||||
/datum/plant_gene/core/production,
|
||||
/datum/plant_gene/core/endurance,
|
||||
/datum/plant_gene/core/lifespan,
|
||||
/datum/plant_gene/core/weed_rate,
|
||||
/datum/plant_gene/core/weed_chance
|
||||
)
|
||||
for(var/a in gene_paths)
|
||||
core_genes += seed.get_gene(a)
|
||||
|
||||
for(var/datum/plant_gene/reagent/G in seed.genes)
|
||||
reagent_genes += G
|
||||
|
||||
for(var/datum/plant_gene/trait/G in seed.genes)
|
||||
trait_genes += G
|
||||
|
||||
/obj/machinery/plantgenes/proc/repaint_seed()
|
||||
if(!seed)
|
||||
return
|
||||
if(copytext(seed.name, 1, 13) == "experimental")//13 == length("experimental") + 1
|
||||
return // Already modded name and icon
|
||||
seed.name = "experimental " + seed.name
|
||||
seed.icon_state = "seed-x"
|
||||
|
||||
/* Not adding this right now
|
||||
// Gene modder for seed vault ship, built with high tech alien parts.
|
||||
/obj/machinery/plantgenes/seedvault
|
||||
circuit = /obj/item/circuitboard/machine/plantgenes/vault
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
* Plant DNA disk
|
||||
*/
|
||||
|
||||
/obj/item/disk/plantgene
|
||||
name = "plant data disk"
|
||||
desc = "A disk for storing plant genetic data."
|
||||
icon_state = "datadisk_hydro"
|
||||
custom_materials = list(/datum/material/iron=30, /datum/material/glass=10)
|
||||
var/datum/plant_gene/gene
|
||||
var/read_only = 0 //Well, it's still a floppy disk
|
||||
obj_flags = UNIQUE_RENAME
|
||||
|
||||
/obj/item/disk/plantgene/Initialize()
|
||||
. = ..()
|
||||
add_overlay("datadisk_gene")
|
||||
src.pixel_x = rand(-5, 5)
|
||||
src.pixel_y = rand(-5, 5)
|
||||
|
||||
/*
|
||||
/obj/item/disk/plantgene/proc/update_name()
|
||||
if(gene)
|
||||
name = "[gene.get_name()] (plant data disk)"
|
||||
else
|
||||
name = "plant data disk"
|
||||
*/
|
||||
|
||||
/obj/item/disk/plantgene/attack_self(mob/user)
|
||||
read_only = !read_only
|
||||
to_chat(user, "<span class='notice'>You flip the write-protect tab to [src.read_only ? "protected" : "unprotected"].</span>")
|
||||
|
||||
/obj/item/disk/plantgene/examine(mob/user)
|
||||
. = ..()
|
||||
if(gene && (istype(gene, /datum/plant_gene/core/potency)))
|
||||
. += "<span class='notice'>Percent is relative to potency, not maximum volume of the plant.</span>"
|
||||
. += "The write-protect tab is set to [src.read_only ? "protected" : "unprotected"]."
|
||||
@@ -0,0 +1,106 @@
|
||||
/datum/plant_gene
|
||||
mutability_flags = PLANT_GENE_MUTATABLE | PLANT_GENE_GRAFTABLE
|
||||
|
||||
/datum/plant_gene/reagent
|
||||
mutability_flags = PLANT_GENE_REMOVABLE | PLANT_GENE_MUTATABLE | PLANT_GENE_GRAFTABLE
|
||||
|
||||
/*
|
||||
* Returns the formatted name of the plant gene.
|
||||
*
|
||||
* Overridden by the various subtypes of plant genes to format their respective names.
|
||||
*/
|
||||
/datum/plant_gene/get_name()
|
||||
var/formatted_name
|
||||
if(!(mutability_flags & PLANT_GENE_REMOVABLE && mutability_flags & PLANT_GENE_MUTATABLE))
|
||||
if(mutability_flags & PLANT_GENE_REMOVABLE)
|
||||
formatted_name += "Fragile "
|
||||
else if(mutability_flags & PLANT_GENE_MUTATABLE)
|
||||
formatted_name += "Essential "
|
||||
else
|
||||
formatted_name += "Immutable "
|
||||
formatted_name += name
|
||||
return formatted_name
|
||||
|
||||
/datum/plant_gene/proc/apply_vars(obj/item/seeds/S) // currently used for fire resist, can prob. be further refactored
|
||||
return
|
||||
|
||||
// Core plant genes store 5 main variables: lifespan, endurance, production, yield, potency
|
||||
/datum/plant_gene/core
|
||||
var/value
|
||||
|
||||
/datum/plant_gene/core/get_name()
|
||||
return "[name] [value]"
|
||||
|
||||
/datum/plant_gene/core/proc/apply_stat(obj/item/seeds/S)
|
||||
return
|
||||
|
||||
/datum/plant_gene/core/New(i = null)
|
||||
..()
|
||||
if(!isnull(i))
|
||||
value = i
|
||||
|
||||
/datum/plant_gene/core/Copy()
|
||||
var/datum/plant_gene/core/C = ..()
|
||||
C.value = value
|
||||
return C
|
||||
|
||||
/datum/plant_gene/core/can_add(obj/item/seeds/S)
|
||||
if(!..())
|
||||
return FALSE
|
||||
return S.get_gene(src.type)
|
||||
|
||||
/datum/plant_gene/core/lifespan
|
||||
name = "Lifespan"
|
||||
value = 25
|
||||
|
||||
/datum/plant_gene/core/lifespan/apply_stat(obj/item/seeds/S)
|
||||
S.lifespan = value
|
||||
|
||||
/datum/plant_gene/core/endurance
|
||||
name = "Endurance"
|
||||
value = 15
|
||||
|
||||
/datum/plant_gene/core/endurance/apply_stat(obj/item/seeds/S)
|
||||
S.endurance = value
|
||||
|
||||
/datum/plant_gene/core/production
|
||||
name = "Production Speed"
|
||||
value = 6
|
||||
|
||||
/datum/plant_gene/core/production/apply_stat(obj/item/seeds/S)
|
||||
S.production = value
|
||||
|
||||
/datum/plant_gene/core/yield
|
||||
name = "Yield"
|
||||
value = 3
|
||||
|
||||
/datum/plant_gene/core/yield/apply_stat(obj/item/seeds/S)
|
||||
S.yield = value
|
||||
|
||||
/datum/plant_gene/core/potency
|
||||
name = "Potency"
|
||||
value = 10
|
||||
|
||||
/datum/plant_gene/core/potency/apply_stat(obj/item/seeds/S)
|
||||
S.potency = value
|
||||
|
||||
/datum/plant_gene/core/instability
|
||||
name = "Stability"
|
||||
value = 10
|
||||
|
||||
/datum/plant_gene/core/instability/apply_stat(obj/item/seeds/S)
|
||||
S.instability = value
|
||||
|
||||
/datum/plant_gene/core/weed_rate
|
||||
name = "Weed Growth Rate"
|
||||
value = 1
|
||||
|
||||
/datum/plant_gene/core/weed_rate/apply_stat(obj/item/seeds/S)
|
||||
S.weed_rate = value
|
||||
|
||||
/datum/plant_gene/core/weed_chance
|
||||
name = "Weed Vulnerability"
|
||||
value = 5
|
||||
|
||||
/datum/plant_gene/core/weed_chance/apply_stat(obj/item/seeds/S)
|
||||
S.weed_chance = value
|
||||
@@ -1,6 +1,11 @@
|
||||
/datum/job/blueshield
|
||||
exp_required_type_department = EXP_TYPE_SECURITY
|
||||
|
||||
departments_list = list(
|
||||
/datum/job_department/command,
|
||||
)
|
||||
// Making the Blueshield require sec hours, NOT command hours.
|
||||
//Blueshield is also now ONLY command.
|
||||
|
||||
/datum/outfit/job/blueshield
|
||||
id = /obj/item/card/id/advanced/silver
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
/datum/job/nanotrasen_consultant
|
||||
departments_list = list(
|
||||
/datum/job_department/command,
|
||||
)
|
||||
//Making the NT consultant Command, not Central Command.
|
||||
/datum/outfit/job/nanotrasen_consultant
|
||||
id = /obj/item/card/id/advanced/silver
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
/datum/opposing_force_equipment/antagonist_powers
|
||||
category = OPFOR_EQUIPMENT_CATEGORY_ANTAGONIST_POWERS
|
||||
|
||||
// Traitor
|
||||
/datum/opposing_force_equipment/antagonist_powers/uplink
|
||||
item_type = /obj/item/uplink/opfor
|
||||
name = "Syndicate Uplink"
|
||||
description = "An old-school Syndicate uplink without a password and an empty TC account. Perfect for the aspiring operatives."
|
||||
admin_note = "Traitor uplink without telecrystals."
|
||||
|
||||
/datum/opposing_force_equipment/antagonist_powers/tc1
|
||||
item_type = /obj/item/stack/telecrystal
|
||||
name = "1 Raw Telecrystal"
|
||||
description = "A telecrystal in its rawest and purest form; can be utilized on active uplinks to increase their telecrystal count."
|
||||
|
||||
/datum/opposing_force_equipment/antagonist_powers/tc5
|
||||
item_type = /obj/item/stack/telecrystal/five
|
||||
name = "5 Raw Telecrystals"
|
||||
description = "A bunch of telecrystals in their rawest and purest form; can be utilized on active uplinks to increase their telecrystal count."
|
||||
|
||||
/datum/opposing_force_equipment/antagonist_powers/tc20
|
||||
item_type = /obj/item/stack/telecrystal/twenty
|
||||
name = "20 Raw Telecrystals"
|
||||
description = "A bundle of telecrystals in their rawest and purest form; can be utilized on active uplinks to increase their telecrystal count."
|
||||
|
||||
/datum/opposing_force_equipment/antagonist_powers/codeword_manual
|
||||
item_type = /obj/item/codeword_granter
|
||||
name = "Codeword Manual"
|
||||
description = "A one-use manual able to impart knowledge of codewords typically used by members of the Syndicate to identify each other in the field covertly."
|
||||
|
||||
// Changeling
|
||||
/datum/opposing_force_equipment/antagonist_powers/changeling
|
||||
item_type = /obj/item/antag_granter/changeling
|
||||
name = "Changeling Injector"
|
||||
description = "A heavy-duty injector containing a highly infectious virus, turning the user into a \"Changeling\"."
|
||||
admin_note = "Changeling antag granter."
|
||||
|
||||
// Heretic
|
||||
/datum/opposing_force_equipment/antagonist_powers/heretic
|
||||
item_type = /obj/item/antag_granter/heretic
|
||||
name = "Heretical Book"
|
||||
description = "A purple book with an eldritch eye on it, capable of making one into a \"Heretic\", one with the Forgotten Gods."
|
||||
admin_note = "Heretic antag granter."
|
||||
|
||||
// Clock Cultist
|
||||
/datum/opposing_force_equipment/antagonist_powers/clock_cult
|
||||
item_type = /obj/item/antag_granter/clock_cultist
|
||||
name = "Clockwork Contraption"
|
||||
description = "A cogwheel-shaped device of brass, with a glass lens floating, suspended in the center. Capable of making one become a \"Clock Cultist\"."
|
||||
admin_note = "Clockwork Cultist (solo) antag granter."
|
||||
|
||||
// Contractor
|
||||
/datum/opposing_force_equipment/antagonist_powers/contractor
|
||||
name = "Contractor Bundle"
|
||||
item_type = /obj/item/storage/box/syndicate/contract_kit
|
||||
description = "A box containing everything you need to take contracts from the Syndicate. Kidnap people and drop them off at specified locations for rewards in the form of Telecrystals (Usable in the provided uplink) and Contractor Points."
|
||||
admin_note = "This bundle is a pretty large change-up of how a person plays a round, giving them access to a swathe of new gear, in addition to a contractor tablet. This contractor tablet lets them take on objectives to non-lethally kidnap people in exhange for telecrystals, usable in the provided uplink."
|
||||
@@ -0,0 +1,111 @@
|
||||
/obj/item/codeword_granter
|
||||
name = "codeword manual"
|
||||
desc = "A black manual with a red S lovingly inscribed on the cover by only the finest of presses from a factory."
|
||||
icon = 'modular_zubbers/code/modules/opposing_force/icons/items.dmi'
|
||||
icon_state = "codeword_book"
|
||||
/// Number of charges the book has, limits the number of times it can be used.
|
||||
var/charges = 1
|
||||
|
||||
|
||||
/obj/item/codeword_granter/attack_self(mob/living/user)
|
||||
if(!isliving(user))
|
||||
return
|
||||
|
||||
to_chat(user, span_boldannounce("You start skimming through [src], and feel suddenly imparted with the knowledge of the following code words:"))
|
||||
|
||||
user.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_phrase_regex, "blue", src)
|
||||
user.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_response_regex, "red", src)
|
||||
to_chat(user, "<b>Code Phrases</b>: [jointext(GLOB.syndicate_code_phrase, ", ")]")
|
||||
to_chat(user, "<b>Code Responses</b>: [span_red("[jointext(GLOB.syndicate_code_response, ", ")]")]")
|
||||
|
||||
use_charge(user)
|
||||
|
||||
|
||||
/obj/item/codeword_granter/attack(mob/living/attacked_mob, mob/living/user)
|
||||
if(!istype(attacked_mob) || !istype(user))
|
||||
return
|
||||
|
||||
if(attacked_mob == user)
|
||||
attack_self(user)
|
||||
return
|
||||
|
||||
playsound(loc, SFX_PUNCH, 25, TRUE, -1)
|
||||
|
||||
if(attacked_mob.stat == DEAD)
|
||||
attacked_mob.visible_message(span_danger("[user] smacks [attacked_mob]'s lifeless corpse with [src]."), span_userdanger("[user] smacks your lifeless corpse with [src]."), span_hear("You hear smacking."))
|
||||
else
|
||||
attacked_mob.visible_message(span_notice("[user] teaches [attacked_mob] by beating [attacked_mob.p_them()] over the head with [src]!"), span_boldnotice("As [user] hits you with [src], you feel suddenly imparted with the knowledge of some [span_red("specific words")]."), span_hear("You hear smacking."))
|
||||
attacked_mob.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_phrase_regex, "blue", src)
|
||||
attacked_mob.AddComponent(/datum/component/codeword_hearing, GLOB.syndicate_code_response_regex, "red", src)
|
||||
to_chat(attacked_mob, span_boldnotice("You feel suddenly imparted with the knowledge of the following code words:"))
|
||||
to_chat(attacked_mob, "<b>Code Phrases</b>: [span_blue("[jointext(GLOB.syndicate_code_phrase, ", ")]")]")
|
||||
to_chat(attacked_mob, "<b>Code Responses</b>: [span_red("[jointext(GLOB.syndicate_code_response, ", ")]")]")
|
||||
use_charge(user)
|
||||
|
||||
|
||||
/obj/item/codeword_granter/proc/use_charge(mob/user)
|
||||
charges--
|
||||
|
||||
if(!charges)
|
||||
var/turf/src_turf = get_turf(src)
|
||||
src_turf.visible_message(span_warning("The cover and contents of [src] start shifting and changing! It slips out of your hands!"))
|
||||
new /obj/item/book/manual/random(src_turf)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/antag_granter
|
||||
icon = 'modular_zubbers/code/modules/opposing_force/icons/items.dmi'
|
||||
/// What antag datum to give
|
||||
var/antag_datum = /datum/antagonist/traitor
|
||||
/// What to tell the user when they use the granter
|
||||
var/user_message = ""
|
||||
|
||||
|
||||
/obj/item/antag_granter/attack(mob/living/target_mob, mob/living/user, params)
|
||||
. = ..()
|
||||
|
||||
if(target_mob != user) // As long as you're attacking yourself it counts.
|
||||
return
|
||||
attack_self(user)
|
||||
|
||||
|
||||
/obj/item/antag_granter/attack_self(mob/user, modifiers)
|
||||
. = ..()
|
||||
if(!isliving(user) || !user.mind)
|
||||
return FALSE
|
||||
|
||||
to_chat(user, span_notice(user_message))
|
||||
user.mind.add_antag_datum(antag_datum)
|
||||
qdel(src)
|
||||
return TRUE
|
||||
|
||||
/obj/item/antag_granter/changeling
|
||||
name = "viral injector"
|
||||
desc = "A blue injector filled with some viscous, red substance. It has no markings apart from an orange warning stripe near the large needle."
|
||||
icon_state = "changeling_injector"
|
||||
antag_datum = /datum/antagonist/changeling
|
||||
user_message = "As you inject the substance into yourself, you start to feel... <span class='red'><b>better</b></span>."
|
||||
|
||||
|
||||
/obj/item/antag_granter/heretic
|
||||
name = "strange book"
|
||||
desc = "A purple book with a green eye on the cover. You swear it's looking at you...."
|
||||
icon_state = "heretic_granter"
|
||||
antag_datum = /datum/antagonist/heretic
|
||||
user_message = "As you open the book, you see a great flash as <span class='hypnophrase'>the world becomes all the clearer for you</span>."
|
||||
|
||||
/obj/item/antag_granter/clock_cultist
|
||||
name = "brass contraption"
|
||||
desc = "A cogwheel-shaped device of brass, with a glass lens floating, suspended in the center."
|
||||
icon = 'modular_skyrat/modules/clock_cult/icons/clockwork_objects.dmi'
|
||||
icon_state = "vanguard_cogwheel"
|
||||
antag_datum = /datum/antagonist/clock_cultist/solo
|
||||
user_message = "A whirring fills your ears as <span class='brass'>knowledge of His Eminence fills your mind</span>."
|
||||
|
||||
/obj/item/antag_granter/clock_cultist/attack_self(mob/user, modifiers)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return FALSE
|
||||
|
||||
var/obj/item/clockwork/clockwork_slab/slab = new
|
||||
user.put_in_hands(slab, FALSE)
|
||||
|
After Width: | Height: | Size: 550 B |
@@ -0,0 +1,9 @@
|
||||
/datum/design/board/plantgenes
|
||||
name = "Plant Gene Editor Board"
|
||||
desc = "The circuit board for a plant gene editing machine."
|
||||
id = "plantgene"
|
||||
build_path = /obj/item/circuitboard/machine/plantgenes
|
||||
category = list(
|
||||
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
|
||||
@@ -0,0 +1,9 @@
|
||||
/datum/design/diskplantgene
|
||||
name = "Plant Data Disk"
|
||||
desc = "A disk for storing plant genetic data."
|
||||
id = "diskplantgene"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(/datum/material/iron=200, /datum/material/glass = 100)
|
||||
build_path = /obj/item/disk/plantgene
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
|
||||
@@ -0,0 +1,7 @@
|
||||
/datum/techweb_node/botanygene
|
||||
id = "botanygenes"
|
||||
display_name = "Experimental Botanical Engineering"
|
||||
description = "Botanical tools"
|
||||
prereq_ids = list("adv_engi", "biotech")
|
||||
design_ids = list("diskplantgene", "plantgene" )
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 25 KiB |
@@ -0,0 +1,200 @@
|
||||
//" Among Us Promise "
|
||||
//I promise you, in full not part
|
||||
//That Among Us Creatures come first in my heart
|
||||
//Whether it be night or day
|
||||
//A game of Among Us, I'd love to play!
|
||||
//Recite this promise if you would drop everything to play a game of "Among Us" - no matter the costs.
|
||||
|
||||
/mob/living/basic/amoung //default color is red, others are defined below
|
||||
name = "amoung"
|
||||
desc = "What a fascinating and strange little creature. Probably harmless?"
|
||||
icon = 'modular_zubbers/maps/biodome/amoung.dmi'
|
||||
icon_state = "amoung"
|
||||
icon_living = "amoung"
|
||||
icon_dead = "amoung_dead"
|
||||
speed = 1
|
||||
response_help_continuous = "bumps"
|
||||
response_help_simple = "bump"
|
||||
response_disarm_continuous = "pushes aside"
|
||||
response_disarm_simple = "push aside"
|
||||
response_harm_continuous = "attacks"
|
||||
response_harm_simple = "attack"
|
||||
speak_emote = list("communicates")
|
||||
maxHealth = 25
|
||||
health = 25
|
||||
friendly_verb_continuous = "nudges"
|
||||
friendly_verb_simple = "nudge"
|
||||
mob_biotypes = MOB_ORGANIC
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
verb_say = "communicates"
|
||||
verb_ask = "communicates"
|
||||
verb_exclaim = "communicates"
|
||||
verb_yell = "communicates"
|
||||
gender = NEUTER
|
||||
held_items = list(null, null)
|
||||
greyscale_colors = "#ffffff"
|
||||
ai_controller = /datum/ai_controller/basic_controller/amoung
|
||||
// They're wearing space suits
|
||||
unsuitable_atmos_damage = 0
|
||||
unsuitable_cold_damage = 0
|
||||
unsuitable_heat_damage = 0
|
||||
/// List of possible amongus colours.
|
||||
var/static/list/amoung_colors = list(
|
||||
"red" = "#ff0033",
|
||||
"blue" = "#3366ff",
|
||||
"green" = "#10802d",
|
||||
"pink" = "#ee55ba",
|
||||
"yellow" = "#e9ea53",
|
||||
"black" = "#3f484e",
|
||||
"white" = "#d6e1f0",
|
||||
"purple" = "#6b30bc",
|
||||
"brown" = "#72491e",
|
||||
"cyan" = "#39e2dd",
|
||||
"lime" = "#50f038"
|
||||
)
|
||||
|
||||
/datum/ai_controller/basic_controller/amoung
|
||||
ai_traits = STOP_MOVING_WHEN_PULLED
|
||||
ai_movement = /datum/ai_movement/basic_avoidance
|
||||
idle_behavior = /datum/idle_behavior/idle_random_walk
|
||||
|
||||
/mob/living/basic/amoung/Initialize(mapload)
|
||||
. = ..()
|
||||
random_colour()
|
||||
set_greyscale(new_config=/datum/greyscale_config/amoung)
|
||||
ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT)
|
||||
AddElement(/datum/element/footstep, FOOTSTEP_MOB_SHOE)
|
||||
|
||||
///picks a random colour for our amoung
|
||||
/mob/living/basic/amoung/proc/random_colour()
|
||||
var/our_color = pick(amoung_colors)
|
||||
set_greyscale(colors=list(amoung_colors[our_color]))
|
||||
|
||||
/mob/living/basic/amoung/bee_friendly()
|
||||
return TRUE //why not lol
|
||||
|
||||
//amoung pequeño amoung pequeño amoung pequeño amoung pequeño amoung pequeño
|
||||
//amoung pequeño amoung pequeño amoung pequeño amoung pequeño amoung pequeño
|
||||
|
||||
/mob/living/basic/amoung/pequeno
|
||||
name = "amoung pequeño"
|
||||
desc = "What a sooooo small creature. Probably harmless?"
|
||||
icon_state = "amoung_pequeno"
|
||||
icon_living = "amoung_pequeno"
|
||||
icon_dead = "amoung_pequeno_dead"
|
||||
|
||||
/mob/living/basic/amoung/pequeno/Initialize(mapload)
|
||||
. = ..()
|
||||
set_greyscale(new_config=/datum/greyscale_config/amoung_pequeno)
|
||||
|
||||
// corpse spawners, you monster
|
||||
|
||||
/obj/effect/mob_spawn/corpse/amoung
|
||||
mob_type = /mob/living/basic/amoung
|
||||
|
||||
/obj/effect/mob_spawn/corpse/amoung/pequeno
|
||||
mob_type = /mob/living/basic/amoung/pequeno
|
||||
|
||||
// amoung... surgeon??
|
||||
// Can probably be replaced when I do my future 'among us content expansion', if that ever happens
|
||||
|
||||
/mob/living/basic/cat_butcherer/Initialize(mapload)
|
||||
. = ..()
|
||||
new /mob/living/basic/amoung/surgeon(loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
/mob/living/basic/amoung/surgeon
|
||||
name = "suspicious surgeon"
|
||||
desc = "Hey! What's this guy up to?"
|
||||
icon = 'modular_zubbers/maps/biodome/amoung.dmi'
|
||||
icon_state = "amoung"
|
||||
icon_living = "amoung"
|
||||
icon_dead = "amoung_dead"
|
||||
basic_mob_flags = DEL_ON_DEATH
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
verb_say = "purrs"
|
||||
verb_ask = "purrs"
|
||||
verb_exclaim = "loudly purrs"
|
||||
verb_yell = "loudly purrs"
|
||||
speak_emote = list("purrs", "meows")
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
attack_verb_continuous = "slashes at"
|
||||
attack_verb_simple = "slash at"
|
||||
attack_sound = 'sound/weapons/circsawhit.ogg'
|
||||
combat_mode = TRUE
|
||||
mob_biotypes = MOB_ORGANIC
|
||||
sentience_type = SENTIENCE_HUMANOID
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
faction = list("hostile")
|
||||
status_flags = CANPUSH
|
||||
ai_controller = /datum/ai_controller/basic_controller/amoung/hostile
|
||||
|
||||
/mob/living/basic/amoung/surgeon/random_colour()
|
||||
set_greyscale(colors=list(amoung_colors["white"]))
|
||||
|
||||
// Shock twist!
|
||||
/mob/living/basic/amoung/surgeon/death(gibbed)
|
||||
var/obj/effect/particle_effect/fluid/smoke/poof = new(get_turf(src))
|
||||
poof.lifetime = 2 SECONDS
|
||||
do_sparks(3, TRUE, src)
|
||||
visible_message(span_notice("[src] collapses to the ground! ...and something crawls out of its empty suit?"))
|
||||
|
||||
new /obj/item/stack/cable_coil(loc)
|
||||
new /obj/item/stack/sheet/cloth(loc)
|
||||
new /obj/item/stock_parts/servo(loc)
|
||||
new /obj/item/circular_saw(loc)
|
||||
var/mob/living/simple_animal/pet/cat/kitten/surgeon = new(loc)
|
||||
surgeon.name = "suspicious kitten"
|
||||
surgeon.desc = "You don't think this cat was... no... it couldn't be, could it?"
|
||||
..(TRUE)
|
||||
|
||||
/datum/ai_controller/basic_controller/amoung/hostile
|
||||
ai_traits = STOP_MOVING_WHEN_PULLED
|
||||
ai_movement = /datum/ai_movement/basic_avoidance
|
||||
idle_behavior = /datum/idle_behavior/idle_random_walk
|
||||
|
||||
/datum/ai_controller/basic_controller/amoung/hostile
|
||||
blackboard = list(
|
||||
BB_TARGETTING_DATUM = new /datum/targetting_datum/basic()
|
||||
)
|
||||
|
||||
ai_movement = /datum/ai_movement/basic_avoidance
|
||||
idle_behavior = /datum/idle_behavior/idle_random_walk
|
||||
planning_subtrees = list(
|
||||
/datum/ai_planning_subtree/simple_find_target,
|
||||
/datum/ai_planning_subtree/attack_obstacle_in_path/carp, // Can't be bothered to change the subtype, it has the right cooldown
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree/amoung/surgeon
|
||||
)
|
||||
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree/amoung/surgeon
|
||||
melee_attack_behavior = /datum/ai_behavior/basic_melee_attack/amoung/surgeon
|
||||
|
||||
/datum/ai_behavior/basic_melee_attack/amoung/surgeon
|
||||
action_cooldown = 1.5 SECONDS
|
||||
|
||||
/datum/ai_behavior/basic_melee_attack/amoung/surgeon/perform(delta_time, datum/ai_controller/controller, target_key, targetting_datum_key, hiding_location_key)
|
||||
|
||||
var/mob/living/basic/surgeon = controller.pawn
|
||||
var/datum/weakref/weak_target = controller.blackboard[target_key]
|
||||
var/atom/target = weak_target?.resolve()
|
||||
var/datum/targetting_datum/targetting_datum = controller.blackboard[targetting_datum_key]
|
||||
|
||||
if(!targetting_datum.can_attack(surgeon, target))
|
||||
return
|
||||
if (!prob(35))
|
||||
return
|
||||
surgeon.say(pick(list("Meow!", "Esp!", "Purr!", "HSSSSS")))
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/greyscale_config/amoung
|
||||
name = "Amoung"
|
||||
icon_file = 'modular_zubbers/maps/biodome/amoung.dmi'
|
||||
json_config = 'code/datums/greyscale/json_configs/amoung.json'
|
||||
|
||||
/datum/greyscale_config/amoung_pequeno
|
||||
name = "Amoung Pequeno"
|
||||
icon_file = 'modular_zubbers/maps/biodome/amoung.dmi'
|
||||
json_config = 'code/datums/greyscale/json_configs/amoung_pequeno.json'
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,12 @@
|
||||
/area/station/biodome
|
||||
name = "\improper Station Biodome"
|
||||
icon = 'modular_zubbers/maps/biodome/area.dmi'
|
||||
icon_state = "biodome"
|
||||
|
||||
/area/station/biodome/aft
|
||||
name = "\improper Station Biodome Aft"
|
||||
icon_state = "biodome_aft"
|
||||
|
||||
/area/station/biodome/fore
|
||||
name = "\improper Station Biodome Fore"
|
||||
icon_state = "biodome_fore"
|
||||
|
After Width: | Height: | Size: 755 B |
@@ -0,0 +1,98 @@
|
||||
/obj/effect/spawner/random/food_or_drink/island_booze
|
||||
name = "island booze spawner"
|
||||
icon_state = "beer"
|
||||
loot = list(
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/agua_fresca = 1,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/bahama_mama = 2,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/cuba_libre = 2,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/iced_tea = 4,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/long_island_iced_tea = 2,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/long_john_silver = 2,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/margarita = 3,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/mauna_loa = 1,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/painkiller = 2,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada = 4,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/salt_and_swell = 2,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/sea_breeze = 3,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/tequila_sunrise = 3,
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/tropical_storm = 2,
|
||||
)
|
||||
|
||||
//filled drinks to populate the spawner with (these are here because they aren't used anywhere else)
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/agua_fresca
|
||||
name = "Agua Fresca"
|
||||
list_reagents = list(/datum/reagent/consumable/agua_fresca = 30)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/bahama_mama
|
||||
name = "Bahama Mama"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/bahama_mama = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/cuba_libre
|
||||
name = "Cuba Libre"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/cuba_libre = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/iced_tea
|
||||
name = "Iced Tea"
|
||||
list_reagents = list(/datum/reagent/consumable/icetea = 50)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/long_island_iced_tea
|
||||
name = "Long Island Iced Tea"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/longislandicedtea = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/long_john_silver
|
||||
name = "Long John Silver"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/long_john_silver = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/margarita
|
||||
name = "Margarita"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/margarita = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/mauna_loa
|
||||
name = "Mauna Loa"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/mauna_loa = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/painkiller
|
||||
name = "Painkiller"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/painkiller = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada
|
||||
name = "Pina Colada"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/pina_colada = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/salt_and_swell
|
||||
name = "Salt and Swell"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/salt_and_swell = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/sea_breeze
|
||||
name = "Sea Breeze"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/sea_breeze = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/tequila_sunrise
|
||||
name = "Tequila Sunrise"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/tequila_sunrise = 25)
|
||||
|
||||
/obj/item/reagent_containers/cup/glass/drinkingglass/filled/tropical_storm
|
||||
name = "Tropical Storm"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/tropical_storm = 25)
|
||||
|
||||
/obj/effect/spawner/random/clothing/island_time
|
||||
name = "island time clothing spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/suit/costume/hawaiian = 4,
|
||||
/obj/item/clothing/glasses/sunglasses/cheap = 3,
|
||||
/obj/item/clothing/shoes/sandal = 3,
|
||||
/obj/item/clothing/head/costume/scarecrow_hat = 2,
|
||||
/obj/item/clothing/under/dress/tango = 1,
|
||||
/obj/item/clothing/under/dress/sundress = 1,
|
||||
/obj/item/clothing/under/shorts/red = 1,
|
||||
/obj/item/clothing/under/shorts/green = 1,
|
||||
/obj/item/clothing/under/shorts/blue = 1,
|
||||
/obj/item/clothing/under/shorts/black = 1,
|
||||
/obj/item/clothing/under/shorts/purple = 1,
|
||||
)
|
||||
|
||||
//Because sunglasses of all things are a powerful and rare item, here's some cheap ones that don't do anything
|
||||
/obj/item/clothing/glasses/sunglasses/cheap
|
||||
name = "cheap sunglasses"
|
||||
desc = "Cheap plastic eye lenses to protect you from harsh sunlight. These flimsy ones won't help against flashes."
|
||||
flash_protect = FLASH_PROTECTION_NONE
|
||||
@@ -0,0 +1,16 @@
|
||||
/obj/structure/holosign/barrier/atmos/leaf
|
||||
name = "leaf atmos barrier"
|
||||
max_integrity = 150
|
||||
icon = 'modular_zubbers/maps/biodome/holo_leaves.dmi'
|
||||
icon_state = "holo_leaves"
|
||||
|
||||
/obj/structure/plaque/static_plaque/golden/commission/biodome
|
||||
desc = "Spinward Sector Station SS-13\n'Biodome' Class Outpost \nCommissioned 18/02/2563\n'Walk In The Park'"
|
||||
|
||||
/obj/structure/fake_eggs
|
||||
name = "egg cluster"
|
||||
desc = "These imitation eggs put the pen inhabitants at ease."
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "eggs"
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
|
After Width: | Height: | Size: 339 B |
|
After Width: | Height: | Size: 894 B |
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,27 @@
|
||||
/obj/item/book/granter/magazine/
|
||||
icon = 'modular_zubbers/maps/biodome/magazine.dmi'
|
||||
icon_state = "mothboys"
|
||||
|
||||
//Flavor item for the Biodome arrivals shuttle, but I think it's funny if it still appears elsewhere.
|
||||
/obj/item/book/granter/magazine/biodome
|
||||
name = "NanoTrasen 'Biodome' Travel Brochure"
|
||||
starting_title = "NanoTrasen 'Biodome' Travel Brochure"
|
||||
desc = "A somewhat tacky brochure for NanoTrasen's new line of 'Biodome'-class stations."
|
||||
icon_state = "biochure"
|
||||
pages_to_mastery = 2 //so you can see a few remarks each time
|
||||
remarks = list(
|
||||
"Now with live, open-air entertainment (entertainment is still largely clown-based)...",
|
||||
"See the dome in style with our new 'BioTube' transit system...",
|
||||
"Get all the tools you could ever need from 'The Grotto'... but watch your step! (NanoTrasen is not liable for injuries related to use of The Grotto(tm).)",
|
||||
"Take a calming river ride across the scenic Biodome Lake! (Minimum speed 70 kph).",
|
||||
"Research in style in our state-of-the-art 'VapoRnDwave' facilities!",
|
||||
"See such exciting zoo exhibits as axolotls, endangered lagomorphs, or even the rare Amoungs!",
|
||||
"Note: due to construction expenses, transfers to 'Biodome'-class stations currently comes with a 20% pay cut...",
|
||||
"Too warm? Take a trip to the wintery medical bay, kept at a bracing 62 degrees Fahrenheit (17 C) at all times...",
|
||||
"All employee breakrooms equipped with cozy fireplaces (fuel supplies minimal to prevent smoke inhalation)...",
|
||||
"There is nothing behind the walls.",
|
||||
"The captain can always watch over you with our new, patented 'OverBridge' design! Give them a wave!",
|
||||
"Climbing across the rooftops is strictly prohibited...",
|
||||
"Maybe you COULD use a vacation...",
|
||||
)
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/mob/living/basic/carp/pet/biodome
|
||||
gender = MALE
|
||||
faction = list(FACTION_NEUTRAL)
|
||||
|
||||
/mob/living/basic/carp/pet/biodome/funfun
|
||||
name = "Fun-Fun"
|
||||
desc = "This carp has been created as a decoration in the biodome. You feel you should love him and believe him."
|
||||
|
||||
/mob/living/basic/carp/pet/biodome/fangfang
|
||||
name = "Fang-Fang"
|
||||
desc = "This carp has been created as a decoration in the biodome. You feel you should come and see him."
|
||||
|
||||
/mob/living/basic/rabbit/trefoil
|
||||
name = "Trefoil"
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
desc = "This rabbit is always planning elaborate set pieces for their newest act."
|
||||
|
||||
/mob/living/basic/creature/docile
|
||||
desc = "A moving lump of animated viscera which current science cannot yet explain."
|
||||
ai_controller = /datum/ai_controller/basic_controller/creature/docile
|
||||
|
||||
/mob/living/basic/creature/docile/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/sedated_mob, /datum/ai_controller/basic_controller/creature)
|
||||
|
||||
/datum/ai_controller/basic_controller/creature/docile
|
||||
planning_subtrees = list()
|
||||
@@ -0,0 +1,2 @@
|
||||
/obj/modular_map_root/biodome
|
||||
config_file = "strings/modular_maps/biodome.toml"
|
||||
@@ -0,0 +1,8 @@
|
||||
/obj/structure/cable/multilayer/multiz/cable_1
|
||||
cable_layer = CABLE_LAYER_1
|
||||
|
||||
/obj/structure/cable/multilayer/multiz/cable_2
|
||||
cable_layer = CABLE_LAYER_2
|
||||
|
||||
/obj/structure/cable/multilayer/multiz/cable_3
|
||||
cable_layer = CABLE_LAYER_2
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
/obj/item/sign/set_sign_type(obj/structure/sign/fake_type)
|
||||
. = ..()
|
||||
icon = initial(fake_type.icon)
|
||||
|
||||
/obj/structure/sign/flag/pride
|
||||
name = "flag of Gay Pride"
|
||||
desc = "The flag of Gay Pride. Hang that rainbow up with pride!"
|
||||
icon = 'modular_zubbers/maps/biodome/pride_flags.dmi'
|
||||
icon_state = "flag_pride"
|
||||
is_editable = TRUE
|
||||
sign_change_name = "Pride Flag - Rainbow"
|
||||
|
||||
/obj/structure/sign/flag/pride/ace
|
||||
name = "flag of Asexual Pride"
|
||||
desc = "The flag of Asexual Pride."
|
||||
icon_state = "flag_ace"
|
||||
sign_change_name = "Pride Flag - Asexual"
|
||||
|
||||
/obj/structure/sign/flag/pride/bi
|
||||
name = "flag of Bisexual Pride"
|
||||
desc = "The flag of Bisexual Pride."
|
||||
icon_state = "flag_bi"
|
||||
sign_change_name = "Pride Flag - Bisexual"
|
||||
|
||||
/obj/structure/sign/flag/pride/lesbian
|
||||
name = "flag of Lesbian Pride"
|
||||
desc = "The flag of Lesbian Pride."
|
||||
icon_state = "flag_lesbian"
|
||||
sign_change_name = "Pride Flag - Lesbian"
|
||||
|
||||
/obj/structure/sign/flag/pride/pan
|
||||
name = "flag of Pansexual Pride"
|
||||
desc = "The flag of Pansexual Pride."
|
||||
icon_state = "flag_pan"
|
||||
sign_change_name = "Pride Flag - Pansexual"
|
||||
|
||||
/obj/structure/sign/flag/pride/trans
|
||||
name = "flag of Transgender Pride"
|
||||
desc = "The flag of Transgender Pride."
|
||||
icon_state = "flag_trans"
|
||||
sign_change_name = "Pride Flag - Transgender"
|
||||
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Attached to a mob with an AI controller, if this mob is attacked then it will replace the AI controller.
|
||||
*/
|
||||
/datum/element/sedated_mob
|
||||
element_flags = ELEMENT_BESPOKE
|
||||
argument_hash_start_idx = 2
|
||||
/// The AI controller used when we wake up
|
||||
var/awake_controller
|
||||
|
||||
/datum/element/sedated_mob/Attach(datum/target, awake_controller)
|
||||
. = ..()
|
||||
if(!ismob(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
|
||||
src.awake_controller = awake_controller
|
||||
target.AddElement(/datum/element/relay_attackers)
|
||||
RegisterSignal(target, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(on_attacked))
|
||||
|
||||
/datum/element/sedated_mob/Detach(datum/source, ...)
|
||||
. = ..()
|
||||
UnregisterSignal(source, COMSIG_ATOM_WAS_ATTACKED)
|
||||
|
||||
/// Add an attacking atom to a blackboard list of things which attacked us
|
||||
/datum/element/sedated_mob/proc/on_attacked(mob/victim, atom/attacker)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if (!victim.ai_controller || victim.stat == DEAD)
|
||||
return
|
||||
victim.balloon_alert_to_viewers("looks upset")
|
||||
victim.ai_controller = new awake_controller(victim)
|
||||
victim.RemoveElement(/datum/element/sedated_mob, awake_controller)
|
||||
@@ -0,0 +1,7 @@
|
||||
/datum/map_template/shuttle/cargo/biodome
|
||||
suffix = "biodome"
|
||||
name = "cargo ferry (Biodome)"
|
||||
|
||||
/datum/map_template/shuttle/arrival/biodome
|
||||
suffix = "biodome"
|
||||
name = "arrival shuttle (Biodome)"
|
||||
@@ -0,0 +1,50 @@
|
||||
#define TRAM_BOAT "tram_boat"
|
||||
#define TRAM_BOAT_FORE "tram_boat_fore"
|
||||
#define TRAM_BOAT_CENTRAL "tram_boat_central"
|
||||
#define TRAM_BOAT_AFT "tram_boat_aft"
|
||||
|
||||
/obj/effect/landmark/lift_id/boat
|
||||
specific_lift_id = TRAM_BOAT
|
||||
|
||||
/obj/machinery/computer/tram_controls/boat
|
||||
specific_lift_id = TRAM_BOAT
|
||||
|
||||
/obj/effect/landmark/tram/boat/fore
|
||||
name = "Fore Boat Dock"
|
||||
specific_lift_id = TRAM_BOAT
|
||||
platform_code = TRAM_BOAT_FORE
|
||||
tgui_icons = list("Departures" = "plane-departure", "Science" = "flask")
|
||||
|
||||
/obj/effect/landmark/tram/boat/middle
|
||||
name = "Central Boat Dock"
|
||||
specific_lift_id = TRAM_BOAT
|
||||
platform_code = TRAM_BOAT_CENTRAL
|
||||
tgui_icons = list("Cargo" = "box")
|
||||
|
||||
/obj/effect/landmark/tram/boat/aft
|
||||
name = "Aft Boat Dock"
|
||||
specific_lift_id = TRAM_BOAT
|
||||
platform_code = TRAM_BOAT_AFT
|
||||
tgui_icons = list("Command" = "bullhorn")
|
||||
|
||||
/obj/structure/sign/collision_counter/boat
|
||||
name = "boating incident counter"
|
||||
desc = "A display that indicates how many boat related incidents have occured today."
|
||||
sign_change_name = "Indicator board- Boating incidents"
|
||||
|
||||
/obj/machinery/button/tram/boat/fore
|
||||
id = TRAM_BOAT_FORE
|
||||
lift_id = TRAM_BOAT
|
||||
|
||||
/obj/machinery/button/tram/boat/middle
|
||||
id = TRAM_BOAT_CENTRAL
|
||||
lift_id = TRAM_BOAT
|
||||
|
||||
/obj/machinery/button/tram/boat/aft
|
||||
id = TRAM_BOAT_AFT
|
||||
lift_id = TRAM_BOAT
|
||||
|
||||
#undef TRAM_BOAT
|
||||
#undef TRAM_BOAT_AFT
|
||||
#undef TRAM_BOAT_CENTRAL
|
||||
#undef TRAM_BOAT_FORE
|
||||
@@ -0,0 +1,55 @@
|
||||
/turf/closed/wall/r_wall/fakewood
|
||||
desc = "A huge chunk of reinforced metal used to separate rooms. This one has been painted like a log."
|
||||
color = COLOR_ORANGE_BROWN
|
||||
|
||||
/turf/open/water/jungle/biodome
|
||||
name="Biodome Lake"
|
||||
|
||||
/turf/open/water/jungle/biodome/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/lazy_fishing_spot, FISHING_SPOT_PRESET_BEACH)
|
||||
|
||||
/turf/open/misc/ashplanet/wateryrock/biodome
|
||||
name="Biodome Lake Rocks"
|
||||
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
|
||||
|
||||
/turf/open/lava/plasma/biodome
|
||||
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
|
||||
baseturfs = /turf/open/lava/plasma/biodome
|
||||
|
||||
/turf/open/floor/fake_iron_sand
|
||||
desc = "Wait a minute. This martian soil is just painted on!"
|
||||
icon_state = "ironsand1"
|
||||
base_icon_state = "ironsand1"
|
||||
footstep = FOOTSTEP_SAND
|
||||
barefootstep = FOOTSTEP_SAND
|
||||
clawfootstep = FOOTSTEP_SAND
|
||||
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
|
||||
|
||||
/turf/open/floor/fake_iron_sand/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = "ironsand[rand(1,15)]"
|
||||
|
||||
/turf/open/floor/fake_iron_sand/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
|
||||
return
|
||||
|
||||
/turf/open/floor/fake_iron_sand/crowbar_act(mob/living/user, obj/item/I)
|
||||
return
|
||||
|
||||
|
||||
/turf/open/floor/fake_snow/safe
|
||||
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
|
||||
slowdown = 0
|
||||
|
||||
/turf/open/floor/wood/stairs
|
||||
icon = 'modular_zubbers/maps/biodome/floor.dmi'
|
||||
icon_state = "woodstairs_up"
|
||||
|
||||
/turf/open/floor/wood/stairs/down
|
||||
icon_state = "woodstairs_down"
|
||||
|
||||
/turf/open/floor/wood/stairs/left
|
||||
icon_state = "woodstairs_left"
|
||||
|
||||
/turf/open/floor/wood/stairs/right
|
||||
icon_state = "woodstairs_right"
|
||||
@@ -0,0 +1,33 @@
|
||||
/obj/machinery/vending/vendcation
|
||||
name = "VendCation"
|
||||
desc = "A vending machine for when you really wish you weren't at work right now."
|
||||
icon = 'modular_zubbers/maps/biodome/vending.dmi'
|
||||
icon_state = "vacation"
|
||||
icon_deny = "vacation-deny"
|
||||
panel_type = "panel15"
|
||||
product_slogans = "It's always island time!;Kick up your feet!;Feel the sun!;Don't forget sunscreen!"
|
||||
vend_reply = "Take it easy!"
|
||||
products = list(
|
||||
/obj/item/clothing/under/shorts/red = 2,
|
||||
/obj/item/clothing/under/shorts/green = 2,
|
||||
/obj/item/clothing/under/shorts/blue = 2,
|
||||
/obj/item/clothing/under/shorts/black = 2,
|
||||
/obj/item/clothing/under/shorts/purple = 2,
|
||||
/obj/item/clothing/under/dress/sundress = 2,
|
||||
/obj/item/clothing/under/dress/tango = 2,
|
||||
/obj/item/clothing/suit/costume/hawaiian = 4,
|
||||
/obj/item/clothing/glasses/sunglasses/cheap = 4,
|
||||
/obj/item/clothing/shoes/sandal = 4,
|
||||
/obj/item/clothing/head/costume/scarecrow_hat = 2,
|
||||
/obj/item/toy/beach_ball/branded = 4,
|
||||
)
|
||||
refill_canister = /obj/item/vending_refill/vacation
|
||||
default_price = PAYCHECK_CREW * 0.7
|
||||
extra_price = PAYCHECK_COMMAND
|
||||
payment_department = NO_FREEBIES
|
||||
// light_mask = "wardrobe-light-mask"
|
||||
light_color = LIGHT_COLOR_ELECTRIC_CYAN
|
||||
|
||||
/obj/item/vending_refill/vacation
|
||||
machine_name = "VendCation"
|
||||
icon_state = "refill_clothes"
|
||||
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,28 @@
|
||||
/obj/item/melee/fakebeesword
|
||||
name = "The Stinger"
|
||||
desc = "A cheap replica of The Stinger. It isn't nearly as powerful, no wonder it's wielder died."
|
||||
icon = 'icons/obj/weapons/sword.dmi'
|
||||
icon_state = "beesword"
|
||||
inhand_icon_state = "stinger"
|
||||
worn_icon_state = "stinger"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
force = 5
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
sharpness = SHARP_EDGED
|
||||
throwforce = 10
|
||||
attack_speed = CLICK_CD_RAPID
|
||||
block_chance = 20
|
||||
armour_penetration = 65
|
||||
attack_verb_continuous = list("slashes", "stings", "prickles", "pokes")
|
||||
attack_verb_simple = list("slash", "sting", "prickle", "poke")
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
|
||||
/obj/item/melee/fakebeesword/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/carbon_target = target
|
||||
carbon_target.reagents.add_reagent(/datum/reagent/toxin/bad_food, 1)
|
||||
@@ -0,0 +1,13 @@
|
||||
directory = "_maps/map_files/biodome/modules/"
|
||||
|
||||
[rooms.cage_1]
|
||||
modules = ["cage_1_axolotl.dmm", "cage_1_creature.dmm"]
|
||||
|
||||
[rooms.cage_2]
|
||||
modules = ["cage_2_amoung.dmm", "cage_2_ghost.dmm"]
|
||||
|
||||
[rooms.cage_3]
|
||||
modules = ["cage_3_rabbit.dmm", "cage_3_gnome.dmm"]
|
||||
|
||||
[rooms.cage_4]
|
||||
modules = ["cage_4_cockroach.dmm", "cage_4_spider.dmm"]
|
||||
@@ -417,6 +417,7 @@
|
||||
#include "code\__DEFINES\~skyrat_defines\_HELPERS\offset_index.dm"
|
||||
#include "code\__DEFINES\~~bubber_defines\access.dm"
|
||||
#include "code\__DEFINES\~~bubber_defines\jobs.dm"
|
||||
#include "code\__DEFINES\~~bubber_defines\opposing_force_defines.dm"
|
||||
#include "code\__DEFINES\~~bubber_defines\quirk_whitelist.dm"
|
||||
#include "code\__DEFINES\~~bubber_defines\species.dm"
|
||||
#include "code\__DEFINES\~~bubber_defines\status_indicator_defines.dm"
|
||||
@@ -7160,7 +7161,9 @@
|
||||
#include "modular_zubbers\code\game\objects\items\plushes.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\reshirevolver.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\circuitboards\computer_circuitboards.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\circuitboards\machine_circuitboards.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\food\misc.dm"
|
||||
#include "modular_zubbers\code\game\objects\items\storage\boxes.dm"
|
||||
#include "modular_zubbers\code\modules\_defines.dm"
|
||||
#include "modular_zubbers\code\modules\admin\verbs\debug.dm"
|
||||
#include "modular_zubbers\code\modules\asset_cache\assets\arcade.dm"
|
||||
@@ -7184,6 +7187,8 @@
|
||||
#include "modular_zubbers\code\modules\dynamic\midround_rulesets.dm"
|
||||
#include "modular_zubbers\code\modules\fluff\flora\ash_flora.dm"
|
||||
#include "modular_zubbers\code\modules\food_and_drinks\recipes\tablecraft\recipes_seafood.dm"
|
||||
#include "modular_zubbers\code\modules\hydroponics\gene_modder.dm"
|
||||
#include "modular_zubbers\code\modules\hydroponics\plant_genes.dm"
|
||||
#include "modular_zubbers\code\modules\jobs\job_types\blacksmith.dm"
|
||||
#include "modular_zubbers\code\modules\jobs\job_types\blueshield.dm"
|
||||
#include "modular_zubbers\code\modules\jobs\job_types\nanotrasen_consultant.dm"
|
||||
@@ -7208,13 +7213,32 @@
|
||||
#include "modular_zubbers\code\modules\mod\mod_theme.dm"
|
||||
#include "modular_zubbers\code\modules\mod\mod_types.dm"
|
||||
#include "modular_zubbers\code\modules\modular_computers\file_system\programs\minesweeper.dm"
|
||||
#include "modular_zubbers\code\modules\opposing_force\code\items.dm"
|
||||
#include "modular_zubbers\code\modules\opposing_force\code\equipment\antagonist_powers.dm"
|
||||
#include "modular_zubbers\code\modules\pai\ghost_pai.dm"
|
||||
#include "modular_zubbers\code\modules\paperwork\fax.dm"
|
||||
#include "modular_zubbers\code\modules\projectiles\guns\energy\pulse.dm"
|
||||
#include "modular_zubbers\code\modules\research\designs\comp_board_designs.dm"
|
||||
#include "modular_zubbers\code\modules\research\designs\machine_board_designs.dm"
|
||||
#include "modular_zubbers\code\modules\research\designs\medical_designs.dm"
|
||||
#include "modular_zubbers\code\modules\status_indicators\status_indicator.dm"
|
||||
#include "modular_zubbers\code\modules\status_indicators\status_indicator_pref.dm"
|
||||
#include "modular_zubbers\code\modules\surgery\bodyparts\species_parts\misc_bodyparts.dm"
|
||||
#include "modular_zubbers\code\modules\vending\wardrobe.dm"
|
||||
#include "modular_zubbers\maps\biodome\amoung.dm"
|
||||
#include "modular_zubbers\maps\biodome\area.dm"
|
||||
#include "modular_zubbers\maps\biodome\beach.dm"
|
||||
#include "modular_zubbers\maps\biodome\decoration.dm"
|
||||
#include "modular_zubbers\maps\biodome\magazines.dm"
|
||||
#include "modular_zubbers\maps\biodome\misc.dm"
|
||||
#include "modular_zubbers\maps\biodome\mobs.dm"
|
||||
#include "modular_zubbers\maps\biodome\modular_map.dm"
|
||||
#include "modular_zubbers\maps\biodome\power.dm"
|
||||
#include "modular_zubbers\maps\biodome\pride_flags.dm"
|
||||
#include "modular_zubbers\maps\biodome\sedated_mob.dm"
|
||||
#include "modular_zubbers\maps\biodome\shuttles.dm"
|
||||
#include "modular_zubbers\maps\biodome\tram.dm"
|
||||
#include "modular_zubbers\maps\biodome\turfs.dm"
|
||||
#include "modular_zubbers\maps\biodome\vendcation.dm"
|
||||
#include "modular_zubbers\maps\biodome\weapons.dm"
|
||||
// END_INCLUDE
|
||||
|
||||