Merge branch 'master' into Maintenance-Loot-Overhaul

This commit is contained in:
BurgerLUA
2023-07-02 05:58:00 -07:00
committed by GitHub
82 changed files with 196937 additions and 28 deletions
+1 -1
View File
@@ -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
},
+3
View File
@@ -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"
+32
View File
@@ -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"
}
}
}
File diff suppressed because it is too large Load Diff
@@ -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.
+505
View File
@@ -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
"}
+234
View File
@@ -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"
-1
View File
@@ -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.
*
+12
View File
@@ -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,
+1 -1
View File
@@ -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.
+4
View File
@@ -58,3 +58,7 @@ endmap
map voidraptor
votable
endmap
map biodome
votable
endmap
+4
View File
@@ -0,0 +1,4 @@
author: "INKVD"
delete-after: True
changes:
- rscadd: "Plant Gene Editor readded."
+4
View File
@@ -0,0 +1,4 @@
author: "Icarus-The-Sun"
delete-after: True
changes:
- rscdel: "Removes Hemophage's Virus Immunity."
+4
View File
@@ -0,0 +1,4 @@
author: "nevimer"
delete-after: True
changes:
- rscadd: "Biodome map, ported from Orbstation! A large vacation themed map!"
+4
View File
@@ -0,0 +1,4 @@
author: "nevimer"
delete-after: True
changes:
- code_imp: "no more borg expansion restrictions"
+4
View File
@@ -0,0 +1,4 @@
author: "Icarus-The-Sun"
delete-after: True
changes:
- rscadd: "Gives Species Genders."
+4
View File
@@ -0,0 +1,4 @@
author: "zeroisthebiggay"
delete-after: True
changes:
- image: "huds"
+4
View File
@@ -0,0 +1,4 @@
author: "BurgerBB"
delete-after: True
changes:
- rscdel: "Hugboxes pierced realities by removing some non-heretic functionality."
+4
View File
@@ -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)
Binary file not shown.

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)
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

+200
View File
@@ -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'
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

+12
View File
@@ -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"
Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

+98
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

+27
View File
@@ -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...",
)
+27
View File
@@ -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"
+8
View File
@@ -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"
Binary file not shown.

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)
+7
View File
@@ -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)"
+50
View File
@@ -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
+55
View File
@@ -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"
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

+28
View File
@@ -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)
+13
View File
@@ -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"]
+24
View File
@@ -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