diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index f16b6bac055..f0ff7be5fe2 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -98,6 +98,7 @@ #define SHUTTLE_IDLE 0 #define SHUTTLE_WARMUP 1 #define SHUTTLE_INTRANSIT 2 +#define SHUTTLE_HALT 3 // State of no recovery // Ferry shuttle processing status. #define IDLE_STATE 0 diff --git a/code/modules/overmap/ships/computers/shuttle.dm b/code/modules/overmap/ships/computers/shuttle.dm index ebe76704421..b0d745ee8c3 100644 --- a/code/modules/overmap/ships/computers/shuttle.dm +++ b/code/modules/overmap/ships/computers/shuttle.dm @@ -73,6 +73,7 @@ if(SHUTTLE_IDLE) shuttle_state = "idle" if(SHUTTLE_WARMUP) shuttle_state = "warmup" if(SHUTTLE_INTRANSIT) shuttle_state = "in_transit" + if(SHUTTLE_HALT) shuttle_state = "halt" var/shuttle_status switch (shuttle.process_state) diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 99f0b37af7b..54aaf1c19e1 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -90,6 +90,9 @@ if(origin == destination) return + if(!origin.contents.len || !destination.contents.len) + return + if (docking_controller && !docking_controller.undocked()) docking_controller.force_undock() diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index 2963a1ca8f3..420fdcc5d55 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -30,6 +30,7 @@ if(SHUTTLE_IDLE) shuttle_state = "idle" if(SHUTTLE_WARMUP) shuttle_state = "warmup" if(SHUTTLE_INTRANSIT) shuttle_state = "in_transit" + if(SHUTTLE_HALT) shuttle_state = "halt" var/shuttle_status switch (shuttle.process_state) diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm index 13b73ba8e8f..d6df20e23d9 100644 --- a/code/modules/shuttles/shuttle_emergency.dm +++ b/code/modules/shuttles/shuttle_emergency.dm @@ -186,6 +186,7 @@ if(SHUTTLE_IDLE) shuttle_state = "idle" if(SHUTTLE_WARMUP) shuttle_state = "warmup" if(SHUTTLE_INTRANSIT) shuttle_state = "in_transit" + if(SHUTTLE_HALT) shuttle_state = "halt" var/shuttle_status switch (shuttle.process_state) diff --git a/code/modules/shuttles/shuttle_ferry.dm b/code/modules/shuttles/shuttle_ferry.dm index ceea9b2d396..049b90b3a67 100644 --- a/code/modules/shuttles/shuttle_ferry.dm +++ b/code/modules/shuttles/shuttle_ferry.dm @@ -11,8 +11,8 @@ var/move_time = 0 //the time spent in the transition area var/transit_direction = null //needed for area/move_contents_to() to properly handle shuttle corners - not exactly sure how it works. - var/area_station - var/area_offsite + var/area/area_station + var/area/area_offsite //TODO: change location to a string and use a mapping for area and dock targets. var/dock_target_station var/dock_target_offsite @@ -67,6 +67,13 @@ Doing so will ensure that multiple jumps cannot be initiated in parallel. */ /datum/shuttle/ferry/process() + if(moving_status != SHUTTLE_HALT) + if(!area_station || !area_offsite) + moving_status = SHUTTLE_HALT + return + if(!area_station.contents.len || !area_offsite.contents.len) + moving_status = SHUTTLE_HALT + return switch(process_state) if (WAIT_LAUNCH) if (skip_docking_checks() || docking_controller.can_launch()) @@ -151,6 +158,8 @@ return 0 /datum/shuttle/ferry/proc/can_cancel() + if(moving_status == SHUTTLE_HALT) + return 0 if (moving_status == SHUTTLE_WARMUP || process_state == WAIT_LAUNCH || process_state == FORCE_LAUNCH) return 1 return 0 diff --git a/html/changelogs/neexplody.yml b/html/changelogs/neexplody.yml new file mode 100644 index 00000000000..8c2df047e14 --- /dev/null +++ b/html/changelogs/neexplody.yml @@ -0,0 +1,4 @@ +author: Karolis2011 +delete-after: True +changes: + - bugfix: "Bluespace drives have been improved to prevent critical drive failure." diff --git a/nano/templates/shuttle_control_console.tmpl b/nano/templates/shuttle_control_console.tmpl index ccc4df70aaf..46a44a84978 100644 --- a/nano/templates/shuttle_control_console.tmpl +++ b/nano/templates/shuttle_control_console.tmpl @@ -16,6 +16,8 @@ SPINNING UP {{else data.shuttle_state == "in_transit"}} ENGAGED + {{else data.shuttle_state == "halt"}} + NO DESTINATION {{else}} ERROR {{/if}}