Documents and improves the variable names of the shuttle subsystem (#63946)

This commit is contained in:
GoldenAlpharex
2022-01-11 16:08:34 -05:00
committed by GitHub
parent 234fbab6e7
commit c6d616ff11
23 changed files with 295 additions and 247 deletions
+1 -1
View File
@@ -137,7 +137,7 @@ SUBSYSTEM_DEF(mapping)
SSshuttle.transit_requesters.Cut()
message_admins("Clearing dynamic reservation space.")
var/list/obj/docking_port/mobile/in_transit = list()
for(var/i in SSshuttle.transit)
for(var/i in SSshuttle.transit_docking_ports)
var/obj/docking_port/stationary/transit/T = i
if(!istype(T))
continue
+181 -133
View File
@@ -7,86 +7,134 @@ SUBSYSTEM_DEF(shuttle)
flags = SS_KEEP_TIMING
runlevels = RUNLEVEL_SETUP | RUNLEVEL_GAME
var/list/mobile = list()
var/list/stationary = list()
var/list/beacons = list()
var/list/transit = list()
/// A list of all the mobile docking ports.
var/list/mobile_docking_ports = list()
/// A list of all the stationary docking ports.
var/list/stationary_docking_ports = list()
/// A list of all the beacons that can be docked to.
var/list/beacon_list = list()
/// A list of all the transit docking ports.
var/list/transit_docking_ports = list()
//Now it only for ID generation
/// Now it's only for ID generation in /obj/docking_port/mobile/register()
var/list/assoc_mobile = list()
/// Now it's only for ID generation in /obj/docking_port/stationary/register()
var/list/assoc_stationary = list()
/// A list of all the mobile docking ports currently requesting a spot in hyperspace.
var/list/transit_requesters = list()
/// An associative list of the mobile docking ports that have failed a transit request, with the amount of times they've actually failed that transit request, up to MAX_TRANSIT_REQUEST_RETRIES
var/list/transit_request_failures = list()
//emergency shuttle stuff
/**
* Emergency shuttle stuff
*/
/// The mobile docking port of the emergency shuttle.
var/obj/docking_port/mobile/emergency/emergency
/// The mobile docking port of the arrivals shuttle.
var/obj/docking_port/mobile/arrivals/arrivals
/// The mobile docking port of the backup emergency shuttle.
var/obj/docking_port/mobile/emergency/backup/backup_shuttle
var/emergencyCallTime = 6000 //time taken for emergency shuttle to reach the station when called (in deciseconds)
var/emergencyDockTime = 1800 //time taken for emergency shuttle to leave again once it has docked (in deciseconds)
var/emergencyEscapeTime = 1200 //time taken for emergency shuttle to reach a safe distance after leaving station (in deciseconds)
var/area/emergencyLastCallLoc
var/emergencyCallAmount = 0 //how many times the escape shuttle was called
var/emergencyNoEscape
var/emergencyNoRecall = FALSE
var/adminEmergencyNoRecall = FALSE
var/lastMode = SHUTTLE_IDLE
var/lastCallTime = 6000
var/list/hostileEnvironments = list() //Things blocking escape shuttle from leaving
var/list/tradeBlockade = list() //Things blocking cargo from leaving.
var/supplyBlocked = FALSE
/// Time taken for emergency shuttle to reach the station when called (in deciseconds).
var/emergency_call_time = 10 MINUTES
/// Time taken for emergency shuttle to leave again once it has docked (in deciseconds).
var/emergency_dock_time = 3 MINUTES
/// Time taken for emergency shuttle to reach a safe distance after leaving station (in deciseconds).
var/emergency_escape_time = 2 MINUTES
/// Where was the emergency shuttle last called from?
var/area/emergency_last_call_loc
/// How many times was the escape shuttle called?
var/emergencyCallAmount = 0
/// Is the departure of the shuttle currently prevented? FALSE for no, any other number for yes (thanks shuttle code).
var/emergency_no_escape = FALSE
/// Do we prevent the recall of the shuttle?
var/emergency_no_recall = FALSE
/// Did admins force-prevent the recall of the shuttle?
var/admin_emergency_no_recall = FALSE
/// Previous mode of the shuttle before it was forcefully disabled by admins.
var/last_mode = SHUTTLE_IDLE
/// Previous time left to the call, only useful for disabling and re-enabling the shuttle for admins so it doesn't have to start the whole timer again.
var/last_call_time = 10 MINUTES
//supply shuttle stuff
/// Things blocking escape shuttle from leaving.
var/list/hostile_environments = list()
/**
* Supply shuttle stuff
*/
/// The current cargo shuttle's mobile docking port.
var/obj/docking_port/mobile/supply/supply
var/ordernum = 1 //order number given to next order
var/points = 5000 //number of trade-points we have
var/centcom_message = "" //Remarks from CentCom on how well you checked the last order.
var/list/discoveredPlants = list() //Typepaths for unusual plants we've already sent CentCom, associated with their potencies
/// Order number given to next order.
var/order_number = 1
/// Number of trade-points we have (basically money).
var/points = 5000
/// Remarks from CentCom on how well you checked the last order.
var/centcom_message = ""
/// Typepaths for unusual plants we've already sent CentCom, associated with their potencies.
var/list/discovered_plants = list()
/// All of the possible supply packs that can be purchased by cargo
/// Things blocking the cargo shuttle from leaving.
var/list/trade_blockade = list()
/// Is the cargo shuttle currently blocked from leaving?
var/supply_blocked = FALSE
/// All of the possible supply packs that can be purchased by cargo.
var/list/supply_packs = list()
/// Queued supplies to be purchased for the chef
/// Queued supplies to be purchased for the chef.
var/list/chef_groceries = list()
/// Queued supply packs to be purchased
var/list/shoppinglist = list()
/// Queued supply packs to be purchased.
var/list/shopping_list = list()
/// Wishlist items made by crew for cargo to purchase at their leisure
var/list/requestlist = list()
/// Wishlist items made by crew for cargo to purchase at their leisure.
var/list/request_list = list()
/// A listing of previously delivered supply packs
var/list/orderhistory = list()
/// A listing of previously delivered supply packs.
var/list/order_history = list()
/// A list of job accesses that are able to purchase any shuttles
/// A list of job accesses that are able to purchase any shuttles.
var/list/has_purchase_shuttle_access
var/list/hidden_shuttle_turfs = list() //all turfs hidden from navigation computers associated with a list containing the image hiding them and the type of the turf they are pretending to be
var/list/hidden_shuttle_turf_images = list() //only the images from the above list
/// All turfs hidden from navigation computers associated with a list containing the image hiding them and the type of the turf they are pretending to be
var/list/hidden_shuttle_turfs = list()
/// Only the images from the [/datum/controller/subsystem/shuttle/hidden_shuttle_turfs] list.
var/list/hidden_shuttle_turf_images = list()
/// The current shuttle loan event, if any.
var/datum/round_event/shuttle_loan/shuttle_loan
///If the event happens where the crew can purchase shuttle insurance, catastrophe can't run.
/// If the event happens where the crew can purchase shuttle insurance, catastrophe can't run.
var/shuttle_insurance = FALSE
var/shuttle_purchased = SHUTTLEPURCHASE_PURCHASABLE //If the station has purchased a replacement escape shuttle this round
var/list/shuttle_purchase_requirements_met = list() //For keeping track of ingame events that would unlock new shuttles, such as defeating a boss or discovering a secret item
// If the station has purchased a replacement escape shuttle this round.
var/shuttle_purchased = SHUTTLEPURCHASE_PURCHASABLE
/// For keeping track of ingame events that would unlock new shuttles, such as defeating a boss or discovering a secret item.
var/list/shuttle_purchase_requirements_met = list()
var/lockdown = FALSE //disallow transit after nuke goes off
/// Disallow transit after nuke goes off
var/lockdown = FALSE
/// The currently selected shuttle map_template in the shuttle manipulator's template viewer.
var/datum/map_template/shuttle/selected
/// The existing shuttle associated with the selected shuttle map_template.
var/obj/docking_port/mobile/existing_shuttle
var/obj/docking_port/mobile/preview_shuttle
/// The shuttle map_template of the shuttle we want to preview.
var/datum/map_template/shuttle/preview_template
/// The docking port associated to the preview_template that's currently being previewed.
var/obj/docking_port/mobile/preview_shuttle
/// The turf reservation for the current previewed shuttle.
var/datum/turf_reservation/preview_reservation
/// Are we currently in the process of loading a shuttle? Useful to ensure we don't load more than one at once, to avoid weird inconsistencies and possible runtimes.
var/shuttle_loading
/datum/controller/subsystem/shuttle/Initialize(timeofday)
ordernum = rand(1, 9000)
order_number = rand(1, 9000)
var/list/pack_processing = subtypesof(/datum/supply_pack)
while(length(pack_processing))
@@ -119,19 +167,19 @@ SUBSYSTEM_DEF(shuttle)
return ..()
/datum/controller/subsystem/shuttle/proc/initial_load()
for(var/s in stationary)
var/obj/docking_port/stationary/S = s
S.load_roundstart()
for(var/port in stationary_docking_ports)
var/obj/docking_port/stationary/stationary_port = port
stationary_port.load_roundstart()
CHECK_TICK
/datum/controller/subsystem/shuttle/fire()
for(var/thing in mobile)
for(var/thing in mobile_docking_ports)
if(!thing)
mobile.Remove(thing)
mobile_docking_ports.Remove(thing)
continue
var/obj/docking_port/mobile/P = thing
P.check()
for(var/thing in transit)
for(var/thing in transit_docking_ports)
var/obj/docking_port/stationary/transit/T = thing
if(!T.owner)
qdel(T, force=TRUE)
@@ -162,7 +210,7 @@ SUBSYSTEM_DEF(shuttle)
break
/datum/controller/subsystem/shuttle/proc/CheckAutoEvac()
if(emergencyNoEscape || adminEmergencyNoRecall || emergencyNoRecall || !emergency || !SSticker.HasRoundStarted())
if(emergency_no_escape || admin_emergency_no_recall || emergency_no_recall || !emergency || !SSticker.HasRoundStarted())
return
var/threshold = CONFIG_GET(number/emergency_shuttle_autocall_threshold)
@@ -183,33 +231,33 @@ SUBSYSTEM_DEF(shuttle)
var/msg = "Automatically dispatching emergency shuttle due to crew death."
message_admins(msg)
log_shuttle("[msg] Alive: [alive], Roundstart: [total], Threshold: [threshold]")
emergencyNoRecall = TRUE
emergency_no_recall = TRUE
priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.")
if(emergency.timeLeft(1) > emergencyCallTime * 0.4)
if(emergency.timeLeft(1) > emergency_call_time * 0.4)
emergency.request(null, set_coefficient = 0.4)
/datum/controller/subsystem/shuttle/proc/block_recall(lockout_timer)
if(adminEmergencyNoRecall)
if(admin_emergency_no_recall)
priority_announce("Error!", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg')
addtimer(CALLBACK(src, .proc/unblock_recall), lockout_timer)
return
emergencyNoRecall = TRUE
emergency_no_recall = TRUE
addtimer(CALLBACK(src, .proc/unblock_recall), lockout_timer)
/datum/controller/subsystem/shuttle/proc/unblock_recall()
if(adminEmergencyNoRecall)
if(admin_emergency_no_recall)
priority_announce("Error!", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg')
return
emergencyNoRecall = FALSE
emergency_no_recall = FALSE
/datum/controller/subsystem/shuttle/proc/getShuttle(id)
for(var/obj/docking_port/mobile/M in mobile)
for(var/obj/docking_port/mobile/M in mobile_docking_ports)
if(M.id == id)
return M
WARNING("couldn't find shuttle with id: [id]")
/datum/controller/subsystem/shuttle/proc/getDock(id)
for(var/obj/docking_port/stationary/S in stationary)
for(var/obj/docking_port/stationary/S in stationary_docking_ports)
if(S.id == id)
return S
WARNING("couldn't find dock with id: [id]")
@@ -325,18 +373,18 @@ SUBSYSTEM_DEF(shuttle)
return 1
/datum/controller/subsystem/shuttle/proc/canRecall()
if(!emergency || emergency.mode != SHUTTLE_CALL || adminEmergencyNoRecall || emergencyNoRecall)
if(!emergency || emergency.mode != SHUTTLE_CALL || admin_emergency_no_recall || emergency_no_recall)
return
var/security_num = seclevel2num(get_security_level())
switch(security_num)
if(SEC_LEVEL_GREEN)
if(emergency.timeLeft(1) < emergencyCallTime)
if(emergency.timeLeft(1) < emergency_call_time)
return
if(SEC_LEVEL_BLUE)
if(emergency.timeLeft(1) < emergencyCallTime * 0.5)
if(emergency.timeLeft(1) < emergency_call_time * 0.5)
return
else
if(emergency.timeLeft(1) < emergencyCallTime * 0.25)
if(emergency.timeLeft(1) < emergency_call_time * 0.25)
return
return 1
@@ -370,88 +418,88 @@ SUBSYSTEM_DEF(shuttle)
message_admins("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.")
/datum/controller/subsystem/shuttle/proc/registerHostileEnvironment(datum/bad)
hostileEnvironments[bad] = TRUE
hostile_environments[bad] = TRUE
checkHostileEnvironment()
/datum/controller/subsystem/shuttle/proc/clearHostileEnvironment(datum/bad)
hostileEnvironments -= bad
hostile_environments -= bad
checkHostileEnvironment()
/datum/controller/subsystem/shuttle/proc/registerTradeBlockade(datum/bad)
tradeBlockade[bad] = TRUE
trade_blockade[bad] = TRUE
checkTradeBlockade()
/datum/controller/subsystem/shuttle/proc/clearTradeBlockade(datum/bad)
tradeBlockade -= bad
trade_blockade -= bad
checkTradeBlockade()
/datum/controller/subsystem/shuttle/proc/checkTradeBlockade()
for(var/datum/d in tradeBlockade)
for(var/datum/d in trade_blockade)
if(!istype(d) || QDELETED(d))
tradeBlockade -= d
supplyBlocked = tradeBlockade.len
trade_blockade -= d
supply_blocked = trade_blockade.len
if(supplyBlocked && (supply.mode == SHUTTLE_IGNITING))
if(supply_blocked && (supply.mode == SHUTTLE_IGNITING))
supply.mode = SHUTTLE_STRANDED
supply.timer = null
//Make all cargo consoles speak up
if(!supplyBlocked && (supply.mode == SHUTTLE_STRANDED))
if(!supply_blocked && (supply.mode == SHUTTLE_STRANDED))
supply.mode = SHUTTLE_DOCKED
//Make all cargo consoles speak up
/datum/controller/subsystem/shuttle/proc/checkHostileEnvironment()
for(var/datum/d in hostileEnvironments)
for(var/datum/d in hostile_environments)
if(!istype(d) || QDELETED(d))
hostileEnvironments -= d
emergencyNoEscape = hostileEnvironments.len
hostile_environments -= d
emergency_no_escape = hostile_environments.len
if(emergencyNoEscape && (emergency.mode == SHUTTLE_IGNITING))
if(emergency_no_escape && (emergency.mode == SHUTTLE_IGNITING))
emergency.mode = SHUTTLE_STRANDED
emergency.timer = null
emergency.sound_played = FALSE
priority_announce("Hostile environment detected. \
Departure has been postponed indefinitely pending \
conflict resolution.", null, 'sound/misc/notice1.ogg', "Priority")
if(!emergencyNoEscape && (emergency.mode == SHUTTLE_STRANDED))
if(!emergency_no_escape && (emergency.mode == SHUTTLE_STRANDED))
emergency.mode = SHUTTLE_DOCKED
emergency.setTimer(emergencyDockTime)
emergency.setTimer(emergency_dock_time)
priority_announce("Hostile environment resolved. \
You have 3 minutes to board the Emergency Shuttle.",
null, ANNOUNCER_SHUTTLEDOCK, "Priority")
//try to move/request to dockHome if possible, otherwise dockAway. Mainly used for admin buttons
/datum/controller/subsystem/shuttle/proc/toggleShuttle(shuttleId, dockHome, dockAway, timed)
var/obj/docking_port/mobile/M = getShuttle(shuttleId)
if(!M)
return 1
var/obj/docking_port/stationary/dockedAt = M.get_docked()
var/destination = dockHome
if(dockedAt && dockedAt.id == dockHome)
destination = dockAway
//try to move/request to dock_home if possible, otherwise dock_away. Mainly used for admin buttons
/datum/controller/subsystem/shuttle/proc/toggleShuttle(shuttle_id, dock_home, dock_away, timed)
var/obj/docking_port/mobile/shuttle_port = getShuttle(shuttle_id)
if(!shuttle_port)
return DOCKING_BLOCKED
var/obj/docking_port/stationary/docked_at = shuttle_port.get_docked()
var/destination = dock_home
if(docked_at && docked_at.id == dock_home)
destination = dock_away
if(timed)
if(M.request(getDock(destination)))
return 2
if(shuttle_port.request(getDock(destination)))
return DOCKING_IMMOBILIZED
else
if(M.initiate_docking(getDock(destination)) != DOCKING_SUCCESS)
return 2
return 0 //dock successful
if(shuttle_port.initiate_docking(getDock(destination)) != DOCKING_SUCCESS)
return DOCKING_IMMOBILIZED
return DOCKING_SUCCESS //dock successful
/datum/controller/subsystem/shuttle/proc/moveShuttle(shuttleId, dockId, timed)
var/obj/docking_port/mobile/M = getShuttle(shuttleId)
var/obj/docking_port/stationary/D = getDock(dockId)
/datum/controller/subsystem/shuttle/proc/moveShuttle(shuttle_id, dock_id, timed)
var/obj/docking_port/mobile/shuttle_port = getShuttle(shuttle_id)
var/obj/docking_port/stationary/docking_target = getDock(dock_id)
if(!M)
return 1
if(!shuttle_port)
return DOCKING_BLOCKED
if(timed)
if(M.request(D))
return 2
if(shuttle_port.request(docking_target))
return DOCKING_IMMOBILIZED
else
if(M.initiate_docking(D) != DOCKING_SUCCESS)
return 2
return 0 //dock successful
if(shuttle_port.initiate_docking(docking_target) != DOCKING_SUCCESS)
return DOCKING_IMMOBILIZED
return DOCKING_SUCCESS //dock successful
/datum/controller/subsystem/shuttle/proc/request_transit_dock(obj/docking_port/mobile/M)
if(!istype(M))
@@ -549,12 +597,12 @@ SUBSYSTEM_DEF(shuttle)
/datum/controller/subsystem/shuttle/Recover()
initialized = SSshuttle.initialized
if (istype(SSshuttle.mobile))
mobile = SSshuttle.mobile
if (istype(SSshuttle.stationary))
stationary = SSshuttle.stationary
if (istype(SSshuttle.transit))
transit = SSshuttle.transit
if (istype(SSshuttle.mobile_docking_ports))
mobile_docking_ports = SSshuttle.mobile_docking_ports
if (istype(SSshuttle.stationary_docking_ports))
stationary_docking_ports = SSshuttle.stationary_docking_ports
if (istype(SSshuttle.transit_docking_ports))
transit_docking_ports = SSshuttle.transit_docking_ports
if (istype(SSshuttle.transit_requesters))
transit_requesters = SSshuttle.transit_requesters
if (istype(SSshuttle.transit_request_failures))
@@ -567,24 +615,24 @@ SUBSYSTEM_DEF(shuttle)
if (istype(SSshuttle.backup_shuttle))
backup_shuttle = SSshuttle.backup_shuttle
if (istype(SSshuttle.emergencyLastCallLoc))
emergencyLastCallLoc = SSshuttle.emergencyLastCallLoc
if (istype(SSshuttle.emergency_last_call_loc))
emergency_last_call_loc = SSshuttle.emergency_last_call_loc
if (istype(SSshuttle.hostileEnvironments))
hostileEnvironments = SSshuttle.hostileEnvironments
if (istype(SSshuttle.hostile_environments))
hostile_environments = SSshuttle.hostile_environments
if (istype(SSshuttle.supply))
supply = SSshuttle.supply
if (istype(SSshuttle.discoveredPlants))
discoveredPlants = SSshuttle.discoveredPlants
if (istype(SSshuttle.discovered_plants))
discovered_plants = SSshuttle.discovered_plants
if (istype(SSshuttle.shoppinglist))
shoppinglist = SSshuttle.shoppinglist
if (istype(SSshuttle.requestlist))
requestlist = SSshuttle.requestlist
if (istype(SSshuttle.orderhistory))
orderhistory = SSshuttle.orderhistory
if (istype(SSshuttle.shopping_list))
shopping_list = SSshuttle.shopping_list
if (istype(SSshuttle.request_list))
request_list = SSshuttle.request_list
if (istype(SSshuttle.order_history))
order_history = SSshuttle.order_history
if (istype(SSshuttle.shuttle_loan))
shuttle_loan = SSshuttle.shuttle_loan
@@ -594,9 +642,9 @@ SUBSYSTEM_DEF(shuttle)
var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
centcom_message = SSshuttle.centcom_message
ordernum = SSshuttle.ordernum
order_number = SSshuttle.order_number
points = D.account_balance
emergencyNoEscape = SSshuttle.emergencyNoEscape
emergency_no_escape = SSshuttle.emergency_no_escape
emergencyCallAmount = SSshuttle.emergencyCallAmount
shuttle_purchased = SSshuttle.shuttle_purchased
lockdown = SSshuttle.lockdown
@@ -614,30 +662,30 @@ SUBSYSTEM_DEF(shuttle)
var/area/current = get_area(A)
if(istype(current, /area/shuttle) && !istype(current, /area/shuttle/transit))
return TRUE
for(var/obj/docking_port/mobile/M in mobile)
for(var/obj/docking_port/mobile/M in mobile_docking_ports)
if(M.is_in_shuttle_bounds(A))
return TRUE
/datum/controller/subsystem/shuttle/proc/get_containing_shuttle(atom/A)
var/list/mobile_cache = mobile
for(var/i in 1 to mobile_cache.len)
var/obj/docking_port/port = mobile_cache[i]
var/list/mobile_docking_ports_cache = mobile_docking_ports
for(var/i in 1 to mobile_docking_ports_cache.len)
var/obj/docking_port/port = mobile_docking_ports_cache[i]
if(port.is_in_shuttle_bounds(A))
return port
/datum/controller/subsystem/shuttle/proc/get_containing_dock(atom/A)
. = list()
var/list/stationary_cache = stationary
for(var/i in 1 to stationary_cache.len)
var/obj/docking_port/port = stationary_cache[i]
var/list/stationary_docking_ports_cache = stationary_docking_ports
for(var/i in 1 to stationary_docking_ports_cache.len)
var/obj/docking_port/port = stationary_docking_ports_cache[i]
if(port.is_in_shuttle_bounds(A))
. += port
/datum/controller/subsystem/shuttle/proc/get_dock_overlap(x0, y0, x1, y1, z)
. = list()
var/list/stationary_cache = stationary
for(var/i in 1 to stationary_cache.len)
var/obj/docking_port/port = stationary_cache[i]
var/list/stationary_docking_ports_cache = stationary_docking_ports
for(var/i in 1 to stationary_docking_ports_cache.len)
var/obj/docking_port/port = stationary_docking_ports_cache[i]
if(!port || port.z != z)
continue
var/list/bounds = port.return_coords()
@@ -840,7 +888,7 @@ SUBSYSTEM_DEF(shuttle)
// Status panel
data["shuttles"] = list()
for(var/i in mobile)
for(var/i in mobile_docking_ports)
var/obj/docking_port/mobile/M = i
var/timeleft = M.timeLeft(1)
var/list/L = list()
@@ -885,7 +933,7 @@ SUBSYSTEM_DEF(shuttle)
. = TRUE
if("jump_to")
if(params["type"] == "mobile")
for(var/i in mobile)
for(var/i in mobile_docking_ports)
var/obj/docking_port/mobile/M = i
if(M.id == params["id"])
user.forceMove(get_turf(M))
@@ -893,7 +941,7 @@ SUBSYSTEM_DEF(shuttle)
break
if("fly")
for(var/i in mobile)
for(var/i in mobile_docking_ports)
var/obj/docking_port/mobile/M = i
if(M.id == params["id"])
. = TRUE
@@ -901,7 +949,7 @@ SUBSYSTEM_DEF(shuttle)
break
if("fast_travel")
for(var/i in mobile)
for(var/i in mobile_docking_ports)
var/obj/docking_port/mobile/M = i
if(M.id == params["id"] && M.timer && M.timeLeft(1) >= 50)
M.setTimer(50)
+2 -2
View File
@@ -370,7 +370,7 @@
return FALSE
if(is_reserved_level(current_turf.z))
for(var/obj/docking_port/mobile/mobile_docking_port as anything in SSshuttle.mobile)
for(var/obj/docking_port/mobile/mobile_docking_port as anything in SSshuttle.mobile_docking_ports)
if(mobile_docking_port.launch_status != ENDGAME_TRANSIT)
continue
for(var/area/shuttle/shuttle_area as anything in mobile_docking_port.shuttle_areas)
@@ -385,7 +385,7 @@
return TRUE
//Check for centcom shuttles
for(var/obj/docking_port/mobile/mobile_docking_port as anything in SSshuttle.mobile)
for(var/obj/docking_port/mobile/mobile_docking_port as anything in SSshuttle.mobile_docking_ports)
if(mobile_docking_port.launch_status == ENDGAME_LAUNCHED)
for(var/place as anything in mobile_docking_port.shuttle_areas)
var/area/shuttle/shuttle_area = place
@@ -498,8 +498,8 @@
if (SSshuttle.emergencyCallAmount)
data["shuttleCalledPreviously"] = TRUE
if (SSshuttle.emergencyLastCallLoc)
data["shuttleLastCalled"] = format_text(SSshuttle.emergencyLastCallLoc.name)
if (SSshuttle.emergency_last_call_loc)
data["shuttleLastCalled"] = format_text(SSshuttle.emergency_last_call_loc.name)
if (STATE_MESSAGES)
data["messages"] = list()
+2 -2
View File
@@ -455,13 +455,13 @@
else
menu += "station"
menu += "<BR>Current approved orders: <BR><ol>"
for(var/S in SSshuttle.shoppinglist)
for(var/S in SSshuttle.shopping_list)
var/datum/supply_order/SO = S
menu += "<li>#[SO.id] - [SO.pack.name] approved by [SO.orderer] [SO.reason ? "([SO.reason])":""]</li>"
menu += "</ol>"
menu += "Current requests: <BR><ol>"
for(var/S in SSshuttle.requestlist)
for(var/S in SSshuttle.request_list)
var/datum/supply_order/SO = S
menu += "<li>#[SO.id] - [SO.pack.name] requested by [SO.orderer]</li>"
menu += "</ol><font size=\"-3\">Upgrade NOW to Space Parts & Space Vendors PLUS for full remote order control and inventory management."
+1 -1
View File
@@ -139,7 +139,7 @@
/obj/effect/station_crash/proc/shuttle_crash()
var/crash_strength = rand(min_crash_strength,max_crash_strength)
for (var/S in SSshuttle.stationary)
for (var/S in SSshuttle.stationary_docking_ports)
var/obj/docking_port/stationary/SM = S
if (SM.id == "emergency_home")
var/new_dir = turn(SM.dir, 180)
+14 -14
View File
@@ -162,7 +162,7 @@
if(null, "No")
return
if("Yes (No Recall)")
SSshuttle.adminEmergencyNoRecall = TRUE
SSshuttle.admin_emergency_no_recall = TRUE
SSshuttle.emergency.mode = SHUTTLE_IDLE
SSshuttle.emergency.request()
@@ -179,8 +179,8 @@
if(tgui_alert(usr, "You sure?", "Confirm", list("Yes", "No")) != "Yes")
return
if(SSshuttle.adminEmergencyNoRecall)
SSshuttle.adminEmergencyNoRecall = FALSE
if(SSshuttle.admin_emergency_no_recall)
SSshuttle.admin_emergency_no_recall = FALSE
if(EMERGENCY_AT_LEAST_DOCKED)
return
@@ -208,9 +208,9 @@
message_admins(span_adminnotice("[key_name_admin(usr)] disabled the shuttle."))
SSshuttle.lastMode = SSshuttle.emergency.mode
SSshuttle.lastCallTime = SSshuttle.emergency.timeLeft(1)
SSshuttle.adminEmergencyNoRecall = TRUE
SSshuttle.last_mode = SSshuttle.emergency.mode
SSshuttle.last_call_time = SSshuttle.emergency.timeLeft(1)
SSshuttle.admin_emergency_no_recall = TRUE
SSshuttle.emergency.setTimer(0)
SSshuttle.emergency.mode = SHUTTLE_DISABLED
priority_announce("Warning: Emergency Shuttle uplink failure, shuttle disabled until further notice.", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg')
@@ -230,15 +230,15 @@
return
message_admins(span_adminnotice("[key_name_admin(usr)] enabled the emergency shuttle."))
SSshuttle.adminEmergencyNoRecall = FALSE
SSshuttle.emergencyNoRecall = FALSE
if(SSshuttle.lastMode == SHUTTLE_DISABLED) //If everything goes to shit, fix it.
SSshuttle.lastMode = SHUTTLE_IDLE
SSshuttle.admin_emergency_no_recall = FALSE
SSshuttle.emergency_no_recall = FALSE
if(SSshuttle.last_mode == SHUTTLE_DISABLED) //If everything goes to shit, fix it.
SSshuttle.last_mode = SHUTTLE_IDLE
SSshuttle.emergency.mode = SSshuttle.lastMode
if(SSshuttle.lastCallTime < 10 SECONDS && SSshuttle.lastMode != SHUTTLE_IDLE)
SSshuttle.lastCallTime = 10 SECONDS //Make sure no insta departures.
SSshuttle.emergency.setTimer(SSshuttle.lastCallTime)
SSshuttle.emergency.mode = SSshuttle.last_mode
if(SSshuttle.last_call_time < 10 SECONDS && SSshuttle.last_mode != SHUTTLE_IDLE)
SSshuttle.last_call_time = 10 SECONDS //Make sure no insta departures.
SSshuttle.emergency.setTimer(SSshuttle.last_call_time)
priority_announce("Warning: Emergency Shuttle uplink reestablished, shuttle enabled.", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg')
/client/proc/toggle_nuke(obj/machinery/nuclearbomb/N in GLOB.nuke_list)
+2 -2
View File
@@ -12,7 +12,7 @@
/obj/docking_port/mobile/proc/admin_fly_shuttle(mob/user)
var/list/options = list()
for(var/port in SSshuttle.stationary)
for(var/port in SSshuttle.stationary_docking_ports)
if (istype(port, /obj/docking_port/stationary/transit))
continue // please don't do this
var/obj/docking_port/stationary/S = port
@@ -60,7 +60,7 @@
var/list/options = list()
for(var/port in SSshuttle.stationary)
for(var/port in SSshuttle.stationary_docking_ports)
if (istype(port, /obj/docking_port/stationary/transit))
continue // please don't do this
var/obj/docking_port/stationary/S = port
+1 -1
View File
@@ -559,7 +559,7 @@ Striking a noncultist, however, will tear their flesh."}
set_coefficient = 1
else
set_coefficient = 0.5
var/surplus = timer - (SSshuttle.emergencyCallTime * set_coefficient)
var/surplus = timer - (SSshuttle.emergency_call_time * set_coefficient)
SSshuttle.emergency.setTimer(timer)
if(surplus > 0)
SSshuttle.block_recall(surplus)
+4 -4
View File
@@ -97,9 +97,9 @@ GLOBAL_LIST_INIT(department_order_cooldowns, list(
playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
return
if(department_order && (department_order in SSshuttle.shoppinglist))
if(department_order && (department_order in SSshuttle.shopping_list))
GLOB.department_order_cooldowns[type] = 0
SSshuttle.shoppinglist -= department_order
SSshuttle.shopping_list -= department_order
department_order = null
UnregisterSignal(SSshuttle, COMSIG_SUPPLY_SHUTTLE_BUY)
return TRUE
@@ -136,7 +136,7 @@ GLOBAL_LIST_INIT(department_order_cooldowns, list(
chosen_delivery_area = delivery_area_type
break
department_order = new(pack, name, rank, ckey, "", null, chosen_delivery_area, null)
SSshuttle.shoppinglist += department_order
SSshuttle.shopping_list += department_order
if(!already_signalled)
RegisterSignal(SSshuttle, COMSIG_SUPPLY_SHUTTLE_BUY, .proc/finalize_department_order)
say("Order processed. Cargo will deliver the crate when it comes in on their shuttle. NOTICE: Heads of staff may override the order.")
@@ -145,7 +145,7 @@ GLOBAL_LIST_INIT(department_order_cooldowns, list(
///signal when the supply shuttle begins to spawn orders. we forget the current order preventing it from being overridden (since it's already past the point of no return on undoing the order)
/obj/machinery/computer/department_orders/proc/finalize_department_order(datum/subsystem)
SIGNAL_HANDLER
if(department_order && (department_order in SSshuttle.shoppinglist))
if(department_order && (department_order in SSshuttle.shopping_list))
department_order = null
UnregisterSignal(subsystem, COMSIG_SUPPLY_SHUTTLE_BUY)
+5 -5
View File
@@ -4,13 +4,13 @@
unit_name = "new plant species sample"
export_types = list(/obj/item/seeds)
var/needs_discovery = FALSE // Only for undiscovered species
var/static/list/discoveredPlants = list()
var/static/list/discovered_plants = list()
/datum/export/seed/get_cost(obj/O)
var/obj/item/seeds/S = O
if(!needs_discovery && (S.type in discoveredPlants))
if(!needs_discovery && (S.type in discovered_plants))
return 0
if(needs_discovery && !(S.type in discoveredPlants))
if(needs_discovery && !(S.type in discovered_plants))
return 0
return ..() * S.rarity // That's right, no bonus for potency. Send a crappy sample first to "show improvement" later.
@@ -18,7 +18,7 @@
. = ..()
if(. && !dry_run)
var/obj/item/seeds/S = O
discoveredPlants[S.type] = S.potency
discovered_plants[S.type] = S.potency
/datum/export/seed/potency
@@ -33,6 +33,6 @@
if(!cost)
return 0
var/potDiff = (S.potency - discoveredPlants[S.type])
var/potDiff = (S.potency - discovered_plants[S.type])
return round(..() * potDiff)
+1 -1
View File
@@ -117,7 +117,7 @@
data["printMsg"] = cooldown > 0 ? "Print Beacon for [BEACON_COST] credits ([cooldown])" : "Print Beacon for [BEACON_COST] credits"//buttontext for printing beacons
data["supplies"] = list()
message = "Sales are near-instantaneous - please choose carefully."
if(SSshuttle.supplyBlocked)
if(SSshuttle.supply_blocked)
message = blockade_warning
if(usingBeacon && !beacon)
message = "BEACON ERROR: BEACON MISSING"//beacon was destroyed
+1 -1
View File
@@ -35,7 +35,7 @@
var/obj/item/coupon/applied_coupon
/datum/supply_order/New(datum/supply_pack/pack, orderer, orderer_rank, orderer_ckey, reason, paying_account, department_destination, coupon)
id = SSshuttle.ordernum++
id = SSshuttle.order_number++
src.pack = pack
src.orderer = orderer
src.orderer_rank = orderer_rank
+17 -17
View File
@@ -111,11 +111,11 @@
var/message = "Remember to stamp and send back the supply manifests."
if(SSshuttle.centcom_message)
message = SSshuttle.centcom_message
if(SSshuttle.supplyBlocked)
if(SSshuttle.supply_blocked)
message = blockade_warning
data["message"] = message
data["cart"] = list()
for(var/datum/supply_order/SO in SSshuttle.shoppinglist)
for(var/datum/supply_order/SO in SSshuttle.shopping_list)
data["cart"] += list(list(
"object" = SO.pack.name,
"cost" = SO.pack.get_cost(),
@@ -126,7 +126,7 @@
))
data["requests"] = list()
for(var/datum/supply_order/SO in SSshuttle.requestlist)
for(var/datum/supply_order/SO in SSshuttle.request_list)
data["requests"] += list(list(
"object" = SO.pack.name,
"cost" = SO.pack.get_cost(),
@@ -168,7 +168,7 @@
if(!SSshuttle.supply.canMove())
say(safety_warning)
return
if(SSshuttle.supplyBlocked)
if(SSshuttle.supply_blocked)
say(blockade_warning)
return
if(SSshuttle.supply.getDockedId() == docking_home)
@@ -184,7 +184,7 @@
if("loan")
if(!SSshuttle.shuttle_loan)
return
if(SSshuttle.supplyBlocked)
if(SSshuttle.supply_blocked)
say(blockade_warning)
return
else if(SSshuttle.supply.mode != SHUTTLE_IDLE)
@@ -260,9 +260,9 @@
var/datum/supply_order/SO = new(pack, name, rank, ckey, reason, account, null, applied_coupon)
SO.generateRequisition(T)
if(requestonly && !self_paid)
SSshuttle.requestlist += SO
SSshuttle.request_list += SO
else
SSshuttle.shoppinglist += SO
SSshuttle.shopping_list += SO
if(self_paid)
say("Order processed. The price will be charged to [account.account_holder]'s bank account on delivery.")
if(requestonly && message_cooldown < world.time)
@@ -271,7 +271,7 @@
. = TRUE
if("remove")
var/id = text2num(params["id"])
for(var/datum/supply_order/SO in SSshuttle.shoppinglist)
for(var/datum/supply_order/SO in SSshuttle.shopping_list)
if(SO.id != id)
continue
if(SO.department_destination)
@@ -280,32 +280,32 @@
if(SO.applied_coupon)
say("Coupon refunded.")
SO.applied_coupon.forceMove(get_turf(src))
SSshuttle.shoppinglist -= SO
SSshuttle.shopping_list -= SO
. = TRUE
break
if("clear")
for(var/datum/supply_order/cancelled_order in SSshuttle.shoppinglist)
for(var/datum/supply_order/cancelled_order in SSshuttle.shopping_list)
if(cancelled_order.department_destination)
continue //don't cancel other department's orders
SSshuttle.shoppinglist -= cancelled_order
SSshuttle.shopping_list -= cancelled_order
. = TRUE
if("approve")
var/id = text2num(params["id"])
for(var/datum/supply_order/SO in SSshuttle.requestlist)
for(var/datum/supply_order/SO in SSshuttle.request_list)
if(SO.id == id)
SSshuttle.requestlist -= SO
SSshuttle.shoppinglist += SO
SSshuttle.request_list -= SO
SSshuttle.shopping_list += SO
. = TRUE
break
if("deny")
var/id = text2num(params["id"])
for(var/datum/supply_order/SO in SSshuttle.requestlist)
for(var/datum/supply_order/SO in SSshuttle.request_list)
if(SO.id == id)
SSshuttle.requestlist -= SO
SSshuttle.request_list -= SO
. = TRUE
break
if("denyall")
SSshuttle.requestlist.Cut()
SSshuttle.request_list.Cut()
. = TRUE
if("toggleprivate")
self_paid = !self_paid
+8 -8
View File
@@ -99,7 +99,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/auxiliary_base, 32)
data["status"] = "Recharging"
else
data["status"] = "In Transit"
for(var/obj/docking_port/stationary/S in SSshuttle.stationary)
for(var/obj/docking_port/stationary/S in SSshuttle.stationary_docking_ports)
if(!options.Find(S.port_destinations))
continue
if(!M.check_dock(S, silent = TRUE))
@@ -201,7 +201,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/auxiliary_base, 32)
possible_destinations = "mining_home;mining_away;landing_zone_dock;mining_public"
/obj/machinery/computer/auxiliary_base/proc/set_landing_zone(turf/T, mob/user, no_restrictions)
var/obj/docking_port/mobile/auxiliary_base/base_dock = locate(/obj/docking_port/mobile/auxiliary_base) in SSshuttle.mobile
var/obj/docking_port/mobile/auxiliary_base/base_dock = locate(/obj/docking_port/mobile/auxiliary_base) in SSshuttle.mobile_docking_ports
if(!base_dock) //Not all maps have an Aux base. This object is useless in that case.
to_chat(user, span_warning("This station is not equipped with an auxiliary base. Please contact your Nanotrasen contractor."))
return
@@ -370,7 +370,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/auxiliary_base, 32)
return
//Mining shuttles may not be created equal, so we find the map's shuttle dock and size accordingly.
for(var/S in SSshuttle.stationary)
for(var/S in SSshuttle.stationary_docking_ports)
var/obj/docking_port/stationary/SM = S //SM is declared outside so it can be checked for null
if(SM.id == "mining_home" || SM.id == "mining_away")
@@ -394,7 +394,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/auxiliary_base, 32)
var/obj/docking_port/mobile/mining_shuttle
var/list/landing_turfs = list() //List of turfs where the mining shuttle may land.
for(var/S in SSshuttle.mobile)
for(var/S in SSshuttle.mobile_docking_ports)
var/obj/docking_port/mobile/MS = S
if(MS.id != "mining")
continue
@@ -404,7 +404,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/auxiliary_base, 32)
if(!mining_shuttle) //Not having a mining shuttle is a map issue
to_chat(user, span_warning("No mining shuttle signal detected. Please contact Nanotrasen Support."))
SSshuttle.stationary.Remove(Mport)
SSshuttle.stationary_docking_ports.Remove(Mport)
qdel(Mport)
return
@@ -412,18 +412,18 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/auxiliary_base, 32)
var/turf/L = landing_turfs[i]
if(!L) //This happens at map edges
to_chat(user, span_warning("Unable to secure a valid docking zone. Please try again in an open area near, but not within the auxiliary mining base."))
SSshuttle.stationary.Remove(Mport)
SSshuttle.stationary_docking_ports.Remove(Mport)
qdel(Mport)
return
if(istype(get_area(L), /area/shuttle/auxiliary_base))
to_chat(user, span_warning("The mining shuttle must not land within the mining base itself."))
SSshuttle.stationary.Remove(Mport)
SSshuttle.stationary_docking_ports.Remove(Mport)
qdel(Mport)
return
if(mining_shuttle.canDock(Mport) != SHUTTLE_CAN_DOCK)
to_chat(user, span_warning("Unable to secure a valid docking zone. Please try again in an open area near, but not within the auxiliary mining base."))
SSshuttle.stationary.Remove(Mport)
SSshuttle.stationary_docking_ports.Remove(Mport)
qdel(Mport)
return
@@ -253,7 +253,7 @@
if(SHUTTLE_RECALL, SHUTTLE_IDLE)
SSticker.mode.make_antag_chance(humanc)
if(SHUTTLE_CALL)
if(SSshuttle.emergency.timeLeft(1) > initial(SSshuttle.emergencyCallTime)*0.5)
if(SSshuttle.emergency.timeLeft(1) > initial(SSshuttle.emergency_call_time)*0.5)
SSticker.mode.make_antag_chance(humanc)
if((job.job_flags & JOB_ASSIGN_QUIRKS) && humanc && CONFIG_GET(flag/roundstart_traits))
@@ -120,11 +120,11 @@
var/message = "Remember to stamp and send back the supply manifests."
if(SSshuttle.centcom_message)
message = SSshuttle.centcom_message
if(SSshuttle.supplyBlocked)
if(SSshuttle.supply_blocked)
message = blockade_warning
data["message"] = message
data["cart"] = list()
for(var/datum/supply_order/SO in SSshuttle.shoppinglist)
for(var/datum/supply_order/SO in SSshuttle.shopping_list)
data["cart"] += list(list(
"object" = SO.pack.name,
"cost" = SO.pack.get_cost(),
@@ -134,7 +134,7 @@
))
data["requests"] = list()
for(var/datum/supply_order/SO in SSshuttle.requestlist)
for(var/datum/supply_order/SO in SSshuttle.request_list)
data["requests"] += list(list(
"object" = SO.pack.name,
"cost" = SO.pack.get_cost(),
@@ -154,7 +154,7 @@
if(!SSshuttle.supply.canMove())
computer.say(safety_warning)
return
if(SSshuttle.supplyBlocked)
if(SSshuttle.supply_blocked)
computer.say(blockade_warning)
return
if(SSshuttle.supply.getDockedId() == docking_home)
@@ -170,7 +170,7 @@
if("loan")
if(!SSshuttle.shuttle_loan)
return
if(SSshuttle.supplyBlocked)
if(SSshuttle.supply_blocked)
computer.say(blockade_warning)
return
else if(SSshuttle.supply.mode != SHUTTLE_IDLE)
@@ -238,42 +238,42 @@
var/datum/supply_order/SO = new(pack, name, rank, ckey, reason, account)
SO.generateRequisition(T)
if((requestonly && !self_paid) || !(card_slot?.GetID()))
SSshuttle.requestlist += SO
SSshuttle.request_list += SO
else
SSshuttle.shoppinglist += SO
SSshuttle.shopping_list += SO
if(self_paid)
computer.say("Order processed. The price will be charged to [account.account_holder]'s bank account on delivery.")
. = TRUE
if("remove")
var/id = text2num(params["id"])
for(var/datum/supply_order/SO in SSshuttle.shoppinglist)
for(var/datum/supply_order/SO in SSshuttle.shopping_list)
if(SO.id == id)
SSshuttle.shoppinglist -= SO
SSshuttle.shopping_list -= SO
. = TRUE
break
if("clear")
SSshuttle.shoppinglist.Cut()
SSshuttle.shopping_list.Cut()
. = TRUE
if("approve")
var/id = text2num(params["id"])
for(var/datum/supply_order/SO in SSshuttle.requestlist)
for(var/datum/supply_order/SO in SSshuttle.request_list)
if(SO.id == id)
var/obj/item/card/id/id_card = card_slot?.GetID()
if(id_card && id_card?.registered_account)
SO.paying_account = SSeconomy.get_dep_account(id_card?.registered_account?.account_job.paycheck_department)
SSshuttle.requestlist -= SO
SSshuttle.shoppinglist += SO
SSshuttle.request_list -= SO
SSshuttle.shopping_list += SO
. = TRUE
break
if("deny")
var/id = text2num(params["id"])
for(var/datum/supply_order/SO in SSshuttle.requestlist)
for(var/datum/supply_order/SO in SSshuttle.request_list)
if(SO.id == id)
SSshuttle.requestlist -= SO
SSshuttle.request_list -= SO
. = TRUE
break
if("denyall")
SSshuttle.requestlist.Cut()
SSshuttle.request_list.Cut()
. = TRUE
if("toggleprivate")
self_paid = !self_paid
+1 -1
View File
@@ -58,7 +58,7 @@
data["status"] = "Recharging"
else
data["status"] = "In Transit"
for(var/obj/docking_port/stationary/S in SSshuttle.stationary)
for(var/obj/docking_port/stationary/S in SSshuttle.stationary_docking_ports)
if(!options.Find(S.port_destinations))
continue
if(!M.check_dock(S, silent = TRUE))
+17 -17
View File
@@ -326,7 +326,7 @@
set_coefficient = 1
else
set_coefficient = 0.5
var/call_time = SSshuttle.emergencyCallTime * set_coefficient * engine_coeff
var/call_time = SSshuttle.emergency_call_time * set_coefficient * engine_coeff
switch(mode)
// The shuttle can not normally be called while "recalling", so
// if this proc is called, it's via admin fiat
@@ -339,26 +339,26 @@
SSshuttle.emergencyCallAmount++
if(prob(70))
SSshuttle.emergencyLastCallLoc = signalOrigin
SSshuttle.emergency_last_call_loc = signalOrigin
else
SSshuttle.emergencyLastCallLoc = null
SSshuttle.emergency_last_call_loc = null
priority_announce("The emergency shuttle has been called. [redAlert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [timeLeft(600)] minutes.[reason][SSshuttle.emergencyLastCallLoc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ][SSshuttle.adminEmergencyNoRecall ? "\n\nWarning: Shuttle recall subroutines disabled; Recall not possible." : ""]", null, ANNOUNCER_SHUTTLECALLED, "Priority")
priority_announce("The emergency shuttle has been called. [redAlert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [timeLeft(600)] minutes.[reason][SSshuttle.emergency_last_call_loc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ][SSshuttle.admin_emergency_no_recall ? "\n\nWarning: Shuttle recall subroutines disabled; Recall not possible." : ""]", null, ANNOUNCER_SHUTTLECALLED, "Priority")
/obj/docking_port/mobile/emergency/cancel(area/signalOrigin)
if(mode != SHUTTLE_CALL)
return
if(SSshuttle.emergencyNoRecall)
if(SSshuttle.emergency_no_recall)
return
invertTimer()
mode = SHUTTLE_RECALL
if(prob(70))
SSshuttle.emergencyLastCallLoc = signalOrigin
SSshuttle.emergency_last_call_loc = signalOrigin
else
SSshuttle.emergencyLastCallLoc = null
priority_announce("The emergency shuttle has been recalled.[SSshuttle.emergencyLastCallLoc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]", null, ANNOUNCER_SHUTTLERECALLED, "Priority")
SSshuttle.emergency_last_call_loc = null
priority_announce("The emergency shuttle has been recalled.[SSshuttle.emergency_last_call_loc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]", null, ANNOUNCER_SHUTTLERECALLED, "Priority")
SSticker.emergency_reason = null
@@ -445,7 +445,7 @@
setTimer(20)
return
mode = SHUTTLE_DOCKED
setTimer(SSshuttle.emergencyDockTime)
setTimer(SSshuttle.emergency_dock_time)
send2adminchat("Server", "The Emergency Shuttle has docked with the station.")
priority_announce("[SSshuttle.emergency] has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, ANNOUNCER_SHUTTLEDOCK, "Priority")
ShuttleDBStuff()
@@ -457,7 +457,7 @@
SSshuttle.checkHostileEnvironment()
if(mode == SHUTTLE_STRANDED)
return
for(var/A in SSshuttle.mobile)
for(var/A in SSshuttle.mobile_docking_ports)
var/obj/docking_port/mobile/M = A
if(M.launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to.
M.check_transit_zone()
@@ -469,7 +469,7 @@
return
success &= (check_transit_zone() == TRANSIT_READY)
for(var/A in SSshuttle.mobile)
for(var/A in SSshuttle.mobile_docking_ports)
var/obj/docking_port/mobile/M = A
if(M.launch_status == UNLAUNCHED)
success &= (M.check_transit_zone() == TRANSIT_READY)
@@ -483,9 +483,9 @@
areas += E
hyperspace_sound(HYPERSPACE_WARMUP, areas)
if(time_left <= 0 && !SSshuttle.emergencyNoEscape)
if(time_left <= 0 && !SSshuttle.emergency_no_escape)
//move each escape pod (or applicable spaceship) to its corresponding transit dock
for(var/A in SSshuttle.mobile)
for(var/A in SSshuttle.mobile_docking_ports)
var/obj/docking_port/mobile/M = A
M.on_emergency_launch()
@@ -497,7 +497,7 @@
enterTransit()
mode = SHUTTLE_ESCAPE
launch_status = ENDGAME_LAUNCHED
setTimer(SSshuttle.emergencyEscapeTime * engine_coeff)
setTimer(SSshuttle.emergency_escape_time * engine_coeff)
priority_announce("The Emergency Shuttle has left the station. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.", null, null, "Priority")
INVOKE_ASYNC(SSticker, /datum/controller/subsystem/ticker.proc/poll_hearts)
SSmapping.mapvote() //If no map vote has been run yet, start one.
@@ -521,7 +521,7 @@
break
if(area_parallax)
parallax_slowdown()
for(var/A in SSshuttle.mobile)
for(var/A in SSshuttle.mobile_docking_ports)
var/obj/docking_port/mobile/M = A
if(M.launch_status == ENDGAME_LAUNCHED)
if(istype(M, /obj/docking_port/mobile/pod))
@@ -529,7 +529,7 @@
if(time_left <= 0)
//move each escape pod to its corresponding escape dock
for(var/A in SSshuttle.mobile)
for(var/A in SSshuttle.mobile_docking_ports)
var/obj/docking_port/mobile/M = A
M.on_emergency_dock()
@@ -552,7 +552,7 @@
mode = SHUTTLE_ESCAPE
launch_status = ENDGAME_LAUNCHED
setTimer(SSshuttle.emergencyEscapeTime)
setTimer(SSshuttle.emergency_escape_time)
priority_announce("The Emergency Shuttle is preparing for direct jump. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.", null, null, "Priority")
+6 -6
View File
@@ -33,11 +33,11 @@
if(!mapload)
connect_to_shuttle(SSshuttle.get_containing_shuttle(src))
for(var/obj/docking_port/stationary/S as anything in SSshuttle.stationary)
for(var/obj/docking_port/stationary/S as anything in SSshuttle.stationary_docking_ports)
if(S.id == shuttleId)
jumpto_ports[S.id] = TRUE
for(var/V in SSshuttle.stationary)
for(var/V in SSshuttle.stationary_docking_ports)
if(!V)
continue
var/obj/docking_port/stationary/S = V
@@ -355,9 +355,9 @@
playsound(console, 'sound/machines/terminal_prompt_deny.ogg', 25, FALSE)
var/list/L = list()
for(var/V in SSshuttle.stationary)
for(var/V in SSshuttle.stationary_docking_ports)
if(!V)
stack_trace("SSshuttle.stationary have null entry!")
stack_trace("SSshuttle.stationary_docking_ports have null entry!")
continue
var/obj/docking_port/stationary/S = V
if(console.z_lock.len && !(S.z in console.z_lock))
@@ -365,9 +365,9 @@
if(console.jumpto_ports[S.id])
L["([L.len])[S.name]"] = S
for(var/V in SSshuttle.beacons)
for(var/V in SSshuttle.beacon_list)
if(!V)
stack_trace("SSshuttle.beacons have null entry!")
stack_trace("SSshuttle.beacon_list have null entry!")
continue
var/obj/machinery/spaceship_navigation_beacon/nav_beacon = V
if(!nav_beacon.z || SSmapping.level_has_any_trait(nav_beacon.z, console.locked_traits))
+6 -6
View File
@@ -220,7 +220,7 @@
if(!port_destinations)
port_destinations = id
SSshuttle.stationary += src
SSshuttle.stationary_docking_ports += src
/obj/docking_port/stationary/Initialize(mapload)
. = ..()
@@ -239,7 +239,7 @@
/obj/docking_port/stationary/unregister()
. = ..()
SSshuttle.stationary -= src
SSshuttle.stationary_docking_ports -= src
/obj/docking_port/stationary/Destroy(force)
if(force)
@@ -281,13 +281,13 @@
/obj/docking_port/stationary/transit/Initialize(mapload)
. = ..()
SSshuttle.transit += src
SSshuttle.transit_docking_ports += src
/obj/docking_port/stationary/transit/Destroy(force=FALSE)
if(force)
if(get_docked())
log_world("A transit dock was destroyed while something was docked to it.")
SSshuttle.transit -= src
SSshuttle.transit_docking_ports -= src
if(owner)
if(owner.assigned_transit == src)
owner.assigned_transit = null
@@ -385,11 +385,11 @@
else
SSshuttle.assoc_mobile[id] = 1
SSshuttle.mobile += src
SSshuttle.mobile_docking_ports += src
/obj/docking_port/mobile/unregister()
. = ..()
SSshuttle.mobile -= src
SSshuttle.mobile_docking_ports -= src
/obj/docking_port/mobile/Destroy(force)
if(force)
@@ -20,13 +20,13 @@
/obj/machinery/spaceship_navigation_beacon/Initialize(mapload)
. = ..()
SSshuttle.beacons |= src
SSshuttle.beacon_list |= src
/obj/machinery/spaceship_navigation_beacon/emp_act()
locked = TRUE
/obj/machinery/spaceship_navigation_beacon/Destroy()
SSshuttle.beacons -= src
SSshuttle.beacon_list -= src
return ..()
// update the icon_state
+4 -4
View File
@@ -116,14 +116,14 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
new item.item_instance.type(grocery_crate)
SSshuttle.chef_groceries.Cut() //This lets the console know it can order another round.
if(!SSshuttle.shoppinglist.len)
if(!SSshuttle.shopping_list.len)
return
var/value = 0
var/purchases = 0
var/list/goodies_by_buyer = list() // if someone orders more than GOODY_FREE_SHIPPING_MAX goodies, we upcharge to a normal crate so they can't carry around 20 combat shotties
for(var/datum/supply_order/spawning_order in SSshuttle.shoppinglist)
for(var/datum/supply_order/spawning_order in SSshuttle.shopping_list)
if(!empty_turfs.len)
break
var/price = spawning_order.pack.get_cost()
@@ -159,8 +159,8 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
var/datum/bank_account/department/cargo = SSeconomy.get_dep_account(ACCOUNT_CAR)
cargo.adjust_money(price - spawning_order.pack.get_cost()) //Cargo gets the handling fee
value += spawning_order.pack.get_cost()
SSshuttle.shoppinglist -= spawning_order
SSshuttle.orderhistory += spawning_order
SSshuttle.shopping_list -= spawning_order
SSshuttle.order_history += spawning_order
QDEL_NULL(spawning_order.applied_coupon)
if(!spawning_order.pack.goody) //we handle goody crates below