Files
Y0SH1M4S73RandGitHub 013de1fb80 Custom Shuttle QOL tweaks (and a fix to a mild shuttle engine exploit) (#89774)
## About The Pull Request

This PR adds some tweaks to make custom shuttles a bit easier to use,
and more useful.

- The station blueprints can be used to allow/forbid custom shuttle
docking in station/custom areas. Custom areas allow shuttle docking by
default, while station areas (apart from the asteroid) forbid it.
- A station area that allows shuttle docking can have a shuttle
built/expanded in it, as long as the area's APC isn't contained within
the frame used to construct/expand the shuttle.
- A shuttle frame does not need to contain the entirety of a custom
area, unless that frame contains the area's APC. If the frame doesn't
contain the entirety of the custom area, that section of the frame
becomes part of the default area, instead of a separate area.
- Custom shuttles will go off into the sunset at the end of the round,
as long as they have a welded engine.
- I think I saw a bug that caused engines to contribute twice the
intended power to the attached shuttle, possibly creating an exploit in
the case where the engine was broken while welded. I fixed that.
- Custom shuttle docking computers can cross over to any z-level
adjacent to the shuttle's z-level (or vertically-connected z-levels,
because docking computers can traverse stacked z-levels freely). This is
based on the new `zlink_range` var on all shuttle docking consoles,
which can be var-edited to provide the same functionality.
- Shuttle engines constructed from circuits now link to shuttles without
needing to be unanchored and reanchored.

## Why It's Good For The Game

The tweaks to shuttle construction and docking serve to address several
gripes I heard about players not being able to build/dock custom
shuttles in station areas. The means to do this have been locked behind
possession of the station blueprints.

I don't see what problem there would be with allowing custom shuttles to
leave the station at the end of the round, but I could lock it behind a
particular action (antag-exclusive or otherwise).

Custom shuttles don't quite have as much utility if you have to manually
travel to z-levels to drop off gigabeacons. Jumping to adjacent z-levels
one at a time is a bit more useful for space exploration.

## Changelog
🆑
add: The station blueprints can be used to toggle whether custom
shuttles can be built/expanded/docked within station areas.
qol: Custom areas do not have to be completely contained within shuttle
frames, as long as the APC isn't attached to the frame.
add: Custom shuttles with functioning engines will fly off into the
sunset when the emergency shuttle leaves.
add: Custom shuttle navigation computers can view space levels adjacent
to the one the shuttle is currently docked at.
fix: Constructed shuttle engines no longer contribute twice as much
engine power to shuttles, nor can they be used to add unlimited shuttle
power.
fix: Constructed shuttle engines now connect to shuttles when build,
rather than needing to be unachored and then reanchored.
/🆑
2025-03-13 12:25:09 +11:00

49 lines
1.2 KiB
Plaintext

// Areas that don't fit any of the other files, or only serve one purpose.
/area/space
icon_state = "space"
requires_power = TRUE
always_unpowered = TRUE
static_lighting = FALSE
base_lighting_alpha = 255
base_lighting_color = COLOR_STARLIGHT
power_light = FALSE
power_equip = FALSE
power_environ = FALSE
area_flags = UNIQUE_AREA|NO_GRAVITY
outdoors = TRUE
ambience_index = AMBIENCE_SPACE
flags_1 = CAN_BE_DIRTY_1
sound_environment = SOUND_AREA_SPACE
ambient_buzz = null //Space is deafeningly quiet
allow_shuttle_docking = TRUE
/area/space/nearstation
icon_state = "space_near"
static_lighting = TRUE
base_lighting_alpha = 0
base_lighting_color = null
/area/misc/start
name = "start area"
icon_state = "start"
requires_power = FALSE
static_lighting = FALSE
base_lighting_alpha = 255
default_gravity = STANDARD_GRAVITY
ambient_buzz = null
/area/misc/testroom
requires_power = FALSE
default_gravity = STANDARD_GRAVITY
// Mobs should be able to see inside the testroom
static_lighting = FALSE
base_lighting_alpha = 255
name = "Test Room"
icon_state = "test_room"
/area/misc/testroom/gateway_room
name = "Gateway Room"
icon = 'icons/area/areas_station.dmi'
icon_state = "gateway"