mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 13:30:42 +01:00
Makes the arrivals shuttle more robust (#2565)
It's harder to mess with the shuttle and after failing to return so many times it boots people off. It also connects the airlocks to distro and gives it a backup canister.
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
|
||||
var/launch_time //the time at which the shuttle will be launched
|
||||
var/wait_for_launch = 0 //if the shuttle is waiting to launch
|
||||
var/failreturnnumber = 0 // the number of times the shuttle failed to leave the station
|
||||
var/list/current_mobs = list()
|
||||
|
||||
/datum/controller/subsystem/arrivals/New()
|
||||
|
||||
@@ -324,7 +324,7 @@
|
||||
|
||||
var/datum/job/job = GetJob(rank)
|
||||
var/list/spawn_in_storage = list()
|
||||
|
||||
|
||||
if(job)
|
||||
var/list/custom_equip_slots = list() //If more than one item takes the same slot, all after the first one spawn in storage.
|
||||
var/list/custom_equip_leftovers = list()
|
||||
@@ -527,7 +527,8 @@
|
||||
|
||||
var/datum/job/job = GetJob(rank)
|
||||
var/list/spawn_in_storage = list()
|
||||
H.odin_despawn_timer = addtimer(CALLBACK(H, /mob/living/carbon/human/.proc/odin_timeout), 15 MINUTES, TIMER_STOPPABLE)
|
||||
H.odin_despawn_timer = addtimer(CALLBACK(H, /mob/living/carbon/human/.proc/odin_timeout), 10 MINUTES, TIMER_STOPPABLE)
|
||||
H <<"<span class='notice'>You have ten minutes to reach the station before you will be forced there.</span>"
|
||||
|
||||
if(job)
|
||||
//Equip custom gear loadout.
|
||||
@@ -747,7 +748,7 @@
|
||||
//spawn at one of the latespawn locations
|
||||
|
||||
var/datum/spawnpoint/spawnpos
|
||||
|
||||
|
||||
if(H.client.prefs.spawnpoint)
|
||||
spawnpos = spawntypes[H.client.prefs.spawnpoint]
|
||||
|
||||
|
||||
@@ -25,6 +25,10 @@
|
||||
latejoin += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("KickoffLocation")
|
||||
kickoffsloc += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("JoinLateGateway")
|
||||
latejoin_gateway += loc
|
||||
delete_me = 1
|
||||
|
||||
@@ -489,6 +489,21 @@
|
||||
smooth = SMOOTH_TRUE
|
||||
can_be_unanchored = TRUE
|
||||
|
||||
/obj/structure/window/shuttle/crescent
|
||||
name = "shuttle window"
|
||||
desc = "It looks rather strong."
|
||||
icon = 'icons/obj/smooth/shuttle_window.dmi'
|
||||
icon_state = "shuttle_window"
|
||||
basestate = "window"
|
||||
reinf = 1
|
||||
basestate = "w"
|
||||
dir = 5
|
||||
smooth = SMOOTH_TRUE
|
||||
can_be_unanchored = TRUE
|
||||
|
||||
/obj/structure/window/shuttle/crescent/take_damage()
|
||||
return
|
||||
|
||||
/obj/structure/window/shuttle/update_nearby_icons()
|
||||
queue_smooth_neighbors(src)
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@ var/list/latejoin = list()
|
||||
var/list/latejoin_gateway = list()
|
||||
var/list/latejoin_cryo = list()
|
||||
var/list/latejoin_cyborg = list()
|
||||
var/list/kickoffsloc = list()
|
||||
|
||||
var/list/prisonwarp = list() // Prisoners go to these
|
||||
var/list/holdingfacility = list() // Captured people go here
|
||||
|
||||
@@ -20,10 +20,28 @@
|
||||
return //someone cancelled the launch
|
||||
|
||||
if (at_station() && forbidden_atoms_check())
|
||||
//cancel the launch because of forbidden atoms. announce over supply channel?
|
||||
//cancel the launch because of forbidden atoms
|
||||
moving_status = SHUTTLE_IDLE
|
||||
global_announcer.autosay("Unacceptable items detected aboard the arrivals shuttle. Launch attempt failed. Restarting launch in one minute.", "Arrivals Shuttle Oversight")
|
||||
SSarrivals.set_launch_countdown(60)
|
||||
SSarrivals.failreturnnumber++
|
||||
if(SSarrivals.failreturnnumber >= 2) // get off my shuttle fool
|
||||
var/list/mobstoyellat = mobs_in_area(get_location_area(location))
|
||||
if (!mobstoyellat || !mobstoyellat.len)
|
||||
return
|
||||
for(var/mob/living/A in mobstoyellat)
|
||||
A <<"<span class='danger'>You feel as if you shouldn't be on the shuttle.</span>" // give them an angry text
|
||||
if(!A.client && ishuman(A) && SSarrivals.failreturnnumber >= 3) // well they are SSD and holding up the shuttle so might as well.
|
||||
SSjobs.DespawnMob(A)
|
||||
global_announcer.autosay("[A.real_name], [A.mind.role_alt_title], has entered long-term storage.", "Cryogenic Oversight")
|
||||
mobstoyellat -= A // so they don't get told on
|
||||
else if(A.client && ishuman(A) && SSarrivals.failreturnnumber >= 3) // they aren't SSD and are holding up the shuttle so we are booting them.
|
||||
A.forceMove(pick(kickoffsloc))
|
||||
mobstoyellat -= A
|
||||
else if(!ishuman(A) && SSarrivals.failreturnnumber >=4 && !A.client) // remove non-player mobs to keep things rolling
|
||||
qdel(A)
|
||||
if (mobstoyellat)
|
||||
global_announcer.autosay("Current life-forms on shuttle: [english_list(mobstoyellat)].", "Arrivals Shuttle Oversight") // tell on them
|
||||
return
|
||||
|
||||
if (!forbidden_atoms_check() && !at_station())
|
||||
@@ -33,6 +51,7 @@
|
||||
|
||||
if(!at_station())
|
||||
global_announcer.autosay("Central Command Arrivals shuttle inbound to NSS Aurora II. ETA: one minute.", "Arrivals Shuttle Oversight")
|
||||
SSarrivals.failreturnnumber = 0
|
||||
arrive_time = world.time + travel_time*10
|
||||
moving_status = SHUTTLE_INTRANSIT
|
||||
move(departing, interim, direction)
|
||||
|
||||
Reference in New Issue
Block a user