diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 452a080be0..a86d9c30b1 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -3984,7 +3984,12 @@
/turf/open/floor/plasteel,
/area/security/brig)
"aiA" = (
-/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/airlock/external{
+ req_access_txt = "13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
"aiB" = (
@@ -6145,11 +6150,8 @@
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
"anE" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/airlock/external{
- req_access_txt = "13"
+/obj/structure/cable{
+ icon_state = "4-8"
},
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
@@ -6157,11 +6159,16 @@
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
"anG" = (
-/obj/structure/sign/warning/vacuum/external{
- pixel_y = 32
+/obj/machinery/power/apc{
+ areastring = "/area/crew_quarters/fitness/pool";
+ name = "Pool APC";
+ pixel_y = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
},
/turf/open/floor/plating,
-/area/maintenance/fore/secondary)
+/area/crew_quarters/fitness/pool)
"anH" = (
/obj/structure/sign/warning/electricshock,
/turf/closed/wall/r_wall,
@@ -6317,7 +6324,7 @@
dir = 10
},
/turf/closed/wall,
-/area/maintenance/fore/secondary)
+/area/crew_quarters/fitness/pool)
"aof" = (
/turf/closed/wall/r_wall,
/area/maintenance/solars/starboard/fore)
@@ -7145,14 +7152,16 @@
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
"aqs" = (
-/obj/machinery/door/airlock{
- id_tag = "Room Two";
- name = "Room Seven - Luxury Suite"
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
/obj/machinery/door/firedoor,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/plasteel/dark,
-/area/crew_quarters/dorms)
+/obj/machinery/door/airlock/public/glass{
+ name = "Pool"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"aqu" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -10298,6 +10307,11 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
+"azm" = (
+/obj/structure/closet/secure_closet/personal,
+/obj/item/toy/poolnoodle/blue,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"azo" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -44008,6 +44022,12 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/science/misc_lab)
+"ccS" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore/secondary)
"ccT" = (
/obj/machinery/light{
dir = 4
@@ -48182,6 +48202,9 @@
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers,
/turf/open/floor/plasteel,
/area/security/brig)
+"con" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"cop" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{
dir = 1
@@ -52170,6 +52193,14 @@
},
/turf/closed/wall/r_wall,
/area/engine/engineering)
+"cDM" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"cDN" = (
/obj/machinery/atmospherics/pipe/simple/orange/visible{
dir = 4
@@ -53192,6 +53223,11 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/open/floor/plasteel/white,
/area/science/circuit)
+"cVU" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/bed,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"cXU" = (
/obj/effect/turf_decal/tile/red,
/obj/machinery/light{
@@ -53199,6 +53235,9 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
+"cYG" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"daI" = (
/obj/structure/reagent_dispensers/foamtank,
/obj/effect/turf_decal/tile/yellow{
@@ -53283,6 +53322,9 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"diM" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"dly" = (
/obj/machinery/door/window/southright{
name = "Target Storage"
@@ -53297,13 +53339,8 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
"dqb" = (
-/obj/structure/bed,
-/obj/item/bedsheet/random,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 8
- },
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"dqu" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
@@ -53368,6 +53405,12 @@
/obj/machinery/portable_atmospherics/scrubber,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"dCr" = (
+/obj/structure/pool/Rboard,
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 8
+ },
+/area/crew_quarters/fitness/pool)
"dCV" = (
/obj/structure/table,
/obj/structure/cable{
@@ -53384,6 +53427,17 @@
/obj/item/gun/energy/laser/practice,
/turf/open/floor/plasteel,
/area/security/prison)
+"dFX" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
+"dGN" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"dKP" = (
/turf/closed/wall,
/area/maintenance/bar)
@@ -53407,6 +53461,9 @@
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
+"dOr" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"dPk" = (
/obj/structure/closet{
name = "Costume Closet"
@@ -53436,6 +53493,9 @@
"dVU" = (
/turf/open/floor/plating,
/area/space/nearstation)
+"dXo" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"dXq" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -53462,6 +53522,19 @@
},
/turf/open/space,
/area/solar/starboard/fore)
+"ebT" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
+"ecg" = (
+/turf/open/floor/plasteel/yellowsiding/corner{
+ dir = 4
+ },
+/area/crew_quarters/fitness/pool)
"edA" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -53497,6 +53570,9 @@
},
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
+"ekE" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"elh" = (
/obj/structure/chair/comfy/black{
dir = 8
@@ -53537,6 +53613,9 @@
},
/turf/open/floor/plasteel/freezer,
/area/security/prison)
+"esx" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"esZ" = (
/obj/machinery/door/airlock{
desc = "Private study room where nerds are probably playing Dungeons and Dragons 13e, or a place for blood cult rituals.";
@@ -53657,6 +53736,17 @@
},
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"eMs" = (
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance{
+ lootcount = 2;
+ name = "2maintenance loot spawner"
+ },
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore/secondary)
"eQb" = (
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
@@ -53678,6 +53768,11 @@
/obj/machinery/door/firedoor,
/turf/open/floor/plating,
/area/crew_quarters/cryopod)
+"eVJ" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"eVL" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/light_switch{
@@ -53719,6 +53814,11 @@
},
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"ffy" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 8
+ },
+/area/crew_quarters/fitness/pool)
"fgG" = (
/obj/structure/table/wood,
/obj/machinery/requests_console{
@@ -53792,6 +53892,17 @@
},
/turf/open/floor/plating,
/area/crew_quarters/fitness)
+"fpz" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore/secondary)
"fpI" = (
/obj/machinery/light{
dir = 1
@@ -53861,6 +53972,13 @@
"fxV" = (
/turf/closed/wall/r_wall,
/area/hallway/primary/central)
+"fyS" = (
+/obj/structure/pool/ladder{
+ dir = 1;
+ pixel_y = -24
+ },
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"fzd" = (
/obj/effect/turf_decal/stripes/corner,
/turf/open/floor/plasteel,
@@ -53912,6 +54030,11 @@
"fHG" = (
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
+"fIq" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"fIs" = (
/obj/structure/grille,
/obj/structure/lattice,
@@ -53922,14 +54045,17 @@
/obj/effect/landmark/event_spawn,
/turf/open/floor/plasteel,
/area/science/circuit)
+"fKF" = (
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"fKZ" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"fMZ" = (
-/obj/item/radio/intercom{
- dir = 4;
- name = "Station Intercom (General)";
- pixel_x = 27
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
},
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
+/area/crew_quarters/fitness/pool)
"fOA" = (
/obj/machinery/door/airlock{
name = "Theatre Backstage";
@@ -54016,6 +54142,14 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
+"geH" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"gfr" = (
/obj/structure/bed,
/turf/open/floor/plating,
@@ -54062,6 +54196,15 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
+"gni" = (
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"gob" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"gpD" = (
/obj/machinery/light_switch{
pixel_y = 28
@@ -54072,6 +54215,14 @@
},
/turf/open/floor/circuit,
/area/ai_monitored/nuke_storage)
+"grc" = (
+/obj/structure/rack,
+/obj/effect/spawner/lootdrop/maintenance{
+ lootcount = 2;
+ name = "2maintenance loot spawner"
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore/secondary)
"grA" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass{
@@ -54082,6 +54233,9 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness)
+"gvX" = (
+/turf/open/floor/plasteel/yellowsiding,
+/area/crew_quarters/fitness/pool)
"gwd" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -54154,6 +54308,14 @@
},
/turf/open/floor/wood,
/area/maintenance/bar)
+"gMV" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"gNC" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -54320,6 +54482,17 @@
},
/turf/open/floor/plating,
/area/space/nearstation)
+"hul" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
+"hzK" = (
+/turf/open/floor/plasteel/yellowsiding/corner{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"hBA" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/table,
@@ -54463,6 +54636,11 @@
/obj/structure/falsewall,
/turf/open/floor/plating,
/area/maintenance/bar)
+"inO" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 8
+ },
+/area/crew_quarters/fitness/pool)
"inR" = (
/obj/structure/chair/stool{
pixel_y = 8
@@ -54473,9 +54651,13 @@
},
/area/crew_quarters/theatre)
"iou" = (
-/obj/machinery/light/small,
-/turf/open/floor/mineral/titanium/blue,
-/area/crew_quarters/dorms)
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/firealarm{
+ dir = 4;
+ pixel_x = -24
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"ipA" = (
/turf/open/floor/plating,
/area/maintenance/department/medical/morgue)
@@ -54522,6 +54704,9 @@
/obj/effect/turf_decal/tile/green,
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
+"iwv" = (
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"iwB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -54536,6 +54721,18 @@
},
/turf/open/floor/wood,
/area/maintenance/bar)
+"iAv" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"iBv" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"iBU" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"iDo" = (
/obj/structure/grille,
/turf/open/space/basic,
@@ -54567,6 +54764,21 @@
},
/turf/closed/wall/r_wall,
/area/engine/gravity_generator)
+"iMv" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
+/obj/structure/table/glass,
+/obj/structure/bedsheetbin/towel,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = 27
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"iNn" = (
/obj/machinery/camera{
c_tag = "Kitchen Cold Room"
@@ -54575,6 +54787,14 @@
/obj/structure/reagent_dispensers/cooking_oil,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
+"iOe" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"iTq" = (
/obj/structure/chair/stool{
pixel_y = 8
@@ -54604,6 +54824,19 @@
/obj/item/coin/silver,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
+"iYE" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/structure/table/glass,
+/obj/item/storage/firstaid/regular,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"iYY" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"jaF" = (
/obj/machinery/light/small,
/obj/machinery/atmospherics/components/unary/tank/air{
@@ -54728,6 +54961,12 @@
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/kitchen)
+"juP" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"jvd" = (
/obj/structure/closet/athletic_mixed,
/turf/open/floor/plasteel,
@@ -54739,6 +54978,12 @@
/obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/plating,
/area/maintenance/port)
+"jzi" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"jzF" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"jAD" = (
/obj/structure/grille,
/turf/open/floor/plating/airless,
@@ -54878,19 +55123,22 @@
/turf/open/floor/plasteel,
/area/engine/engine_smes)
"jLT" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"jMW" = (
+/obj/structure/chair/comfy/black{
+ dir = 4
+ },
/obj/machinery/button/door{
- id = "Room Two";
- name = "Door Bolt Control";
- normaldoorcontrol = 1;
- pixel_x = 7;
- pixel_y = -24;
- specialfunctions = 4
+ id = "PoolShut";
+ name = "Pool Shutters";
+ pixel_y = 24
},
-/obj/structure/chair/comfy/brown{
- dir = 8
- },
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"jRw" = (
/obj/machinery/computer/arcade/minesweeper{
dir = 4
@@ -54915,6 +55163,14 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"jWJ" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"jZT" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -54927,6 +55183,18 @@
"kaq" = (
/turf/closed/wall/mineral/titanium,
/area/space/nearstation)
+"kcB" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
+"kdO" = (
+/obj/machinery/pool/controller,
+/turf/open/floor/plasteel/yellowsiding,
+/area/crew_quarters/fitness/pool)
"kdP" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -54991,11 +55259,9 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
"khB" = (
-/obj/machinery/door/airlock/external{
- req_access_txt = "13"
- },
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 8
+/obj/machinery/door/airlock/maintenance{
+ name = "Pool Maintenance";
+ req_access_txt = "12"
},
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
@@ -55117,6 +55383,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
/area/science/mixing)
+"kzV" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"kAH" = (
/obj/machinery/camera{
c_tag = "Bar West";
@@ -55175,6 +55444,14 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
+"kLk" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"kMt" = (
/obj/structure/lattice,
/turf/closed/wall,
@@ -55194,6 +55471,11 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"kNN" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 4
+ },
+/area/crew_quarters/fitness/pool)
"kPd" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/structure/cable{
@@ -55225,6 +55507,11 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/quartermaster/miningdock)
+"kSu" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"kWp" = (
/obj/structure/shuttle/engine/heater{
dir = 1
@@ -55238,6 +55525,12 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
+"kZa" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"kZw" = (
+/turf/open/floor/plasteel/yellowsiding,
+/area/crew_quarters/fitness/pool)
"laq" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/turf/open/floor/plasteel,
@@ -55267,6 +55560,12 @@
/obj/item/clothing/under/lawyer/red,
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
+"lnk" = (
+/obj/item/radio/intercom{
+ pixel_y = 25
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"lnu" = (
/obj/structure/chair/wood/normal{
dir = 4
@@ -55297,11 +55596,29 @@
},
/turf/open/floor/plasteel,
/area/hydroponics)
+"lvU" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 4
+ },
+/area/crew_quarters/fitness/pool)
+"lwb" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"lyR" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/security/prison)
+"lzC" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"lAB" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall,
@@ -55312,6 +55629,12 @@
},
/turf/open/floor/plating,
/area/construction/mining/aux_base)
+"lCo" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"lGV" = (
/obj/machinery/button/door{
id = "maintdiy";
@@ -55328,11 +55651,10 @@
/turf/open/floor/plasteel,
/area/science/circuit)
"lOe" = (
-/obj/machinery/shower{
- dir = 8
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 4
},
-/turf/open/floor/mineral/titanium/blue,
-/area/crew_quarters/dorms)
+/area/crew_quarters/fitness/pool)
"lPr" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "applebush"
@@ -55349,6 +55671,9 @@
},
/turf/open/floor/carpet,
/area/crew_quarters/theatre)
+"lSk" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"lUS" = (
/obj/structure/table/wood/fancy/black,
/obj/machinery/light/small,
@@ -55356,13 +55681,6 @@
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"lXE" = (
-/obj/structure/sign/warning/fire{
- desc = "A sign that states the labeled room's number.";
- dir = 5;
- icon_state = "roomnum";
- name = "Room Number 7";
- pixel_y = 24
- },
/obj/structure/chair/sofa/right,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -55377,6 +55695,12 @@
/obj/item/coin/gold,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"lZK" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"mbU" = (
/obj/machinery/vr_sleeper{
dir = 8
@@ -55397,10 +55721,36 @@
/obj/item/target/syndicate,
/turf/open/floor/plating,
/area/security/prison)
+"mcA" = (
+/turf/open/floor/plasteel/yellowsiding,
+/area/crew_quarters/fitness/pool)
+"meb" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/bed,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"mgF" = (
+/obj/structure/bed,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"miN" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"mjr" = (
/obj/structure/reagent_dispensers/keg/milk,
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"mjw" = (
+/turf/open/floor/plasteel/yellowsiding,
+/area/crew_quarters/fitness/pool)
+"mko" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"mkv" = (
/obj/machinery/camera{
c_tag = "Gravity Generator Room";
@@ -55460,12 +55810,12 @@
/turf/open/floor/wood,
/area/maintenance/bar)
"mse" = (
-/obj/machinery/airalarm{
- pixel_y = 23
+/obj/structure/pool/ladder{
+ dir = 1;
+ pixel_y = -24
},
-/obj/structure/chair/sofa/left,
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"mvt" = (
/obj/machinery/airalarm{
dir = 1;
@@ -55473,6 +55823,14 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
+"mwU" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"myh" = (
/obj/structure/piano,
/obj/structure/window/reinforced,
@@ -55646,6 +56004,9 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
+"mWU" = (
+/turf/open/floor/plasteel/yellowsiding,
+/area/crew_quarters/fitness/pool)
"nbT" = (
/obj/structure/cable{
icon_state = "0-8"
@@ -55691,6 +56052,9 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
+"nji" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"nkP" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance{
@@ -55715,6 +56079,9 @@
"nsA" = (
/turf/closed/wall,
/area/crew_quarters/abandoned_gambling_den)
+"ntF" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"nuw" = (
/obj/structure/table,
/obj/effect/spawner/lootdrop/maintenance{
@@ -55738,6 +56105,9 @@
},
/turf/open/floor/plating,
/area/construction)
+"nFm" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"nGf" = (
/obj/machinery/hydroponics/constructable,
/obj/machinery/light{
@@ -55877,9 +56247,11 @@
/turf/open/floor/wood,
/area/crew_quarters/bar)
"obc" = (
-/obj/structure/chair/sofa/right,
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"obd" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"oce" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -55900,12 +56272,32 @@
/obj/machinery/vending/kink,
/turf/open/floor/plating,
/area/maintenance/bar)
+"oer" = (
+/turf/open/floor/plasteel/yellowsiding,
+/area/crew_quarters/fitness/pool)
+"ofa" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"ofU" = (
/obj/structure/chair/comfy/black{
dir = 4
},
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
+"ogc" = (
+/obj/structure/pool/ladder{
+ dir = 2;
+ pixel_y = 24
+ },
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"ohq" = (
+/obj/machinery/airalarm{
+ dir = 4;
+ pixel_x = -22
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"old" = (
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -55973,6 +56365,9 @@
/obj/effect/spawner/structure/window,
/turf/open/floor/grass,
/area/crew_quarters/bar)
+"oxp" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"oyl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -56038,6 +56433,11 @@
/obj/effect/spawner/lootdrop/keg,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"oFi" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 4
+ },
+/area/crew_quarters/fitness/pool)
"oHB" = (
/turf/open/floor/plasteel/dark,
/area/crew_quarters/dorms)
@@ -56078,9 +56478,6 @@
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"oLn" = (
-/obj/machinery/light/small{
- dir = 4
- },
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance{
lootcount = 2;
@@ -56106,6 +56503,13 @@
/obj/machinery/disposal/bin,
/turf/open/floor/plasteel/white,
/area/science/circuit)
+"oVo" = (
+/obj/structure/pool/ladder,
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"oWT" = (
+/turf/open/floor/plasteel/yellowsiding,
+/area/crew_quarters/fitness/pool)
"oZl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/closet/wardrobe/pjs,
@@ -56148,6 +56552,14 @@
},
/turf/open/floor/plating,
/area/security/prison)
+"pkF" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -27;
+ pixel_y = 1
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"plm" = (
/obj/structure/reagent_dispensers/watertank/high,
/obj/effect/turf_decal/tile/yellow{
@@ -56243,6 +56655,14 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
+"pHa" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"pHl" = (
/obj/structure/table,
/obj/item/storage/box/beakers{
@@ -56301,6 +56721,9 @@
},
/turf/open/floor/plating,
/area/maintenance/disposal)
+"pNf" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"pPi" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -56339,6 +56762,15 @@
},
/turf/open/floor/plating,
/area/crew_quarters/fitness)
+"pSl" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"pSK" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"pTB" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable{
@@ -56375,6 +56807,16 @@
},
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
+"qeA" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/public/glass{
+ name = "Pool"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"qeQ" = (
/obj/effect/turf_decal/stripes/line{
dir = 8
@@ -56447,12 +56889,8 @@
/turf/open/space/basic,
/area/space/nearstation)
"qAm" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/machinery/light/small,
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"qBi" = (
/obj/structure/lattice,
/turf/closed/wall/r_wall,
@@ -56470,6 +56908,9 @@
},
/turf/open/space,
/area/solar/port/aft)
+"qLk" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"qLR" = (
/obj/structure/mirror{
pixel_y = 32
@@ -56522,6 +56963,12 @@
},
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
+"qWV" = (
+/obj/machinery/pool/filter{
+ pixel_y = 24
+ },
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"qXg" = (
/obj/structure/chair/sofa/left,
/turf/open/floor/plasteel,
@@ -56555,6 +57002,17 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/maintenance/disposal/incinerator)
+"rgW" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"rje" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/bed,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"rjQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/wood,
@@ -56720,12 +57178,22 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"rHr" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"rIA" = (
/obj/machinery/light{
dir = 8
},
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
+"rKg" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"rKP" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
@@ -56769,6 +57237,9 @@
},
/turf/open/floor/plasteel/dark,
/area/bridge/meeting_room)
+"rTT" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"rXl" = (
/obj/structure/chair/office/light,
/obj/machinery/firealarm{
@@ -56852,6 +57323,9 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/plating,
/area/maintenance/department/medical/morgue)
+"soq" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"spu" = (
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -56891,6 +57365,21 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
+"sth" = (
+/obj/structure/table/glass,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"str" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
+"stF" = (
+/obj/structure/closet/secure_closet/personal,
+/obj/item/toy/poolnoodle/yellow,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"sxs" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/table,
@@ -56967,6 +57456,9 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
+"sGo" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"sHx" = (
/obj/structure/table,
/obj/item/book/manual/hydroponics_pod_people{
@@ -57031,6 +57523,9 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
+"sNo" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"sNK" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/structure/cable{
@@ -57115,10 +57610,19 @@
/obj/machinery/door/firedoor,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar)
+"sZG" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 8
+ },
+/area/crew_quarters/fitness/pool)
"tal" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/hallway/secondary/service)
+"tbG" = (
+/obj/structure/bed,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"tgH" = (
/obj/structure/filingcabinet/employment,
/turf/open/floor/wood,
@@ -57220,6 +57724,9 @@
/obj/item/crowbar/red,
/turf/open/floor/plating,
/area/maintenance/port)
+"tyd" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"tyX" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -57236,6 +57743,25 @@
/obj/item/soap,
/turf/open/floor/mineral/titanium/blue,
/area/crew_quarters/dorms)
+"tAC" = (
+/obj/structure/closet/athletic_mixed,
+/obj/item/toy/poolnoodle/red,
+/obj/item/toy/poolnoodle/blue,
+/obj/item/toy/poolnoodle/yellow,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"tAH" = (
+/obj/machinery/door/airlock/external{
+ req_access_txt = "13"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore/secondary)
+"tAN" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"tCa" = (
/obj/structure/table/wood,
/obj/item/instrument/guitar{
@@ -57258,6 +57784,9 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
+"tFa" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"tJi" = (
/obj/machinery/airalarm{
dir = 4;
@@ -57317,6 +57846,9 @@
/obj/effect/turf_decal/loading_area,
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/kitchen)
+"tMM" = (
+/turf/open/floor/plasteel/yellowsiding,
+/area/crew_quarters/fitness/pool)
"tNF" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
@@ -57350,6 +57882,10 @@
},
/turf/open/floor/wood,
/area/maintenance/bar)
+"tSh" = (
+/obj/structure/bed,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"tWj" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4;
@@ -57370,6 +57906,11 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
+"tZk" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 1
+ },
+/area/crew_quarters/fitness/pool)
"uaj" = (
/obj/effect/turf_decal/tile/red{
dir = 4
@@ -57417,6 +57958,12 @@
},
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
+"uei" = (
+/obj/structure/sign/warning/vacuum/external{
+ pixel_y = 32
+ },
+/turf/open/floor/plating,
+/area/maintenance/fore/secondary)
"ufD" = (
/obj/machinery/vr_sleeper{
dir = 4
@@ -57457,16 +58004,26 @@
/area/crew_quarters/cryopod)
"ujS" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 6
+ dir = 10
},
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"ulM" = (
+/obj/structure/closet/secure_closet/personal,
+/obj/item/toy/poolnoodle/red,
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"unA" = (
/obj/machinery/light{
dir = 8
},
/turf/open/floor/wood,
/area/crew_quarters/bar)
+"unR" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 8
+ },
+/area/crew_quarters/fitness/pool)
"unW" = (
/obj/effect/landmark/event_spawn,
/obj/structure/cable{
@@ -57496,6 +58053,9 @@
},
/turf/open/floor/plasteel/grimy,
/area/security/detectives_office)
+"upW" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"usO" = (
/obj/machinery/vending/snack/random,
/obj/machinery/light/small{
@@ -57526,6 +58086,9 @@
/obj/structure/mineral_door/wood,
/turf/open/floor/wood,
/area/maintenance/bar)
+"uxe" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"uxY" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable{
@@ -57538,6 +58101,16 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
+"uzs" = (
+/turf/open/floor/plasteel/yellowsiding{
+ dir = 4
+ },
+/area/crew_quarters/fitness/pool)
+"uAH" = (
+/turf/open/floor/plasteel/yellowsiding/corner{
+ dir = 8
+ },
+/area/crew_quarters/fitness/pool)
"uBa" = (
/obj/structure/table,
/obj/item/reagent_containers/food/drinks/soda_cans/starkist{
@@ -57557,6 +58130,14 @@
},
/turf/open/space,
/area/solar/port/fore)
+"uEx" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"uEI" = (
/obj/structure/chair/comfy/brown{
dir = 8
@@ -57650,6 +58231,9 @@
/obj/machinery/power/terminal,
/turf/closed/wall/r_wall,
/area/engine/gravity_generator)
+"uRu" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"uRS" = (
/obj/structure/chair/stool{
pixel_y = 8
@@ -57658,6 +58242,10 @@
icon_state = "carpetsymbol"
},
/area/crew_quarters/theatre)
+"uSC" = (
+/obj/machinery/pool/drain,
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"uVS" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -57729,6 +58317,12 @@
},
/turf/open/floor/wood,
/area/security/vacantoffice)
+"veS" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"vhb" = (
/obj/effect/turf_decal/tile/blue{
dir = 4
@@ -57741,6 +58335,9 @@
},
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/locker)
+"vie" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"viF" = (
/obj/structure/table/wood,
/obj/item/instrument/trumpet,
@@ -57788,6 +58385,10 @@
},
/turf/open/floor/plasteel,
/area/engine/gravity_generator)
+"voW" = (
+/obj/structure/pool/Lboard,
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"vpY" = (
/obj/structure/closet/lasertag/blue,
/obj/item/clothing/under/pj/blue,
@@ -57854,6 +58455,14 @@
},
/turf/open/floor/wood,
/area/maintenance/bar)
+"vAl" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/machinery/camera{
+ c_tag = "Pool East";
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"vBa" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
@@ -57990,6 +58599,9 @@
},
/turf/open/floor/plasteel/white,
/area/science/circuit)
+"vSu" = (
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"vZA" = (
/obj/structure/lattice/catwalk,
/obj/structure/cable,
@@ -58001,6 +58613,12 @@
},
/turf/open/floor/wood,
/area/library)
+"wag" = (
+/obj/structure/chair/comfy/black{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"wbE" = (
/obj/effect/turf_decal/tile/blue{
alpha = 255
@@ -58026,6 +58644,9 @@
},
/turf/open/floor/carpet,
/area/crew_quarters/heads/captain)
+"wcR" = (
+/turf/open/floor/plasteel/yellowsiding/corner,
+/area/crew_quarters/fitness/pool)
"wdv" = (
/obj/structure/fans/tiny/invisible,
/turf/open/space/basic,
@@ -58040,15 +58661,11 @@
/turf/open/floor/plating,
/area/maintenance/bar)
"wig" = (
-/obj/structure/table/wood,
-/obj/item/flashlight/lamp/green{
- on = 0;
- pixel_x = -7;
- pixel_y = 12
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 5
},
-/obj/machinery/atmospherics/components/unary/vent_pump/on,
-/turf/open/floor/carpet,
-/area/crew_quarters/dorms)
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"wkN" = (
/turf/closed/wall,
/area/science/circuit)
@@ -58072,6 +58689,9 @@
},
/turf/open/floor/plating,
/area/construction/mining/aux_base)
+"wpR" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"wql" = (
/obj/structure/extinguisher_cabinet,
/turf/closed/wall/r_wall,
@@ -58121,12 +58741,21 @@
},
/turf/closed/wall,
/area/hallway/secondary/service)
+"wHk" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"wHz" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
+"wHU" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"wIG" = (
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -58145,6 +58774,13 @@
},
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
+"wQg" = (
+/obj/structure/pool/ladder{
+ dir = 2;
+ pixel_y = 24
+ },
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"wTf" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
@@ -58185,19 +58821,32 @@
/obj/effect/landmark/start/roboticist,
/turf/open/floor/plasteel/white,
/area/science/robotics/lab)
+"wWW" = (
+/obj/structure/closet/secure_closet/personal,
+/obj/item/toy/poolnoodle/yellow,
+/obj/machinery/button/door{
+ id = "PoolShut";
+ name = "Pool Shutters";
+ pixel_y = 24
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
+"wXa" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "PoolShut";
+ name = "Pool Shutters"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/crew_quarters/fitness/pool)
"wXl" = (
-/obj/structure/mirror{
- pixel_y = 32
- },
-/obj/structure/sink{
- dir = 1;
- pixel_y = 25
- },
-/obj/structure/toilet{
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/camera{
+ c_tag = "Pool West";
dir = 4
},
-/turf/open/floor/mineral/titanium/blue,
-/area/crew_quarters/dorms)
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"wYc" = (
/obj/machinery/vr_sleeper{
dir = 8
@@ -58213,6 +58862,22 @@
},
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/captain)
+"xaB" = (
+/obj/structure/closet/athletic_mixed,
+/obj/item/toy/poolnoodle/red,
+/obj/item/toy/poolnoodle/blue,
+/obj/item/toy/poolnoodle/yellow,
+/obj/machinery/button/door{
+ id = "PoolShut";
+ name = "Pool Shutters";
+ pixel_y = 24
+ },
+/obj/machinery/light{
+ dir = 4;
+ light_color = "#c1caff"
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"xbn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
@@ -58244,6 +58909,9 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"xgo" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"xgC" = (
/obj/structure/cable{
icon_state = "0-4"
@@ -58370,6 +59038,12 @@
/obj/machinery/light,
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
+"xsO" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"xtO" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"xtP" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -58388,6 +59062,9 @@
},
/turf/open/floor/plating,
/area/maintenance/fore)
+"xyT" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"xzd" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -58475,6 +59152,9 @@
/obj/machinery/vending/wardrobe/curator_wardrobe,
/turf/open/floor/carpet,
/area/library)
+"xFB" = (
+/turf/closed/wall,
+/area/crew_quarters/fitness/pool)
"xIa" = (
/obj/structure/table,
/obj/effect/spawner/lootdrop/grille_or_trash,
@@ -58565,6 +59245,13 @@
/obj/item/clothing/under/pj/red,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
+"xZL" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/crew_quarters/fitness/pool)
"ybj" = (
/obj/effect/turf_decal/stripes/line{
dir = 6
@@ -58609,6 +59296,12 @@
/obj/machinery/suit_storage_unit/rd,
/turf/open/floor/plasteel,
/area/science/mixing)
+"yfk" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
+"yfL" = (
+/turf/open/pool,
+/area/crew_quarters/fitness/pool)
"yhz" = (
/obj/structure/table,
/obj/item/folder/blue,
@@ -93145,7 +93838,7 @@ aif
aif
aif
aif
-aif
+fpz
bkV
jKP
alK
@@ -93397,12 +94090,12 @@ abp
abp
uhm
ahn
-aiA
-aiA
+ahn
aiA
ahn
-oLn
-anF
+ahn
+grc
+ccS
aod
ahn
apx
@@ -93654,12 +94347,12 @@ wdv
abp
nQi
ahn
-aaa
-aaf
-aaf
+ahn
+uei
ahn
ahn
-anE
+grc
+ccS
aod
aoK
oyX
@@ -93911,11 +94604,11 @@ aaa
adR
ahn
ahn
-aaa
-aaa
-aaa
-aaf
ahn
+tAH
+ahn
+ahn
+eMs
anG
aoe
aoL
@@ -94168,13 +94861,13 @@ aaa
gXs
aaa
aaa
-aaa
-aaa
-aaa
-aaa
+gJi
+gJi
+gJi
+ahn
ahn
khB
-ahn
+dFX
ahn
ahn
ahn
@@ -94428,17 +95121,17 @@ aaa
aaa
aaa
aaa
-aaa
-aag
-aag
-aag
-arf
+dFX
+wWW
+iwv
+lCo
+ohq
wXl
iou
-arf
-eSe
+pkF
+xZL
wig
-vyp
+str
rrM
clO
asZ
@@ -94685,17 +95378,17 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-arf
-lOe
-pgf
-gzf
-eQb
+miN
+ulM
+wcR
+oFi
+oFi
+oFi
+oFi
+oFi
+ecg
jLT
-arf
+hul
arm
fHG
aya
@@ -94942,15 +95635,15 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-arf
-arf
-arf
-arf
-oAB
+miN
+azm
+oer
+qWV
+ekE
+oVo
+ekE
+ekE
+tZk
ujS
aqs
coh
@@ -95199,17 +95892,17 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-arf
-obc
-eQb
-qAm
-arf
+miN
+stF
+oer
+ekE
+ekE
+ekE
+ekE
+ekE
+tZk
+iwv
+qeA
lXE
pFX
mOO
@@ -95456,17 +96149,17 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-arf
-mse
-fMZ
-dqb
-arf
+dFX
+lnk
+oer
+ogc
+ekE
+ekE
+ekE
+fyS
+tZk
+iwv
+hul
xzd
sJI
jJg
@@ -95713,17 +96406,17 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aae
-aaa
-aaa
-arf
-arf
-arf
-arf
-arf
+miN
+iwv
+oer
+ekE
+ekE
+ekE
+ekE
+ekE
+tZk
+iBv
+lZK
fZm
jmV
epD
@@ -95970,16 +96663,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-gXs
+miN
+iwv
+kdO
+ekE
+ekE
+uSC
+ekE
+ekE
+tZk
+pSK
ewu
pQp
pQp
@@ -96227,16 +96920,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-gXs
-gXs
+miN
+iwv
+oer
+ekE
+ekE
+ekE
+ekE
+ekE
+tZk
+pSK
aqu
aro
aro
@@ -96484,16 +97177,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-gXs
-gXs
-aaa
+dFX
+jMW
+oer
+ogc
+ekE
+ekE
+ekE
+fyS
+tZk
+pSK
aqu
aro
aro
@@ -96741,16 +97434,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-gXs
-gXs
-aaa
-aaa
+miN
+sth
+oer
+ekE
+ekE
+ekE
+ekE
+ekE
+tZk
+pSK
aqu
aro
aro
@@ -96998,16 +97691,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-aaa
-gXs
-gXs
-aaa
-aaa
-aaa
+miN
+wag
+oer
+ekE
+ekE
+voW
+ekE
+ekE
+tZk
+pSK
aqu
aro
aro
@@ -97255,16 +97948,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaa
-gXs
-gXs
-aaa
-aaa
-aaa
-aaa
+miN
+tAC
+uAH
+ffy
+ffy
+dCr
+ffy
+ffy
+hzK
+iYE
aqu
aro
aro
@@ -97512,16 +98205,16 @@ aaa
aaa
aaa
aaa
-aaa
-aaa
-aaa
-aaf
-aaf
-aaa
-aaa
-aaa
-aaa
-aaa
+dFX
+xaB
+mgF
+mgF
+mgF
+vAl
+rje
+rje
+rje
+iMv
vmQ
pQp
pQp
@@ -97768,18 +98461,18 @@ aaS
aaS
aaS
aaS
-aaS
-aaS
-aaS
-aaf
-aaf
-aaa
-aaa
-aaa
-aaa
-aaa
-aaa
aaa
+dFX
+dFX
+miN
+miN
+miN
+dFX
+miN
+miN
+miN
+dFX
+dFX
aaa
aaa
arj
@@ -98025,10 +98718,10 @@ aaf
aaa
aaf
aaa
-aaf
aaa
-aaS
-aaf
+aaa
+aaa
+aaa
aaa
aaa
aaa
@@ -98284,7 +98977,7 @@ ads
adS
aeG
aaa
-aaS
+gXs
aaa
aaa
aaa
diff --git a/code/__DEFINES/move_force.dm b/code/__DEFINES/move_force.dm
index ec31388c72..1f8819b0c8 100644
--- a/code/__DEFINES/move_force.dm
+++ b/code/__DEFINES/move_force.dm
@@ -17,4 +17,4 @@
#define MOVE_FORCE_NORMAL MOVE_FORCE_DEFAULT
#define MOVE_FORCE_WEAK (MOVE_FORCE_DEFAULT / 2)
#define MOVE_FORCE_VERY_WEAK ((MOVE_FORCE_DEFAULT / MOVE_FORCE_CRUSH_RATIO) + 1)
-#define MOVE_FORCE_EXTREMELY_WEAK (MOVE_FORCE_DEFAULT / (MOVE_FORCE_CRUSH_RATIO * 3))
\ No newline at end of file
+#define MOVE_FORCE_EXTREMELY_WEAK (MOVE_FORCE_DEFAULT / (MOVE_FORCE_CRUSH_RATIO * 3))
diff --git a/code/__DEFINES/pool.dm b/code/__DEFINES/pool.dm
new file mode 100644
index 0000000000..1e66109dc7
--- /dev/null
+++ b/code/__DEFINES/pool.dm
@@ -0,0 +1,13 @@
+//TODO: move these to their own file
+#define POOL_FRIGID 1
+#define POOL_COOL 2
+#define POOL_NORMAL 3
+#define POOL_WARM 4
+#define POOL_SCALDING 5
+
+GLOBAL_LIST_INIT(blacklisted_pool_reagents, list(
+ /datum/reagent/toxin/plasma, /datum/reagent/oxygen, /datum/reagent/nitrous_oxide, /datum/reagent/nitrogen, //gases
+ /datum/reagent/fermi, //blanket fermichem ban sorry. this also covers mkultra, genital enlargers, etc etc.
+ /datum/reagent/drug/aphrodisiac, /datum/reagent/drug/anaphrodisiac, /datum/reagent/drug/aphrodisiacplus, /datum/reagent/drug/anaphrodisiacplus, //literally asking for prefbreaks
+ /datum/reagent/consumable/femcum, /datum/reagent/consumable/semen //NO.
+ ))
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 145f879b90..91ba57456c 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -137,7 +137,7 @@
#define TRAIT_NOMARROW "nomarrow" // You don't make blood, with chemicals or nanites.
#define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat.
#define TRAIT_EXEMPT_HEALTH_EVENTS "exempt-health-events"
-
+#define TRAIT_SWIMMING "swimming" //only applied by /datum/element/swimming, for checking
//non-mob traits
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it
diff --git a/code/datums/elements/swimming.dm b/code/datums/elements/swimming.dm
new file mode 100644
index 0000000000..d16ef6625f
--- /dev/null
+++ b/code/datums/elements/swimming.dm
@@ -0,0 +1,21 @@
+/// Just for marking when someone's swimming.
+/datum/element/swimming
+ element_flags = ELEMENT_DETACH
+
+/datum/element/swimming/Attach(datum/target)
+ if((. = ..()) == ELEMENT_INCOMPATIBLE)
+ return
+ if(!isliving(target))
+ return ELEMENT_INCOMPATIBLE
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/check_valid)
+ ADD_TRAIT(target, TRAIT_SWIMMING, TRAIT_SWIMMING) //seriously there's only one way to get this
+
+/datum/element/swimming/Detach(datum/target)
+ . = ..()
+ UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
+ REMOVE_TRAIT(target, TRAIT_SWIMMING, TRAIT_SWIMMING)
+
+/datum/element/swimming/proc/check_valid(datum/source)
+ var/mob/living/L = source
+ if(!istype(L.loc, /turf/open/pool))
+ source.RemoveElement(/datum/element/swimming)
diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm
index ad4c0c232d..0732a3d60e 100644
--- a/code/game/area/Space_Station_13_areas.dm
+++ b/code/game/area/Space_Station_13_areas.dm
@@ -1367,3 +1367,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/tcommsat/lounge
name = "Telecommunications Satellite Lounge"
icon_state = "tcomsatlounge"
+
+/area/crew_quarters/fitness/pool
+ name = "Pool Area"
+ icon_state = "pool"
diff --git a/code/game/sound.dm b/code/game/sound.dm
index e7562476a8..11e026109a 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -184,6 +184,8 @@
soundin = pick('sound/items/bikehorn.ogg', 'sound/items/AirHorn2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/items/AirHorn.ogg', 'sound/effects/reee.ogg', 'sound/items/WEEOO1.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/beepsky/creep.ogg','sound/magic/Fireball.ogg' ,'sound/effects/pray.ogg', 'sound/voice/hiss1.ogg','sound/machines/buzz-sigh.ogg', 'sound/machines/ping.ogg', 'sound/weapons/flashbang.ogg', 'sound/weapons/bladeslice.ogg')
if("goose")
soundin = pick('sound/creatures/goose1.ogg', 'sound/creatures/goose2.ogg', 'sound/creatures/goose3.ogg', 'sound/creatures/goose4.ogg')
+ if("water_wade")
+ soundin = pick('sound/effects/water_wade1.ogg', 'sound/effects/water_wade2.ogg', 'sound/effects/water_wade3.ogg', 'sound/effects/water_wade4.ogg')
//START OF CIT CHANGES - adds random vore sounds
if ("struggle_sound")
soundin = pick( 'sound/vore/pred/struggle_01.ogg','sound/vore/pred/struggle_02.ogg','sound/vore/pred/struggle_03.ogg',
diff --git a/code/modules/mob/living/simple_animal/hostile/sharks.dm b/code/modules/mob/living/simple_animal/hostile/sharks.dm
new file mode 100644
index 0000000000..c94e49b286
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/sharks.dm
@@ -0,0 +1,91 @@
+//shameless copies of carps.
+
+/mob/living/simple_animal/hostile/shark
+ name = "Space Shark"
+ desc = "The best terror of the seas, next to the kraken."
+ icon_state = "shark"
+ icon_living = "shark"
+ icon = 'icons/mob/sharks.dmi'
+ icon_dead = "shark_dead"
+ icon_gib = "carp_gib"
+ environment_smash = 0
+ speak_chance = 0
+ turns_per_move = 3
+ butcher_results = list(/obj/item/reagent_containers/food/snacks/carpmeat = 3)
+ response_help = "pets"
+ response_disarm = "gently pushes aside"
+ response_harm = "hits"
+ speed = 0
+ maxHealth = 75
+ health = 75
+ harm_intent_damage = 18
+ melee_damage_lower = 18
+ melee_damage_upper = 18
+ attacktext = "maims"
+ attack_sound = 'sound/weapons/bite.ogg'
+ gold_core_spawnable = 1
+ //Space shark aren't affected by cold.
+ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
+ minbodytemp = 0
+ maxbodytemp = 1500
+
+ faction = list("shark")
+
+/mob/living/simple_animal/hostile/shark/Process_Spacemove(var/movement_dir = 0)
+ return 1 //No drifting in space for space sharks....either!
+
+/mob/living/simple_animal/hostile/shark/FindTarget()
+ . = ..()
+ if(.)
+ emote("me", 1, "growls at [.]!")
+
+/mob/living/simple_animal/hostile/shark/AttackingTarget()
+ . =..()
+ var/mob/living/carbon/L = .
+ if(istype(L))
+ if(prob(25))
+ L.Knockdown(20)
+ L.visible_message("\the [src] knocks down \the [L]!")
+
+
+/mob/living/simple_animal/hostile/shark/laser
+ name = "Laser-Shark"
+ desc = "NOW we've jumped the shark."
+ icon_state = "lasershark"
+ icon_living = "lasershark"
+ icon_dead = "lasershark_dead"
+ icon_gib = "carp_gib"
+ ranged = 1
+ retreat_distance = 3
+ minimum_distance = 0 //Between shots they can and will close in to nash
+ projectiletype = /obj/item/projectile/beam/laser/heavylaser
+ projectilesound = 'sound/weapons/lasercannonfire.ogg'
+ maxHealth = 50
+ health = 50
+
+/mob/living/simple_animal/hostile/shark/kawaii
+ name = "Kawaii Shark"
+ desc = "Senpai~ Notice me.."
+ icon_state = "kawaiishark"
+ icon_living = "kawaiishark"
+ icon_dead = "kawaiishark_dead"
+ speak = list("Oh Senpai","Notice me senpai!","Oh my...","Kawaii~")
+ speak_emote = list("lovingly says","says")
+ speak_chance = 2
+ turns_per_move = 3
+ butcher_results = list(/mob/living/simple_animal/butterfly = 3)
+ maxHealth = 50
+ health = 50
+ maxbodytemp = INFINITY
+
+ harm_intent_damage = 0
+ melee_damage_lower = 0
+ melee_damage_upper = 0
+ attacktext = "violently hugs"
+ vision_range = 0
+
+/mob/living/simple_animal/hostile/shark/kawaii/death()
+ say("Senpai, you noticed~!")
+ LoseAggro()
+ ..()
+ walk(src, 0)
diff --git a/code/modules/pool/pool_controller.dm b/code/modules/pool/pool_controller.dm
new file mode 100644
index 0000000000..681adb0ef3
--- /dev/null
+++ b/code/modules/pool/pool_controller.dm
@@ -0,0 +1,422 @@
+#define POOL_NO_OVERDOSE_MEDICINE_MAX 5 //max units of no-overdose medicine to allow mobs to have through duplication
+
+//Originally stolen from paradise. Credits to tigercat2000.
+//Modified a lot by Kokojo and Tortellini Tony for hippiestation.
+//Heavily refactored by tgstation
+/obj/machinery/pool
+ icon = 'icons/obj/machines/pool.dmi'
+ anchored = TRUE
+ resistance_flags = INDESTRUCTIBLE
+
+/obj/machinery/pool/controller
+ name = "\improper Pool Controller"
+ desc = "An advanced substance generation and fluid tank management system that can refill the contents of a pool to a completely different substance in minutes."
+ icon_state = "poolc_3"
+ density = TRUE
+ use_power = TRUE
+ idle_power_usage = 75
+ /// How far it scans for pool objects
+ var/scan_range = 6
+ /// Is pool mist currently on?
+ var/mist_state = FALSE
+ /// Linked mist effects
+ var/list/obj/effect/mist/linked_mist = list()
+ /// Pool turfs
+ var/list/turf/open/pool/linked_turfs = list()
+ /// All mobs in pool
+ var/list/mob/living/mobs_in_pool = list()
+ /// Is the pool bloody?
+ var/bloody = 0
+ /// Last time we process_reagents()'d
+ var/last_reagent_process = 0
+ /// Maximum amount we will take from a beaker
+ var/max_beaker_transfer = 100
+ /// Minimum amount of a reagent for it to work on us
+ var/min_reagent_amount = 10
+ /// ADMINBUS ONLY - WHETHER OR NOT WE HAVE NOREACT ;)
+ var/noreact_reagents = FALSE
+ /// how fast in deciseconds between reagent processes
+ var/reagent_tick_interval = 5
+ /// Can we use unsafe temperatures
+ var/temperature_unlocked = FALSE
+ /// See __DEFINES/pool.dm, temperature defines
+ var/temperature = POOL_NORMAL
+ /// Whether or not the pool can be drained
+ var/drainable = FALSE
+ // Whether or not the pool is drained
+ var/drained = FALSE
+ /// Pool drain
+ var/obj/machinery/pool/drain/linked_drain
+ /// Pool filter
+ var/obj/machinery/pool/filter/linked_filter
+ /// Next world.time you can interact with settings
+ var/interact_delay = 0
+ /// Airlock style shocks
+ var/shocked = FALSE
+ /// Old reagent color, used to determine if update_color needs to reset colors.
+ var/old_rcolor
+ /// Just to prevent spam
+ var/draining = FALSE
+ /// Reagent blacklisting
+ var/respect_reagent_blacklist = TRUE
+
+/obj/machinery/pool/controller/examine(mob/user)
+ . = ..()
+ . += "Alt click to drain reagents."
+
+/obj/machinery/pool/controller/Initialize()
+ . = ..()
+ START_PROCESSING(SSfastprocess, src)
+ create_reagents(1000)
+ if(noreact_reagents)
+ reagents.reagents_holder_flags |= NO_REACT
+ wires = new /datum/wires/poolcontroller(src)
+ scan_things()
+
+/obj/machinery/pool/controller/Destroy()
+ STOP_PROCESSING(SSprocessing, src)
+ linked_drain = null
+ linked_filter = null
+ linked_turfs.Cut()
+ mobs_in_pool.Cut()
+ return ..()
+
+/obj/machinery/pool/controller/proc/scan_things()
+ var/list/cached = range(scan_range, src)
+ for(var/turf/open/pool/W in cached)
+ linked_turfs += W
+ W.controller = src
+ for(var/obj/machinery/pool/drain/pooldrain in cached)
+ linked_drain = pooldrain
+ linked_drain.controller = src
+ break
+ for(var/obj/machinery/pool/filter/F in cached)
+ linked_filter = F
+ linked_filter.controller = src
+ break
+
+/obj/machinery/pool/controller/emag_act(mob/user)
+ . = ..()
+ if(!(obj_flags & EMAGGED)) //If it is not already emagged, emag it.
+ to_chat(user, "You disable the [src]'s safety features.")
+ do_sparks(5, TRUE, src)
+ obj_flags |= EMAGGED
+ temperature_unlocked = TRUE
+ drainable = TRUE
+ log_game("[key_name(user)] emagged [src]")
+ message_admins("[key_name_admin(user)] emagged [src]")
+ else
+ to_chat(user, "The interface on [src] is already too damaged to short it again.")
+ return
+
+/obj/machinery/pool/controller/AltClick(mob/user)
+ . = ..()
+ if(!isliving(user) || !user.Adjacent(src) || !user.CanReach(src) || user.IsStun() || user.IsKnockdown() || user.incapacitated())
+ return FALSE
+ visible_message("[user] starts to drain [src]!")
+ draining = TRUE
+ if(!do_after(user, 50, target = src))
+ draining = FALSE
+ return TRUE
+ reagents.remove_all(INFINITY)
+ visible_message("[user] drains [src].")
+ say("Reagents cleared.")
+ update_color()
+ draining = FALSE
+ return TRUE
+
+/obj/machinery/pool/controller/attackby(obj/item/W, mob/user)
+ if(shocked && !(stat & NOPOWER))
+ shock(user,50)
+ if(stat & (BROKEN))
+ return
+ if(istype(W,/obj/item/reagent_containers))
+ if(W.reagents.total_volume) //check if there's reagent
+ user.visible_message("[user] is feeding [src] some chemicals from [W].")
+ if(do_after(user, 50, target = src))
+ for(var/datum/reagent/R in W.reagents.reagent_list)
+ if(R.type in GLOB.blacklisted_pool_reagents)
+ to_chat(user, "[src] cannot accept [R.name].")
+ return
+ if(R.reagent_state == SOLID)
+ to_chat(user, "The pool cannot accept reagents in solid form!.")
+ return
+ reagents.clear_reagents()
+ // This also reacts them. No nitroglycerin deathpools, sorry gamers :(
+ W.reagents.trans_to(reagents, max_beaker_transfer)
+ user.visible_message("[src] makes a slurping noise.", "All of the contents of [W] are quickly suctioned out by the machine!= min_reagent_amount) && (!respect_reagent_blacklist || R.can_synth))
+ reagent_names += R.name
+ else
+ reagents.remove_reagent(R.type, INFINITY)
+ rejected += R.name
+ if(length(reagent_names))
+ reagent_names = english_list(reagent_names)
+ var/msg = "POOL: [key_name(user)] has changed [src]'s chems to [reagent_names]"
+ log_game(msg)
+ message_admins(msg)
+ if(length(rejected))
+ rejected = english_list(rejected)
+ to_chat(user, "[src] rejects the following chemicals as they do not have at least [min_reagent_amount] units of volume: [rejected]")
+ update_color()
+ else
+ to_chat(user, "[src] beeps unpleasantly as it rejects the beaker. Why are you trying to feed it an empty beaker?")
+ return
+ else if(panel_open && is_wire_tool(W))
+ wires.interact(user)
+ else
+ return ..()
+
+/obj/machinery/pool/controller/screwdriver_act(mob/living/user, obj/item/W)
+ . = ..()
+ if(.)
+ return TRUE
+ cut_overlays()
+ panel_open = !panel_open
+ to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
+ W.play_tool_sound(src)
+ if(panel_open)
+ add_overlay("wires")
+ return TRUE
+
+//procs
+/obj/machinery/pool/controller/proc/shock(mob/user, prb)
+ if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
+ return FALSE
+ if(!prob(prb))
+ return FALSE
+ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
+ s.set_up(5, 1, src)
+ s.start()
+ if(electrocute_mob(user, get_area(src), src, 0.7))
+ return TRUE
+ else
+ return FALSE
+
+/obj/machinery/pool/controller/proc/process_reagents()
+ if(last_reagent_process > world.time + reagent_tick_interval)
+ return
+ if(!length(reagents.reagent_list))
+ return
+ for(var/turf/open/pool/W in linked_turfs)
+ for(var/mob/living/carbon/human/swimee in W)
+ for(var/datum/reagent/R in reagents.reagent_list)
+ if(R.reagent_state == SOLID)
+ R.reagent_state = LIQUID
+ if(!swimee.reagents.has_reagent(POOL_NO_OVERDOSE_MEDICINE_MAX))
+ swimee.reagents.add_reagent(R.type, 0.5) //osmosis
+ reagents.reaction(swimee, VAPOR, 0.03) //3 percent. Need to find a way to prevent this from stacking chems at some point like the above.
+ for(var/obj/objects in W)
+ if(W.reagents)
+ W.reagents.reaction(objects, VAPOR, 1)
+ last_reagent_process = world.time
+
+/obj/machinery/pool/controller/process()
+ updateUsrDialog()
+ if(stat & (NOPOWER|BROKEN))
+ return
+ if(drained)
+ return
+ process_pool()
+ process_reagents()
+
+/obj/machinery/pool/controller/proc/process_pool()
+ if(drained)
+ return
+ for(var/mob/living/M in mobs_in_pool)
+ switch(temperature) //Apply different effects based on what the temperature is set to.
+ if(POOL_SCALDING) //Scalding
+ M.adjust_bodytemperature(50,0,500)
+ if(POOL_WARM) //Warm
+ M.adjust_bodytemperature(20,0,360) //Heats up mobs till the termometer shows up
+ //Normal temp does nothing, because it's just room temperature water.
+ if(POOL_COOL)
+ M.adjust_bodytemperature(-20,250) //Cools mobs till the termometer shows up
+ if(POOL_FRIGID) //Freezing
+ M.adjust_bodytemperature(-60) //cool mob at -35k per cycle, less would not affect the mob enough.
+ if(M.bodytemperature <= 50 && !M.stat)
+ M.apply_status_effect(/datum/status_effect/freon)
+ if(ishuman(M))
+ var/mob/living/carbon/human/drownee = M
+ if(!drownee || drownee.stat == DEAD)
+ return
+ if(drownee.resting && !drownee.internal)
+ if(drownee.stat != CONSCIOUS)
+ drownee.adjustOxyLoss(9)
+ else
+ drownee.adjustOxyLoss(4)
+ if(prob(35))
+ to_chat(drownee, "You're drowning!")
+
+/obj/machinery/pool/controller/proc/set_bloody(state)
+ if(bloody == state)
+ return
+ bloody = state
+ update_color()
+
+/obj/machinery/pool/controller/proc/update_color()
+ if(drained)
+ return
+ var/rcolor
+ if(reagents.reagent_list.len)
+ rcolor = mix_color_from_reagents(reagents.reagent_list)
+ if(rcolor == old_rcolor)
+ return // small performance upgrade hopefully?
+ old_rcolor = rcolor
+ for(var/X in linked_turfs)
+ var/turf/open/pool/color1 = X
+ if(bloody)
+ if(rcolor)
+ var/thecolor = BlendRGB(rgb(150, 20, 20), rcolor, 0.5)
+ color1.watereffect.add_atom_colour(thecolor, FIXED_COLOUR_PRIORITY)
+ color1.watertop.add_atom_colour(thecolor, FIXED_COLOUR_PRIORITY)
+ else
+ var/thecolor = rgb(150, 20, 20)
+ color1.watereffect.add_atom_colour(thecolor, FIXED_COLOUR_PRIORITY)
+ color1.watertop.add_atom_colour(thecolor, FIXED_COLOUR_PRIORITY)
+ else if(!bloody && rcolor)
+ color1.watereffect.add_atom_colour(rcolor, FIXED_COLOUR_PRIORITY)
+ color1.watertop.add_atom_colour(rcolor, FIXED_COLOUR_PRIORITY)
+ else
+ color1.watereffect.remove_atom_colour(FIXED_COLOUR_PRIORITY)
+ color1.watertop.remove_atom_colour(FIXED_COLOUR_PRIORITY)
+
+/obj/machinery/pool/controller/proc/update_temp()
+ if(mist_state)
+ if(temperature < POOL_SCALDING)
+ mist_off()
+ else
+ if(temperature == POOL_SCALDING)
+ mist_on()
+ update_icon()
+
+/obj/machinery/pool/controller/update_icon()
+ . = ..()
+ icon_state = "poolc_[temperature]"
+
+/obj/machinery/pool/controller/proc/CanUpTemp(mob/user)
+ if(temperature == POOL_WARM && (temperature_unlocked || issilicon(user) || IsAdminGhost(user)) || temperature < POOL_WARM)
+ return TRUE
+ return FALSE
+
+/obj/machinery/pool/controller/proc/CanDownTemp(mob/user)
+ if(temperature == POOL_COOL && (temperature_unlocked || issilicon(user) || IsAdminGhost(user)) || temperature > POOL_COOL)
+ return TRUE
+ return FALSE
+
+/obj/machinery/pool/controller/Topic(href, href_list)
+ if(..())
+ return
+ if(interact_delay > world.time)
+ return
+ if(href_list["IncreaseTemp"])
+ if(CanUpTemp(usr))
+ visible_message("[usr] presses a button on [src].")
+ temperature++
+ update_temp()
+ var/msg = "POOL: [key_name(usr)] increased [src]'s pool temperature at [COORD(src)] to [temperature]"
+ log_game(msg)
+ message_admins(msg)
+ interact_delay = world.time + 15
+ if(href_list["DecreaseTemp"])
+ if(CanDownTemp(usr))
+ visible_message("[usr] presses a button on [src].")
+ temperature--
+ update_temp()
+ var/msg = "POOL: [key_name(usr)] decreased [src]'s pool temperature at [COORD(src)] to [temperature]"
+ log_game(msg)
+ message_admins(msg)
+ interact_delay = world.time + 15
+ if(href_list["Activate Drain"])
+ if((drainable || issilicon(usr) || IsAdminGhost(usr)) && !linked_drain.active)
+ var/msg = "POOL: [key_name(usr)] activated [src]'s pool drain in [linked_drain.filling? "FILLING" : "DRAINING"] mode at [COORD(src)]"
+ log_game(msg)
+ message_admins(msg)
+ visible_message("[usr] presses a button on [src].")
+ mist_off()
+ interact_delay = world.time + 60
+ linked_drain.active = TRUE
+ linked_drain.cycles_left = 75
+ if(!linked_drain.filling)
+ new /obj/effect/whirlpool(linked_drain.loc)
+ temperature = POOL_NORMAL
+ else
+ new /obj/effect/waterspout(linked_drain.loc)
+ temperature = POOL_NORMAL
+ update_temp()
+ bloody = FALSE
+ updateUsrDialog()
+
+/obj/machinery/pool/controller/proc/temp2text()
+ switch(temperature)
+ if(POOL_FRIGID)
+ return "Frigid"
+ if(POOL_COOL)
+ return "Cool"
+ if(POOL_NORMAL)
+ return "Normal"
+ if(POOL_WARM)
+ return "Warm"
+ if(POOL_SCALDING)
+ return "Scalding"
+ else
+ return "Outside of possible range."
+
+/obj/machinery/pool/controller/ui_interact(mob/user)
+ . = ..()
+ if(.)
+ return
+ if(shocked && !(stat & NOPOWER))
+ shock(user,50)
+ if(panel_open && !isAI(user))
+ return wires.interact(user)
+ if(stat & (NOPOWER|BROKEN))
+ return
+ var/datum/browser/popup = new(user, "Pool Controller", name, 300, 450)
+ var/dat = ""
+ if(interact_delay > world.time)
+ dat += "[round((interact_delay - world.time)/10, 0.1)] seconds left until [src] can operate again.
"
+ dat += text({"
+