diff --git a/code/__defines/planets_vr.dm b/code/__defines/planets_vr.dm
index 07c9122467..7868148661 100644
--- a/code/__defines/planets_vr.dm
+++ b/code/__defines/planets_vr.dm
@@ -45,3 +45,25 @@
#define VIRGO3BB_SET_ATMOS nitrogen=VIRGO3BB_MOL_N2;oxygen=VIRGO3BB_MOL_O2;carbon_dioxide=VIRGO3BB_MOL_CO2;phoron=VIRGO3BB_MOL_PHORON;temperature=VIRGO3BB_AVG_TEMP
#define VIRGO3BB_TURF_CREATE(x) x/virgo3b_better/nitrogen=VIRGO3BB_MOL_N2;x/virgo3b_better/oxygen=VIRGO3BB_MOL_O2;x/virgo3b_better/carbon_dioxide=VIRGO3BB_MOL_CO2;x/virgo3b_better/phoron=VIRGO3BB_MOL_PHORON;x/virgo3b_better/temperature=VIRGO3BB_AVG_TEMP;x/virgo3b_better/outdoors=TRUE;x/virgo3b_better/update_graphic(list/graphic_add = null, list/graphic_remove = null) return 0
#define VIRGO3BB_TURF_CREATE_UN(x) x/virgo3b_better/nitrogen=VIRGO3BB_MOL_N2;x/virgo3b_better/oxygen=VIRGO3BB_MOL_O2;x/virgo3b_better/carbon_dioxide=VIRGO3BB_MOL_CO2;x/virgo3b_better/phoron=VIRGO3BB_MOL_PHORON;x/virgo3b_better/temperature=VIRGO3BB_AVG_TEMP
+
+//Atmosphere properties
+#define VIRGO2_ONE_ATMOSPHERE 312.1 //kPa
+#define VIRGO2_AVG_TEMP 612 //kelvin
+
+#define VIRGO2_PER_N2 0.10 //percent
+#define VIRGO2_PER_O2 0.03
+#define VIRGO2_PER_N2O 0.00 //Currently no capacity to 'start' a turf with this. See turf.dm
+#define VIRGO2_PER_CO2 0.87
+#define VIRGO2_PER_PHORON 0.00
+
+//Math only beyond this point
+#define VIRGO2_MOL_PER_TURF (VIRGO2_ONE_ATMOSPHERE*CELL_VOLUME/(VIRGO2_AVG_TEMP*R_IDEAL_GAS_EQUATION))
+#define VIRGO2_MOL_N2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_N2)
+#define VIRGO2_MOL_O2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_O2)
+#define VIRGO2_MOL_N2O (VIRGO2_MOL_PER_TURF * VIRGO2_PER_N2O)
+#define VIRGO2_MOL_CO2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_CO2)
+#define VIRGO2_MOL_PHORON (VIRGO2_MOL_PER_TURF * VIRGO2_PER_PHORON)
+
+//Turfmakers
+#define VIRGO2_SET_ATMOS nitrogen=VIRGO2_MOL_N2;oxygen=VIRGO2_MOL_O2;carbon_dioxide=VIRGO2_MOL_CO2;phoron=VIRGO2_MOL_PHORON;temperature=VIRGO2_AVG_TEMP
+#define VIRGO2_TURF_CREATE(x) x/virgo2/nitrogen=VIRGO2_MOL_N2;x/virgo2/oxygen=VIRGO2_MOL_O2;x/virgo2/carbon_dioxide=VIRGO2_MOL_CO2;x/virgo2/phoron=VIRGO2_MOL_PHORON;x/virgo2/temperature=VIRGO2_AVG_TEMP;x/virgo2/color="#eacd7c"
diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm
index c92cbdd650..07a961ddc4 100644
--- a/code/game/machinery/embedded_controller/embedded_controller_base.dm
+++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm
@@ -1,5 +1,6 @@
/obj/machinery/embedded_controller
name = "Embedded Controller"
+ layer = ABOVE_WINDOW_LAYER
anchored = TRUE
use_power = USE_POWER_IDLE
idle_power_usage = 10
diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm
index e5aaa45f5a..f4b60b015a 100644
--- a/code/modules/shuttles/shuttle_emergency.dm
+++ b/code/modules/shuttles/shuttle_emergency.dm
@@ -1,9 +1,12 @@
// Formerly /datum/shuttle/ferry/emergency
/datum/shuttle/autodock/ferry/emergency
category = /datum/shuttle/autodock/ferry/emergency
+ var/frequency = 1380 // Why this frequency? BECAUSE! Thats what someone decided once.
+ var/datum/radio_frequency/radio_connection
/datum/shuttle/autodock/ferry/emergency/New()
..()
+ radio_connection = radio_controller.add_object(src, frequency, null)
if(emergency_shuttle.shuttle)
CRASH("An emergency shuttle has already been defined.")
emergency_shuttle.shuttle = src
@@ -106,6 +109,17 @@
..(user)
+/datum/shuttle/autodock/ferry/emergency/escape
+ name = "Escape"
+ location = FERRY_LOCATION_OFFSITE
+ shuttle_area = /area/shuttle/escape
+ warmup_time = 10
+ landmark_offsite = "escape_cc"
+ landmark_station = "escape_station"
+ landmark_transition = "escape_transit"
+ move_time = SHUTTLE_TRANSIT_DURATION_RETURN
+ move_direction = SOUTH
+ docking_controller_tag = "escape_shuttle"
/obj/machinery/computer/shuttle_control/emergency
diff --git a/code/modules/shuttles/shuttle_supply.dm b/code/modules/shuttles/shuttle_supply.dm
index 46398bc01f..e030f336cf 100644
--- a/code/modules/shuttles/shuttle_supply.dm
+++ b/code/modules/shuttles/shuttle_supply.dm
@@ -94,3 +94,14 @@
//returns the ETA in deciseconds
/datum/shuttle/autodock/ferry/supply/proc/eta_deciseconds()
return round(arrive_time - world.time)
+
+/datum/shuttle/autodock/ferry/supply/cargo
+ name = "Supply"
+ location = FERRY_LOCATION_OFFSITE
+ shuttle_area = /area/shuttle/supply
+ warmup_time = 10
+ landmark_offsite = "supply_cc"
+ landmark_station = "supply_station"
+ docking_controller_tag = "supply_shuttle"
+ flags = SHUTTLE_FLAGS_PROCESS|SHUTTLE_FLAGS_SUPPLY
+ move_direction = WEST
diff --git a/code/modules/turbolift/turbolift.dm b/code/modules/turbolift/turbolift.dm
index 1e5e554870..1b9e16839e 100644
--- a/code/modules/turbolift/turbolift.dm
+++ b/code/modules/turbolift/turbolift.dm
@@ -9,7 +9,7 @@
var/floor_wait_delay = 85 // Time to wait at floor stops.
var/obj/structure/lift/panel/control_panel_interior // Lift control panel.
var/doors_closing = 0 // Whether doors are in the process of closing
- var/list/music = null // Elevator music to set on areas
+ var/list/music = list('sound/music/elevator.ogg') // Elevator music to set on areas
var/priority_mode = FALSE // Flag to block buttons from calling the elevator if in priority mode.
var/fire_mode = FALSE // Flag to indicate firefighter mode is active.
diff --git a/maps/common/common_areas.dm b/maps/common/common_areas.dm
new file mode 100644
index 0000000000..6c46f4d168
--- /dev/null
+++ b/maps/common/common_areas.dm
@@ -0,0 +1,232 @@
+// The aerostat shuttle
+/area/shuttle/aerostat
+ name = "\improper Aerostat Shuttle"
+
+//The aerostat itself
+/area/tether_away/aerostat
+ name = "\improper Away Mission - Aerostat Outside"
+ icon_state = "away"
+ base_turf = /turf/unsimulated/floor/sky/virgo2_sky
+ requires_power = FALSE
+ dynamic_lighting = FALSE
+
+/area/tether_away/aerostat/inside
+ name = "\improper Away Mission - Aerostat Inside"
+ icon_state = "crew_quarters"
+ base_turf = /turf/simulated/floor/plating/virgo2
+ requires_power = TRUE
+ dynamic_lighting = TRUE
+ forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/argitoth.ogg', 'sound/ambience/tension/burning_terror.ogg')
+
+/area/tether_away/aerostat/solars
+ name = "\improper Away Mission - Aerostat Solars"
+ icon_state = "crew_quarters"
+ base_turf = /turf/simulated/floor/plating/virgo2
+ dynamic_lighting = TRUE
+
+/area/offmap/aerostat/surface
+ flags = RAD_SHIELDED
+ ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
+ base_turf = /turf/simulated/mineral/floor/ignore_mapgen/virgo2
+
+/area/offmap/aerostat/surface/explored
+ name = "Away Mission - Aerostat Surface (E)"
+ icon_state = "explored"
+
+/area/offmap/aerostat/surface/shuttleconsole
+ name = "Away Mission - Aerostat Surface Console"
+ icon_state = "explored"
+ dynamic_lighting = FALSE
+ requires_power = FALSE
+
+/area/offmap/aerostat/surface/unexplored
+ name = "Away Mission - Aerostat Surface (UE)"
+ icon_state = "unexplored"
+
+/area/offmap/aerostat/surface/outpost
+ requires_power = TRUE
+ dynamic_lighting = TRUE
+ ambience = null
+
+/area/offmap/aerostat/surface/outpost/backroom
+ name = "V2 Outpost - Research Area"
+/area/offmap/aerostat/surface/outpost/hallway
+ name = "V2 Outpost - Hallway"
+/area/offmap/aerostat/surface/outpost/cafe
+ name = "V2 Outpost - Cafe"
+/area/offmap/aerostat/surface/outpost/park
+ name = "V2 Outpost - Park"
+/area/offmap/aerostat/surface/outpost/officerone
+ name = "V2 Outpost - Officer's Quarters 1"
+/area/offmap/aerostat/surface/outpost/officertwo
+ name = "V2 Outpost - Officer's Quarters 2"
+/area/offmap/aerostat/surface/outpost/barracks
+ name = "V2 Outpost - Barracks"
+/area/offmap/aerostat/surface/outpost/airlock
+ name = "V2 Outpost - Airlock"
+/area/offmap/aerostat/surface/outpost/powerroom
+ name = "V2 Outpost - Power Room"
+/area/offmap/aerostat/surface/outpost/guardpost
+ name = "V2 Outpost - Guard Post"
+
+/area/offmap/aerostat/inside
+ name = "\improper Away Mission - Aerostat Inside"
+ icon_state = "crew_quarters"
+ base_turf = /turf/simulated/floor/plating/virgo2
+ requires_power = TRUE
+ dynamic_lighting = TRUE
+// forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/argitoth.ogg', 'sound/ambience/tension/burning_terror.ogg')
+
+/area/offmap/aerostat/inside
+ icon = 'icons/turf/areas_vr.dmi'
+ icon_state = "blublasqu"
+
+/area/offmap/aerostat/inside/toxins
+ name = "Toxins Lab"
+ icon_state = "purwhisqu"
+
+/area/offmap/aerostat/inside/xenoarch
+ name = "Xenoarchaeolegy Lab"
+ icon_state = "yelwhisqu"
+/area/offmap/aerostat/inside/xenoarch/chamber
+ name = "Xenoarchaeolegy Vent Chamber"
+
+/area/offmap/aerostat/inside/genetics
+ name = "Genetics Lab"
+ icon_state = "grewhisqu"
+
+/area/offmap/aerostat/inside/telesci
+ name = "Telescience Lab"
+ icon_state = "bluwhisqu"
+
+/area/offmap/aerostat/inside/atmos
+ name = "Atmospherics"
+ icon_state = "orawhisqu"
+
+/area/offmap/aerostat/inside/firingrange
+ name = "Firing Range"
+ icon_state = "orawhisqu"
+
+/area/offmap/aerostat/inside/miscstorage
+ name = "Miscellaneous Storage"
+ icon_state = "orawhisqu"
+
+/area/offmap/aerostat/inside/virology
+ name = "Virology Lab"
+ icon_state = "yelwhicir"
+
+/area/offmap/aerostat/inside/south
+ name = "Miscellaneous Labs A"
+ icon_state = "blublasqu"
+
+/area/offmap/aerostat/inside/south/b
+ name = "Miscellaneous Labs B"
+ icon_state = "blublasqu"
+
+
+/area/offmap/aerostat/inside/powercontrol
+ name = "Power Control"
+ icon_state = "orawhicir"
+
+/area/offmap/aerostat/inside/westhall
+ name = "West Hall"
+ icon_state = "orablacir"
+/area/offmap/aerostat/inside/easthall
+ name = "East Hall"
+ icon_state = "orablacir"
+
+/area/offmap/aerostat/inside/northchamb
+ name = "North Chamber"
+ icon_state = "orablacir"
+/area/offmap/aerostat/inside/southchamb
+ name = "South Chamber"
+ icon_state = "orablacir"
+
+/area/offmap/aerostat/inside/drillstorage
+ name = "Drill Storage"
+ icon_state = "orablacir"
+
+/area/offmap/aerostat/inside/zorrenoffice
+ name = "Zorren Reception"
+ icon_state = "orablacir"
+
+/area/offmap/aerostat/inside/lobby
+ name = "Lobby"
+ icon_state = "orablacir"
+/area/offmap/aerostat/inside/xenobiolab
+ name = "Xenobiology Lab"
+ icon_state = "orablacir"
+
+/area/offmap/aerostat/inside/airlock
+ name = "Airlock"
+ icon_state = "redwhicir"
+/area/offmap/aerostat/inside/airlock/north
+ name = "North Airlock"
+/area/offmap/aerostat/inside/airlock/east
+ name = "East Airlock"
+/area/offmap/aerostat/inside/airlock/west
+ name = "West Airlock"
+/area/offmap/aerostat/inside/airlock/south
+ name = "South Airlock"
+
+/area/offmap/aerostat/inside/arm/ne
+ name = "North-East Solar Arm"
+/area/offmap/aerostat/inside/arm/nw
+ name = "North-West Solar Arm"
+/area/offmap/aerostat/inside/arm/se
+ name = "South-East Solar Arm"
+/area/offmap/aerostat/inside/arm/sw
+ name = "South-West Solar Arm"
+
+/area/offmap/aerostat/glassgetsitsownarea
+ name = "Aerostat Glass"
+ icon_state = "crew_quarters"
+ base_turf = /turf/unsimulated/floor/sky/virgo2_sky
+ dynamic_lighting = FALSE
+
+/area/offmap/aerostat/solars
+ name = "\improper Away Mission - Aerostat Solars"
+ icon_state = "crew_quarters"
+ base_turf = /turf/simulated/floor/plating/virgo2
+ dynamic_lighting = FALSE
+
+/area/sdmine
+ ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
+ base_turf = /turf/simulated/mineral/floor/vacuum
+/area/sdmine/unexplored
+ name = "asteroid field"
+ icon_state = "unexplored"
+/area/sdmine/explored
+ name = "asteroid field"
+ icon_state = "explored"
+
+/area/submap/space_rocks
+ name = "POI - Space Rocks"
+ ambience = AMBIENCE_FOREBODING
+
+/area/submap/space_rocks/bittynest1
+ name = "POI - Bittynest1"
+
+/area/submap/space_rocks/bittynest2
+ name = "POI - Bittynest2"
+
+/area/submap/space_rocks/bittynest3
+ name = "POI - Bittynest3"
+
+/area/submap/space_rocks/bittynest4
+ name = "POI - Bittynest4"
+
+/area/submap/space_rocks/tunnel1
+ name = "POI - Tunnel1"
+
+/area/submap/space_rocks/tunnel2
+ name = "POI - Tunnel2"
+
+/area/submap/space_rocks/spacecrystals
+ name = "POI - Space Crystals"
+
+/area/submap/space_rocks/clearing
+ name = "POI - Clearing"
+
+/area/submap/space_rocks/seventemple
+ name = "POI - Temple of the Seven"
diff --git a/maps/common/common_defines.dm b/maps/common/common_defines.dm
new file mode 100644
index 0000000000..42ee973306
--- /dev/null
+++ b/maps/common/common_defines.dm
@@ -0,0 +1,146 @@
+// Tether
+#define Z_LEVEL_SURFACE_LOW 1
+#define Z_LEVEL_SURFACE_MID 2
+#define Z_LEVEL_SURFACE_HIGH 3
+#define Z_LEVEL_TRANSIT 4
+#define Z_LEVEL_SPACE_LOW 5
+#define Z_LEVEL_SURFACE_MINE 6
+#define Z_LEVEL_SOLARS 7
+#define Z_LEVEL_UNDERDARK 21
+#define Z_LEVEL_PLAINS 22
+#define Z_LEVEL_ROGUEMINE_1 23
+#define Z_LEVEL_ROGUEMINE_2 24
+
+// Stellar Delight
+#define Z_LEVEL_SHIP_LOW 1
+#define Z_LEVEL_SHIP_MID 2
+#define Z_LEVEL_SHIP_HIGH 3
+#define Z_LEVEL_OVERMAP 4
+#define Z_LEVEL_SPACE_ROCKS 5
+
+// Groundbase
+#define Z_LEVEL_GB_BOTTOM 1
+#define Z_LEVEL_GB_MIDDLE 2
+#define Z_LEVEL_GB_TOP 3
+#define Z_LEVEL_GB_WILD_N 4
+#define Z_LEVEL_GB_WILD_S 5
+#define Z_LEVEL_GB_WILD_E 6
+#define Z_LEVEL_GB_WILD_W 7
+
+// Common
+#define Z_LEVEL_CENTCOM 8
+#define Z_LEVEL_MISC 9
+#define Z_LEVEL_OFFMAP1 10
+#define Z_LEVEL_AEROSTAT 11
+#define Z_LEVEL_AEROSTAT_SURFACE 12
+#define Z_LEVEL_DEBRISFIELD 13
+#define Z_LEVEL_FUELDEPOT 14
+#define Z_LEVEL_GATEWAY 15
+#define Z_LEVEL_OM_ADVENTURE 16
+#define Z_LEVEL_REDGATE 17
+#define Z_LEVEL_BEACH 18
+#define Z_LEVEL_BEACH_CAVE 19
+#define Z_LEVEL_MINING 20
+
+//Camera networks
+#define NETWORK_TETHER "Tether"
+#define NETWORK_OUTSIDE "Outside"
+#define NETWORK_HALLS "Halls"
+
+/obj/effect/landmark/map_data/groundbase
+ height = 3
+
+/obj/effect/landmark/map_data/stellar_delight
+ height = 3
+
+/obj/effect/overmap/visitable/sector/virgo3b
+ name = "Virgo 3B"
+ desc = "Full of phoron, and home to the NSB Adephagia."
+ scanner_desc = @{"[i]Registration[/i]: NSB Adephagia
+[i]Class[/i]: Installation
+[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
+[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
+
+ icon = 'icons/obj/overmap_vr.dmi'
+ icon_state = "virgo3b"
+
+ skybox_icon = 'icons/skybox/virgo3b.dmi'
+ skybox_icon_state = "small"
+ skybox_pixel_x = 0
+ skybox_pixel_y = 0
+
+ var/mob_announce_cooldown = 0
+
+/obj/effect/overmap/visitable/sector/virgo3c
+ name = "Virgo 3C"
+ desc = "A small, volcanically active moon."
+ scanner_desc = @{"[i]Registration[/i]: NSB Rascal's Pass
+[i]Class[/i]: Installation
+[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
+[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
+ known = TRUE
+ in_space = TRUE
+
+ icon = 'icons/obj/overmap.dmi'
+ icon_state = "lush"
+
+ skybox_icon = null
+ skybox_icon_state = null
+ skybox_pixel_x = 0
+ skybox_pixel_y = 0
+
+ initial_generic_waypoints = list("groundbase", "gb_excursion_pad","omship_axolotl")
+ initial_restricted_waypoints = list()
+
+ extra_z_levels = list(
+ Z_LEVEL_MINING,
+ Z_LEVEL_GB_WILD_N,
+ Z_LEVEL_GB_WILD_S,
+ Z_LEVEL_GB_WILD_E,
+ Z_LEVEL_GB_WILD_W
+ )
+
+/obj/effect/overmap/visitable/ship/stellar_delight
+ name = "NRV Stellar Delight"
+ icon = 'icons/obj/overmap_vr.dmi'
+ icon_state = "stellar_delight_g"
+ desc = "Spacefaring vessel. Friendly IFF detected."
+ scanner_desc = @{"[i]Registration[/i]: NRV Stellar Delight
+[i]Class[/i]: Nanotrasen Response Vessel
+[i]Transponder[/i]: Transmitting (CIV), non-hostile"
+[b]Notice[/b]: A response vessel registered to Nanotrasen."}
+ vessel_mass = 25000
+ vessel_size = SHIP_SIZE_LARGE
+ initial_generic_waypoints = list("starboard_shuttlepad","port_shuttlepad","sd-1-23-54","sd-1-67-15","sd-1-70-130","sd-1-115-85","sd-2-25-98","sd-2-117-98","sd-3-22-78","sd-3-36-33","sd-3-104-33","sd-3-120-78")
+ initial_restricted_waypoints = list("Exploration Shuttle" = list("sd_explo"), "Mining Shuttle" = list("sd_mining"))
+ levels_for_distress = list(Z_LEVEL_OFFMAP1, Z_LEVEL_BEACH, Z_LEVEL_AEROSTAT, Z_LEVEL_DEBRISFIELD, Z_LEVEL_FUELDEPOT)
+ unowned_areas = list(/area/shuttle/sdboat)
+ known = TRUE
+ start_x = 2
+ start_y = 2
+
+ fore_dir = NORTH
+
+ skybox_icon = 'maps/stellar_delight/stelardelightskybox.dmi'
+ skybox_icon_state = "skybox"
+ skybox_pixel_x = 450
+ skybox_pixel_y = 200
+
+/obj/effect/overmap/visitable/sector/virgo2
+ name = "Virgo 2"
+ desc = "Includes the Remmi Aerostat and associated ground mining complexes."
+ scanner_desc = @{"[i]Stellar Body[/i]: Virgo 2
+[i]Class[/i]: R-Class Planet
+[i]Habitability[/i]: Low (High Temperature, Toxic Atmosphere)
+[b]Notice[/b]: Planetary environment not suitable for life. Landing may be hazardous."}
+ icon_state = "globe"
+ in_space = 0
+ known = TRUE
+ icon_state = "chlorine"
+
+ skybox_icon = 'icons/skybox/virgo2.dmi'
+ skybox_icon_state = "v2"
+ skybox_pixel_x = 0
+ skybox_pixel_y = 0
+
+ extra_z_levels = list(Z_LEVEL_AEROSTAT_SURFACE)
diff --git a/maps/common/common_shuttles.dm b/maps/common/common_shuttles.dm
new file mode 100644
index 0000000000..f63459d562
--- /dev/null
+++ b/maps/common/common_shuttles.dm
@@ -0,0 +1,44 @@
+/////Virgo Flyer/////
+// The shuttle's 'shuttle' computer
+/obj/machinery/computer/shuttle_control/explore/ccboat
+ name = "Virgo Flyer control console"
+ shuttle_tag = "Virgo Flyer"
+ req_one_access = list(access_pilot)
+
+/obj/effect/overmap/visitable/ship/landable/ccboat
+ name = "NTV Virgo Flyer"
+ desc = "A small shuttle from Central Command."
+ vessel_mass = 1000
+ vessel_size = SHIP_SIZE_TINY
+ shuttle = "Virgo Flyer"
+ known = TRUE
+
+// A shuttle lateloader landmark
+/obj/effect/shuttle_landmark/shuttle_initializer/ccboat
+ name = "Central Command Shuttlepad"
+ base_area = /area/shuttle/centcom/ccbay
+ base_turf = /turf/simulated/floor/reinforced
+ landmark_tag = "cc_shuttlepad"
+ docking_controller = "cc_landing_pad"
+ shuttle_type = /datum/shuttle/autodock/overmap/ccboat
+
+/datum/shuttle/autodock/overmap/ccboat
+ name = "Virgo Flyer"
+ current_location = "cc_shuttlepad"
+ docking_controller_tag = "ccboat"
+ shuttle_area = /area/shuttle/ccboat
+ fuel_consumption = 0
+ defer_initialisation = TRUE
+
+/area/shuttle/ccboat
+ icon = 'icons/turf/areas_vr.dmi'
+ icon_state = "yelwhitri"
+ name = "Virgo Flyer"
+ requires_power = 0
+
+/area/shuttle/centcom/ccbay
+ icon = 'icons/turf/areas_vr.dmi'
+ icon_state = "bluwhisqu"
+ name = "Central Command Shuttle Bay"
+ requires_power = 0
+ dynamic_lighting = 0
diff --git a/maps/common/common_telecomms.dm b/maps/common/common_telecomms.dm
new file mode 100644
index 0000000000..c6c8ec493a
--- /dev/null
+++ b/maps/common/common_telecomms.dm
@@ -0,0 +1,8 @@
+/area/maintenance/substation/tcomms
+ name = "\improper Telecomms Substation"
+
+/area/maintenance/station/tcomms
+ name = "\improper Telecoms Maintenance"
+
+/obj/item/multitool/station_buffered
+ name = "pre-linked multitool"
diff --git a/maps/common/common_things.dm b/maps/common/common_things.dm
new file mode 100644
index 0000000000..23707942bd
--- /dev/null
+++ b/maps/common/common_things.dm
@@ -0,0 +1,407 @@
+/obj/effect/step_trigger/teleporter/to_mining
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+ plane = TURF_PLANE
+ layer = ABOVE_TURF_LAYER
+
+/obj/effect/step_trigger/teleporter/from_mining
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+ plane = TURF_PLANE
+ layer = ABOVE_TURF_LAYER
+
+/obj/effect/step_trigger/teleporter/to_solars
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+
+/obj/effect/step_trigger/teleporter/from_solars
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+
+/obj/effect/step_trigger/teleporter/wild
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+
+/obj/effect/step_trigger/teleporter/to_underdark
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+
+/obj/effect/step_trigger/teleporter/from_underdark
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+
+/obj/effect/step_trigger/teleporter/to_plains
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+
+/obj/effect/step_trigger/teleporter/from_plains
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+
+/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+
+/obj/effect/step_trigger/lost_in_space
+ icon = 'icons/obj/structures/stairs_64x64.dmi'
+ icon_state = ""
+ invisibility = 0
+ var/deathmessage = "You drift off into space, floating alone in the void until your life support runs out."
+
+/obj/effect/step_trigger/lost_in_space/Trigger(var/atom/movable/A) //replacement for shuttle dump zones because there's no empty space levels to dump to
+ if(ismob(A))
+ to_chat(A, span_danger("[deathmessage]"))
+ qdel(A)
+
+/obj/effect/step_trigger/lost_in_space/bluespace
+ deathmessage = "Everything goes blue as your component particles are scattered throughout the known and unknown universe."
+ var/last_sound = 0
+
+/obj/effect/step_trigger/lost_in_space/bluespace/Trigger(A)
+ if(world.time - last_sound > 5 SECONDS)
+ last_sound = world.time
+ playsound(src, 'sound/effects/supermatter.ogg', 75, 1)
+ if(ismob(A) && prob(5))//lucky day
+ var/destturf = locate(rand(5,world.maxx-5),rand(5,world.maxy-5),pick(using_map.station_levels))
+ new /datum/teleport/instant(A, destturf, 0, 1, null, null, null, 'sound/effects/phasein.ogg')
+ else
+ return ..()
+
+/obj/effect/step_trigger/lost_in_space/tram
+ deathmessage = "You fly down the tunnel of the tram at high speed for a few moments before impact kills you with sheer concussive force."
+
+//
+// TRAM STATION
+//
+
+// The tram's electrified maglev tracks
+/turf/simulated/floor/maglev
+ name = "maglev track"
+ desc = "Magnetic levitation tram tracks. Caution! Electrified!"
+ icon = 'icons/turf/flooring/maglevs.dmi'
+ icon_state = "maglevup"
+ can_be_plated = FALSE
+
+ var/area/shock_area = /area/tether/surfacebase/tram
+
+/turf/simulated/floor/maglev/Initialize()
+ . = ..()
+ shock_area = locate(shock_area)
+
+// Walking on maglev tracks will shock you! Horray!
+/turf/simulated/floor/maglev/Entered(var/atom/movable/AM, var/atom/old_loc)
+ if(isliving(AM) && !(AM.is_incorporeal()) && prob(50))
+ track_zap(AM)
+
+/turf/simulated/floor/maglev/attack_hand(var/mob/user)
+ if(prob(75))
+ track_zap(user)
+
+/turf/simulated/floor/maglev/proc/track_zap(var/mob/living/user)
+ if (!istype(user)) return
+ if (electrocute_mob(user, shock_area, src))
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, src)
+ s.start()
+
+// Tram air scrubbers for keeping arrivals clean - they work even with no area power
+/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram
+ name = "\improper Tram Air Scrubber"
+ icon_state = "scrubber:1"
+ on = TRUE
+
+/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram/powered()
+ return TRUE // Always be powered
+
+// Tram departure cryo doors that turn into ordinary airlock doors at round end
+/obj/machinery/cryopod/robot/door/tram
+ name = "\improper Tram Station"
+ icon = 'icons/obj/doors/Doorextglass.dmi'
+ icon_state = "door_closed"
+ can_atmos_pass = ATMOS_PASS_NO
+ base_icon_state = "door_closed"
+ occupied_icon_state = "door_locked"
+ desc = "The tram station you might've came in from. You could leave the base easily using this."
+ on_store_message = "has departed on the tram."
+ on_store_name = "Travel Oversight"
+ on_enter_occupant_message = "The tram arrives at the platform; you step inside and take a seat."
+ on_store_visible_message_1 = "'s speakers chime, anouncing a tram has arrived to take"
+ on_store_visible_message_2 = "to the colony"
+ time_till_despawn = 10 SECONDS
+ spawnpoint_type = /datum/spawnpoint/tram
+
+/obj/machinery/cryopod/robot/door/tram/process()
+ if(emergency_shuttle.online() || emergency_shuttle.returned())
+ // Transform into a door! But first despawn anyone inside
+ time_till_despawn = 0
+ ..()
+ var/turf/T = get_turf(src)
+ var/obj/machinery/door/airlock/glass_external/door = new(T)
+ door.req_access = null
+ door.req_one_access = null
+ qdel(src)
+ // Otherwise just operate normally
+ return ..()
+
+/obj/machinery/cryopod/robot/door/tram/Bumped(var/atom/movable/AM)
+ if(!ishuman(AM))
+ return
+
+ var/mob/living/carbon/human/user = AM
+
+ var/choice = tgui_alert(user, "Do you want to depart via the tram? Your character will leave the round.","Departure",list("Yes","No"))
+ if(user && Adjacent(user) && choice == "Yes")
+ var/mob/observer/dead/newghost = user.ghostize()
+ newghost.timeofdeath = world.time
+ despawn_occupant(user)
+
+//
+// Holodorms
+//
+/obj/machinery/computer/HolodeckControl/holodorm
+ name = "Don't use this one!!!"
+ powerdown_program = "Off"
+ default_program = "Off"
+
+ //Smollodeck
+ active_power_usage = 500
+ item_power_usage = 100
+
+ supported_programs = list(
+ "Off" = new/datum/holodeck_program(/area/holodeck/holodorm/source_off),
+ "Basic Dorm" = new/datum/holodeck_program(/area/holodeck/holodorm/source_basic),
+ "Table Seating" = new/datum/holodeck_program(/area/holodeck/holodorm/source_seating),
+ "Beach Sim" = new/datum/holodeck_program(/area/holodeck/holodorm/source_beach),
+ "Desert Area" = new/datum/holodeck_program(/area/holodeck/holodorm/source_desert),
+ "Snow Field" = new/datum/holodeck_program(/area/holodeck/holodorm/source_snow),
+ "Flower Garden" = new/datum/holodeck_program(/area/holodeck/holodorm/source_garden),
+ "Space Sim" = new/datum/holodeck_program(/area/holodeck/holodorm/source_space),
+ "Boxing Ring" = new/datum/holodeck_program(/area/holodeck/holodorm/source_boxing)
+ )
+
+/obj/machinery/computer/HolodeckControl/holodorm/one
+ name = "dorm one holodeck control"
+ projection_area = /area/crew_quarters/sleep/Dorm_1/holo
+
+/obj/machinery/computer/HolodeckControl/holodorm/three
+ name = "dorm three holodeck control"
+ projection_area = /area/crew_quarters/sleep/Dorm_3/holo
+
+/obj/machinery/computer/HolodeckControl/holodorm/five
+ name = "dorm five holodeck control"
+ projection_area = /area/crew_quarters/sleep/Dorm_5/holo
+
+/obj/machinery/computer/HolodeckControl/holodorm/seven
+ name = "dorm seven holodeck control"
+ projection_area = /area/crew_quarters/sleep/Dorm_7/holo
+
+//"Red" Armory Door
+/obj/machinery/door/airlock/security/armory
+ name = "Red Armory"
+ //color = ""
+
+/obj/machinery/door/airlock/security/armory/allowed(mob/user)
+ if(get_security_level() in list("green","blue"))
+ return FALSE
+
+ return ..(user)
+
+//Tether-unique network cameras
+/obj/machinery/camera/network/tether
+ network = list(NETWORK_TETHER)
+
+/obj/machinery/camera/network/outside
+ network = list(NETWORK_OUTSIDE)
+
+/obj/tether_away_spawner/tether_outside
+ name = "Tether Outside Spawner"
+ prob_spawn = 75
+ prob_fall = 50
+ mobs_to_pick_from = list(
+ /mob/living/simple_mob/animal/passive/gaslamp = 300
+ )
+
+// Landmarks for wildlife events
+
+/obj/effect/landmark/wildlife/water
+ name = "aquatic wildlife"
+ wildlife_type = 1
+
+/obj/effect/landmark/wildlife/forest
+ name = "roaming wildlife"
+ wildlife_type = 2
+
+// SD Things
+
+/obj/machinery/camera/network/halls
+ network = list(NETWORK_HALLS)
+
+/obj/item/paper/sdshield
+ name = "ABOUT THE SHIELD GENERATOR"
+ info = "
ABOUT THE SHIELD GENERATOR
If you're up here you are more than likely worried about hitting rocks or some other such thing. It is good to worry about such things as that is an inevitability.
The Stellar Delight is a rather compact vessel, so a setting of 55 to the range will just barely cover her aft.
It is recommended that you turn off all of the different protection types except multi dimensional warp and whatever it is you're worried about running into. (probably meteors (hyperkinetic)).
With only those two and all the other default settings, the shield uses more than 6 MW to run, which is more than the ship can ordinarily produce. AS SUCH, it is also recommended that you reduce the input cap to whatever you find reasonable (being as it defaults to 1 MW, which is the entirety of the stock power supply) and activate and configure the shield BEFORE you need it.
The shield takes some time to expand its range to the desired specifications, and on top of that, under the default low power setting, takes around 40 seconds to spool up. Once it is active, the fully charged internal capacitors will last for a few minutes before depleting fully. You can increase the passive energy use to decrease the spool up time, but it also uses the stored energy much faster, so, that is not recommended except in dire emergencies.
So, this shield is not intended to be run indefinitely, unless you seriously beef up the ship's engine and power supply.
Fortunately, if you've got a good pilot, you shouldn't really need the shield generator except in rare cases and only for short distances. Still, it is a good idea to configure the shield to be ready before you need it.
Good luck out there - Budly Gregington"
+
+/obj/item/book/manual/sd_guide
+ name = "Stellar Delight User's Guide"
+ icon = 'icons/obj/library.dmi'
+ icon_state ="newscodex"
+ item_state = "newscodex"
+ author = "Central Command" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
+ title = "Stellar Delight User's Guide"
+
+/obj/item/book/manual/sd_guide/New()
+ ..()
+ dat = {"
+
+
+
+
+
+ Stellar Delight Operations
+
+ Welcome to the Stellar Delight! Before you get started there are a few things you ought to know.
+
+ The Stellar Delight is a Nanotrasen response vessel operating in the Virgo-Erigone system. It's primary duty is in answering calls for help, investigating anomalies in space around the system, and generally responding to requests from Central Command or whoever else needs the services the vessel can provide. It has fully functioning security, medical, and research facilities, as well as a host of civillian facilities, in addition to the standard things one might expect to find on such a ship. That is to say, the ship doesn't have a highly defined specialization, it is just as capable as a small space station might be.
+
+ Notably though, there are some research facilities that are not safe to carry around. There is a refurbished Aerostat that has been set up over Virgo 2 that posesses a number of different, more dangerous research facilities. The command staff of this vessel has access to its docking codes in their offices.
+
+ Mining and Exploration will probably also want to disembark to do their respective duties.
+
+ The ship is ordinarily protected from many space hazards by an array of point defense turrets, however, it should be noted that this defense network is not infallible. If the ship encounters a dangerous environment, occasionally hazardous material may slip past the network and damage the ship.
+
+ Before Moving the Ship
+
+ The ship requires power to fuel and run its engines and sensors. While there may be some charge in the ship at the start of the shift, it is HIGHLY RECOMMENDED that the engine be started before attempting to move the ship. If any of the components responsible for moving the ship lose power (including but not limited to the helm control console and the thrusters), then you will be incapable of adjusting the ship's speed or heading until the problem is resolved.
+
+ Additionally, the shield generator should be configured before the ship moves, as it takes time to calibrate before it can be activated. The shield should not be run indefinitely however, as it uses more power than the ship ordinarily generates. You can however activate it for a short time if you know that you need to proceed through a dangerous reigon of space. For more information, see the configuration guide sheet in the shield control room on deck 3, aft of the Command Office section.
+
+ Starting and Moving the Ship
+
+ The ship can of course move around on its own, but a few steps need to/should be taken before you can do so.
+
+ -FIRST. You should appoint a pilot. If there isn't a pilot, or the pilot isn't responding, you should fax for a pilot. If no pilots respond to the fax within a reasonable timeframe, then, if you are qualified to fly Nanotrasen spacecraft you may fly the ship. Appointing a pilot to the bridge however should always be done even if you know how to fly and have access to the helm control console. Refusing to attempt to appoint a pilot and just flying the ship yourself can be grounds for demotion to pilot.
+
+ -SECOND. In order for the ship to move one must start the engines. The ship's fuel pump in Atmospherics must be turned on and configured. Atmospheric technicians may elect to modify the fuel mix to help the ship go faster or make the fuel last longer. Either way, once the fuel pump is on, you may use the engine control console on the bridge to activate the engines.
+
+ Once these steps have been taken, the helm control console should respond to input commands from the pilot.
+
+ Disembarking
+
+ Being a response vessel, the Stellar Delight has 3 shuttles in total.
+
+ The mining and exploration shuttles are located in the aft of deck 1 between their respective departments. Both of these shuttles are short jump shuttles, meaning, they are not suitable for more than ferrying people back and forth between the ship and the present destination. They do have a small range that they can traverse in their bluespace hops, but they must be within one 'grid square' of a suitable landing site to jump. As such, it is recommended that you avoid flying away from wherever either of these shuttles are without establishing a flight plan with the away teams to indicate a time of returning. In cases where the mining team and the exploration team want to go to different places, it may be necessary to fly from one location to the other now and then to facilitate both operations. However, it is recommended that exploration and mining be encouraged to enter the same operations areas, as the mining team is poorly armed, and the exploration team is ideally equipped for offsite defense and support of ship personnel.
+
+ There is also the Starstuff, a long range capable shuttle which is ordinarily docked on the port landing pad of deck 3. This shuttle is meant for general crew transport, but does require a pilot to be flown.
+
+ In cases where the shuttles will be docking with another facility, such as the Science outpost on the Virgo 2 Aerostat, docking codes may be required in order to be accessed. Anywhere requiring such codes will need to have them entered into the given shuttle's short jump console. It is recommended that anyone operating such a shuttle take note of the Stellar Delight's docking codes, as they will need them to dock with the ship. Any Nanotrasen owned facility that requires them that your ship has authorization to access will have the codes stored in the Command Offices.
+
+ A final note on disembarking. While it may not necessarily be their job to do so, it is highly encouraged for the Command staff to attempt to involve volunteers in off ship operations as necessary. Just make sure to let let it be known what kind of operation is happening when you ask. This being a response ship, it is very good to get as much help to handle whatever the issue is as thoroughly as possible.
+
+ All that said, have a safe trip. - Central Command Officer Alyssa Trems
+
+ "}
+
+/obj/item/multitool/scioutpost
+ name = "science outpost linked multitool"
+ desc = "It has the data for the science outpost's quantum pad pre-loaded... assuming you didn't override it."
+
+/obj/item/multitool/scioutpost/Initialize()
+ . = ..()
+ for(var/obj/machinery/power/quantumpad/scioutpost/outpost in world)
+ connectable = outpost
+ if(connectable)
+ icon_state = "multitool_red"
+ return
+
+/obj/machinery/power/quantumpad/scioutpost
+
+//Special map objects
+/obj/effect/landmark/map_data/virgo3b
+ height = 5
+
+/obj/turbolift_map_holder/tether
+ name = "Tether Climber"
+ depth = 5
+ lift_size_x = 3
+ lift_size_y = 3
+ icon = 'icons/obj/turbolift_preview_3x3.dmi'
+ wall_type = null // Don't make walls
+
+ areas_to_use = list(
+ /area/turbolift/t_surface/level1,
+ /area/turbolift/t_surface/level2,
+ /area/turbolift/t_surface/level3,
+ /area/turbolift/tether/transit,
+ /area/turbolift/t_station/level1
+ )
+
+/obj/machinery/atmospherics/unary/vent_pump/positive
+ use_power = USE_POWER_IDLE
+ icon_state = "map_vent_out"
+ external_pressure_bound = ONE_ATMOSPHERE * 1.1
+
+/obj/machinery/computer/shuttle_control/aerostat_shuttle
+ name = "aerostat ferry control console"
+ shuttle_tag = "Aerostat Ferry"
+
+/obj/tether_away_spawner/aerostat_inside
+ name = "Aerostat Indoors Spawner"
+ faction = FACTION_AEROSTAT_INSIDE
+ atmos_comp = TRUE
+ prob_spawn = 100
+ prob_fall = 50
+ //guard = 20
+ mobs_to_pick_from = list(
+ /mob/living/simple_mob/mechanical/hivebot/ranged_damage/basic = 3,
+ /mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion = 1,
+ /mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser = 3,
+ /mob/living/simple_mob/vore/aggressive/corrupthound = 1
+ )
+
+/obj/tether_away_spawner/aerostat_surface
+ name = "Aerostat Surface Spawner"
+ faction = FACTION_AEROSTAT_SURFACE
+ atmos_comp = TRUE
+ prob_spawn = 100
+ prob_fall = 30
+ //guard = 20
+ mobs_to_pick_from = list(
+ /mob/living/simple_mob/vore/jelly = 6,
+ /mob/living/simple_mob/mechanical/viscerator = 6,
+ /mob/living/simple_mob/vore/aggressive/corrupthound = 3,
+ /mob/living/simple_mob/vore/oregrub = 2,
+ /mob/living/simple_mob/vore/oregrub/lava = 1
+ )
+
+/obj/structure/old_roboprinter
+ name = "old drone fabricator"
+ desc = "Built like a tank, still working after so many years."
+ icon = 'icons/obj/machines/drone_fab.dmi'
+ icon_state = "drone_fab_idle"
+ anchored = TRUE
+ density = TRUE
+
+/obj/structure/metal_edge
+ name = "metal underside"
+ desc = "A metal wall that extends downwards."
+ icon = 'icons/turf/cliff.dmi'
+ icon_state = "metal"
+ anchored = TRUE
+ density = FALSE
diff --git a/maps/common/common_turfs.dm b/maps/common/common_turfs.dm
new file mode 100644
index 0000000000..c0f6d607b0
--- /dev/null
+++ b/maps/common/common_turfs.dm
@@ -0,0 +1,199 @@
+//Unsimulated
+
+/turf/unsimulated/mineral/virgo3b
+ blocks_air = TRUE
+
+/turf/unsimulated/floor/steel
+ icon = 'icons/turf/flooring/tiles_vr.dmi'
+ icon_state = "steel"
+
+// Some turfs to make floors look better in centcom tram station.
+
+/turf/unsimulated/floor/techfloor_grid
+ name = "floor"
+ icon = 'icons/turf/flooring/techfloor.dmi'
+ icon_state = "techfloor_grid"
+
+/turf/unsimulated/floor/maglev
+ name = "maglev track"
+ desc = "Magnetic levitation tram tracks. Caution! Electrified!"
+ icon = 'icons/turf/flooring/maglevs.dmi'
+ icon_state = "maglevup"
+
+/turf/unsimulated/wall/transit
+ icon = 'icons/turf/transit_vr.dmi'
+
+/turf/unsimulated/floor/transit
+ icon = 'icons/turf/transit_vr.dmi'
+
+/obj/effect/floor_decal/transit/orange
+ icon = 'icons/turf/transit_vr.dmi'
+ icon_state = "transit_techfloororange_edges"
+
+/obj/effect/transit/light
+ icon = 'icons/turf/transit_128.dmi'
+ icon_state = "tube1-2"
+
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/dirt)
+/turf/simulated/floor/outdoors/dirt/virgo3b
+ icon = 'icons/turf/flooring/asteroid.dmi'
+ icon_state = "asteroid"
+
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/grass/sif)
+/turf/simulated/floor/outdoors/grass/sif
+ turf_layers = list(
+ /turf/simulated/floor/outdoors/rocks/virgo3b,
+ /turf/simulated/floor/outdoors/dirt/virgo3b
+ )
+
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/rocks)
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/tiled/steel_dirty)
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/water/indoors)
+VIRGO3B_TURF_CREATE(/turf/simulated/open)
+VIRGO3B_TURF_CREATE(/turf/simulated/floor)
+VIRGO3B_TURF_CREATE(/turf/simulated/mineral)
+VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/plating/external)
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/reinforced)
+
+// Bluespace jump turf!
+/turf/space/bluespace
+ name = "bluespace"
+ icon = 'icons/turf/space_vr.dmi'
+ icon_state = "bluespace"
+
+// Desert jump turf!
+/turf/space/sandyscroll
+ name = "sand transit"
+ icon = 'icons/turf/transit_vr.dmi'
+ icon_state = "desert_ns"
+
+//Sky stuff!
+// A simple turf to fake the appearance of flying.
+/turf/simulated/sky/virgo3b
+ color = "#FFBBBB"
+
+/turf/simulated/sky/virgo3b/Initialize()
+ SSplanets.addTurf(src)
+ set_light(2, 2, "#FFBBBB")
+
+/turf/simulated/sky/virgo3b/north
+ dir = NORTH
+/turf/simulated/sky/virgo3b/south
+ dir = SOUTH
+/turf/simulated/sky/virgo3b/east
+ dir = EAST
+/turf/simulated/sky/virgo3b/west
+ dir = WEST
+
+/turf/simulated/sky/virgo3b/moving
+ icon_state = "sky_fast"
+/turf/simulated/sky/virgo3b/moving/north
+ dir = NORTH
+/turf/simulated/sky/virgo3b/moving/south
+ dir = SOUTH
+/turf/simulated/sky/virgo3b/moving/east
+ dir = EAST
+/turf/simulated/sky/virgo3b/moving/west
+ dir = WEST
+
+/turf/simulated/floor/midpoint_glass
+ name = "glass floor"
+ desc = "Dont jump on it, or do, I'm not your mom."
+ icon = 'icons/turf/flooring/glass.dmi'
+ icon_state = "glass-0"
+ base_icon_state = "glass"
+
+/turf/simulated/floor/midpoint_glass/reinf
+ name = "reinforced glass floor"
+ desc = "Do jump on it, it can take it."
+ icon = 'icons/turf/flooring/reinf_glass.dmi'
+ icon_state = "reinf_glass-0"
+ base_icon_state = "reinf_glass"
+
+/turf/simulated/floor/midpoint_glass/Initialize()
+ . = ..()
+ return INITIALIZE_HINT_LATELOAD
+
+/turf/simulated/floor/midpoint_glass/LateInitialize()
+ do_icons()
+
+/turf/simulated/floor/midpoint_glass/proc/do_icons()
+ var/new_junction = NONE
+
+ for(var/direction in cardinal) //Cardinal case first.
+ var/turf/T = get_step(src, direction)
+ if(istype(T, type))
+ new_junction |= direction
+
+ if(!(new_junction & (NORTH|SOUTH)) || !(new_junction & (EAST|WEST)))
+ icon_state = "[base_icon_state]-[new_junction]"
+ return
+
+ if(new_junction & NORTH)
+ if(new_junction & WEST)
+ var/turf/T = get_step(src, NORTHWEST)
+ if(istype(T, type))
+ new_junction |= (1<<7)
+
+ if(new_junction & EAST)
+ var/turf/T = get_step(src, NORTHEAST)
+ if(istype(T, type))
+ new_junction |= (1<<4)
+
+ if(new_junction & SOUTH)
+ if(new_junction & WEST)
+ var/turf/T = get_step(src, SOUTHWEST)
+ if(istype(T, type))
+ new_junction |= (1<<6)
+
+ if(new_junction & EAST)
+ var/turf/T = get_step(src, SOUTHEAST)
+ if(istype(T, type))
+ new_junction |= (1<<5)
+
+ icon_state = "[base_icon_state]-[new_junction]"
+
+ add_vis_overlay('icons/effects/effects.dmi', "white", plane = SPACE_PLANE, add_vis_flags = VIS_INHERIT_ID|VIS_UNDERLAY)
+
+/turf/space/v3b_midpoint
+
+// Tram transit floor
+/turf/simulated/floor/tiled/techfloor/grid/transit
+ icon = 'icons/turf/transit_vr.dmi'
+ initial_flooring = null
+
+/turf/unsimulated/floor/sky/virgo2_sky
+ name = "virgo 2 atmosphere"
+ desc = "Be careful where you step!"
+ color = "#eacd7c"
+ VIRGO2_SET_ATMOS
+
+/turf/simulated/shuttle/wall/voidcraft/green/virgo2
+ VIRGO2_SET_ATMOS
+ color = "#eacd7c"
+
+/turf/simulated/shuttle/wall/voidcraft/green/virgo2/nocol
+ color = null
+
+VIRGO2_TURF_CREATE(/turf/unsimulated/wall/planetary)
+
+VIRGO2_TURF_CREATE(/turf/simulated/wall)
+VIRGO2_TURF_CREATE(/turf/simulated/floor/plating)
+VIRGO2_TURF_CREATE(/turf/simulated/floor/bluegrid)
+VIRGO2_TURF_CREATE(/turf/simulated/floor/tiled/techfloor)
+
+VIRGO2_TURF_CREATE(/turf/simulated/mineral)
+
+VIRGO2_TURF_CREATE(/turf/simulated/mineral/ignore_mapgen)
+VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor)
+VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor/ignore_mapgen)
+
+VIRGO2_TURF_CREATE(/turf/simulated/floor/hull)
+
+/turf/simulated/mineral/vacuum/gb_mine
+
+/turf/simulated/floor/virgo3b_indoors
+ VIRGO3B_SET_ATMOS
+/turf/simulated/floor/virgo3b_indoors/update_graphic(list/graphic_add = null, list/graphic_remove = null)
+ return 0
diff --git a/maps/expedition_vr/aerostat/_aerostat.dm b/maps/expedition_vr/aerostat/_aerostat.dm
index e89260a4bd..faef3b3ba5 100644
--- a/maps/expedition_vr/aerostat/_aerostat.dm
+++ b/maps/expedition_vr/aerostat/_aerostat.dm
@@ -1,23 +1,7 @@
#include "../../submaps/pois_vr/aerostat/virgo2.dm"
/obj/effect/overmap/visitable/sector/virgo2
- name = "Virgo 2"
- desc = "Includes the Remmi Aerostat and associated ground mining complexes."
- scanner_desc = @{"[i]Stellar Body[/i]: Virgo 2
-[i]Class[/i]: R-Class Planet
-[i]Habitability[/i]: Low (High Temperature, Toxic Atmosphere)
-[b]Notice[/b]: Planetary environment not suitable for life. Landing may be hazardous."}
- icon_state = "globe"
- in_space = 0
initial_generic_waypoints = list("aerostat_west","aerostat_east","aerostat_south","aerostat_northwest","aerostat_northeast")
- extra_z_levels = list(Z_LEVEL_AEROSTAT_SURFACE)
- known = TRUE
- icon_state = "chlorine"
-
- skybox_icon = 'icons/skybox/virgo2.dmi'
- skybox_icon_state = "v2"
- skybox_pixel_x = 0
- skybox_pixel_y = 0
// -- Datums -- //
@@ -28,11 +12,6 @@
landmark_station = "aerostat_east"
landmark_offsite = "aerostat_surface"
-/datum/random_map/noise/ore/virgo2
- descriptor = "virgo 2 ore distribution map"
- deep_val = 0.2
- rare_val = 0.1
-
/datum/random_map/noise/ore/virgo2/check_map_sanity()
return 1 //Totally random, but probably beneficial.
@@ -111,106 +90,12 @@
//T.resources[ORE_PAINITE] = 0
return
-// -- Objs -- //
-
-/obj/machinery/computer/shuttle_control/aerostat_shuttle
- name = "aerostat ferry control console"
- shuttle_tag = "Aerostat Ferry"
-
-/obj/tether_away_spawner/aerostat_inside
- name = "Aerostat Indoors Spawner"
- faction = FACTION_AEROSTAT_INSIDE
- atmos_comp = TRUE
- prob_spawn = 100
- prob_fall = 50
- //guard = 20
- mobs_to_pick_from = list(
- /mob/living/simple_mob/mechanical/hivebot/ranged_damage/basic = 3,
- /mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion = 1,
- /mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser = 3,
- /mob/living/simple_mob/vore/aggressive/corrupthound = 1
- )
-
-/obj/tether_away_spawner/aerostat_surface
- name = "Aerostat Surface Spawner"
- faction = FACTION_AEROSTAT_SURFACE
- atmos_comp = TRUE
- prob_spawn = 100
- prob_fall = 30
- //guard = 20
- mobs_to_pick_from = list(
- /mob/living/simple_mob/vore/jelly = 6,
- /mob/living/simple_mob/mechanical/viscerator = 6,
- /mob/living/simple_mob/vore/aggressive/corrupthound = 3,
- /mob/living/simple_mob/vore/oregrub = 2,
- /mob/living/simple_mob/vore/oregrub/lava = 1
- )
-
-/obj/structure/old_roboprinter
- name = "old drone fabricator"
- desc = "Built like a tank, still working after so many years."
- icon = 'icons/obj/machines/drone_fab.dmi'
- icon_state = "drone_fab_idle"
- anchored = TRUE
- density = TRUE
-
-/obj/structure/metal_edge
- name = "metal underside"
- desc = "A metal wall that extends downwards."
- icon = 'icons/turf/cliff.dmi'
- icon_state = "metal"
- anchored = TRUE
- density = FALSE
-
// -- Turfs -- //
-//Atmosphere properties
-#define VIRGO2_ONE_ATMOSPHERE 312.1 //kPa
-#define VIRGO2_AVG_TEMP 612 //kelvin
-
-#define VIRGO2_PER_N2 0.10 //percent
-#define VIRGO2_PER_O2 0.03
-#define VIRGO2_PER_N2O 0.00 //Currently no capacity to 'start' a turf with this. See turf.dm
-#define VIRGO2_PER_CO2 0.87
-#define VIRGO2_PER_PHORON 0.00
-
-//Math only beyond this point
-#define VIRGO2_MOL_PER_TURF (VIRGO2_ONE_ATMOSPHERE*CELL_VOLUME/(VIRGO2_AVG_TEMP*R_IDEAL_GAS_EQUATION))
-#define VIRGO2_MOL_N2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_N2)
-#define VIRGO2_MOL_O2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_O2)
-#define VIRGO2_MOL_N2O (VIRGO2_MOL_PER_TURF * VIRGO2_PER_N2O)
-#define VIRGO2_MOL_CO2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_CO2)
-#define VIRGO2_MOL_PHORON (VIRGO2_MOL_PER_TURF * VIRGO2_PER_PHORON)
-
-//Turfmakers
-#define VIRGO2_SET_ATMOS nitrogen=VIRGO2_MOL_N2;oxygen=VIRGO2_MOL_O2;carbon_dioxide=VIRGO2_MOL_CO2;phoron=VIRGO2_MOL_PHORON;temperature=VIRGO2_AVG_TEMP
-#define VIRGO2_TURF_CREATE(x) x/virgo2/nitrogen=VIRGO2_MOL_N2;x/virgo2/oxygen=VIRGO2_MOL_O2;x/virgo2/carbon_dioxide=VIRGO2_MOL_CO2;x/virgo2/phoron=VIRGO2_MOL_PHORON;x/virgo2/temperature=VIRGO2_AVG_TEMP;x/virgo2/color="#eacd7c"
-
-/turf/unsimulated/floor/sky/virgo2_sky
- name = "virgo 2 atmosphere"
- desc = "Be careful where you step!"
- color = "#eacd7c"
- VIRGO2_SET_ATMOS
-
/turf/unsimulated/floor/sky/virgo2_sky/Initialize()
skyfall_levels = list(z+1)
. = ..()
-/turf/simulated/shuttle/wall/voidcraft/green/virgo2
- VIRGO2_SET_ATMOS
- color = "#eacd7c"
-
-/turf/simulated/shuttle/wall/voidcraft/green/virgo2/nocol
- color = null
-
-VIRGO2_TURF_CREATE(/turf/unsimulated/wall/planetary)
-
-VIRGO2_TURF_CREATE(/turf/simulated/wall)
-VIRGO2_TURF_CREATE(/turf/simulated/floor/plating)
-VIRGO2_TURF_CREATE(/turf/simulated/floor/bluegrid)
-VIRGO2_TURF_CREATE(/turf/simulated/floor/tiled/techfloor)
-
-VIRGO2_TURF_CREATE(/turf/simulated/mineral)
/turf/simulated/mineral/virgo2/make_ore()
if(mineral)
return
@@ -222,82 +107,14 @@ VIRGO2_TURF_CREATE(/turf/simulated/mineral)
UpdateMineral()
update_icon()
-VIRGO2_TURF_CREATE(/turf/simulated/mineral/ignore_mapgen)
-VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor)
-VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor/ignore_mapgen)
-
// -- Areas -- //
-// The aerostat shuttle
-/area/shuttle/aerostat
- name = "\improper Aerostat Shuttle"
-
-//The aerostat itself
-/area/tether_away/aerostat
- name = "\improper Away Mission - Aerostat Outside"
- icon_state = "away"
- base_turf = /turf/unsimulated/floor/sky/virgo2_sky
- requires_power = FALSE
- dynamic_lighting = FALSE
-
-/area/tether_away/aerostat/inside
- name = "\improper Away Mission - Aerostat Inside"
- icon_state = "crew_quarters"
- base_turf = /turf/simulated/floor/plating/virgo2
- requires_power = TRUE
- dynamic_lighting = TRUE
- forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/argitoth.ogg', 'sound/ambience/tension/burning_terror.ogg')
-
-/area/tether_away/aerostat/solars
- name = "\improper Away Mission - Aerostat Solars"
- icon_state = "crew_quarters"
- base_turf = /turf/simulated/floor/plating/virgo2
- dynamic_lighting = TRUE
-
-/area/offmap/aerostat/surface
- flags = RAD_SHIELDED
- ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
- base_turf = /turf/simulated/mineral/floor/ignore_mapgen/virgo2
-
/area/offmap/aerostat/surface/explored
name = "Away Mission - Aerostat Surface (E)"
icon_state = "explored"
- dynamic_lighting = FALSE
-
-/area/offmap/aerostat/surface/shuttleconsole
- name = "Away Mission - Aerostat Surface Console"
- icon_state = "explored"
- dynamic_lighting = FALSE
- requires_power = FALSE
+ dynamic_lighting = FALSE // Override
/area/offmap/aerostat/surface/unexplored
name = "Away Mission - Aerostat Surface (UE)"
icon_state = "unexplored"
- dynamic_lighting = FALSE
-
-VIRGO2_TURF_CREATE(/turf/simulated/floor/hull)
-/area/offmap/aerostat/surface/outpost
- requires_power = TRUE
- dynamic_lighting = TRUE
- ambience = null
-
-/area/offmap/aerostat/surface/outpost/backroom
- name = "V2 Outpost - Research Area"
-/area/offmap/aerostat/surface/outpost/hallway
- name = "V2 Outpost - Hallway"
-/area/offmap/aerostat/surface/outpost/cafe
- name = "V2 Outpost - Cafe"
-/area/offmap/aerostat/surface/outpost/park
- name = "V2 Outpost - Park"
-/area/offmap/aerostat/surface/outpost/officerone
- name = "V2 Outpost - Officer's Quarters 1"
-/area/offmap/aerostat/surface/outpost/officertwo
- name = "V2 Outpost - Officer's Quarters 2"
-/area/offmap/aerostat/surface/outpost/barracks
- name = "V2 Outpost - Barracks"
-/area/offmap/aerostat/surface/outpost/airlock
- name = "V2 Outpost - Airlock"
-/area/offmap/aerostat/surface/outpost/powerroom
- name = "V2 Outpost - Power Room"
-/area/offmap/aerostat/surface/outpost/guardpost
- name = "V2 Outpost - Guard Post"
+ dynamic_lighting = FALSE // Override
diff --git a/maps/expedition_vr/aerostat/_aerostat_science_outpost.dm b/maps/expedition_vr/aerostat/_aerostat_science_outpost.dm
index 37805dfa7f..e62582f759 100644
--- a/maps/expedition_vr/aerostat/_aerostat_science_outpost.dm
+++ b/maps/expedition_vr/aerostat/_aerostat_science_outpost.dm
@@ -2,23 +2,7 @@
/obj/effect/overmap/visitable/sector/virgo2
- name = "Virgo 2"
- desc = "Includes the Remmi Aerostat and associated ground mining complexes."
- scanner_desc = @{"[i]Stellar Body[/i]: Virgo 2
-[i]Class[/i]: R-Class Planet
-[i]Habitability[/i]: Low (High Temperature, Toxic Atmosphere)
-[b]Notice[/b]: Planetary environment not suitable for life. Landing may be hazardous."}
- icon_state = "globe"
- in_space = 0
initial_generic_waypoints = list("aerostat_n_w", "aerostat_n_n","aerostat_n_e","aerostat_s_w","aerostat_s_s","aerostat_s_e","aerostat_west","aerostat_east")
- extra_z_levels = list(Z_LEVEL_AEROSTAT_SURFACE)
- known = TRUE
- icon_state = "chlorine"
-
- skybox_icon = 'icons/skybox/virgo2.dmi'
- skybox_icon_state = "v2"
- skybox_pixel_x = 0
- skybox_pixel_y = 0
/obj/effect/overmap/visitable/sector/virgo2/Initialize()
for(var/obj/effect/overmap/visitable/ship/stellar_delight/sd in world)
@@ -35,11 +19,6 @@
landmark_station = "aerostat_east"
landmark_offsite = "aerostat_surface"
-/datum/random_map/noise/ore/virgo2
- descriptor = "virgo 2 ore distribution map"
- deep_val = 0.2
- rare_val = 0.1
-
/datum/random_map/noise/ore/virgo2/check_map_sanity()
return 1 //Totally random, but probably beneficial.
@@ -50,43 +29,6 @@
shuttle_tag = "Aerostat Ferry"
ai_control = TRUE
-/obj/tether_away_spawner/aerostat_inside
- name = "Aerostat Indoors Spawner"
- faction = FACTION_AEROSTAT_INSIDE
- atmos_comp = TRUE
- prob_spawn = 100
- prob_fall = 50
- //guard = 20
- mobs_to_pick_from = list(
- /mob/living/simple_mob/mechanical/hivebot/ranged_damage/basic = 3,
- /mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion = 1,
- /mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser = 3,
- /mob/living/simple_mob/vore/aggressive/corrupthound = 1
- )
-
-/obj/tether_away_spawner/aerostat_surface
- name = "Aerostat Surface Spawner"
- faction = FACTION_AEROSTAT_SURFACE
- atmos_comp = TRUE
- prob_spawn = 100
- prob_fall = 50
- //guard = 20
- mobs_to_pick_from = list(
- /mob/living/simple_mob/vore/jelly = 6,
- /mob/living/simple_mob/mechanical/viscerator = 6,
- /mob/living/simple_mob/vore/aggressive/corrupthound = 3,
- /mob/living/simple_mob/vore/oregrub = 2,
- /mob/living/simple_mob/vore/oregrub/lava = 1
- )
-
-/obj/structure/old_roboprinter
- name = "old drone fabricator"
- desc = "Built like a tank, still working after so many years."
- icon = 'icons/obj/machines/drone_fab.dmi'
- icon_state = "drone_fab_idle"
- anchored = TRUE
- density = TRUE
-
/obj/structure/metal_edge
name = "metal underside"
desc = "A metal wall that extends downwards."
@@ -97,53 +39,10 @@
// -- Turfs -- //
-//Atmosphere properties
-#define VIRGO2_ONE_ATMOSPHERE 312.1 //kPa
-#define VIRGO2_AVG_TEMP 612 //kelvin
-
-#define VIRGO2_PER_N2 0.10 //percent
-#define VIRGO2_PER_O2 0.03
-#define VIRGO2_PER_N2O 0.00 //Currently no capacity to 'start' a turf with this. See turf.dm
-#define VIRGO2_PER_CO2 0.87
-#define VIRGO2_PER_PHORON 0.00
-
-//Math only beyond this point
-#define VIRGO2_MOL_PER_TURF (VIRGO2_ONE_ATMOSPHERE*CELL_VOLUME/(VIRGO2_AVG_TEMP*R_IDEAL_GAS_EQUATION))
-#define VIRGO2_MOL_N2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_N2)
-#define VIRGO2_MOL_O2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_O2)
-#define VIRGO2_MOL_N2O (VIRGO2_MOL_PER_TURF * VIRGO2_PER_N2O)
-#define VIRGO2_MOL_CO2 (VIRGO2_MOL_PER_TURF * VIRGO2_PER_CO2)
-#define VIRGO2_MOL_PHORON (VIRGO2_MOL_PER_TURF * VIRGO2_PER_PHORON)
-
-//Turfmakers
-#define VIRGO2_SET_ATMOS nitrogen=VIRGO2_MOL_N2;oxygen=VIRGO2_MOL_O2;carbon_dioxide=VIRGO2_MOL_CO2;phoron=VIRGO2_MOL_PHORON;temperature=VIRGO2_AVG_TEMP
-#define VIRGO2_TURF_CREATE(x) x/virgo2/nitrogen=VIRGO2_MOL_N2;x/virgo2/oxygen=VIRGO2_MOL_O2;x/virgo2/carbon_dioxide=VIRGO2_MOL_CO2;x/virgo2/phoron=VIRGO2_MOL_PHORON;x/virgo2/temperature=VIRGO2_AVG_TEMP;x/virgo2/color="#eacd7c"
-
-/turf/unsimulated/floor/sky/virgo2_sky
- name = "virgo 2 atmosphere"
- desc = "Be careful where you step!"
- color = "#eacd7c"
- VIRGO2_SET_ATMOS
-
/turf/unsimulated/floor/sky/virgo2_sky/Initialize()
skyfall_levels = list(z+1)
. = ..()
-/turf/simulated/shuttle/wall/voidcraft/green/virgo2
- VIRGO2_SET_ATMOS
- color = "#eacd7c"
-
-/turf/simulated/shuttle/wall/voidcraft/green/virgo2/nocol
- color = null
-
-VIRGO2_TURF_CREATE(/turf/unsimulated/wall/planetary)
-
-VIRGO2_TURF_CREATE(/turf/simulated/wall)
-VIRGO2_TURF_CREATE(/turf/simulated/floor/plating)
-VIRGO2_TURF_CREATE(/turf/simulated/floor/bluegrid)
-VIRGO2_TURF_CREATE(/turf/simulated/floor/tiled/techfloor)
-
-VIRGO2_TURF_CREATE(/turf/simulated/mineral)
/////Copied from Virgo3b's ore generation, since there was concern about not being able to get the ore they need on V2
/turf/simulated/mineral/virgo2/make_ore(var/rare_ore)
if(mineral)
@@ -179,16 +78,8 @@ VIRGO2_TURF_CREATE(/turf/simulated/mineral)
UpdateMineral()
update_icon()
-VIRGO2_TURF_CREATE(/turf/simulated/mineral/ignore_mapgen)
-VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor)
-VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor/ignore_mapgen)
-
// -- Areas -- //
-// The aerostat shuttle
-/area/shuttle/aerostat
- name = "\improper Aerostat Shuttle"
-
//The aerostat itself
/area/offmap/aerostat
name = "\improper Away Mission - Aerostat Outside"
@@ -196,170 +87,3 @@ VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor/ignore_mapgen)
base_turf = /turf/unsimulated/floor/sky/virgo2_sky
requires_power = FALSE
dynamic_lighting = FALSE
-
-/area/offmap/aerostat/inside
- name = "\improper Away Mission - Aerostat Inside"
- icon_state = "crew_quarters"
- base_turf = /turf/simulated/floor/plating/virgo2
- requires_power = TRUE
- dynamic_lighting = TRUE
-// forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/argitoth.ogg', 'sound/ambience/tension/burning_terror.ogg')
-
-/area/offmap/aerostat/solars
- name = "\improper Away Mission - Aerostat Solars"
- icon_state = "crew_quarters"
- base_turf = /turf/simulated/floor/plating/virgo2
- dynamic_lighting = FALSE
-
-/area/offmap/aerostat/surface
- flags = RAD_SHIELDED
- ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
- base_turf = /turf/simulated/mineral/floor/ignore_mapgen/virgo2
-
-/area/offmap/aerostat/surface/explored
- name = "Away Mission - Aerostat Surface (E)"
- icon_state = "explored"
-
-/area/offmap/aerostat/surface/unexplored
- name = "Away Mission - Aerostat Surface (UE)"
- icon_state = "unexplored"
-
-VIRGO2_TURF_CREATE(/turf/simulated/floor/hull)
-/area/offmap/aerostat/surface/outpost
- requires_power = TRUE
- dynamic_lighting = TRUE
- ambience = list()
-
-/area/offmap/aerostat/surface/outpost/backroom
- name = "V2 Outpost - Research Area"
-/area/offmap/aerostat/surface/outpost/hallway
- name = "V2 Outpost - Hallway"
-/area/offmap/aerostat/surface/outpost/cafe
- name = "V2 Outpost - Cafe"
-/area/offmap/aerostat/surface/outpost/park
- name = "V2 Outpost - Park"
-/area/offmap/aerostat/surface/outpost/officerone
- name = "V2 Outpost - Officer's Quarters 1"
-/area/offmap/aerostat/surface/outpost/officertwo
- name = "V2 Outpost - Officer's Quarters 2"
-/area/offmap/aerostat/surface/outpost/barracks
- name = "V2 Outpost - Barracks"
-/area/offmap/aerostat/surface/outpost/airlock
- name = "V2 Outpost - Airlock"
-/area/offmap/aerostat/surface/outpost/powerroom
- name = "V2 Outpost - Power Room"
-/area/offmap/aerostat/surface/outpost/guardpost
- name = "V2 Outpost - Guard Post"
-
-/area/offmap/aerostat/inside
- icon = 'icons/turf/areas_vr.dmi'
- icon_state = "blublasqu"
-
-/area/offmap/aerostat/inside/toxins
- name = "Toxins Lab"
- icon_state = "purwhisqu"
-
-/area/offmap/aerostat/inside/xenoarch
- name = "Xenoarchaeolegy Lab"
- icon_state = "yelwhisqu"
-/area/offmap/aerostat/inside/xenoarch/chamber
- name = "Xenoarchaeolegy Vent Chamber"
-
-/area/offmap/aerostat/inside/genetics
- name = "Genetics Lab"
- icon_state = "grewhisqu"
-
-/area/offmap/aerostat/inside/telesci
- name = "Telescience Lab"
- icon_state = "bluwhisqu"
-
-/area/offmap/aerostat/inside/atmos
- name = "Atmospherics"
- icon_state = "orawhisqu"
-
-/area/offmap/aerostat/inside/firingrange
- name = "Firing Range"
- icon_state = "orawhisqu"
-
-/area/offmap/aerostat/inside/miscstorage
- name = "Miscellaneous Storage"
- icon_state = "orawhisqu"
-
-/area/offmap/aerostat/inside/virology
- name = "Virology Lab"
- icon_state = "yelwhicir"
-
-/area/offmap/aerostat/inside/south
- name = "Miscellaneous Labs A"
- icon_state = "blublasqu"
-
-/area/offmap/aerostat/inside/south/b
- name = "Miscellaneous Labs B"
- icon_state = "blublasqu"
-
-
-/area/offmap/aerostat/inside/powercontrol
- name = "Power Control"
- icon_state = "orawhicir"
-
-/area/offmap/aerostat/inside/westhall
- name = "West Hall"
- icon_state = "orablacir"
-/area/offmap/aerostat/inside/easthall
- name = "East Hall"
- icon_state = "orablacir"
-
-/area/offmap/aerostat/inside/northchamb
- name = "North Chamber"
- icon_state = "orablacir"
-/area/offmap/aerostat/inside/southchamb
- name = "South Chamber"
- icon_state = "orablacir"
-
-/area/offmap/aerostat/inside/drillstorage
- name = "Drill Storage"
- icon_state = "orablacir"
-
-/area/offmap/aerostat/inside/zorrenoffice
- name = "Zorren Reception"
- icon_state = "orablacir"
-
-/area/offmap/aerostat/inside/lobby
- name = "Lobby"
- icon_state = "orablacir"
-/area/offmap/aerostat/inside/xenobiolab
- name = "Xenobiology Lab"
- icon_state = "orablacir"
-
-/area/offmap/aerostat/inside/airlock
- name = "Airlock"
- icon_state = "redwhicir"
-/area/offmap/aerostat/inside/airlock/north
- name = "North Airlock"
-/area/offmap/aerostat/inside/airlock/east
- name = "East Airlock"
-/area/offmap/aerostat/inside/airlock/west
- name = "West Airlock"
-/area/offmap/aerostat/inside/airlock/south
- name = "South Airlock"
-
-/area/offmap/aerostat/inside/arm/ne
- name = "North-East Solar Arm"
-/area/offmap/aerostat/inside/arm/nw
- name = "North-West Solar Arm"
-/area/offmap/aerostat/inside/arm/se
- name = "South-East Solar Arm"
-/area/offmap/aerostat/inside/arm/sw
- name = "South-West Solar Arm"
-
-/area/offmap/aerostat/glassgetsitsownarea
- name = "Aerostat Glass"
- icon_state = "crew_quarters"
- base_turf = /turf/unsimulated/floor/sky/virgo2_sky
- dynamic_lighting = FALSE
-
-/area/offmap/aerostat/surface/shuttleconsole
- name = "Away Mission - Aerostat Surface Console"
- icon_state = "explored"
- dynamic_lighting = FALSE
- requires_power = FALSE
diff --git a/maps/groundbase/groundbase.dm b/maps/groundbase/groundbase.dm
index 58f01c51d3..c2556269f3 100644
--- a/maps/groundbase/groundbase.dm
+++ b/maps/groundbase/groundbase.dm
@@ -1,15 +1,11 @@
#if !defined(USING_MAP_DATUM)
- #include "groundbase_areas.dm"
#include "groundbase_defines.dm"
#include "groundbase_shuttles.dm"
#include "groundbase_telecomms.dm"
#include "groundbase_things.dm"
- #include "..\tether\tether_jobs.dm"
#include "groundbase_events.dm"
- #include "groundbase_poi_stuff.dm"
- #include "groundbase_wilds.dm"
- #include "..\offmap_vr\common_offmaps.dm"
+ #include "groundbase_poi_maps.dm"
#include "..\~map_system\maps_vr.dm"
#ifndef AWAY_MISSION_TEST //Don't include these for just testing away missions
diff --git a/maps/groundbase/groundbase_areas.dm b/maps/groundbase/groundbase_areas.dm
index a32e5727c1..208df42bc3 100644
--- a/maps/groundbase/groundbase_areas.dm
+++ b/maps/groundbase/groundbase_areas.dm
@@ -574,3 +574,13 @@
excluded |= /area/groundbase/level3/sw/open
excluded |= /area/groundbase/level3/escapepad
..()
+
+/area/gb_mine/
+ ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
+ base_turf = /turf/simulated/mineral/floor
+/area/gb_mine/unexplored
+ name = "Virgo 3c Underground"
+ icon_state = "unexplored"
+/area/gb_mine/explored
+ name = "Virgo 3c Underground"
+ icon_state = "explored"
diff --git a/maps/groundbase/groundbase_defines.dm b/maps/groundbase/groundbase_defines.dm
index f449a7c039..6c4e7ef26f 100644
--- a/maps/groundbase/groundbase_defines.dm
+++ b/maps/groundbase/groundbase_defines.dm
@@ -1,28 +1,3 @@
-//Normal map defs
-#define Z_LEVEL_GB_BOTTOM 1
-#define Z_LEVEL_GB_MIDDLE 2
-#define Z_LEVEL_GB_TOP 3
-#define Z_LEVEL_GB_WILD_N 4
-#define Z_LEVEL_GB_WILD_S 5
-#define Z_LEVEL_GB_WILD_E 6
-#define Z_LEVEL_GB_WILD_W 7
-#define Z_LEVEL_CENTCOM 8
-#define Z_LEVEL_MISC 9
-#define Z_LEVEL_MINING 10
-#define Z_LEVEL_BEACH 11
-#define Z_LEVEL_BEACH_CAVE 12
-#define Z_LEVEL_AEROSTAT 13
-#define Z_LEVEL_AEROSTAT_SURFACE 14
-#define Z_LEVEL_DEBRISFIELD 15
-#define Z_LEVEL_FUELDEPOT 16
-#define Z_LEVEL_OFFMAP1 17
-#define Z_LEVEL_GATEWAY 18
-#define Z_LEVEL_OM_ADVENTURE 19
-#define Z_LEVEL_REDGATE 20
-
-//Camera networks
-#define NETWORK_HALLS "Halls"
-
/datum/map/groundbase/New()
..()
var/choice = pickweight(list(
@@ -297,16 +272,7 @@
Z_LEVEL_BEACH
)
-/obj/effect/landmark/map_data/groundbase
- height = 3
-
/obj/effect/overmap/visitable/sector/virgo3b
- name = "Virgo 3B"
- desc = "Full of phoron, and home to the NSB Adephagia."
- scanner_desc = @{"[i]Registration[/i]: NSB Adephagia
-[i]Class[/i]: Installation
-[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
-[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
known = TRUE
in_space = TRUE
@@ -323,34 +289,7 @@
extra_z_levels = list()
-/obj/effect/overmap/visitable/sector/virgo3c
- name = "Virgo 3C"
- desc = "A small, volcanically active moon."
- scanner_desc = @{"[i]Registration[/i]: NSB Rascal's Pass
-[i]Class[/i]: Installation
-[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
-[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
- known = TRUE
- in_space = TRUE
- icon = 'icons/obj/overmap.dmi'
- icon_state = "lush"
-
- skybox_icon = null
- skybox_icon_state = null
- skybox_pixel_x = 0
- skybox_pixel_y = 0
-
- initial_generic_waypoints = list("groundbase", "gb_excursion_pad","omship_axolotl")
- initial_restricted_waypoints = list()
-
- extra_z_levels = list(
- Z_LEVEL_MINING,
- Z_LEVEL_GB_WILD_N,
- Z_LEVEL_GB_WILD_S,
- Z_LEVEL_GB_WILD_E,
- Z_LEVEL_GB_WILD_W
- )
// For making the 6-in-1 holomap, we calculate some offsets
#define SHIP_MAP_SIZE 140 // Width and height of compiled in tether z levels.
diff --git a/maps/groundbase/groundbase_mining.dm b/maps/groundbase/groundbase_mining.dm
index e396abdd75..e78f0ad07c 100644
--- a/maps/groundbase/groundbase_mining.dm
+++ b/maps/groundbase/groundbase_mining.dm
@@ -39,13 +39,3 @@
/datum/random_map/noise/ore/mining/check_map_sanity()
return 1 //Totally random, but probably beneficial.
-
-/area/gb_mine/
- ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
- base_turf = /turf/simulated/mineral/floor
-/area/gb_mine/unexplored
- name = "Virgo 3c Underground"
- icon_state = "unexplored"
-/area/gb_mine/explored
- name = "Virgo 3c Underground"
- icon_state = "explored"
diff --git a/maps/groundbase/groundbase_poi_maps.dm b/maps/groundbase/groundbase_poi_maps.dm
new file mode 100644
index 0000000000..2ed223ad3d
--- /dev/null
+++ b/maps/groundbase/groundbase_poi_maps.dm
@@ -0,0 +1,188 @@
+#ifdef MAP_TEST
+#include "pois/outdoors1.dmm"
+#include "pois/outdoors2.dmm"
+#include "pois/outdoors3.dmm"
+#include "pois/outdoors4.dmm"
+#include "pois/outdoors5.dmm"
+#include "pois/outdoors6.dmm"
+#include "pois/outdoors7.dmm"
+#include "pois/outdoors8.dmm"
+#include "pois/outdoors9.dmm"
+#include "pois/outdoors10.dmm"
+#include "pois/outdoors11.dmm"
+#include "pois/outdoors12.dmm"
+#include "pois/outdoors13.dmm"
+#include "pois/outdoors14.dmm"
+#include "pois/outdoors16.dmm"
+
+#include "pois/cave1.dmm"
+#include "pois/cave2.dmm"
+#include "pois/cave3.dmm"
+#include "pois/cave4.dmm"
+#include "pois/cave5.dmm"
+#include "pois/cave6.dmm"
+#include "pois/cave7.dmm"
+#include "pois/cave8.dmm"
+#include "pois/cave9.dmm"
+#include "pois/cave10.dmm"
+#include "pois/cave11.dmm"
+#include "pois/cave12.dmm"
+#include "pois/cave13.dmm"
+#include "pois/cave14.dmm"
+#include "pois/cave15.dmm"
+#include "pois/cave16.dmm"
+#include "pois/cave17.dmm"
+#include "pois/cave18.dmm"
+#include "pois/cave19.dmm"
+#include "pois/cave20.dmm"
+#include "pois/cave21.dmm"
+#include "pois/cave22.dmm"
+#include "pois/cave23.dmm"
+#include "pois/cave24.dmm"
+#include "pois/cave25.dmm"
+#include "pois/cave26.dmm"
+#include "pois/cave27.dmm"
+#include "pois/cave28.dmm"
+#include "pois/cave29.dmm"
+#include "pois/cave30.dmm"
+#include "pois/cave31.dmm"
+#include "pois/cave32.dmm"
+#include "pois/cave33.dmm"
+#include "pois/cave34.dmm"
+#include "pois/cave35.dmm"
+#include "pois/cave36.dmm"
+#include "pois/cave37.dmm"
+#include "pois/cave38.dmm"
+#include "pois/cave39.dmm"
+#include "pois/cave40.dmm"
+#include "pois/cave41.dmm"
+#include "pois/cave42.dmm"
+#include "pois/cave43.dmm"
+#include "pois/cave44.dmm"
+#include "pois/cave45.dmm"
+#include "pois/cave46.dmm"
+#include "pois/cave47.dmm"
+#include "pois/cave48.dmm"
+#include "pois/cave49.dmm"
+#include "pois/cave50.dmm"
+#include "pois/cave51.dmm"
+#include "pois/cave52.dmm"
+#include "pois/cave53.dmm"
+#include "pois/cave54.dmm"
+
+#include "pois/cave1b.dmm"
+#include "pois/cave2b.dmm"
+#include "pois/cave3b.dmm"
+#include "pois/cave4b.dmm"
+#include "pois/cave5b.dmm"
+#include "pois/cave6b.dmm"
+#include "pois/cave7b.dmm"
+#include "pois/cave8b.dmm"
+#include "pois/cave9b.dmm"
+#include "pois/cave10b.dmm"
+#include "pois/cave11b.dmm"
+#include "pois/cave12b.dmm"
+#include "pois/cave13b.dmm"
+#include "pois/cave14b.dmm"
+#include "pois/cave15b.dmm"
+#include "pois/cave16b.dmm"
+#include "pois/cave17b.dmm"
+#include "pois/cave18b.dmm"
+#include "pois/cave19b.dmm"
+#include "pois/cave20b.dmm"
+#include "pois/cave21b.dmm"
+#include "pois/cave22b.dmm"
+#include "pois/cave23b.dmm"
+#include "pois/cave24b.dmm"
+#include "pois/cave25b.dmm"
+#include "pois/cave26b.dmm"
+#include "pois/cave27b.dmm"
+#include "pois/cave28b.dmm"
+#include "pois/cave29b.dmm"
+#include "pois/cave30b.dmm"
+#include "pois/cave31b.dmm"
+#include "pois/cave32b.dmm"
+#include "pois/cave33b.dmm"
+#include "pois/cave34b.dmm"
+#include "pois/cave35b.dmm"
+#include "pois/cave36b.dmm"
+#include "pois/cave37b.dmm"
+#include "pois/cave38b.dmm"
+#include "pois/cave39b.dmm"
+#include "pois/cave40b.dmm"
+#include "pois/cave41b.dmm"
+#include "pois/cave42b.dmm"
+#include "pois/cave43b.dmm"
+#include "pois/cave44b.dmm"
+#include "pois/cave45b.dmm"
+#include "pois/cave46b.dmm"
+#include "pois/cave47b.dmm"
+#include "pois/cave48b.dmm"
+#include "pois/cave49b.dmm"
+
+#include "pois/cave1c.dmm"
+#include "pois/cave2c.dmm"
+#include "pois/cave3c.dmm"
+#include "pois/cave4c.dmm"
+#include "pois/cave5c.dmm"
+#include "pois/cave6c.dmm"
+#include "pois/cave7c.dmm"
+#include "pois/cave8c.dmm"
+#include "pois/cave9c.dmm"
+#include "pois/cave10c.dmm"
+#include "pois/cave11c.dmm"
+#include "pois/cave12c.dmm"
+#include "pois/cave13c.dmm"
+#include "pois/cave14c.dmm"
+#include "pois/cave15c.dmm"
+#include "pois/cave16c.dmm"
+#include "pois/cave17c.dmm"
+#include "pois/cave18c.dmm"
+#include "pois/cave19c.dmm"
+#include "pois/cave20c.dmm"
+#include "pois/cave21c.dmm"
+#include "pois/cave22c.dmm"
+#include "pois/cave23c.dmm"
+#include "pois/cave24c.dmm"
+#include "pois/cave25c.dmm"
+#include "pois/cave26c.dmm"
+#include "pois/cave27c.dmm"
+#include "pois/cave28c.dmm"
+#include "pois/cave29c.dmm"
+#include "pois/cave30c.dmm"
+#include "pois/cave31c.dmm"
+#include "pois/cave32c.dmm"
+#include "pois/cave33c.dmm"
+#include "pois/cave34c.dmm"
+#include "pois/cave35c.dmm"
+#include "pois/cave36c.dmm"
+#include "pois/cave37c.dmm"
+#include "pois/cave38c.dmm"
+#include "pois/cave39c.dmm"
+#include "pois/cave40c.dmm"
+#include "pois/cave41c.dmm"
+#include "pois/cave42c.dmm"
+#include "pois/cave43c.dmm"
+#include "pois/cave44c.dmm"
+#include "pois/cave45c.dmm"
+#include "pois/cave46c.dmm"
+#include "pois/cave47c.dmm"
+#include "pois/cave48c.dmm"
+#include "pois/cave49c.dmm"
+
+#include "pois/cavething1.dmm"
+#include "pois/cavething2.dmm"
+#include "pois/cavething3.dmm"
+#include "pois/cavething4.dmm"
+#include "pois/cavething5.dmm"
+#include "pois/cavething6.dmm"
+#include "pois/cavething7.dmm"
+#include "pois/cavething8.dmm"
+#include "pois/cavething9.dmm"
+#include "pois/cavething10.dmm"
+#include "pois/cavething11.dmm"
+#include "pois/cavething12.dmm"
+#include "pois/cavething13.dmm"
+#include "pois/cavething14.dmm"
+
+#endif
diff --git a/maps/groundbase/groundbase_poi_stuff.dm b/maps/groundbase/groundbase_poi_stuff.dm
index 6b4584c448..577562fc0b 100644
--- a/maps/groundbase/groundbase_poi_stuff.dm
+++ b/maps/groundbase/groundbase_poi_stuff.dm
@@ -1,193 +1,3 @@
-#ifdef MAP_TEST
-#include "pois/outdoors1.dmm"
-#include "pois/outdoors2.dmm"
-#include "pois/outdoors3.dmm"
-#include "pois/outdoors4.dmm"
-#include "pois/outdoors5.dmm"
-#include "pois/outdoors6.dmm"
-#include "pois/outdoors7.dmm"
-#include "pois/outdoors8.dmm"
-#include "pois/outdoors9.dmm"
-#include "pois/outdoors10.dmm"
-#include "pois/outdoors11.dmm"
-#include "pois/outdoors12.dmm"
-#include "pois/outdoors13.dmm"
-#include "pois/outdoors14.dmm"
-#include "pois/outdoors16.dmm"
-
-#include "pois/cave1.dmm"
-#include "pois/cave2.dmm"
-#include "pois/cave3.dmm"
-#include "pois/cave4.dmm"
-#include "pois/cave5.dmm"
-#include "pois/cave6.dmm"
-#include "pois/cave7.dmm"
-#include "pois/cave8.dmm"
-#include "pois/cave9.dmm"
-#include "pois/cave10.dmm"
-#include "pois/cave11.dmm"
-#include "pois/cave12.dmm"
-#include "pois/cave13.dmm"
-#include "pois/cave14.dmm"
-#include "pois/cave15.dmm"
-#include "pois/cave16.dmm"
-#include "pois/cave17.dmm"
-#include "pois/cave18.dmm"
-#include "pois/cave19.dmm"
-#include "pois/cave20.dmm"
-#include "pois/cave21.dmm"
-#include "pois/cave22.dmm"
-#include "pois/cave23.dmm"
-#include "pois/cave24.dmm"
-#include "pois/cave25.dmm"
-#include "pois/cave26.dmm"
-#include "pois/cave27.dmm"
-#include "pois/cave28.dmm"
-#include "pois/cave29.dmm"
-#include "pois/cave30.dmm"
-#include "pois/cave31.dmm"
-#include "pois/cave32.dmm"
-#include "pois/cave33.dmm"
-#include "pois/cave34.dmm"
-#include "pois/cave35.dmm"
-#include "pois/cave36.dmm"
-#include "pois/cave37.dmm"
-#include "pois/cave38.dmm"
-#include "pois/cave39.dmm"
-#include "pois/cave40.dmm"
-#include "pois/cave41.dmm"
-#include "pois/cave42.dmm"
-#include "pois/cave43.dmm"
-#include "pois/cave44.dmm"
-#include "pois/cave45.dmm"
-#include "pois/cave46.dmm"
-#include "pois/cave47.dmm"
-#include "pois/cave48.dmm"
-#include "pois/cave49.dmm"
-#include "pois/cave50.dmm"
-#include "pois/cave51.dmm"
-#include "pois/cave52.dmm"
-#include "pois/cave53.dmm"
-#include "pois/cave54.dmm"
-
-#include "pois/cave1b.dmm"
-#include "pois/cave2b.dmm"
-#include "pois/cave3b.dmm"
-#include "pois/cave4b.dmm"
-#include "pois/cave5b.dmm"
-#include "pois/cave6b.dmm"
-#include "pois/cave7b.dmm"
-#include "pois/cave8b.dmm"
-#include "pois/cave9b.dmm"
-#include "pois/cave10b.dmm"
-#include "pois/cave11b.dmm"
-#include "pois/cave12b.dmm"
-#include "pois/cave13b.dmm"
-#include "pois/cave14b.dmm"
-#include "pois/cave15b.dmm"
-#include "pois/cave16b.dmm"
-#include "pois/cave17b.dmm"
-#include "pois/cave18b.dmm"
-#include "pois/cave19b.dmm"
-#include "pois/cave20b.dmm"
-#include "pois/cave21b.dmm"
-#include "pois/cave22b.dmm"
-#include "pois/cave23b.dmm"
-#include "pois/cave24b.dmm"
-#include "pois/cave25b.dmm"
-#include "pois/cave26b.dmm"
-#include "pois/cave27b.dmm"
-#include "pois/cave28b.dmm"
-#include "pois/cave29b.dmm"
-#include "pois/cave30b.dmm"
-#include "pois/cave31b.dmm"
-#include "pois/cave32b.dmm"
-#include "pois/cave33b.dmm"
-#include "pois/cave34b.dmm"
-#include "pois/cave35b.dmm"
-#include "pois/cave36b.dmm"
-#include "pois/cave37b.dmm"
-#include "pois/cave38b.dmm"
-#include "pois/cave39b.dmm"
-#include "pois/cave40b.dmm"
-#include "pois/cave41b.dmm"
-#include "pois/cave42b.dmm"
-#include "pois/cave43b.dmm"
-#include "pois/cave44b.dmm"
-#include "pois/cave45b.dmm"
-#include "pois/cave46b.dmm"
-#include "pois/cave47b.dmm"
-#include "pois/cave48b.dmm"
-#include "pois/cave49b.dmm"
-
-#include "pois/cave1c.dmm"
-#include "pois/cave2c.dmm"
-#include "pois/cave3c.dmm"
-#include "pois/cave4c.dmm"
-#include "pois/cave5c.dmm"
-#include "pois/cave6c.dmm"
-#include "pois/cave7c.dmm"
-#include "pois/cave8c.dmm"
-#include "pois/cave9c.dmm"
-#include "pois/cave10c.dmm"
-#include "pois/cave11c.dmm"
-#include "pois/cave12c.dmm"
-#include "pois/cave13c.dmm"
-#include "pois/cave14c.dmm"
-#include "pois/cave15c.dmm"
-#include "pois/cave16c.dmm"
-#include "pois/cave17c.dmm"
-#include "pois/cave18c.dmm"
-#include "pois/cave19c.dmm"
-#include "pois/cave20c.dmm"
-#include "pois/cave21c.dmm"
-#include "pois/cave22c.dmm"
-#include "pois/cave23c.dmm"
-#include "pois/cave24c.dmm"
-#include "pois/cave25c.dmm"
-#include "pois/cave26c.dmm"
-#include "pois/cave27c.dmm"
-#include "pois/cave28c.dmm"
-#include "pois/cave29c.dmm"
-#include "pois/cave30c.dmm"
-#include "pois/cave31c.dmm"
-#include "pois/cave32c.dmm"
-#include "pois/cave33c.dmm"
-#include "pois/cave34c.dmm"
-#include "pois/cave35c.dmm"
-#include "pois/cave36c.dmm"
-#include "pois/cave37c.dmm"
-#include "pois/cave38c.dmm"
-#include "pois/cave39c.dmm"
-#include "pois/cave40c.dmm"
-#include "pois/cave41c.dmm"
-#include "pois/cave42c.dmm"
-#include "pois/cave43c.dmm"
-#include "pois/cave44c.dmm"
-#include "pois/cave45c.dmm"
-#include "pois/cave46c.dmm"
-#include "pois/cave47c.dmm"
-#include "pois/cave48c.dmm"
-#include "pois/cave49c.dmm"
-
-#include "pois/cavething1.dmm"
-#include "pois/cavething2.dmm"
-#include "pois/cavething3.dmm"
-#include "pois/cavething4.dmm"
-#include "pois/cavething5.dmm"
-#include "pois/cavething6.dmm"
-#include "pois/cavething7.dmm"
-#include "pois/cavething8.dmm"
-#include "pois/cavething9.dmm"
-#include "pois/cavething10.dmm"
-#include "pois/cavething11.dmm"
-#include "pois/cavething12.dmm"
-#include "pois/cavething13.dmm"
-#include "pois/cavething14.dmm"
-
-#endif
-
-
/area/submap/groundbase/poi
name = "POI - Rascal's Pass"
icon = 'icons/turf/areas_vr.dmi'
diff --git a/maps/groundbase/groundbase_shuttle_defs.dm b/maps/groundbase/groundbase_shuttle_defs.dm
new file mode 100644
index 0000000000..54ef51cb6f
--- /dev/null
+++ b/maps/groundbase/groundbase_shuttle_defs.dm
@@ -0,0 +1,97 @@
+/////EXPLOSHUTTL/////
+// The shuttle's 'shuttle' computer
+/obj/machinery/computer/shuttle_control/explore/gbexplo
+ name = "short jump console"
+ shuttle_tag = "Exploration Shuttle"
+ req_one_access = list(access_pilot)
+
+/obj/effect/overmap/visitable/ship/landable/gbexplo
+ name = "Exploration Shuttle"
+ desc = "A small shuttle from Rascal's Pass."
+ vessel_mass = 2500
+ vessel_size = SHIP_SIZE_TINY
+ shuttle = "Exploration Shuttle"
+ known = TRUE
+
+/area/shuttle/groundbase/exploration
+ icon = 'icons/turf/areas_vr.dmi'
+ icon_state = "yelwhitri"
+ name = "Exploration Shuttle"
+ requires_power = 1
+
+//////////////////////////////////////////////
+
+/obj/effect/shuttle_landmark/premade/groundbase
+ name = "Rascal's Pass"
+ landmark_tag = "groundbase"
+
+///////////////////////////////////////////////
+
+//AXOLOTL
+
+// The shuttle's 'shuttle' computer
+/obj/machinery/computer/shuttle_control/explore/axolotl
+ name = "short jump console"
+ shuttle_tag = "Axolotl"
+
+// A shuttle lateloader landmark
+/obj/effect/shuttle_landmark/shuttle_initializer/axolotl
+ name = "ITV Axolotl"
+ base_area = /area/submap/groundbase/wilderness/west
+ base_turf = /turf/simulated/floor/outdoors/sidewalk/slab/virgo3c
+ landmark_tag = "omship_axolotl"
+
+// The 'ship'
+/obj/effect/overmap/visitable/ship/landable/axolotl
+ name = "ITV Axolotl"
+ scanner_desc = @{"[i]Registration[/i]: ITV Axolotl
+[i]Class[/i]: Corvette
+[i]Transponder[/i]: Transmitting (CIV), non-hostile
+[b]Notice[/b]: Multirole independent vessel"}
+ vessel_mass = 4500
+ vessel_size = SHIP_SIZE_LARGE
+ fore_dir = EAST
+ shuttle = "Axolotl"
+ known = TRUE
+
+/area/shuttle/axolotl
+ name = "\improper Axolotl Cabin"
+ icon = 'icons/turf/areas_vr_talon.dmi'
+ icon_state = "gray"
+ requires_power = 1
+
+/area/shuttle/axolotl_engineering
+ name = "\improper Axolotl Engineering"
+ icon = 'icons/turf/areas_vr_talon.dmi'
+ icon_state = "yellow"
+ requires_power = 1
+
+/area/shuttle/axolotl_cockpit
+ name = "\improper Axolotl Cockpit"
+ icon = 'icons/turf/areas_vr_talon.dmi'
+ icon_state = "blue"
+ requires_power = 1
+
+/area/shuttle/axolotl_q1
+ name = "\improper Axolotl Quarters 1"
+ icon = 'icons/turf/areas_vr_talon.dmi'
+ icon_state = "gray-p"
+ requires_power = 1
+
+/area/shuttle/axolotl_q2
+ name = "\improper Axolotl Quarters 2"
+ icon = 'icons/turf/areas_vr_talon.dmi'
+ icon_state = "gray-s"
+ requires_power = 1
+
+/area/shuttle/axolotl_galley
+ name = "\improper Axolotl Galley"
+ icon = 'icons/turf/areas_vr_talon.dmi'
+ icon_state = "dark-s"
+ requires_power = 1
+
+/area/shuttle/axolotl_head
+ name = "\improper Axolotl Head"
+ icon = 'icons/turf/areas_vr_talon.dmi'
+ icon_state = "dark-p"
+ requires_power = 1
diff --git a/maps/groundbase/groundbase_shuttles.dm b/maps/groundbase/groundbase_shuttles.dm
index 1c21e86cf5..25d3e01df7 100644
--- a/maps/groundbase/groundbase_shuttles.dm
+++ b/maps/groundbase/groundbase_shuttles.dm
@@ -1,20 +1,10 @@
+// Supply shuttle
+/datum/shuttle/autodock/ferry/supply/cargo/New(_name)
+ ..()
+ move_direction = WEST
+ ceiling_type = /turf/simulated/floor/reinforced/virgo3c
+
/////EXPLOSHUTTL/////
-// The shuttle's 'shuttle' computer
-/obj/machinery/computer/shuttle_control/explore/gbexplo
- name = "short jump console"
- shuttle_tag = "Exploration Shuttle"
- req_one_access = list(access_pilot)
-
-/obj/effect/overmap/visitable/ship/landable/gbexplo
- name = "Exploration Shuttle"
- desc = "A small shuttle from Rascal's Pass."
- vessel_mass = 2500
- vessel_size = SHIP_SIZE_TINY
- shuttle = "Exploration Shuttle"
- known = TRUE
-
-// A shuttle lateloader landmark
-
/datum/shuttle/autodock/overmap/gbexplo
name = "Exploration Shuttle"
current_location = "gb_excursion_pad"
@@ -23,55 +13,28 @@
fuel_consumption = 1
move_direction = NORTH
-/area/shuttle/groundbase/exploration
- icon = 'icons/turf/areas_vr.dmi'
- icon_state = "yelwhitri"
- name = "Exploration Shuttle"
- requires_power = 1
+//AXOLOTL
+/datum/shuttle/autodock/overmap/axolotl
+ name = "Axolotl"
+ current_location = "omship_axolotl"
+ docking_controller_tag = "axolotl_docking"
+ shuttle_area = list(/area/shuttle/axolotl,/area/shuttle/axolotl_cockpit,/area/shuttle/axolotl_engineering,/area/shuttle/axolotl_q1,/area/shuttle/axolotl_q2,/area/shuttle/axolotl_galley,/area/shuttle/axolotl_head)
+ defer_initialisation = TRUE //We're not loaded until an admin does it
+ fuel_consumption = 5
+ ceiling_type = /turf/simulated/floor/reinforced/airless
-//////////////////////////////////////////////
-
-// Supply shuttle
-/datum/shuttle/autodock/ferry/supply/cargo
- name = "Supply"
- location = FERRY_LOCATION_OFFSITE
- shuttle_area = /area/shuttle/supply
- warmup_time = 10
- landmark_offsite = "supply_cc"
- landmark_station = "supply_station"
- docking_controller_tag = "supply_shuttle"
- flags = SHUTTLE_FLAGS_PROCESS|SHUTTLE_FLAGS_SUPPLY
- move_direction = WEST
- ceiling_type = /turf/simulated/floor/reinforced/virgo3c
-
-////////////////////////////////////////////////
-
-/obj/effect/shuttle_landmark/premade/groundbase
- name = "Rascal's Pass"
- landmark_tag = "groundbase"
-
-///////////////////////////////////////////////
+/obj/effect/shuttle_landmark/shuttle_initializer/axolotl/New(loc, ...)
+ shuttle_type = /datum/shuttle/autodock/overmap/axolotl
+ ..()
// Escape shuttle
-/datum/shuttle/autodock/ferry/emergency/escape
- name = "Escape"
- location = FERRY_LOCATION_OFFSITE
- shuttle_area = /area/shuttle/escape
- warmup_time = 10
- landmark_offsite = "escape_cc"
- landmark_station = "escape_station"
- landmark_transition = "escape_transit"
- move_time = SHUTTLE_TRANSIT_DURATION_RETURN
- move_direction = EAST
-
-/datum/shuttle/autodock/ferry/emergency
- var/frequency = 1380 // Why this frequency? BECAUSE! Thats what someone decided once.
- var/datum/radio_frequency/radio_connection
+/datum/shuttle/autodock/ferry/emergency/escape/New()
+ ..()
move_direction = EAST
/datum/shuttle/autodock/ferry/emergency/New()
- radio_connection = radio_controller.add_object(src, frequency, null)
..()
+ move_direction = EAST
/datum/shuttle/autodock/ferry/emergency/dock()
..()
@@ -95,130 +58,3 @@
return radio_connection.post_signal(src, signal, filter)
else
qdel(signal)
-
-//////////////////////////////////////////////
-
-/////Virgo Flyer/////
-// The shuttle's 'shuttle' computer
-/obj/machinery/computer/shuttle_control/explore/ccboat
- name = "Virgo Flyer control console"
- shuttle_tag = "Virgo Flyer"
- req_one_access = list(access_pilot)
-
-/obj/effect/overmap/visitable/ship/landable/ccboat
- name = "NTV Virgo Flyer"
- desc = "A small shuttle from Central Command."
- vessel_mass = 1000
- vessel_size = SHIP_SIZE_TINY
- shuttle = "Virgo Flyer"
- known = TRUE
-
-// A shuttle lateloader landmark
-/obj/effect/shuttle_landmark/shuttle_initializer/ccboat
- name = "Central Command Shuttlepad"
- base_area = /area/shuttle/centcom/ccbay
- base_turf = /turf/simulated/floor/reinforced
- landmark_tag = "cc_shuttlepad"
- docking_controller = "cc_landing_pad"
- shuttle_type = /datum/shuttle/autodock/overmap/ccboat
-
-/datum/shuttle/autodock/overmap/ccboat
- name = "Virgo Flyer"
- current_location = "cc_shuttlepad"
- docking_controller_tag = "ccboat"
- shuttle_area = /area/shuttle/ccboat
- fuel_consumption = 0
- defer_initialisation = TRUE
-
-/area/shuttle/ccboat
- icon = 'icons/turf/areas_vr.dmi'
- icon_state = "yelwhitri"
- name = "Virgo Flyer"
- requires_power = 0
-
-/area/shuttle/centcom/ccbay
- icon = 'icons/turf/areas_vr.dmi'
- icon_state = "bluwhisqu"
- name = "Central Command Shuttle Bay"
- requires_power = 0
- dynamic_lighting = 0
-
-//AXOLOTL
-
-// The shuttle's 'shuttle' computer
-/obj/machinery/computer/shuttle_control/explore/axolotl
- name = "short jump console"
- shuttle_tag = "Axolotl"
-
-// The 'shuttle'
-/datum/shuttle/autodock/overmap/axolotl
- name = "Axolotl"
- current_location = "omship_axolotl"
- docking_controller_tag = "axolotl_docking"
- shuttle_area = list(/area/shuttle/axolotl,/area/shuttle/axolotl_cockpit,/area/shuttle/axolotl_engineering,/area/shuttle/axolotl_q1,/area/shuttle/axolotl_q2,/area/shuttle/axolotl_galley,/area/shuttle/axolotl_head)
- defer_initialisation = TRUE //We're not loaded until an admin does it
- fuel_consumption = 5
- ceiling_type = /turf/simulated/floor/reinforced/airless
-
-// A shuttle lateloader landmark
-/obj/effect/shuttle_landmark/shuttle_initializer/axolotl
- name = "ITV Axolotl"
- base_area = /area/submap/groundbase/wilderness/west
- base_turf = /turf/simulated/floor/outdoors/sidewalk/slab/virgo3c
- landmark_tag = "omship_axolotl"
- shuttle_type = /datum/shuttle/autodock/overmap/axolotl
-
-// The 'ship'
-/obj/effect/overmap/visitable/ship/landable/axolotl
- name = "ITV Axolotl"
- scanner_desc = @{"[i]Registration[/i]: ITV Axolotl
-[i]Class[/i]: Corvette
-[i]Transponder[/i]: Transmitting (CIV), non-hostile
-[b]Notice[/b]: Multirole independent vessel"}
- vessel_mass = 4500
- vessel_size = SHIP_SIZE_LARGE
- fore_dir = EAST
- shuttle = "Axolotl"
- known = TRUE
-
-/area/shuttle/axolotl
- name = "\improper Axolotl Cabin"
- icon = 'icons/turf/areas_vr_talon.dmi'
- icon_state = "gray"
- requires_power = 1
-
-/area/shuttle/axolotl_engineering
- name = "\improper Axolotl Engineering"
- icon = 'icons/turf/areas_vr_talon.dmi'
- icon_state = "yellow"
- requires_power = 1
-
-/area/shuttle/axolotl_cockpit
- name = "\improper Axolotl Cockpit"
- icon = 'icons/turf/areas_vr_talon.dmi'
- icon_state = "blue"
- requires_power = 1
-
-/area/shuttle/axolotl_q1
- name = "\improper Axolotl Quarters 1"
- icon = 'icons/turf/areas_vr_talon.dmi'
- icon_state = "gray-p"
- requires_power = 1
-
-/area/shuttle/axolotl_q2
- name = "\improper Axolotl Quarters 2"
- icon = 'icons/turf/areas_vr_talon.dmi'
- icon_state = "gray-s"
- requires_power = 1
-
-/area/shuttle/axolotl_galley
- name = "\improper Axolotl Galley"
- icon = 'icons/turf/areas_vr_talon.dmi'
- icon_state = "dark-s"
- requires_power = 1
-
-/area/shuttle/axolotl_head
- name = "\improper Axolotl Head"
- icon = 'icons/turf/areas_vr_talon.dmi'
- icon_state = "dark-p"
- requires_power = 1
diff --git a/maps/groundbase/groundbase_telecomm_defs.dm b/maps/groundbase/groundbase_telecomm_defs.dm
new file mode 100644
index 0000000000..760510e1f2
--- /dev/null
+++ b/maps/groundbase/groundbase_telecomm_defs.dm
@@ -0,0 +1,52 @@
+// #### Hub ####
+/obj/machinery/telecomms/hub/preset/groundbase
+ id = "Hub"
+ network = "tcommsat"
+ autolinkers = list("hub",
+ "groundbase_relay", "c_relay", "m_relay", "r_relay",
+ "science", "medical", "supply", "service", "common", "command", "engineering", "security", "Away Team", "unused",
+ "hb_relay", "receiverA", "broadcasterA"
+ )
+
+/obj/machinery/telecomms/receiver/preset_right/groundbase
+ id = "groundbase_rx"
+ freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ, ENT_FREQ, EXP_FREQ)
+
+/obj/machinery/telecomms/broadcaster/preset_right/groundbase
+ id = "groundbase_tx"
+
+/obj/machinery/telecomms/bus/preset_two/groundbase
+ freq_listening = list(SUP_FREQ, SRV_FREQ, EXP_FREQ)
+
+/obj/machinery/telecomms/server/presets/service/groundbase
+ freq_listening = list(SRV_FREQ, EXP_FREQ)
+ autolinkers = list("service", "Away Team")
+
+// Telecommunications Satellite
+/area/groundbase/command/tcomms
+ name = "\improper Telecomms"
+ ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg')
+
+/area/groundbase/command/tcomms/entrance
+ name = "\improper Telecomms Teleporter"
+
+/area/groundbase/command/tcomms/foyer
+ name = "\improper Telecomms Foyer"
+
+/area/groundbase/command/tcomms/storage
+ name = "\improper Telecomms Storage"
+
+/area/groundbase/command/tcomms/computer
+ name = "\improper Telecomms Control Room"
+
+/area/groundbase/command/tcomms/chamber
+ name = "\improper Telecomms Central Compartment"
+ flags = BLUE_SHIELDED
+
+/obj/item/bluespaceradio/groundbase_prelinked
+ name = "bluespace radio (Rascal's Pass)"
+ handset = /obj/item/radio/bluespacehandset/linked/groundbase_prelinked
+
+/obj/item/radio/bluespacehandset/linked/groundbase_prelinked
+ bs_tx_preload_id = "groundbase_rx" //Transmit to a receiver
+ bs_rx_preload_id = "groundbase_tx" //Recveive from a transmitter
diff --git a/maps/groundbase/groundbase_telecomms.dm b/maps/groundbase/groundbase_telecomms.dm
index 7e77d02d1f..8127da739f 100644
--- a/maps/groundbase/groundbase_telecomms.dm
+++ b/maps/groundbase/groundbase_telecomms.dm
@@ -1,63 +1,10 @@
-// ### Preset machines ###
-
-
// #### Relays ####
// Telecomms doesn't know about connected z-levels, so we need relays even for the other surface levels.
-/obj/machinery/telecomms/relay/preset/station
+/obj/machinery/telecomms/relay/preset/station/New()
+ ..()
id = "groundbase Relay"
autolinkers = list("groundbase_relay")
-// #### Hub ####
-/obj/machinery/telecomms/hub/preset/groundbase
- id = "Hub"
- network = "tcommsat"
- autolinkers = list("hub",
- "groundbase_relay", "c_relay", "m_relay", "r_relay",
- "science", "medical", "supply", "service", "common", "command", "engineering", "security", "Away Team", "unused",
- "hb_relay", "receiverA", "broadcasterA"
- )
-
-/obj/machinery/telecomms/receiver/preset_right/groundbase
- id = "groundbase_rx"
- freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ, ENT_FREQ, EXP_FREQ)
-
-/obj/machinery/telecomms/broadcaster/preset_right/groundbase
- id = "groundbase_tx"
-
-/obj/machinery/telecomms/bus/preset_two/groundbase
- freq_listening = list(SUP_FREQ, SRV_FREQ, EXP_FREQ)
-
-/obj/machinery/telecomms/server/presets/service/groundbase
- freq_listening = list(SRV_FREQ, EXP_FREQ)
- autolinkers = list("service", "Away Team")
-
-// Telecommunications Satellite
-/area/groundbase/command/tcomms
- name = "\improper Telecomms"
- ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg')
-
-/area/groundbase/command/tcomms/entrance
- name = "\improper Telecomms Teleporter"
-
-/area/groundbase/command/tcomms/foyer
- name = "\improper Telecomms Foyer"
-
-/area/groundbase/command/tcomms/storage
- name = "\improper Telecomms Storage"
-
-/area/groundbase/command/tcomms/computer
- name = "\improper Telecomms Control Room"
-
-/area/groundbase/command/tcomms/chamber
- name = "\improper Telecomms Central Compartment"
- flags = BLUE_SHIELDED
-
-/area/maintenance/substation/tcomms
- name = "\improper Telecomms Substation"
-
-/area/maintenance/station/tcomms
- name = "\improper Telecoms Maintenance"
-
/datum/map/groundbase/default_internal_channels()
return list(
num2text(PUB_FREQ) = list(),
@@ -76,18 +23,8 @@
num2text(EXP_FREQ) = list(access_explorer)
)
-/obj/item/multitool/station_buffered
- name = "pre-linked multitool (Rascal's Pass hub)"
- desc = "This multitool has already been linked to the groundbase telecomms hub and can be used to configure one (1) relay."
-
/obj/item/multitool/station_buffered/Initialize()
. = ..()
+ name = "pre-linked multitool (Rascal's Pass hub)"
+ desc = "This multitool has already been linked to the groundbase telecomms hub and can be used to configure one (1) relay."
buffer = locate(/obj/machinery/telecomms/hub/preset/groundbase)
-
-/obj/item/bluespaceradio/groundbase_prelinked
- name = "bluespace radio (Rascal's Pass)"
- handset = /obj/item/radio/bluespacehandset/linked/groundbase_prelinked
-
-/obj/item/radio/bluespacehandset/linked/groundbase_prelinked
- bs_tx_preload_id = "groundbase_rx" //Transmit to a receiver
- bs_rx_preload_id = "groundbase_tx" //Recveive from a transmitter
diff --git a/maps/groundbase/groundbase_things.dm b/maps/groundbase/groundbase_things.dm
index 0530007d71..c50027e635 100644
--- a/maps/groundbase/groundbase_things.dm
+++ b/maps/groundbase/groundbase_things.dm
@@ -1,114 +1,20 @@
-/obj/effect/step_trigger/teleporter/to_mining
- icon = 'icons/obj/structures/stairs_64x64.dmi'
- icon_state = ""
- invisibility = 0
- plane = TURF_PLANE
- layer = ABOVE_TURF_LAYER
/obj/effect/step_trigger/teleporter/to_mining/Initialize()
. = ..()
teleport_x = x
teleport_y = y ++
teleport_z = Z_LEVEL_MINING
-/obj/effect/step_trigger/teleporter/from_mining
- icon = 'icons/obj/structures/stairs_64x64.dmi'
- icon_state = ""
- invisibility = 0
- plane = TURF_PLANE
- layer = ABOVE_TURF_LAYER
-
/obj/effect/step_trigger/teleporter/from_mining/Initialize()
. = ..()
teleport_x = x
teleport_y = y --
teleport_z = Z_LEVEL_GB_BOTTOM
-/turf/unsimulated/mineral/virgo3b
- blocks_air = TRUE
-
-/turf/unsimulated/floor/steel
- icon = 'icons/turf/flooring/tiles_vr.dmi'
- icon_state = "steel"
-
-// Some turfs to make floors look better in centcom tram station.
-
-/turf/unsimulated/floor/techfloor_grid
- name = "floor"
- icon = 'icons/turf/flooring/techfloor.dmi'
- icon_state = "techfloor_grid"
-
-/turf/unsimulated/floor/maglev
- name = "maglev track"
- desc = "Magnetic levitation tram tracks. Caution! Electrified!"
- icon = 'icons/turf/flooring/maglevs.dmi'
- icon_state = "maglevup"
-
-/turf/unsimulated/wall/transit
- icon = 'icons/turf/transit_vr.dmi'
-
-/turf/unsimulated/floor/transit
- icon = 'icons/turf/transit_vr.dmi'
-
-/obj/effect/floor_decal/transit/orange
- icon = 'icons/turf/transit_vr.dmi'
- icon_state = "transit_techfloororange_edges"
-
-/obj/effect/transit/light
- icon = 'icons/turf/transit_128.dmi'
- icon_state = "tube1-2"
-
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/grass/sif)
-/turf/simulated/floor/outdoors/grass/sif
- turf_layers = list(
- /turf/simulated/floor/outdoors/rocks/virgo3b,
- /turf/simulated/floor/outdoors/dirt/virgo3b
- )
-
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/dirt)
-/turf/simulated/floor/outdoors/dirt/virgo3b
- icon = 'icons/turf/flooring/asteroid.dmi'
- icon_state = "asteroid"
-
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/rocks)
-
-/turf/simulated/floor/maglev
- name = "maglev track"
- desc = "Magnetic levitation tram tracks. Caution! Electrified!"
- icon = 'icons/turf/flooring/maglevs.dmi'
- icon_state = "maglevup"
- can_be_plated = FALSE
-
- var/area/shock_area = /area/centcom/terminal/tramfluff
-
-/turf/simulated/floor/maglev/Initialize()
- . = ..()
- shock_area = locate(shock_area)
-
-// Walking on maglev tracks will shock you! Horray!
-/turf/simulated/floor/maglev/Entered(var/atom/movable/AM, var/atom/old_loc)
- if(isliving(AM) && !(AM.is_incorporeal()) && prob(50))
- track_zap(AM)
-/turf/simulated/floor/maglev/attack_hand(var/mob/user)
- if(prob(75))
- track_zap(user)
-/turf/simulated/floor/maglev/proc/track_zap(var/mob/living/user)
- if (!istype(user)) return
- if (electrocute_mob(user, shock_area, src))
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(5, 1, src)
- s.start()
+/turf/simulated/floor/maglev/New(loc, ...)
+ ..()
+ shock_area = /area/centcom/terminal/tramfluff
// Shelter Capsule extra restrictions
/datum/map_template/shelter/New()
..()
banned_areas += list(/area/groundbase/level3/escapepad)
-
-// Landmarks for wildlife events
-
-/obj/effect/landmark/wildlife/water
- name = "aquatic wildlife"
- wildlife_type = 1
-
-/obj/effect/landmark/wildlife/forest
- name = "roaming wildlife"
- wildlife_type = 2
\ No newline at end of file
diff --git a/maps/offmap_vr/common_offmaps.dm b/maps/offmap_vr/common_offmaps.dm
index 8e6279774f..1665ec7c25 100644
--- a/maps/offmap_vr/common_offmaps.dm
+++ b/maps/offmap_vr/common_offmaps.dm
@@ -66,6 +66,16 @@
mappath = "maps/expedition_vr/aerostat/surface.dmm"
associated_map_datum = /datum/map_z_level/common_lateload/away_aerostat_surface
+/datum/map_template/virgo2
+ name = "Surface Content - Virgo 2"
+ desc = "For seeding submaps on Virgo 2"
+ allow_duplicates = FALSE
+
+/datum/random_map/noise/ore/virgo2
+ descriptor = "virgo 2 ore distribution map"
+ deep_val = 0.2
+ rare_val = 0.1
+
/datum/map_template/common_lateload/away_aerostat_surface/on_map_loaded(z)
. = ..()
seed_submaps(list(Z_LEVEL_AEROSTAT_SURFACE), 120, /area/offmap/aerostat/surface/unexplored, /datum/map_template/virgo2)
diff --git a/maps/stellar_delight/stellar_delight.dm b/maps/stellar_delight/stellar_delight.dm
index d6ee68db94..60aed6fe01 100644
--- a/maps/stellar_delight/stellar_delight.dm
+++ b/maps/stellar_delight/stellar_delight.dm
@@ -1,15 +1,12 @@
#if !defined(USING_MAP_DATUM)
- #include "stellar_delight_areas.dm"
#include "stellar_delight_defines.dm"
#include "stellar_delight_jobs.dm"
- #include "stellar_delight_shuttle_defs.dm"
+ #include "stellar_delight_shuttles.dm"
#include "stellar_delight_telecomms.dm"
#include "stellar_delight_things.dm"
#include "stellar_delight_turfs.dm"
#include "stellar_delight_events.dm"
- #include "..\offmap_vr\common_offmaps.dm"
- #include "..\tether\tether_jobs.dm"
#ifndef AWAY_MISSION_TEST //Don't include these for just testing away missions
#include "stellar_delight1.dmm"
diff --git a/maps/stellar_delight/stellar_delight_defines.dm b/maps/stellar_delight/stellar_delight_defines.dm
index 4d72693fb6..ebcb8fb65f 100644
--- a/maps/stellar_delight/stellar_delight_defines.dm
+++ b/maps/stellar_delight/stellar_delight_defines.dm
@@ -1,25 +1,3 @@
-//Normal map defs
-#define Z_LEVEL_SHIP_LOW 1
-#define Z_LEVEL_SHIP_MID 2
-#define Z_LEVEL_SHIP_HIGH 3
-#define Z_LEVEL_CENTCOM 4
-#define Z_LEVEL_MISC 5
-#define Z_LEVEL_SPACE_ROCKS 6
-#define Z_LEVEL_BEACH 7
-#define Z_LEVEL_BEACH_CAVE 8
-#define Z_LEVEL_AEROSTAT 9
-#define Z_LEVEL_AEROSTAT_SURFACE 10
-#define Z_LEVEL_DEBRISFIELD 11
-#define Z_LEVEL_FUELDEPOT 12
-#define Z_LEVEL_OVERMAP 13
-#define Z_LEVEL_OFFMAP1 14
-#define Z_LEVEL_GATEWAY 15
-#define Z_LEVEL_OM_ADVENTURE 16
-#define Z_LEVEL_REDGATE 17
-
-//Camera networks
-#define NETWORK_HALLS "Halls"
-
/datum/map/stellar_delight/New()
..()
var/choice = pickweight(list(
@@ -234,35 +212,6 @@
Z_LEVEL_BEACH
)
-/obj/effect/landmark/map_data/stellar_delight
- height = 3
-
-/obj/effect/overmap/visitable/ship/stellar_delight
- name = "NRV Stellar Delight"
- icon = 'icons/obj/overmap_vr.dmi'
- icon_state = "stellar_delight_g"
- desc = "Spacefaring vessel. Friendly IFF detected."
- scanner_desc = @{"[i]Registration[/i]: NRV Stellar Delight
-[i]Class[/i]: Nanotrasen Response Vessel
-[i]Transponder[/i]: Transmitting (CIV), non-hostile"
-[b]Notice[/b]: A response vessel registered to Nanotrasen."}
- vessel_mass = 25000
- vessel_size = SHIP_SIZE_LARGE
- initial_generic_waypoints = list("starboard_shuttlepad","port_shuttlepad","sd-1-23-54","sd-1-67-15","sd-1-70-130","sd-1-115-85","sd-2-25-98","sd-2-117-98","sd-3-22-78","sd-3-36-33","sd-3-104-33","sd-3-120-78")
- initial_restricted_waypoints = list("Exploration Shuttle" = list("sd_explo"), "Mining Shuttle" = list("sd_mining"))
- levels_for_distress = list(Z_LEVEL_OFFMAP1, Z_LEVEL_BEACH, Z_LEVEL_AEROSTAT, Z_LEVEL_DEBRISFIELD, Z_LEVEL_FUELDEPOT)
- unowned_areas = list(/area/shuttle/sdboat)
- known = TRUE
- start_x = 2
- start_y = 2
-
- fore_dir = NORTH
-
- skybox_icon = 'stelardelightskybox.dmi'
- skybox_icon_state = "skybox"
- skybox_pixel_x = 450
- skybox_pixel_y = 200
-
/obj/effect/overmap/visitable/ship/stellar_delight/build_skybox_representation()
..()
if(!cached_skybox_image)
@@ -384,3 +333,49 @@
desc = "The Virgo 2 Aerostat away mission."
mappath = "maps/expedition_vr/aerostat/aerostat_science_outpost.dmm"
associated_map_datum = /datum/map_z_level/common_lateload/away_aerostat
+
+/////FOR CENTCOMM (at least)/////
+/obj/effect/overmap/visitable/sector/virgo3b
+ known = TRUE
+ in_space = TRUE
+
+ initial_generic_waypoints = list("sr-c","sr-n","sr-s")
+ initial_restricted_waypoints = list("Central Command Shuttlepad" = list("cc_shuttlepad"))
+
+ extra_z_levels = list(Z_LEVEL_SPACE_ROCKS)
+
+/////SD Starts at V3b to pick up crew refuel and repair (And to make sure it doesn't spawn on hazards)
+/obj/effect/overmap/visitable/sector/virgo3b/Initialize()
+ . = ..()
+ for(var/obj/effect/overmap/visitable/ship/stellar_delight/sd in world)
+ sd.forceMove(loc, SOUTH)
+ return
+
+/obj/effect/overmap/visitable/sector/virgo3b/Crossed(var/atom/movable/AM)
+ . = ..()
+ announce_atc(AM,going = FALSE)
+
+/obj/effect/overmap/visitable/sector/virgo3b/Uncrossed(var/atom/movable/AM)
+ . = ..()
+ announce_atc(AM,going = TRUE)
+
+/obj/effect/overmap/visitable/sector/virgo3b/proc/announce_atc(var/atom/movable/AM, var/going = FALSE)
+ if(istype(AM, /obj/effect/overmap/visitable/ship/simplemob))
+ if(world.time < mob_announce_cooldown)
+ return
+ else
+ mob_announce_cooldown = world.time + 5 MINUTES
+ var/message = "Sensor contact for vessel '[AM.name]' has [going ? "left" : "entered"] ATC control area."
+ //For landables, we need to see if their shuttle is cloaked
+ if(istype(AM, /obj/effect/overmap/visitable/ship/landable))
+ var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew
+ var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle]
+ if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked
+ atc.msg(message)
+
+ //For ships, it's safe to assume they're big enough to not be sneaky
+ else if(istype(AM, /obj/effect/overmap/visitable/ship))
+ atc.msg(message)
+
+/obj/effect/overmap/visitable/sector/virgo3b/get_space_zlevels()
+ return list(Z_LEVEL_SPACE_ROCKS)
diff --git a/maps/stellar_delight/stellar_delight_shuttle_defs.dm b/maps/stellar_delight/stellar_delight_shuttle_defs.dm
index cbdf35b4f6..20550b2e9b 100644
--- a/maps/stellar_delight/stellar_delight_shuttle_defs.dm
+++ b/maps/stellar_delight/stellar_delight_shuttle_defs.dm
@@ -1,57 +1,5 @@
////////////////SHUTTLE TIME///////////////////
-//////////////////////////////////////////////////////////////
-// Escape shuttle and pods
-/datum/shuttle/autodock/ferry/emergency/escape
- name = "Escape"
- location = FERRY_LOCATION_OFFSITE
- shuttle_area = /area/shuttle/escape
- warmup_time = 10
- landmark_offsite = "escape_cc"
- landmark_station = "escape_station"
- landmark_transition = "escape_transit"
- move_time = SHUTTLE_TRANSIT_DURATION_RETURN
- move_direction = SOUTH
- docking_controller_tag = "escape_shuttle"
-
-/datum/shuttle/autodock/ferry/escape_pod/portescape
- name = "Port Escape Pod"
- location = FERRY_LOCATION_STATION
- shuttle_area = /area/stellardelight/deck2/portescape
- warmup_time = 0
- landmark_station = "port_ship_berth"
- landmark_offsite = "port_escape_cc"
- landmark_transition = "port_escape_transit"
- docking_controller_tag = "port_escape_pod"
- move_time = SHUTTLE_TRANSIT_DURATION_RETURN
- move_direction = EAST
-
-/datum/shuttle/autodock/ferry/escape_pod/starboardescape
- name = "Starboard Escape Pod"
- location = FERRY_LOCATION_STATION
- shuttle_area = /area/stellardelight/deck2/starboardescape
- warmup_time = 0
- landmark_station = "starboard_ship_berth"
- landmark_offsite = "starboard_escape_cc"
- landmark_transition = "starboard_escape_transit"
- docking_controller_tag = "starboard_escape_pod"
- move_time = SHUTTLE_TRANSIT_DURATION_RETURN
- move_direction = WEST
-
-
-//////////////////////////////////////////////////////////////
-// Supply shuttle
-/datum/shuttle/autodock/ferry/supply/cargo
- name = "Supply"
- location = FERRY_LOCATION_OFFSITE
- shuttle_area = /area/shuttle/supply
- warmup_time = 10
- landmark_offsite = "supply_cc"
- landmark_station = "supply_station"
- docking_controller_tag = "supply_shuttle"
- flags = SHUTTLE_FLAGS_PROCESS|SHUTTLE_FLAGS_SUPPLY
- move_direction = WEST
-
/////EXPLORATION SHUTTLE
// The shuttle's 'shuttle' computer
/obj/machinery/computer/shuttle_control/explore/stellardelight/exploration
@@ -67,17 +15,6 @@
base_turf = /turf/simulated/floor/reinforced
landmark_tag = "sd_explo"
docking_controller = "explodocker_bay"
- shuttle_type = /datum/shuttle/autodock/overmap/exboat
-
-// The 'shuttle'
-/datum/shuttle/autodock/overmap/exboat
- name = "Exploration Shuttle"
- current_location = "sd_explo"
- docking_controller_tag = "explodocker"
- shuttle_area = /area/stellardelight/deck1/exploshuttle
- fuel_consumption = 0
- defer_initialisation = TRUE
- range = 1
/////MINING SHUTTLE
// The shuttle's 'shuttle' computer
@@ -94,17 +31,6 @@
base_turf = /turf/simulated/floor/reinforced
landmark_tag = "sd_mining"
docking_controller = "miningdocker_bay"
- shuttle_type = /datum/shuttle/autodock/overmap/mineboat
-
-// The 'shuttle'
-/datum/shuttle/autodock/overmap/mineboat
- name = "Mining Shuttle"
- current_location = "sd_mining"
- docking_controller_tag = "miningdocker"
- shuttle_area = /area/stellardelight/deck1/miningshuttle
- fuel_consumption = 0
- defer_initialisation = TRUE
- range = 1
/////STARSTUFF/////
// The shuttle's 'shuttle' computer
@@ -128,15 +54,6 @@
base_turf = /turf/simulated/floor/reinforced/airless
landmark_tag = "port_shuttlepad"
docking_controller = "sd_port_landing"
- shuttle_type = /datum/shuttle/autodock/overmap/sdboat
-
-/datum/shuttle/autodock/overmap/sdboat
- name = "Starstuff"
- current_location = "port_shuttlepad"
- docking_controller_tag = "sdboat_docker"
- shuttle_area = list(/area/shuttle/sdboat/fore,/area/shuttle/sdboat/aft)
- fuel_consumption = 1
- defer_initialisation = TRUE
/area/shuttle/sdboat/fore
icon = 'icons/turf/areas_vr.dmi'
@@ -150,51 +67,6 @@
name = "Starstuff Crew Compartment"
requires_power = 1
-/////Virgo Flyer/////
-// The shuttle's 'shuttle' computer
-/obj/machinery/computer/shuttle_control/explore/ccboat
- name = "Virgo Flyer control console"
- shuttle_tag = "Virgo Flyer"
- req_one_access = list(access_pilot)
-
-/obj/effect/overmap/visitable/ship/landable/ccboat
- name = "NTV Virgo Flyer"
- desc = "A small shuttle from Central Command."
- vessel_mass = 1000
- vessel_size = SHIP_SIZE_TINY
- shuttle = "Virgo Flyer"
- known = TRUE
-
-// A shuttle lateloader landmark
-/obj/effect/shuttle_landmark/shuttle_initializer/ccboat
- name = "Central Command Shuttlepad"
- base_area = /area/shuttle/centcom/ccbay
- base_turf = /turf/simulated/floor/reinforced
- landmark_tag = "cc_shuttlepad"
- docking_controller = "cc_landing_pad"
- shuttle_type = /datum/shuttle/autodock/overmap/ccboat
-
-/datum/shuttle/autodock/overmap/ccboat
- name = "Virgo Flyer"
- current_location = "cc_shuttlepad"
- docking_controller_tag = "ccboat"
- shuttle_area = /area/shuttle/ccboat
- fuel_consumption = 0
- defer_initialisation = TRUE
-
-/area/shuttle/ccboat
- icon = 'icons/turf/areas_vr.dmi'
- icon_state = "yelwhitri"
- name = "Virgo Flyer"
- requires_power = 0
-
-/area/shuttle/centcom/ccbay
- icon = 'icons/turf/areas_vr.dmi'
- icon_state = "bluwhisqu"
- name = "Central Command Shuttle Bay"
- requires_power = 0
- dynamic_lighting = 0
-
/////LANDING LANDMARKS/////
/obj/effect/shuttle_landmark/premade/sd/deck1/portairlock
name = "Near Deck 1 Port Airlock"
@@ -231,65 +103,3 @@
/obj/item/paper/dockingcodes/sd
name = "Stellar Delight Docking Codes"
- codes_from_z = Z_LEVEL_SHIP_LOW
-
-/////FOR CENTCOMM (at least)/////
-/obj/effect/overmap/visitable/sector/virgo3b
- name = "Virgo 3B"
- desc = "Full of phoron, and home to the NSB Adephagia."
- scanner_desc = @{"[i]Registration[/i]: NSB Adephagia
-[i]Class[/i]: Installation
-[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
-[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
- known = TRUE
- in_space = TRUE
-
- icon = 'icons/obj/overmap_vr.dmi'
- icon_state = "virgo3b"
-
- skybox_icon = 'icons/skybox/virgo3b.dmi'
- skybox_icon_state = "small"
- skybox_pixel_x = 0
- skybox_pixel_y = 0
-
- initial_generic_waypoints = list("sr-c","sr-n","sr-s")
- initial_restricted_waypoints = list("Central Command Shuttlepad" = list("cc_shuttlepad"))
-
- extra_z_levels = list(Z_LEVEL_SPACE_ROCKS)
- var/mob_announce_cooldown = 0
-
-/////SD Starts at V3b to pick up crew refuel and repair (And to make sure it doesn't spawn on hazards)
-/obj/effect/overmap/visitable/sector/virgo3b/Initialize()
- . = ..()
- for(var/obj/effect/overmap/visitable/ship/stellar_delight/sd in world)
- sd.forceMove(loc, SOUTH)
- return
-
-/obj/effect/overmap/visitable/sector/virgo3b/Crossed(var/atom/movable/AM)
- . = ..()
- announce_atc(AM,going = FALSE)
-
-/obj/effect/overmap/visitable/sector/virgo3b/Uncrossed(var/atom/movable/AM)
- . = ..()
- announce_atc(AM,going = TRUE)
-
-/obj/effect/overmap/visitable/sector/virgo3b/proc/announce_atc(var/atom/movable/AM, var/going = FALSE)
- if(istype(AM, /obj/effect/overmap/visitable/ship/simplemob))
- if(world.time < mob_announce_cooldown)
- return
- else
- mob_announce_cooldown = world.time + 5 MINUTES
- var/message = "Sensor contact for vessel '[AM.name]' has [going ? "left" : "entered"] ATC control area."
- //For landables, we need to see if their shuttle is cloaked
- if(istype(AM, /obj/effect/overmap/visitable/ship/landable))
- var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew
- var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle]
- if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked
- atc.msg(message)
-
- //For ships, it's safe to assume they're big enough to not be sneaky
- else if(istype(AM, /obj/effect/overmap/visitable/ship))
- atc.msg(message)
-
-/obj/effect/overmap/visitable/sector/virgo3b/get_space_zlevels()
- return list(Z_LEVEL_SPACE_ROCKS)
diff --git a/maps/stellar_delight/stellar_delight_shuttles.dm b/maps/stellar_delight/stellar_delight_shuttles.dm
new file mode 100644
index 0000000000..d2f40b3308
--- /dev/null
+++ b/maps/stellar_delight/stellar_delight_shuttles.dm
@@ -0,0 +1,68 @@
+//////////////////////////////////////////////////////////////
+// Escape shuttle and pods
+/datum/shuttle/autodock/ferry/escape_pod/portescape
+ name = "Port Escape Pod"
+ location = FERRY_LOCATION_STATION
+ shuttle_area = /area/stellardelight/deck2/portescape
+ warmup_time = 0
+ landmark_station = "port_ship_berth"
+ landmark_offsite = "port_escape_cc"
+ landmark_transition = "port_escape_transit"
+ docking_controller_tag = "port_escape_pod"
+ move_time = SHUTTLE_TRANSIT_DURATION_RETURN
+ move_direction = EAST
+
+/datum/shuttle/autodock/ferry/escape_pod/starboardescape
+ name = "Starboard Escape Pod"
+ location = FERRY_LOCATION_STATION
+ shuttle_area = /area/stellardelight/deck2/starboardescape
+ warmup_time = 0
+ landmark_station = "starboard_ship_berth"
+ landmark_offsite = "starboard_escape_cc"
+ landmark_transition = "starboard_escape_transit"
+ docking_controller_tag = "starboard_escape_pod"
+ move_time = SHUTTLE_TRANSIT_DURATION_RETURN
+ move_direction = WEST
+
+/////EXPLORATION SHUTTLE
+/datum/shuttle/autodock/overmap/exboat
+ name = "Exploration Shuttle"
+ current_location = "sd_explo"
+ docking_controller_tag = "explodocker"
+ shuttle_area = /area/stellardelight/deck1/exploshuttle
+ fuel_consumption = 0
+ defer_initialisation = TRUE
+ range = 1
+
+/obj/effect/shuttle_landmark/shuttle_initializer/exploration/New(loc, ...)
+ shuttle_type = /datum/shuttle/autodock/overmap/exboat
+ ..()
+
+/datum/shuttle/autodock/overmap/mineboat
+ name = "Mining Shuttle"
+ current_location = "sd_mining"
+ docking_controller_tag = "miningdocker"
+ shuttle_area = /area/stellardelight/deck1/miningshuttle
+ fuel_consumption = 0
+ defer_initialisation = TRUE
+ range = 1
+
+/obj/effect/shuttle_landmark/shuttle_initializer/mining/New(loc, ...)
+ shuttle_type = /datum/shuttle/autodock/overmap/mineboat
+ ..()
+
+/datum/shuttle/autodock/overmap/sdboat
+ name = "Starstuff"
+ current_location = "port_shuttlepad"
+ docking_controller_tag = "sdboat_docker"
+ shuttle_area = list(/area/shuttle/sdboat/fore,/area/shuttle/sdboat/aft)
+ fuel_consumption = 1
+ defer_initialisation = TRUE
+
+/obj/effect/shuttle_landmark/shuttle_initializer/sdboat/New(loc, ...)
+ shuttle_type = /datum/shuttle/autodock/overmap/sdboat
+ ..()
+
+/obj/item/paper/dockingcodes/sd/New(newloc, text, title)
+ ..()
+ codes_from_z = Z_LEVEL_SHIP_LOW
diff --git a/maps/stellar_delight/stellar_delight_telecomm_defs.dm b/maps/stellar_delight/stellar_delight_telecomm_defs.dm
new file mode 100644
index 0000000000..e1aa4cb35a
--- /dev/null
+++ b/maps/stellar_delight/stellar_delight_telecomm_defs.dm
@@ -0,0 +1,57 @@
+// #### Hub ####
+/obj/machinery/telecomms/hub/preset/sd
+ id = "Hub"
+ network = "tcommsat"
+ autolinkers = list("hub",
+ "sd_relay", "c_relay", "m_relay", "r_relay",
+ "science", "medical", "supply", "service", "common", "command", "engineering", "security", "Away Team", "unused",
+ "hb_relay", "receiverA", "broadcasterA"
+ )
+
+/obj/machinery/telecomms/receiver/preset_right/sd
+ id = "sd_rx"
+ freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ, ENT_FREQ, EXP_FREQ)
+
+/obj/machinery/telecomms/broadcaster/preset_right/sd
+ id = "sd_tx"
+
+/obj/machinery/telecomms/bus/preset_two/sd
+ freq_listening = list(SUP_FREQ, SRV_FREQ, EXP_FREQ)
+
+/obj/machinery/telecomms/server/presets/service/sd
+ freq_listening = list(SRV_FREQ, EXP_FREQ)
+ autolinkers = list("service", "Away Team")
+
+// Telecommunications Satellite
+/area/sd/surfacebase/tcomms
+ name = "\improper Telecomms"
+ ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg')
+
+/area/sd/surfacebase/tcomms/entrance
+ name = "\improper Telecomms Teleporter"
+ icon_state = "tcomsatentrance"
+
+/area/sd/surfacebase/tcomms/foyer
+ name = "\improper Telecomms Foyer"
+ icon_state = "tcomsatfoyer"
+
+/area/sd/surfacebase/tcomms/storage
+ name = "\improper Telecomms Storage"
+ icon_state = "tcomsatwest"
+
+/area/sd/surfacebase/tcomms/computer
+ name = "\improper Telecomms Control Room"
+ icon_state = "tcomsatcomp"
+
+/area/sd/surfacebase/tcomms/chamber
+ name = "\improper Telecomms Central Compartment"
+ icon_state = "tcomsatcham"
+ flags = BLUE_SHIELDED
+
+/obj/item/bluespaceradio/sd_prelinked
+ name = "bluespace radio (Stellar Delight)"
+ handset = /obj/item/radio/bluespacehandset/linked/sd_prelinked
+
+/obj/item/radio/bluespacehandset/linked/sd_prelinked
+ bs_tx_preload_id = "sd_rx" //Transmit to a receiver
+ bs_rx_preload_id = "sd_tx" //Recveive from a transmitter
diff --git a/maps/stellar_delight/stellar_delight_telecomms.dm b/maps/stellar_delight/stellar_delight_telecomms.dm
index c9a73c6208..f42a045fd4 100644
--- a/maps/stellar_delight/stellar_delight_telecomms.dm
+++ b/maps/stellar_delight/stellar_delight_telecomms.dm
@@ -1,68 +1,10 @@
-// ### Preset machines ###
-
-
// #### Relays ####
// Telecomms doesn't know about connected z-levels, so we need relays even for the other surface levels.
-/obj/machinery/telecomms/relay/preset/station
+/obj/machinery/telecomms/relay/preset/station/New()
+ ..()
id = "SD Relay"
autolinkers = list("sd_relay")
-// #### Hub ####
-/obj/machinery/telecomms/hub/preset/sd
- id = "Hub"
- network = "tcommsat"
- autolinkers = list("hub",
- "sd_relay", "c_relay", "m_relay", "r_relay",
- "science", "medical", "supply", "service", "common", "command", "engineering", "security", "Away Team", "unused",
- "hb_relay", "receiverA", "broadcasterA"
- )
-
-/obj/machinery/telecomms/receiver/preset_right/sd
- id = "sd_rx"
- freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ, ENT_FREQ, EXP_FREQ)
-
-/obj/machinery/telecomms/broadcaster/preset_right/sd
- id = "sd_tx"
-
-/obj/machinery/telecomms/bus/preset_two/sd
- freq_listening = list(SUP_FREQ, SRV_FREQ, EXP_FREQ)
-
-/obj/machinery/telecomms/server/presets/service/sd
- freq_listening = list(SRV_FREQ, EXP_FREQ)
- autolinkers = list("service", "Away Team")
-
-// Telecommunications Satellite
-/area/sd/surfacebase/tcomms
- name = "\improper Telecomms"
- ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg')
-
-/area/sd/surfacebase/tcomms/entrance
- name = "\improper Telecomms Teleporter"
- icon_state = "tcomsatentrance"
-
-/area/sd/surfacebase/tcomms/foyer
- name = "\improper Telecomms Foyer"
- icon_state = "tcomsatfoyer"
-
-/area/sd/surfacebase/tcomms/storage
- name = "\improper Telecomms Storage"
- icon_state = "tcomsatwest"
-
-/area/sd/surfacebase/tcomms/computer
- name = "\improper Telecomms Control Room"
- icon_state = "tcomsatcomp"
-
-/area/sd/surfacebase/tcomms/chamber
- name = "\improper Telecomms Central Compartment"
- icon_state = "tcomsatcham"
- flags = BLUE_SHIELDED
-
-/area/maintenance/substation/tcomms
- name = "\improper Telecomms Substation"
-
-/area/maintenance/station/tcomms
- name = "\improper Telecoms Maintenance"
-
/datum/map/sd/default_internal_channels()
return list(
num2text(PUB_FREQ) = list(),
@@ -81,18 +23,8 @@
num2text(EXP_FREQ) = list(access_explorer)
)
-/obj/item/multitool/station_buffered
- name = "pre-linked multitool (sd hub)"
- desc = "This multitool has already been linked to the SD telecomms hub and can be used to configure one (1) relay."
-
/obj/item/multitool/station_buffered/Initialize()
. = ..()
+ name = "pre-linked multitool (sd hub)"
+ desc = "This multitool has already been linked to the SD telecomms hub and can be used to configure one (1) relay."
buffer = locate(/obj/machinery/telecomms/hub/preset/sd)
-
-/obj/item/bluespaceradio/sd_prelinked
- name = "bluespace radio (Stellar Delight)"
- handset = /obj/item/radio/bluespacehandset/linked/sd_prelinked
-
-/obj/item/radio/bluespacehandset/linked/sd_prelinked
- bs_tx_preload_id = "sd_rx" //Transmit to a receiver
- bs_rx_preload_id = "sd_tx" //Recveive from a transmitter
diff --git a/maps/stellar_delight/stellar_delight_things.dm b/maps/stellar_delight/stellar_delight_things.dm
index d1fcaa2185..07db6eba33 100644
--- a/maps/stellar_delight/stellar_delight_things.dm
+++ b/maps/stellar_delight/stellar_delight_things.dm
@@ -1,180 +1,3 @@
-/obj/machinery/camera/network/halls
- network = list(NETWORK_HALLS)
-
-/area/tether/surfacebase/tram
- name = "\improper Tram Station"
- icon_state = "dk_yellow"
-
-/turf/simulated/floor/maglev
- name = "maglev track"
- desc = "Magnetic levitation tram tracks. Caution! Electrified!"
- icon = 'icons/turf/flooring/maglevs.dmi'
- icon_state = "maglevup"
- can_be_plated = FALSE
-
- var/area/shock_area = /area/tether/surfacebase/tram
-
-/turf/simulated/floor/maglev/Initialize()
- . = ..()
- shock_area = locate(shock_area)
-
-// Walking on maglev tracks will shock you! Horray!
-/turf/simulated/floor/maglev/Entered(var/atom/movable/AM, var/atom/old_loc)
- if(isliving(AM) && !(AM.is_incorporeal()) && prob(50))
- track_zap(AM)
-/turf/simulated/floor/maglev/attack_hand(var/mob/user)
- if(prob(75))
- track_zap(user)
-/turf/simulated/floor/maglev/proc/track_zap(var/mob/living/user)
- if (!istype(user)) return
- if (electrocute_mob(user, shock_area, src))
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(5, 1, src)
- s.start()
-
-
-/obj/item/paper/sdshield
- name = "ABOUT THE SHIELD GENERATOR"
- info = "ABOUT THE SHIELD GENERATOR
If you're up here you are more than likely worried about hitting rocks or some other such thing. It is good to worry about such things as that is an inevitability.
The Stellar Delight is a rather compact vessel, so a setting of 55 to the range will just barely cover her aft.
It is recommended that you turn off all of the different protection types except multi dimensional warp and whatever it is you're worried about running into. (probably meteors (hyperkinetic)).
With only those two and all the other default settings, the shield uses more than 6 MW to run, which is more than the ship can ordinarily produce. AS SUCH, it is also recommended that you reduce the input cap to whatever you find reasonable (being as it defaults to 1 MW, which is the entirety of the stock power supply) and activate and configure the shield BEFORE you need it.
The shield takes some time to expand its range to the desired specifications, and on top of that, under the default low power setting, takes around 40 seconds to spool up. Once it is active, the fully charged internal capacitors will last for a few minutes before depleting fully. You can increase the passive energy use to decrease the spool up time, but it also uses the stored energy much faster, so, that is not recommended except in dire emergencies.
So, this shield is not intended to be run indefinitely, unless you seriously beef up the ship's engine and power supply.
Fortunately, if you've got a good pilot, you shouldn't really need the shield generator except in rare cases and only for short distances. Still, it is a good idea to configure the shield to be ready before you need it.
Good luck out there - Budly Gregington"
-
-/obj/item/book/manual/sd_guide
- name = "Stellar Delight User's Guide"
- icon = 'icons/obj/library.dmi'
- icon_state ="newscodex"
- item_state = "newscodex"
- author = "Central Command" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
- title = "Stellar Delight User's Guide"
-
-/obj/item/book/manual/sd_guide/New()
- ..()
- dat = {"
-
-
-
-
-
- Stellar Delight Operations
-
- Welcome to the Stellar Delight! Before you get started there are a few things you ought to know.
-
- The Stellar Delight is a Nanotrasen response vessel operating in the Virgo-Erigone system. It's primary duty is in answering calls for help, investigating anomalies in space around the system, and generally responding to requests from Central Command or whoever else needs the services the vessel can provide. It has fully functioning security, medical, and research facilities, as well as a host of civillian facilities, in addition to the standard things one might expect to find on such a ship. That is to say, the ship doesn't have a highly defined specialization, it is just as capable as a small space station might be.
-
- Notably though, there are some research facilities that are not safe to carry around. There is a refurbished Aerostat that has been set up over Virgo 2 that posesses a number of different, more dangerous research facilities. The command staff of this vessel has access to its docking codes in their offices.
-
- Mining and Exploration will probably also want to disembark to do their respective duties.
-
- The ship is ordinarily protected from many space hazards by an array of point defense turrets, however, it should be noted that this defense network is not infallible. If the ship encounters a dangerous environment, occasionally hazardous material may slip past the network and damage the ship.
-
- Before Moving the Ship
-
- The ship requires power to fuel and run its engines and sensors. While there may be some charge in the ship at the start of the shift, it is HIGHLY RECOMMENDED that the engine be started before attempting to move the ship. If any of the components responsible for moving the ship lose power (including but not limited to the helm control console and the thrusters), then you will be incapable of adjusting the ship's speed or heading until the problem is resolved.
-
- Additionally, the shield generator should be configured before the ship moves, as it takes time to calibrate before it can be activated. The shield should not be run indefinitely however, as it uses more power than the ship ordinarily generates. You can however activate it for a short time if you know that you need to proceed through a dangerous reigon of space. For more information, see the configuration guide sheet in the shield control room on deck 3, aft of the Command Office section.
-
- Starting and Moving the Ship
-
- The ship can of course move around on its own, but a few steps need to/should be taken before you can do so.
-
- -FIRST. You should appoint a pilot. If there isn't a pilot, or the pilot isn't responding, you should fax for a pilot. If no pilots respond to the fax within a reasonable timeframe, then, if you are qualified to fly Nanotrasen spacecraft you may fly the ship. Appointing a pilot to the bridge however should always be done even if you know how to fly and have access to the helm control console. Refusing to attempt to appoint a pilot and just flying the ship yourself can be grounds for demotion to pilot.
-
- -SECOND. In order for the ship to move one must start the engines. The ship's fuel pump in Atmospherics must be turned on and configured. Atmospheric technicians may elect to modify the fuel mix to help the ship go faster or make the fuel last longer. Either way, once the fuel pump is on, you may use the engine control console on the bridge to activate the engines.
-
- Once these steps have been taken, the helm control console should respond to input commands from the pilot.
-
- Disembarking
-
- Being a response vessel, the Stellar Delight has 3 shuttles in total.
-
- The mining and exploration shuttles are located in the aft of deck 1 between their respective departments. Both of these shuttles are short jump shuttles, meaning, they are not suitable for more than ferrying people back and forth between the ship and the present destination. They do have a small range that they can traverse in their bluespace hops, but they must be within one 'grid square' of a suitable landing site to jump. As such, it is recommended that you avoid flying away from wherever either of these shuttles are without establishing a flight plan with the away teams to indicate a time of returning. In cases where the mining team and the exploration team want to go to different places, it may be necessary to fly from one location to the other now and then to facilitate both operations. However, it is recommended that exploration and mining be encouraged to enter the same operations areas, as the mining team is poorly armed, and the exploration team is ideally equipped for offsite defense and support of ship personnel.
-
- There is also the Starstuff, a long range capable shuttle which is ordinarily docked on the port landing pad of deck 3. This shuttle is meant for general crew transport, but does require a pilot to be flown.
-
- In cases where the shuttles will be docking with another facility, such as the Science outpost on the Virgo 2 Aerostat, docking codes may be required in order to be accessed. Anywhere requiring such codes will need to have them entered into the given shuttle's short jump console. It is recommended that anyone operating such a shuttle take note of the Stellar Delight's docking codes, as they will need them to dock with the ship. Any Nanotrasen owned facility that requires them that your ship has authorization to access will have the codes stored in the Command Offices.
-
- A final note on disembarking. While it may not necessarily be their job to do so, it is highly encouraged for the Command staff to attempt to involve volunteers in off ship operations as necessary. Just make sure to let let it be known what kind of operation is happening when you ask. This being a response ship, it is very good to get as much help to handle whatever the issue is as thoroughly as possible.
-
- All that said, have a safe trip. - Central Command Officer Alyssa Trems
-
- "}
-
-// ### Wall Machines On Full Windows ###
-// To make sure wall-mounted machines placed on full-tile windows are clickable they must be above the window
-//
-/obj/item/radio/intercom
- layer = ABOVE_WINDOW_LAYER
-/obj/item/storage/secure/safe
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/airlock_sensor
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/alarm
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/button
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/access_button
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/computer/guestpass
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/computer/security/telescreen
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/door_timer
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/embedded_controller
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/firealarm
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/flasher
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/keycard_auth
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/light_switch
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/mineral/processing_unit_console
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/mineral/stacking_unit_console
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/newscaster
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/power/apc
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/requests_console
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/status_display
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/vending/wallmed1
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/vending/wallmed2
- layer = ABOVE_WINDOW_LAYER
-/obj/structure/fireaxecabinet
- layer = ABOVE_WINDOW_LAYER
-/obj/structure/extinguisher_cabinet
- layer = ABOVE_WINDOW_LAYER
-/obj/structure/mirror
- layer = ABOVE_WINDOW_LAYER
-/obj/structure/noticeboard
- layer = ABOVE_WINDOW_LAYER
-
-/obj/item/multitool/scioutpost
- name = "science outpost linked multitool"
- desc = "It has the data for the science outpost's quantum pad pre-loaded... assuming you didn't override it."
-
-/obj/item/multitool/scioutpost/Initialize()
- . = ..()
- for(var/obj/machinery/power/quantumpad/scioutpost/outpost in world)
- connectable = outpost
- if(connectable)
- icon_state = "multitool_red"
- return
-
-/obj/machinery/power/quantumpad/scioutpost
-
/datum/random_map/noise/ore/virgo2 // Less OP generation map, but better than Underdark
deep_val = 0.7
- rare_val = 0.5
\ No newline at end of file
+ rare_val = 0.5
diff --git a/maps/stellar_delight/stellar_delight_turfs.dm b/maps/stellar_delight/stellar_delight_turfs.dm
index 8a5454d18e..6cc9c7f882 100644
--- a/maps/stellar_delight/stellar_delight_turfs.dm
+++ b/maps/stellar_delight/stellar_delight_turfs.dm
@@ -1,51 +1,3 @@
-/turf/unsimulated/mineral/virgo3b
- blocks_air = TRUE
-
-/turf/unsimulated/floor/steel
- icon = 'icons/turf/flooring/tiles_vr.dmi'
- icon_state = "steel"
-
-// Some turfs to make floors look better in centcom tram station.
-
-/turf/unsimulated/floor/techfloor_grid
- name = "floor"
- icon = 'icons/turf/flooring/techfloor.dmi'
- icon_state = "techfloor_grid"
-
-/turf/unsimulated/floor/maglev
- name = "maglev track"
- desc = "Magnetic levitation tram tracks. Caution! Electrified!"
- icon = 'icons/turf/flooring/maglevs.dmi'
- icon_state = "maglevup"
-
-/turf/unsimulated/wall/transit
- icon = 'icons/turf/transit_vr.dmi'
-
-/turf/unsimulated/floor/transit
- icon = 'icons/turf/transit_vr.dmi'
-
-/obj/effect/floor_decal/transit/orange
- icon = 'icons/turf/transit_vr.dmi'
- icon_state = "transit_techfloororange_edges"
-
-/obj/effect/transit/light
- icon = 'icons/turf/transit_128.dmi'
- icon_state = "tube1-2"
-
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/grass/sif)
-/turf/simulated/floor/outdoors/grass/sif
- turf_layers = list(
- /turf/simulated/floor/outdoors/rocks/virgo3b,
- /turf/simulated/floor/outdoors/dirt/virgo3b
- )
-
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/dirt)
-/turf/simulated/floor/outdoors/dirt/virgo3b
- icon = 'icons/turf/flooring/asteroid.dmi'
- icon_state = "asteroid"
-
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/rocks)
-
/turf/simulated/mineral/virgo2/make_ore(var/rare_ore) // Override V2 ore generation
if(mineral || ignore_mapgen)
return
diff --git a/maps/submaps/admin_use_vr/mercship.dm b/maps/submaps/admin_use_vr/mercship.dm
index 07596f2794..8706c9883a 100644
--- a/maps/submaps/admin_use_vr/mercship.dm
+++ b/maps/submaps/admin_use_vr/mercship.dm
@@ -1,6 +1,6 @@
// Compile in the map for CI testing if we're testing compileability of all the maps
#ifdef MAP_TEST
-#include "mercship.dmm"
+#include "kk_mercship.dmm"
#endif
diff --git a/maps/submaps/pois_vr/aerostat/virgo2.dm b/maps/submaps/pois_vr/aerostat/virgo2.dm
index 5362035b65..17608406f1 100644
--- a/maps/submaps/pois_vr/aerostat/virgo2.dm
+++ b/maps/submaps/pois_vr/aerostat/virgo2.dm
@@ -30,11 +30,6 @@
#include "SamplePocket.dmm"
#endif
-/datum/map_template/virgo2
- name = "Surface Content - Virgo 2"
- desc = "For seeding submaps on Virgo 2"
- allow_duplicates = FALSE
-
/datum/map_template/virgo2/Flake
name = "Forest Lake"
desc = "A serene lake sitting amidst the surface."
diff --git a/maps/submaps/space_rocks/space_rocks.dm b/maps/submaps/space_rocks/space_rocks.dm
index e3df6374f3..e08b992631 100644
--- a/maps/submaps/space_rocks/space_rocks.dm
+++ b/maps/submaps/space_rocks/space_rocks.dm
@@ -1,5 +1,4 @@
#include "space_rocks_pois.dm"
-#include "space_rocks_stuff.dm"
/turf/simulated/mineral/vacuum/sdmine/make_ore(var/rare_ore)
if(mineral)
@@ -35,17 +34,6 @@
UpdateMineral()
update_icon()
-/area/sdmine
- ambience = list('sound/ambience/ambimine.ogg', 'sound/ambience/song_game.ogg')
- base_turf = /turf/simulated/mineral/floor/vacuum
-/area/sdmine/unexplored
- name = "asteroid field"
- icon_state = "unexplored"
-/area/sdmine/explored
- name = "asteroid field"
- icon_state = "explored"
-
-
/obj/effect/overmap/visitable/sector/virgo3b/generate_skybox(zlevel)
var/static/image/smallone = image(icon = 'icons/skybox/virgo3b.dmi', icon_state = "small")
diff --git a/maps/submaps/space_rocks/space_rocks_pois.dm b/maps/submaps/space_rocks/space_rocks_pois.dm
index 96862ef39a..671780324a 100644
--- a/maps/submaps/space_rocks/space_rocks_pois.dm
+++ b/maps/submaps/space_rocks/space_rocks_pois.dm
@@ -10,85 +10,54 @@
#include "tunnel2.dmm"
#endif
-/area/submap/space_rocks
- name = "POI - Space Rocks"
- ambience = AMBIENCE_FOREBODING
-
-/area/submap/space_rocks/bittynest1
- name = "POI - Bittynest1"
-
/datum/map_template/space_rocks/bittynest1
name = "Bittynest1"
desc = "A smol nest for smol badguys"
mappath = "maps/submaps/space_rocks/bittynest1.dmm"
cost = 5
-/area/submap/space_rocks/bittynest2
- name = "POI - Bittynest2"
-
/datum/map_template/space_rocks/bittynest2
name = "Bittynest2"
desc = "A smol nest for smol badguys"
mappath = "maps/submaps/space_rocks/bittynest2.dmm"
cost = 5
-/area/submap/space_rocks/bittynest3
- name = "POI - Bittynest3"
-
/datum/map_template/space_rocks/bittynest3
name = "Bittynest3"
desc = "A smol nest for smol badguys"
mappath = "maps/submaps/space_rocks/bittynest3.dmm"
cost = 5
-/area/submap/space_rocks/bittynest4
- name = "POI - Bittynest4"
-
/datum/map_template/space_rocks/bittynest4
name = "Bittynest4"
desc = "A smol nest for smol badguys"
mappath = "maps/submaps/space_rocks/bittynest4.dmm"
cost = 5
-/area/submap/space_rocks/tunnel1
- name = "POI - Tunnel1"
-
/datum/map_template/space_rocks/tunnel1
name = "Tunnel1"
desc = "A tunnel left behind!"
mappath = "maps/submaps/space_rocks/tunnel1.dmm"
cost = 10
-/area/submap/space_rocks/tunnel2
- name = "POI - Tunnel2"
-
/datum/map_template/space_rocks/tunnel2
name = "Tunnel2"
desc = "A tunnel left behind!"
mappath = "maps/submaps/space_rocks/tunnel2.dmm"
cost = 10
-/area/submap/space_rocks/spacecrystals
- name = "POI - Space Crystals"
-
/datum/map_template/space_rocks/tunnel2
name = "Space Crystals"
desc = "Some crystals living in space!"
mappath = "maps/submaps/space_rocks/spacecrystals.dmm"
cost = 10
-/area/submap/space_rocks/clearing
- name = "POI - Clearing"
-
/datum/map_template/space_rocks/clearing
name = "Clearing"
desc = "A clear spot for mischief to happen."
mappath = "maps/submaps/space_rocks/clearing.dmm"
cost = 10
-/area/submap/space_rocks/seventemple
- name = "POI - Temple of the Seven"
-
/datum/map_template/space_rocks/seventemple
name = "Temple of the Seven"
desc = "A mysterious space!"
diff --git a/maps/submaps/surface_submaps/plains/plains_turfs.dm b/maps/submaps/surface_submaps/plains/plains_turfs.dm
index 9833832306..0949581b0e 100644
--- a/maps/submaps/surface_submaps/plains/plains_turfs.dm
+++ b/maps/submaps/surface_submaps/plains/plains_turfs.dm
@@ -1,4 +1,3 @@
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/rocks)
VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/mud)
VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/snow)
VIRGO3B_TURF_CREATE(/turf/simulated/floor/water)
@@ -15,4 +14,4 @@ VIRGO3B_TURF_CREATE(/turf/simulated/floor/tiled/old_tile/green)
VIRGO3B_TURF_CREATE(/turf/simulated/floor/tiled/old_tile/white)
VIRGO3B_TURF_CREATE(/turf/simulated/floor/tiled)
VIRGO3B_TURF_CREATE(/turf/simulated/floor/carpet/turcarpet)
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/greengrid)
\ No newline at end of file
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/greengrid)
diff --git a/maps/tether/tether.dm b/maps/tether/tether.dm
index 0260a859f3..33bbfa8da5 100644
--- a/maps/tether/tether.dm
+++ b/maps/tether/tether.dm
@@ -3,14 +3,9 @@
#include "tether_defines.dm"
#include "tether_turfs.dm"
#include "tether_things.dm"
- #include "tether_phoronlock.dm"
- #include "tether_areas.dm"
- #include "tether_shuttle_defs.dm"
#include "tether_shuttles.dm"
#include "tether_telecomms.dm"
- #include "tether_jobs.dm"
#include "tether_events.dm"
- #include "../offmap_vr/common_offmaps.dm"
#ifndef AWAY_MISSION_TEST //Don't include these for just testing away missions
#include "tether-01-surface1.dmm"
diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm
index ae5721cb30..1222164edf 100644
--- a/maps/tether/tether_defines.dm
+++ b/maps/tether/tether_defines.dm
@@ -1,34 +1,3 @@
-//Normal map defs
-#define Z_LEVEL_SURFACE_LOW 1
-#define Z_LEVEL_SURFACE_MID 2
-#define Z_LEVEL_SURFACE_HIGH 3
-#define Z_LEVEL_TRANSIT 4
-#define Z_LEVEL_SPACE_LOW 5
-#define Z_LEVEL_SURFACE_MINE 6
-#define Z_LEVEL_SOLARS 7
-#define Z_LEVEL_CENTCOM 8
-#define Z_LEVEL_MISC 9
-#define Z_LEVEL_UNDERDARK 10
-#define Z_LEVEL_PLAINS 11
-#define Z_LEVEL_OFFMAP1 12
-//#define Z_LEVEL_OFFMAP2 12
-#define Z_LEVEL_ROGUEMINE_1 13
-#define Z_LEVEL_ROGUEMINE_2 14
-#define Z_LEVEL_BEACH 15
-#define Z_LEVEL_BEACH_CAVE 16
-#define Z_LEVEL_AEROSTAT 17
-#define Z_LEVEL_AEROSTAT_SURFACE 18
-#define Z_LEVEL_DEBRISFIELD 19
-#define Z_LEVEL_FUELDEPOT 20
-#define Z_LEVEL_GATEWAY 21
-#define Z_LEVEL_OM_ADVENTURE 22
-#define Z_LEVEL_REDGATE 23
-
-
-//Camera networks
-#define NETWORK_TETHER "Tether"
-#define NETWORK_OUTSIDE "Outside"
-
/datum/map/tether/New()
..()
var/choice = pickweight(list(
@@ -278,22 +247,8 @@
// Overmap represetation of tether
/obj/effect/overmap/visitable/sector/virgo3b
- name = "Virgo 3B"
- desc = "Full of phoron, and home to the NSB Adephagia, where you can dock and refuel your craft."
- scanner_desc = @{"[i]Registration[/i]: NSB Adephagia
-[i]Class[/i]: Installation
-[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
-[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
base = 1
- icon = 'icons/obj/overmap_vr.dmi'
- icon_state = "virgo3b"
-
- skybox_icon = 'icons/skybox/virgo3b.dmi'
- skybox_icon_state = "small"
- skybox_pixel_x = 0
- skybox_pixel_y = 0
-
initial_generic_waypoints = list(
"tether_dockarm_d1a1", //Bottom left,
"tether_dockarm_d1a2", //Top left,
@@ -319,7 +274,6 @@
)
levels_for_distress = list(Z_LEVEL_OFFMAP1, Z_LEVEL_BEACH, Z_LEVEL_AEROSTAT, Z_LEVEL_DEBRISFIELD, Z_LEVEL_FUELDEPOT)
- var/mob_announce_cooldown = 0
/obj/effect/overmap/visitable/sector/virgo3b/Crossed(var/atom/movable/AM)
. = ..()
diff --git a/maps/tether/tether_shuttle_defs.dm b/maps/tether/tether_shuttle_defs.dm
index ab9c7929fe..f1889bad87 100644
--- a/maps/tether/tether_shuttle_defs.dm
+++ b/maps/tether/tether_shuttle_defs.dm
@@ -1,270 +1,103 @@
-//////////////////////////////////////////////////////////////
-// Escape shuttle and pods
-/datum/shuttle/autodock/ferry/emergency/escape
- name = "Escape"
- location = FERRY_LOCATION_OFFSITE
- shuttle_area = /area/shuttle/escape
- warmup_time = 10
- landmark_offsite = "escape_cc"
- landmark_station = "escape_station"
- landmark_transition = "escape_transit"
- move_time = SHUTTLE_TRANSIT_DURATION_RETURN
- move_direction = NORTH
+////////////////////////////////////////
+// Tether custom shuttle implemnetations
+////////////////////////////////////////
-//////////////////////////////////////////////////////////////
-/datum/shuttle/autodock/ferry/escape_pod/large_escape_pod1
- name = "Large Escape Pod 1"
- location = FERRY_LOCATION_STATION
- shuttle_area = /area/shuttle/large_escape_pod1
- warmup_time = 0
- landmark_station = "escapepod1_station"
- landmark_offsite = "escapepod1_cc"
- landmark_transition = "escapepod1_transit"
- docking_controller_tag = "large_escape_pod_1"
- move_time = SHUTTLE_TRANSIT_DURATION_RETURN
- move_direction = EAST
+/obj/machinery/computer/shuttle_control/tether_backup
+ name = "tether backup shuttle control console"
+ shuttle_tag = "Tether Backup"
+ req_one_access = list()
+ ai_control = TRUE
-//////////////////////////////////////////////////////////////
-// Supply shuttle
-/datum/shuttle/autodock/ferry/supply/cargo
- name = "Supply"
- location = FERRY_LOCATION_OFFSITE
- shuttle_area = /area/shuttle/supply
- warmup_time = 10
- landmark_offsite = "supply_cc"
- landmark_station = "supply_station"
- docking_controller_tag = "supply_shuttle"
- flags = SHUTTLE_FLAGS_PROCESS|SHUTTLE_FLAGS_SUPPLY
- move_direction = NORTH
+/obj/machinery/computer/shuttle_control/multi/mercenary
+ name = "vessel control console"
+ shuttle_tag = "Mercenary"
+ req_one_access = list(access_syndicate)
-//////////////////////////////////////////////////////////////
-// Trade Ship
-/datum/shuttle/autodock/multi/trade
- name = "Trade"
- current_location = "trade_dock"
- shuttle_area = /area/shuttle/trade
- docking_controller_tag = "trade_shuttle"
- warmup_time = 10 //want some warmup time so people can cancel.
- destination_tags = list(
- "trade_dock",
- "tether_dockarm_d1l",
- "aerostat_south",
- "beach_e",
- "beach_c",
- "beach_nw"
- )
- defer_initialisation = TRUE
- move_direction = WEST
+/obj/machinery/computer/shuttle_control/multi/ninja
+ name = "vessel control console"
+ shuttle_tag = "Ninja"
+ //req_one_access = list()
-//////////////////////////////////////////////////////////////
-// Tether Shuttle
-/datum/shuttle/autodock/ferry/tether_backup
- name = "Tether Backup"
- location = FERRY_LOCATION_OFFSITE //Offsite is the surface hangar
- warmup_time = 5
- move_time = 5
- landmark_offsite = "tether_backup_low"
- landmark_station = "tether_dockarm_d1a3"
- landmark_transition = "tether_backup_transit"
- shuttle_area = /area/shuttle/tether
- //crash_areas = list(/area/shuttle/tether/crash1, /area/shuttle/tether/crash2)
- docking_controller_tag = "tether_shuttle"
- move_direction = NORTH
+/obj/machinery/computer/shuttle_control/multi/specops
+ name = "vessel control console"
+ shuttle_tag = "NDV Phantom"
+ req_one_access = list(access_cent_specops)
-//////////////////////////////////////////////////////////////
-// Mercenary Shuttle
-/datum/shuttle/autodock/multi/mercenary
- name = "Mercenary"
- warmup_time = 8
- move_time = 60
- current_location = "merc_base"
- shuttle_area = /area/shuttle/mercenary
- destination_tags = list(
- "merc_base",
- "aerostat_south",
- "beach_e",
- "beach_nw",
- "tether_solars_ne",
- "tether_solars_sw",
- "tether_mine_nw",
- "tether_space_NE",
- "tether_space_SE",
- "tether_space_SW",
- "tether_dockarm_d2l" //End of right docking arm
- )
- docking_controller_tag = "merc_shuttle"
- announcer = "Automated Traffic Control"
- arrival_message = "Attention. An unregistered vessel is approaching Virgo-3B."
- departure_message = "Attention. A unregistered vessel is now leaving Virgo-3B."
- defer_initialisation = TRUE
- move_direction = WEST
+/obj/machinery/computer/shuttle_control/multi/trade
+ name = "vessel control console"
+ shuttle_tag = "Trade"
+ req_one_access = list(access_trader)
-//////////////////////////////////////////////////////////////
-// Ninja Shuttle
-/datum/shuttle/autodock/multi/ninja
- name = "Ninja"
- warmup_time = 8
- move_time = 60
- can_cloak = TRUE
- cloaked = TRUE
- current_location = "ninja_base"
- landmark_transition = "ninja_transit"
- shuttle_area = /area/shuttle/ninja
- destination_tags = list(
- "ninja_base",
- "aerostat_northeast",
- "beach_e",
- "beach_nw",
- "tether_solars_ne",
- "tether_solars_sw",
- "tether_mine_nw",
- "tether_space_NE",
- "tether_space_SE",
- "tether_space_SW",
- "tether_dockarm_d1a3" //Inside of left dockarm
- )
- docking_controller_tag = "ninja_shuttle"
- announcer = "Automated Traffic Control"
- arrival_message = "Attention. An unregistered vessel is approaching Virgo-3B."
- departure_message = "Attention. A unregistered vessel is now leaving Virgo-3B."
- defer_initialisation = TRUE
- move_direction = NORTH
+/obj/machinery/computer/shuttle_control/surface_mining_outpost
+ name = "surface mining outpost shuttle control console"
+ shuttle_tag = "Mining Outpost"
+ req_one_access = list(access_mining)
+ ai_control = TRUE
-//////////////////////////////////////////////////////////////
-// Skipjack
-/datum/shuttle/autodock/multi/heist
- name = "Skipjack"
- warmup_time = 8
- move_time = 60
- can_cloak = TRUE
- cloaked = TRUE
- current_location = "skipjack_base"
- landmark_transition = "skipjack_transit"
- shuttle_area = /area/shuttle/skipjack
- destination_tags = list(
- "skipjack_base",
- "aerostat_south",
- "beach_e",
- "beach_nw",
- "tether_solars_ne",
- "tether_solars_sw",
- "tether_mine_nw",
- "tether_space_NE",
- "tether_space_SE",
- "tether_space_SW",
- "tether_dockarm_d1l" //End of left dockarm
- )
- //docking_controller_tag = ??? doesn't have one?
- announcer = "Automated Traffic Control"
- arrival_message = "Attention. An unregistered vessel is approaching Virgo-3B."
- departure_message = "Attention. A unregistered vessel is now leaving Virgo-3B."
- defer_initialisation = TRUE
- move_direction = NORTH
+////////////////////////////////////////
+//////// Excursion Shuttle /////////////
+////////////////////////////////////////
+// The 'ship' of the excursion shuttle
+/obj/effect/overmap/visitable/ship/landable/excursion
+ name = "Excursion Shuttle"
+ desc = "The traditional Excursion Shuttle. NT Approved!"
+ icon_state = "htu_destroyer_g"
+ vessel_mass = 8000
+ vessel_size = SHIP_SIZE_SMALL
+ shuttle = "Excursion Shuttle"
-//////////////////////////////////////////////////////////////
-// ERT Shuttle
-/datum/shuttle/autodock/multi/specialops
- name = "NDV Phantom"
- can_cloak = TRUE
- cloaked = FALSE
- warmup_time = 8
- move_time = 60
- current_location = "specops_base"
- landmark_transition = "specops_transit"
- shuttle_area = /area/shuttle/specops/centcom
- destination_tags = list(
- "specops_base",
- "aerostat_south",
- "beach_e",
- "beach_nw",
- "tether_solars_ne",
- "tether_solars_sw",
- "tether_mine_nw",
- "tether_space_NE",
- "tether_space_SE",
- "tether_space_SW",
- "tether_dockarm_d1l" //End of left dockarm
- )
- docking_controller_tag = "ert1_control"
- announcer = "Automated Traffic Control"
- arrival_message = "Attention. An NT support vessel is approaching Virgo-3B."
- departure_message = "Attention. A NT support vessel is now leaving Virgo-3B."
- defer_initialisation = TRUE
- move_direction = WEST
-
-//////////////////////////////////////////////////////////////
-// RogueMiner "Belter: Shuttle
-
-/datum/shuttle/autodock/ferry/belter
- name = "Belter"
- location = FERRY_LOCATION_STATION
- warmup_time = 5
- move_time = 30
- shuttle_area = /area/shuttle/belter
- landmark_station = "belter_station"
- landmark_offsite = "belter_zone1"
- landmark_transition = "belter_transit"
- docking_controller_tag = "belter_docking"
- move_direction = EAST
-
-/datum/shuttle/autodock/ferry/belter/New()
- move_time = move_time + rand(-5 SECONDS, 5 SECONDS)
- ..()
-
-//////////////////////////////////////////////////////////////
-// Surface Mining Outpost Shuttle
-
-/datum/shuttle/autodock/ferry/surface_mining_outpost
- name = "Mining Outpost"
- location = FERRY_LOCATION_STATION
- warmup_time = 5
- shuttle_area = /area/shuttle/mining_outpost
- landmark_station = "mining_station"
- landmark_offsite = "mining_outpost"
- docking_controller_tag = "mining_docking"
- move_direction = NORTH
-
-/////Virgo Flyer/////
-// The shuttle's 'shuttle' computer
-/obj/machinery/computer/shuttle_control/explore/ccboat
- name = "Virgo Flyer control console"
- shuttle_tag = "Virgo Flyer"
+/obj/machinery/computer/shuttle_control/explore/excursion
+ name = "short jump console"
+ shuttle_tag = "Excursion Shuttle"
req_one_access = list(access_pilot)
-/obj/effect/overmap/visitable/ship/landable/ccboat
- name = "NTV Virgo Flyer"
- desc = "A small shuttle from Central Command."
- vessel_mass = 1000
- vessel_size = SHIP_SIZE_TINY
- shuttle = "Virgo Flyer"
- known = TRUE
+////////////////////////////////////////
+//////// Tour Bus /////////////
+////////////////////////////////////////
+// The 'ship' of the excursion shuttle
+/obj/effect/overmap/visitable/ship/landable/tourbus
+ name = "Tour Bus"
+ desc = "A small 'space bus', if you will."
+ icon_state = "htu_frigate_g"
+ vessel_mass = 2000
+ vessel_size = SHIP_SIZE_SMALL
+ shuttle = "Tour Bus"
-// A shuttle lateloader landmark
-/obj/effect/shuttle_landmark/shuttle_initializer/ccboat
- name = "Central Command Shuttlepad"
- base_area = /area/shuttle/centcom/ccbay
- base_turf = /turf/simulated/floor/reinforced
- landmark_tag = "cc_shuttlepad"
- docking_controller = "cc_landing_pad"
- shuttle_type = /datum/shuttle/autodock/overmap/ccboat
+/obj/machinery/computer/shuttle_control/explore/tourbus
+ name = "short jump console"
+ shuttle_tag = "Tour Bus"
+ req_one_access = list(access_pilot)
-/datum/shuttle/autodock/overmap/ccboat
- name = "Virgo Flyer"
- current_location = "cc_shuttlepad"
- docking_controller_tag = "ccboat"
- shuttle_area = /area/shuttle/ccboat
- fuel_consumption = 0
- defer_initialisation = TRUE
+////////////////////////////////////////
+//////// Medivac /////////////
+////////////////////////////////////////
+// The 'ship' of the excursion shuttle
+/obj/effect/overmap/visitable/ship/landable/medivac
+ name = "Medivac Shuttle"
+ desc = "A medical evacuation shuttle."
+ icon_state = "htu_frigate_g"
+ vessel_mass = 4000
+ vessel_size = SHIP_SIZE_SMALL
+ shuttle = "Medivac Shuttle"
+ fore_dir = EAST
-/area/shuttle/ccboat
- icon = 'icons/turf/areas_vr.dmi'
- icon_state = "yelwhitri"
- name = "Virgo Flyer"
- requires_power = 0
+/obj/machinery/computer/shuttle_control/explore/medivac
+ name = "short jump console"
+ shuttle_tag = "Medivac Shuttle"
-/area/shuttle/centcom/ccbay
- icon = 'icons/turf/areas_vr.dmi'
- icon_state = "bluwhisqu"
- name = "Central Command Shuttle Bay"
- requires_power = 0
- dynamic_lighting = 0
+////////////////////////////////////////
+//////// Securiship /////////////
+////////////////////////////////////////
+// The 'ship' of the excursion shuttle
+/obj/effect/overmap/visitable/ship/landable/securiship
+ name = "Securiship Shuttle"
+ desc = "A security transport ship."
+ icon_state = "htu_frigate_g"
+ vessel_mass = 4000
+ vessel_size = SHIP_SIZE_SMALL
+ shuttle = "Securiship Shuttle"
+ fore_dir = EAST
+
+/obj/machinery/computer/shuttle_control/explore/securiship
+ name = "short jump console"
+ shuttle_tag = "Securiship Shuttle"
diff --git a/maps/tether/tether_shuttles.dm b/maps/tether/tether_shuttles.dm
index f9532970e9..4a81b02ac6 100644
--- a/maps/tether/tether_shuttles.dm
+++ b/maps/tether/tether_shuttles.dm
@@ -1,57 +1,273 @@
+//////////////////////////////////////////////////////////////
+// Escape shuttle and pods
+/datum/shuttle/autodock/ferry/emergency/escape/New()
+ ..()
+ move_direction = NORTH
+
+// Large Escape Pod 1
+/datum/shuttle/autodock/ferry/escape_pod/large_escape_pod1
+ name = "Large Escape Pod 1"
+ location = FERRY_LOCATION_STATION
+ shuttle_area = /area/shuttle/large_escape_pod1
+ warmup_time = 0
+ landmark_station = "escapepod1_station"
+ landmark_offsite = "escapepod1_cc"
+ landmark_transition = "escapepod1_transit"
+ docking_controller_tag = "large_escape_pod_1"
+ move_time = SHUTTLE_TRANSIT_DURATION_RETURN
+ move_direction = EAST
+
////////////////////////////////////////
-// Tether custom shuttle implemnetations
+//////// Excursion Shuttle /////////////
////////////////////////////////////////
+// The 'shuttle' of the excursion shuttle
+/datum/shuttle/autodock/overmap/excursion
+ name = "Excursion Shuttle"
+ warmup_time = 0
+ current_location = "tether_excursion_hangar"
+ docking_controller_tag = "expshuttle_docker"
+ shuttle_area = list(/area/shuttle/excursion/cockpit, /area/shuttle/excursion/general, /area/shuttle/excursion/cargo, /area/shuttle/excursion/power)
+ fuel_consumption = 3
+ move_direction = NORTH
-/obj/machinery/computer/shuttle_control/tether_backup
- name = "tether backup shuttle control console"
- shuttle_tag = "Tether Backup"
- req_one_access = list()
- ai_control = TRUE
+////////////////////////////////////////
+//////// Tour Bus /////////////
+////////////////////////////////////////
+/datum/shuttle/autodock/overmap/tourbus
+ name = "Tour Bus"
+ warmup_time = 0
+ current_location = "tourbus_dock"
+ docking_controller_tag = "tourbus_docker"
+ shuttle_area = list(/area/shuttle/tourbus/cockpit, /area/shuttle/tourbus/general)
+ fuel_consumption = 1
+ move_direction = NORTH
-/obj/machinery/computer/shuttle_control/multi/mercenary
- name = "vessel control console"
- shuttle_tag = "Mercenary"
- req_one_access = list(access_syndicate)
+////////////////////////////////////////
+//////// Medivac /////////////
+////////////////////////////////////////
+/datum/shuttle/autodock/overmap/medivac
+ name = "Medivac Shuttle"
+ warmup_time = 0
+ current_location = "tether_medivac_dock"
+ docking_controller_tag = "medivac_docker"
+ shuttle_area = list(/area/shuttle/medivac/cockpit, /area/shuttle/medivac/general, /area/shuttle/medivac/engines)
+ fuel_consumption = 2
+ move_direction = EAST
-/obj/machinery/computer/shuttle_control/multi/ninja
- name = "vessel control console"
- shuttle_tag = "Ninja"
- //req_one_access = list()
+////////////////////////////////////////
+//////// Securiship /////////////
+////////////////////////////////////////
+/datum/shuttle/autodock/overmap/securiship
+ name = "Securiship Shuttle"
+ warmup_time = 0
+ current_location = "tether_securiship_dock"
+ docking_controller_tag = "securiship_docker"
+ shuttle_area = list(/area/shuttle/securiship/cockpit, /area/shuttle/securiship/general, /area/shuttle/securiship/engines)
+ fuel_consumption = 2
+ move_direction = NORTH
-/obj/machinery/computer/shuttle_control/multi/skipjack
- name = "vessel control console"
- shuttle_tag = "Skipjack"
- //req_one_access = list()
+//////////////////////////////////////////////////////////////
+// Trade Ship
+/datum/shuttle/autodock/multi/trade
+ name = "Trade"
+ current_location = "trade_dock"
+ shuttle_area = /area/shuttle/trade
+ docking_controller_tag = "trade_shuttle"
+ warmup_time = 10 //want some warmup time so people can cancel.
+ destination_tags = list(
+ "trade_dock",
+ "tether_dockarm_d1l",
+ "aerostat_south",
+ "beach_e",
+ "beach_c",
+ "beach_nw"
+ )
+ defer_initialisation = TRUE
+ move_direction = WEST
-/obj/machinery/computer/shuttle_control/multi/specops
- name = "vessel control console"
- shuttle_tag = "NDV Phantom"
- req_one_access = list(access_cent_specops)
+//////////////////////////////////////////////////////////////
+// Tether Shuttle
+/datum/shuttle/autodock/ferry/tether_backup
+ name = "Tether Backup"
+ location = FERRY_LOCATION_OFFSITE //Offsite is the surface hangar
+ warmup_time = 5
+ move_time = 5
+ landmark_offsite = "tether_backup_low"
+ landmark_station = "tether_dockarm_d1a3"
+ landmark_transition = "tether_backup_transit"
+ shuttle_area = /area/shuttle/tether
+ //crash_areas = list(/area/shuttle/tether/crash1, /area/shuttle/tether/crash2)
+ docking_controller_tag = "tether_shuttle"
+ move_direction = NORTH
-/obj/machinery/computer/shuttle_control/multi/trade
- name = "vessel control console"
- shuttle_tag = "Trade"
- req_one_access = list(access_trader)
+//////////////////////////////////////////////////////////////
+// Mercenary Shuttle
+/datum/shuttle/autodock/multi/mercenary
+ name = "Mercenary"
+ warmup_time = 8
+ move_time = 60
+ current_location = "merc_base"
+ shuttle_area = /area/shuttle/mercenary
+ destination_tags = list(
+ "merc_base",
+ "aerostat_south",
+ "beach_e",
+ "beach_nw",
+ "tether_solars_ne",
+ "tether_solars_sw",
+ "tether_mine_nw",
+ "tether_space_NE",
+ "tether_space_SE",
+ "tether_space_SW",
+ "tether_dockarm_d2l" //End of right docking arm
+ )
+ docking_controller_tag = "merc_shuttle"
+ announcer = "Automated Traffic Control"
+ arrival_message = "Attention. An unregistered vessel is approaching Virgo-3B."
+ departure_message = "Attention. A unregistered vessel is now leaving Virgo-3B."
+ defer_initialisation = TRUE
+ move_direction = WEST
+
+//////////////////////////////////////////////////////////////
+// Ninja Shuttle
+/datum/shuttle/autodock/multi/ninja
+ name = "Ninja"
+ warmup_time = 8
+ move_time = 60
+ can_cloak = TRUE
+ cloaked = TRUE
+ current_location = "ninja_base"
+ landmark_transition = "ninja_transit"
+ shuttle_area = /area/shuttle/ninja
+ destination_tags = list(
+ "ninja_base",
+ "aerostat_northeast",
+ "beach_e",
+ "beach_nw",
+ "tether_solars_ne",
+ "tether_solars_sw",
+ "tether_mine_nw",
+ "tether_space_NE",
+ "tether_space_SE",
+ "tether_space_SW",
+ "tether_dockarm_d1a3" //Inside of left dockarm
+ )
+ docking_controller_tag = "ninja_shuttle"
+ announcer = "Automated Traffic Control"
+ arrival_message = "Attention. An unregistered vessel is approaching Virgo-3B."
+ departure_message = "Attention. A unregistered vessel is now leaving Virgo-3B."
+ defer_initialisation = TRUE
+ move_direction = NORTH
+
+//////////////////////////////////////////////////////////////
+// Skipjack
+/datum/shuttle/autodock/multi/heist
+ name = "Skipjack"
+ warmup_time = 8
+ move_time = 60
+ can_cloak = TRUE
+ cloaked = TRUE
+ current_location = "skipjack_base"
+ landmark_transition = "skipjack_transit"
+ shuttle_area = /area/shuttle/skipjack
+ destination_tags = list(
+ "skipjack_base",
+ "aerostat_south",
+ "beach_e",
+ "beach_nw",
+ "tether_solars_ne",
+ "tether_solars_sw",
+ "tether_mine_nw",
+ "tether_space_NE",
+ "tether_space_SE",
+ "tether_space_SW",
+ "tether_dockarm_d1l" //End of left dockarm
+ )
+ //docking_controller_tag = ??? doesn't have one?
+ announcer = "Automated Traffic Control"
+ arrival_message = "Attention. An unregistered vessel is approaching Virgo-3B."
+ departure_message = "Attention. A unregistered vessel is now leaving Virgo-3B."
+ defer_initialisation = TRUE
+ move_direction = NORTH
+
+//////////////////////////////////////////////////////////////
+// ERT Shuttle
+/datum/shuttle/autodock/multi/specialops
+ name = "NDV Phantom"
+ can_cloak = TRUE
+ cloaked = FALSE
+ warmup_time = 8
+ move_time = 60
+ current_location = "specops_base"
+ landmark_transition = "specops_transit"
+ shuttle_area = /area/shuttle/specops/centcom
+ destination_tags = list(
+ "specops_base",
+ "aerostat_south",
+ "beach_e",
+ "beach_nw",
+ "tether_solars_ne",
+ "tether_solars_sw",
+ "tether_mine_nw",
+ "tether_space_NE",
+ "tether_space_SE",
+ "tether_space_SW",
+ "tether_dockarm_d1l" //End of left dockarm
+ )
+ docking_controller_tag = "ert1_control"
+ announcer = "Automated Traffic Control"
+ arrival_message = "Attention. An NT support vessel is approaching Virgo-3B."
+ departure_message = "Attention. A NT support vessel is now leaving Virgo-3B."
+ defer_initialisation = TRUE
+ move_direction = WEST
+
+//////////////////////////////////////////////////////////////
+// RogueMiner "Belter: Shuttle
+/datum/shuttle/autodock/ferry/belter
+ name = "Belter"
+ location = FERRY_LOCATION_STATION
+ warmup_time = 5
+ move_time = 30
+ shuttle_area = /area/shuttle/belter
+ landmark_station = "belter_station"
+ landmark_offsite = "belter_zone1"
+ landmark_transition = "belter_transit"
+ docking_controller_tag = "belter_docking"
+ move_direction = EAST
+
+/datum/shuttle/autodock/ferry/belter/New()
+ move_time = move_time + rand(-5 SECONDS, 5 SECONDS)
+ ..()
+
+//////////////////////////////////////////////////////////////
+// Surface Mining Outpost Shuttle
+/datum/shuttle/autodock/ferry/surface_mining_outpost
+ name = "Mining Outpost"
+ location = FERRY_LOCATION_STATION
+ warmup_time = 5
+ shuttle_area = /area/shuttle/mining_outpost
+ landmark_station = "mining_station"
+ landmark_offsite = "mining_outpost"
+ docking_controller_tag = "mining_docking"
+ move_direction = NORTH
+
+
+//////////////////////////////////////////////////////////////
+// Supply shuttle
+/datum/shuttle/autodock/ferry/supply/cargo/New(_name)
+ ..()
+ move_direction = NORTH
-/obj/machinery/computer/shuttle_control/surface_mining_outpost
- name = "surface mining outpost shuttle control console"
- shuttle_tag = "Mining Outpost"
- req_one_access = list(access_mining)
- ai_control = TRUE
-//
// "Tram" Emergency Shuttler
// Becuase the tram only has its own doors and no corresponding station doors, a docking controller is overkill.
// Just open the gosh darn doors! Also we avoid having a physical docking controller obj for gameplay reasons.
/datum/shuttle/autodock/ferry/emergency
var/tag_door_station = "escape_shuttle_hatch_station"
var/tag_door_offsite = "escape_shuttle_hatch_offsite"
- var/frequency = 1380 // Why this frequency? BECAUSE! Thats what someone decided once.
- var/datum/radio_frequency/radio_connection
- move_direction = NORTH
/datum/shuttle/autodock/ferry/emergency/New()
- radio_connection = radio_controller.add_object(src, frequency, null)
..()
+ move_direction = NORTH
/datum/shuttle/autodock/ferry/emergency/dock()
..()
@@ -183,108 +399,3 @@
update_icon()
return 1
*/
-
-////////////////////////////////////////
-//////// Excursion Shuttle /////////////
-////////////////////////////////////////
-// The 'shuttle' of the excursion shuttle
-/datum/shuttle/autodock/overmap/excursion
- name = "Excursion Shuttle"
- warmup_time = 0
- current_location = "tether_excursion_hangar"
- docking_controller_tag = "expshuttle_docker"
- shuttle_area = list(/area/shuttle/excursion/cockpit, /area/shuttle/excursion/general, /area/shuttle/excursion/cargo, /area/shuttle/excursion/power)
- fuel_consumption = 3
- move_direction = NORTH
-
-// The 'ship' of the excursion shuttle
-/obj/effect/overmap/visitable/ship/landable/excursion
- name = "Excursion Shuttle"
- desc = "The traditional Excursion Shuttle. NT Approved!"
- icon_state = "htu_destroyer_g"
- vessel_mass = 8000
- vessel_size = SHIP_SIZE_SMALL
- shuttle = "Excursion Shuttle"
-
-/obj/machinery/computer/shuttle_control/explore/excursion
- name = "short jump console"
- shuttle_tag = "Excursion Shuttle"
- req_one_access = list(access_pilot)
-
-////////////////////////////////////////
-//////// Tour Bus /////////////
-////////////////////////////////////////
-/datum/shuttle/autodock/overmap/tourbus
- name = "Tour Bus"
- warmup_time = 0
- current_location = "tourbus_dock"
- docking_controller_tag = "tourbus_docker"
- shuttle_area = list(/area/shuttle/tourbus/cockpit, /area/shuttle/tourbus/general)
- fuel_consumption = 1
- move_direction = NORTH
-
-// The 'ship' of the excursion shuttle
-/obj/effect/overmap/visitable/ship/landable/tourbus
- name = "Tour Bus"
- desc = "A small 'space bus', if you will."
- icon_state = "htu_frigate_g"
- vessel_mass = 2000
- vessel_size = SHIP_SIZE_SMALL
- shuttle = "Tour Bus"
-
-/obj/machinery/computer/shuttle_control/explore/tourbus
- name = "short jump console"
- shuttle_tag = "Tour Bus"
- req_one_access = list(access_pilot)
-
-////////////////////////////////////////
-//////// Medivac /////////////
-////////////////////////////////////////
-/datum/shuttle/autodock/overmap/medivac
- name = "Medivac Shuttle"
- warmup_time = 0
- current_location = "tether_medivac_dock"
- docking_controller_tag = "medivac_docker"
- shuttle_area = list(/area/shuttle/medivac/cockpit, /area/shuttle/medivac/general, /area/shuttle/medivac/engines)
- fuel_consumption = 2
- move_direction = EAST
-
-// The 'ship' of the excursion shuttle
-/obj/effect/overmap/visitable/ship/landable/medivac
- name = "Medivac Shuttle"
- desc = "A medical evacuation shuttle."
- icon_state = "htu_frigate_g"
- vessel_mass = 4000
- vessel_size = SHIP_SIZE_SMALL
- shuttle = "Medivac Shuttle"
- fore_dir = EAST
-
-/obj/machinery/computer/shuttle_control/explore/medivac
- name = "short jump console"
- shuttle_tag = "Medivac Shuttle"
-
-////////////////////////////////////////
-//////// Securiship /////////////
-////////////////////////////////////////
-/datum/shuttle/autodock/overmap/securiship
- name = "Securiship Shuttle"
- warmup_time = 0
- current_location = "tether_securiship_dock"
- docking_controller_tag = "securiship_docker"
- shuttle_area = list(/area/shuttle/securiship/cockpit, /area/shuttle/securiship/general, /area/shuttle/securiship/engines)
- fuel_consumption = 2
- move_direction = NORTH
-
-// The 'ship' of the excursion shuttle
-/obj/effect/overmap/visitable/ship/landable/securiship
- name = "Securiship Shuttle"
- desc = "A security transport ship."
- icon_state = "htu_frigate_g"
- vessel_mass = 4000
- vessel_size = SHIP_SIZE_SMALL
- shuttle = "Securiship Shuttle"
- fore_dir = EAST
-
-/obj/machinery/computer/shuttle_control/explore/securiship
- name = "short jump console"
- shuttle_tag = "Securiship Shuttle"
diff --git a/maps/tether/tether_telecomm_defs.dm b/maps/tether/tether_telecomm_defs.dm
new file mode 100644
index 0000000000..cd3eacc491
--- /dev/null
+++ b/maps/tether/tether_telecomm_defs.dm
@@ -0,0 +1,49 @@
+// #### Hub ####
+/obj/machinery/telecomms/hub/preset/tether
+ id = "Hub"
+ network = "tcommsat"
+ autolinkers = list("hub",
+ "tether_relay", "c_relay", "m_relay", "r_relay",
+ "science", "medical", "supply", "service", "common", "command", "engineering", "security", "Away Team", "unused",
+ "hb_relay", "receiverA", "broadcasterA"
+ )
+
+/obj/machinery/telecomms/receiver/preset_right/tether
+ id = "tether_rx"
+ freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ, ENT_FREQ, EXP_FREQ)
+
+/obj/machinery/telecomms/broadcaster/preset_right/tether
+ id = "tether_tx"
+
+/obj/machinery/telecomms/bus/preset_two/tether
+ freq_listening = list(SUP_FREQ, SRV_FREQ, EXP_FREQ)
+
+/obj/machinery/telecomms/server/presets/service/tether
+ freq_listening = list(SRV_FREQ, EXP_FREQ)
+ autolinkers = list("service", "Away Team")
+
+// Telecommunications Satellite
+/area/tether/surfacebase/tcomms
+ name = "\improper Telecomms"
+ ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg')
+
+/area/tether/surfacebase/tcomms/entrance
+ name = "\improper Telecomms Teleporter"
+ icon_state = "tcomsatentrance"
+
+/area/tether/surfacebase/tcomms/foyer
+ name = "\improper Telecomms Foyer"
+ icon_state = "tcomsatfoyer"
+
+/area/tether/surfacebase/tcomms/storage
+ name = "\improper Telecomms Storage"
+ icon_state = "tcomsatwest"
+
+/area/tether/surfacebase/tcomms/computer
+ name = "\improper Telecomms Control Room"
+ icon_state = "tcomsatcomp"
+
+/area/tether/surfacebase/tcomms/chamber
+ name = "\improper Telecomms Central Compartment"
+ icon_state = "tcomsatcham"
+ flags = BLUE_SHIELDED
diff --git a/maps/tether/tether_telecomms.dm b/maps/tether/tether_telecomms.dm
index cf4b2622f2..445e928684 100644
--- a/maps/tether/tether_telecomms.dm
+++ b/maps/tether/tether_telecomms.dm
@@ -1,68 +1,10 @@
-// ### Preset machines ###
-
-
// #### Relays ####
// Telecomms doesn't know about connected z-levels, so we need relays even for the other surface levels.
-/obj/machinery/telecomms/relay/preset/station
+/obj/machinery/telecomms/relay/preset/station/New()
+ ..()
id = "Tether Relay"
autolinkers = list("tether_relay")
-// #### Hub ####
-/obj/machinery/telecomms/hub/preset/tether
- id = "Hub"
- network = "tcommsat"
- autolinkers = list("hub",
- "tether_relay", "c_relay", "m_relay", "r_relay",
- "science", "medical", "supply", "service", "common", "command", "engineering", "security", "Away Team", "unused",
- "hb_relay", "receiverA", "broadcasterA"
- )
-
-/obj/machinery/telecomms/receiver/preset_right/tether
- id = "tether_rx"
- freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ, ENT_FREQ, EXP_FREQ)
-
-/obj/machinery/telecomms/broadcaster/preset_right/tether
- id = "tether_tx"
-
-/obj/machinery/telecomms/bus/preset_two/tether
- freq_listening = list(SUP_FREQ, SRV_FREQ, EXP_FREQ)
-
-/obj/machinery/telecomms/server/presets/service/tether
- freq_listening = list(SRV_FREQ, EXP_FREQ)
- autolinkers = list("service", "Away Team")
-
-// Telecommunications Satellite
-/area/tether/surfacebase/tcomms
- name = "\improper Telecomms"
- ambience = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg')
-
-/area/tether/surfacebase/tcomms/entrance
- name = "\improper Telecomms Teleporter"
- icon_state = "tcomsatentrance"
-
-/area/tether/surfacebase/tcomms/foyer
- name = "\improper Telecomms Foyer"
- icon_state = "tcomsatfoyer"
-
-/area/tether/surfacebase/tcomms/storage
- name = "\improper Telecomms Storage"
- icon_state = "tcomsatwest"
-
-/area/tether/surfacebase/tcomms/computer
- name = "\improper Telecomms Control Room"
- icon_state = "tcomsatcomp"
-
-/area/tether/surfacebase/tcomms/chamber
- name = "\improper Telecomms Central Compartment"
- icon_state = "tcomsatcham"
- flags = BLUE_SHIELDED
-
-/area/maintenance/substation/tcomms
- name = "\improper Telecomms Substation"
-
-/area/maintenance/station/tcomms
- name = "\improper Telecoms Maintenance"
-
/datum/map/tether/default_internal_channels()
return list(
num2text(PUB_FREQ) = list(),
@@ -81,10 +23,8 @@
num2text(EXP_FREQ) = list(access_explorer)
)
-/obj/item/multitool/station_buffered
- name = "pre-linked multitool (tether hub)"
- desc = "This multitool has already been linked to the Tether telecomms hub and can be used to configure one (1) relay."
-
/obj/item/multitool/station_buffered/Initialize()
. = ..()
+ name = "pre-linked multitool (tether hub)"
+ desc = "This multitool has already been linked to the Tether telecomms hub and can be used to configure one (1) relay."
buffer = locate(/obj/machinery/telecomms/hub/preset/tether)
diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm
index e062152d1c..b1985680cb 100644
--- a/maps/tether/tether_things.dm
+++ b/maps/tether/tether_things.dm
@@ -1,32 +1,3 @@
-//Special map objects
-/obj/effect/landmark/map_data/virgo3b
- height = 5
-
-/obj/turbolift_map_holder/tether
- name = "Tether Climber"
- depth = 5
- lift_size_x = 3
- lift_size_y = 3
- icon = 'icons/obj/turbolift_preview_3x3.dmi'
- wall_type = null // Don't make walls
-
- areas_to_use = list(
- /area/turbolift/t_surface/level1,
- /area/turbolift/t_surface/level2,
- /area/turbolift/t_surface/level3,
- /area/turbolift/tether/transit,
- /area/turbolift/t_station/level1
- )
-
-/datum/turbolift
- music = list('sound/music/elevator.ogg') // Woo elevator music!
-
-/obj/machinery/atmospherics/unary/vent_pump/positive
- use_power = USE_POWER_IDLE
- icon_state = "map_vent_out"
- external_pressure_bound = ONE_ATMOSPHERE * 1.1
-
-
/obj/effect/step_trigger/teleporter/to_mining/Initialize()
. = ..()
teleport_x = src.x
@@ -69,10 +40,6 @@
else
teleport_y = src.y
-/obj/effect/step_trigger/teleporter/to_underdark
- icon = 'icons/obj/structures/stairs_64x64.dmi'
- icon_state = ""
- invisibility = 0
/obj/effect/step_trigger/teleporter/to_underdark/Initialize()
. = ..()
teleport_x = x
@@ -82,10 +49,6 @@
if(Z.name == "Underdark")
teleport_z = Z.z
-/obj/effect/step_trigger/teleporter/from_underdark
- icon = 'icons/obj/structures/stairs_64x64.dmi'
- icon_state = ""
- invisibility = 0
/obj/effect/step_trigger/teleporter/from_underdark/Initialize()
. = ..()
teleport_x = x
@@ -110,241 +73,11 @@
/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b/find_planet()
planet = planet_virgo3b
-/obj/effect/step_trigger/lost_in_space
- var/deathmessage = "You drift off into space, floating alone in the void until your life support runs out."
-
-/obj/effect/step_trigger/lost_in_space/Trigger(var/atom/movable/A) //replacement for shuttle dump zones because there's no empty space levels to dump to
- if(ismob(A))
- to_chat(A, span_danger("[deathmessage]"))
- qdel(A)
-
-/obj/effect/step_trigger/lost_in_space/bluespace
- deathmessage = "Everything goes blue as your component particles are scattered throughout the known and unknown universe."
- var/last_sound = 0
-
-/obj/effect/step_trigger/lost_in_space/bluespace/Trigger(A)
- if(world.time - last_sound > 5 SECONDS)
- last_sound = world.time
- playsound(src, 'sound/effects/supermatter.ogg', 75, 1)
- if(ismob(A) && prob(5))//lucky day
- var/destturf = locate(rand(5,world.maxx-5),rand(5,world.maxy-5),pick(using_map.station_levels))
- new /datum/teleport/instant(A, destturf, 0, 1, null, null, null, 'sound/effects/phasein.ogg')
- else
- return ..()
-
-/obj/effect/step_trigger/lost_in_space/tram
- deathmessage = "You fly down the tunnel of the tram at high speed for a few moments before impact kills you with sheer concussive force."
-
-//
-// TRAM STATION
-//
-
-// The tram's electrified maglev tracks
-/turf/simulated/floor/maglev
- name = "maglev track"
- desc = "Magnetic levitation tram tracks. Caution! Electrified!"
- icon = 'icons/turf/flooring/maglevs.dmi'
- icon_state = "maglevup"
- can_be_plated = FALSE
-
- var/area/shock_area = /area/tether/surfacebase/tram
-
-/turf/simulated/floor/maglev/Initialize()
- . = ..()
- shock_area = locate(shock_area)
-
-// Walking on maglev tracks will shock you! Horray!
-/turf/simulated/floor/maglev/Entered(var/atom/movable/AM, var/atom/old_loc)
- if(isliving(AM) && !(AM.is_incorporeal()) && prob(50))
- track_zap(AM)
-/turf/simulated/floor/maglev/attack_hand(var/mob/user)
- if(prob(75))
- track_zap(user)
-/turf/simulated/floor/maglev/proc/track_zap(var/mob/living/user)
- if (!istype(user)) return
- if (electrocute_mob(user, shock_area, src))
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(5, 1, src)
- s.start()
-
-// Tram air scrubbers for keeping arrivals clean - they work even with no area power
-/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram
- name = "\improper Tram Air Scrubber"
- icon_state = "scrubber:1"
- on = TRUE
-
-/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram/powered()
- return TRUE // Always be powered
-
-// Tram departure cryo doors that turn into ordinary airlock doors at round end
-/obj/machinery/cryopod/robot/door/tram
- name = "\improper Tram Station"
- icon = 'icons/obj/doors/Doorextglass.dmi'
- icon_state = "door_closed"
- can_atmos_pass = ATMOS_PASS_NO
- base_icon_state = "door_closed"
- occupied_icon_state = "door_locked"
- desc = "The tram station you might've came in from. You could leave the base easily using this."
- on_store_message = "has departed on the tram."
- on_store_name = "Travel Oversight"
- on_enter_occupant_message = "The tram arrives at the platform; you step inside and take a seat."
- on_store_visible_message_1 = "'s speakers chime, anouncing a tram has arrived to take"
- on_store_visible_message_2 = "to the colony"
- time_till_despawn = 10 SECONDS
- spawnpoint_type = /datum/spawnpoint/tram
-
-/obj/machinery/cryopod/robot/door/tram/process()
- if(emergency_shuttle.online() || emergency_shuttle.returned())
- // Transform into a door! But first despawn anyone inside
- time_till_despawn = 0
- ..()
- var/turf/T = get_turf(src)
- var/obj/machinery/door/airlock/glass_external/door = new(T)
- door.req_access = null
- door.req_one_access = null
- qdel(src)
- // Otherwise just operate normally
- return ..()
-
-/obj/machinery/cryopod/robot/door/tram/Bumped(var/atom/movable/AM)
- if(!ishuman(AM))
- return
-
- var/mob/living/carbon/human/user = AM
-
- var/choice = tgui_alert(user, "Do you want to depart via the tram? Your character will leave the round.","Departure",list("Yes","No"))
- if(user && Adjacent(user) && choice == "Yes")
- var/mob/observer/dead/newghost = user.ghostize()
- newghost.timeofdeath = world.time
- despawn_occupant(user)
-//
-// Holodorms
-//
-/obj/machinery/computer/HolodeckControl/holodorm
- name = "Don't use this one!!!"
- powerdown_program = "Off"
- default_program = "Off"
-
- //Smollodeck
- active_power_usage = 500
- item_power_usage = 100
-
- supported_programs = list(
- "Off" = new/datum/holodeck_program(/area/holodeck/holodorm/source_off),
- "Basic Dorm" = new/datum/holodeck_program(/area/holodeck/holodorm/source_basic),
- "Table Seating" = new/datum/holodeck_program(/area/holodeck/holodorm/source_seating),
- "Beach Sim" = new/datum/holodeck_program(/area/holodeck/holodorm/source_beach),
- "Desert Area" = new/datum/holodeck_program(/area/holodeck/holodorm/source_desert),
- "Snow Field" = new/datum/holodeck_program(/area/holodeck/holodorm/source_snow),
- "Flower Garden" = new/datum/holodeck_program(/area/holodeck/holodorm/source_garden),
- "Space Sim" = new/datum/holodeck_program(/area/holodeck/holodorm/source_space),
- "Boxing Ring" = new/datum/holodeck_program(/area/holodeck/holodorm/source_boxing)
- )
-
-/obj/machinery/computer/HolodeckControl/holodorm/one
- name = "dorm one holodeck control"
- projection_area = /area/crew_quarters/sleep/Dorm_1/holo
-
-/obj/machinery/computer/HolodeckControl/holodorm/three
- name = "dorm three holodeck control"
- projection_area = /area/crew_quarters/sleep/Dorm_3/holo
-
-/obj/machinery/computer/HolodeckControl/holodorm/five
- name = "dorm five holodeck control"
- projection_area = /area/crew_quarters/sleep/Dorm_5/holo
-
-/obj/machinery/computer/HolodeckControl/holodorm/seven
- name = "dorm seven holodeck control"
- projection_area = /area/crew_quarters/sleep/Dorm_7/holo
-
// Our map is small, if the supermatter is ejected lets not have it just blow up somewhere else
/obj/machinery/power/supermatter/touch_map_edge()
qdel(src)
-//"Red" Armory Door
-/obj/machinery/door/airlock/security/armory
- name = "Red Armory"
- //color = ""
-
-/obj/machinery/door/airlock/security/armory/allowed(mob/user)
- if(get_security_level() in list("green","blue"))
- return FALSE
-
- return ..(user)
-
-//Tether-unique network cameras
-/obj/machinery/camera/network/tether
- network = list(NETWORK_TETHER)
-
-/obj/machinery/camera/network/outside
- network = list(NETWORK_OUTSIDE)
-
// Shelter Capsule extra restrictions
/datum/map_template/shelter/New()
..()
banned_areas += list(/area/tether/surfacebase/fish_farm, /area/tether/surfacebase/public_garden, /area/tether/surfacebase/tram)
-
-//
-// ### Wall Machines On Full Windows ###
-// To make sure wall-mounted machines placed on full-tile windows are clickable they must be above the window
-//
-/obj/item/radio/intercom
- layer = ABOVE_WINDOW_LAYER
-/obj/item/storage/secure/safe
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/airlock_sensor
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/alarm
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/button
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/access_button
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/computer/guestpass
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/computer/security/telescreen
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/door_timer
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/embedded_controller
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/firealarm
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/flasher
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/keycard_auth
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/light_switch
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/mineral/processing_unit_console
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/mineral/stacking_unit_console
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/newscaster
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/power/apc
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/requests_console
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/status_display
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/vending/wallmed1
- layer = ABOVE_WINDOW_LAYER
-/obj/machinery/vending/wallmed2
- layer = ABOVE_WINDOW_LAYER
-/obj/structure/fireaxecabinet
- layer = ABOVE_WINDOW_LAYER
-/obj/structure/extinguisher_cabinet
- layer = ABOVE_WINDOW_LAYER
-/obj/structure/mirror
- layer = ABOVE_WINDOW_LAYER
-/obj/structure/noticeboard
- layer = ABOVE_WINDOW_LAYER
-
-/obj/tether_away_spawner/tether_outside
- name = "Tether Outside Spawner"
- prob_spawn = 75
- prob_fall = 50
- mobs_to_pick_from = list(
- /mob/living/simple_mob/animal/passive/gaslamp = 300
- )
diff --git a/maps/tether/tether_turfs.dm b/maps/tether/tether_turfs.dm
index 8b6d676349..598e9b7385 100644
--- a/maps/tether/tether_turfs.dm
+++ b/maps/tether/tether_turfs.dm
@@ -1,11 +1,4 @@
//Simulated
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/reinforced)
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/tiled/steel_dirty)
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/wood/sif)
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/rocks)
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/water/indoors)
-
-VIRGO3B_TURF_CREATE(/turf/simulated/open)
/turf/simulated/open/virgo3b
edge_blending_priority = 0.5 //Turfs which also have e_b_p and higher than this will plop decorative edges onto this turf
/* Handled by parent now
@@ -15,25 +8,6 @@ VIRGO3B_TURF_CREATE(/turf/simulated/open)
SSplanets.addTurf(src)
*/
-VIRGO3B_TURF_CREATE(/turf/simulated/floor)
-
-/turf/simulated/floor/virgo3b_indoors
- VIRGO3B_SET_ATMOS
-/turf/simulated/floor/virgo3b_indoors/update_graphic(list/graphic_add = null, list/graphic_remove = null)
- return 0
-
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/dirt)
-/turf/simulated/floor/outdoors/dirt/virgo3b
- icon = 'icons/turf/flooring/asteroid.dmi'
- icon_state = "asteroid"
-
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/grass/sif)
-/turf/simulated/floor/outdoors/grass/sif
- turf_layers = list(
- /turf/simulated/floor/outdoors/rocks/virgo3b,
- /turf/simulated/floor/outdoors/dirt/virgo3b
- )
-
// Overriding these for the sake of submaps that use them on other planets.
// This means that mining on tether base and space is oxygen-generating, but solars and mining should use the virgo3b subtype
/turf/simulated/mineral
@@ -58,8 +32,6 @@ VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/grass/sif)
nitrogen = 0
temperature = TCMB
-VIRGO3B_TURF_CREATE(/turf/simulated/mineral)
-VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
//This proc is responsible for ore generation on surface turfs
/turf/simulated/mineral/virgo3b/make_ore(var/rare_ore)
if(mineral || ignore_mapgen)
@@ -127,150 +99,6 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
UpdateMineral()
update_icon()
-//Unsimulated
-/turf/unsimulated/mineral/virgo3b
- blocks_air = TRUE
-
-/turf/unsimulated/floor/steel
- icon = 'icons/turf/flooring/tiles_vr.dmi'
- icon_state = "steel"
-
-// Some turfs to make floors look better in centcom tram station.
-
-/turf/unsimulated/floor/techfloor_grid
- name = "floor"
- icon = 'icons/turf/flooring/techfloor.dmi'
- icon_state = "techfloor_grid"
-
-/turf/unsimulated/floor/maglev
- name = "maglev track"
- desc = "Magnetic levitation tram tracks. Caution! Electrified!"
- icon = 'icons/turf/flooring/maglevs.dmi'
- icon_state = "maglevup"
-
-/turf/unsimulated/wall/transit
- icon = 'icons/turf/transit_vr.dmi'
-
-/turf/unsimulated/floor/transit
- icon = 'icons/turf/transit_vr.dmi'
-
-/obj/effect/floor_decal/transit/orange
- icon = 'icons/turf/transit_vr.dmi'
- icon_state = "transit_techfloororange_edges"
-
-/obj/effect/transit/light
- icon = 'icons/turf/transit_128.dmi'
- icon_state = "tube1-2"
-
-// Bluespace jump turf!
-/turf/space/bluespace
- name = "bluespace"
- icon = 'icons/turf/space_vr.dmi'
- icon_state = "bluespace"
-
-/turf/space/bluespace/Initialize()
- . = ..()
- icon = 'icons/turf/space_vr.dmi'
- icon_state = "bluespace"
-
-// Desert jump turf!
-/turf/space/sandyscroll
- name = "sand transit"
- icon = 'icons/turf/transit_vr.dmi'
- icon_state = "desert_ns"
-
-/turf/space/sandyscroll/Initialize()
- . = ..()
- icon_state = "desert_ns"
-
-//Sky stuff!
-// A simple turf to fake the appearance of flying.
-/turf/simulated/sky/virgo3b
- color = "#FFBBBB"
-
-/turf/simulated/sky/virgo3b/Initialize()
- SSplanets.addTurf(src)
- set_light(2, 2, "#FFBBBB")
-
-/turf/simulated/sky/virgo3b/north
- dir = NORTH
-/turf/simulated/sky/virgo3b/south
- dir = SOUTH
-/turf/simulated/sky/virgo3b/east
- dir = EAST
-/turf/simulated/sky/virgo3b/west
- dir = WEST
-
-/turf/simulated/sky/virgo3b/moving
- icon_state = "sky_fast"
-/turf/simulated/sky/virgo3b/moving/north
- dir = NORTH
-/turf/simulated/sky/virgo3b/moving/south
- dir = SOUTH
-/turf/simulated/sky/virgo3b/moving/east
- dir = EAST
-/turf/simulated/sky/virgo3b/moving/west
- dir = WEST
-
-/turf/simulated/floor/midpoint_glass
- name = "glass floor"
- desc = "Dont jump on it, or do, I'm not your mom."
- icon = 'icons/turf/flooring/glass.dmi'
- icon_state = "glass-0"
- base_icon_state = "glass"
-
-/turf/simulated/floor/midpoint_glass/reinf
- name = "reinforced glass floor"
- desc = "Do jump on it, it can take it."
- icon = 'icons/turf/flooring/reinf_glass.dmi'
- icon_state = "reinf_glass-0"
- base_icon_state = "reinf_glass"
-
-/turf/simulated/floor/midpoint_glass/Initialize()
- . = ..()
- return INITIALIZE_HINT_LATELOAD
-
-/turf/simulated/floor/midpoint_glass/LateInitialize()
- do_icons()
-
-/turf/simulated/floor/midpoint_glass/proc/do_icons()
- var/new_junction = NONE
-
- for(var/direction in cardinal) //Cardinal case first.
- var/turf/T = get_step(src, direction)
- if(istype(T, type))
- new_junction |= direction
-
- if(!(new_junction & (NORTH|SOUTH)) || !(new_junction & (EAST|WEST)))
- icon_state = "[base_icon_state]-[new_junction]"
- return
-
- if(new_junction & NORTH)
- if(new_junction & WEST)
- var/turf/T = get_step(src, NORTHWEST)
- if(istype(T, type))
- new_junction |= (1<<7)
-
- if(new_junction & EAST)
- var/turf/T = get_step(src, NORTHEAST)
- if(istype(T, type))
- new_junction |= (1<<4)
-
- if(new_junction & SOUTH)
- if(new_junction & WEST)
- var/turf/T = get_step(src, SOUTHWEST)
- if(istype(T, type))
- new_junction |= (1<<6)
-
- if(new_junction & EAST)
- var/turf/T = get_step(src, SOUTHEAST)
- if(istype(T, type))
- new_junction |= (1<<5)
-
- icon_state = "[base_icon_state]-[new_junction]"
-
- add_vis_overlay('icons/effects/effects.dmi', "white", plane = SPACE_PLANE, add_vis_flags = VIS_INHERIT_ID|VIS_UNDERLAY)
-
/turf/space/v3b_midpoint/Initialize()
. = ..()
new /obj/effect/step_trigger/teleporter/planetary_fall/virgo3b(src)
@@ -282,8 +110,3 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
/turf/space/v3b_midpoint/CanZPass(atom, direction)
return 0 // We're not Space
-
-// Tram transit floor
-/turf/simulated/floor/tiled/techfloor/grid/transit
- icon = 'icons/turf/transit_vr.dmi'
- initial_flooring = null
diff --git a/maps/~map_system/_map_selection.dm b/maps/~map_system/_map_selection.dm
index c02812bf5e..89f466da44 100644
--- a/maps/~map_system/_map_selection.dm
+++ b/maps/~map_system/_map_selection.dm
@@ -1,4 +1,4 @@
-#if !defined(CITESTING) && !defined(SPACEMAN_DMM)
+#if !defined(CITESTING)
/*********************/
/* MAP SELECTION */
@@ -33,6 +33,7 @@
#include "../groundbase/groundbase.dm"
#endif
+// Debug: Minitest
#ifdef USE_MAP_MINITEST
#include "../virgo_minitest/virgo_minitest.dm"
#endif
diff --git a/tools/github-actions/nanomap-renderer-invoker.sh b/tools/github-actions/nanomap-renderer-invoker.sh
index 836e361a0e..0c70f2d348 100755
--- a/tools/github-actions/nanomap-renderer-invoker.sh
+++ b/tools/github-actions/nanomap-renderer-invoker.sh
@@ -8,15 +8,6 @@ mapdirs=(
"maps/tether"
"maps/offmap_vr/talon"
)
-#Put a define file to include. One per line matching mapdirs.
-#If the same define is reused it will be batched if in sequence.
-mapdefines=(
- "maps/groundbase/groundbase.dm"
- "maps/stellar_delight/stellar_delight.dm"
- "maps/tether/tether.dm"
- "maps/tether/tether.dm"
-)
-dme="vorestation.dme"
RED='\033[0;31m'
GREEN="\033[0;32m"
@@ -42,49 +33,20 @@ printf "\n\n\n"
#Duplicate stderr because dmm-tools doesn't return an error code for bad icons or bad path so we need to capture it
exec 5>&2
-#Now render per group to initial images
+#Render maps to initial images ignoring some tg specific icon_state handling
any_errors=0
-map_files=()
-index=0
-for mapdir in "${mapdirs[@]}"; do
- #https://stackoverflow.com/a/23357277
- while IFS= read -r -d $'\0'; do
- map_files+=("$REPLY")
- done < <(find "${BASEDIR}/${mapdir}" -maxdepth 1 -name '*[0-9]*.dmm' -print0)
- cur_define=${mapdefines[index++]}
+result=$(~/dmm-tools minimap "${map_files[@]}" --disable smart-cables,overlays,pretty,transit-tube 2>&1 | tee /dev/fd/5)
- if [[ (index -lt ${#mapdefines[@]}) && ("${cur_define}" == "${mapdefines[$index]}") ]]; then
- # Next iteration uses the same define so batch it
- echo "Batching next iteration..."
- continue
- fi
-
- #Insert the define file into the dme if needed
- if [[ "${cur_define}" != "" ]]; then
- echo "Injecting ${cur_define} into ${dme}..."
- echo "#include \"${cur_define}\"" >> ${dme}
- fi
-
- #Render maps to initial images ignoring some tg specific icon_state handling
- result=$(~/dmm-tools minimap "${map_files[@]}" --disable smart-cables,overlays,pretty,transit-tube 2>&1 | tee /dev/fd/5)
-
- #Check if anything errored
- if [[ ($? -ne 0) || ("${result}" =~ ("bad icon"|"bad path"|"error")) ]]; then
- any_errors=1
- fi
-
- #Undo changes for next iteration
- map_files=()
- if [[ "${cur_define}" != "" ]]; then
- sed -i '$ d' ${dme}
- fi
-
- printf "\n"
-done
+#Check if anything errored
+if [[ ($? -ne 0) || ("${result}" =~ ("bad icon"|"bad path"|"error")) ]]; then
+ any_errors=1
+fi
#Close the new file descriptor
exec 5>&-
+printf "\n"
+
#Give results if we're just testing
if [[ $1 == "--testing" ]]; then
if [[ any_errors -ne 0 ]]; then
diff --git a/vorestation.dme b/vorestation.dme
index c4ef5d23c2..9bea1e6225 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -4479,9 +4479,22 @@
#include "interface\interface.dm"
#include "interface\stylesheet.dm"
#include "interface\skin.dmf"
+#include "maps\common\common_areas.dm"
+#include "maps\common\common_defines.dm"
+#include "maps\common\common_shuttles.dm"
+#include "maps\common\common_telecomms.dm"
+#include "maps\common\common_things.dm"
+#include "maps\common\common_turfs.dm"
#include "maps\expedition_vr\beach\submaps\mountains.dm"
#include "maps\expedition_vr\beach\submaps\mountains_areas.dm"
#include "maps\expedition_vr\virgo5\v5_features.dm"
+#include "maps\groundbase\groundbase_areas.dm"
+#include "maps\groundbase\groundbase_poi_maps.dm"
+#include "maps\groundbase\groundbase_poi_stuff.dm"
+#include "maps\groundbase\groundbase_shuttle_defs.dm"
+#include "maps\groundbase\groundbase_telecomm_defs.dm"
+#include "maps\groundbase\groundbase_wilds.dm"
+#include "maps\offmap_vr\common_offmaps.dm"
#include "maps\redgate\facility_items.dm"
#include "maps\redgate\fantasy_items.dm"
#include "maps\redgate\falls\atoll_decals.dm"
@@ -4490,16 +4503,25 @@
#include "maps\southern_cross\items\clothing\sc_accessory.dm"
#include "maps\southern_cross\items\clothing\sc_suit.dm"
#include "maps\southern_cross\items\clothing\sc_under.dm"
+#include "maps\stellar_delight\stellar_delight_areas.dm"
+#include "maps\stellar_delight\stellar_delight_shuttle_defs.dm"
+#include "maps\stellar_delight\stellar_delight_telecomm_defs.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\admin_use_vr\event_autonomous_drone.dm"
#include "maps\submaps\engine_submaps\engine.dm"
#include "maps\submaps\engine_submaps\engine_areas.dm"
#include "maps\submaps\engine_submaps_vr\tether\_engine_submaps.dm"
+#include "maps\submaps\space_rocks\space_rocks_stuff.dm"
#include "maps\submaps\space_submaps\space.dm"
#include "maps\submaps\space_submaps\debrisfield\debrisfield.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm"
+#include "maps\tether\tether_areas.dm"
+#include "maps\tether\tether_jobs.dm"
+#include "maps\tether\tether_phoronlock.dm"
+#include "maps\tether\tether_shuttle_defs.dm"
+#include "maps\tether\tether_telecomm_defs.dm"
#include "maps\~map_system\_map_selection.dm"
#include "maps\~map_system\maps.dm"
// END_INCLUDE