mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
load the emergency shuttle in late mapping (#30854)
* load the emergency shuttle in late mapping * fix lints * register the late loading docking port properly * fix logging
This commit is contained in:
committed by
GitHub
parent
e436df7051
commit
05108670a7
+604
-1464
File diff suppressed because it is too large
Load Diff
@@ -24,7 +24,6 @@ SUBSYSTEM_DEF(shuttle)
|
||||
|
||||
//emergency shuttle stuff
|
||||
var/obj/docking_port/mobile/emergency/emergency
|
||||
var/obj/docking_port/mobile/emergency/backup/backup_shuttle
|
||||
var/emergencyCallTime = SHUTTLE_CALLTIME //time taken for emergency shuttle to reach the station when called (in deciseconds)
|
||||
var/emergencyDockTime = SHUTTLE_DOCKTIME //time taken for emergency shuttle to leave again once it has docked (in deciseconds)
|
||||
var/emergencyEscapeTime = SHUTTLE_ESCAPETIME //time taken for emergency shuttle to reach a safe distance after leaving station (in deciseconds)
|
||||
@@ -63,8 +62,6 @@ SUBSYSTEM_DEF(shuttle)
|
||||
var/transit_utilized = 0
|
||||
|
||||
/datum/controller/subsystem/shuttle/Initialize()
|
||||
if(!backup_shuttle)
|
||||
WARNING("No /obj/docking_port/mobile/emergency/backup placed on the map!")
|
||||
if(!supply)
|
||||
WARNING("No /obj/docking_port/mobile/supply placed on the map!")
|
||||
|
||||
@@ -143,17 +140,8 @@ SUBSYSTEM_DEF(shuttle)
|
||||
|
||||
/datum/controller/subsystem/shuttle/proc/requestEvac(mob/user, call_reason)
|
||||
if(!emergency)
|
||||
WARNING("requestEvac(): There is no emergency shuttle, but the shuttle was called. Using the backup shuttle instead.")
|
||||
if(!backup_shuttle)
|
||||
WARNING("requestEvac(): There is no emergency shuttle, or backup shuttle!\
|
||||
The game will be unresolvable.This is possibly a mapping error, \
|
||||
more likely a bug with the shuttle \
|
||||
manipulation system, or badminry. It is possible to manually \
|
||||
resolve this problem by loading an emergency shuttle template \
|
||||
manually, and then calling register() on the mobile docking port. \
|
||||
Good luck.")
|
||||
return
|
||||
emergency = backup_shuttle
|
||||
WARNING("requestEvac(): There is no emergency shuttle, but the shuttle was called. Loading a default shuttle.")
|
||||
load_initial_emergency_shuttle("emergency_cyb")
|
||||
|
||||
if(secondsToRefuel())
|
||||
to_chat(user, "The emergency shuttle is refueling. Please wait another [abs(round(((world.time - SSticker.round_start_time) - refuel_delay)/600))] minutes before trying again.")
|
||||
@@ -196,14 +184,6 @@ SUBSYSTEM_DEF(shuttle)
|
||||
|
||||
return
|
||||
|
||||
|
||||
// Called when an emergency shuttle mobile docking port is
|
||||
// destroyed, which will only happen with admin intervention
|
||||
/datum/controller/subsystem/shuttle/proc/emergencyDeregister()
|
||||
// When a new emergency shuttle is created, it will override the
|
||||
// backup shuttle.
|
||||
emergency = backup_shuttle
|
||||
|
||||
/datum/controller/subsystem/shuttle/proc/cancelEvac(mob/user)
|
||||
if(canRecall())
|
||||
emergency.cancel(get_area(user))
|
||||
@@ -591,6 +571,26 @@ SUBSYSTEM_DEF(shuttle)
|
||||
SIGNAL_HANDLER
|
||||
transit_utilized -= (source.width + 2) * (source.height + 2)
|
||||
|
||||
/datum/controller/subsystem/shuttle/proc/load_initial_emergency_shuttle(shuttle_id)
|
||||
if(emergency)
|
||||
log_debug("requested to load initial emergency shuttle when one already exists")
|
||||
return
|
||||
|
||||
var/obj/docking_port/docking_port = SSshuttle.getDock("emergency_away")
|
||||
if(!istype(docking_port))
|
||||
log_debug("could not find docking port")
|
||||
return
|
||||
|
||||
var/datum/map_template/shuttle/shuttle_template = GLOB.shuttle_templates[shuttle_id]
|
||||
if(!shuttle_template)
|
||||
log_debug("could not find shuttle template")
|
||||
return
|
||||
|
||||
var/obj/docking_port/mobile/mobile_port = SSshuttle.load_template(shuttle_template)
|
||||
mobile_port.dock(docking_port, force = TRUE)
|
||||
mobile_port.register()
|
||||
emergency = mobile_port
|
||||
|
||||
#undef CALL_SHUTTLE_REASON_LENGTH
|
||||
#undef MAX_TRANSIT_REQUEST_RETRIES
|
||||
#undef MAX_TRANSIT_TILE_COUNT
|
||||
|
||||
@@ -14,12 +14,19 @@ SUBSYSTEM_DEF(late_mapping)
|
||||
GLOB.air_alarms = sortAtom(GLOB.air_alarms)
|
||||
GLOB.apcs = sortAtom(GLOB.apcs)
|
||||
|
||||
// Load an emergency shuttle at centcom
|
||||
if(SSmapping.emergency_shuttle_id)
|
||||
SSshuttle.load_initial_emergency_shuttle(SSmapping.emergency_shuttle_id)
|
||||
else
|
||||
WARNING("no valid emergency shuttle template was set in SSmapping")
|
||||
|
||||
if(SSmapping.trader_shuttle_id)
|
||||
var/template = new SSmapping.trader_shuttle_id()
|
||||
SSshuttle.set_trader_shuttle(template)
|
||||
else
|
||||
WARNING("no valid trader shuttle template was set in SSmapping")
|
||||
|
||||
// Load a Gamma Armoury shuttle at Centcom.
|
||||
if(SSmapping.gamma_armory_shuttle_id)
|
||||
SSshuttle.load_initial_gamma_armory_shuttle(SSmapping.gamma_armory_shuttle_id)
|
||||
else
|
||||
|
||||
@@ -12,6 +12,8 @@ SUBSYSTEM_DEF(mapping)
|
||||
var/datum/map_template/shuttle/trader_shuttle_id = /datum/map_template/shuttle/trader/synthetic
|
||||
/// The Gamma Armory shuttle to load at Centcom in late_mapping.
|
||||
var/gamma_armory_shuttle_id = "gamma_armory_base"
|
||||
/// The emergency shuttle to load at Centcom in late_mapping
|
||||
var/emergency_shuttle_id = "emergency_cyb"
|
||||
/// List of all areas that can be accessed via IC means
|
||||
var/list/teleportlocs
|
||||
/// List of all areas that can be accessed via IC and OOC means
|
||||
|
||||
@@ -295,12 +295,11 @@
|
||||
return 1
|
||||
|
||||
/obj/docking_port/mobile/emergency/Destroy(force)
|
||||
if(force)
|
||||
// This'll make the shuttle subsystem use the backup shuttle.
|
||||
if(SSshuttle.emergency == src)
|
||||
// If we're the selected emergency shuttle
|
||||
SSshuttle.emergencyDeregister()
|
||||
|
||||
if(force && SSshuttle.emergency == src)
|
||||
// If we're the selected emergency shuttle
|
||||
var/msg = "The emergency mobile docking port has been forcibly destroyed. An emergency shuttle may need to be loaded in."
|
||||
stack_trace(msg)
|
||||
log_and_message_admins_no_usr(msg)
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -630,19 +629,6 @@
|
||||
var/turf/T = pick(turfs)
|
||||
src.loc = T
|
||||
|
||||
/obj/docking_port/mobile/emergency/backup
|
||||
name = "backup shuttle"
|
||||
id = "backup"
|
||||
dwidth = 2
|
||||
width = 8
|
||||
height = 8
|
||||
|
||||
/obj/docking_port/mobile/emergency/backup/register()
|
||||
var/current_emergency = SSshuttle.emergency
|
||||
..()
|
||||
SSshuttle.emergency = current_emergency
|
||||
SSshuttle.backup_shuttle = src
|
||||
|
||||
#undef NOT_BEGUN
|
||||
#undef STAGE_1
|
||||
#undef STAGE_2
|
||||
|
||||
@@ -187,12 +187,7 @@
|
||||
if("load")
|
||||
shuttle_and_preview_cooldown = world.time + PREVIEW_OR_SHUTTLE_SPAWN_COOLDOWN
|
||||
var/datum/map_template/shuttle/S = GLOB.shuttle_templates[params["shuttle_id"]]
|
||||
if(existing_shuttle == SSshuttle.backup_shuttle)
|
||||
// TODO make the load button disabled
|
||||
WARNING("The shuttle that the selected shuttle will replace \
|
||||
is the backup shuttle. Backup shuttle is required to be \
|
||||
intact for round sanity.")
|
||||
else if(S)
|
||||
if(S)
|
||||
// If successful, returns the mobile docking port
|
||||
var/obj/docking_port/mobile/mdp = action_load(S)
|
||||
if(mdp)
|
||||
|
||||
Reference in New Issue
Block a user