Airlock markers - docking and shuttle airlocks (#17717)

* rearrange files

* Squashed commit of the following:

commit ec32b5b6e9
Author: DreamySkrell <>
Date:   Sat Oct 28 22:32:05 2023 +0200

    ccc

commit be750e672d
Author: DreamySkrell <>
Date:   Sat Oct 28 22:01:02 2023 +0200

    cc

commit 1ecd9afb6c
Author: DreamySkrell <>
Date:   Sat Oct 28 21:57:38 2023 +0200

    c

commit 159d1000d9
Author: DreamySkrell <>
Date:   Sat Oct 28 21:40:40 2023 +0200

    nav_ert_dock kill

commit b767a2574a
Author: DreamySkrell <>
Date:   Sat Oct 28 21:24:34 2023 +0200

    a

commit aa01eec1fc
Author: DreamySkrell <>
Date:   Sat Oct 28 21:09:48 2023 +0200

    NAV_HORIZON_DOCK_ALL

commit 4564bfd29f
Author: DreamySkrell <>
Date:   Sat Oct 28 20:55:45 2023 +0200

    burglar and raider to use NAV_HORIZON_EXTERIOR_ALL_DECKS and SNEAKY

commit ec7564fcb1
Author: DreamySkrell <>
Date:   Sat Oct 28 20:43:17 2023 +0200

    merc shuttle to use NAV_HORIZON_EXTERIOR_ALL_DECKS

commit d306934a73
Author: DreamySkrell <>
Date:   Fri Oct 27 00:00:41 2023 +0200

    fix merc and skipjack area/template_noop

commit 0600a348cd
Author: DreamySkrell <>
Date:   Thu Oct 26 22:28:45 2023 +0200

    merc ship generic dock landmark huh

commit c9850622f9
Author: DreamySkrell <>
Date:   Thu Oct 26 20:37:55 2023 +0200

    sane landmark tags

commit 56d9052270
Author: DreamySkrell <>
Date:   Thu Oct 26 20:11:55 2023 +0200

    /horizon/dock/deck_3/port_3

commit 846d737c94
Author: DreamySkrell <>
Date:   Thu Oct 26 20:03:17 2023 +0200

    landmark/horizon/deck -> landmark/horizon/exterior/deck

commit ef5c3d1b09
Author: DreamySkrell <>
Date:   Thu Oct 26 20:02:17 2023 +0200

    landmark/horizon/dock -> landmark/horizon/dock/deck_3/...

commit 1716ef26a8
Author: DreamySkrell <>
Date:   Thu Oct 26 19:54:21 2023 +0200

    docks ruler helpers

commit 18c66a3124
Author: DreamySkrell <>
Date:   Thu Oct 26 19:47:27 2023 +0200

    a

commit 0f2fc4524c
Author: DreamySkrell <>
Date:   Thu Oct 26 19:43:19 2023 +0200

    horizon/nav -> horizon/hangar

commit e13a5233d1
Author: DreamySkrell <>
Date:   Thu Oct 26 19:41:08 2023 +0200

    sccv_horizon_shuttle_landmarks.dm

* Squashed commit of the following:

commit 4d7052be3b
Author: DreamySkrell <>
Date:   Sun Oct 29 14:18:40 2023 +0100

    tests rerun please

commit ae04980347
Author: DreamySkrell <>
Date:   Sun Oct 29 13:25:26 2023 +0100

    oops

commit 176ea80155
Author: DreamySkrell <>
Date:   Sun Oct 29 12:54:25 2023 +0100

    tests rerun please

commit 5cf7db9162
Author: DreamySkrell <>
Date:   Sun Oct 29 12:45:07 2023 +0100

    c

commit f93887a1ef
Author: DreamySkrell <>
Date:   Sun Oct 29 12:43:47 2023 +0100

    jjjjjjjjjjjj

commit 697542a270
Author: DreamySkrell <>
Date:   Sun Oct 29 12:25:32 2023 +0100

    a

commit a83373a62a
Author: DreamySkrell <>
Date:   Sun Oct 29 12:17:47 2023 +0100

    ay

commit baf447a694
Author: DreamySkrell <>
Date:   Sun Oct 29 11:05:38 2023 +0100

    a

* sprites

* code and mapping wip...

* huhhhh

* agony

* docs idk

* intrepid idk

* almost working...

* i fucking love docks

* 568

* m

* kkkkkkkkkkkkkkk

* helper in own file

* a

* tags

* huh

* a

* 1 pixel

* intrepid mf

* spark mf

* access

* guidelines

* g

* gd

* hnyfgjdtjtsdyjdtyj

* m

* c

* a

* fix canary and ert shuttle docking controller tags

* huhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

* remove old changelogs

* sprite

* bad docs removal

---------

Co-authored-by: DreamySkrell <>
This commit is contained in:
DreamySkrell
2023-11-07 12:04:01 +01:00
committed by GitHub
parent a0400144ab
commit a253fcba9c
21 changed files with 5815 additions and 6452 deletions
+6 -1
View File
@@ -906,6 +906,7 @@
#include "code\game\objects\empulse.dm"
#include "code\game\objects\explosion.dm"
#include "code\game\objects\items.dm"
#include "code\game\objects\merge_conflict_marker.dm"
#include "code\game\objects\objs.dm"
#include "code\game\objects\structures.dm"
#include "code\game\objects\auras\auras.dm"
@@ -1927,7 +1928,6 @@
#include "code\modules\effects\ion_trail_follow.dm"
#include "code\modules\effects\shuttle_landing_warning.dm"
#include "code\modules\effects\visual_effect.dm"
#include "code\modules\effects\map_effects\airlock_marker.dm"
#include "code\modules\effects\map_effects\airlock_spawner.dm"
#include "code\modules\effects\map_effects\beam_point.dm"
#include "code\modules\effects\map_effects\door_helper.dm"
@@ -1939,6 +1939,11 @@
#include "code\modules\effects\map_effects\screen_shaker.dm"
#include "code\modules\effects\map_effects\sound_emitter.dm"
#include "code\modules\effects\map_effects\window_spawner.dm"
#include "code\modules\effects\map_effects\marker\_defines.dm"
#include "code\modules\effects\map_effects\marker\airlock_.dm"
#include "code\modules\effects\map_effects\marker\airlock_docking.dm"
#include "code\modules\effects\map_effects\marker\airlock_helper.dm"
#include "code\modules\effects\map_effects\marker\airlock_shuttle.dm"
#include "code\modules\effects\maze_generation\maze_generator.dm"
#include "code\modules\effects\maze_generation\maze_generator_blockwise.dm"
#include "code\modules\effects\maze_generation\maze_helper_atoms.dm"
@@ -8,6 +8,8 @@ SUBSYSTEM_DEF(shuttle)
var/list/ships = list() //List of all ships.
var/list/shuttles = list() //maps shuttle tags to shuttle datums, so that they can be looked up.
var/list/process_shuttles = list() //simple list of shuttles, for processing
/// Map of shuttle landmark `landmark_tag` to the actual landmark object.
var/list/registered_shuttle_landmarks = list()
var/last_landmark_registration_time
var/list/docking_registry = list() //Docking controller tag -> docking controller program, mostly for init purposes.
@@ -0,0 +1,5 @@
/obj/merge_conflict_marker
name = "MERGE CONFLICT MARKER"
icon = 'icons/effects/map_effects.dmi'
icon_state = "portal_projection_side_b"
layer = ABOVE_ALL_MOB_LAYER
@@ -1,121 +0,0 @@
/obj/effect/map_effect/marker
name = "map marker parent abstract object"
icon = 'icons/effects/map_effects.dmi'
icon_state = "map_marker"
/obj/effect/map_effect/marker_helper
name = "map marker helper parent abstract object"
icon = 'icons/effects/map_effects.dmi'
icon_state = "map_marker"
/// Airlock marker that, when placed above airlock components (doors, pumps, sensors, etc),
/// actually sets the airlock up to make it functional.
/obj/effect/map_effect/marker/airlock
name = "airlock marker (inside the airlock)"
desc = "MASTER_TAG VAR MUST BE UNIQUE FOR THE AIRLOCK! Place this on top of airlock components (doors, pumps, sensors, etc)."
icon = 'icons/effects/map_effects.dmi'
icon_state = "airlock_marker"
layer = LIGHTING_LAYER
/// Radio frequency of this airlock.
var/frequency = 2137
/// Unique tag for this airlock. Not visible in game and to the player. Do not leave this as null.
/// THIS MUST BE UNIQUE FOR THE AIRLOCK. Every marker in one airlock should have the same `master_tag`.
/// But different airlocks, even on different maps, cannot share the same `master_tag`.
var/master_tag = null
/// Doors/buttons/etc will be set to this access requirement. If null, they will not have any access requirements.
var/required_access = list(access_external_airlocks)
/// Specialization helper for the airlock marker, to be put above "exterior" parts of the airlock,
/// and on top of the actual airlock marker. By itself does nothing.
/obj/effect/map_effect/marker_helper/airlock/exterior
name = "airlock marker (exterior/outside/vacuum)"
icon = 'icons/effects/map_effects.dmi'
icon_state = "airlock_marker_exterior"
layer = LIGHTING_LAYER
/// Specialization helper for the airlock marker, to be put above "interior" parts of the airlock,
/// and on top of the actual airlock marker. By itself does nothing.
/obj/effect/map_effect/marker_helper/airlock/interior
name = "airlock marker (interior/inside/pressurized)"
icon = 'icons/effects/map_effects.dmi'
icon_state = "airlock_marker_interior"
layer = LIGHTING_LAYER
/obj/effect/map_effect/marker/airlock/Initialize(mapload, ...)
..()
return INITIALIZE_HINT_LATELOAD
#define MASTER_TAG "[master_tag]_controller"
#define AIRPUMP_TAG "[master_tag]_pump"
#define SENSOR_TAG "[master_tag]_sensor"
#define EXTERIOR_DOOR_TAG "[master_tag]_outer"
#define INTERIOR_DOOR_TAG "[master_tag]_inner"
/obj/effect/map_effect/marker/airlock/LateInitialize()
if(!master_tag || !frequency)
return
var/is_interior = locate(/obj/effect/map_effect/marker_helper/airlock/interior) in loc
var/is_exterior = locate(/obj/effect/map_effect/marker_helper/airlock/exterior) in loc
// iterate over airlock components under this marker
// and actually set them up
for(var/thing in loc)
var/obj/machinery/embedded_controller/radio/airlock/airlock_controller/airlock_controller = thing
if(istype(airlock_controller))
airlock_controller.set_frequency(frequency)
airlock_controller.id_tag = MASTER_TAG
airlock_controller.tag_airpump = AIRPUMP_TAG
airlock_controller.tag_chamber_sensor = SENSOR_TAG
airlock_controller.tag_exterior_door = EXTERIOR_DOOR_TAG
airlock_controller.tag_interior_door = INTERIOR_DOOR_TAG
airlock_controller.req_access = required_access
airlock_controller.program = new /datum/computer/file/embedded_program/airlock(airlock_controller)
continue
var/obj/machinery/door/airlock/door = thing
if(istype(door))
door.set_frequency(frequency)
door.req_access = required_access
door.lock()
if(is_interior)
door.id_tag = INTERIOR_DOOR_TAG
else if(is_exterior)
door.id_tag = EXTERIOR_DOOR_TAG
continue
var/obj/machinery/airlock_sensor/sensor = thing
if(istype(sensor))
sensor.set_frequency(frequency)
sensor.id_tag = SENSOR_TAG
sensor.master_tag = MASTER_TAG
continue
var/obj/machinery/atmospherics/unary/vent_pump/pump = thing
if(istype(pump))
pump.frequency = frequency
unregister_radio(pump, frequency)
pump.setup_radio()
pump.id_tag = AIRPUMP_TAG
continue
var/obj/machinery/access_button/button = thing
if(istype(button))
button.set_frequency(frequency)
button.master_tag = MASTER_TAG
button.req_access = required_access
if(is_interior)
button.command = "cycle_interior"
else if(is_exterior)
button.command = "cycle_exterior"
continue
#undef MASTER_TAG
#undef AIRPUMP_TAG
#undef SENSOR_TAG
#undef EXTERIOR_DOOR_TAG
#undef INTERIOR_DOOR_TAG
@@ -0,0 +1,10 @@
#define AIRLOCK_MARKER_TAG_MASTER "[master_tag]"
#define AIRLOCK_MARKER_TAG_SENSOR_CHAMBER "[master_tag]_sensor_chamber"
#define AIRLOCK_MARKER_TAG_SENSOR_INTERIOR "[master_tag]_sensor_interior"
#define AIRLOCK_MARKER_TAG_SENSOR_EXTERIOR "[master_tag]_sensor_exterior"
#define AIRLOCK_MARKER_TAG_DOOR_EXTERIOR "[master_tag]_door_exterior"
#define AIRLOCK_MARKER_TAG_DOOR_INTERIOR "[master_tag]_door_interior"
#define AIRLOCK_MARKER_TAG_AIRPUMP_CHAMBER "[master_tag]_airpump_chamber"
#define AIRLOCK_MARKER_TAG_AIRPUMP_OUT_EXTERNAL "[master_tag]_pump_out_external"
#define AIRLOCK_MARKER_TAG_AIRPUMP_OUT_INTERNAL "[master_tag]_pump_out_internal"
@@ -0,0 +1,118 @@
/obj/effect/map_effect/marker
name = "map marker parent abstract object"
icon = 'icons/effects/map_effects.dmi'
icon_state = "marker_base"
/// Airlock marker that, when placed above airlock components, actually sets them up to make it functional.
/// This is a simple exterior access airlock, not used for docking.
/// See `maps/helpers/guidelines_airlocks.dmm` for examples of good and bad airlocks.
/obj/effect/map_effect/marker/airlock
name = "airlock marker"
desc = "See comments/documentation in code."
icon = 'icons/effects/map_effects.dmi'
icon_state = "marker_airlock"
layer = LIGHTING_LAYER
/// Radio frequency of this airlock.
/// For simple external/service access airlocks it does not affect anything.
var/frequency = 2137
/// Unique tag for this airlock. Not visible in game and to the player. Do not leave this as null.
/// THIS MUST BE UNIQUE FOR THE AIRLOCK. Every marker in one airlock should have the same `master_tag`.
/// Different airlocks, even on different maps, cannot share the same `master_tag`.
var/master_tag = null
/// If true, the airlock will be set up to fill with air from the outside when cycling to exterior,
/// and will empty air to outside before filling with interior air. This makes it so exterior and interior atmospheres do not mix.
/// Should be used for airlocks that may be used on planets with atmosphere and air (as opposed to ships or space stations that stay in vacuum).
var/cycle_to_external_air = FALSE
/// Doors/buttons/etc will be set to this access requirement. If null, they will not have any access requirements.
req_access = null
/// Doors/buttons/etc will be set to this access requirement. If null, they will not have any access requirements.
req_one_access = list(access_external_airlocks)
/obj/effect/map_effect/marker/airlock/Initialize(mapload, ...)
..()
return INITIALIZE_HINT_LATELOAD
/obj/effect/map_effect/marker/airlock/LateInitialize()
if(!master_tag || !frequency)
return
var/is_interior = locate(/obj/effect/map_effect/marker_helper/airlock/interior) in loc
var/is_exterior = locate(/obj/effect/map_effect/marker_helper/airlock/exterior) in loc
var/is_out = locate(/obj/effect/map_effect/marker_helper/airlock/out) in loc
// iterate over airlock components under this marker
// and actually set them up
for(var/thing in loc)
// set up the controller
var/obj/machinery/embedded_controller/radio/airlock/airlock_controller/controller = thing
if(istype(controller))
// common controller vars
controller.set_frequency(frequency)
controller.id_tag = AIRLOCK_MARKER_TAG_MASTER
controller.tag_airpump = AIRLOCK_MARKER_TAG_AIRPUMP_CHAMBER
controller.tag_chamber_sensor = AIRLOCK_MARKER_TAG_SENSOR_CHAMBER
controller.tag_exterior_sensor = AIRLOCK_MARKER_TAG_SENSOR_EXTERIOR
controller.tag_exterior_door = AIRLOCK_MARKER_TAG_DOOR_EXTERIOR
controller.tag_interior_door = AIRLOCK_MARKER_TAG_DOOR_INTERIOR
controller.cycle_to_external_air = cycle_to_external_air
controller.req_access = req_access
controller.req_one_access = req_one_access
// controller subtype specific vars
controller.program = new /datum/computer/file/embedded_program/airlock(controller)
continue
// and all the other airlock components
var/obj/machinery/door/airlock/door = thing
if(istype(door))
door.set_frequency(frequency)
door.req_access = req_access
door.req_one_access = req_one_access
door.lock()
if(is_interior)
door.id_tag = AIRLOCK_MARKER_TAG_DOOR_INTERIOR
else if(is_exterior)
door.id_tag = AIRLOCK_MARKER_TAG_DOOR_EXTERIOR
continue
var/obj/machinery/airlock_sensor/sensor = thing
if(istype(sensor))
sensor.set_frequency(frequency)
sensor.master_tag = AIRLOCK_MARKER_TAG_MASTER
if(is_interior)
sensor.id_tag = AIRLOCK_MARKER_TAG_SENSOR_INTERIOR
else if(is_exterior)
sensor.id_tag = AIRLOCK_MARKER_TAG_SENSOR_EXTERIOR
else
sensor.id_tag = AIRLOCK_MARKER_TAG_SENSOR_CHAMBER
continue
var/obj/machinery/atmospherics/unary/vent_pump/pump = thing
if(istype(pump))
pump.frequency = frequency
unregister_radio(pump, frequency)
pump.setup_radio()
if(is_exterior)
pump.id_tag = AIRLOCK_MARKER_TAG_AIRPUMP_OUT_EXTERNAL
else if(is_out)
pump.id_tag = AIRLOCK_MARKER_TAG_AIRPUMP_OUT_INTERNAL
else
pump.id_tag = AIRLOCK_MARKER_TAG_AIRPUMP_CHAMBER
continue
var/obj/machinery/access_button/button = thing
if(istype(button))
button.set_frequency(frequency)
button.master_tag = AIRLOCK_MARKER_TAG_MASTER
button.req_access = req_access
button.req_one_access = req_one_access
if(is_interior)
button.command = "cycle_interior"
else if(is_exterior)
button.command = "cycle_exterior"
continue
@@ -0,0 +1,117 @@
/// Docking airlock marker that, when placed above airlock components, actually sets them up to make it functional.
/// This is a docking airlock, meaning it is connected to a shuttle landmark object.
/// When some shuttle arrives at that landmark, the actual docking may commence, with the doors of the airlock automatically opening, etc.
/// This is the station/ship side of that docking (the other being the shuttle).
/obj/effect/map_effect/marker/airlock/docking
name = "docking airlock marker"
icon = 'icons/effects/map_effects.dmi'
icon_state = "marker_airlock_docking"
layer = LIGHTING_LAYER
/// Radio frequency of this airlock.
/// For docking airlocks, the frequency of docking port airlock and the shuttle airlock needs to match,
/// otherwise they can't "talk", and the docking will never actually happen.
/// Keep 1380 as default frequency, to maximize compatibility between various shuttles and docks.
frequency = 1380
/// Unique tag for this airlock. Not visible in game and to the player. Do not leave this as null.
/// THIS MUST BE UNIQUE FOR THE AIRLOCK. Every marker in one airlock should have the same `master_tag`.
/// Different airlocks, even on different maps, cannot share the same `master_tag`.
/// This must be the same as the `docking_controller` tag in the shuttle landmark object.
master_tag = null
/// Tag of the shuttle landmark, that this docking port is supposed to be connected to.
/// Same as `landmark_tag` var of the shuttle landmark object, and same as the key for `registered_shuttle_landmarks` in shuttle subsystem.
var/landmark_tag = null
/obj/effect/map_effect/marker/airlock/docking/LateInitialize()
if(!master_tag || !frequency || !landmark_tag)
return
var/is_interior = locate(/obj/effect/map_effect/marker_helper/airlock/interior) in loc
var/is_exterior = locate(/obj/effect/map_effect/marker_helper/airlock/exterior) in loc
var/is_out = locate(/obj/effect/map_effect/marker_helper/airlock/out) in loc
// iterate over airlock components under this marker
// and actually set them up
for(var/thing in loc)
// set up the controller
var/obj/machinery/embedded_controller/radio/airlock/docking_port/controller = thing
if(istype(controller))
// common controller vars
controller.set_frequency(frequency)
controller.id_tag = AIRLOCK_MARKER_TAG_MASTER
controller.tag_airpump = AIRLOCK_MARKER_TAG_AIRPUMP_CHAMBER
controller.tag_chamber_sensor = AIRLOCK_MARKER_TAG_SENSOR_CHAMBER
controller.tag_exterior_sensor = AIRLOCK_MARKER_TAG_SENSOR_EXTERIOR
controller.tag_exterior_door = AIRLOCK_MARKER_TAG_DOOR_EXTERIOR
controller.tag_interior_door = AIRLOCK_MARKER_TAG_DOOR_INTERIOR
controller.cycle_to_external_air = cycle_to_external_air
controller.req_access = req_access
controller.req_one_access = req_one_access
// controller subtype specific vars
controller.airlock_program = new /datum/computer/file/embedded_program/airlock/docking(controller)
controller.docking_program = new /datum/computer/file/embedded_program/docking/airlock(controller, controller.airlock_program)
controller.program = controller.docking_program
if(SSshuttle.registered_shuttle_landmarks[landmark_tag])
var/obj/effect/shuttle_landmark/landmark = SSshuttle.registered_shuttle_landmarks[landmark_tag]
landmark.docking_controller = SSshuttle.docking_registry[AIRLOCK_MARKER_TAG_MASTER]
continue
var/obj/effect/shuttle_landmark/landmark = thing
if(istype(landmark))
if(SSshuttle.docking_registry[AIRLOCK_MARKER_TAG_MASTER])
landmark.docking_controller = SSshuttle.docking_registry[AIRLOCK_MARKER_TAG_MASTER]
continue
// and all the other airlock components
var/obj/machinery/door/airlock/door = thing
if(istype(door))
door.set_frequency(frequency)
door.req_access = req_access
door.req_one_access = req_one_access
door.lock()
if(is_interior)
door.id_tag = AIRLOCK_MARKER_TAG_DOOR_INTERIOR
else if(is_exterior)
door.id_tag = AIRLOCK_MARKER_TAG_DOOR_EXTERIOR
continue
var/obj/machinery/airlock_sensor/sensor = thing
if(istype(sensor))
sensor.set_frequency(frequency)
sensor.master_tag = AIRLOCK_MARKER_TAG_MASTER
if(is_interior)
sensor.id_tag = AIRLOCK_MARKER_TAG_SENSOR_INTERIOR
else if(is_exterior)
sensor.id_tag = AIRLOCK_MARKER_TAG_SENSOR_EXTERIOR
else
sensor.id_tag = AIRLOCK_MARKER_TAG_SENSOR_CHAMBER
continue
var/obj/machinery/atmospherics/unary/vent_pump/pump = thing
if(istype(pump))
pump.frequency = frequency
unregister_radio(pump, frequency)
pump.setup_radio()
if(is_exterior)
pump.id_tag = AIRLOCK_MARKER_TAG_AIRPUMP_OUT_EXTERNAL
else if(is_out)
pump.id_tag = AIRLOCK_MARKER_TAG_AIRPUMP_OUT_INTERNAL
else
pump.id_tag = AIRLOCK_MARKER_TAG_AIRPUMP_CHAMBER
continue
var/obj/machinery/access_button/button = thing
if(istype(button))
button.set_frequency(frequency)
button.master_tag = AIRLOCK_MARKER_TAG_MASTER
button.req_access = req_access
button.req_one_access = req_one_access
if(is_interior)
button.command = "cycle_interior"
else if(is_exterior)
button.command = "cycle_exterior"
continue
@@ -0,0 +1,28 @@
/obj/effect/map_effect/marker_helper
name = "map marker helper parent abstract object"
icon = 'icons/effects/map_effects.dmi'
icon_state = "marker_base"
/// Specialization helper for the airlock marker. By itself does nothing.
/// To be put above "exterior" components of the airlock, and on top of the actual airlock marker.
/obj/effect/map_effect/marker_helper/airlock/exterior
name = "airlock marker helper (exterior/outside/vacuum)"
icon = 'icons/effects/map_effects.dmi'
icon_state = "marker_helper_airlock_exterior"
layer = LIGHTING_LAYER
/// Specialization helper for the airlock marker, to be put above "interior" parts of the airlock,
/// and on top of the actual airlock marker. By itself does nothing.
/obj/effect/map_effect/marker_helper/airlock/interior
name = "airlock marker helper (interior/inside/pressurized)"
icon = 'icons/effects/map_effects.dmi'
icon_state = "marker_helper_airlock_interior"
layer = LIGHTING_LAYER
/// Specialization helper for the airlock marker, to be put above the out pump of the airlock,
/// and on top of the actual airlock marker. By itself does nothing.
/obj/effect/map_effect/marker_helper/airlock/out
name = "airlock marker helper (chamber, out pump)"
icon = 'icons/effects/map_effects.dmi'
icon_state = "marker_helper_airlock_out"
layer = LIGHTING_LAYER
@@ -0,0 +1,111 @@
/// Docking airlock marker that, when placed above airlock components, actually sets them up to make it functional.
/// This is a docking airlock specialized for shuttles, and is connected to a shuttle datum.
/// When that shuttle arrives at some landmark, the actual docking may commence, with the doors of the airlock automatically opening, etc.
/// This is the shuttle side of that docking (the other being the station/ship).
/obj/effect/map_effect/marker/airlock/shuttle
name = "shuttle docking airlock marker"
icon = 'icons/effects/map_effects.dmi'
icon_state = "marker_airlock_shuttle"
layer = LIGHTING_LAYER
/// Radio frequency of this airlock.
/// For docking airlocks, the frequency of docking port airlock and the shuttle airlock needs to match,
/// otherwise they can't "talk", and the docking will never actually happen (meaning the automatic opening/closing of doors).
/// Keep 1380 as default frequency, to maximize compatibility between various shuttles and docks.
frequency = 1380
/// Unique tag for this airlock. Not visible in game and to the player. Do not leave this as null.
/// THIS MUST BE UNIQUE FOR THE AIRLOCK. Every marker in one airlock should have the same `master_tag`.
/// Different airlocks, even on different maps, cannot share the same `master_tag`.
/// This must be the same as the `dock_target` tag in the shuttle datum.
master_tag = null
/// Tag of the shuttle, that this docking port is supposed to be connected to.
/// Same as `name` var of the shuttle datum, and same as the key for `shuttles` in shuttle subsystem.
var/shuttle_tag = null
/obj/effect/map_effect/marker/airlock/shuttle/LateInitialize()
if(!master_tag || !frequency || !shuttle_tag)
return
var/is_interior = locate(/obj/effect/map_effect/marker_helper/airlock/interior) in loc
var/is_exterior = locate(/obj/effect/map_effect/marker_helper/airlock/exterior) in loc
var/is_out = locate(/obj/effect/map_effect/marker_helper/airlock/out) in loc
// iterate over airlock components under this marker
// and actually set them up
for(var/thing in loc)
// set up the controller
var/obj/machinery/embedded_controller/radio/airlock/docking_port/controller = thing
if(istype(controller))
// common controller vars
controller.set_frequency(frequency)
controller.id_tag = AIRLOCK_MARKER_TAG_MASTER
controller.tag_airpump = AIRLOCK_MARKER_TAG_AIRPUMP_CHAMBER
controller.tag_chamber_sensor = AIRLOCK_MARKER_TAG_SENSOR_CHAMBER
controller.tag_exterior_sensor = AIRLOCK_MARKER_TAG_SENSOR_EXTERIOR
controller.tag_exterior_door = AIRLOCK_MARKER_TAG_DOOR_EXTERIOR
controller.tag_interior_door = AIRLOCK_MARKER_TAG_DOOR_INTERIOR
controller.cycle_to_external_air = cycle_to_external_air
controller.req_access = req_access
controller.req_one_access = req_one_access
// controller subtype specific vars
controller.airlock_program = new /datum/computer/file/embedded_program/airlock/docking(controller)
controller.docking_program = new /datum/computer/file/embedded_program/docking/airlock(controller, controller.airlock_program)
controller.program = controller.docking_program
if(SSshuttle.shuttles[shuttle_tag])
var/datum/shuttle/autodock/shuttle = SSshuttle.shuttles[shuttle_tag]
shuttle.dock_target = AIRLOCK_MARKER_TAG_MASTER
continue
// and all the other airlock components
var/obj/machinery/door/airlock/door = thing
if(istype(door))
door.set_frequency(frequency)
door.req_access = req_access
door.req_one_access = req_one_access
door.lock()
if(is_interior)
door.id_tag = AIRLOCK_MARKER_TAG_DOOR_INTERIOR
else if(is_exterior)
door.id_tag = AIRLOCK_MARKER_TAG_DOOR_EXTERIOR
continue
var/obj/machinery/airlock_sensor/sensor = thing
if(istype(sensor))
sensor.set_frequency(frequency)
sensor.master_tag = AIRLOCK_MARKER_TAG_MASTER
if(is_interior)
sensor.id_tag = AIRLOCK_MARKER_TAG_SENSOR_INTERIOR
else if(is_exterior)
sensor.id_tag = AIRLOCK_MARKER_TAG_SENSOR_EXTERIOR
else
sensor.id_tag = AIRLOCK_MARKER_TAG_SENSOR_CHAMBER
continue
var/obj/machinery/atmospherics/unary/vent_pump/pump = thing
if(istype(pump))
pump.frequency = frequency
unregister_radio(pump, frequency)
pump.setup_radio()
if(is_exterior)
pump.id_tag = AIRLOCK_MARKER_TAG_AIRPUMP_OUT_EXTERNAL
else if(is_out)
pump.id_tag = AIRLOCK_MARKER_TAG_AIRPUMP_OUT_INTERNAL
else
pump.id_tag = AIRLOCK_MARKER_TAG_AIRPUMP_CHAMBER
continue
var/obj/machinery/access_button/button = thing
if(istype(button))
button.set_frequency(frequency)
button.master_tag = AIRLOCK_MARKER_TAG_MASTER
button.req_access = req_access
button.req_one_access = req_one_access
if(is_interior)
button.command = "cycle_interior"
else if(is_exterior)
button.command = "cycle_exterior"
continue
+2 -1
View File
@@ -4,7 +4,8 @@
var/in_use = null //tells the controller whether this shuttle needs processing, also attempts to prevent double-use
var/last_dock_attempt_time = 0
var/current_dock_target
//ID of the controller on the shuttle
/// `id_tag`/`master_tag` of the docking controller of this shuttle.
var/dock_target = null
var/obj/effect/shuttle_landmark/next_location
@@ -0,0 +1,48 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
# balance
# admin
# backend
# security
# refactor
#################################
# Your name.
author: DreamySkrell
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Airlock markers: Adds support for docking and shuttle airlocks."
- rscadd: "Airlock markers: Adds support for out pumps."
- maptweak: "Adds examples for docking and shuttle airlocks to the airlock guidelines helper map."
- maptweak: "Remaps third deck docks to use docking airlock markers."
- maptweak: "Remaps Intrepid and Spark to use docking airlock markers."
- maptweak: "Changes frequencies of airlocks of antag shuttles to work with new docks."
- bugfix: "Fixes bad canary and ert shuttle docking controller tags."
- rscadd: "Adds merge conflict marker for use with mapmerge2."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

-1
View File
@@ -592,7 +592,6 @@ AURORA_ESCAPE_POD(4)
/obj/effect/shuttle_landmark/distress/blue
name = "First Deck Port Hangar Bay 2b"
landmark_tag = "nav_distress_blue"
docking_controller = "distress_shuttle_dock"
special_dock_targets = list("Distress Shuttle" = "distress_shuttle_fore")
landmark_flags = SLANDMARK_FLAG_AUTOSET
base_turf = /turf/simulated/floor/plating
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -27,43 +27,42 @@
/obj/effect/shuttle_landmark/horizon/dock/deck_3/starboard_1
name = "Third Deck Starboard Dock 1"
landmark_tag = "nav_horizon_dock_deck_3_starboard_1"
docking_controller = "nuke_shuttle_dock_airlock"
docking_controller = "airlock_horizon_dock_deck_3_starboard_1"
base_turf = /turf/simulated/floor/reinforced/airless
base_area = /area/space
/obj/effect/shuttle_landmark/horizon/dock/deck_3/starboard_2
name = "Third Deck Starboard Dock 2"
landmark_tag = "nav_horizon_dock_deck_3_starboard_2"
docking_controller = "dock_horizon_1_airlock"
docking_controller = "airlock_horizon_dock_deck_3_starboard_2"
base_turf = /turf/simulated/floor/reinforced/airless
base_area = /area/space
/obj/effect/shuttle_landmark/horizon/dock/deck_3/starboard_3
name = "Third Deck Starboard Dock 3"
landmark_tag = "nav_horizon_dock_deck_3_starboard_3"
docking_controller = "dock_horizon_3_airlock"
docking_controller = "airlock_horizon_dock_deck_3_starboard_3"
base_turf = /turf/simulated/floor/reinforced/airless
base_area = /area/space
/obj/effect/shuttle_landmark/horizon/dock/deck_3/port_1
name = "Third Deck Port Dock 1"
landmark_tag = "nav_horizon_dock_deck_3_port_2"
docking_controller = "green_dock_aft_airlock"
docking_controller = "airlock_horizon_dock_deck_3_port_2"
base_turf = /turf/simulated/floor/reinforced/airless
base_area = /area/space
/obj/effect/shuttle_landmark/horizon/dock/deck_3/port_2
name = "Third Deck Port Dock 2"
landmark_tag = "nav_horizon_dock_deck_3_port_4"
docking_controller = "dock_horizon_4_airlock"
docking_controller = "airlock_horizon_dock_deck_3_port_4"
base_turf = /turf/simulated/floor/reinforced/airless
base_area = /area/space
/obj/effect/shuttle_landmark/horizon/dock/deck_3/port_3
name = "Third Deck Port Dock 3"
landmark_tag = "nav_horizon_dock_deck_3_port_5"
docking_controller = "specops_dock_airlock"
docking_controller = "airlock_horizon_dock_deck_3_port_5"
base_turf = /turf/simulated/floor/reinforced/airless
base_area = /area/space
@@ -109,7 +109,7 @@
name = "Intrepid"
move_time = 20
shuttle_area = list(/area/shuttle/intrepid/crew_compartment, /area/shuttle/intrepid/cargo_bay, /area/shuttle/intrepid/engine_compartment, /area/shuttle/intrepid/atmos_compartment, /area/shuttle/intrepid/cockpit, /area/shuttle/intrepid/quarters)
dock_target = "intrepid_shuttle"
dock_target = "airlock_shuttle_intrepid"
current_location = "nav_hangar_intrepid"
landmark_transition = "nav_transit_intrepid"
range = 2
@@ -157,7 +157,7 @@
name = "Spark"
move_time = 20
shuttle_area = /area/shuttle/mining
dock_target = "mining_shuttle_controller"
dock_target = "airlock_shuttle_spark"
current_location = "nav_hangar_mining"
landmark_transition = "nav_transit_mining"
range = 1
+226 -136
View File
@@ -2352,7 +2352,7 @@
/obj/machinery/embedded_controller/radio/simple_docking_controller{
dir = 8;
frequency = 1386;
id_tag = "canary";
id_tag = "canary_dock";
name = "\improper Canary docking port controller";
pixel_x = 22;
pixel_y = -19;
@@ -2812,20 +2812,20 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/aux,
/obj/machinery/access_button{
command = "cycle_interior";
frequency = 1380;
master_tag = "mining_shuttle_controller";
name = "interior access button";
pixel_x = -25;
pixel_y = 20;
req_one_access = list(31,48,67)
pixel_y = 20
},
/obj/machinery/airlock_sensor/airlock_interior{
frequency = 1380;
id_tag = "mining_shuttle_interior_sensor";
pixel_x = -25;
pixel_y = 27
},
/obj/effect/map_effect/marker/airlock/shuttle{
master_tag = "airlock_shuttle_spark";
name = "airlock_shuttle_spark";
shuttle_tag = "Spark";
req_one_access = list(31,48,67)
},
/obj/effect/map_effect/marker_helper/airlock/interior,
/turf/simulated/floor/tiled/dark,
/area/shuttle/mining)
"bZR" = (
@@ -4520,13 +4520,19 @@
},
/area/engineering/atmos/propulsion)
"dir" = (
/obj/structure/lattice/catwalk/indoor,
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 1;
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_pump_out_internal";
layer = 2.8
},
/obj/structure/lattice/catwalk/indoor,
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/out,
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"diJ" = (
@@ -6987,10 +6993,7 @@
"eTV" = (
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1380;
icon_state = "door_locked";
id_tag = "mining_shuttle_external";
req_access = list(13)
icon_state = "door_locked"
},
/obj/structure/cable/green{
icon_state = "1-2"
@@ -6998,16 +7001,18 @@
/obj/effect/landmark/entry_point/aft{
name = "aft, airlock"
},
/obj/machinery/access_button{
command = "cycle_exterior";
dir = 1;
frequency = 1380;
master_tag = "mining_shuttle_controller";
name = "exterior access button";
pixel_x = -21;
pixel_y = 11;
/obj/effect/map_effect/marker/airlock/shuttle{
master_tag = "airlock_shuttle_spark";
name = "airlock_shuttle_spark";
shuttle_tag = "Spark";
req_one_access = list(31,48,67)
},
/obj/effect/map_effect/marker_helper/airlock/exterior,
/obj/machinery/access_button{
pixel_x = 28;
pixel_y = 12;
dir = 1
},
/turf/simulated/floor/plating,
/area/shuttle/mining)
"eVk" = (
@@ -7308,6 +7313,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/hidden/aux{
dir = 5
},
/turf/simulated/wall/shuttle/unique/scc/research{
icon_state = "11,17"
},
@@ -8076,9 +8084,6 @@
/obj/effect/floor_decal/industrial/warning{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/hidden/red{
dir = 5
},
/turf/simulated/floor/reinforced{
blocks_air = 1;
density = 1;
@@ -8796,24 +8801,16 @@
/area/shuttle/mining)
"fZQ" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_pump_out_external";
layer = 2.8
},
/obj/machinery/access_button{
command = "cycle_exterior";
dir = 4;
frequency = 1385;
layer = 3.1;
master_tag = "intrepid_shuttle_cargo";
name = "exterior access button";
pixel_x = -22;
pixel_y = 2
},
/obj/machinery/airlock_sensor/airlock_exterior{
dir = 4;
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_exterior_sensor";
pixel_x = -21;
pixel_y = 10
},
@@ -8826,6 +8823,14 @@
id = "intrepid_bay_outer";
name = "Intrepid Shutter"
},
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/exterior,
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"fZX" = (
@@ -12251,16 +12256,10 @@
icon_state = "4-8"
},
/obj/machinery/access_button{
command = "cycle_interior";
frequency = 1385;
master_tag = "intrepid_shuttle_cargo";
name = "interior access button";
pixel_x = -5;
pixel_y = 20
},
/obj/machinery/airlock_sensor/airlock_interior{
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_interior_sensor";
pixel_x = -5;
pixel_y = 25
},
@@ -12271,6 +12270,14 @@
pixel_x = 7;
pixel_y = 25
},
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/interior,
/turf/simulated/floor/tiled/dark/full,
/area/shuttle/intrepid/cargo_bay)
"iDk" = (
@@ -12949,6 +12956,16 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
/obj/machinery/embedded_controller/radio/simple_docking_controller{
dir = 1;
frequency = 1380;
id_tag = "mining_shuttle_dock";
name = "\improper Spark docking port controller";
pixel_x = 6;
pixel_y = -19;
req_one_access = list(31,48,67);
tag_door = "mining_shuttle_dock_doors"
},
/turf/simulated/floor/tiled,
/area/hangar/operations)
"jbR" = (
@@ -14270,10 +14287,16 @@
},
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1385;
icon_state = "door_locked";
id_tag = "intrepid_shuttle_cargo_out"
icon_state = "door_locked"
},
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/exterior,
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"jYy" = (
@@ -14572,13 +14595,19 @@
c_tag = "Intrepid - Airlock Aft";
dir = 4
},
/obj/structure/lattice/catwalk/indoor,
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 1;
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_pump_out_internal";
layer = 2.8
},
/obj/structure/lattice/catwalk/indoor,
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/out,
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"kkS" = (
@@ -14960,8 +14989,6 @@
/area/horizon/custodial/disposals)
"kxk" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_pump_out_external";
layer = 2.8
},
/obj/structure/lattice/catwalk/indoor/grate,
@@ -14974,6 +15001,14 @@
name = "Intrepid Shutter"
},
/obj/item/device/radio/intercom/expedition/east,
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/exterior,
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"kyq" = (
@@ -15695,8 +15730,14 @@
/turf/simulated/floor/plating,
/area/maintenance/engineering)
"kVu" = (
/obj/machinery/atmospherics/pipe/simple/hidden/aux{
dir = 5
/obj/effect/map_effect/marker/airlock/shuttle{
master_tag = "airlock_shuttle_spark";
name = "airlock_shuttle_spark";
shuttle_tag = "Spark";
req_one_access = list(31,48,67)
},
/obj/machinery/atmospherics/pipe/manifold/hidden/aux{
dir = 8
},
/turf/simulated/floor/plating,
/area/shuttle/mining)
@@ -17921,10 +17962,16 @@
},
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1385;
icon_state = "door_locked";
id_tag = "intrepid_shuttle_cargo_in"
icon_state = "door_locked"
},
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/interior,
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"mxq" = (
@@ -19397,8 +19444,6 @@
/area/hangar/control)
"nvn" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_pump_out_external";
layer = 2.8
},
/obj/structure/lattice/catwalk/indoor/grate,
@@ -19407,6 +19452,14 @@
id = "intrepid_bay_outer";
name = "Intrepid Shutter"
},
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/exterior,
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"nvV" = (
@@ -19494,10 +19547,16 @@
},
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1385;
icon_state = "door_locked";
id_tag = "intrepid_shuttle_cargo_in"
icon_state = "door_locked"
},
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/interior,
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"nyl" = (
@@ -19615,9 +19674,6 @@
},
/area/shuttle/intrepid/engine_compartment)
"nBA" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
name = "Spark scrubber vent"
},
/obj/effect/floor_decal/industrial/warning{
dir = 8
},
@@ -19744,9 +19800,23 @@
/turf/simulated/floor/plating,
/area/engineering/drone_fabrication)
"nIP" = (
/turf/simulated/wall/shuttle/unique/scc/research{
icon_state = "11,17"
/obj/machinery/access_button{
dir = 1;
pixel_x = -28;
pixel_y = 11
},
/obj/machinery/door/airlock/external{
dir = 1;
icon_state = "door_locked"
},
/obj/effect/map_effect/marker/airlock/shuttle{
master_tag = "airlock_shuttle_spark";
name = "airlock_shuttle_spark";
shuttle_tag = "Spark";
req_one_access = list(31,48,67)
},
/obj/effect/map_effect/marker_helper/airlock/exterior,
/turf/simulated/floor/plating,
/area/shuttle/mining)
"nJB" = (
/turf/simulated/wall/shuttle/unique/scc/research{
@@ -22876,12 +22946,17 @@
/turf/simulated/floor/reinforced/phoron,
/area/engineering/atmos)
"pTp" = (
/obj/structure/lattice/catwalk/indoor,
/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_pump";
layer = 2.8
},
/obj/structure/lattice/catwalk/indoor,
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"pTw" = (
@@ -25322,20 +25397,16 @@
/turf/simulated/floor/reinforced,
/area/rnd/isolation_c)
"rBI" = (
/obj/effect/floor_decal/corner/brown{
dir = 10
},
/obj/machinery/embedded_controller/radio/simple_docking_controller{
/obj/effect/floor_decal/industrial/hatch/yellow,
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1380;
id_tag = "mining_shuttle_dock";
name = "\improper Spark docking port controller";
pixel_x = 6;
pixel_y = -25;
req_one_access = list(31,48,67);
tag_door = "mining_shuttle_dock_doors"
icon_state = "door_locked";
id_tag = "mining_shuttle_dock_doors";
req_access = list(13)
},
/turf/simulated/floor/tiled,
/obj/structure/plasticflaps/airtight,
/turf/simulated/floor/tiled/full,
/area/hangar/operations)
"rBR" = (
/obj/structure/cable/green{
@@ -25496,10 +25567,16 @@
},
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1385;
icon_state = "door_locked";
id_tag = "intrepid_shuttle_cargo_out"
icon_state = "door_locked"
},
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/exterior,
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"rKM" = (
@@ -25553,20 +25630,26 @@
/turf/simulated/floor/tiled/dark,
/area/turret_protected/ai_upload)
"rMm" = (
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1380;
icon_state = "door_locked";
id_tag = "mining_shuttle_internal";
req_access = list(13)
},
/obj/structure/cable/green{
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/hidden/aux,
/obj/machinery/atmospherics/pipe/simple/hidden/fuel{
dir = 8
},
/obj/effect/map_effect/marker/airlock/shuttle{
master_tag = "airlock_shuttle_spark";
name = "airlock_shuttle_spark";
shuttle_tag = "Spark";
req_one_access = list(31,48,67)
},
/obj/effect/map_effect/marker_helper/airlock/interior,
/obj/machinery/atmospherics/pipe/simple/hidden/aux{
dir = 10
},
/obj/machinery/door/airlock/external{
dir = 1;
icon_state = "door_locked"
},
/turf/simulated/floor/plating,
/area/shuttle/mining)
"rNe" = (
@@ -25962,9 +26045,11 @@
/obj/structure/bed/handrail{
dir = 8
},
/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{
frequency = 1380;
id_tag = "mining_shuttle_pump"
/obj/effect/map_effect/marker/airlock/shuttle{
master_tag = "airlock_shuttle_spark";
name = "airlock_shuttle_spark";
shuttle_tag = "Spark";
req_one_access = list(31,48,67)
},
/turf/simulated/floor/plating,
/area/shuttle/mining)
@@ -27297,29 +27382,25 @@
/obj/structure/bed/handrail{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/hidden/aux{
dir = 4
},
/obj/machinery/embedded_controller/radio/airlock/docking_port{
dir = 8;
frequency = 1380;
id_tag = "mining_shuttle_controller";
pixel_x = 25;
pixel_y = 5;
req_one_access = list(31,48,67);
tag_airpump = "mining_shuttle_pump";
tag_chamber_sensor = "mining_shuttle_sensor";
tag_exterior_door = "mining_shuttle_external";
tag_interior_door = "mining_shuttle_internal";
tag_interior_sensor = "mining_shuttle_interior_sensor"
pixel_y = 5
},
/obj/machinery/airlock_sensor{
dir = 8;
frequency = 1380;
id_tag = "mining_shuttle_sensor";
pixel_x = 25;
pixel_y = -7
},
/obj/effect/map_effect/marker/airlock/shuttle{
master_tag = "airlock_shuttle_spark";
name = "airlock_shuttle_spark";
shuttle_tag = "Spark";
req_one_access = list(31,48,67)
},
/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{
dir = 8
},
/turf/simulated/floor/plating,
/area/shuttle/mining)
"sYf" = (
@@ -30098,7 +30179,9 @@
/obj/effect/floor_decal/industrial/warning{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/hidden/red,
/obj/machinery/atmospherics/pipe/simple/hidden/red{
dir = 5
},
/turf/simulated/floor/reinforced{
blocks_air = 1;
density = 1;
@@ -31216,10 +31299,13 @@
/obj/machinery/light/small{
dir = 8
},
/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{
frequency = 1380;
id_tag = "mining_shuttle_pump"
/obj/effect/map_effect/marker/airlock/shuttle{
master_tag = "airlock_shuttle_spark";
name = "airlock_shuttle_spark";
shuttle_tag = "Spark";
req_one_access = list(31,48,67)
},
/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux,
/turf/simulated/floor/plating,
/area/shuttle/mining)
"vFL" = (
@@ -33485,20 +33571,23 @@
"xjL" = (
/obj/machinery/airlock_sensor{
dir = 4;
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_sensor";
pixel_x = -24;
pixel_y = -6
},
/obj/structure/bed/handrail{
dir = 4
},
/obj/structure/lattice/catwalk/indoor,
/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_pump";
layer = 2.8
},
/obj/structure/lattice/catwalk/indoor,
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"xjQ" = (
@@ -33849,12 +33938,17 @@
/area/operations/storage)
"xqo" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_pump";
layer = 2.8
},
/obj/structure/lattice/catwalk/indoor,
/obj/item/device/radio/intercom/expedition/east,
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"xqv" = (
@@ -35170,31 +35264,27 @@
/turf/simulated/floor/tiled/dark,
/area/operations/loading)
"yib" = (
/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{
cycle_to_external_air = 1;
dir = 8;
frequency = 1385;
id_tag = "intrepid_shuttle_cargo";
layer = 3.3;
master_tag = "intrepid_shuttle";
pixel_x = 24;
tag_airpump = "intrepid_shuttle_cargo_pump";
tag_chamber_sensor = "intrepid_shuttle_cargo_sensor";
tag_exterior_door = "intrepid_shuttle_cargo_out";
tag_exterior_sensor = "intrepid_shuttle_cargo_exterior_sensor";
tag_interior_door = "intrepid_shuttle_cargo_in";
tag_interior_sensor = "intrepid_shuttle_cargo_interior_sensor"
},
/obj/machinery/light/small/red{
dir = 4
},
/obj/structure/lattice/catwalk/indoor,
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 1;
frequency = 1385;
id_tag = "intrepid_shuttle_cargo_pump_out_internal";
layer = 2.8
},
/obj/structure/lattice/catwalk/indoor,
/obj/effect/map_effect/marker/airlock/shuttle{
cycle_to_external_air = 1;
master_tag = "airlock_shuttle_intrepid";
name = "airlock_shuttle_intrepid";
shuttle_tag = "Intrepid";
req_one_access = null
},
/obj/effect/map_effect/marker_helper/airlock/out,
/obj/machinery/embedded_controller/radio/airlock/docking_port{
dir = 8;
pixel_y = 6;
pixel_x = 20
},
/turf/simulated/floor/plating,
/area/shuttle/intrepid/cargo_bay)
"yiT" = (
@@ -50822,8 +50912,8 @@ tPr
dNk
jyX
rcA
oXD
rBI
ukS
nIP
vFD
kVu
File diff suppressed because it is too large Load Diff
+51 -45
View File
@@ -4660,7 +4660,7 @@
"akr" = (
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1332;
frequency = 1380;
icon_state = "door_locked";
id_tag = "pirate_hideout_door";
locked = 1;
@@ -21411,7 +21411,7 @@
req_access = list(150)
},
/obj/machinery/embedded_controller/radio/simple_docking_controller{
frequency = 1337;
frequency = 1380;
id_tag = "burglar_shuttle";
name = "airlock controller";
pixel_x = 23;
@@ -24362,17 +24362,17 @@
},
/obj/machinery/door/airlock/hatch{
dir = 4;
frequency = 1337;
frequency = 1380;
id_tag = "burglar_shuttle_hatch";
locked = 1;
req_access = list(150)
},
/obj/machinery/button/remote/blast_door{
dir = 1;
dir = 2;
id = "burglar_blast";
layer = 3;
name = "blast door";
pixel_y = -21;
pixel_y = -19;
req_access = list(150)
},
/turf/simulated/floor/shuttle/black,
@@ -25019,15 +25019,15 @@
/area/antag/burglar)
"bjs" = (
/obj/structure/shuttle/engine/propulsion/burst/left,
/turf/unsimulated/floor/plating,
/turf/simulated/wall/shuttle/space_ship/mercenary,
/area/shuttle/burglar)
"bjt" = (
/obj/structure/shuttle/engine/propulsion/burst,
/turf/unsimulated/floor/plating,
/turf/simulated/wall/shuttle/space_ship/mercenary,
/area/shuttle/burglar)
"bju" = (
/obj/structure/shuttle/engine/propulsion/burst/right,
/turf/unsimulated/floor/plating,
/turf/simulated/wall/shuttle/space_ship/mercenary,
/area/shuttle/burglar)
"bjw" = (
/obj/machinery/light/small/emergency,
@@ -26640,7 +26640,7 @@
/area/template_noop)
"boa" = (
/obj/machinery/embedded_controller/radio/simple_docking_controller{
frequency = 1337;
frequency = 1380;
id_tag = "merc_base";
pixel_x = -25;
pixel_y = -5
@@ -27238,7 +27238,7 @@
"boT" = (
/obj/machinery/door/airlock/external{
dir = 4;
frequency = 1337;
frequency = 1380;
id_tag = "merc_shuttle_inner";
name = "Ship External Access";
req_access = list(0)
@@ -27247,8 +27247,9 @@
/obj/machinery/button/remote/blast_door{
id = "smindicate2";
name = "internal blast door";
pixel_y = 23;
req_access = list(150)
pixel_y = 26;
req_access = list(150);
dir = 1
},
/obj/machinery/door/blast/regular{
density = 0;
@@ -27262,7 +27263,7 @@
"boU" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 4;
frequency = 1337;
frequency = 1380;
id_tag = "merc_shuttle_pump"
},
/obj/effect/floor_decal/industrial/warning{
@@ -27275,7 +27276,7 @@
dir = 1
},
/obj/machinery/airlock_sensor{
frequency = 1337;
frequency = 1380;
id_tag = "merc_shuttle_sensor";
pixel_x = 8;
pixel_y = 25
@@ -27286,11 +27287,11 @@
"boW" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 8;
frequency = 1337;
frequency = 1380;
id_tag = "merc_shuttle_pump"
},
/obj/machinery/embedded_controller/radio/airlock/docking_port{
frequency = 1337;
frequency = 1380;
id_tag = "merc_shuttle";
pixel_x = -8;
pixel_y = 25;
@@ -27304,7 +27305,7 @@
"boX" = (
/obj/machinery/door/airlock/external{
dir = 4;
frequency = 1337;
frequency = 1380;
id_tag = "merc_shuttle_outer";
name = "Ship External Access";
req_access = list(150)
@@ -27320,15 +27321,16 @@
/obj/machinery/button/remote/blast_door{
id = "smindicate";
name = "external blast door";
pixel_y = 23;
req_access = list(150)
pixel_y = 26;
req_access = list(150);
dir = 1
},
/turf/simulated/floor/tiled/dark,
/area/shuttle/mercenary)
"boY" = (
/obj/machinery/door/airlock/external{
dir = 4;
frequency = 1337;
frequency = 1380;
id_tag = "merc_base_hatch";
req_access = list(150)
},
@@ -27584,7 +27586,7 @@
"bpE" = (
/obj/machinery/door/airlock/external{
dir = 4;
frequency = 1337;
frequency = 1380;
id_tag = "merc_shuttle_inner";
name = "Ship External Access";
req_access = list(0)
@@ -27592,7 +27594,7 @@
/obj/effect/floor_decal/industrial/hatch/yellow,
/obj/machinery/access_button{
command = "cycle_interior";
frequency = 1337;
frequency = 1380;
master_tag = "merc_shuttle";
name = "interior access button";
pixel_x = -1;
@@ -27616,7 +27618,7 @@
"bpG" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 8;
frequency = 1337;
frequency = 1380;
id_tag = "merc_shuttle_pump"
},
/obj/effect/floor_decal/industrial/warning{
@@ -27627,7 +27629,7 @@
"bpH" = (
/obj/machinery/door/airlock/external{
dir = 4;
frequency = 1337;
frequency = 1380;
id_tag = "merc_shuttle_outer";
name = "Ship External Access";
req_access = list(150)
@@ -27642,7 +27644,7 @@
/obj/effect/floor_decal/industrial/hatch/yellow,
/obj/machinery/access_button{
command = "cycle_exterior";
frequency = 1337;
frequency = 1380;
master_tag = "merc_shuttle";
name = "exterior access button";
pixel_x = 1;
@@ -27654,7 +27656,7 @@
"bpI" = (
/obj/machinery/door/airlock/external{
dir = 4;
frequency = 1337;
frequency = 1380;
id_tag = "merc_base_hatch";
req_access = list(150)
},
@@ -28651,7 +28653,7 @@
reversed = 1
},
/obj/machinery/embedded_controller/radio/simple_docking_controller{
frequency = 1332;
frequency = 1380;
id_tag = "pirate_hideout";
layer = 3.5;
pixel_x = 28;
@@ -29049,7 +29051,7 @@
"bsD" = (
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1332;
frequency = 1380;
icon_state = "door_locked";
id_tag = "pirate_hideout_door";
locked = 1;
@@ -29064,7 +29066,7 @@
},
/obj/machinery/door/airlock/external{
dir = 1;
frequency = 1332;
frequency = 1380;
icon_state = "door_locked";
id_tag = "pirate_hideout_door";
locked = 1;
@@ -30325,18 +30327,19 @@
"bvn" = (
/obj/machinery/door/airlock/hatch{
dir = 1;
frequency = 1332;
frequency = 1380;
id_tag = "raider_northeast_lock";
locked = 1;
req_access = list(150)
},
/obj/machinery/access_button{
command = "cycle_exterior";
frequency = 1332;
frequency = 1380;
master_tag = "raider_east_control";
pixel_x = -26;
pixel_y = 12;
req_access = list(150)
req_access = list(150);
dir = 1
},
/obj/machinery/door/blast/regular/open{
dir = 2;
@@ -30344,11 +30347,12 @@
name = "blast door"
},
/obj/machinery/button/remote/blast_door{
dir = 8;
dir = 2;
id = "raiderblastdoor";
name = "blast door";
pixel_x = 25;
req_access = list(150)
req_access = list(150);
pixel_y = 13
},
/turf/simulated/floor/plating,
/area/shuttle/skipjack)
@@ -30429,9 +30433,10 @@
/area/shuttle/skipjack)
"bwc" = (
/obj/machinery/airlock_sensor{
frequency = 1332;
frequency = 1380;
id_tag = "raider_east_sensor";
pixel_x = -25
pixel_x = -25;
dir = 4
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small{
@@ -30445,7 +30450,7 @@
"bwd" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 0;
frequency = 1332;
frequency = 1380;
id_tag = "raider_east_vent"
},
/obj/effect/decal/cleanable/dirt,
@@ -30669,18 +30674,19 @@
"bxd" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 4;
frequency = 1332;
frequency = 1380;
id_tag = "raider_east_vent"
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/embedded_controller/radio/airlock/docking_port{
frequency = 1332;
frequency = 1380;
id_tag = "raider_east_control";
pixel_x = -24;
tag_airpump = "raider_east_vent";
tag_chamber_sensor = "raider_east_sensor";
tag_exterior_door = "raider_northeast_lock";
tag_interior_door = "raider_southeast_lock"
tag_interior_door = "raider_southeast_lock";
dir = 4
},
/obj/vehicle/bike{
dir = 4
@@ -30696,7 +30702,7 @@
"bxf" = (
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 8;
frequency = 1332;
frequency = 1380;
id_tag = "raider_east_vent"
},
/turf/simulated/floor/plating,
@@ -30869,7 +30875,7 @@
"bxU" = (
/obj/machinery/door/airlock/hatch{
dir = 1;
frequency = 1332;
frequency = 1380;
id_tag = "raider_southeast_lock";
locked = 1;
req_access = list(150)
@@ -31011,10 +31017,10 @@
/obj/structure/lattice/catwalk/indoor/grate,
/obj/machinery/access_button{
command = "cycle_interior";
frequency = 1332;
frequency = 1380;
master_tag = "raider_east_control";
pixel_x = 22;
pixel_y = 24;
pixel_x = 26;
pixel_y = 32;
req_access = list(150)
},
/turf/simulated/floor/plating,