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:
Ron
2017-06-04 19:58:31 +03:00
committed by skull132
parent 08fc62966d
commit 869c824fe0
8 changed files with 68 additions and 22 deletions
+1
View File
@@ -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()
+4 -3
View File
@@ -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]
+4
View File
@@ -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
+15
View File
@@ -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)
+1
View File
@@ -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 -1
View File
@@ -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)