mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 05:00:55 +01:00
Documents and improves the variable names of the shuttle subsystem (#63946)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
@@ -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()
|
||||
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user