diff --git a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm
index 31d83c730..25c093c8c 100644
--- a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm
+++ b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm
@@ -6,11 +6,13 @@
/turf/closed/mineral/random/low_chance,
/area/ruin/unpowered)
"ac" = (
-/turf/open/floor/plating/asteroid,
+/obj/machinery/hydroponics/soil,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"ad" = (
-/obj/machinery/hydroponics/soil,
-/turf/open/floor/plating/asteroid,
+/obj/structure/table/wood,
+/obj/item/shovel,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"ae" = (
/turf/closed/wall/mineral/titanium,
@@ -26,9 +28,7 @@
/turf/closed/wall/mineral/titanium,
/area/ruin/powered)
"ah" = (
-/obj/structure/table/wood,
-/obj/item/shovel,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"ai" = (
/obj/structure/lattice,
@@ -47,9 +47,10 @@
/turf/closed/wall/mineral/titanium,
/area/ruin/powered)
"am" = (
-/obj/item/circuitboard/computer/rdconsole,
-/obj/item/circuitboard/machine/protolathe/department/science,
-/turf/open/floor/plating/asteroid,
+/obj/item/seeds/tower,
+/obj/item/seeds/tower,
+/obj/item/seeds/tower,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"an" = (
/turf/open/floor/mineral/titanium,
@@ -91,61 +92,52 @@
/turf/closed/wall/mineral/titanium,
/area/ruin/powered)
"au" = (
-/obj/item/seeds/tower,
-/obj/item/seeds/tower,
-/obj/item/seeds/tower,
-/turf/open/floor/plating/asteroid,
+/obj/item/stack/sheet/mineral/wood,
+/obj/item/stack/sheet/mineral/wood,
+/obj/item/stack/sheet/mineral/wood,
+/obj/item/stack/sheet/mineral/wood,
+/obj/item/stack/sheet/mineral/wood,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"av" = (
-/obj/structure/table/wood,
-/obj/item/paper/crumpled{
- info = "
So this is it, I guess.. Always thought I'd go out doing something stupid, but.. not like this.
Should anyone find this note, tell Jeremy Clarke he can kiss my ass. Launching the pod unprepared like that..
Well. Now that I'm keeling over here, I guess I should write how I came to be the last one standing here.
Four of us took this pod.. only three of us woke up though.. fourth pod is locked from the inside, we couldn't figure out how to get it open.
Me and the clown set up a farm s'we can survive at least a while.. though, he didn't seem to understand that man cannot live on banana alone.
Had a bunch of circuits on him for some reason when he eventually passed, whispered to me something about a chem dispenser.. I.. don't know what he meant by that. I was never good with machinary. Maybe he wanted space lube?
The assistant that we gave the space suit to go out and find help never came back.. I'm betting he found salvation and left us behind.. never can trust those grubby greytiders."
- },
-/obj/item/pen,
-/obj/item/bluespace_thread{
- pixel_x = -1;
- pixel_y = 1
- },
-/turf/open/floor/plating/asteroid,
+/obj/item/twohanded/spear,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aw" = (
-/obj/item/stack/sheet/mineral/wood,
-/obj/item/stack/sheet/mineral/wood,
-/obj/item/stack/sheet/mineral/wood,
-/obj/item/stack/sheet/mineral/wood,
-/obj/item/stack/sheet/mineral/wood,
-/turf/open/floor/plating/asteroid,
+/obj/item/grown/log,
+/obj/item/grown/log,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"ax" = (
-/obj/item/twohanded/spear,
-/turf/open/floor/plating/asteroid,
-/area/ruin/unpowered)
-"ay" = (
-/obj/item/grown/log,
-/obj/item/grown/log,
-/turf/open/floor/plating/asteroid,
-/area/ruin/unpowered)
-"az" = (
/obj/structure/table/wood,
/obj/item/storage/bag/plants/portaseeder,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
+/area/ruin/unpowered)
+"ay" = (
+/obj/item/flashlight/lamp/bananalamp,
+/turf/open/floor/plating/asteroid/spacehermit,
+/area/ruin/unpowered)
+"az" = (
+/obj/item/seeds/banana,
+/obj/item/seeds/banana,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aA" = (
/turf/open/floor/plating/asteroid/airless,
/area/ruin/unpowered)
"aB" = (
-/obj/item/seeds/banana,
-/obj/item/seeds/banana,
-/turf/open/floor/plating/asteroid,
-/area/ruin/unpowered)
-"aC" = (
/obj/effect/mob_spawn/human/clown/corpse,
/obj/structure/fans/tiny/invisible,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
+/area/ruin/unpowered)
+"aC" = (
+/obj/item/mining_scanner,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aD" = (
-/obj/item/mining_scanner,
-/turf/open/floor/plating/asteroid,
+/obj/item/circuitboard/computer/rdconsole,
+/obj/item/circuitboard/machine/protolathe/department/science,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aE" = (
/obj/machinery/status_display/shuttle,
@@ -153,16 +145,16 @@
/area/ruin/unpowered)
"aF" = (
/obj/item/pickaxe/emergency,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aG" = (
/obj/structure/sink/puddle,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aH" = (
/obj/structure/table/wood,
/obj/item/storage/firstaid/regular,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aI" = (
/obj/effect/mob_spawn/human/corpse/assistant,
@@ -171,17 +163,17 @@
"aJ" = (
/obj/structure/table/wood,
/obj/item/storage/bag/ore,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aK" = (
/obj/structure/reagent_dispensers/fueltank,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aL" = (
/obj/structure/table/wood,
/obj/item/storage/toolbox/mechanical,
/obj/item/clothing/head/welding,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aM" = (
/mob/living/simple_animal/hostile/carp,
@@ -189,7 +181,7 @@
/area/template_noop)
"aN" = (
/obj/structure/mineral_door/sandstone,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aO" = (
/mob/living/simple_animal/hostile/carp,
@@ -197,17 +189,17 @@
/area/ruin/unpowered)
"aP" = (
/obj/item/stack/ore/gold,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aQ" = (
/obj/item/stack/ore/gold,
/obj/item/stack/ore/gold,
/obj/item/stack/ore/gold,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aR" = (
/obj/item/stack/ore/iron,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aS" = (
/turf/closed/wall/mineral/iron,
@@ -215,12 +207,12 @@
"aT" = (
/obj/item/stack/ore/iron,
/obj/item/stack/ore/iron,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aU" = (
/obj/item/flashlight/lamp,
/obj/structure/table/wood,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"aV" = (
/obj/item/clothing/suit/space/orange,
@@ -255,92 +247,100 @@
/turf/closed/wall/mineral/titanium,
/area/ruin/unpowered)
"bc" = (
-/obj/item/circuitboard/machine/circuit_imprinter,
-/turf/open/floor/plating/asteroid,
+/obj/structure/table/wood,
+/obj/item/paper/crumpled{
+ info = "
So this is it, I guess.. Always thought I'd go out doing something stupid, but.. not like this.
Should anyone find this note, tell Jeremy Clarke he can kiss my ass. Launching the pod unprepared like that..
Well. Now that I'm keeling over here, I guess I should write how I came to be the last one standing here.
Four of us took this pod.. only three of us woke up though.. fourth pod is locked from the inside, we couldn't figure out how to get it open.
Me and the clown set up a farm s'we can survive at least a while.. though, he didn't seem to understand that man cannot live on banana alone.
Had a bunch of circuits on him for some reason when he eventually passed, whispered to me something about a chem dispenser.. I.. don't know what he meant by that. I was never good with machinary. Maybe he wanted space lube?
The assistant that we gave the space suit to go out and find help never came back.. I'm betting he found salvation and left us behind.. never can trust those grubby greytiders."
+ },
+/obj/item/pen,
+/obj/item/bluespace_thread{
+ pixel_x = -1;
+ pixel_y = 1
+ },
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bd" = (
-/obj/item/grown/bananapeel,
-/turf/open/floor/plating/asteroid,
+/obj/item/circuitboard/machine/circuit_imprinter,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"be" = (
+/obj/item/grown/bananapeel,
+/turf/open/floor/plating/asteroid/spacehermit,
+/area/ruin/unpowered)
+"bf" = (
/obj/effect/mob_spawn/human/corpse/cargo_tech,
/obj/structure/fans/tiny/invisible,
/obj/effect/decal/cleanable/vomit,
-/turf/open/floor/plating/asteroid,
-/area/ruin/unpowered)
-"bf" = (
-/obj/item/clothing/glasses/meson,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bg" = (
-/obj/item/stock_parts/matter_bin,
-/turf/open/floor/plating/asteroid,
+/obj/item/clothing/glasses/meson,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bh" = (
/obj/item/circuitboard/machine/autolathe,
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
"bi" = (
-/obj/item/stock_parts/manipulator,
-/turf/open/floor/plating/asteroid,
+/obj/item/stock_parts/matter_bin,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bj" = (
-/obj/item/holosign_creator/atmos,
-/turf/open/floor/plating/asteroid,
+/obj/item/stock_parts/manipulator,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bk" = (
/obj/structure/holosign/barrier/atmos,
/turf/open/floor/plating/asteroid,
/area/ruin/unpowered)
"bl" = (
+/obj/item/holosign_creator/atmos,
+/turf/open/floor/plating/asteroid/spacehermit,
+/area/ruin/unpowered)
+"bm" = (
/obj/machinery/power/floodlight,
/obj/structure/cable{
icon_state = "0-2"
},
-/turf/open/floor/plating/asteroid,
-/area/ruin/unpowered)
-"bm" = (
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bn" = (
/obj/structure/cable{
- icon_state = "2-8"
+ icon_state = "1-4"
},
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bo" = (
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "2-8"
},
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bp" = (
-/obj/item/stack/ore/iron,
-/obj/item/stack/ore/iron,
-/obj/item/stack/ore/iron,
-/turf/open/floor/plating/asteroid,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bq" = (
+/obj/item/stack/ore/iron,
+/obj/item/stack/ore/iron,
+/obj/item/stack/ore/iron,
+/turf/open/floor/plating/asteroid/spacehermit,
+/area/ruin/unpowered)
+"br" = (
/obj/structure/cable,
/obj/machinery/power/port_gen/pacman{
active = 1;
anchored = 1;
sheets = 10
},
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
-"br" = (
+"bs" = (
/obj/item/stack/ore/iron,
/obj/item/stack/sheet/mineral/plasma,
/obj/item/stack/sheet/mineral/plasma,
-/turf/open/floor/plating/asteroid,
-/area/ruin/unpowered)
-"bs" = (
-/obj/item/flashlight/lamp/bananalamp,
-/turf/open/floor/plating/asteroid,
+/turf/open/floor/plating/asteroid/spacehermit,
/area/ruin/unpowered)
"bt" = (
/obj/structure/fluff/empty_cryostasis_sleeper,
@@ -349,6 +349,9 @@
},
/turf/open/floor/mineral/titanium,
/area/ruin/powered)
+"bu" = (
+/turf/closed/mineral/random/spacehermit,
+/area/ruin/unpowered)
(1,1,1) = {"
aa
@@ -486,11 +489,11 @@ ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
ab
ab
ab
@@ -532,20 +535,20 @@ ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
ab
@@ -581,25 +584,25 @@ aA
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
aA
@@ -632,27 +635,27 @@ ab
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
aA
@@ -678,34 +681,34 @@ aa
aA
ab
ab
+bu
+bu
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
aA
@@ -729,36 +732,36 @@ aa
aa
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ae
af
ae
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
aA
@@ -781,37 +784,37 @@ aa
aa
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
af
aq
af
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
aA
@@ -833,38 +836,38 @@ aa
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ae
ae
ao
ae
ae
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -886,37 +889,37 @@ aA
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
af
an
an
an
af
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
aA
@@ -938,24 +941,24 @@ aA
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ae
ae
bh
@@ -963,13 +966,13 @@ an
an
ae
aZ
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -990,24 +993,24 @@ aA
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
af
aY
ao
@@ -1015,13 +1018,13 @@ ao
ao
ak
ba
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1042,24 +1045,24 @@ aA
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
al
aj
ap
@@ -1067,13 +1070,13 @@ an
as
aj
aE
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1094,24 +1097,24 @@ aA
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
af
bt
ao
@@ -1119,13 +1122,13 @@ ao
ao
bt
ba
-ac
-ab
-ab
-ab
-ab
-ab
-ab
+ah
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1146,23 +1149,23 @@ aA
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ah
-az
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+ad
+ax
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
aR
ae
ae
@@ -1171,13 +1174,13 @@ an
an
ae
aZ
-ac
-ab
-ab
-ab
-ab
-ab
-ab
+ah
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aM
@@ -1197,24 +1200,24 @@ aa
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-ac
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+ah
+ah
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
aR
ag
ag
@@ -1223,13 +1226,13 @@ ar
af
at
bb
-ac
-ab
-ab
-ab
-ab
-ab
-ab
+ah
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1249,39 +1252,39 @@ aa
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ad
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ac
-ac
-ac
-ac
-ab
+ah
+ah
+ah
+ah
+bu
aH
aJ
aL
-ab
-ab
+bu
+bu
aT
-ac
-ac
-ac
-ac
-ac
-ac
-ac
+ah
+ah
+ah
+ah
+ah
+ah
+ah
aR
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1301,39 +1304,39 @@ aA
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ad
-au
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ac
-aB
am
-ac
-ac
-ac
-ac
-ab
-ab
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-bg
-ab
-ab
-ab
-ab
-ab
-ab
+ah
+az
+aD
+ah
+ah
+ah
+ah
+bu
+bu
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+bi
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1352,40 +1355,40 @@ aa
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ad
-aw
-bs
-aC
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ac
-ac
-ac
-ac
-ac
-ab
-ab
-ab
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+au
+ay
+aB
+ah
+ah
+ah
+ah
+ah
+bu
+bu
+bu
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1404,40 +1407,40 @@ aa
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ad
-ax
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ac
-aD
+av
+ah
+aC
aF
-ac
-ac
-ac
-ab
-ab
-ab
+ah
+ah
+ah
+bu
+bu
+bu
aU
-bd
-ac
-ac
-bl
+be
+ah
+ah
bm
-ac
-ac
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bn
+ah
+ah
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1456,39 +1459,39 @@ aa
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ad
-ay
-ac
-ac
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ac
+aw
+ah
+ah
+ah
aG
-ac
-ac
-ab
-ab
-ab
-av
-be
-ac
-ac
-ac
-bn
+ah
+ah
+bu
+bu
+bu
+bc
+bf
+ah
+ah
+ah
bo
-bo
-bq
-ab
-ab
-ab
-ab
-ab
+bp
+bp
+br
+bu
+bu
+bu
+bu
+bu
ab
ab
aA
@@ -1508,39 +1511,39 @@ aa
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ab
-ab
-ab
-bc
-bf
-ac
-ac
-ac
-ac
-ac
-ac
-br
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+bu
+bu
+bu
+bd
+bg
+ah
+ah
+ah
+ah
+ah
+ah
+bs
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1559,39 +1562,39 @@ aa
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-ab
-ac
-ac
-ac
-ac
-ac
-ab
-ab
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+ah
+bu
+ah
+ah
+ah
+ah
+ah
+bu
+bu
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+bu
+bu
+bu
+bu
ab
ab
aA
@@ -1611,39 +1614,39 @@ aa
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-ac
-ac
-ac
-ac
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+ah
+ah
+ah
+ah
+ah
aN
-ac
-ac
-ac
-ac
+ah
+ah
+ah
+ah
aR
-ac
-ac
-ac
-ac
-ab
-ab
-ab
-ab
-ab
+ah
+ah
+ah
+ah
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -1662,39 +1665,39 @@ aa
aa
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-ac
-ac
-ab
-ab
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+ah
+ah
+ah
+bu
+bu
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+bu
+bu
ab
ab
aa
@@ -1715,38 +1718,38 @@ aa
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
aK
-ab
-ab
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-bp
-ac
-ac
+bu
+bu
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+bq
+ah
+ah
aR
-ab
-ab
+bu
+bu
ab
aA
aa
@@ -1767,38 +1770,38 @@ aa
aa
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
aP
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
aR
-ab
-ab
+bu
+bu
ab
aA
aa
@@ -1819,38 +1822,38 @@ aa
aa
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
aQ
aP
-ac
-ac
+ah
+ah
aR
-ac
-ac
-ac
-ac
-ab
-ac
-ab
-ab
+ah
+ah
+ah
+ah
+bu
+ah
+bu
+bu
ab
aA
aa
@@ -1871,37 +1874,37 @@ aa
aa
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-ac
-ac
-ac
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+ah
+ah
+ah
+ah
aP
-ac
-bg
-ab
-ab
-ab
+ah
+bi
+bu
+bu
+bu
ab
ab
aa
@@ -1925,35 +1928,35 @@ aA
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-ac
-ac
-ac
-ac
-ac
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+ah
+ah
+ah
+ah
+ah
+ah
aS
-ab
-ab
-ab
+bu
+bu
+bu
ab
aA
aa
@@ -1977,35 +1980,35 @@ aa
aA
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-bg
-ac
-ac
-ac
-ac
-ac
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bi
+ah
+ah
+ah
+ah
+ah
aS
-ab
-ab
-ab
+bu
+bu
+bu
ab
aA
aa
@@ -2030,34 +2033,34 @@ aa
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ac
-ac
-bj
-ac
-ac
-ac
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+ah
+ah
+bl
+ah
+ah
+ah
aS
-ab
-ab
-ab
+bu
+bu
+bu
ab
aA
aa
@@ -2083,32 +2086,32 @@ aa
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aS
-bi
-ac
-ac
-ac
+bj
+ah
+ah
+ah
aS
aS
-ab
-ab
+bu
+bu
ab
ab
aA
@@ -2135,32 +2138,32 @@ aM
aa
aA
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
ab
aS
-ac
-ac
-ac
-ac
+ah
+ah
+ah
+ah
aS
aS
-ab
-ab
+bu
+bu
ab
aA
aa
@@ -2188,18 +2191,18 @@ aa
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
aA
@@ -2241,17 +2244,17 @@ aA
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aA
@@ -2294,16 +2297,16 @@ aA
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aA
@@ -2347,15 +2350,15 @@ aA
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
aA
aa
@@ -2400,14 +2403,14 @@ aA
aA
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
ab
ab
ab
diff --git a/_maps/map_files/LayeniaStation/LayeniaStation.dmm b/_maps/map_files/LayeniaStation/LayeniaStation.dmm
index 006d7aedd..d75f5d7f9 100644
--- a/_maps/map_files/LayeniaStation/LayeniaStation.dmm
+++ b/_maps/map_files/LayeniaStation/LayeniaStation.dmm
@@ -9396,6 +9396,12 @@
dir = 1
},
/area/science/misc_lab)
+"bbY" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ name = "scrubbers pipe"
+ },
+/turf/closed/wall,
+/area/hydroponics)
"bcb" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -10909,8 +10915,8 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/turf/open/floor/plating,
-/area/maintenance/fore/secondary)
+/turf/closed/wall,
+/area/hydroponics)
"bwq" = (
/obj/effect/spawner/lootdrop/maintenance{
lootcount = 2;
@@ -18305,6 +18311,23 @@
},
/turf/open/floor/plasteel/dark,
/area/engine/engine_smes)
+"dou" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/loading_area{
+ dir = 1;
+ icon_state = "drain";
+ name = "drain"
+ },
+/obj/structure/table/glass,
+/turf/open/floor/plasteel{
+ icon_state = "floor_plate"
+ },
+/area/crew_quarters/fitness/pool)
"dov" = (
/obj/structure/cable{
icon_state = "0-8"
@@ -28883,20 +28906,27 @@
/turf/closed/wall/r_wall,
/area/maintenance/port/aft)
"gkz" = (
-/obj/structure/closet/secure_closet/personal,
-/obj/item/toy/poolnoodle/blue,
-/obj/item/toy/poolnoodle/red,
-/obj/item/toy/poolnoodle/yellow,
+/obj/structure/table,
+/obj/item/reagent_containers/rag/towel{
+ pixel_x = -2;
+ pixel_y = 18
+ },
+/obj/item/reagent_containers/rag/towel{
+ pixel_y = 22
+ },
+/obj/item/reagent_containers/rag/towel{
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/rag/towel{
+ pixel_x = -1;
+ pixel_y = 7
+ },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/machinery/light{
- dir = 8;
- pixel_x = -7
- },
/obj/effect/turf_decal/loading_area{
dir = 8;
icon_state = "drain";
@@ -29661,6 +29691,22 @@
icon_state = "floor_trim"
},
/area/engine/engineering)
+"gsf" = (
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/loading_area{
+ dir = 1;
+ icon_state = "drain";
+ name = "drain"
+ },
+/turf/open/floor/plasteel{
+ icon_state = "floor_plate"
+ },
+/area/crew_quarters/fitness/pool)
"gsh" = (
/obj/effect/turf_decal/loading_area{
dir = 1;
@@ -30915,6 +30961,17 @@
},
/turf/open/floor/plating,
/area/maintenance/aft)
+"gHS" = (
+/obj/machinery/light{
+ dir = 1;
+ pixel_y = 16
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3{
+ dir = 4;
+ name = "air vent"
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
"gIv" = (
/obj/effect/turf_decal/loading_area{
dir = 8;
@@ -31724,8 +31781,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
- dir = 4;
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{
name = "scrubbers pipe"
},
/turf/open/floor/plasteel/dark,
@@ -31743,18 +31799,21 @@
/area/medical/sleeper)
"gTx" = (
/obj/effect/turf_decal/tile/neutral{
- dir = 1
+ dir = 4
},
/obj/effect/turf_decal/tile/neutral{
- dir = 8
+ dir = 1
},
/obj/effect/turf_decal/loading_area{
- dir = 8;
+ dir = 1;
icon_state = "drain";
name = "drain"
},
+/obj/item/reagent_containers/rag/towel{
+ pixel_x = 3;
+ pixel_y = 9
+ },
/turf/open/floor/plasteel{
- dir = 4;
icon_state = "floor_plate"
},
/area/crew_quarters/fitness/pool)
@@ -34165,6 +34224,19 @@
dir = 8;
pixel_x = 24
},
+/obj/structure/table,
+/obj/item/watertank,
+/obj/item/reagent_containers/spray/plantbgone{
+ pixel_x = 13;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/spray/plantbgone{
+ pixel_y = 3
+ },
+/obj/item/reagent_containers/spray/plantbgone{
+ pixel_x = 8;
+ pixel_y = 8
+ },
/turf/open/floor/plasteel/dark,
/area/hydroponics)
"hDl" = (
@@ -39990,30 +40062,10 @@
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"iWa" = (
-/obj/structure/table,
-/obj/item/reagent_containers/spray/plantbgone{
- pixel_y = 3
- },
-/obj/item/reagent_containers/spray/plantbgone{
- pixel_x = 8;
- pixel_y = 8
- },
-/obj/item/reagent_containers/spray/plantbgone{
- pixel_x = 13;
- pixel_y = 5
- },
-/obj/item/watertank,
-/obj/effect/turf_decal/tile/neutral{
+/obj/structure/window/reinforced{
dir = 4
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/grass,
/area/hydroponics)
"iWe" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -43172,6 +43224,14 @@
},
/turf/open/floor/plating,
/area/chapel/main)
+"jRW" = (
+/obj/machinery/door/airlock/maintenance{
+ dir = 1;
+ name = "Hydroponics Maintenance";
+ req_access_txt = "35"
+ },
+/turf/open/floor/plasteel/dark,
+/area/hydroponics)
"jSj" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer3{
dir = 8;
@@ -44607,13 +44667,14 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
name = "scrubbers pipe"
},
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
- name = "air supply pipe"
- },
/obj/structure/disposalpipe/segment,
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer3{
+ dir = 4;
+ name = "air supply pipe"
+ },
/turf/open/floor/plasteel/dark,
/area/hydroponics)
"knF" = (
@@ -48493,10 +48554,13 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness)
"lvD" = (
-/obj/structure/kitchenspike,
/obj/machinery/camera{
c_tag = "Kitchen Cold Room"
},
+/obj/machinery/light{
+ dir = 1;
+ pixel_y = 16
+ },
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
"lwc" = (
@@ -49885,7 +49949,6 @@
/area/maintenance/fore)
"lSg" = (
/obj/structure/table,
-/obj/item/book/manual/hydroponics_pod_people,
/obj/item/paper/guides/jobs/hydroponics,
/obj/item/reagent_containers/glass/bottle/mutagen,
/obj/item/reagent_containers/glass/bottle/mutagen,
@@ -49905,6 +49968,9 @@
dir = 8;
name = "air vent"
},
+/obj/machinery/reagentgrinder{
+ pixel_y = 8
+ },
/turf/open/floor/plasteel/dark,
/area/hydroponics)
"lSI" = (
@@ -53966,21 +54032,6 @@
},
/area/science/misc_lab)
"mUr" = (
-/obj/structure/table,
-/obj/item/reagent_containers/rag/towel{
- pixel_x = -2;
- pixel_y = 18
- },
-/obj/item/reagent_containers/rag/towel{
- pixel_y = 22
- },
-/obj/item/reagent_containers/rag/towel{
- pixel_y = 3
- },
-/obj/item/reagent_containers/rag/towel{
- pixel_x = -1;
- pixel_y = 7
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -53992,6 +54043,7 @@
icon_state = "drain";
name = "drain"
},
+/obj/structure/jacuzzi,
/turf/open/floor/plasteel{
dir = 4;
icon_state = "floor_plate"
@@ -54696,6 +54748,9 @@
},
/turf/open/floor/plasteel,
/area/engine/break_room)
+"nfw" = (
+/turf/open/floor/grass,
+/area/hydroponics)
"nfB" = (
/obj/effect/turf_decal/tile/green{
dir = 1
@@ -66155,11 +66210,6 @@
},
/area/bridge)
"pYk" = (
-/obj/machinery/door/airlock/maintenance{
- dir = 4;
- name = "Hydroponics Maintenance";
- req_access_txt = "35"
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 4;
name = "scrubbers pipe"
@@ -66171,8 +66221,8 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/plasteel/dark,
-/area/maintenance/fore/secondary)
+/turf/closed/wall,
+/area/hydroponics)
"pYn" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
@@ -66983,26 +67033,17 @@
},
/area/medical/virology)
"qlS" = (
-/obj/structure/closet/crate/hydroponics,
-/obj/item/shovel/spade,
-/obj/item/wrench,
-/obj/item/reagent_containers/glass/bucket,
-/obj/item/wirecutters,
-/obj/item/screwdriver,
-/obj/item/crowbar,
-/obj/effect/turf_decal/loading_area{
- icon_state = "drain";
- name = "drain"
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
+ dir = 8;
+ name = "air supply pipe"
},
-/obj/effect/turf_decal/loading_area{
+/obj/machinery/door/window/northleft{
dir = 4;
- icon_state = "drain";
- name = "drain"
+ icon_state = "right";
+ name = "Chicken Coop";
+ req_access_txt = "35"
},
-/obj/machinery/light_switch{
- pixel_x = -23
- },
-/turf/open/floor/plasteel,
+/turf/open/floor/grass,
/area/hydroponics)
"qlU" = (
/obj/structure/sign/logo/kinaris{
@@ -67059,7 +67100,6 @@
},
/area/science/research)
"qmq" = (
-/obj/machinery/hydroponics/constructable,
/obj/effect/turf_decal/tile/green{
dir = 4
},
@@ -67567,21 +67607,11 @@
/turf/open/floor/plasteel/dark,
/area/tcommsat/computer)
"qsc" = (
-/obj/structure/table,
-/obj/machinery/reagentgrinder{
- pixel_y = 8
- },
-/obj/effect/turf_decal/tile/neutral{
+/obj/structure/window/reinforced{
dir = 4
},
-/obj/effect/turf_decal/tile/neutral{
- dir = 1
- },
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
+/obj/item/reagent_containers/food/snacks/grown/wheat,
+/turf/open/floor/grass,
/area/hydroponics)
"qsj" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
@@ -69747,10 +69777,16 @@
},
/area/engine/break_room)
"qRW" = (
-/obj/item/toy/beach_ball/holoball{
- name = "baskingball"
+/obj/structure/closet/crate/wooden,
+/obj/item/stack/sheet/mineral/wood,
+/obj/item/stack/sheet/mineral/wood,
+/obj/item/stack/sheet/mineral/wood,
+/obj/item/stack/sheet/mineral/wood,
+/obj/item/paper/guides/jobs/hydroponics{
+ info = "Chickens love their wheat, if you feed it to them, they will be encouraged to lay eggs early. But make sure they have somewhere to nest, or they wont lay! Make sure they have soft grass, or hay to walk on, otherwise they will be unhappy. If a chickens unhappy, then you are unhappy.";
+ name = "paper- 'Chicken Keeping!'"
},
-/turf/open/floor/plating,
+/turf/open/floor/grass,
/area/hydroponics)
"qSg" = (
/obj/effect/turf_decal/loading_area{
@@ -71944,6 +71980,9 @@
/obj/effect/turf_decal/tile/green{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ name = "scrubbers pipe"
+ },
/turf/open/floor/plasteel/dark/side,
/area/hydroponics)
"rrS" = (
@@ -85468,6 +85507,32 @@
/obj/structure/railing,
/turf/open/floor/plating/asteroid/layenia,
/area/layenia)
+"uHP" = (
+/obj/structure/table,
+/obj/item/reagent_containers/rag/towel{
+ pixel_x = 2;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/rag/towel{
+ pixel_x = 3;
+ pixel_y = 9
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/neutral{
+ dir = 4
+ },
+/obj/effect/turf_decal/loading_area{
+ dir = 8;
+ icon_state = "drain";
+ name = "drain"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"uId" = (
/obj/structure/sign/logo/kinaris{
icon_state = "kinaris_sign3";
@@ -88438,7 +88503,6 @@
/turf/open/floor/plasteel/dark,
/area/quartermaster/miningdock)
"vuZ" = (
-/obj/machinery/hydroponics/constructable,
/obj/effect/turf_decal/tile/green{
dir = 4
},
@@ -90447,6 +90511,12 @@
},
/turf/open/floor/plasteel/dark,
/area/hallway/primary/port)
+"vTc" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
+ name = "air scrubber"
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
"vTh" = (
/obj/effect/turf_decal/loading_area{
dir = 1;
@@ -91737,15 +91807,6 @@
/turf/open/floor/plasteel/white,
/area/science/circuit)
"wkf" = (
-/obj/structure/table,
-/obj/item/reagent_containers/rag/towel{
- pixel_x = 2;
- pixel_y = 5
- },
-/obj/item/reagent_containers/rag/towel{
- pixel_x = 3;
- pixel_y = 9
- },
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -91765,8 +91826,9 @@
icon_state = "drain";
name = "drain"
},
-/obj/machinery/newscaster{
- pixel_y = 32
+/obj/machinery/light{
+ dir = 1;
+ pixel_y = 16
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/pool)
@@ -95052,15 +95114,22 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"xee" = (
+/obj/structure/closet/crate/hydroponics,
+/obj/item/shovel/spade,
+/obj/item/wrench,
+/obj/item/reagent_containers/glass/bucket,
+/obj/item/wirecutters,
+/obj/item/screwdriver,
+/obj/item/crowbar,
+/obj/effect/turf_decal/loading_area{
+ icon_state = "drain";
+ name = "drain"
+ },
/obj/effect/turf_decal/loading_area{
dir = 4;
icon_state = "drain";
name = "drain"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
- dir = 4;
- name = "scrubbers pipe"
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
dir = 8;
name = "air supply pipe"
@@ -95068,6 +95137,11 @@
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ dir = 4;
+ name = "scrubbers pipe"
+ },
+/obj/structure/window/reinforced,
/turf/open/floor/plasteel,
/area/hydroponics)
"xej" = (
@@ -95973,9 +96047,12 @@
/turf/open/floor/plasteel/dark,
/area/arcade)
"xqk" = (
-/obj/machinery/space_heater,
-/turf/open/floor/plating,
-/area/maintenance/fore/secondary)
+/mob/living/simple_animal/chicken{
+ force_gender = male;
+ name = "rooster"
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
"xql" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
@@ -97809,6 +97886,19 @@
planetary_atmos = 1
},
/area/layenia/cloudlayer)
+"xNj" = (
+/mob/living/simple_animal/chicken{
+ force_gender = female;
+ name = "chicken"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
+ name = "scrubbers pipe"
+ },
+/obj/machinery/light{
+ pixel_y = -1
+ },
+/turf/open/floor/grass,
+/area/hydroponics)
"xNp" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{
dir = 8;
@@ -113886,10 +113976,10 @@ wkf
mUr
rbJ
vrd
-nBK
+uHP
gkz
nBK
-gTx
+nBK
cnB
wwE
pfI
@@ -114139,7 +114229,7 @@ tBc
yfm
wcK
yeA
-sks
+gTx
xDB
xDB
sPO
@@ -114396,7 +114486,7 @@ acP
tEk
ylM
yeA
-nLu
+dou
xDB
kMH
fLo
@@ -114653,7 +114743,7 @@ xej
gTW
gTW
yeA
-rfR
+gsf
xDB
sXB
nss
@@ -126488,11 +126578,11 @@ tti
aoE
tti
ksw
-cHs
-cHs
-cHs
-cHs
-cHs
+vxc
+vxc
+vxc
+vxc
+vxc
cHs
cHs
cHs
@@ -126747,7 +126837,7 @@ pWH
rDw
bwp
xqk
-vxc
+nfw
qRW
vxc
rrL
@@ -127003,10 +127093,10 @@ aNI
pre
vxc
pYk
-vxc
-vxc
-vxc
-vxc
+gHS
+vTc
+xNj
+bbY
rrR
gTc
uJs
@@ -127770,7 +127860,7 @@ kXX
oog
eLb
aJe
-vxc
+jRW
qmq
hDa
lSg
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index c0bf99606..fb51e5930 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -10955,9 +10955,6 @@
/turf/open/floor/plasteel,
/area/tdome/arena)
"kjW" = (
-/obj/item/twohanded/required/kirbyplants{
- icon_state = "plant-22"
- },
/obj/effect/turf_decal/tile{
color = "#630000";
dir = 1
@@ -10973,6 +10970,7 @@
/obj/effect/turf_decal/tile{
color = "#630000"
},
+/obj/structure/jacuzzi,
/turf/open/floor/mineral/basaltstone_floor,
/area/centcom/ferry)
"kke" = (
diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm
index 9a0664933..fdaf578cd 100644
--- a/code/__DEFINES/DNA.dm
+++ b/code/__DEFINES/DNA.dm
@@ -64,7 +64,7 @@
//DNA - Because fuck you and your magic numbers being all over the codebase.
#define DNA_BLOCK_SIZE 3
-#define DNA_UNI_IDENTITY_BLOCKS 14
+#define DNA_UNI_IDENTITY_BLOCKS 20
#define DNA_HAIR_COLOR_BLOCK 1
#define DNA_FACIAL_HAIR_COLOR_BLOCK 2
#define DNA_SKIN_TONE_BLOCK 3
@@ -80,6 +80,14 @@
#define DNA_MUTANTMARKING_BLOCK 13
#define DNA_TAUR_BLOCK 14
+// hyper edit
+#define DNA_COSMETIC_HEAD_BLOCK 15
+#define DNA_COSMETIC_CHEST_BLOCK 16
+#define DNA_COSMETIC_L_ARM_BLOCK 17
+#define DNA_COSMETIC_R_ARM_BLOCK 18
+#define DNA_COSMETIC_L_LEG_BLOCK 19
+#define DNA_COSMETIC_R_LEG_BLOCK 20
+
#define DNA_SEQUENCE_LENGTH 4
#define DNA_MUTATION_BLOCKS 8
#define DNA_UNIQUE_ENZYMES_LEN 32
@@ -118,6 +126,9 @@
#define MARKINGS 17
#define WINGCOLOR 18
+#define NOMOUTH 19
+
+
//organ slots
#define ORGAN_SLOT_BRAIN "brain"
#define ORGAN_SLOT_APPENDIX "appendix"
diff --git a/code/__DEFINES/hyper_arousal.dm b/code/__DEFINES/hyper_arousal.dm
new file mode 100644
index 000000000..a0450b138
--- /dev/null
+++ b/code/__DEFINES/hyper_arousal.dm
@@ -0,0 +1,13 @@
+#define BELLY_MIN_SIZE 0
+#define BELLY_MAX_SIZE 8
+
+#define BELLY_STRAIN_SIZE 3 // for flavor text
+#define BELLY_STRETCH_SIZE 6 // for flavor text
+
+#define BUTT_MIN_SIZE 0
+#define BUTT_MAX_SIZE_SELECTABLE 5
+#define BUTT_MAX_SIZE 8
+
+#define GENITALS_HIDDEN "hidden"
+#define GENITALS_CLOTHES "clothes"
+#define GENITALS_VISIBLE "visible"
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index c91c0fda4..363d4c38b 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -60,6 +60,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
#define isbrain(A) (istype(A, /mob/living/brain))
+#define isnoncarbon(A) (isliving(A) && !iscarbon(A))
+
//Carbon mobs
#define iscarbon(A) (istype(A, /mob/living/carbon))
diff --git a/code/__DEFINES/melee.dm b/code/__DEFINES/melee.dm
index cb4a43321..e0eace8db 100644
--- a/code/__DEFINES/melee.dm
+++ b/code/__DEFINES/melee.dm
@@ -7,4 +7,5 @@
#define MARTIALART_MUSHPUNCH "mushroom punch"
#define MARTIALART_KRAVMAGA "krav maga"
#define MARTIALART_CQC "CQC"
-#define MARTIALART_PLASMAFIST "plasma fist"
\ No newline at end of file
+#define MARTIALART_PLASMAFIST "plasma fist"
+#define MARTIALART_KNS_CQC "KNS CQC"
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index d45280be4..43f7dffb4 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -151,6 +151,7 @@
//Nutrition levels for humans
#define NUTRITION_LEVEL_FAT 600
#define NUTRITION_LEVEL_FULL 550
+#define NUTRITION_LEVEL_ALMOST_FULL 535
#define NUTRITION_LEVEL_WELL_FED 450
#define NUTRITION_LEVEL_FED 350
#define NUTRITION_LEVEL_HUNGRY 250
diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm
index 80356bec2..9502db55f 100644
--- a/code/__DEFINES/say.dm
+++ b/code/__DEFINES/say.dm
@@ -58,6 +58,7 @@
#define SPAN_COMMAND "command_headset"
#define SPAN_CLOWN "clown"
#define SPAN_SINGING "singing"
+#define SPAN_SMALL "small"
//bitflag #defines for return value of the radio() proc.
#define ITALICS 1
diff --git a/code/__HELPERS/_hyper_helpers.dm b/code/__HELPERS/_hyper_helpers.dm
new file mode 100644
index 000000000..5e23e5857
--- /dev/null
+++ b/code/__HELPERS/_hyper_helpers.dm
@@ -0,0 +1,10 @@
+GLOBAL_LIST_EMPTY(cosmetic_heads)
+GLOBAL_LIST_EMPTY(cosmetic_chests)
+GLOBAL_LIST_EMPTY(cosmetic_arms)
+GLOBAL_LIST_EMPTY(cosmetic_legs)
+
+/proc/init_cosmetic_parts(datum/cosmetic_part/type, list/global_list)
+ for(var/subtype in subtypesof(type))
+ var/datum/cosmetic_part/part = new subtype()
+ global_list[part.id] = part
+ return global_list
\ No newline at end of file
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index 9b5ac9395..62c6cdfbe 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -54,6 +54,14 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, GLOB.vagina_shapes_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_shapes_list)
+
+ // hyper: cosmetic parts
+ init_cosmetic_parts(/datum/cosmetic_part/head, GLOB.cosmetic_heads)
+ init_cosmetic_parts(/datum/cosmetic_part/chest, GLOB.cosmetic_chests)
+ init_cosmetic_parts(/datum/cosmetic_part/arms, GLOB.cosmetic_arms)
+ init_cosmetic_parts(/datum/cosmetic_part/legs, GLOB.cosmetic_legs)
+ // end cosmetic parts
+
GLOB.breasts_size_list = list ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o") //We need the list to choose from initialized, but it's no longer a sprite_accessory thing.
GLOB.genital_fluids_list = list ("Milk", "Water", "Semen", "Femcum", "Honey")
GLOB.gentlemans_organ_names = list("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger")
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index ed0434f2f..ae5638d48 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -136,15 +136,27 @@
var/datum/sprite_accessory/S = instance
if(!S.ckeys_allowed)
snowflake_mam_snouts_list[S.name] = mspath
+
var/list/snowflake_ipc_antenna_list = list()
for(var/mspath in GLOB.ipc_antennas_list)
- var/datum/sprite_accessory/mam_snouts/instance = GLOB.ipc_antennas_list[mspath]
+ var/datum/sprite_accessory/antenna/instance = GLOB.ipc_antennas_list[mspath]
if(istype(instance, /datum/sprite_accessory))
var/datum/sprite_accessory/S = instance
if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies))
continue
if(!S.ckeys_allowed)
snowflake_ipc_antenna_list[S.name] = mspath
+
+ var/list/snowflake_ipc_screen_list = list()
+ for(var/mspath in GLOB.ipc_screens_list)
+ var/datum/sprite_accessory/screen/instance = GLOB.ipc_screens_list[mspath]
+ if(istype(instance, /datum/sprite_accessory))
+ var/datum/sprite_accessory/S = instance
+ if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies))
+ continue
+ if(!S.ckeys_allowed)
+ snowflake_ipc_screen_list[S.name] = mspath
+
var/color1 = random_short_color()
var/color2 = random_short_color()
var/color3 = random_short_color()
@@ -233,11 +245,17 @@
"womb_cum_mult" = CUM_RATE_MULT,
"womb_efficiency" = CUM_EFFICIENCY,
"womb_fluid" = "femcum",
- "ipc_screen" = snowflake_ipc_antenna_list ? pick(snowflake_ipc_antenna_list) : "None",
- "ipc_antenna" = "None",
+ "ipc_screen" = snowflake_ipc_screen_list ? pick(snowflake_ipc_screen_list) : "None",
+ "ipc_antenna" = snowflake_ipc_antenna_list ? pick(snowflake_ipc_antenna_list) : "None",
"flavor_text" = "",
"silicon_flavor_text" = "",
- "ooc_text" = ""))
+ "ooc_text" = "",
+ "cosmetic_head" = GLOB.cosmetic_heads["default"],
+ "cosmetic_chest" = GLOB.cosmetic_chests["default"],
+ "cosmetic_l_arm" = GLOB.cosmetic_arms["default"],
+ "cosmetic_r_arm" = GLOB.cosmetic_arms["default"],
+ "cosmetic_l_leg" = GLOB.cosmetic_legs["default"],
+ "cosmetic_r_leg" = GLOB.cosmetic_legs["default"]))
/proc/random_hair_style(gender)
switch(gender)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 3ceb1547a..1ceef52c5 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1109,7 +1109,7 @@ B --><-- A
/proc/get_random_station_turf()
return safepick(get_area_turfs(pick(GLOB.the_station_areas)))
-
+
/proc/get_safe_random_station_turf()
for (var/i in 1 to 5)
var/list/L = get_area_turfs(pick(GLOB.the_station_areas))
@@ -1273,6 +1273,14 @@ GLOBAL_REAL_VAR(list/stack_trace_storage)
animate(src, transform = M, time = halftime, easing = ELASTIC_EASING)
animate(src, transform = OM, time = halftime, easing = ELASTIC_EASING)
+/atom/proc/do_twist(targetangle = 45, timer = 20)
+ var/matrix/OM = matrix(transform)
+ var/matrix/M = matrix(transform)
+ var/halftime = timer * 0.5
+ M.Turn(pick(-targetangle, targetangle))
+ animate(src, transform = M, time = halftime, easing = ELASTIC_EASING)
+ animate(src, transform = OM, time = halftime, easing = QUAD_EASING)
+
/atom/proc/do_squish(squishx = 1.2, squishy = 0.6, timer = 20)
var/matrix/OM = matrix(transform)
var/matrix/M = matrix(transform)
@@ -1526,7 +1534,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
blocked |= typesof(/obj/item/reagent_containers/food/drinks/prospacillin,
/obj/item/reagent_containers/food/drinks/diminicillin
)
-
+
return pick(subtypesof(/obj/item/reagent_containers/food/drinks) - blocked)
//For these two procs refs MUST be ref = TRUE format like typecaches!
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index ae9ac3826..f28b66435 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -132,6 +132,12 @@
if(!GLOB.taur_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/taur, GLOB.taur_list)
L[DNA_TAUR_BLOCK] = construct_block(GLOB.taur_list.Find(features["taur"]), GLOB.taur_list.len)
+ L[DNA_COSMETIC_HEAD_BLOCK] = construct_block(GLOB.cosmetic_heads.Find(features["cosmetic_head"]), GLOB.cosmetic_heads.len)
+ L[DNA_COSMETIC_CHEST_BLOCK] = construct_block(GLOB.cosmetic_chests.Find(features["cosmetic_chest"]), GLOB.cosmetic_chests.len)
+ L[DNA_COSMETIC_L_ARM_BLOCK] = construct_block(GLOB.cosmetic_arms.Find(features["cosmetic_l_arm"]), GLOB.cosmetic_arms.len)
+ L[DNA_COSMETIC_R_ARM_BLOCK] = construct_block(GLOB.cosmetic_arms.Find(features["cosmetic_r_arm"]), GLOB.cosmetic_arms.len)
+ L[DNA_COSMETIC_L_LEG_BLOCK] = construct_block(GLOB.cosmetic_legs.Find(features["cosmetic_l_leg"]), GLOB.cosmetic_legs.len)
+ L[DNA_COSMETIC_R_LEG_BLOCK] = construct_block(GLOB.cosmetic_legs.Find(features["cosmetic_r_leg"]), GLOB.cosmetic_legs.len)
for(var/i=1, i<=DNA_UNI_IDENTITY_BLOCKS, i++)
if(L[i])
@@ -227,6 +233,18 @@
construct_block(GLOB.mam_body_markings_list.Find(features["mam_body_markings"]), GLOB.mam_body_markings_list.len)
if(DNA_TAUR_BLOCK)
construct_block(GLOB.taur_list.Find(features["taur"]), GLOB.taur_list.len)
+ if(DNA_COSMETIC_HEAD_BLOCK)
+ construct_block(GLOB.cosmetic_heads.Find(features["cosmetic_head"]), GLOB.cosmetic_heads.len)
+ if(DNA_COSMETIC_CHEST_BLOCK)
+ construct_block(GLOB.cosmetic_chests.Find(features["cosmetic_chest"]), GLOB.cosmetic_chests.len)
+ if(DNA_COSMETIC_L_ARM_BLOCK)
+ construct_block(GLOB.cosmetic_arms.Find(features["cosmetic_l_arm"]), GLOB.cosmetic_arms.len)
+ if(DNA_COSMETIC_R_ARM_BLOCK)
+ construct_block(GLOB.cosmetic_arms.Find(features["cosmetic_r_arm"]), GLOB.cosmetic_arms.len)
+ if(DNA_COSMETIC_L_LEG_BLOCK)
+ construct_block(GLOB.cosmetic_legs.Find(features["cosmetic_l_leg"]), GLOB.cosmetic_legs.len)
+ if(DNA_COSMETIC_R_LEG_BLOCK)
+ construct_block(GLOB.cosmetic_legs.Find(features["cosmetic_r_leg"]), GLOB.cosmetic_legs.len)
//Please use add_mutation or activate_mutation instead
/datum/dna/proc/force_give(datum/mutation/human/HM)
diff --git a/code/datums/martial/kinaris.dm b/code/datums/martial/kinaris.dm
new file mode 100644
index 000000000..fed965802
--- /dev/null
+++ b/code/datums/martial/kinaris.dm
@@ -0,0 +1,116 @@
+#define KNS_KICK_COMBO "DG"
+#define KNS_RESTRAIN_COMBO "GG"
+
+/datum/martial_art/kinaris
+ name = "KNS CQC"
+ id = MARTIALART_KNS_CQC
+ help_verb = /mob/living/carbon/human/proc/KNS_CQC_help
+ block_chance = 75
+
+/datum/martial_art/kinaris/proc/drop_restraining()
+ restraining = FALSE
+
+/datum/martial_art/kinaris/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ if(!can_use(A))
+ return FALSE
+ if(findtext(streak,KNS_KICK_COMBO))
+ streak = ""
+ Kick(A,D)
+ return TRUE
+ if(findtext(streak,KNS_RESTRAIN_COMBO))
+ streak = ""
+ Restrain(A,D)
+ return TRUE
+ return FALSE
+
+/datum/martial_art/kinaris/proc/Kick(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ if(!can_use(A))
+ return FALSE
+ if(!D.stat || !D.IsKnockdown())
+ D.visible_message("[A] kicks [D] back!", \
+ "[A] kicks you back!")
+ playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
+ var/atom/throw_target = get_edge_target_turf(D, A.dir)
+ D.throw_at(throw_target, 1, 14, A)
+ D.apply_damage(10, BRUTE)
+ log_combat(A, D, "kicked (KNS CQC)")
+ if(D.IsKnockdown() && !D.stat)
+ D.visible_message("[A] kicks [D]'s head, knocking [D.p_them()] out!", \
+ "[A] kicks your head, knocking you out!")
+ playsound(get_turf(A), 'sound/weapons/genhit1.ogg', 50, 1, -1)
+ D.SetSleeping(300)
+ D.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 150)
+ return TRUE
+
+/datum/martial_art/kinaris/proc/Restrain(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ if(restraining)
+ return
+ if(!can_use(A))
+ return FALSE
+ if(!D.stat)
+ D.visible_message("[A] locks [D] into a restraining position!", \
+ "[A] locks you into a restraining position!")
+ D.adjustStaminaLoss(20)
+ D.Stun(100)
+ restraining = TRUE
+ addtimer(CALLBACK(src, .proc/drop_restraining), 50, TIMER_UNIQUE)
+ return TRUE
+
+/datum/martial_art/kinaris/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ if(!can_use(A))
+ return FALSE
+ add_to_streak("G",D)
+ if(check_streak(A,D))
+ return TRUE
+ if(A.grab_state >= GRAB_AGGRESSIVE)
+ D.grabbedby(A, 1)
+ else
+ A.start_pulling(D, 1)
+ if(A.pulling)
+ D.stop_pulling()
+ log_combat(A, D, "grabbed", addition="aggressively")
+ A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab
+ return TRUE
+
+/datum/martial_art/kinaris/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ if(!can_use(A))
+ return FALSE
+ add_to_streak("D",D)
+ var/obj/item/I = null
+ if(check_streak(A,D))
+ return TRUE
+ if(prob(65))
+ if(!D.stat || !D.IsKnockdown() || !restraining)
+ I = D.get_active_held_item()
+ D.visible_message("[A] strikes [D]'s jaw with their hand!", \
+ "[A] strikes your jaw, disorienting you!")
+ playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
+ if(I && D.temporarilyRemoveItemFromInventory(I))
+ A.put_in_hands(I)
+ D.Jitter(2)
+ D.apply_damage(5, BRUTE)
+ else
+ D.visible_message("[A] attempted to disarm [D]!", \
+ "[A] attempted to disarm [D]!")
+ playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
+ log_combat(A, D, "disarmed (KNS CQC)", "[I ? " grabbing \the [I]" : ""]")
+ if(restraining && A.pulling == D)
+ D.visible_message("[A] puts [D] into a chokehold!", \
+ "[A] puts you into a chokehold!")
+ D.SetSleeping(400)
+ restraining = FALSE
+ if(A.grab_state < GRAB_NECK)
+ A.grab_state = GRAB_NECK
+ else
+ restraining = FALSE
+ return FALSE
+ return TRUE
+
+/mob/living/carbon/human/proc/KNS_CQC_help()
+ set name = "Remember The Basics"
+ set desc = "You try to remember some of the basics of training."
+ set category = "KNS CQC"
+ to_chat(usr, "You try to remember some of your training, undertaken when entering Kinaris employ.")
+
+ to_chat(usr, "CQC Kick: Disarm Grab. Knocks opponent away. Knocks out stunned or knocked down opponents.")
+ to_chat(usr, "Restrain: Grab Grab. Locks opponents into a restraining position, disarm to knock them out with a choke hold.")
diff --git a/code/game/objects/items/implants/implant_kinaris.dm b/code/game/objects/items/implants/implant_kinaris.dm
new file mode 100644
index 000000000..3a2039ab8
--- /dev/null
+++ b/code/game/objects/items/implants/implant_kinaris.dm
@@ -0,0 +1,38 @@
+/obj/item/implant/kinaris
+ name = "KNS ENH implant"
+ desc = "Enables enhanced reflexes, permitting the user to deploy specialised training."
+ icon = 'icons/obj/implants.dmi'
+ icon_state ="adrenal"
+ activated = 1
+ var/datum/martial_art/kinaris/style = new
+
+/obj/item/implant/kinaris/get_data()
+ var/dat = {"Implant Specifications:
+ Name: KNS ENH Implant
+ Life: Roughly twelve hours after death of host
+ Implant Details:
+ Function: Forces certain sections of the brain and body into a state of higher function, permitting the user to deploy specialised training."}
+ return dat
+
+/obj/item/implant/kinaris/activate()
+ . = ..()
+ var/mob/living/carbon/human/H = imp_in
+ if(!ishuman(H))
+ return
+ if(!H.mind)
+ return
+ if(H.mind.has_martialart(MARTIALART_KNS_CQC))
+ style.remove(H)
+ to_chat(H, "You disable your reflex implant.")
+ else
+ style.teach(H,1)
+ to_chat(H, "You feel your body burn briefly as you enable your reflex implant.")
+
+/obj/item/implanter/kinaris
+ name = "implanter (KNS ENH)"
+ imp_type = /obj/item/implant/kinaris
+
+/obj/item/implantcase/kinaris
+ name = "implant case - 'KNS ENH'"
+ desc = "A glass case containing an implant that can enhance the body of the user."
+ imp_type = /obj/item/implant/kinaris
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 60c7de146..f8d822431 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -242,6 +242,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
new/datum/stack_recipe("display case chassis", /obj/structure/displaycase_chassis, 5, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("loom", /obj/structure/loom, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),\
+ new/datum/stack_recipe("nestbox", /obj/structure/nestbox, 4, time = 30, one_per_turf = TRUE, on_floor = TRUE),\
null, \
new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 10),\
new/datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar, 3), \
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 2368bb7a1..e50c0ccec 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -613,12 +613,11 @@
if(prob(5))
name = "drone (760) action figure"
desc = "An action figure modeled after 'drone (760)', it seems to be a bit dusty."
+
+
/*
|| A Deck of Cards for playing various games of chance ||
*/
-
-
-
/obj/item/toy/cards
resistance_flags = FLAMMABLE
max_integrity = 50
@@ -636,7 +635,8 @@
playsound(src, 'sound/items/cardshuffle.ogg', 50, 1)
return BRUTELOSS
-/obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj) // Applies variables for supporting multiple types of card deck
+/obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj)
+// Applies variables for supporting multiple types of card deck
if(!istype(sourceobj))
return
@@ -658,53 +658,24 @@
/obj/item/toy/cards/deck/proc/populate_deck()
icon_state = "deck_[deckstyle]_full"
- for(var/i in 2 to 10)
- cards += "[i] of Hearts"
- cards += "[i] of Spades"
- cards += "[i] of Clubs"
- cards += "[i] of Diamonds"
- cards += "King of Hearts"
- cards += "King of Spades"
- cards += "King of Clubs"
- cards += "King of Diamonds"
- cards += "Queen of Hearts"
- cards += "Queen of Spades"
- cards += "Queen of Clubs"
- cards += "Queen of Diamonds"
- cards += "Jack of Hearts"
- cards += "Jack of Spades"
- cards += "Jack of Clubs"
- cards += "Jack of Diamonds"
- cards += "Ace of Hearts"
- cards += "Ace of Spades"
- cards += "Ace of Clubs"
- cards += "Ace of Diamonds"
+ var/_suits = list("Hearts", "Spades", "Clubs", "Diamonds")
+ var/_faces = list("Ace", "King", "Queen", "Jack")
+ for(var/suit in _suits)
+ for(var/i in 2 to 10)
+ cards += list(list(
+ "name" = "[i] of [suit]",
+ "icon_state" = "[i]of[lowertext(suit)]",
+ "rotation" = null,
+ "face_up" = null
+ ))
+ for(var/i in _faces)
+ cards += list(list(
+ "name" = "[i] of [suit]",
+ "icon_state" = "[lowertext(i)]of[lowertext(suit)]",
+ "rotation" = null,
+ "face_up" = null
+ ))
-//ATTACK HAND IGNORING PARENT RETURN VALUE
-//ATTACK HAND NOT CALLING PARENT
-/obj/item/toy/cards/deck/attack_hand(mob/user)
- draw_card(user)
-
-/obj/item/toy/cards/deck/proc/draw_card(mob/user)
- if(user.lying)
- return
- var/choice = null
- if(cards.len == 0)
- to_chat(user, "There are no more cards to draw!")
- return
- var/obj/item/toy/cards/singlecard/H = new/obj/item/toy/cards/singlecard(user.loc)
- if(holo)
- holo.spawned += H // track them leaving the holodeck
- choice = cards[1]
- H.cardname = choice
- H.parentdeck = src
- var/O = src
- H.apply_card_vars(H,O)
- src.cards.Cut(1,2) //Removes the top card from the list
- H.pickup(user)
- user.put_in_hands(H)
- user.visible_message("[user] draws a card from the deck.", "You draw a card from the deck.")
- update_icon()
/obj/item/toy/cards/deck/update_icon()
if(cards.len > original_size/2)
@@ -716,60 +687,6 @@
else if(cards.len == 0)
icon_state = "deck_[deckstyle]_empty"
-/obj/item/toy/cards/deck/attack_self(mob/user)
- if(cooldown < world.time - 50)
- cards = shuffle(cards)
- playsound(src, 'sound/items/cardshuffle.ogg', 50, 1)
- user.visible_message("[user] shuffles the deck.", "You shuffle the deck.")
- cooldown = world.time
-
-/obj/item/toy/cards/deck/attackby(obj/item/I, mob/living/user, params)
- if(istype(I, /obj/item/toy/cards/singlecard))
- var/obj/item/toy/cards/singlecard/SC = I
- if(SC.parentdeck == src)
- if(!user.temporarilyRemoveItemFromInventory(SC))
- to_chat(user, "The card is stuck to your hand, you can't add it to the deck!")
- return
- cards += SC.cardname
- user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.")
- qdel(SC)
- else
- to_chat(user, "You can't mix cards from other decks!")
- update_icon()
- else if(istype(I, /obj/item/toy/cards/cardhand))
- var/obj/item/toy/cards/cardhand/CH = I
- if(CH.parentdeck == src)
- if(!user.temporarilyRemoveItemFromInventory(CH))
- to_chat(user, "The hand of cards is stuck to your hand, you can't add it to the deck!")
- return
- cards += CH.currenthand
- user.visible_message("[user] puts [user.p_their()] hand of cards in the deck.", "You put the hand of cards in the deck.")
- qdel(CH)
- else
- to_chat(user, "You can't mix cards from other decks!")
- update_icon()
- else
- return ..()
-
-/obj/item/toy/cards/deck/MouseDrop(atom/over_object)
- . = ..()
- var/mob/living/M = usr
- if(!istype(M) || usr.incapacitated() || usr.lying)
- return
- if(Adjacent(usr))
- if(over_object == M && loc != M)
- M.put_in_hands(src)
- to_chat(usr, "You pick up the deck.")
-
- else if(istype(over_object, /obj/screen/inventory/hand))
- var/obj/screen/inventory/hand/H = over_object
- if(M.putItemFromInventoryInHandIfPossible(src, H.held_index))
- to_chat(usr, "You pick up the deck.")
-
- else
- to_chat(usr, "You can't reach it from here!")
-
-
/obj/item/toy/cards/cardhand
name = "hand of cards"
@@ -780,59 +697,9 @@
var/list/currenthand = list()
var/choice = null
-/obj/item/toy/cards/cardhand/attack_self(mob/user)
- var/list/handradial = list()
- interact(user)
-
- for(var/t in currenthand)
- handradial[t] = image(icon = src.icon, icon_state = "sc_[t]_[deckstyle]")
-
- if(usr.stat || !ishuman(usr))
- return
- var/mob/living/carbon/human/cardUser = usr
- var/O = src
- var/choice = show_radial_menu(usr,src, handradial, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 36, require_near = TRUE)
- if(!choice)
- return FALSE
- var/obj/item/toy/cards/singlecard/C = new/obj/item/toy/cards/singlecard(cardUser.loc)
- currenthand -= choice
- handradial -= choice
- C.parentdeck = parentdeck
- C.cardname = choice
- C.apply_card_vars(C,O)
- C.pickup(cardUser)
- cardUser.put_in_hands(C)
- cardUser.visible_message("[cardUser] draws a card from [cardUser.p_their()] hand.", "You take the [C.cardname] from your hand.")
-
- interact(cardUser)
- update_sprite()
- if(length(currenthand) == 1)
- var/obj/item/toy/cards/singlecard/N = new/obj/item/toy/cards/singlecard(loc)
- N.parentdeck = parentdeck
- N.cardname = currenthand[1]
- N.apply_card_vars(N,O)
- qdel(src)
- N.pickup(cardUser)
- cardUser.put_in_hands(N)
- to_chat(cardUser, "You also take [currenthand[1]] and hold it.")
-
-/obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
- if(istype(C))
- if(C.parentdeck == src.parentdeck)
- src.currenthand += C.cardname
- user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [C.cardname] to your hand.")
- qdel(C)
- interact(user)
- update_sprite(src)
- else
- to_chat(user, "You can't mix cards from other decks!")
- else
- return ..()
-
/obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
..()
newobj.deckstyle = sourceobj.deckstyle
- update_sprite()
newobj.card_hitsound = sourceobj.card_hitsound
newobj.card_force = sourceobj.card_force
newobj.card_throwforce = sourceobj.card_throwforce
@@ -840,6 +707,7 @@
newobj.card_throw_range = sourceobj.card_throw_range
newobj.card_attack_verb = sourceobj.card_attack_verb
newobj.resistance_flags = sourceobj.resistance_flags
+ update_icon()
/**
* check_menu: Checks if we are allowed to interact with a radial menu
@@ -857,13 +725,23 @@
/**
* This proc updates the sprite for when you create a hand of cards
*/
-/obj/item/toy/cards/cardhand/proc/update_sprite()
+/obj/item/toy/cards/cardhand/update_icon()
cut_overlays()
var/overlay_cards = currenthand.len
if(overlay_cards)
var/k = overlay_cards == 2 ? 1 : overlay_cards - 2
for(var/i = k; i <= overlay_cards; i++)
- var/card_overlay = image(icon=src.icon,icon_state="sc_[currenthand[i]]_[deckstyle]",pixel_x=(1-i+k)*3,pixel_y=(1-i+k)*3)
+ var/_card = currenthand[i]
+ var/_angle = _card["rotation"] || rotation
+ var/matrix/rot_matrix = matrix()
+ rot_matrix.Turn(GetAngle(_angle))
+ var/image/card_overlay = image(
+ icon = src.icon,
+ icon_state = "sc_[_card["icon_state"] || _card["name"]]_[deckstyle]",
+ pixel_x = (1 - i + k)*3,
+ pixel_y = (1 - i + k)*3,
+ )
+ card_overlay.transform = rot_matrix
add_overlay(card_overlay)
/obj/item/toy/cards/singlecard
@@ -872,8 +750,7 @@
icon = 'icons/obj/toy.dmi'
icon_state = "singlecard_down_nanotrasen"
w_class = WEIGHT_CLASS_TINY
- var/cardname = null
- var/flipped = 0
+ var/card = null
pixel_x = -5
@@ -882,7 +759,9 @@
if(ishuman(user))
var/mob/living/carbon/human/cardUser = user
if(cardUser.is_holding(src))
- cardUser.visible_message("[cardUser] checks [cardUser.p_their()] card.", "The card reads: [cardname].")
+ cardUser.visible_message(
+ "[cardUser] checks [cardUser.p_their()] card.",
+ "The card reads: [card["name"]]. [card["desc"] || ""]")
else
. += "You need to have the card in your hand to check it!"
@@ -892,65 +771,11 @@
set src in range(1)
if(!ishuman(usr) || !usr.canUseTopic(src, BE_CLOSE))
return
- if(!flipped)
- src.flipped = 1
- if (cardname)
- src.icon_state = "sc_[cardname]_[deckstyle]"
- src.name = src.cardname
- else
- src.icon_state = "sc_Ace of Spades_[deckstyle]"
- src.name = "What Card"
- src.pixel_x = 5
- else if(flipped)
- src.flipped = 0
- src.icon_state = "singlecard_down_[deckstyle]"
- src.name = "card"
- src.pixel_x = -5
-
-/obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
- if(istype(I, /obj/item/toy/cards/singlecard/))
- var/obj/item/toy/cards/singlecard/C = I
- if(C.parentdeck == src.parentdeck)
- var/obj/item/toy/cards/cardhand/H = new/obj/item/toy/cards/cardhand(user.loc)
- H.currenthand += C.cardname
- H.currenthand += src.cardname
- H.parentdeck = C.parentdeck
- H.apply_card_vars(H,C)
- to_chat(user, "You combine the [C.cardname] and the [src.cardname] into a hand.")
- qdel(C)
- qdel(src)
- H.pickup(user)
- user.put_in_active_hand(H)
- else
- to_chat(user, "You can't mix cards from other decks!")
-
- if(istype(I, /obj/item/toy/cards/cardhand/))
- var/obj/item/toy/cards/cardhand/H = I
- if(H.parentdeck == parentdeck)
- H.currenthand += cardname
- user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [cardname] to your hand.")
- qdel(src)
- H.interact(user)
- if(H.currenthand.len > 4)
- H.icon_state = "[deckstyle]_hand5"
- else if(H.currenthand.len > 3)
- H.icon_state = "[deckstyle]_hand4"
- else if(H.currenthand.len > 2)
- H.icon_state = "[deckstyle]_hand3"
- else
- to_chat(user, "You can't mix cards from other decks!")
- else
- return ..()
-
-/obj/item/toy/cards/singlecard/attack_self(mob/user)
- if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
- return
- Flip()
+ FlipCard()
/obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newobj,obj/item/toy/cards/sourceobj)
..()
newobj.deckstyle = sourceobj.deckstyle
- newobj.icon_state = "singlecard_down_[deckstyle]" // Without this the card is invisible until flipped. It's an ugly hack, but it works.
newobj.card_hitsound = sourceobj.card_hitsound
newobj.hitsound = newobj.card_hitsound
newobj.card_force = sourceobj.card_force
@@ -963,6 +788,7 @@
newobj.throw_range = newobj.card_throw_range
newobj.card_attack_verb = sourceobj.card_attack_verb
newobj.attack_verb = newobj.card_attack_verb
+ newobj.update_icon()
/*
|| Syndicate playing cards, for pretending you're Gambit and playing poker for the nuke disk. ||
diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm
index 2c6adffa8..78520bbfd 100644
--- a/code/game/turfs/simulated/floor/plating/asteroid.dm
+++ b/code/game/turfs/simulated/floor/plating/asteroid.dm
@@ -123,8 +123,9 @@
planetary_atmos = TRUE
baseturfs = /turf/open/lava/smooth/lava_land_surface
-
-
+/turf/open/floor/plating/asteroid/spacehermit
+ initial_gas_mix = OPENTURF_DEFAULT_ATMOS
+ baseturfs = /turf/open/floor/plating/asteroid/spacehermit
/turf/open/floor/plating/asteroid/airless
initial_gas_mix = AIRLESS_ATMOS
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 58c72cf90..53f9874f4 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -221,6 +221,22 @@
/turf/closed/mineral/iron/volcanic = 95)
+//For spacehermit stuff
+
+
+/turf/closed/mineral/random/spacehermit
+ icon_state = "rock"
+ turf_type = /turf/open/floor/plating/asteroid/spacehermit
+ baseturfs = /turf/open/floor/plating/asteroid/spacehermit
+ initial_gas_mix = OPENTURF_DEFAULT_ATMOS
+ defer_change = 1
+ mineralChance = 6
+ mineralSpawnChanceList = list(
+ /turf/closed/mineral/uranium = 2, /turf/closed/mineral/diamond = 1, /turf/closed/mineral/gold = 4, /turf/closed/mineral/titanium = 4,
+ /turf/closed/mineral/silver = 6, /turf/closed/mineral/plasma = 15, /turf/closed/mineral/iron = 40,
+ /turf/closed/mineral/gibtonite = 2, /turf/closed/mineral/bscrystal = 1)
+
+//end of spacehermit stuff
/turf/closed/mineral/iron
mineralType = /obj/item/stack/ore/iron
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 822d72abe..b8d8a1879 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -108,7 +108,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/roleplayroles = FALSE //for the roleplay roles
var/importantroles = FALSE //for things that define as important.
-
var/datum/species/pref_species = new /datum/species/human() //Mutant race
var/list/features = list("mcolor" = "FFF",
"tail_lizard" = "Smooth",
@@ -196,7 +195,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
"flavor_text" = "",
"silicon_flavor_text" = "",
"ooc_text" = "",
- "front_genitals_over_hair" = FALSE
+ "front_genitals_over_hair" = FALSE,
+ "cosmetic_head" = /datum/cosmetic_part/head/default,
+ "cosmetic_chest" = /datum/cosmetic_part/chest/default,
+ "cosmetic_l_arm" = /datum/cosmetic_part/arms/default,
+ "cosmetic_r_arm" = /datum/cosmetic_part/arms/default,
+ "cosmetic_l_leg" = /datum/cosmetic_part/legs/default,
+ "cosmetic_r_leg" = /datum/cosmetic_part/legs/default,
+ "cosmetic_markings" = FALSE
)
/// Security record note section
@@ -439,7 +445,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Custom Species Name:[custom_species ? custom_species : "None"]
"
dat += "Random Body
"
dat += "Always Random Body:[be_random_body ? "Yes" : "No"]
"
- dat += "
Cycle background:[bgstate]
"
+ dat += "
Select background:[bgstate]
"
dat += "Render front genitals over hair:[features["front_genitals_over_hair"] ? "Yes" : "No"]
"
var/use_skintones = pref_species.use_skintones
@@ -824,8 +830,55 @@ GLOBAL_LIST_EMPTY(preferences_datums)
mutant_category = 0
dat += ""
-
dat += ""
+
+ // HYPER EDIT: Cosmetic body parts
+
+ var/datum/cosmetic_part/cosmetic_head = features["cosmetic_head"]
+ var/datum/cosmetic_part/cosmetic_chest = features["cosmetic_chest"]
+ var/datum/cosmetic_part/cosmetic_arms = features["cosmetic_l_arm"]
+ var/datum/cosmetic_part/cosmetic_legs = features["cosmetic_l_leg"]
+
+ dat += "