From 48497038ef917fd52341f662c22ae22bdb355212 Mon Sep 17 00:00:00 2001
From: jbox1 <40789662+jbox144@users.noreply.github.com>
Date: Sat, 21 Mar 2020 19:20:40 +1100
Subject: [PATCH 1/3] Fix all my broken shit
fixes all my broken shit
---
hyperstation/code/modules/crafting/recipes.dm | 11 +++
hyperstation/code/obj/milking machine.dm | 83 ++++++++++++++++++
.../icons/obj/milking_machine.dmi | Bin
.../code/modules/crafting/recipes.dm | 11 ---
.../reagent container/milking machine.dm | 10 +--
tgstation.dme | 4 +
6 files changed, 103 insertions(+), 16 deletions(-)
create mode 100644 hyperstation/code/modules/crafting/recipes.dm
create mode 100644 hyperstation/code/obj/milking machine.dm
rename modular_citadel/icons/obj/milking machine.dmi => hyperstation/icons/obj/milking_machine.dmi (100%)
diff --git a/hyperstation/code/modules/crafting/recipes.dm b/hyperstation/code/modules/crafting/recipes.dm
new file mode 100644
index 00000000..d64f1671
--- /dev/null
+++ b/hyperstation/code/modules/crafting/recipes.dm
@@ -0,0 +1,11 @@
+/datum/crafting_recipe/milker
+ name = "Milking Machine"
+ reqs = list(/obj/item/stack/cable_coil = 5, /obj/item/stack/rods = 2, /obj/item/stack/sheet/cardboard = 1, /obj/item/reagent_containers/glass/beaker = 2, /obj/item/stock_parts/manipulator = 1)
+ result = /obj/item/milker
+ tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
+ category = CAT_MISC
+
+/datum/crafting_recipe/milker/penis
+ name = "Penis Milking Machine"
+ reqs = list(/obj/item/stack/cable_coil = 5, /obj/item/stack/rods = 1, /obj/item/stack/sheet/cardboard = 1, /obj/item/reagent_containers/glass/beaker/large = 1, /obj/item/stock_parts/manipulator = 1)
+ result = /obj/item/milker/penis
diff --git a/hyperstation/code/obj/milking machine.dm b/hyperstation/code/obj/milking machine.dm
new file mode 100644
index 00000000..f9794dcc
--- /dev/null
+++ b/hyperstation/code/obj/milking machine.dm
@@ -0,0 +1,83 @@
+/obj/item/milker
+ icon = 'hyperstation/icons/obj/milking_machine.dmi'
+ name = "milking machine"
+ icon_state = "Off"
+ item_state = "Off"
+ desc = "A pocket sized pump and tubing assembly designed to collect and store products from mammary glands."
+
+ slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_POCKET
+
+ var/on = FALSE
+ var/obj/item/reagent_containers/glass/inserted_item = null
+
+ var/transfer_rate = 0.25 // How much we transfer every 2 seconds
+ var/target_organ = "breasts" // What organ we are transfering from
+
+/obj/item/milker/examine(mob/user)
+ . = ..()
+ to_chat(user, "[src] is currently [on ? "on" : "off"].")
+ if (inserted_item)
+ to_chat(user, "[inserted_item] contains [inserted_item.reagents.total_volume]/[inserted_item.reagents.maximum_volume] units")
+
+/obj/item/milker/attackby(obj/item/W, mob/user, params)
+ add_fingerprint(user)
+ if(istype(W, /obj/item/reagent_containers/glass) && !inserted_item)
+ if(!user.transferItemToLoc(W, src))
+ return ..()
+ inserted_item = W
+ UpdateIcon()
+ else
+ return ..()
+
+/obj/item/milker/interact(mob/user)
+ if(!isAI(user) && inserted_item)
+ add_fingerprint(user)
+ on = !on
+ if (on)
+ to_chat(user, "You turn [src] on.")
+ START_PROCESSING(SSobj, src)
+ else
+ to_chat(user, "You turn [src] off.")
+ STOP_PROCESSING(SSobj, src)
+ UpdateIcon()
+ else
+ ..()
+
+/obj/item/milker/proc/UpdateIcon()
+ icon_state = "[on ? "On" : "Off"][inserted_item ? "Beaker" : ""]"
+ item_state = icon_state
+
+
+/obj/item/milker/AltClick(mob/living/user)
+ add_fingerprint(user)
+ user.put_in_hands(inserted_item)
+ inserted_item = null
+ on = FALSE
+ STOP_PROCESSING(SSobj, src)
+ UpdateIcon()
+
+/obj/item/milker/process()
+ var/mob/living/carbon/W = loc
+ if (W)
+ var/obj/item/organ/genital/breasts/O = W.getorganslot(target_organ)
+ if (O)
+ if (O.reagents.total_volume >= transfer_rate * 2)
+ if (inserted_item.reagents.total_volume < inserted_item.reagents.maximum_volume)
+ O.reagents.trans_to(inserted_item.reagents, amount = transfer_rate)
+ else
+ to_chat(W, "[src] stops pumping. [inserted_item] is full.")
+ on = FALSE
+ STOP_PROCESSING(SSobj, src)
+ UpdateIcon()
+
+/obj/item/milker/penis
+ name = "penis milking machine"
+ icon_state = "PenisOff"
+ item_state = "PenisOff"
+ desc = "A pocket sized pump and tubing assembly designed to collect and store products from the penis."
+
+ target_organ = "testicles" // Since semen is stored in the balls
+
+/obj/item/milker/penis/UpdateIcon()
+ icon_state = "Penis[on ? "On" : "Off"][inserted_item ? "Beaker" : ""]"
+ item_state = icon_state
diff --git a/modular_citadel/icons/obj/milking machine.dmi b/hyperstation/icons/obj/milking_machine.dmi
similarity index 100%
rename from modular_citadel/icons/obj/milking machine.dmi
rename to hyperstation/icons/obj/milking_machine.dmi
diff --git a/modular_citadel/code/modules/crafting/recipes.dm b/modular_citadel/code/modules/crafting/recipes.dm
index ccdfb480..bf04f706 100644
--- a/modular_citadel/code/modules/crafting/recipes.dm
+++ b/modular_citadel/code/modules/crafting/recipes.dm
@@ -10,14 +10,3 @@
result = /obj/item/aicard/potato
category = CAT_ROBOT
-/datum/crafting_recipe/milker
- name = "Milking Machine"
- reqs = list(/obj/item/stack/cable_coil = 5, /obj/item/stack/sheet/plastic = 2, /obj/item/stack/rods = 2, /obj/item/stack/sheet/cardboard = 1, /obj/item/reagent_containers/glass/beaker = 2, /obj/item/stock_parts/manipulator = 1)
- result = /obj/item/milker
- tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
- category = CAT_MISC
-
-/datum/crafting_recipe/milker/penis
- name = "Penis Milking Machine"
- reqs = list(/obj/item/stack/cable_coil = 5, /obj/item/stack/sheet/plastic = 2, /obj/item/stack/rods = 1, /obj/item/stack/sheet/cardboard = 1, /obj/item/reagent_containers/glass/beaker/large = 1, /obj/item/stock_parts/manipulator = 1)
- result = /obj/item/milker/penis
diff --git a/modular_citadel/code/modules/reagents/reagent container/milking machine.dm b/modular_citadel/code/modules/reagents/reagent container/milking machine.dm
index 3f070be4..057c657e 100644
--- a/modular_citadel/code/modules/reagents/reagent container/milking machine.dm
+++ b/modular_citadel/code/modules/reagents/reagent container/milking machine.dm
@@ -9,7 +9,7 @@
var/on = FALSE
var/obj/item/reagent_containers/glass/inserted_item = null
-
+
var/transfer_rate = 0.25 // How much we transfer every 2 seconds
var/target_organ = "breasts" // What organ we are transfering from
@@ -42,11 +42,11 @@
UpdateIcon()
else
..()
-
+
/obj/item/milker/proc/UpdateIcon()
icon_state = "[on ? "On" : "Off"][inserted_item ? "Beaker" : ""]"
item_state = icon_state
-
+
/obj/item/milker/AltClick(mob/living/user)
add_fingerprint(user)
@@ -75,9 +75,9 @@
icon_state = "PenisOff"
item_state = "PenisOff"
desc = "A pocket sized pump and tubing assembly designed to collect and store products from the penis."
-
+
target_organ = "testicles" // Since semen is stored in the balls
-
+
/obj/item/milker/penis/UpdateIcon()
icon_state = "Penis[on ? "On" : "Off"][inserted_item ? "Beaker" : ""]"
item_state = icon_state
diff --git a/tgstation.dme b/tgstation.dme
index f152f011..402a6482 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2871,11 +2871,14 @@
#include "code\modules\zombie\items.dm"
#include "code\modules\zombie\organs.dm"
#include "hyperstation\code\gamemode\werewolf\werewolf.dm"
+#include "hyperstation\code\mobs\hugbot.dm"
#include "hyperstation\code\mobs\mimic.dm"
#include "hyperstation\code\mobs\werewolf.dm"
#include "hyperstation\code\modules\antagonists\werewolf\werewolf.dm"
+#include "hyperstation\code\modules\crafting\recipes.dm"
#include "hyperstation\code\obj\decal.dm"
#include "hyperstation\code\obj\fluff.dm"
+#include "hyperstation\code\obj\milking machine.dm"
#include "hyperstation\code\obj\plushes.dm"
#include "hyperstation\code\obj\pregnancytester.dm"
#include "hyperstation\code\obj\rewards.dm"
@@ -3016,6 +3019,7 @@
#include "modular_citadel\code\modules\clothing\under\trek_under.dm"
#include "modular_citadel\code\modules\clothing\under\turtlenecks.dm"
#include "modular_citadel\code\modules\clothing\under\under.dm"
+#include "modular_citadel\code\modules\crafting\recipes.dm"
#include "modular_citadel\code\modules\custom_loadout\custom_items.dm"
#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm"
#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm"
From 4e372e9daeea360903b710a21ffcf496412bd072 Mon Sep 17 00:00:00 2001
From: jbox1 <40789662+jbox144@users.noreply.github.com>
Date: Sat, 21 Mar 2020 21:30:16 +1100
Subject: [PATCH 2/3] makes the cum
---
_maps/RandomRuins/SpaceRuins/taniastation.dmm | 93 +++++++++++++++++++
code/datums/ruins/space.dm | 8 ++
code/game/area/areas/ruins/space.dm | 18 ++++
code/modules/client/preferences.dm | 11 ++-
.../code/modules/arousal/organs/testicles.dm | 19 ++--
5 files changed, 139 insertions(+), 10 deletions(-)
create mode 100644 _maps/RandomRuins/SpaceRuins/taniastation.dmm
diff --git a/_maps/RandomRuins/SpaceRuins/taniastation.dmm b/_maps/RandomRuins/SpaceRuins/taniastation.dmm
new file mode 100644
index 00000000..0b964cdb
--- /dev/null
+++ b/_maps/RandomRuins/SpaceRuins/taniastation.dmm
@@ -0,0 +1,93 @@
+"aa" = (/turf/open/space/basic,/area/template_noop)
+"ab" = (/obj/machinery/power/tracker,/obj/structure/cable{icon_state = "0-2"},/turf/open/floor/plating/airless,/area/solar/tania)
+"ac" = (/obj/machinery/power/solar,/obj/structure/cable{icon_state = "0-2"},/turf/open/floor/plating/airless,/area/solar/tania)
+"ad" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/space/basic,/area/solar/tania)
+"ae" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "1-4"},/obj/structure/cable{icon_state = "2-4"},/turf/open/space/basic,/area/solar/tania)
+"af" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating,/area/ruin/space/tania/lounge)
+"ag" = (/turf/closed/wall,/area/ruin/space/tania/maint)
+"ah" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "1-4"},/obj/structure/cable{icon_state = "2-4"},/obj/structure/cable{icon_state = "4-8"},/turf/open/space/basic,/area/solar/tania)
+"ai" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aj" = (/obj/structure/chair/wood/normal{dir = 4},/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"ak" = (/obj/structure/table/wood,/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"al" = (/obj/structure/chair/wood/normal{dir = 8},/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"am" = (/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"an" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{icon_state = "manifold"; dir = 4},/obj/machinery/light{dir = 4},/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"ao" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "1-8"},/obj/structure/cable{icon_state = "2-8"},/turf/open/space/basic,/area/solar/tania)
+"ap" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "4-8"},/turf/open/space/basic,/area/solar/tania)
+"aq" = (/obj/structure/chair/stool/bar,/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"ar" = (/obj/machinery/power/solar,/obj/structure/cable{d2 = 4},/turf/open/floor/plating/airless,/area/solar/tania)
+"as" = (/obj/machinery/door/airlock/external/glass,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"at" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"au" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{icon_state = "2-4"},/obj/structure/cable{icon_state = "2-8"},/turf/open/space/basic,/area/solar/tania)
+"av" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "1-8"},/obj/structure/cable{icon_state = "2-8"},/obj/structure/cable{icon_state = "4-8"},/turf/open/space/basic,/area/solar/tania)
+"aw" = (/turf/closed/wall,/area/ruin/space/tania/lounge)
+"ax" = (/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"ay" = (/obj/machinery/airalarm/directional/east,/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"az" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1,/obj/structure/lattice,/turf/open/space/basic,/area/space/nearstation)
+"aA" = (/obj/structure/table/wood,/obj/machinery/chem_dispenser/drinks{dir = 8},/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"aB" = (/turf/closed/wall,/area/ruin/space/tania/dorms)
+"aC" = (/obj/structure/chair/stool/bar,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"aD" = (/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"aE" = (/obj/structure/chair/stool/bar,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"aF" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating,/area/ruin/space/tania/dorms)
+"aG" = (/obj/structure/cable{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{icon_state = "intact"; dir = 6},/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"aH" = (/obj/machinery/door/airlock/maintenance,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{icon_state = "intact"; dir = 8},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,/obj/structure/lattice,/turf/open/space/basic,/area/space/nearstation)
+"aJ" = (/obj/machinery/power/terminal{dir = 1},/obj/structure/cable{icon_state = "0-8"},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aK" = (/obj/structure/grille,/obj/structure/window/fulltile,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1{icon_state = "manifold"; dir = 1},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aM" = (/obj/structure/table/wood,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{icon_state = "intact"; dir = 8},/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"aN" = (/obj/machinery/power/smes,/obj/structure/cable{icon_state = "0-8"},/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{icon_state = "intact"; dir = 8},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aO" = (/obj/structure/cable{icon_state = "1-4"},/obj/machinery/airalarm/directional/west,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aP" = (/obj/machinery/power/solar_control,/obj/structure/cable{icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{icon_state = "intact"; dir = 9},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aQ" = (/obj/machinery/light{dir = 4},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aR" = (/obj/machinery/atmospherics/components/binary/pump{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{icon_state = "intact"; dir = 5},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"aS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"aT" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 4},/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"aU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"aV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,/turf/open/floor/plasteel,/area/ruin/space/tania/lounge)
+"aW" = (/obj/structure/table/wood,/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{icon_state = "scrub_map_on"; dir = 4},/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"aX" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"aY" = (/obj/machinery/light,/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"aZ" = (/obj/machinery/door/airlock,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{icon_state = "intact"; dir = 8},/turf/open/floor/plasteel,/area/ruin/space/tania/dorms)
+"ba" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer1,/turf/open/floor/plasteel,/area/ruin/space/tania/dorms)
+"bb" = (/obj/machinery/atmospherics/components/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"bc" = (/obj/structure/cable{icon_state = "1-8"},/obj/structure/cable{d2 = 4},/obj/machinery/power/apc/auto_name/east,/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"bd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d2 = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,/obj/machinery/power/apc/auto_name/east,/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"be" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{icon_state = "scrub_map_on"; dir = 8},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"bf" = (/obj/structure/cable{d2 = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1,/obj/machinery/power/apc/auto_name/east,/turf/open/floor/plasteel,/area/ruin/space/tania/dorms)
+"bg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{icon_state = "scrub_map_on"; dir = 4},/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"bh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{icon_state = "scrub_map_on"; dir = 8},/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"bi" = (/obj/machinery/telecomms/relay/preset/telecomms,/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"bj" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"bk" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/item/reagent_containers/food/drinks/drinkingglass,/turf/open/floor/wood,/area/ruin/space/tania/lounge)
+"bl" = (/obj/machinery/light{dir = 1},/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"bm" = (/obj/structure/dresser,/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"bn" = (/obj/structure/table/wood,/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"bo" = (/obj/structure/chair/wood/normal{dir = 8},/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"bp" = (/obj/machinery/airalarm/directional/west,/obj/machinery/light{dir = 4},/turf/open/floor/plasteel,/area/ruin/space/tania/dorms)
+"bq" = (/obj/structure/chair/wood/normal{dir = 4},/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"br" = (/obj/item/toy/plush/slimeplushie/tania,/obj/structure/closet/crate{icon_state = "engi_e_crate"},/turf/open/floor/plating,/area/ruin/space/tania/maint)
+"bs" = (/obj/structure/bed,/obj/item/bedsheet/purple,/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"bt" = (/obj/structure/bed,/obj/item/bedsheet/green,/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+"bu" = (/obj/structure/table/wood,/obj/item/paper/fluff{info = "Love you honey! Hope you have a great day!"; step_x = 4; step_y = 8; text = "p"},/obj/item/pen{step_x = -4; step_y = -2},/turf/open/floor/carpet,/area/ruin/space/tania/dorms)
+
+(1,1,1) = {"
+aaaaaaaaaaaaaaabaaaaaaaa
+aaaaaaacacacaaadaaacacac
+aaaaaaaeahahapauapavavao
+aaaaaaarararaaadaaararar
+aaaaaaaaaaaaaaadaaaaaaaa
+afafafafafafagasaiazaaaa
+afajbjalamamagataiaIaaaa
+afamaxamamayagasaiaKagaa
+afaqaCaEaEaGaHaLaNaPagaa
+awbkakaWaManagaOaJbcagaa
+awamamamaAbdagaRbeaQagaa
+awamaYamamaSagbbbibragaa
+aBaBaBaBaBaVagagagagagaa
+aBbsblbmaBbfaBbmblbtaBaa
+aFaTaUbgaZbaaZbhaUaXaFaa
+aBbuboaDaBbpaBaDbqbnaBaa
+aBaBaBaBaBaFaBaBaBaBaBaa
+"}
diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm
index 3d4f6ade..055c0b93 100644
--- a/code/datums/ruins/space.dm
+++ b/code/datums/ruins/space.dm
@@ -317,3 +317,11 @@
suffix = "advancedlab.dmm"
name = "Abductor Replication Lab"
description = "Some scientists tried and almost succeeded to recreate abductor tools. Somewhat slower and a bit less modern than their originals, these tools are the best you can get if you aren't an alien."
+
+/datum/map_template/ruin/space/taniastation
+ id = "taniastation"
+ suffix = "taniastation.dmm"
+
+ name = "Mysterious Station"
+
+ description = "A mysterious outpost built by a disgruntled Nanotransen Employee."
\ No newline at end of file
diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm
index d5ceb833..06415ed7 100644
--- a/code/game/area/areas/ruins/space.dm
+++ b/code/game/area/areas/ruins/space.dm
@@ -472,3 +472,21 @@
/area/ruin/space/has_grav/powered/advancedlab
name = "Abductor Replication Lab"
icon_state = "yellow"
+
+//TANIA STATION
+
+/area/solar/tania
+ name = "Solar Array"
+ icon_state = "panelsS"
+
+/area/ruin/space/tania/maint
+ name = "Maintainence"
+ icon_state = "yellow"
+
+/area/ruin/space/tania/lounge
+ name = "Lounge"
+ icon_state = "yellow"
+
+/area/ruin/space/tania/dorms
+ name = "Dorms"
+ icon_state = "yellow"
\ No newline at end of file
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 48673f47..fbc30413 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -777,6 +777,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Testicles Color:
"
dat += " Change
"
dat += "Testicles showing:[features["balls_shape"]]"
+ dat += "Produces:[features["balls_fluid"]]"
dat += APPEARANCE_CATEGORY_COLUMN
dat += "