diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index d283656ccae6..e650ebacb8e3 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -115,6 +115,7 @@ #define ALMAYER_DROPSHIP_LZ1 "almayer-hangar-lz1" #define ALMAYER_DROPSHIP_LZ2 "almayer-hangar-lz2" +#define DROPSHIP_FLYBY_ID "special_flight" #define DROPSHIP_LZ1 "dropship-lz1" #define DROPSHIP_LZ2 "dropship-lz2" diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm index c7a79b9c44ca..81db284023f7 100644 --- a/code/modules/shuttle/computers/dropship_computer.dm +++ b/code/modules/shuttle/computers/dropship_computer.dm @@ -317,13 +317,22 @@ .["primary_lz"] = SSticker.mode.active_lz?.linked_lz if(shuttle.destination) .["target_destination"] = shuttle.in_flyby? "Flyby" : shuttle.destination.name - .["destinations"] = list() .["door_status"] = is_remote ? list() : shuttle.get_door_data() - .["flight_configuration"] = is_set_flyby ? "flyby" : "ferry" .["has_flyby_skill"] = skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT) + .["destinations"] = list() + // add flight + .["destinations"] += list( + list( + "id" = DROPSHIP_FLYBY_ID, + "name" = "Flyby", + "available" = TRUE, + "error" = FALSE + ) + ) + for(var/obj/docking_port/stationary/dock in compatible_landing_zones) var/dock_reserved = FALSE for(var/obj/docking_port/mobile/other_shuttle in SSshuttle.mobile) @@ -359,15 +368,16 @@ to_chat(usr, SPAN_WARNING("You can't move to a new destination right now.")) return TRUE - if(is_set_flyby && !skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)) - to_chat(user, SPAN_WARNING("You don't have the skill to perform a flyby.")) - return FALSE var/is_optimised = FALSE // automatically apply optimisation if user is a pilot if(skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)) is_optimised = TRUE update_equipment(is_optimised) - if(is_set_flyby) + var/dock_id = params["target"] + if(dock_id == DROPSHIP_FLYBY_ID) + if(!skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)) + to_chat(user, SPAN_WARNING("You don't have the skill to perform a flyby.")) + return FALSE to_chat(user, SPAN_NOTICE("You begin the launch sequence for a flyby.")) link.log_ares_flight(user.name, "Launched Dropship [shuttle.name] on a flyby.") var/log = "[key_name(user)] launched the dropship [src.shuttleId] on flyby." @@ -375,19 +385,19 @@ log_interact(user, msg = "[log]") shuttle.send_for_flyby() return TRUE - var/dockId = params["target"] + var/list/local_data = ui_data(user) var/found = FALSE playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) for(var/destination in local_data["destinations"]) - if(destination["id"] == dockId) + if(destination["id"] == dock_id) found = TRUE break if(!found) - log_admin("[key_name(user)] may be attempting a href dock exploit on [src] with target location \"[dockId]\"") - to_chat(user, SPAN_WARNING("The [dockId] dock is not available at this time.")) + log_admin("[key_name(user)] may be attempting a href dock exploit on [src] with target location \"[dock_id]\"") + to_chat(user, SPAN_WARNING("The [dock_id] dock is not available at this time.")) return - var/obj/docking_port/stationary/dock = SSshuttle.getDock(dockId) + var/obj/docking_port/stationary/dock = SSshuttle.getDock(dock_id) var/dock_reserved = FALSE for(var/obj/docking_port/mobile/other_shuttle in SSshuttle.mobile) if(dock == other_shuttle.destination) diff --git a/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx b/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx index 6943c96a79fa..289bb53d777a 100644 --- a/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx +++ b/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx @@ -317,14 +317,7 @@ const RenderScreen = (props, context) => { return ( <> {data.can_set_automated === 1 && } - {data.can_fly_by === 1 && - (data.shuttle_mode === 'idle' || data.shuttle_mode === 'called') && ( - - )} - {data.shuttle_mode === 'idle' && - data.flight_configuration !== 'flyby' && ( - - )} + {data.shuttle_mode === 'idle' && } {data.shuttle_mode === 'igniting' && } {data.shuttle_mode === 'pre-arrival' && } {data.shuttle_mode === 'recharging' && }