From 6d24e69daca7941681adc144de585f222ffedafe Mon Sep 17 00:00:00 2001
From: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
Date: Sun, 6 Oct 2024 11:08:56 -0600
Subject: [PATCH] Adds 3 'Comms Buoy' Space Ruins (#86872)
## About The Pull Request
https://github.com/tgstation/common_core/blob/master/Technology%20and%20Science/Communications.md
I was playing Starsector shortly before I read through this lore blurb
and realized that simple Comms Buoys would be easy little ruins to make.
Then I decided to make NT's extra-special because NT is always leading
in tech innovation.
Adds 2 "low-tech" Comms Buoy ruins (**no local comms**, these are just
little fluff things):
Kosmokomm Communications Buoy

Pirated Communications Buoy

The majority of the PR is the "high-tech" Nanotrasen Extraorbital
Bluespace Communications Buoy
The NT-EBCB Model 7 (ignore the parallax i couldnt get
it all in one screenshot)

This is a medium ruin that's more lore heavy than loot heavy - though
that doesn't mean there's no danger. NT wouldn't want you walking in and
reading all their communication logs after all.
SPOILERS INSIDE
**Hazards:** 2 Laser Turrets (in a titanium room, so they reflect off
walls)
**Loot:** 2 Experimental Tool spawners, 2 NT Private Security bodies, 3
space suits, 1 of each tcomm component, 2 RTGs (can these even be taken)
The majority of the sat is for lore. It has 3 paper notes and 5 consoles
(1 broken, 1 dupe, so 3 unique consoles)
All lore will be here to show how formatting appears in-game.
Airlock Note: "Page 33: NT-EBCB Model 7"
This one gives a quick summary of what to expect inside - consoles and
defense turrets. Of course, players won't have the special ID (and
couldn't use it anyways, the guys inside covered it in blood)

Pinned Note: "Table of Contents: NT-EBCB Model
7"
A page out of the manual. Rest of manual not included. (Names the
different parts of the buoy)

Main-Dish Note: "Spinward-NT-EBCB Inspection
Report"
An inspector left behind a few notes during pre-deployment. Sure hope no
important security risks were missed!

Console 1: "Satellite Dish Operations
Terminal"
This one's mostly just a tie-in with the "story", don't know how
necessary it is but it filled the empty spaces.
This console has a spare in the Main Dish (as its prone to breaking from
the turrets)

Console 2: "Blackbox Transcription Terminal"
The "local" side of the story. This console monitors the Local-Space
Comms, and managed to log the repair team's activity.

Console 3: "Long-Range Interstellar Relay Operations
Terminal"
Here's the big lore thing for freaks like me who love lore being shown
in-game.
It's got a lot of random-made-up-science-bullwhizz relating to the
ongoing NT research mentioned in the plasma_exposure lore blurb.
Granted, the guy's a bit biased in his ex-partner's work.


## Why It's Good For The Game
A) Everybody loves new space ruins, even small fluff ones. I hope.
B) Lore integration is cool. Aside from the obvious 'Comms Buoys being a
thing you can find', it also makes mention of the Gateway system/Port
Ellis and a certain lore blurb involving plasma (albeit under more
severe, and biased, testing)
## Changelog
:cl:
add: 3 new Space Ruins: two small Comms Buoys (fluff) and an NT
Bluespace Comms Buoy. Employees are asked not to touch vital components
when nearby this critical infrastructure.
/:cl:
---
.../SpaceRuins/commsbuoy_lowtech.dmm | 283 ++++
_maps/RandomRuins/SpaceRuins/commsbuoy_nt.dmm | 1209 +++++++++++++++++
.../SpaceRuins/commsbuoy_pirate.dmm | 299 ++++
code/datums/ruins/space.dm | 22 +
.../ruins/spaceruin_code/commsbuoy.dm | 267 ++++
config/spaceruinblacklist.txt | 3 +
icons/obj/fluff/general.dmi | Bin 40515 -> 41675 bytes
tgstation.dme | 1 +
8 files changed, 2084 insertions(+)
create mode 100644 _maps/RandomRuins/SpaceRuins/commsbuoy_lowtech.dmm
create mode 100644 _maps/RandomRuins/SpaceRuins/commsbuoy_nt.dmm
create mode 100644 _maps/RandomRuins/SpaceRuins/commsbuoy_pirate.dmm
create mode 100644 code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm
diff --git a/_maps/RandomRuins/SpaceRuins/commsbuoy_lowtech.dmm b/_maps/RandomRuins/SpaceRuins/commsbuoy_lowtech.dmm
new file mode 100644
index 00000000000..994589f0e51
--- /dev/null
+++ b/_maps/RandomRuins/SpaceRuins/commsbuoy_lowtech.dmm
@@ -0,0 +1,283 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"c" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/marker_beacon/burgundy,
+/turf/template_noop,
+/area/space/nearstation)
+"d" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail,
+/turf/template_noop,
+/area/space/nearstation)
+"j" = (
+/obj/structure/lattice/catwalk,
+/turf/template_noop,
+/area/space/nearstation)
+"m" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 8
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"n" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 4
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"o" = (
+/obj/structure/fluff/sat_dish{
+ pixel_y = -15;
+ pixel_x = -11
+ },
+/obj/structure/fluff/sat_dish{
+ pixel_y = -9;
+ pixel_x = 12
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"p" = (
+/obj/structure/fluff/tram_rail/end,
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"s" = (
+/obj/structure/fluff/sat_dish{
+ pixel_x = 15;
+ dir = 8;
+ pixel_y = -7
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"t" = (
+/obj/structure/marker_beacon/burgundy,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"x" = (
+/obj/structure/fluff/tram_rail/anchor,
+/turf/template_noop,
+/area/space/nearstation)
+"z" = (
+/obj/structure/fluff/commsbuoy_broadcaster,
+/turf/open/floor/iron/recharge_floor/Airless,
+/area/space/nearstation)
+"C" = (
+/obj/structure/fluff/sat_dish{
+ pixel_y = 11;
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"D" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"E" = (
+/obj/structure/fluff/tram_rail,
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"F" = (
+/obj/structure/fluff/tram_rail,
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"G" = (
+/turf/template_noop,
+/area/space/nearstation)
+"I" = (
+/obj/structure/fluff/tram_rail,
+/turf/template_noop,
+/area/space/nearstation)
+"K" = (
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"L" = (
+/turf/closed/wall/mineral/titanium,
+/area/space/nearstation)
+"M" = (
+/turf/closed/wall/mineral/titanium,
+/area/ruin/space/unpowered)
+"N" = (
+/turf/closed/wall/mineral/titanium/nodiagonal,
+/area/ruin/space/unpowered)
+"O" = (
+/obj/structure/fluff/commsbuoy_receiver,
+/turf/open/floor/iron/recharge_floor/Airless,
+/area/space/nearstation)
+"P" = (
+/obj/structure/fluff/tram_rail/end,
+/turf/template_noop,
+/area/space/nearstation)
+"S" = (
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail/end{
+ dir = 8
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"U" = (
+/obj/structure/fluff/commsbuoy_processor,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"X" = (
+/obj/structure/lattice,
+/turf/template_noop,
+/area/space/nearstation)
+"Y" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/fluff/sat_dish{
+ pixel_y = 9;
+ dir = 1;
+ pixel_x = 8
+ },
+/obj/structure/fluff/sat_dish{
+ pixel_y = 15;
+ dir = 1;
+ pixel_x = -11
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"Z" = (
+/turf/open/floor/iron/solarpanel/airless,
+/area/space/nearstation)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+n
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+n
+o
+N
+C
+K
+a
+a
+a
+"}
+(3,1,1) = {"
+m
+K
+s
+N
+X
+O
+Z
+Z
+a
+"}
+(4,1,1) = {"
+I
+S
+M
+N
+c
+L
+j
+Z
+Z
+"}
+(5,1,1) = {"
+I
+F
+N
+N
+G
+p
+a
+a
+a
+"}
+(6,1,1) = {"
+x
+U
+j
+N
+M
+D
+a
+a
+a
+"}
+(7,1,1) = {"
+x
+t
+X
+N
+N
+Y
+Z
+Z
+a
+"}
+(8,1,1) = {"
+I
+d
+a
+N
+j
+X
+Z
+Z
+Z
+"}
+(9,1,1) = {"
+P
+P
+a
+z
+a
+a
+a
+a
+a
+"}
+(10,1,1) = {"
+a
+a
+a
+E
+a
+a
+a
+a
+a
+"}
+(11,1,1) = {"
+a
+a
+a
+P
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/RandomRuins/SpaceRuins/commsbuoy_nt.dmm b/_maps/RandomRuins/SpaceRuins/commsbuoy_nt.dmm
new file mode 100644
index 00000000000..4fa47033077
--- /dev/null
+++ b/_maps/RandomRuins/SpaceRuins/commsbuoy_nt.dmm
@@ -0,0 +1,1209 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aJ" = (
+/obj/machinery/door/airlock/titanium{
+ name = "Comms Buoy Airlock"
+ },
+/obj/effect/mapping_helpers/airlock/cutaiwire,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"aL" = (
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail,
+/turf/template_noop,
+/area/space/nearstation)
+"bj" = (
+/turf/closed/wall/mineral/titanium/nodiagonal,
+/area/ruin/space/nt_commsbuoy)
+"dO" = (
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/floor/mineral/titanium/white,
+/area/ruin/space/nt_commsbuoy)
+"dX" = (
+/obj/machinery/computer/terminal/nt_commsbuoy,
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"et" = (
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"ew" = (
+/obj/structure/fluff{
+ name = "telecommunication hub";
+ desc = "A mighty piece of hardware used to send/receive massive amounts of data.";
+ icon = 'icons/obj/machines/telecomms.dmi';
+ icon_state = "hub"
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"eX" = (
+/obj/structure/lattice/catwalk,
+/turf/template_noop,
+/area/space/nearstation)
+"fx" = (
+/obj/structure/fluff{
+ icon = 'icons/obj/machines/wallmounts.dmi';
+ icon_state = "pod_off";
+ name = "radio dish controller";
+ desc = "A console for adjusting the satellite's radio dishes manually. The screen won't even power on without proper authorization, which you know you're never getting.";
+ pixel_y = 30
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"fJ" = (
+/turf/template_noop,
+/area/template_noop)
+"gw" = (
+/obj/structure/sign/nanotrasen{
+ pixel_x = -32
+ },
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"hb" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail/end,
+/turf/template_noop,
+/area/space/nearstation)
+"hk" = (
+/obj/structure/table,
+/obj/item/paper/fluff/ruins/nt_commsbuoy/inspection{
+ pixel_y = 3;
+ pixel_x = 6
+ },
+/obj/item/reagent_containers/cup/glass/mug/nanotrasen{
+ pixel_y = 5;
+ pixel_x = 4
+ },
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"hn" = (
+/obj/structure/lattice,
+/turf/template_noop,
+/area/space/nearstation)
+"hH" = (
+/obj/structure/rack,
+/obj/item/clothing/suit/space{
+ pixel_y = 5;
+ pixel_x = -10
+ },
+/obj/item/clothing/suit/space{
+ pixel_y = 1;
+ pixel_x = 5
+ },
+/obj/item/clothing/head/helmet/space{
+ pixel_x = -7;
+ pixel_y = -5
+ },
+/obj/item/clothing/head/helmet/space{
+ pixel_y = -10;
+ pixel_x = 8
+ },
+/obj/machinery/light/small/directional/east,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"in" = (
+/obj/structure/fluff{
+ icon = 'icons/obj/machines/wallmounts.dmi';
+ icon_state = "pod_off";
+ name = "radio dish controller";
+ desc = "A console for adjusting the satellite's radio dishes manually. The screen won't even power on without proper authorization, which you know you're never getting.";
+ pixel_y = 30
+ },
+/obj/effect/decal/cleanable/blood/gibs/old,
+/obj/effect/mob_spawn/corpse/human/engineer,
+/obj/item/keycard/nt_commsbuoy{
+ pixel_y = 9;
+ pixel_x = 3
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"io" = (
+/obj/machinery/light/small/directional/east,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"it" = (
+/obj/machinery/computer/terminal/nt_commsbuoy/blackbox,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"iv" = (
+/obj/item/stock_parts/subspace/treatment,
+/obj/item/stock_parts/subspace/transmitter,
+/obj/item/stock_parts/subspace/filter,
+/obj/item/stock_parts/subspace/crystal,
+/obj/item/stock_parts/subspace/ansible,
+/obj/item/stock_parts/subspace/analyzer,
+/obj/item/stock_parts/subspace/amplifier,
+/obj/structure/closet/crate/centcom,
+/obj/item/storage/box/lights/bulbs,
+/obj/effect/spawner/random/exotic/technology,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"jy" = (
+/obj/structure/sign/nanotrasen{
+ pixel_y = -32
+ },
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"jz" = (
+/obj/structure/sign/nanotrasen{
+ pixel_y = 32
+ },
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"kZ" = (
+/obj/effect/decal/cleanable/blood/splatter,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"lu" = (
+/obj/machinery/porta_turret/syndicate/energy,
+/turf/open/floor/mineral/titanium/yellow,
+/area/ruin/space/nt_commsbuoy)
+"lB" = (
+/obj/effect/decal/cleanable/blood/trails{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/blood/footprints{
+ dir = 4
+ },
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"lT" = (
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"lY" = (
+/obj/structure/table,
+/obj/structure/noticeboard/directional/north,
+/obj/item/paper/fluff/ruins/nt_commsbuoy/table_of_contents,
+/obj/machinery/light/small/directional/east,
+/obj/item/gps/spaceruin{
+ pixel_y = 4;
+ pixel_x = 5
+ },
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"mu" = (
+/obj/structure/fluff/fake_camera{
+ dir = 9
+ },
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"nn" = (
+/obj/structure/frame/computer{
+ dir = 1
+ },
+/obj/item/shard,
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"oA" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 8
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"pC" = (
+/obj/machinery/door/puzzle/keycard/nt_commsbuoy,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"pR" = (
+/turf/open/floor/mineral/titanium/white/airless,
+/area/space/nearstation)
+"qi" = (
+/obj/structure/fluff/tram_rail,
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"ri" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail,
+/turf/template_noop,
+/area/space/nearstation)
+"rl" = (
+/obj/structure/fluff{
+ icon = 'icons/mob/simple/hivebot.dmi';
+ icon_state = "def_radar-off";
+ name = "radio dish component";
+ desc = "Remarkable Nanotrasen technology. This does... something to make the radio dish work.";
+ pixel_y = 16
+ },
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"tq" = (
+/obj/item/storage/toolbox/electrical{
+ pixel_y = 9
+ },
+/obj/structure/rack,
+/obj/effect/spawner/random/engineering/tool_advanced,
+/obj/machinery/light/small/directional/west,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"tx" = (
+/turf/closed/wall/mineral/titanium/nodiagonal,
+/area/space/nearstation)
+"tO" = (
+/obj/structure/fluff{
+ icon = 'icons/obj/machines/wallmounts.dmi';
+ icon_state = "airlock_control_standby";
+ name = "radio dish component";
+ desc = "Remarkable Nanotrasen technology. This does... something to make the radio dish work.";
+ pixel_y = 32;
+ pixel_x = 6
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"uG" = (
+/obj/structure/fluff/commsbuoy_receiver,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"uH" = (
+/obj/structure/fluff/tram_rail,
+/obj/structure/fluff/tram_rail/end{
+ dir = 4
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"vr" = (
+/obj/machinery/door/airlock/external/ruin{
+ name = "Comms Buoy External Airlock"
+ },
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"wS" = (
+/obj/structure/lattice,
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail,
+/turf/template_noop,
+/area/space/nearstation)
+"xI" = (
+/obj/structure/cable,
+/obj/machinery/power/smes/full,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"yk" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 4
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"zt" = (
+/obj/effect/decal/cleanable/blood,
+/obj/effect/mapping_helpers/airlock/cutaiwire,
+/obj/machinery/door/airlock/titanium{
+ name = "Comms Buoy Airlock"
+ },
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"zA" = (
+/obj/structure/fluff/tram_rail,
+/obj/structure/fluff/tram_rail/anchor{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"zO" = (
+/obj/structure/lattice,
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"Ad" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 8
+ },
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"AA" = (
+/obj/structure/fluff/tram_rail,
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"AD" = (
+/obj/machinery/computer/terminal/nt_commsbuoy/relay{
+ dir = 1
+ },
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"AE" = (
+/obj/structure/sign/warning/vacuum/external/directional/east,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"Br" = (
+/obj/structure/cable,
+/turf/open/floor/mineral/titanium/yellow,
+/area/ruin/space/nt_commsbuoy)
+"CN" = (
+/obj/effect/mob_spawn/corpse/human/nanotrasensoldier,
+/obj/effect/decal/cleanable/blood/old,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"DW" = (
+/obj/structure/fluff/sat_dish{
+ dir = 8;
+ pixel_y = -5;
+ pixel_x = 17
+ },
+/obj/structure/fluff/sat_dish{
+ pixel_y = -10;
+ pixel_x = -5
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"EA" = (
+/obj/structure/closet/firecloset/full,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"EQ" = (
+/obj/structure/fluff/sat_dish{
+ pixel_y = -18;
+ pixel_x = 6
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"ES" = (
+/turf/open/floor/mineral/titanium/white,
+/area/ruin/space/nt_commsbuoy)
+"FC" = (
+/turf/closed/wall/mineral/iron,
+/area/ruin/space/nt_commsbuoy)
+"FH" = (
+/obj/structure/sign/nanotrasen{
+ pixel_x = -32
+ },
+/obj/structure/rack,
+/obj/item/clothing/suit/space/syndicate/orange{
+ pixel_x = 6;
+ pixel_y = 4
+ },
+/obj/item/clothing/head/helmet/space/syndicate/orange{
+ pixel_x = 9;
+ pixel_y = -5
+ },
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"FK" = (
+/obj/structure/fluff/tram_rail/end,
+/turf/template_noop,
+/area/space/nearstation)
+"Gd" = (
+/obj/structure/fluff/commsbuoy_processor,
+/obj/structure/sign/nanotrasen{
+ pixel_x = 32
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"Gq" = (
+/obj/structure/sign/warning/radiation/directional/south,
+/turf/open/floor/mineral/titanium/yellow,
+/area/ruin/space/nt_commsbuoy)
+"Gw" = (
+/obj/structure/cable,
+/obj/machinery/power/apc/auto_name/directional/south,
+/obj/effect/mapping_helpers/apc/cell_5k,
+/obj/effect/mapping_helpers/apc/full_charge,
+/obj/effect/mapping_helpers/apc/unlocked,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"HC" = (
+/obj/structure/fluff/commsbuoy_broadcaster,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"II" = (
+/obj/structure/tank_dispenser/oxygen,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"Jp" = (
+/obj/structure/cable,
+/obj/machinery/power/rtg/advanced,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"Jv" = (
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail,
+/obj/structure/lattice,
+/turf/template_noop,
+/area/space/nearstation)
+"Kr" = (
+/obj/machinery/power/rtg/advanced,
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"Lc" = (
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"LI" = (
+/obj/machinery/telecomms/relay/preset/telecomms,
+/obj/structure/fluff/fake_camera{
+ dir = 1
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"Mc" = (
+/obj/effect/decal/cleanable/greenglow/radioactive,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"Mp" = (
+/obj/structure/fluff/fake_camera{
+ dir = 8
+ },
+/obj/machinery/light/small/directional/west,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"Qb" = (
+/obj/structure/cable,
+/obj/effect/mapping_helpers/airlock/cutaiwire,
+/obj/machinery/door/airlock/titanium{
+ name = "Comms Buoy Airlock"
+ },
+/turf/open/floor/mineral/titanium/yellow,
+/area/ruin/space/nt_commsbuoy)
+"Qd" = (
+/obj/effect/decal/cleanable/blood/trails{
+ dir = 6
+ },
+/obj/item/paper/fluff/ruins/nt_commsbuoy/torn_page,
+/obj/structure/fluff/fake_camera{
+ dir = 5
+ },
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"Re" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"RY" = (
+/obj/structure/fluff/tram_rail,
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/obj/structure/lattice,
+/turf/template_noop,
+/area/space/nearstation)
+"TS" = (
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail/end,
+/turf/template_noop,
+/area/space/nearstation)
+"UR" = (
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail/end{
+ dir = 8
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"Vg" = (
+/obj/structure/fluff/tram_rail,
+/turf/template_noop,
+/area/space/nearstation)
+"VI" = (
+/obj/structure/fluff/fake_camera{
+ dir = 8
+ },
+/turf/template_noop,
+/area/template_noop)
+"Ws" = (
+/obj/structure/marker_beacon/cerulean,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"WI" = (
+/obj/structure/fluff{
+ name = "comms buoy blackbox recorder";
+ desc = "A recording device that logs recent events and communications in the event of a catastrophic failiure or accident. This one is haphazardly adjusted to print the readout onto the accompanying console.";
+ icon = 'icons/obj/machines/telecomms.dmi';
+ icon_state = "blackbox"
+ },
+/turf/open/floor/mineral/titanium/blue,
+/area/ruin/space/nt_commsbuoy)
+"Xi" = (
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"Yp" = (
+/obj/structure/fluff/fake_camera{
+ dir = 5
+ },
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"Yr" = (
+/turf/closed/wall/mineral/titanium,
+/area/ruin/space/nt_commsbuoy)
+"YN" = (
+/obj/structure/cable,
+/obj/machinery/power/terminal{
+ dir = 8
+ },
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+"YY" = (
+/turf/open/floor/plating,
+/area/ruin/space/nt_commsbuoy)
+
+(1,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(2,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+uG
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(3,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+hn
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(4,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+Yr
+fJ
+hn
+fJ
+Yr
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(5,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+Yr
+Yr
+pR
+Yr
+Yr
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(6,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+Yr
+bj
+Yr
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(7,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+FC
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(8,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+Yr
+bj
+bj
+bj
+Yr
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(9,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+bj
+fx
+Mp
+hk
+bj
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(10,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+bj
+dX
+et
+AD
+bj
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(11,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+Yr
+bj
+bj
+aJ
+bj
+bj
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(12,1,1) = {"
+fJ
+yk
+fJ
+fJ
+fJ
+fJ
+bj
+tq
+gw
+et
+EA
+bj
+Yr
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(13,1,1) = {"
+fJ
+UR
+fJ
+fJ
+fJ
+DW
+bj
+it
+et
+et
+bj
+bj
+bj
+Yr
+fJ
+fJ
+fJ
+fJ
+"}
+(14,1,1) = {"
+fJ
+aL
+fJ
+yk
+EQ
+Yr
+bj
+WI
+et
+Gq
+bj
+YY
+iv
+bj
+fJ
+fJ
+yk
+fJ
+"}
+(15,1,1) = {"
+fJ
+wS
+hn
+zO
+hn
+bj
+bj
+ew
+et
+Br
+Qb
+Xi
+xI
+bj
+fJ
+fJ
+lT
+fJ
+"}
+(16,1,1) = {"
+fJ
+ri
+yk
+UR
+fJ
+eX
+bj
+LI
+et
+Br
+bj
+Mc
+YN
+bj
+fJ
+oA
+lT
+fJ
+"}
+(17,1,1) = {"
+fJ
+FK
+zO
+wS
+fJ
+hn
+bj
+Gd
+io
+Gw
+bj
+Kr
+Jp
+bj
+fJ
+Vg
+Ad
+fJ
+"}
+(18,1,1) = {"
+fJ
+fJ
+lT
+hb
+fJ
+fJ
+Yr
+bj
+bj
+pC
+bj
+bj
+bj
+Yr
+fJ
+Vg
+Jv
+fJ
+"}
+(19,1,1) = {"
+fJ
+fJ
+Re
+fJ
+fJ
+fJ
+fJ
+bj
+et
+et
+et
+EA
+bj
+fJ
+fJ
+Vg
+aL
+fJ
+"}
+(20,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+bj
+jz
+ES
+ES
+jy
+bj
+fJ
+fJ
+uH
+TS
+fJ
+"}
+(21,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+bj
+mu
+ES
+ES
+et
+bj
+fJ
+fJ
+qi
+lT
+fJ
+"}
+(22,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+Yr
+bj
+et
+ES
+ES
+et
+bj
+Yr
+fJ
+qi
+UR
+fJ
+"}
+(23,1,1) = {"
+fJ
+fJ
+Yr
+Yr
+fJ
+fJ
+bj
+lu
+et
+ES
+ES
+et
+lu
+bj
+fJ
+HC
+aL
+fJ
+"}
+(24,1,1) = {"
+fJ
+fJ
+fJ
+Yr
+Yr
+fJ
+bj
+tO
+et
+ES
+ES
+et
+Lc
+bj
+eX
+tx
+zA
+fJ
+"}
+(25,1,1) = {"
+fJ
+rl
+hn
+pR
+bj
+FC
+bj
+in
+et
+ES
+ES
+et
+nn
+bj
+Ws
+tx
+RY
+fJ
+"}
+(26,1,1) = {"
+fJ
+fJ
+fJ
+Yr
+Yr
+fJ
+bj
+dX
+CN
+ES
+dO
+Yp
+bj
+bj
+fJ
+tx
+zA
+fJ
+"}
+(27,1,1) = {"
+fJ
+fJ
+Yr
+Yr
+fJ
+fJ
+bj
+lY
+kZ
+AE
+lB
+et
+bj
+fJ
+fJ
+qi
+aL
+fJ
+"}
+(28,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+Yr
+bj
+bj
+bj
+zt
+bj
+Yr
+fJ
+fJ
+AA
+TS
+fJ
+"}
+(29,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+bj
+FH
+CN
+Qd
+bj
+fJ
+fJ
+fJ
+Vg
+Re
+fJ
+"}
+(30,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+bj
+II
+YY
+hH
+bj
+fJ
+fJ
+fJ
+FK
+fJ
+fJ
+"}
+(31,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+Yr
+bj
+vr
+bj
+Yr
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
+(32,1,1) = {"
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+VI
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+fJ
+"}
diff --git a/_maps/RandomRuins/SpaceRuins/commsbuoy_pirate.dmm b/_maps/RandomRuins/SpaceRuins/commsbuoy_pirate.dmm
new file mode 100644
index 00000000000..18f2117135c
--- /dev/null
+++ b/_maps/RandomRuins/SpaceRuins/commsbuoy_pirate.dmm
@@ -0,0 +1,299 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"c" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 4
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"d" = (
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail,
+/turf/template_noop,
+/area/space/nearstation)
+"f" = (
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"g" = (
+/turf/closed/wall/mineral/plastitanium,
+/area/ruin/space/unpowered)
+"h" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 8
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"i" = (
+/obj/structure/lattice,
+/obj/structure/sign/poster/contraband/self_ai_liberation/directional/north,
+/turf/template_noop,
+/area/space/nearstation)
+"j" = (
+/obj/structure/sign/poster/contraband/syndicate_recruitment/directional/west,
+/obj/structure/fluff/commsbuoy_broadcaster,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"m" = (
+/obj/structure/billboard/nanotrasen/defaced,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"o" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 8
+ },
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"r" = (
+/obj/structure/marker_beacon/burgundy,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"s" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/marker_beacon/burgundy,
+/turf/template_noop,
+/area/space/nearstation)
+"u" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/sign/poster/contraband/free_key/directional/south,
+/turf/template_noop,
+/area/space/nearstation)
+"v" = (
+/obj/structure/lattice,
+/turf/template_noop,
+/area/space/nearstation)
+"w" = (
+/obj/structure/fluff/tram_rail/anchor{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail/end{
+ dir = 8
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"x" = (
+/obj/structure/fluff/tram_rail/end,
+/turf/template_noop,
+/area/space/nearstation)
+"B" = (
+/obj/structure/fluff/commsbuoy_processor,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"C" = (
+/obj/structure/fluff/sat_dish{
+ pixel_y = -15;
+ pixel_x = -11
+ },
+/obj/structure/fluff/sat_dish{
+ pixel_y = -9;
+ pixel_x = 12
+ },
+/obj/structure/lattice,
+/turf/template_noop,
+/area/space/nearstation)
+"D" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail,
+/turf/template_noop,
+/area/space/nearstation)
+"E" = (
+/turf/open/floor/iron/solarpanel/airless,
+/area/space/nearstation)
+"F" = (
+/obj/structure/lattice,
+/obj/structure/fluff/tram_rail{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"G" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"J" = (
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"K" = (
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ruin/space/unpowered)
+"O" = (
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/space/nearstation)
+"P" = (
+/obj/structure/fluff/commsbuoy_receiver,
+/turf/open/floor/plating/reinforced/airless,
+/area/space/nearstation)
+"Q" = (
+/obj/structure/fluff/tram_rail,
+/turf/template_noop,
+/area/space/nearstation)
+"S" = (
+/obj/structure/fluff/sat_dish{
+ pixel_y = 11;
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"T" = (
+/obj/structure/fluff/sat_dish{
+ pixel_x = 17;
+ dir = 8;
+ pixel_y = -8
+ },
+/turf/template_noop,
+/area/space/nearstation)
+"W" = (
+/obj/structure/lattice/catwalk,
+/turf/template_noop,
+/area/space/nearstation)
+"X" = (
+/obj/structure/fluff/tram_rail/end{
+ dir = 1
+ },
+/obj/structure/fluff/tram_rail/anchor,
+/turf/template_noop,
+/area/space/nearstation)
+"Y" = (
+/obj/structure/fluff/tram_rail/anchor,
+/turf/template_noop,
+/area/space/nearstation)
+"Z" = (
+/obj/structure/fluff/tram_rail/anchor{
+ dir = 1
+ },
+/turf/template_noop,
+/area/space/nearstation)
+
+(1,1,1) = {"
+a
+c
+a
+a
+a
+c
+a
+a
+"}
+(2,1,1) = {"
+a
+F
+C
+K
+S
+o
+a
+a
+"}
+(3,1,1) = {"
+h
+f
+T
+K
+i
+P
+E
+a
+"}
+(4,1,1) = {"
+Y
+w
+g
+K
+s
+O
+E
+E
+"}
+(5,1,1) = {"
+x
+d
+K
+K
+g
+G
+W
+E
+"}
+(6,1,1) = {"
+h
+B
+u
+K
+K
+m
+E
+E
+"}
+(7,1,1) = {"
+Y
+r
+v
+K
+K
+v
+W
+E
+"}
+(8,1,1) = {"
+Q
+D
+a
+K
+g
+J
+E
+E
+"}
+(9,1,1) = {"
+Q
+x
+a
+j
+c
+E
+E
+a
+"}
+(10,1,1) = {"
+x
+a
+a
+X
+Z
+a
+a
+a
+"}
+(11,1,1) = {"
+a
+a
+a
+x
+f
+a
+a
+a
+"}
+(12,1,1) = {"
+a
+a
+a
+a
+G
+a
+a
+a
+"}
diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm
index e67eb0fbcd3..50a286f16fd 100644
--- a/code/datums/ruins/space.dm
+++ b/code/datums/ruins/space.dm
@@ -524,3 +524,25 @@ BUBBERSTATION REMOVAL END */
suffix = "hauntedtradingpost.dmm"
name = "Space-Ruin Donk Co. Interstellar Trading Post 6016"
description = "A small station for trading ships to dock at. It's been abandoned for some time, but its security systems have kept looters away. Rumored to be haunted."
+
+/datum/map_template/ruin/space/commsbuoy
+ id = "commsbuoy"
+ suffix = "commsbuoy_lowtech.dmm"
+ name = "Kosmokomm Communications Buoy"
+ description = "One of the SSC's many Comms Buoys, acting as a broadcaster, receiver and relay for interstellar communications. Due to the \
+ shoddy tech available, it does not enable local communications."
+
+/datum/map_template/ruin/space/commsbuoy_pirate
+ id = "commsbuoy_pirate"
+ suffix = "commsbuoy_pirate.dmm"
+ name = "Pirated Communications Buoy"
+ description = "A Comms Buoy satellite that has been hijacked by local criminal elements, acting as a broadcaster, receiver and relay for \
+ evil interstellar communications. Due to the shoddy tech available, it does not enable local communications."
+
+/datum/map_template/ruin/space/commsbuoy_nt
+ id = "commsbuoy_nt"
+ suffix = "commsbuoy_nt.dmm"
+ name = "Nanotrasen Model-7 Communications Buoy"
+ description = "One of Nanotrasen's highly advanced Communication Buoys. Besides acting as a broadcaster, receiver and relay for interstellar \
+ communications, the satellite also includes a Local-Network array and two multi-function satellite dishes, providing the local sector with \
+ connectivity - as long as you have your Employee ID handy. Though, this one has been reported to have some recent malfunctions."
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm b/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm
new file mode 100644
index 00000000000..895200d487a
--- /dev/null
+++ b/code/modules/mapfluff/ruins/spaceruin_code/commsbuoy.dm
@@ -0,0 +1,267 @@
+/obj/structure/fluff/commsbuoy_receiver
+ name = "interstellar receiver"
+ desc = "A dish-shaped component of the Comms Buoy used to detect and record interstellar signals."
+ icon = 'icons/obj/machines/telecomms.dmi'
+ icon_state = "broadcast receiver"
+
+/obj/structure/fluff/commsbuoy_processor
+ name = "comms buoy processor unit"
+ desc = "This machine is used to process and unscramble interstellar transmissions, to then be relayed and broadcast."
+ icon = 'icons/obj/machines/telecomms.dmi'
+ icon_state = "processor"
+
+/obj/structure/fluff/commsbuoy_broadcaster
+ name = "interstellar broadcaster"
+ desc = "A dish-shaped component of the Comms Buoy used to broadcast processed interstellar signals."
+ icon = 'icons/obj/machines/telecomms.dmi'
+ icon_state = "broadcaster"
+
+/obj/structure/fluff/sat_dish
+ name = "satellite dish"
+ desc = "I wonder if they get any sports channels out here."
+ density = FALSE
+ deconstructible = TRUE
+ icon = 'icons/obj/fluff/general.dmi'
+ icon_state = "sat_dish"
+
+/obj/item/keycard/nt_commsbuoy
+ name = "Nanotrasen comms buoy keycard"
+ desc = "A keycard with the NT logo prominently displayed. The last user broke off the end; the card can still swipe, but this won't insert \
+ into any chip readers now. On the back, mostly obscured by dried blood, the text \"SPINWARD\" is printed, followed by an illegible ID string."
+ color = "#4c80b1"
+ puzzle_id = "nt_commsbuoy"
+
+/obj/machinery/door/puzzle/keycard/nt_commsbuoy
+ name = "secure airlock"
+ puzzle_id = "nt_commsbuoy"
+
+/area/ruin/space/nt_commsbuoy
+ name = "\improper Nanotrasen Comms Buoy"
+ sound_environment = SOUND_AREA_SMALL_ENCLOSED
+ has_gravity = FALSE
+ ambientsounds = list(
+ 'sound/ambience/engineering/ambisin2.ogg',
+ 'sound/ambience/misc/signal.ogg',
+ 'sound/ambience/misc/signal.ogg',
+ 'sound/ambience/general/ambigen9.ogg',
+ 'sound/ambience/engineering/ambitech.ogg',
+ 'sound/ambience/engineering/ambitech2.ogg',
+ 'sound/ambience/engineering/ambitech3.ogg',
+ 'sound/ambience/misc/ambimystery.ogg',
+ ) //same ambience as tcommsat
+
+/obj/item/paper/fluff/ruins/nt_commsbuoy
+ color = COLOR_BLUE_GRAY
+
+/obj/item/paper/fluff/ruins/nt_commsbuoy/table_of_contents
+ name = "Table of Contents: NT-EBCB Model 7"
+ desc = "The Table of Contents page, text mostly faded. Rest of handbook not included."
+ default_raw_text = {"
+
Nanotrasen Extraorbital Bluespace Communications Buoy Operations Manual
+ PROPERTY OF NANOTRASEN. DO NOT DISTRIBUTE.
+
+ Table of Contents
+ Legal Disclaimers: p1-p6
+ How to Sign: Nondisclosure Agreement: p7
+ Main and Secondary Dish: p8-p10
+ Standard Operation Codes: p11
+ Local-Network Array: p12-p13
+ Interstellar Relay: p14-p27
+ Maintinence: p28-p46
+ Common Error Codes: p47
+ Contacting NT Tech Support: p48-54
+
+ (The page is torn straight along the end of the Table of Contents... wish they'd left the actual Contents.)
+ "}
+
+/obj/item/paper/fluff/ruins/nt_commsbuoy/torn_page
+ name = "Page 33: NT-EBCB Model 7"
+ desc = "Page 33, torn out and annotated with lots of underlining."
+ default_raw_text = {"
+ PROPERTY OF NANOTRASEN. DO NOT DISTRIBUTE.
+
+ ... is listing any of the mentioned Operation or Error codes. If the shown error is \
+ not listed in the manual, please refer to pages 48/54 to contact a Nanotrasen Techician for direct assistance.
+ Realigning the Satellite Dish
+ Now that you have identified the Error code as an alignment issue, repairs will follow a simple step-by-step list. Be sure to follow the \
+ list precisely, as additional damage may occur while the dish is misaligned.
+ 1. Assess the outside of the Comms Buoy for any damage or indication of impact to the dish. If any is found, refer to the Replacement Parts subsection\
+ on page 43.
+ 2. Before entering the Comms Buoy, collect the Nanotrasen Comms Buoy keycard provided in the front of this manual. This keycard is vital to \
+ the repair process, operational efficiency of the Buoy, and in disabling the automated defensive system.
+ 3. Display this card prominently on your persons. This can be done with an official Nanotrasen neck lanyard or Nanotrasen clip-on retractible laynard, \
+ worn on your collar, attached to a breast pocket, or on your waist.
+ 4. Enter the Comms Buoy from the designated airlock. There is no system aboard to recycle air, so keep internals and a suit handy in case \
+ the Comms Buoy has depressurized.
+ 5. Immediately upon entering the room, be sure to disable the Automated Defense System (refer to page 29). \
+ Failiure to follow this step may risk injury or even death.
+ 6. Proceed to the terminal corresponding to the misaligned disk - the Primary Dish controller (pages 8/9) can be located in the room past the Local-Network Array (pages 12/13), \
+ while the one closest to the airlock will control the Secondary Dish (page 10).
+ 7. Insert the Nanotrasen Comms Buoy keycard into the slot along the bottom right of the terminal (refer to diagram RD-2).
+
+ (The back of the page is covered in blood. A shame, now you can't see the diagram...)
+ "}
+
+/obj/item/paper/fluff/ruins/nt_commsbuoy/inspection
+ name = "Spinward-NT-EBCB Inspection Report"
+ desc = "A few notes from the pre-activation inspection. Probably shouldn't still be here post-activation."
+ default_raw_text = {"
+ "SS13-Relay" Spinward NT-EBCB Pre-Activation Inspection
+
+ Alright, just a few notes for consideration before we launch this new model. Would really appreciate review and action on the listed items.
+ - Open space on the exterior chassis. Nanotrasen insignia and paint? Could sell advertising space?
+ - The Primary Dish has proven to be sufficient for even severe network loads. Offloading half of its processing to the Secondary just creates \
+ a fault risk; isn't this meant to be a backup? Why are we using it at all times?
+ - Interstellar Relay has some outdated encryption. This sat shouldn't have even left CC until this was updated.
+ - Please reconsider deployment location. SS13's local space is not secure enough for untested comms equipment. Combine with above \
+ note about encryption, this is a serious security risk.
+ - Turrets are functioning as expected, read the ID correctly as long as the full barcode is unobscured. However, please review: location of \
+ turrets. Critical consoles are in the firing line and NOT laser-resistant. No, a backup recorder in the Main Dish is not sufficient.
+ - A note of praise: including a manual with each satellite is very good. Better recommendation might be a console, or something similar \
+ which people can't just tear off the corkboard.
+ - I fixed the breaker while I was aboard; it was routing 2kW into lighting and blew them all out. Simple wiring fault. Fix before launching \
+ other Model-7s to prevent power issues.
+ - While it's not a habitable satellite, a fax machine might have been handy. Now I have to make sure not to lose these notes during the return \
+ trip.
+
+ PROPERTY OF NANOTRASEN. DO NOT DISTRIBUTE.
+ "}
+
+/obj/machinery/computer/terminal/nt_commsbuoy
+ name = "satellite dish operations terminal"
+ icon_screen = "comm"
+ tguitheme = "ntos"
+ upperinfo = "SATELLITE DISH OPERATIONS READOUT"
+ content = list(
+ "10/07/2563 - Inbound Packet Stability - FAIL
\
+ Please realign dish!
",
+ "17/07/2563 - Inbound Packet Stability - FAIL
\
+ Please realign dish!
",
+ "19/07/2563 - Outbound Packet Stability - SUCCESS
",
+ "24/07/2563 - Inbound Packet Stability - FAIL
\
+ Please realign dish!
",
+ "02/08/2563 - Inbound Packet Stability - FAIL
\
+ Please realign dish!
",
+ "09/08/2563 - Inbound Packet Stability - FAIL
\
+ Please realign dish!
",
+ "13/08/2563 - Secondary Dish reports manual alignment changes.
\
+ If this was not intentional, please check the exterior for signs of impact damage!
",
+ "13/08/2563 - Outbound Packet Stability - SUCCESS
",
+ "14/08/2563 - Inbound Packet Stability - SUCCESS
\
+ Forwarding to Processor for signal restoration.
\
+ ... Signal restored, Inbound relayed to Outbound
\
+ ... Outbound Packet Stability - SUCCESS
",
+ "15/08/2563 - Outbound Packet Stability - SUCCESS
",
+ )
+
+/obj/machinery/computer/terminal/nt_commsbuoy/blackbox
+ name = "blackbox transcription terminal"
+ upperinfo = "BLACKBOX TRANSCRIPT - 13/08/2563"
+ content = list(
+ "Notice: this transcript was generated by Nanotrasen speech-to-text. By reading this transcript you are hereby agreeing to the speech-to-text terms \
+ of service, and agree that any fault or inaccuracies in transcriptions legally falls entirely on the speaker.
",
+ "11:07 - NTSS WAKAHIRU
\
+ Yeah, we're close enough. Passing within about a thousand meters of that Buoy that's been having trouble. We can re-route to check on it, I've got \
+ an extraorbital engineer aboard. Hell, guy's already looking for the right handbook.
",
+ "11:08 - NANOTRASEN TRAFFIC CONTROL
\
+ Approved, Wakahiru. Redirect per the updated charts coming in on your CDTI, keep your speed below sub-light until further notice. ETA will be 27 minutes. \
+ Be sure to follow all Company regulations during repairs, these systems are extremely sensitive and you will be held liable for any new damages.",
+ "11:10 - NTSS WAKAHIRU
\
+ Adjusting course now, and already printing out the waivers. Clearing Broadband.",
+ "11:11 - NTSS WAKAHIRU - Local
\
+ Operations to the Bridge, repeat, Operations to the Bridge.
",
+ "11:34 - (TRANSPONDER INACTIVE)
\
+ Control, I've got a, uh- fish or something chewing through my NAV array, can you guys dispatch a team or something? Bring a, like, big net?",
+ "11:37 - NANOTRASEN TRAFFIC CONTROL
\
+ Negative. Your Transponder is inactive - stop all operations, a Security patrol is being dispatched to your location.",
+ "11:37 - (TRANSPONDER INACTIVE)
\
+ Y'know what, that's close enough. Make sure that they bring some repair tools with them. And a harpoon.
",
+ "11:40 - NTSS WAKAHIRU - Local
\
+ Allllllright, guys, we're at the reported Buoy. NT's Traffic-Con said they've been getting messy data through the relay, too messy to forward. \
+ Probably just a misaligned dish. Operations will be dispatching the Away team soon, but otherwise just keep doing whatever it is you're doing.",
+ "11:47 - Unidentified - Local
\
+ This is Away to Wakahiru, how read.",
+ "11:47 - NTSS WAKAHIRU - Local
\
+ Loud and clear Away. What's the hold-up?",
+ "11:48 - Unidentified - Local
\
+ Yeah, uh, this access card doesn't seem to be working on the dish controller. Kept the turrets tame and opened the front door, but \
+ the console's not responding to it. Lost that manual page I brought with me too... Huh? One second- Oh, insert it entirely? I don't think- Dude- dude, I know how to put a card into a reader, just let me-",
+ "11:50 - NT-EBCB-7 ARRAY
\
+ ALERT. LIFE FORMS DETECTED WITHOUT VALID IDENTIFICATION. INITIATING DEFENSIVE PROTOCOL.",
+ "11:50 - Unidentified - Local
\
+ SHIIIIIT!! GET THE CARD BACK OUT OF THE CONSOLE! GET IT OUT! G-",
+ "11:51 - NT-EBCB-7 ARRAY
\
+ ALL LIFE FORMS ELIMINATED. HAVE A SECURE DAY!
",
+ "12:07 - NTSS WAKAHIRU
\
+ NT-TC, this is the NTSS Wakahiru. You're, uh... going to need to dispatch a cleanup crew to that satellite. Sending you our Operations report now.",
+ )
+
+/obj/machinery/computer/terminal/nt_commsbuoy/relay
+ name = "long-range interstellar relay operations terminal"
+ upperinfo = "LONG-RANGE INTERSTELLAR RELAY OPERATIONS READOUT"
+ content = list(
+ "19/07/2563 - Outbound Direct -
\
+ From: totally_not_a_burner@kosmokomm.net
\
+ To: john_doe_a_deer_a_female_deer@kosmokomm.net
\
+
\
+ im telling you! they dont monitor this relay. ive had a bug on the interstellar relay since it was launched. outdated encryption, \
+ its an easy tap. just be patient.
\
+ PACKET FLAGGED AS SUSPICIOUS. LOGGING FOR REVIEW.
",
+
+ "13/08/2563 - Outbound Direct -
\
+ From: NT_S13TC_OFFICIAL@NTFIDspinward.nt
\
+ To: wilson_peters@NTFIDspinward.nt
\
+
\
+ Hello,
\
+ Your ticket has been marked as Resolved with the following comment:
\
+ \"This is Spinward Sector 13 NT Traffic Control, reaching out to inform you that your ticket has been resolved. The relay should now \
+ be operating as expected. Please re-attempt sending that message again. If any other issue arises, open a new ticket.\"
\
+ Thank you for your patience and continued support.
\
+ The Spinward Project - brought to you by Nanotrasen Futures and Innovation Division, in partnership with Nanotrasen \
+ Heavy Industry.
",
+
+ "14/08/2563 - Inbound to Foward -
\
+ From: wilson_peters@NTFIDspinward.nt
\
+ Relay Target: PORT_ELLIS
\
+
\
+ Hey. I miss you. Hope we can holo-call again soon.
\
+ Work's been busy. Wish you could be here for it, but I know you were adamant on getting your citizenship. I hope Gateway's been nice to you.
\
+ I was working on that project folder you left me, the plasma stuff. Really see why you asked to change divisions...
\
+
\
+ Regardless of the heavy topic of the research, I've made some astounding breakthroughs. A majority of this is still your notes just progressing, \
+ long-term ingestion of plasma - specifically Pudicitite - in humanoid species. I really had hoped these projections weren't so accurate. \
+ Guess it just shows your dazzling intellect... as dark as this is.
\
+
\
+ That doomed assistant you had on observation finally expired. The constant medium-level exposure, even treated with a myriad of medications, \
+ left the Amygdala extremely malformed like we were seeing prior. Additionally, it entirely and irrepairably destroyed every neural pathway in \
+ the Hypothalamus, leaving the subject on a direct path to literally burning out.
\
+ The damage to their bodily temperature regulation wasn't the focus, nor did I get much opportunity to make it one. Security had to kill them \
+ pre-emptively; their Amygdala is engorged and stained with purple and white streaks (almost as vibrant as your scales). Whatever this damage \
+ truly is seems to have contributed to overstimulation and amplified emotional responses to the testing.
\
+
\
+ It's... a perfect storm. The loss of control of emotional responses in tandem with the exaggurated environmental stimuli. I've already pushed \
+ a few of the results up as high as I can and advised we push towards improving our plasma filtration, especially in masks. Specifically \
+ the Mining gas masks, as your papers mentioned - the elevated gas exposure makes them a high risk group.
\
+ My peers over here are already adjusting their testing to boost this to Central's attention so that other stations might \
+ contribute to improving our protections from this.
\
+
\
+ I know you told me to stop messaging you, especially about this - but I thought you deserved to know, of all people. You were right. You were \
+ always right. Please... respond. Even just to tell me if *I* did something right.
\
+ The Spinward Project - brought to you by Nanotrasen Futures and Innovation Division, in partnership with Nanotrasen Heavy Industry.
",
+
+ "15/08/2563 - Outbound Direct -
\
+ From: totally_not_a_burner@kosmokomm.net
\
+ To: john_doe_a_deer_a_female_deer@kosmokomm.net
\
+
\
+ IM THE BEST HACKER IN THE GALAXY. youre paying me TRIPLE for that, holy CRAP the syndicate are going to pay us so much. actually you owe me \
+ at least half the profits. no no over half i did all the work.
\
+ (Attached data file: WEGOTIT.syndzip)
\
+ PACKET FLAGGED AS SUSPICIOUS. BEGINNING TRACE. \
+ ORIGIN TRACED. NT-DAP DISPATCHED.
\
+ DESTINATION TRACED. NT-DAP DISPATCHED.
\
+ DATA FILE SCANNED AND FORWARDED TO NT-DAP.
\
+
\
+ FILE ORIGIN TRACED TO NT STATION. LOCKDOWN INITIATED.
\
+ SECURITY ADVISORY RAISED TO: RED STAR.
\
+ NT-DAP DISPATCHED. TARGET: wilson_peters.
",
+ )
diff --git a/config/spaceruinblacklist.txt b/config/spaceruinblacklist.txt
index fb34b2208a5..9f4571db015 100644
--- a/config/spaceruinblacklist.txt
+++ b/config/spaceruinblacklist.txt
@@ -20,6 +20,9 @@
#_maps/RandomRuins/SpaceRuins/caravanambush.dmm
#_maps/RandomRuins/SpaceRuins/clericden.dmm
#_maps/RandomRuins/SpaceRuins/clownplanet.dmm
+#_maps/RandomRuins/SpaceRuins/commsbuoy_lowtech.dmm
+#_maps/RandomRuins/SpaceRuins/commsbuoy_nt.dmm
+#_maps/RandomRuins/SpaceRuins/commsbuoy_pirate.dmm
#_maps/RandomRuins/SpaceRuins/crashedclownship.dmm
#_maps/RandomRuins/SpaceRuins/crashedship.dmm
#_maps/RandomRuins/SpaceRuins/cyborg_mothership.dmm
diff --git a/icons/obj/fluff/general.dmi b/icons/obj/fluff/general.dmi
index f99cbaabc9a1d0b5135e5d2255d2660a5dcca2ea..b05ce2f83e8bb5eb760bf9972e5ebe2d05a3abc9 100644
GIT binary patch
delta 20128
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
diff --git a/tgstation.dme b/tgstation.dme
index 1b8d3607be3..1e9c5d4a350 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -4748,6 +4748,7 @@
#include "code\modules\mapfluff\ruins\spaceruin_code\bigderelict1.dm"
#include "code\modules\mapfluff\ruins\spaceruin_code\caravanambush.dm"
#include "code\modules\mapfluff\ruins\spaceruin_code\clericsden.dm"
+#include "code\modules\mapfluff\ruins\spaceruin_code\commsbuoy.dm"
#include "code\modules\mapfluff\ruins\spaceruin_code\crashedclownship.dm"
#include "code\modules\mapfluff\ruins\spaceruin_code\crashedship.dm"
#include "code\modules\mapfluff\ruins\spaceruin_code\cyborgmothership.dm"
|