mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
[MIRROR] ATC Refactor (#10422)
Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
1ad7827d9d
commit
f543fd71e2
@@ -291,34 +291,34 @@
|
||||
. = ..()
|
||||
announce_atc(AM,going = TRUE)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/cryogaia/proc/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
/obj/effect/overmap/visitable/sector/cryogaia/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
var/message = "Sensor contact for vessel '[AM.name]' has [going ? "left" : "entered"] ATC control area."
|
||||
//For landables, we need to see if their shuttle is cloaked
|
||||
if(istype(AM, /obj/effect/overmap/visitable/ship/landable))
|
||||
var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew
|
||||
var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle]
|
||||
if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
//For ships, it's safe to assume they're big enough to not be sneaky
|
||||
else if(istype(AM, /obj/effect/overmap/visitable/ship))
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/cryogaia/get_space_zlevels()
|
||||
return list() //None!
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/proc/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
var/message = "Sensor contact for vessel '[AM.name]' has [going ? "left" : "entered"] ATC control area."
|
||||
//For landables, we need to see if their shuttle is cloaked
|
||||
if(istype(AM, /obj/effect/overmap/visitable/ship/landable))
|
||||
var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew
|
||||
var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle]
|
||||
if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
//For ships, it's safe to assume they're big enough to not be sneaky
|
||||
else if(istype(AM, /obj/effect/overmap/visitable/ship))
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
|
||||
// For making the 6-in-1 holomap, we calculate some offsets ((Disabled because I don't have a clue to how to start making this for Cryogaia))
|
||||
|
||||
@@ -162,6 +162,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
|
||||
|
||||
// Subsystem fire priority, from lowest to highest priority
|
||||
// If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child)
|
||||
#define FIRE_PRIORITY_ATC 1
|
||||
#define FIRE_PRIORITY_PLAYERTIPS 5
|
||||
#define FIRE_PRIORITY_SHUTTLES 5
|
||||
#define FIRE_PRIORITY_SUPPLY 5
|
||||
|
||||
@@ -100,7 +100,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle = new
|
||||
if(istype(A, /area/hallway))
|
||||
A.readyalert()
|
||||
|
||||
atc.reroute_traffic(yes = 1)
|
||||
SSatc.reroute_traffic(yes = 1)
|
||||
|
||||
//calls the shuttle for a routine crew transfer
|
||||
/datum/emergency_shuttle_controller/proc/call_transfer()
|
||||
@@ -116,7 +116,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle = new
|
||||
var/estimated_time = round(estimate_arrival_time()/60,1)
|
||||
|
||||
priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_called_message, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s")) //CHOMP Reversion
|
||||
atc.shift_ending()
|
||||
SSatc.shift_ending()
|
||||
|
||||
//recalls the shuttle
|
||||
/datum/emergency_shuttle_controller/proc/recall()
|
||||
|
||||
83
code/controllers/subsystems/air_traffic.dm
Normal file
83
code/controllers/subsystems/air_traffic.dm
Normal file
@@ -0,0 +1,83 @@
|
||||
//Cactus, Speedbird, Dynasty, oh my
|
||||
//Also, massive additions/refactors by Killian, because the original incarnation was full of holes
|
||||
//Originally coded by above, massive refactor here to use datums instead of an if/else mess - Willbird
|
||||
SUBSYSTEM_DEF(atc)
|
||||
name = "Air Traffic Control"
|
||||
priority = FIRE_PRIORITY_ATC
|
||||
runlevels = RUNLEVEL_GAME
|
||||
wait = 2 SECONDS
|
||||
flags = SS_BACKGROUND
|
||||
|
||||
VAR_PRIVATE/next_tick = 0
|
||||
VAR_PRIVATE/datum/atc_chatter_type/chatter_datum = new() // don't change, override the chatter_box() proc
|
||||
VAR_PRIVATE/delay_min = 45 MINUTES //How long between ATC traffic, minimum
|
||||
VAR_PRIVATE/delay_max = 90 MINUTES //Ditto, maximum
|
||||
//Shorter delays means more traffic, which gives the impression of a busier system, but also means a lot more radio noise
|
||||
VAR_PRIVATE/backoff_delay = 5 MINUTES //How long to back off if we can't talk and want to. Default is 5 mins.
|
||||
VAR_PRIVATE/initial_delay = 15 MINUTES //How long to wait before sending the first message of the shift.
|
||||
VAR_PRIVATE/squelched = FALSE //If ATC is squelched currently
|
||||
|
||||
//define a block of frequencies so we can have them be static instead of being random for each call
|
||||
var/ertchannel
|
||||
var/medchannel
|
||||
var/engchannel
|
||||
var/secchannel
|
||||
var/sdfchannel
|
||||
|
||||
/datum/controller/subsystem/atc/Initialize()
|
||||
//generate our static event frequencies for the shift. alternately they can be completely fixed, up in the core block
|
||||
ertchannel = "[rand(700,749)].[rand(1,9)]"
|
||||
medchannel = "[rand(750,799)].[rand(1,9)]"
|
||||
engchannel = "[rand(800,849)].[rand(1,9)]"
|
||||
secchannel = "[rand(850,899)].[rand(1,9)]"
|
||||
sdfchannel = "[rand(900,999)].[rand(1,9)]"
|
||||
return SS_INIT_SUCCESS
|
||||
|
||||
/datum/controller/subsystem/atc/fire()
|
||||
if(times_fired < 1)
|
||||
return
|
||||
if(times_fired == 1)
|
||||
next_tick = world.time + initial_delay
|
||||
INVOKE_ASYNC(src,PROC_REF(shift_starting))
|
||||
return
|
||||
if(world.time < next_tick)
|
||||
return
|
||||
if(squelched)
|
||||
next_tick = world.time + backoff_delay
|
||||
return
|
||||
next_tick = world.time + rand(delay_min,delay_max)
|
||||
INVOKE_ASYNC(src,PROC_REF(random_convo))
|
||||
|
||||
/datum/controller/subsystem/atc/proc/shift_starting()
|
||||
new /datum/atc_chatter/shift_start(null,null)
|
||||
|
||||
/datum/controller/subsystem/atc/proc/shift_ending()
|
||||
new /datum/atc_chatter/shift_end(null,null)
|
||||
|
||||
/datum/controller/subsystem/atc/proc/random_convo()
|
||||
// Pick from the organizations in the LOREMASTER, so we can find out what these ships are doing
|
||||
var/one = pick(loremaster.organizations) //These will pick an index, not an instance
|
||||
var/two = pick(loremaster.organizations)
|
||||
var/datum/lore/organization/source = loremaster.organizations[one] //Resolve to the instances
|
||||
var/datum/lore/organization/secondary = loremaster.organizations[two] //repurposed for new fun stuff
|
||||
|
||||
//Random chance things for variety
|
||||
var/path = chatter_datum.chatter_box(source.org_type,secondary.org_type)
|
||||
new path(source,secondary)
|
||||
|
||||
/datum/controller/subsystem/atc/proc/reroute_traffic(var/yes = 1,var/silent = FALSE)
|
||||
if(yes)
|
||||
if(!squelched && !silent)
|
||||
msg("Rerouting traffic away from [using_map.station_name].")
|
||||
squelched = 1
|
||||
else
|
||||
if(squelched && !silent)
|
||||
msg("Resuming normal traffic routing around [using_map.station_name].")
|
||||
squelched = 0
|
||||
|
||||
/datum/controller/subsystem/atc/proc/msg(var/message,var/sender)
|
||||
ASSERT(message)
|
||||
global_announcer.autosay("[message]", sender ? sender : "[using_map.dock_name] Control")
|
||||
|
||||
/datum/controller/subsystem/atc/proc/is_squelched()
|
||||
return squelched
|
||||
150
code/modules/busy_space/atc_chatter.dm
Normal file
150
code/modules/busy_space/atc_chatter.dm
Normal file
@@ -0,0 +1,150 @@
|
||||
//minimum and maximum message delays, typically tracked in seconds
|
||||
#define MIN_MSG_DELAY 3
|
||||
#define MAX_MSG_DELAY 6
|
||||
|
||||
/datum/atc_chatter
|
||||
VAR_PROTECTED/phase = 1 // phase of dialog being displayed
|
||||
// Docks and zones
|
||||
VAR_PROTECTED/yes = FALSE
|
||||
VAR_PROTECTED/request = ""
|
||||
VAR_PROTECTED/callname = ""
|
||||
VAR_PROTECTED/response = ""
|
||||
VAR_PROTECTED/number = 1
|
||||
VAR_PROTECTED/zone = ""
|
||||
VAR_PROTECTED/landing_zone = ""
|
||||
VAR_PROTECTED/landing_type = ""
|
||||
VAR_PROTECTED/landing_move = ""
|
||||
VAR_PROTECTED/landing_short = ""
|
||||
// Ship identities
|
||||
VAR_PROTECTED/name = ""
|
||||
VAR_PROTECTED/owner = ""
|
||||
VAR_PROTECTED/prefix = ""
|
||||
VAR_PROTECTED/firstid = ""
|
||||
VAR_PROTECTED/mission = ""
|
||||
VAR_PROTECTED/shipname = ""
|
||||
VAR_PROTECTED/destname = ""
|
||||
VAR_PROTECTED/slogan = ""
|
||||
VAR_PROTECTED/org_type = ""
|
||||
// Second ship identity
|
||||
VAR_PROTECTED/secondname = ""
|
||||
VAR_PROTECTED/secondowner = ""
|
||||
VAR_PROTECTED/secondprefix = ""
|
||||
VAR_PROTECTED/secondid = ""
|
||||
VAR_PROTECTED/secondshipname = ""
|
||||
VAR_PROTECTED/org_type2 = ""
|
||||
// Combined data
|
||||
VAR_PROTECTED/combined_first_name = ""
|
||||
VAR_PROTECTED/short_first_name = ""
|
||||
VAR_PROTECTED/comm_first_name = ""
|
||||
VAR_PROTECTED/combined_second_name = ""
|
||||
VAR_PROTECTED/comm_second_name = ""
|
||||
VAR_PROTECTED/short_second_name = ""
|
||||
VAR_PROTECTED/mission_noun = ""
|
||||
|
||||
/datum/atc_chatter/New(var/datum/lore/organization/source, var/datum/lore/organization/secondary)
|
||||
if(source && secondary) // Evac shuttle atc passes nothing in and only uses map datum for names!
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
// Get the docking bay or zone in space the ships are passing into
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//First response is 'yes', second is 'no'
|
||||
var/requests = list(
|
||||
"special flight rules" = list("authorizing special flight rules", "denying special flight rules, not allowed for your traffic class"),
|
||||
"current solar weather info" = list("sending you the relevant information via tightbeam", "your request has been queued, stand by"),
|
||||
"sector aerospace priority" = list("affirmative, sector aerospace priority is yours", "negative, another vessel in your sector has priority right now"),
|
||||
"system traffic info" = list("sending you current traffic info", "request queued, please hold"),
|
||||
"refueling information" = list("sending refueling information now", "depots currently experiencing fuel shortages, advise you move on"),
|
||||
"a current system time sync" = list("sending time sync ping to you now", "your ship isn't compatible with our time sync, set time manually"),
|
||||
"current system starcharts" = list("transmitting current starcharts", "your request is queued, overloaded right now")
|
||||
)
|
||||
request = pick(requests)
|
||||
yes = prob(90) //Chance for them to say yes vs no
|
||||
callname = "[using_map.dock_name] Control"
|
||||
response = requests[request][yes ? 1 : 2] //1 is yes, 2 is no
|
||||
number = rand(1,42)
|
||||
zone = pick("Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega")
|
||||
//fallbacks in case someone sets the dock_type on the map datum to null- it defaults to "station" normally
|
||||
landing_zone = "LZ [zone]"
|
||||
landing_type = "landing zone"
|
||||
landing_move = "landing request"
|
||||
landing_short = "land"
|
||||
switch(using_map.dock_type)
|
||||
if("surface") //formal installations with proper facilities
|
||||
landing_zone = "landing pad [number]"
|
||||
landing_type = "landing pad"
|
||||
landing_move = "landing request"
|
||||
landing_short = "land"
|
||||
callname = "[using_map.dock_name] Tower"
|
||||
if("frontier") //for frontier bases - landing spots are literally just open ground, maybe concrete at best
|
||||
landing_zone = "LZ [zone]"
|
||||
landing_type = "landing zone"
|
||||
landing_move = "landing request"
|
||||
landing_short = "land"
|
||||
callname = "[using_map.dock_name] Tower"
|
||||
if("station") //standard station pattern
|
||||
landing_zone = "docking bay [number]"
|
||||
landing_type = "docking bay"
|
||||
landing_move = "docking request"
|
||||
landing_short = "dock"
|
||||
callname = "[using_map.dock_name] Control"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
// Construct the two ships involved from their loremaster organization data
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Let's get some mission parameters, pick our first ship
|
||||
name = source.name //get the name
|
||||
owner = source.short_name //Use the short name
|
||||
prefix = pick(source.ship_prefixes) //Pick a random prefix
|
||||
firstid = "[rand(0,9)][rand(0,9)][rand(0,9)][rand(0,9)]"
|
||||
mission = source.ship_prefixes[prefix] //The value of the prefix is the mission type that prefix does
|
||||
shipname = pick(source.ship_names) //Pick a random ship name
|
||||
destname = pick(source.destination_names) //destination is where?
|
||||
slogan = pick(source.slogans) //god help you all
|
||||
org_type = source.org_type //which group do we belong to?
|
||||
//pick our second ship
|
||||
secondname = secondary.name //not used atm, commented out to suppress errors
|
||||
secondowner = secondary.short_name
|
||||
secondprefix = pick(secondary.ship_prefixes) //Pick a random prefix
|
||||
secondid = "[rand(0,9)][rand(0,9)][rand(0,9)][rand(0,9)]"
|
||||
secondshipname = pick(secondary.ship_names) //Pick a random ship name
|
||||
org_type2 = secondary.org_type
|
||||
|
||||
//DEBUG BLOCK
|
||||
//to_world("DEBUG OUTPUT 1: [name], [owner], [prefix], [firstid], [mission], [shipname], [org_type], [destname]")
|
||||
//to_world("DEBUG OUTPUT 2: [secondowner], [secondprefix], [secondid], [secondshipname], [org_type2]")
|
||||
//to_world("DEBUG OUTPUT 3: Chose [chatter_type]")
|
||||
//DEBUG BLOCK ENDS
|
||||
|
||||
combined_first_name = "[prefix] [firstid] |[shipname]|" //formal traffic control identifier for use in messages
|
||||
short_first_name = "[prefix] |[shipname]|" //special variant for certain events
|
||||
comm_first_name = "[owner] [shipname]" //corpname + shipname for speaker identity in log
|
||||
combined_second_name = "[secondprefix] [secondid] |[secondshipname]|"
|
||||
comm_second_name = "[secondowner] [secondshipname]"
|
||||
short_second_name = "[secondprefix] |[secondshipname]|" //not actually used for now
|
||||
|
||||
mission_noun = pick(source.flight_types) //pull from a list of owner-specific flight ops, to allow an extra dash of flavor
|
||||
if(source.complex_tasks) //if our source has the complex_tasks flag, regenerate with a two-stage assignment
|
||||
mission_noun = "[pick(source.task_types)] [pick(source.flight_types)]"
|
||||
|
||||
// Get the ball rolling
|
||||
squak()
|
||||
|
||||
/datum/atc_chatter/proc/squak()
|
||||
PROTECTED_PROC(TRUE)
|
||||
// calls acknowledge at each message phase until final, where it qdel(src)
|
||||
return
|
||||
|
||||
/datum/atc_chatter/proc/next(var/multiplier = 1,var/pr_ref = null)
|
||||
SHOULD_NOT_OVERRIDE(TRUE)
|
||||
PROTECTED_PROC(TRUE)
|
||||
if(!pr_ref) // don't advance the section unless we actually call squak(), otherwise it's a submessage override
|
||||
pr_ref = PROC_REF(squak)
|
||||
phase++ // next
|
||||
addtimer(CALLBACK(src, pr_ref), (rand(MIN_MSG_DELAY,MAX_MSG_DELAY) SECONDS) * multiplier)
|
||||
|
||||
/datum/atc_chatter/proc/finish() // Override me if you have any cleanup to do
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
PROTECTED_PROC(TRUE)
|
||||
qdel(src)
|
||||
|
||||
#undef MIN_MSG_DELAY
|
||||
#undef MAX_MSG_DELAY
|
||||
77
code/modules/busy_space/atc_chatter_type.dm
Normal file
77
code/modules/busy_space/atc_chatter_type.dm
Normal file
@@ -0,0 +1,77 @@
|
||||
// Override/Replace me downstream if you need different chatter, call parent at end if you want this dialog too! Returns a subtype path of /datum/atc_chatter!
|
||||
/datum/atc_chatter_type/proc/chatter_box(var/org_type,var/org_type2)
|
||||
if((org_type == "government" || org_type == "neutral" || org_type == "military" || org_type == "corporate" || org_type == "system defense" || org_type == "spacer") && org_type2 == "pirate") //this is ugly but when I tried to do it with !='s it fired for pirate-v-pirate, still not sure why. might as well stick it up here so it takes priority over other combos.
|
||||
return /datum/atc_chatter/distress
|
||||
if(org_type == "corporate") //corporate-specific subset for the slogan event. despite the relatively high weight it was still quite rare in tests.
|
||||
return pick(5;/datum/atc_chatter/emerg,
|
||||
25;/datum/atc_chatter/policescan,
|
||||
25;/datum/atc_chatter/traveladvisory,
|
||||
30;/datum/atc_chatter/pathwarning,
|
||||
180;/datum/atc_chatter/dockingrequestgeneric,
|
||||
30;/datum/atc_chatter/undockingrequest,
|
||||
/datum/atc_chatter/misc,
|
||||
30;/datum/atc_chatter/undockingdenied,
|
||||
50;/datum/atc_chatter/slogan,
|
||||
25;/datum/atc_chatter/civvieleaks,
|
||||
25;/datum/atc_chatter/report_to_dock)
|
||||
if((org_type == "government" || org_type == "neutral" || org_type == "military"))
|
||||
return pick(5;/datum/atc_chatter/emerg,
|
||||
25;/datum/atc_chatter/policescan,
|
||||
25;/datum/atc_chatter/traveladvisory,
|
||||
30;/datum/atc_chatter/pathwarning,
|
||||
180;/datum/atc_chatter/dockingrequestgeneric,
|
||||
30;/datum/atc_chatter/undockingrequest,
|
||||
/datum/atc_chatter/misc,
|
||||
30;/datum/atc_chatter/undockingdenied,
|
||||
25;/datum/atc_chatter/civvieleaks,
|
||||
25;/datum/atc_chatter/report_to_dock)
|
||||
if(org_type == "spacer")
|
||||
return pick(5;/datum/atc_chatter/emerg,
|
||||
15;/datum/atc_chatter/policescan,
|
||||
15;/datum/atc_chatter/traveladvisory,
|
||||
5;/datum/atc_chatter/pathwarning,
|
||||
150;/datum/atc_chatter/dockingrequestgeneric,
|
||||
30;/datum/atc_chatter/undockingrequest,
|
||||
/datum/atc_chatter/misc,
|
||||
10;/datum/atc_chatter/undockingdenied,
|
||||
25;/datum/atc_chatter/civvieleaks,
|
||||
25;/datum/atc_chatter/report_to_dock)
|
||||
//the following filters *always* fire their 'unique' event when they're tripped, simply because the conditions behind them are quite rare to begin with
|
||||
if(org_type == "smuggler" && org_type2 != "system defense") //just straight up funnel smugglers into always being caught, otherwise we get them asking for traffic info and stuff
|
||||
return /datum/atc_chatter/policeflee
|
||||
if(org_type == "smuggler" && org_type2 == "system defense") //ditto, if an SDF ship catches them
|
||||
return /datum/atc_chatter/policeshipflee
|
||||
if((org_type == "smuggler" || org_type == "pirate") && (org_type2 == "system defense" || org_type2 == "military")) //if we roll this combo instead, time for the SDF or Mercs to do their fucking jobs
|
||||
return /datum/atc_chatter/policeshipcombat
|
||||
if((org_type == "smuggler" || org_type == "pirate") && org_type2 != "system defense") //but if we roll THIS combo, time to alert the SDF to get off their asses
|
||||
return /datum/atc_chatter/hostiledetected
|
||||
//SDF-specific events that need to filter based on the second party (basically just the following SDF-unique list with the soft-result ship scan thrown in)
|
||||
if(org_type == "system defense" && (org_type2 == "government" || org_type2 == "neutral" || org_type2 == "military" || org_type2 == "corporate" || org_type2 == "spacer")) //let's see if we can narrow this down, I didn't see many ship-to-ship scans
|
||||
return pick(75;/datum/atc_chatter/policeshipscan,
|
||||
/datum/atc_chatter/sdfpatrolupdate,
|
||||
75;/datum/atc_chatter/sdfendingpatrol,
|
||||
180;/datum/atc_chatter/dockingrequestgeneric,
|
||||
20;/datum/atc_chatter/undockingrequest,
|
||||
75;/datum/atc_chatter/sdfbeginpatrol,
|
||||
50;/datum/atc_chatter/misc,
|
||||
10;/datum/atc_chatter/civvieleaks,
|
||||
70;/datum/atc_chatter/sdfchatter)
|
||||
//SDF-specific events that don't require the secondary at all, in the event that we manage to roll SDF + hostile/smuggler or something
|
||||
if(org_type == "system defense")
|
||||
return pick(/datum/atc_chatter/sdfpatrolupdate,
|
||||
60;/datum/atc_chatter/sdfendingpatrol,
|
||||
120;/datum/atc_chatter/dockingrequestgeneric,
|
||||
20;/datum/atc_chatter/undockingrequest,
|
||||
80;/datum/atc_chatter/sdfbeginpatrol,
|
||||
/datum/atc_chatter/misc,
|
||||
/datum/atc_chatter/sdfchatter)
|
||||
//if we somehow don't match any of the other existing filters once we've run through all of them
|
||||
return pick(5;/datum/atc_chatter/emerg,
|
||||
25;/datum/atc_chatter/policescan,
|
||||
25;/datum/atc_chatter/traveladvisory,
|
||||
30;/datum/atc_chatter/pathwarning,
|
||||
90;/datum/atc_chatter/dockingrequestgeneric,
|
||||
30;/datum/atc_chatter/undockingrequest,
|
||||
30;/datum/atc_chatter/undockingdenied,
|
||||
/datum/atc_chatter/misc,
|
||||
25;/datum/atc_chatter/civvieleaks)
|
||||
85
code/modules/busy_space/chatter_civilian.dm
Normal file
85
code/modules/busy_space/chatter_civilian.dm
Normal file
@@ -0,0 +1,85 @@
|
||||
/datum/atc_chatter/traveladvisory/squak()
|
||||
//Control event: travel advisory
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("[callname], all vessels in the [using_map.starsys_name] system. Priority travel advisory follows.")
|
||||
next()
|
||||
else
|
||||
var/flightwarning = pick("Solar flare activity is spiking and expected to cause issues along main flight lanes [rand(1,33)], [rand(34,67)], and [rand(68,100)]","Pirate activity is on the rise, stay close to System Defense vessels","We're seeing a rise in illegal salvage operations, please report any unusual activity to the nearest SDF vessel via channel [SSatc.sdfchannel]","A quarantined [pick("fleet","convoy")] is passing through the system along route [rand(1,100)], please observe minimum safe distance","A prison [pick("fleet","convoy")] is passing through the system along route [rand(1,100)], please observe minimum safe distance","Traffic volume is higher than normal, expect processing delays","Anomalous bluespace activity detected [pick("along route [rand(1,100)]","in sector [rand(1,100)]")], exercise caution","Smugglers have been particularly active lately, expect increased security scans","Depots are currently experiencing a fuel shortage, expect delays and higher rates","Asteroid mining has displaced debris dangerously close to main flight lanes on route [rand(1,100)], watch for potential impactors","A [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship","mining barge","salvage trawler")] has collided with [pick("a fuel tanker","a cargo liner","a passenger liner","a freighter","a transport ship","a mining barge","a salvage trawler","a meteoroid","a cluster of space debris","an asteroid","an ice-rich comet")] near route [rand(1,100)], watch for debris and do not impede emergency service vessels","A [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship","mining barge","salvage trawler")] on route [rand(1,100)] has experienced total engine failure. Emergency response teams are en route, please observe minimum safe distances and do not impede emergency service vessels","Transit routes have been recalculated to adjust for planetary drift. Please synch your astronav computers as soon as possible to avoid delays and difficulties","[pick("Bounty hunters","System Defense officers","Mercenaries")] are currently searching for a wanted fugitive, report any sightings of suspicious activity to System Defense via channel [SSatc.sdfchannel]",10;"It's space [pick("carp","shark")] breeding season. [pick("Stars","Skies","Gods","God","Goddess","Fates")] have mercy on you all","We're reading [pick("void","drive","sensor")] echoes that are consistent with illegal cloaking devices, be alert for suspicious activity in your sector")
|
||||
SSatc.msg("[flightwarning]. Control out.")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/pathwarning/squak()
|
||||
//Control event: warning to a specific vessel
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/navhazard = pick("a pocket of intense radiation","a pocket of unstable gas","a debris field","a secure installation","an active combat zone","a quarantined ship","a quarantined installation","a quarantined sector","a live-fire SDF training exercise","an ongoing Search & Rescue operation","a hazardous derelict","an intense electrical storm","an intense ion storm","a shoal of space carp","a pack of space sharks","an asteroid infested with gnat hives","a protected space ray habitat","a region with anomalous bluespace activity","a rogue comet")
|
||||
SSatc.msg("[combined_first_name], [callname]. Your [pick("ship","vessel","starship")] is approaching [navhazard], observe minimum safe distance and adjust your heading appropriately.")
|
||||
next()
|
||||
if(2)
|
||||
var/confirm = pick("Understood","Roger that","Affirmative","Our bad","Thanks for the heads up")
|
||||
SSatc.msg("[confirm] [callname], adjusting course.","[comm_first_name]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("Your compliance is appreciated, [combined_first_name].")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/civvieleaks/squak()
|
||||
//Civil event: leaky chatter
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/commleak = pick("thatsmywife","missingkit","pipeleaks","weirdsmell","weirdsmell2","scug","teppi")
|
||||
switch(commleak)
|
||||
if("thatsmywife")
|
||||
SSatc.msg("-so then I says to him, |that's no [pick("space carp","space shark","vox","garbage scow","freight liner","cargo hauler","superlifter")], that's my +wife!+| And he-","[comm_first_name]")
|
||||
next()
|
||||
if("missingkit")
|
||||
SSatc.msg("-did you get the kit from down on deck [rand(1,4)]? I need th-","[comm_first_name]")
|
||||
next()
|
||||
if("pipeleaks")
|
||||
SSatc.msg("I swear if these pipes keep leaking I'm going to-","[comm_first_name]")
|
||||
next()
|
||||
if("weirdsmell")
|
||||
SSatc.msg("-and where the hell is that smell coming fr-","[comm_first_name]")
|
||||
next()
|
||||
if("weirdsmell2")
|
||||
SSatc.msg("-hat in the [pick("three","five","seven","nine")] hells did you |eat| [pick("ensign","crewman")]? This compartment reeks of-","[comm_first_name]")
|
||||
next()
|
||||
if("scug")
|
||||
SSatc.msg("-and if that weird cat of yours keeps crawling into the pipes we-","[comm_first_name]")
|
||||
next()
|
||||
if("teppi")
|
||||
SSatc.msg("-at are we supposed to do with this damn cow?","[comm_first_name]")
|
||||
next(1,PROC_REF(teppi_next)) // Someone had to be a snowflake
|
||||
if(2)
|
||||
SSatc.msg("[combined_first_name], your internal comms are leaking[pick("."," again.",", again.",". |Again|.")]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("Sorry Control, won't happen again.","[comm_first_name]")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/civvieleaks/proc/teppi_next()
|
||||
SSatc.msg("I don't think it's a cow, sir, it looks more like a-","[comm_first_name]")
|
||||
next()
|
||||
|
||||
/datum/atc_chatter/slogan/squak()
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("The following is a sponsored message from [name].","Facility PA")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[slogan]","Facility PA")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/misc/squak()
|
||||
//time for generic message
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("[callname], [combined_first_name] on [mission] [pick(mission_noun)] to [destname], requesting [request].","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
SSatc.msg("[combined_first_name], [callname], [response].")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[callname], [yes ? "thank you" : "understood"], out.","[comm_first_name]")
|
||||
finish()
|
||||
50
code/modules/busy_space/chatter_distress.dm
Normal file
50
code/modules/busy_space/chatter_distress.dm
Normal file
@@ -0,0 +1,50 @@
|
||||
/datum/atc_chatter/emerg/squak()
|
||||
//mayday call
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/problem = pick("We have hull breaches on multiple decks","We have unknown hostile life forms on board","Our primary drive is failing","We have [pick("asteroids","space debris")] impacting the hull","We're experiencing a total loss of engine power","We have hostile ships closing fast","There's smoke [pick("in the cockpit","on the bridge")]","We have unidentified boarders","Our reaction control system is malfunctioning and we're losing stability","Our life support [pick("is failing","has failed")]")
|
||||
SSatc.msg("+[pick("Mayday, mayday, mayday!","Mayday, mayday!","Mayday! Mayday!")]+ [combined_first_name], declaring an emergency! [problem]!","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
SSatc.msg("[combined_first_name], [callname]. Switch to emergency responder channel [SSatc.ertchannel].")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[callname], [combined_first_name] switching now.","[comm_first_name]")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/distress
|
||||
VAR_PRIVATE/state = null
|
||||
|
||||
/datum/atc_chatter/distress/squak()
|
||||
//Ship event: distress call, under attack
|
||||
if(!state)
|
||||
state = pick(66;"calm",34;"panic")
|
||||
switch(state)
|
||||
if("calm")
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("[using_map.starsys_name] Defense Control, [combined_first_name].","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
SSatc.msg("[combined_first_name], [using_map.starsys_name] Defense Control.","[using_map.starsys_name] Defense Control")
|
||||
next()
|
||||
if(3)
|
||||
SSatc.msg("Another vessel in our area is moving [pick("aggressively","suspiciously","erratically","unpredictably","with clear hostile intent")], please advise? Forwarding sensor data now.","[comm_first_name]","[comm_first_name]")
|
||||
next()
|
||||
if(4)
|
||||
SSatc.msg("[combined_first_name], [using_map.starsys_name] Defense Control copies. Sensor data matches logged profile for [secondprefix] |[secondshipname]|. SDF units are en route to your location.","[using_map.starsys_name] Defense Control")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[pick("Appreciated","Copy that","Understood")], Control. Switching to [SSatc.sdfchannel] to coordinate.","[comm_first_name]")
|
||||
finish()
|
||||
if("panic")
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("+Mayday, mayday, mayday!+ This is [combined_first_name] declaring an emergency! We are under attack! Requesting immediate assistance!","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
SSatc.msg("[combined_first_name], [using_map.starsys_name] Defense Control. SDF is en route, contact on [SSatc.sdfchannel].")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[pick("Copy that","Understood")] [using_map.starsys_name] Defense Control, switching now!","[comm_first_name]")
|
||||
finish()
|
||||
154
code/modules/busy_space/chatter_docking.dm
Normal file
154
code/modules/busy_space/chatter_docking.dm
Normal file
@@ -0,0 +1,154 @@
|
||||
/datum/atc_chatter/report_to_dock
|
||||
VAR_PRIVATE/situation_type = null
|
||||
|
||||
/datum/atc_chatter/report_to_dock/squak()
|
||||
//Control event: personnel report to dock
|
||||
if(!situation_type)
|
||||
situation_type = pick("medical","security","engineering","animal control","hazmat")
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("This is [using_map.dock_name] Tower. Would a free [situation_type] team please report to [landing_zone] immediately. This is not a drill.")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("Repeat, any free [situation_type] team, report to [landing_zone] immediately. This is +not+ a drill.")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/dockingrequestgeneric
|
||||
VAR_PRIVATE/request_type = null
|
||||
VAR_PRIVATE/appreciation = null
|
||||
VAR_PRIVATE/dockingplan = null
|
||||
|
||||
/datum/atc_chatter/dockingrequestgeneric/squak()
|
||||
//Ship event: docking request (generic)
|
||||
if(!request_type)
|
||||
request_type = pick(100;"generic",50;"delayed",80;"supply",30;"repair",30;"medical",30;"security")
|
||||
appreciation = pick("Much appreciated","Many thanks","Understood","Perfect, thank you","Excellent, thanks","Great","Copy that")
|
||||
dockingplan = pick("Starting final approach now.","Commencing landing procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
|
||||
switch(request_type)
|
||||
if("generic")
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("[callname], [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to [landing_short].","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
SSatc.msg("[combined_first_name], [callname]. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[appreciation], [callname]. [dockingplan]","[comm_first_name]")
|
||||
finish()
|
||||
|
||||
if("delayed")
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("[callname], [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to [landing_short].","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
var/reason = pick(
|
||||
"we don't have any free [landing_type]s right now, please [pick("stand by for a couple of minutes","hold for a few minutes")]",
|
||||
"you're too far away, please close to ten thousand meters","we're seeing heavy traffic around the [landing_type]s right now, please [pick("stand by for a couple of minutes","hold for a few minutes")]","ground crews are currently clearing up [pick("loose containers","a fuel spill")] to free up one of our [landing_type]s, please [pick("stand by for a couple of minutes","hold for a few minutes")]","another vessel has aerospace priority right now, please [pick("stand by for a couple of minutes","hold for a few minutes")]")
|
||||
SSatc.msg("[combined_first_name], [callname]. Request denied, [reason] and resubmit your request.")
|
||||
next()
|
||||
if(3)
|
||||
SSatc.msg("Understood, [callname].","[comm_first_name]")
|
||||
next(60)
|
||||
if(4)
|
||||
SSatc.msg("[callname], [combined_first_name], resubmitting [landing_move].","[comm_first_name]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[combined_first_name], [callname]. Everything appears to be in order now, permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
|
||||
finish()
|
||||
|
||||
if("supply")
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/preintensifier = pick(75;"getting ",75;"running ","",15;"like, ") //whitespace hack, sometimes they'll add a preintensifier, but not always
|
||||
var/intensifier = pick("very","pretty","critically","extremely","dangerously","desperately","kinda","a little","a bit","rather","sorta")
|
||||
var/low_thing = pick("ammunition","munitions","clean water","food","spare parts","medical supplies","reaction mass","gas","hydrogen fuel","phoron fuel","fuel",10;"tea",10;"coffee",10;"soda",10;"pizza",10;"beer",10;"booze",10;"vodka",10;"snacks") //low chance of a less serious shortage
|
||||
appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
|
||||
SSatc.msg("[callname], [combined_first_name]. We're [preintensifier][intensifier] low on [low_thing]. Requesting permission to [landing_short] for resupply.","[comm_first_name]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[combined_first_name], [callname]. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
|
||||
finish()
|
||||
|
||||
if("repair")
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/damagestate = pick("We've experienced some hull damage","We're suffering minor system malfunctions","We're having some [pick("weird","strange","odd","unusual")] technical issues","We're overdue maintenance","We have several minor space debris impacts","We've got some battle damage here","Our reactor output is fluctuating","We're hearing some weird noises from the [pick("engines","pipes","ducting","HVAC")]","We just got caught in a solar flare","We had a close call with an asteroid","We have a [pick("minor","mild","major","serious")] [pick("fuel","water","oxygen","gas")] leak","We have depressurized compartments","We have a hull breach","One of our [pick("hydraulic","pneumatic")] systems has depressurized","Our [pick("life support","water recycling system","navcomp","shield generator","reaction control system","auto-repair system","repair drone controller","artificial gravity generator","environmental control system","master control system")] is [pick("failing","acting up","on the fritz","shorting out","glitching out","freaking out","malfunctioning")]")
|
||||
appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
|
||||
SSatc.msg("[callname], [combined_first_name]. [damagestate]. Requesting permission to [landing_short] for repairs and maintenance.","[comm_first_name]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[combined_first_name], [callname]. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in. Repair crews are standing by, contact them on channel [SSatc.engchannel].")
|
||||
finish()
|
||||
|
||||
if("medical")
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/species = pick("human","humanoid","unathi","lizard","tajaran","feline","skrell","akula","promethean","sergal","synthetic","robotic","teshari","avian","vulpkanin","canine","vox","zorren","hybrid","mixed-species","vox","grey","alien",5;"catslug")
|
||||
var/medicalstate = pick("multiple casualties","several cases of radiation sickness","an unknown virus","an unknown infection","a critically injured VIP","sick refugees","multiple cases of food poisoning","injured [pick("","[species] ")]passengers","sick [pick("","[species] ")]passengers","injured engineers","wounded marines","a delicate situation","a pregnant passenger","injured [pick("","[species] ")]castaways","recovered escape pods","unknown escape pods")
|
||||
appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
|
||||
SSatc.msg("[callname], [combined_first_name]. We have [medicalstate] on board. Requesting permission to [landing_short] for medical assistance.","[comm_first_name]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[combined_first_name], [callname]. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in. Medtechs are standing by, contact them on channel [SSatc.medchannel].")
|
||||
finish()
|
||||
|
||||
if("security")
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/species = pick("human","humanoid","unathi","lizard","tajaran","feline","skrell","akula","promethean","sergal","synthetic","robotic","teshari","avian","vulpkanin","canine","vox","zorren","hybrid","mixed-species","vox","grey","alien",5;"catslug")
|
||||
var/securitystate = pick("several [species] convicts","a captured pirate","a wanted criminal","[species] stowaways","incompetent [species] shipjackers","a delicate situation","a disorderly passenger","disorderly [species] passengers","ex-mutineers","stolen goods","[pick("a container","containers")] full of [pick("confiscated contraband","stolen goods")]",5;"a very lost shadekin",10;"some kinda big wooly critter",15;"a buncha lost-looking uh... cat... slug... |things?|",10;"a raging case of [pick("spiders","crabs","geese","gnats","sharks","carp")]") //gotta have a little something to lighten the mood now and then
|
||||
appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","Perfect, thank you")
|
||||
SSatc.msg("[callname], [combined_first_name]. We have [securitystate] on board and require security assistance. Requesting permission to [landing_short].","[comm_first_name]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[combined_first_name], [callname]. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in. Security teams are standing by, contact them on channel [SSatc.secchannel].")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/undockingrequest
|
||||
VAR_PRIVATE/safetravels
|
||||
|
||||
/datum/atc_chatter/undockingrequest/squak()
|
||||
//Ship event: undocking request
|
||||
if(!safetravels)
|
||||
safetravels = pick("Fly safe out there","Good luck","Safe travels","See you next week","Godspeed","Stars guide you")
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/takeoff = pick("depart","launch")
|
||||
SSatc.msg("[callname], [combined_first_name], requesting permission to [takeoff] from [landing_zone].","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
var/request_type = pick(150;"generic",50;"delayed")
|
||||
switch(request_type)
|
||||
if("generic")
|
||||
SSatc.msg("[combined_first_name], [callname]. Permission granted. Docking clamps released. [safetravels].")
|
||||
next()
|
||||
if("delayed")
|
||||
var/denialreason = pick("Docking clamp malfunction, please hold","Fuel lines have not been secured","Ground crew are still on the pad","Loose containers are on the pad","Exhaust deflectors are not yet in position, please hold","There's heavy traffic right now, it's not safe for your vessel to launch","Another vessel has aerospace priority at this moment","Port officials are still aboard")
|
||||
SSatc.msg("Negative [combined_first_name], request denied. [denialreason]. Try again in a few minutes.")
|
||||
next(60,PROC_REF(delay_1)) // SNNOOWWW FLAAKKEEE
|
||||
else
|
||||
var/thanks = pick("Appreciated","Thanks","Don't worry about us","We'll be fine","You too","So long")
|
||||
SSatc.msg("[thanks], [callname]. This is [combined_first_name] setting course for [destname], out.","[comm_first_name]")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/undockingrequest/proc/delay_1()
|
||||
SSatc.msg("[callname], [combined_first_name], re-requesting permission to depart from [landing_zone].","[comm_first_name]")
|
||||
next(1,PROC_REF(delay_2))
|
||||
|
||||
/datum/atc_chatter/undockingrequest/proc/delay_2()
|
||||
SSatc.msg("[combined_first_name], [callname]. Everything appears to be in order now, permission granted. Docking clamps released. [safetravels].")
|
||||
next()
|
||||
|
||||
/datum/atc_chatter/undockingdenied/squak()
|
||||
//Ship event: undocking request (denied)
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/takeoff = pick("depart","launch")
|
||||
SSatc.msg("[callname], [combined_first_name], requesting permission to [takeoff] from [landing_zone].","[comm_first_name]")
|
||||
next()
|
||||
else
|
||||
var/denialreason = pick("Security is requesting a full cargo inspection","Your ship has been impounded for multiple [pick("security","safety")] violations","Your ship is currently under quarantine lockdown","We have reason to believe there's an issue with your papers","Security personnel are currently searching for a fugitive and have ordered all outbound ships remain grounded until further notice")
|
||||
SSatc.msg("Negative [combined_first_name], request denied. [denialreason].")
|
||||
finish()
|
||||
96
code/modules/busy_space/chatter_police.dm
Normal file
96
code/modules/busy_space/chatter_police.dm
Normal file
@@ -0,0 +1,96 @@
|
||||
/datum/atc_chatter/policescan/squak()
|
||||
//Control scan event: soft outcome
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("[combined_first_name], [callname], your [pick("ship","vessel","starship")] has been flagged for routine inspection. Hold position and prepare to be scanned.")
|
||||
next()
|
||||
if(2)
|
||||
var/confirm = pick("Understood","Roger that","Affirmative","Very well","Copy that")
|
||||
SSatc.msg("[confirm] [callname], holding position.","[comm_first_name]")
|
||||
next()
|
||||
if(3)
|
||||
SSatc.msg("Your compliance is appreciated, [combined_first_name]. Scan commencing.")
|
||||
next()
|
||||
if(4)
|
||||
var/complain = pick("I hope this doesn't take too long.","Can we hurry this up?","Make it quick.","This better not take too long.","Is this really necessary?","I'm sure you'll find everything to be in order, Control.")
|
||||
SSatc.msg(complain,"[comm_first_name]")
|
||||
next(10)
|
||||
else
|
||||
var/completed = pick("You're free to proceed.","Everything looks fine, carry on.","You're clear, move along.","Apologies for the delay, you're clear.","Switch to channel [SSatc.sdfchannel] and await further instruction.")
|
||||
SSatc.msg("[combined_first_name], [callname]. Scan complete. [completed]")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/policeflee/squak()
|
||||
//Control scan event: hard outcome
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("Unknown [pick("ship","vessel","starship")], [callname], identify yourself and submit to a full inspection. Flying without an active transponder is a violation of interstellar shipping regulations.")
|
||||
next()
|
||||
if(2)
|
||||
var/uhoh = pick("No can do chief, we got places to be.","Sorry but we've got places to be.","Not happening.","Ah fuck, who ratted us out this time?!","You'll never take me alive!","Hey, I have a cloaking device! You can't see me!","I'm going to need to ask for a refund on that stealth drive...","I'm afraid I can't do that, Control.","Ah |hell|.","Fuck!","This isn't the ship you're looking for.","Well. This is awkward.","Uh oh.","I surrender!","Ah f- |ditch the containers!| +Now!+","Unless you have something a little +bigger+ in your torpedo tubes, we're |not| turning around!")
|
||||
SSatc.msg("[uhoh]","Unknown Vessel")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[using_map.starsys_name] Defense Control to all local assets: vector to interdict and detain [prefix], temporary callsign |[shipname]|. Control out.","[using_map.starsys_name] Defense Control")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/policeshipscan/squak()
|
||||
//SDF scan event: soft outcome
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("[combined_second_name], [combined_first_name], your [pick("ship","vessel","starship")] has been flagged for routine inspection. Hold position and prepare to be scanned.","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
var/confirm = pick("Understood","Roger that","Affirmative")
|
||||
SSatc.msg("[confirm] [combined_first_name], holding position.","[comm_second_name]")
|
||||
next()
|
||||
if(3)
|
||||
SSatc.msg("Your compliance is appreciated, [combined_second_name]. Scan commencing.","[comm_first_name]")
|
||||
next(2)
|
||||
if(4)
|
||||
var/complain = pick("I hope this doesn't take too long.","Can we hurry this up?","Make it quick.","This better not take too long.","Is this really necessary?","I'm sure you'll find everything to be in order, officer.")
|
||||
SSatc.msg(complain,"[comm_second_name]")
|
||||
next()
|
||||
else
|
||||
var/completed = pick("You're free to proceed.","Everything looks fine, carry on.","You're clear. Move along.","Apologies for the delay, you're clear.","Switch to channel [SSatc.sdfchannel] and await further instruction.")
|
||||
SSatc.msg("[combined_second_name], [combined_first_name]. Scan complete. [completed]","[comm_first_name]")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/policeshipflee/squak()
|
||||
//SDF scan event: hard outcome
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("Unknown [pick("ship","vessel","starship")], [combined_second_name], identify yourself and submit to a full inspection. Flying without an active transponder is a violation of interstellar shipping regulations.","[comm_second_name]")
|
||||
next()
|
||||
if(2)
|
||||
var/uhoh = pick("No can do chief, we got places to be.","Sorry but we've got places to be.","Not happening.","Ah fuck, who ratted us out this time?!","You'll never take me alive!","Hey, I have a cloaking device! You can't see me!","I'm going to need to ask for a refund on that stealth drive...","I'm afraid I can't do that, |[shipname]|.","Ah |hell|.","Fuck!","This isn't the ship you're looking for.","Well. This is awkward.","Uh oh.","I surrender!","Ah f- |ditch the containers!| +Now!+","Unless you have something a little +bigger+ in your torpedo tubes, we're |not| turning around!")
|
||||
SSatc.msg("[uhoh]","Unknown Vessel")
|
||||
next()
|
||||
if(3)
|
||||
SSatc.msg("[using_map.starsys_name] Defense Control, [combined_second_name]. We have a [prefix] here, please advise.","[comm_second_name]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("Defense Control copies, [combined_second_name], reinforcements are en route. Switch further communications to encrypted band [SSatc.sdfchannel].","[using_map.starsys_name] Defense Control")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/policeshipcombat/squak()
|
||||
//SDF scan event: engage primary in combat! fairly rare since it needs a pirate/vox + SDF roll
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/battlestatus = pick("requesting reinforcements.","we need backup! Now!","holding steady.","we're holding our own for now.","we have them on the run.","they're trying to make a run for it!","we have them right where we want them.","we're badly outgunned!","we have them outgunned.","we're outnumbered here!","we have them outnumbered.","this'll be a cakewalk.",10;"notify their next of kin.")
|
||||
SSatc.msg("[using_map.starsys_name] Defense Control, [combined_second_name], engaging [combined_first_name] [pick("near route","in sector")] [rand(1,100)], [battlestatus]","[comm_second_name]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[using_map.starsys_name] Defense Control copies, [combined_second_name]. Keep us updated.","[using_map.starsys_name] Defense Control")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/hostiledetected/squak()
|
||||
//DefCon event: hostile found
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("This is [using_map.starsys_name] Defense Control to all SDF assets. Priority update follows.","[using_map.starsys_name] Defense Control")
|
||||
next()
|
||||
else
|
||||
var/orders = pick("Engage on sight","Engage with caution","Engage with extreme prejudice","Engage at will","Search and destroy","Bring them in alive, if possible","Interdict and detain","Keep your eyes peeled","Bring them in, dead or alive","Stay alert")
|
||||
SSatc.msg("Be on the lookout for [short_first_name], last sighted [pick("near route","in sector","near sector")] [rand(1,100)]. [orders]. DefCon, out.","[using_map.starsys_name] Defense Control")
|
||||
finish()
|
||||
78
code/modules/busy_space/chatter_sdf.dm
Normal file
78
code/modules/busy_space/chatter_sdf.dm
Normal file
@@ -0,0 +1,78 @@
|
||||
/datum/atc_chatter/sdfpatrolupdate/squak()
|
||||
//SDF event: patrol update
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/statusupdate = pick("nothing unusual so far","nothing of note","everything looks clear so far","ran off some [pick("pirates","scavengers")] near route [pick(1,100)], [pick("no","minor")] damage sustained, continuing patrol","situation normal, no suspicious activity yet","minor incident on route [pick(1,100)]","Code 7-X [pick("on route","in sector")] [pick(1,100)], situation is under control","seeing a lot of traffic on route [pick(1,100)]","caught a couple of smugglers [pick("on route","in sector")] [pick(1,100)]","sustained some damage in a skirmish just now, we're heading back for repairs")
|
||||
SSatc.msg("[using_map.starsys_name] Defense Control, [combined_first_name] reporting in, [statusupdate], over.","[comm_first_name]")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[using_map.starsys_name] Defense Control copies, [combined_first_name]. Keep us updated, out.","[using_map.starsys_name] Defense Control")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/sdfendingpatrol/squak()
|
||||
//SDF event: end patrol
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("[callname], [combined_first_name], returning from our system patrol route, requesting permission to [landing_short].","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
SSatc.msg("[combined_first_name], [callname]. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
|
||||
next()
|
||||
else
|
||||
var/appreciation = pick("Copy","Understood","Affirmative","10-4","Roger that")
|
||||
var/dockingplan = pick("Starting final approach now.","Commencing landing procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
|
||||
SSatc.msg("[appreciation], [callname]. [dockingplan]","[comm_first_name]")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/sdfchatter
|
||||
VAR_PRIVATE/chain = null
|
||||
|
||||
/datum/atc_chatter/sdfchatter/squak()
|
||||
//SDF event: general chatter
|
||||
if(!chain)
|
||||
chain = pick("codecheck","commscheck")
|
||||
switch(chain)
|
||||
if("codecheck")
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("Check. Check. |Check|. Uhhh... check? Wait. Wait! Hold on. Yeah, okay, I gotta call this one in.","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
SSatc.msg("[callname], confirm auth-code... [rand(1,9)][rand(1,9)][rand(1,9)]-[pick("Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega")]?","[comm_first_name]")
|
||||
next()
|
||||
if(3)
|
||||
SSatc.msg("One moment...")
|
||||
next()
|
||||
if(4)
|
||||
SSatc.msg("Yeah, that code checks out [combined_first_name].")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("|(sigh)| Copy that Control. You! Move along!","[comm_first_name]")
|
||||
finish()
|
||||
if("commscheck")
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("Control this is [combined_first_name], we're getting some interference in our area. [pick("How's our line?","Do you read?","How copy, over?")]","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
SSatc.msg("Control reads you loud and clear [combined_first_name].","[using_map.starsys_name] Defense Control")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[pick("Copy that","Thanks,","Roger that")] Control. [combined_first_name] out.","[comm_first_name]")
|
||||
finish()
|
||||
|
||||
/datum/atc_chatter/sdfbeginpatrol/squak()
|
||||
//SDF event: starting patrol
|
||||
switch(phase)
|
||||
if(1)
|
||||
var/takeoff = pick("depart","launch","take off","dust off")
|
||||
SSatc.msg("[callname], [combined_first_name], requesting permission to [takeoff] from [landing_zone] to begin system patrol.","[comm_first_name]")
|
||||
next()
|
||||
if(2)
|
||||
var/safetravels = pick("Fly safe out there","Good luck","Good hunting","Safe travels","Godspeed","Stars guide you")
|
||||
SSatc.msg("[combined_first_name], [callname]. Permission granted. Docking clamps released. [safetravels].")
|
||||
next()
|
||||
else
|
||||
var/thanks = pick("Appreciated","Thanks","Don't worry about us","We'll be fine","You too")
|
||||
SSatc.msg("[thanks], [callname]. This is [combined_first_name] beginning system patrol, out.","[comm_first_name]")
|
||||
finish()
|
||||
8
code/modules/busy_space/chatter_shiftend.dm
Normal file
8
code/modules/busy_space/chatter_shiftend.dm
Normal file
@@ -0,0 +1,8 @@
|
||||
/datum/atc_chatter/shift_end/squak()
|
||||
switch(phase)
|
||||
if(1)
|
||||
SSatc.msg("[using_map.shuttle_name], this is [using_map.dock_name] Control, you are cleared to complete routine transfer from [using_map.station_name] to [using_map.dock_name].")
|
||||
next()
|
||||
else
|
||||
SSatc.msg("[using_map.shuttle_name] departing [using_map.dock_name] for [using_map.station_name] on routine transfer route. Estimated time to arrival: ten minutes.","[using_map.shuttle_name]")
|
||||
finish()
|
||||
3
code/modules/busy_space/chatter_shiftstart.dm
Normal file
3
code/modules/busy_space/chatter_shiftstart.dm
Normal file
@@ -0,0 +1,3 @@
|
||||
/datum/atc_chatter/shift_start/squak()
|
||||
SSatc.msg("New shift beginning, resuming traffic control. This shift's Colony Frequencies are as follows: Emergency Responders: [SSatc.ertchannel]. Medical: [SSatc.medchannel]. Engineering: [SSatc.engchannel]. Security: [SSatc.secchannel]. System Defense: [SSatc.sdfchannel].")
|
||||
finish()
|
||||
@@ -1,399 +0,0 @@
|
||||
//Cactus, Speedbird, Dynasty, oh my
|
||||
|
||||
var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
|
||||
|
||||
/datum/lore/atc_controller
|
||||
var/delay_min = 30 MINUTES //How long between ATC traffic, min. Increased to 30 for YW due to round length.
|
||||
var/delay_max = 60 MINUTES //How long between ATC traffic, max. Increased to 60 for YW due to round length.
|
||||
var/backoff_delay = 5 MINUTES //How long to back off if we can't talk and want to. Default is 5 mins.
|
||||
var/next_message = 30 MINUTES //When the next message should happen in world.time - Making it default to min value
|
||||
var/force_chatter_type //Force a specific type of messages
|
||||
|
||||
var/squelched = 0 //If ATC is squelched currently
|
||||
|
||||
//define a block of frequencies so we can have them be static instead of being random for each call
|
||||
var/ertchannel
|
||||
var/medchannel
|
||||
var/engchannel
|
||||
var/secchannel
|
||||
var/sdfchannel
|
||||
|
||||
/datum/lore/atc_controller/New()
|
||||
spawn(120 SECONDS) //Lots of lag at the start of a shift
|
||||
//msg("New shift beginning, resuming traffic control.") //this message would generally fire before anyone could ever see it, so removing it entirely
|
||||
next_message = world.time + rand(delay_min,delay_max)
|
||||
//generate our static event frequencies for the shift. alternately we could make them completely fixed if we want in the core block
|
||||
ertchannel = "[rand(700,749)].[rand(1,9)]"
|
||||
medchannel = "[rand(750,799)].[rand(1,9)]"
|
||||
engchannel = "[rand(800,949)].[rand(1,9)]"
|
||||
secchannel = "[rand(850,899)].[rand(1,9)]"
|
||||
sdfchannel = "[rand(900,999)].[rand(1,9)]"
|
||||
process()
|
||||
|
||||
/datum/lore/atc_controller/process()
|
||||
if(world.time >= next_message)
|
||||
if(squelched)
|
||||
next_message = world.time + backoff_delay
|
||||
else
|
||||
next_message = world.time + rand(delay_min,delay_max)
|
||||
random_convo()
|
||||
|
||||
spawn(1 MINUTE) //We don't really need high-accuracy here.
|
||||
process()
|
||||
|
||||
/datum/lore/atc_controller/proc/msg(var/message,var/sender)
|
||||
ASSERT(message)
|
||||
global_announcer.autosay("[message]", sender ? sender : "[using_map.dock_name] Control")
|
||||
|
||||
/datum/lore/atc_controller/proc/reroute_traffic(var/yes = 1)
|
||||
if(yes)
|
||||
if(!squelched)
|
||||
msg("Rerouting traffic away from [using_map.station_name].")
|
||||
squelched = 1
|
||||
else
|
||||
if(squelched)
|
||||
msg("Resuming normal traffic routing around [using_map.station_name].")
|
||||
squelched = 0
|
||||
|
||||
/datum/lore/atc_controller/proc/shift_ending(var/evac = 0)
|
||||
msg("[using_map.shuttle_name], this is [using_map.dock_name] Control, you are cleared to complete routine transfer from [using_map.station_name] to [using_map.dock_name].")
|
||||
sleep(5 SECONDS)
|
||||
msg("[using_map.shuttle_name] copies, [using_map.dock_name] Control. Departing [using_map.dock_name] for [using_map.station_name] on routine transfer route. Estimated time to arrival: ten minutes.","[using_map.shuttle_name]")
|
||||
|
||||
/datum/lore/atc_controller/proc/random_convo()
|
||||
var/one = pick(loremaster.organizations) //These will pick an index, not an instance
|
||||
var/two = pick(loremaster.organizations)
|
||||
|
||||
var/datum/lore/organization/source = loremaster.organizations[one] //Resolve to the instances
|
||||
var/datum/lore/organization/secondary = loremaster.organizations[two] //repurposed for new fun stuff
|
||||
|
||||
//Let's get some mission parameters, pick our first ship
|
||||
var/name = source.name //get the name
|
||||
var/owner = source.short_name //Use the short name
|
||||
var/prefix = pick(source.ship_prefixes) //Pick a random prefix
|
||||
var/mission = source.ship_prefixes[prefix] //The value of the prefix is the mission type that prefix does
|
||||
var/shipname = pick(source.ship_names) //Pick a random ship name
|
||||
var/destname = pick(source.destination_names) //destination is where?
|
||||
var/law_abiding = source.lawful //do we fully observe system law (or are we otherwise favored by the system owners, i.e. NT)?
|
||||
var/law_breaker = source.hostile //or are we part of a pirate group
|
||||
var/system_defense = source.sysdef //are we actually system law/SDF? unlocks the SDF-specific events
|
||||
|
||||
//pick our second ship
|
||||
//var/secondname = secondary.name //not used atm, commented out to suppress errors
|
||||
var/secondowner = secondary.short_name
|
||||
var/secondprefix = pick(secondary.ship_prefixes) //Pick a random prefix
|
||||
var/secondshipname = pick(secondary.ship_names) //Pick a random ship name
|
||||
var/law_abiding2 = secondary.lawful
|
||||
var/law_breaker2 = secondary.hostile
|
||||
var/system_defense2 = secondary.sysdef //mostly here as a secondary check to ensure SDF don't interrogate other SDF
|
||||
|
||||
var/combined_first_name = "[owner][prefix] |[shipname]|"
|
||||
var/combined_second_name = "[secondowner][secondprefix] |[secondshipname]|"
|
||||
|
||||
var/bay = "[rand(1,42)]"
|
||||
|
||||
var/alt_atc_names = list("[using_map.dock_name] Traffic Control","[using_map.dock_name] TraCon","[using_map.dock_name] System Control","[using_map.dock_name] Star Control","[using_map.dock_name] SysCon","[using_map.dock_name] Tower","[using_map.dock_name] Control","[using_map.dock_name] STC","[using_map.dock_name] StarCon")
|
||||
var/mission_noun = pick(source.flight_types) //pull from a list of owner-specific flight ops, to allow an extra dash of flavor
|
||||
if(source.complex_tasks) //if our source has the complex_tasks flag, regenerate with a two-stage assignment
|
||||
mission_noun = "[pick(source.task_types)] [pick(source.flight_types)]"
|
||||
|
||||
//First response is 'yes', second is 'no'
|
||||
var/requests = list(
|
||||
"special flight rules" = list("authorizing special flight rules", "denying special flight rules, not allowed for your traffic class"),
|
||||
"current solar weather info" = list("sending you the relevant information via tightbeam", "your request has been queued, stand by"),
|
||||
"aerospace priority" = list("affirmative, aerospace priority is yours", "negative, another vessel has priority right now"),
|
||||
"system traffic info" = list("sending you current traffic info", "request queued, please hold"),
|
||||
"refueling information" = list("sending refueling information now", "depots currently experiencing fuel shortages, advise you move on"),
|
||||
"a current system time sync" = list("sending time sync ping to you now", "your ship isn't compatible with our time sync, set time manually"),
|
||||
"current system starcharts" = list("transmitting current starcharts", "your request is queued, overloaded right now")
|
||||
)
|
||||
|
||||
//Random chance things for variety
|
||||
var/chatter_type = "normal"
|
||||
if(force_chatter_type)
|
||||
chatter_type = force_chatter_type
|
||||
else if(law_abiding && !system_defense) //I have to offload this from the chatter_type switch below and do it here, otherwise BYOND throws a shitfit for no discernable reason
|
||||
chatter_type = pick(5;"emerg",25;"policescan",25;"traveladvisory",30;"dockingrequestgeneric",30;"dockingrequestdenied",30;"dockingrequestdelayed",30;"dockingrequestsupply",30;"dockingrequestrepair",30;"dockingrequestmedical",30;"dockingrequestsecurity",30;"undockingrequest","normal",30;"undockingdenied",30;"undockingdelayed")
|
||||
//the following filters *always* fire their 'unique' event when they're tripped, simply because the conditions behind them are quite rare to begin with
|
||||
else if(name == "Smugglers" && !system_defense2) //just straight up funnel smugglers into always being caught
|
||||
chatter_type = "policeflee"
|
||||
else if(name == "Smugglers" && system_defense2) //ditto, if an SDF ship catches them
|
||||
chatter_type = "policeshipflee"
|
||||
else if(law_abiding && law_breaker2) //on the offchance that we manage to roll a goodguy and a badguy, run a new distress event
|
||||
chatter_type = "distress"
|
||||
else if(law_breaker && system_defense2) //if we roll this combo instead, time for the SDF to do their fucking job
|
||||
chatter_type = "policeshipcombat"
|
||||
else if(law_breaker && !system_defense2) //but if we roll THIS combo, time to alert the SDF to get off their asses
|
||||
chatter_type = "hostiledetected"
|
||||
//SDF-specific events that need to filter based on the second party (basically just the following SDF-unique list with the soft-result ship scan thrown in)
|
||||
else if(system_defense && law_abiding2 && !system_defense2) //let's see if we can narrow this down, I didn't see many ship-to-ship scans
|
||||
chatter_type = pick(75;"policeshipscan","sdfpatrolupdate",75;"sdfendingpatrol",30;"dockingrequestgeneric",30;"dockingrequestdelayed",30;"dockingrequestsupply",30;"dockingrequestrepair",30;"dockingrequestmedical",30;"dockingrequestsecurity",20;"undockingrequest",75;"sdfbeginpatrol",50;"normal")
|
||||
//SDF-specific events that don't require the secondary at all, in the event that we manage to roll SDF + hostile/smuggler or something
|
||||
else if(system_defense)
|
||||
chatter_type = pick("sdfpatrolupdate",60;"sdfendingpatrol",30;"dockingrequestgeneric",30;"dockingrequestdelayed",30;"dockingrequestsupply",30;"dockingrequestrepair",30;"dockingrequestmedical",30;"dockingrequestsecurity",20;"undockingrequest",80;"sdfbeginpatrol","normal")
|
||||
//if we somehow don't match any of the other existing filters once we've run through all of them
|
||||
else
|
||||
chatter_type = pick(5;"emerg",25;"policescan",25;"traveladvisory",30;"pathwarning",30;"dockingrequestgeneric",30;"dockingrequestdelayed",30;"dockingrequestdenied",30;"dockingrequestsupply",30;"dockingrequestrepair",30;"dockingrequestmedical",30;"dockingrequestsecurity",30;"undockingrequest",30;"undockingdenied",30;"undockingdelayed","normal")
|
||||
|
||||
var/yes = prob(90) //Chance for them to say yes vs no
|
||||
|
||||
var/request = pick(requests)
|
||||
var/callname = pick(alt_atc_names)
|
||||
var/response = requests[request][yes ? 1 : 2] //1 is yes, 2 is no
|
||||
|
||||
// what you're about to witness is what feels like an extremely kludgy rework of the system, but it's more 'flexible' and allows events that aren't just ship-stc-ship
|
||||
// something more elegant could probably be done, but it won't be done by somebody as half-competent as me
|
||||
switch(chatter_type)
|
||||
//mayday call
|
||||
if("emerg")
|
||||
var/problem = pick("We have hull breaches on multiple decks","We have unknown hostile life forms on board","Our primary drive is failing","We have asteroids impacting the hull","We're experiencing a total loss of engine power","We have hostile ships closing fast","There's smoke in the cockpit","We have unidentified boarders","Our life support has failed")
|
||||
msg("+Mayday, mayday, mayday!+ This is [combined_first_name] declaring an emergency! [problem]!","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control, copy. Switch to emergency responder channel [ertchannel].")
|
||||
sleep(5 SECONDS)
|
||||
msg("Understood [using_map.dock_name] Control, switching now.","[prefix] [shipname]")
|
||||
//Control scan event: soft outcome
|
||||
if("policescan")
|
||||
var/confirm = pick("Understood","Roger that","Affirmative")
|
||||
var/complain = pick("I hope this doesn't take too long.","Can we hurry this up?","Make it quick.","This better not take too long.","Is this really necessary?")
|
||||
var/completed = pick("You're free to proceed.","Everything looks fine, carry on.","You're clear, move along.","Apologies for the delay, you're clear.","Switch to channel [sdfchannel] and await further instruction.")
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control, your [pick("ship","vessel","starship")] has been flagged for routine inspection. Hold position and prepare to be scanned.")
|
||||
sleep(5 SECONDS)
|
||||
msg("[confirm] [using_map.dock_name] Control, holding position.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("Your compliance is appreciated, [combined_first_name]. Scan commencing.")
|
||||
sleep(10 SECONDS)
|
||||
msg(complain,"[prefix] [shipname]")
|
||||
sleep(15 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Scan complete. [completed]")
|
||||
//Control scan event: hard outcome
|
||||
if("policeflee")
|
||||
var/uhoh = pick("No can do chief, we got places to be.","Sorry but we've got places to be.","Not happening.","Ah fuck, who ratted us out this time?!","You'll never take me alive!","Hey, I have a cloaking device! You can't see me!","I'm going to need to ask for a refund on that stealth drive...","I'm afraid I can't do that, Control.","Ah hell.","Fuck!","This isn't the ship you're looking for.","Well. This is awkward.","Uh oh.","I surrender!")
|
||||
msg("Unknown [pick("ship","vessel","starship")], this is [using_map.dock_name] Control, identify yourself and submit to a full inspection. You are in violation of system regulations.")
|
||||
sleep(5 SECONDS)
|
||||
msg("[uhoh]","[shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("This is [using_map.starsys_name] Defense Control to all local assets: vector to interdict and detain [combined_first_name]. Control out.","[using_map.starsys_name] Defense Control")
|
||||
//SDF scan event: soft outcome
|
||||
if("policeshipscan")
|
||||
var/confirm = pick("Understood","Roger that","Affirmative")
|
||||
var/complain = pick("I hope this doesn't take too long.","Can we hurry this up?","Make it quick.","This better not take too long.","Is this really necessary?")
|
||||
var/completed = pick("You're free to proceed.","Everything looks fine, carry on.","You're clear. Move along.","Apologies for the delay, you're clear.","Switch to channel [sdfchannel] and await further instruction.")
|
||||
msg("[combined_second_name], this is [combined_first_name], your [pick("ship","vessel","starship")] has been flagged for routine inspection. Hold position and prepare to be scanned.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[confirm] [combined_first_name], holding position.","[secondprefix] [secondshipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("Your compliance is appreciated, [combined_first_name]. Scan commencing.","[prefix] [shipname]")
|
||||
sleep(10 SECONDS)
|
||||
msg(complain,"[secondprefix] [secondshipname]")
|
||||
sleep(15 SECONDS)
|
||||
msg("[combined_second_name], this is [combined_first_name]. Scan complete. [completed]","[prefix] [shipname]")
|
||||
//SDF scan event: hard outcome
|
||||
if("policeshipflee")
|
||||
var/uhoh = pick("No can do chief, we got places to be.","Sorry but we've got places to be.","Not happening.","Ah fuck, who ratted us out this time?!","You'll never take me alive!","Hey, I have a cloaking device! You can't see me!","I'm going to need to ask for a refund on that stealth drive...","I'm afraid I can't do that, |[shipname]|.","Ah hell.","Fuck!","This isn't the ship you're looking for.","Well. This is awkward.","Uh oh.","I surrender!")
|
||||
msg("Unknown [pick("ship","vessel","starship")], this is [combined_second_name], identify yourself and submit to a full inspection. You are in violation of system regulations.","[secondprefix] [secondshipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[uhoh]","[shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[using_map.starsys_name] Defense Control, this is [combined_second_name], we have a situation here, please advise.","[secondprefix] [secondshipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("Defense Control copies, [combined_second_name], reinforcements are en route. Switch further communications to encrypted band [sdfchannel].","[using_map.starsys_name] Defense Control")
|
||||
//SDF scan event: engage primary in combat! very rare since it needs a pirate/vox + SDF roll
|
||||
if("policeshipcombat")
|
||||
var/battlestatus = pick("requesting reinforcements.","we need backup! Now!","holding steady.","we're holding our own for now.","we have them on the run.","they're trying to make a run for it!","we have them right where we want them.","we're badly outgunned!","we have them outgunned.","we're outnumbered here!","we have them outnumbered.","this'll be a cakewalk.",10;"notify their next of kin.")
|
||||
msg("[using_map.starsys_name] Defense Control, this is [combined_second_name], engaging [combined_first_name] near route [rand(1,100)], [battlestatus]","[secondprefix] [secondshipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[using_map.starsys_name] Defense Control copies, [combined_second_name]. Keep us updated.","[using_map.starsys_name] Defense Control")
|
||||
//SDF event: patrol update
|
||||
if("sdfpatrolupdate")
|
||||
var/statusupdate = pick("nothing unusual so far","nothing of note","everything looks clear so far","ran off some [pick("pirates","marauders")] near route [pick(1,100)], [pick("no","minor")] damage sustained, continuing patrol","situation normal, no suspicious activity yet","minor incident on route [pick(1,100)]","Code 7-X on route [pick(1,100)], situation is under control","seeing a lot of traffic on route [pick(1,100)]","caught a couple of smugglers on route [pick(1,100)]","sustained some damage in a skirmish just now, we're heading back for repairs")
|
||||
msg("[using_map.starsys_name] Defense Control, this is [combined_first_name] reporting in, [statusupdate], over.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[using_map.starsys_name] Defense Control copies, [combined_first_name]. Keep us updated, out.","[using_map.starsys_name] Defense Control")
|
||||
//SDF event: end patrol
|
||||
if("sdfendingpatrol")
|
||||
var/appreciation = pick("Copy","Understood","Affirmative","10-4","Roger that")
|
||||
var/dockingplan = pick("Starting final approach now.","Commencing docking procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
|
||||
msg("[callname], this is [combined_first_name], returning from our system patrol route, requesting permission to dock.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to docking bay [bay]. Follow the green lights on your way in.")
|
||||
sleep(5 SECONDS)
|
||||
msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
|
||||
//DefCon event: hostile found
|
||||
if("hostiledetected")
|
||||
var/orders = pick("Engage on sight","Engage with caution","Engage with extreme prejudice","Engage at will","Search and destroy","Bring them in alive, if possible","Interdict and detain","Keep your eyes peeled","Bring them in, dead or alive","Stay alert")
|
||||
msg("This is [using_map.starsys_name] Defense Control to all SDF assets. Priority update follows.","[using_map.starsys_name] Defense Control")
|
||||
sleep(5 SECONDS)
|
||||
msg("Be on the lookout for [combined_first_name], last sighted near route [rand(1,100)]. [orders]. DefCon, out.","[using_map.starsys_name] Defense Control")
|
||||
//Ship event: distress call, under attack
|
||||
if("distress")
|
||||
msg("+Mayday, mayday, mayday!+ This is [combined_first_name] declaring an emergency! We are under attack by [combined_second_name]! Requesting immediate assistance!","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.starsys_name] Defense Control, copy. SDF is en route, contact on [sdfchannel].")
|
||||
sleep(5 SECONDS)
|
||||
msg("Understood [using_map.starsys_name] Defense Control, switching now.","[prefix] [shipname]")
|
||||
//Control event: travel advisory
|
||||
if("traveladvisory")
|
||||
var/flightwarning = pick("Solar flare activity is spiking and expected to cause issues along main flight lanes [rand(1,33)], [rand(34,67)], and [rand(68,100)]","Pirate activity is on the rise, stay close to System Defense vessels","We're seeing a rise in illegal salvage operations, please report any unusual activity to the nearest SDF vessel via channel [sdfchannel]","Vox Marauder activity is higher than usual, report any unusual activity to the nearest System Defense vessel","A quarantined [pick("fleet","convoy")] is passing through the system along route [rand(1,100)], please observe minimum safe distance","A prison [pick("fleet","convoy")] is passing through the system along route [rand(1,100)], please observe minimum safe distance","Traffic volume is higher than normal, expect processing delays","Anomalous bluespace activity detected along route [rand(1,100)], exercise caution","Smugglers have been particularly active lately, expect increased security scans","Depots are currently experiencing a fuel shortage, expect delays and higher rates","Asteroid mining has displaced debris dangerously close to main flight lanes on route [rand(1,100)], watch for potential impactors","[pick("Pirate","Vox Marauder")] and System Defense forces are currently engaged in skirmishes throughout the system, please steer clear of any active combat zones","A [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship")] has collided with a [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship")] near route [rand(1,100)], watch for debris and do not impede emergency service vessels","A [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship")] on route [rand(1,100)] has experienced total engine failure. Emergency response teams are en route, please observe minimum safe distances and do not impede emergency service vessels","Transit routes have been recalculated to adjust for planetary drift. Please synch your astronav computers as soon as possible to avoid delays and difficulties","[pick("Bounty hunters","System Defense officers","Mercenaries")] are currently searching for a wanted fugitive, report any sightings of suspicious activity to System Defense via channel [sdfchannel]","Mercenary contractors are currently conducting aggressive [pick("piracy","marauder")] suppression operations",10;"It's space carp breeding season. [pick("Stars","Gods","God","Goddess")] have mercy on you all, because the carp won't")
|
||||
msg("This is [using_map.dock_name] Control to all vessels in the [using_map.starsys_name] system. Priority travel advisory follows.")
|
||||
sleep(5 SECONDS)
|
||||
msg("[flightwarning]. Control out.")
|
||||
//Control event: warning to a specific vessel
|
||||
if("pathwarning")
|
||||
var/navhazard = pick("a pocket of intense radiation","a pocket of unstable gas","a debris field","a secure installation","an active combat zone","a quarantined ship","a quarantined installation","a quarantined sector","a live-fire SDF training exercise","an ongoing Search & Rescue operation")
|
||||
var/confirm = pick("Understood","Roger that","Affirmative","Our bad","Thanks for the heads up")
|
||||
var/safetravels = pick("Fly safe out there","Good luck","Safe travels","Godspeed","Stars guide you","Don't let it happen again")
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control, your [pick("ship","vessel","starship")] is approaching [navhazard], observe minimum safe distance and adjust your heading appropriately.")
|
||||
sleep(5 SECONDS)
|
||||
msg("[confirm] [using_map.dock_name] Control, adjusting course.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("Your compliance is appreciated, [combined_first_name]. [safetravels].")
|
||||
//Ship event: docking request (generic)
|
||||
if("dockingrequestgeneric")
|
||||
var/appreciation = pick("Much appreciated","Many thanks","Understood","Cheers")
|
||||
var/dockingplan = pick("Starting final approach now.","Commencing docking procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
|
||||
msg("[callname], this is [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to dock.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to docking bay [bay]. Follow the green lights on your way in.")
|
||||
sleep(5 SECONDS)
|
||||
msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
|
||||
//Ship event: docking request (denied)
|
||||
if("dockingrequestdenied")
|
||||
var/reason = pick("we don't have any docking bays large enough for your vessel","we don't have the necessary facilities for your vessel type or class")
|
||||
msg("[callname], this is [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to dock.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Request denied, [reason].")
|
||||
sleep(5 SECONDS)
|
||||
msg("Understood, [using_map.dock_name] Control.","[prefix] [shipname]")
|
||||
//Ship event: docking request (delayed)
|
||||
if("dockingrequestdelayed")
|
||||
var/reason = pick("we don't have any free docking bays right now","you're too far away, please close to ten thousand meters and resubmit your request","we're seeing heavy traffic around the docking ports right now","we're currently cleaning up a fuel cloud","there are loose containers in the traffic lanes, stand by whilst we secure them")
|
||||
var/appreciation = pick("Much appreciated","Many thanks","Understood","Perfect, thank you","Excellent, thanks","Great","Copy that")
|
||||
var/dockingplan = pick("Starting final approach now.","Commencing docking procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
|
||||
msg("[callname], this is [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to dock.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Request denied, [reason]. Please resubmit your request in three minutes.")
|
||||
sleep(5 SECONDS)
|
||||
msg("Understood, [using_map.dock_name] Control.","[prefix] [shipname]")
|
||||
sleep(180 SECONDS)
|
||||
msg("[callname], this is [combined_first_name], resubmitting docking request.","[prefix] [shipname]")
|
||||
sleep (5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Everything appears to be in order now, permission granted, proceed to docking bay [bay]. Follow the green lights on your way in.")
|
||||
sleep(5 SECONDS)
|
||||
msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
|
||||
//Ship event: docking request (resupply)
|
||||
if("dockingrequestsupply")
|
||||
var/preintensifier = pick(75;"getting ",75;"running ","") //whitespace hack, sometimes they'll add a preintensifier, but not always
|
||||
var/intensifier = pick("very","pretty","critically","extremely","dangerously","desperately","kinda","a little","a bit","rather","sorta")
|
||||
var/low_thing = pick("ammunition","munitions","clean water","food","spare parts","medical supplies","reaction mass","gas","hydrogen fuel","phoron fuel","fuel",10;"tea",10;"coffee",10;"soda",10;"pizza",10;"beer",10;"booze",10;"vodka",10;"snacks") //low chance of a less serious shortage
|
||||
var/appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
|
||||
var/dockingplan = pick("Starting final approach now.","Commencing docking procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
|
||||
msg("[callname], this is [combined_first_name]. We're [preintensifier][intensifier] low on [low_thing]. Requesting permission to dock for resupply.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to docking bay [bay]. Follow the green lights on your way in.")
|
||||
sleep(5 SECONDS)
|
||||
msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
|
||||
//Ship event: docking request (repair/maint)
|
||||
if("dockingrequestrepair")
|
||||
var/damagestate = pick("We've experienced some hull damage","We're suffering minor system malfunctions","We're having some technical issues","We're overdue maintenance","We have several minor space debris impacts","We've got some battle damage here","Our reactor output is fluctuating","We're hearing some weird noises from the [pick("engines","pipes","ducting","HVAC")]","Our artificial gravity generator has failed","Our life support is failing","Our environmental controls are busted","Our water recycling system has shorted out","Our navcomp is freaking out","Our systems are glitching out","We just got caught in a solar flare","We had a close call with an asteroid","We have a minor [pick("fuel","water","oxygen","gas")] leak","We have depressurized compartments","We have a hull breach","Our shield generator is on the fritz","Our RCS is acting up","One of our [pick("hydraulic","pneumatic")] systems has depressurized","Our repair bots are malfunctioning")
|
||||
var/appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
|
||||
var/dockingplan = pick("Starting final approach now.","Commencing docking procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
|
||||
msg("[callname], this is [combined_first_name]. [damagestate]. Requesting permission to dock for repairs and maintenance.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to docking bay [bay]. Follow the green lights on your way in. Repair crews are standing by, contact them on channel [engchannel].")
|
||||
sleep(5 SECONDS)
|
||||
msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
|
||||
//Ship event: docking request (medical)
|
||||
if("dockingrequestmedical")
|
||||
var/medicalstate = pick("multiple casualties","several cases of radiation sickness","an unknown virus","an unknown infection","a critically injured VIP","sick refugees","multiple cases of food poisoning","injured passengers","sick passengers","injured engineers","wounded marines","a delicate situation","a pregnant passenger","injured castaways","recovered escape pods","unknown escape pods")
|
||||
var/appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
|
||||
var/dockingplan = pick("Starting final approach now.","Commencing docking procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
|
||||
msg("[callname], this is [combined_first_name]. We have [medicalstate] on board. Requesting permission to dock for medical assistance.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to docking bay [bay]. Follow the green lights on your way in. Medtechs are standing by, contact them on channel [medchannel].")
|
||||
sleep(5 SECONDS)
|
||||
msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
|
||||
//Ship event: docking request (security)
|
||||
if("dockingrequestsecurity")
|
||||
var/species = pick("human","unathi","lizard","tajaran","feline","skrell","akula","promethean","sergal","synthetic","robotic","teshari","avian","vulpkanin","canine","vox","zorren","hybrid","mixed-species","vox","grey","alien")
|
||||
var/securitystate = pick("several [species] convicts","a captured pirate","a wanted criminal","[species] stowaways","incompetent [species] shipjackers","a delicate situation","a disorderly passenger","disorderly [species] passengers","ex-mutineers","a captured vox marauder","captured vox marauders","stolen goods","a container full of confiscated contraband","containers full of confiscated contraband",5;"a very lost shadekin",5;"a raging case of [pick("spiders","crabs")]") //gotta have a little something to lighten the mood now and then
|
||||
var/appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","Perfect, thank you")
|
||||
var/dockingplan = pick("Starting final approach now.","Commencing docking procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
|
||||
msg("[callname], this is [combined_first_name]. We have [securitystate] on board and require security assistance. Requesting permission to dock.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to docking bay [bay]. Follow the green lights on your way in. Security teams are standing by, contact them on channel [secchannel].")
|
||||
sleep(5 SECONDS)
|
||||
msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
|
||||
//Ship event: undocking request
|
||||
if("undockingrequest")
|
||||
var/safetravels = pick("Fly safe out there","Good luck","Safe travels","See you next week","Godspeed","Stars guide you")
|
||||
var/thanks = pick("Appreciated","Thanks","Don't worry about us","We'll be fine","You too","So long")
|
||||
msg("[callname], this is [combined_first_name], requesting permission to depart from docking bay [bay].","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted. Docking clamps released. [safetravels].")
|
||||
sleep(5 SECONDS)
|
||||
msg("[thanks], [using_map.dock_name] Control. This is [combined_first_name] setting course for [destname], out.","[prefix] [shipname]")
|
||||
//SDF event: starting patrol
|
||||
if("sdfbeginpatrol")
|
||||
var/safetravels = pick("Fly safe out there","Good luck","Good hunting","Safe travels","Godspeed","Stars guide you")
|
||||
var/thanks = pick("Appreciated","Thanks","Don't worry about us","We'll be fine","You too")
|
||||
msg("[callname], this is [combined_first_name], requesting permission to depart from docking bay [bay] to begin system patrol.","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted. Docking clamps released. [safetravels].")
|
||||
sleep(5 SECONDS)
|
||||
msg("[thanks], [using_map.dock_name] Control. This is [combined_first_name] beginning system patrol, out.","[prefix] [shipname]")
|
||||
//Ship event: undocking request (denied)
|
||||
if("undockingdenied")
|
||||
var/denialreason = pick("Security is requesting a full cargo inspection","Your ship has been impounded for multiple [pick("security","safety")] violations","Your ship is currently under quarantine lockdown","We have reason to believe there's an issue with your papers","Security personnel are currently searching for a fugitive and have ordered all outbound ships remain grounded until further notice")
|
||||
msg("[callname], this is [combined_first_name], requesting permission to depart from docking bay [bay].","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("Negative [combined_first_name], request denied. [denialreason].")
|
||||
//Ship event: undocking request (delayed)
|
||||
if("undockingdelayed")
|
||||
var/denialreason = pick("Docking clamp malfunction, please hold","Fuel lines have not been secured","Ground crew are still on the pad","Loose containers are on the pad","Exhaust deflectors are not yet in position, please hold","There's heavy traffic right now, it's not safe for your vessel to launch","Another vessel has aerospace priority at this moment","Port officials are still aboard")
|
||||
var/safetravels = pick("Fly safe out there","Good luck","Safe travels","See you next week","Godspeed","Stars guide you")
|
||||
var/thanks = pick("Appreciated","Thanks","Don't worry about us","We'll be fine","You too","So long")
|
||||
msg("[callname], this is [combined_first_name], requesting permission to depart from docking bay [bay].","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("Negative [combined_first_name], request denied. [denialreason]. Try again in three minutes.")
|
||||
sleep(180 SECONDS) //yes, three minutes
|
||||
msg("[callname], this is [combined_first_name], requesting permission to depart from docking bay [bay].","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control. Everything appears to be in order now, permission granted. Docking clamps released. [safetravels].")
|
||||
sleep(5 SECONDS)
|
||||
msg("[thanks], [using_map.dock_name] Control. This is [combined_first_name] setting course for [destname], out.","[prefix] [shipname]")
|
||||
//Matched Corps event: friendly encounter [CURRENTLY DISABLED: INCOMPLETE]
|
||||
if("friendlyencounter")
|
||||
var/greeting = pick("Hey |[secondshipname]|, long time no see!","Well if it ain't |[secondshipname]|. Fancy seeing you here.")
|
||||
var/ack = pick("No way! |[shipname]|!","Been a while, hasn't it?","Kept you waiting, huh?")
|
||||
var/query = pick("How's business on your end?","Everything going well these days?")
|
||||
var/reply = pick("Could be better, honestly.","Pretty good!","Eh, not great...","So-so, really.","Business is damn good.","Better than ever.")
|
||||
var/chide = pick("Hey, get off this frequency you two.","This frequency isn't for idle [pick("chit-chat","banter","natter")].","This frequency's for traffic control, keep it clear [pick("folks","people")].","This frequency's for traffic control business only.")
|
||||
msg("[greeting]","[prefix] [shipname]")
|
||||
sleep (5 SECONDS)
|
||||
msg("[ack]","[secondprefix] [secondshipname]")
|
||||
sleep (5 SECONDS)
|
||||
msg("[query]","[prefix] [shipname]")
|
||||
sleep (5 SECONDS)
|
||||
msg("[reply]","[secondprefix] [secondshipname]")
|
||||
sleep (5 SECONDS)
|
||||
msg("[chide]")
|
||||
else //time for generic message
|
||||
msg("[callname], this is [combined_first_name] on [mission] [pick(mission_noun)] to [destname], requesting [request].","[prefix] [shipname]")
|
||||
sleep(5 SECONDS)
|
||||
msg("[combined_first_name], this is [using_map.dock_name] Control, [response].")
|
||||
sleep(5 SECONDS)
|
||||
msg("[using_map.dock_name] Control, [yes ? "thank you" : "understood"], out.","[prefix] [shipname]")
|
||||
return //oops, forgot to restore this
|
||||
|
||||
/* //OLD BLOCK, for reference
|
||||
//Ship sends request to ATC
|
||||
msg(full_request,"[prefix] [shipname]"
|
||||
sleep(5 SECONDS)
|
||||
//ATC sends response to ship
|
||||
msg(full_response)
|
||||
sleep(5 SECONDS)
|
||||
//Ship sends response to ATC
|
||||
msg(full_closure,"[prefix] [shipname]")
|
||||
return
|
||||
*/
|
||||
@@ -1,16 +0,0 @@
|
||||
//I AM THE LOREMASTER, ARE YOU THE GATEKEEPER?
|
||||
|
||||
var/datum/lore/loremaster/loremaster = new/datum/lore/loremaster
|
||||
|
||||
/datum/lore/loremaster
|
||||
var/list/organizations = list()
|
||||
|
||||
/datum/lore/loremaster/New()
|
||||
|
||||
var/list/paths = typesof(/datum/lore/organization) - /datum/lore/organization
|
||||
for(var/path in paths)
|
||||
// Some intermediate paths are not real organizations (ex. /datum/lore/organization/mil). Only do ones with names
|
||||
var/datum/lore/organization/instance = path
|
||||
if(initial(instance.name))
|
||||
instance = new path()
|
||||
organizations[path] = instance
|
||||
File diff suppressed because it is too large
Load Diff
@@ -351,9 +351,9 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new)
|
||||
name = "TSC - Major Bill's Transportation"
|
||||
datum_to_copy = /datum/lore/organization/tsc/mbt
|
||||
|
||||
/datum/category_item/catalogue/information/organization/solgov //YW EDIT
|
||||
name = "Government - Solar Confederate Government" //YW EDIT
|
||||
datum_to_copy = /datum/lore/organization/gov/solgov //YW EDIT
|
||||
/datum/category_item/catalogue/information/organization/commonwealth //VS EDIT 1
|
||||
name = "Government - Commonwealth of Sol-Procyon" //VS EDIT 2
|
||||
datum_to_copy = /datum/lore/organization/gov/commonwealth //VS EDIT 3
|
||||
|
||||
/* //VOREStation Removal
|
||||
/datum/category_item/catalogue/information/organization/virgov
|
||||
|
||||
@@ -57,8 +57,8 @@
|
||||
|
||||
/datum/event2/event/ghost_pod_spawner/stowaway/announce()
|
||||
if(prob(announce_odds))
|
||||
if(atc?.squelched)
|
||||
if(SSatc.is_squelched())
|
||||
return
|
||||
atc.msg("Attention civilian vessels in [using_map.starsys_name] shipping lanes, caution is advised as \
|
||||
SSatc.msg("Attention civilian vessels in [using_map.starsys_name] shipping lanes, caution is advised as \
|
||||
[pick("an unidentified vessel", "a known criminal's vessel", "a derelict vessel")] \
|
||||
has been detected passing multiple local stations.")
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
/datum/event2/event/ghost_pod_spawner/swarm_boarder/announce()
|
||||
if(prob(announce_odds))
|
||||
if(atc?.squelched)
|
||||
atc.msg("Attention civilian vessels in [using_map.starsys_name] shipping lanes, caution \
|
||||
if(SSatc.is_squelched())
|
||||
SSatc.msg("Attention civilian vessels in [using_map.starsys_name] shipping lanes, caution \
|
||||
is advised as [pick("an unidentified vessel", "a known criminal's vessel", "a derelict vessel")] \
|
||||
has been detected passing multiple local stations.")
|
||||
|
||||
@@ -49,7 +49,9 @@
|
||||
|
||||
var/unique_identifier //Define this for objs that we want to be able to rename. Needed to avoid compiler errors if not included.
|
||||
|
||||
/obj/effect/overmap/visitable/Initialize(mapload, dyn_poi) // CHOMPEdit
|
||||
var/mob_announce_cooldown = 0 //Define this to make it so when visited, the ATC will announce their arrival. Only used if you have a Crossed/Uncrossed that calls announce_atc w/ announce_atc being redefined.
|
||||
|
||||
/obj/effect/overmap/visitable/Initialize(mapload, dyn_poi) //CHOMPEdit - dyn_poi
|
||||
. = ..()
|
||||
if(. == INITIALIZE_HINT_QDEL)
|
||||
return
|
||||
@@ -249,6 +251,8 @@
|
||||
icon_state = "sector"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/overmap/visitable/sector/proc/announce_atc(var/atom/movable/AM, var/going = FALSE) //Base proc. Used for virgo3b at this time.
|
||||
return
|
||||
// Because of the way these are spawned, they will potentially have their invisibility adjusted by the turfs they are mapped on
|
||||
// prior to being moved to the overmap. This blocks that. Use set_invisibility to adjust invisibility as needed instead.
|
||||
/obj/effect/overmap/visitable/sector/hide()
|
||||
|
||||
@@ -81,9 +81,9 @@
|
||||
//VOREStation Add End
|
||||
|
||||
if(level >= SEC_LEVEL_RED)
|
||||
atc.reroute_traffic(yes = 1) // Tell them fuck off we're busy.
|
||||
SSatc.reroute_traffic(yes = 1) // Tell them fuck off we're busy.
|
||||
else
|
||||
atc.reroute_traffic(yes = 0)
|
||||
SSatc.reroute_traffic(yes = 0)
|
||||
|
||||
spawn()
|
||||
//SSnightshift.check_nightshift() //CHOMPedit: disabling this for now as we do not use the nightshift currently.
|
||||
|
||||
@@ -33,13 +33,12 @@
|
||||
|
||||
var/datum/announcement/priority/crew_announcement
|
||||
|
||||
var/datum/lore/atc_controller/ATC
|
||||
var/datum/weakref/ATC
|
||||
|
||||
var/list/req_access = list()
|
||||
|
||||
/datum/tgui_module/communications/New(host)
|
||||
. = ..()
|
||||
ATC = atc
|
||||
crew_announcement = new()
|
||||
crew_announcement.newscast = TRUE
|
||||
|
||||
@@ -94,7 +93,7 @@
|
||||
data["emagged"] = emagged
|
||||
data["authenticated"] = is_authenticated(user, 0)
|
||||
data["authmax"] = data["authenticated"] == COMM_AUTHENTICATION_MAX ? TRUE : FALSE
|
||||
data["atcsquelch"] = ATC.squelched
|
||||
data["atcsquelch"] = SSatc.is_squelched()
|
||||
data["boss_short"] = using_map.boss_short
|
||||
|
||||
data["stat_display"] = list(
|
||||
@@ -298,7 +297,7 @@
|
||||
setMenuState(ui.user, COMM_SCREEN_MESSAGES)
|
||||
|
||||
if("toggleatc")
|
||||
ATC.squelched = !ATC.squelched
|
||||
SSatc.reroute_traffic(yes = !SSatc.is_squelched(), silent = TRUE)
|
||||
|
||||
if("delmessage")
|
||||
var/datum/comm_message_listener/l = obtain_message_listener()
|
||||
|
||||
201
maps/common/common_defines.dm
Normal file
201
maps/common/common_defines.dm
Normal file
@@ -0,0 +1,201 @@
|
||||
// Z_LEVEL are just hard coded z-levels
|
||||
// Z_NAME are late loaded z-level maps that can be looked up in GLOB.map_templates_loaded
|
||||
// GLOB.map_templates_loaded is populated as /datum/map_template/proc/on_map_preload(z) is called
|
||||
// Some Z_NAME ultimately will be indexed under an alias however e.g. Z_NAME_ALIAS_GATEWAY
|
||||
|
||||
// Tether
|
||||
#define Z_LEVEL_TETHER_SURFACE_LOW 1
|
||||
#define Z_LEVEL_TETHER_SURFACE_MID 2
|
||||
#define Z_LEVEL_TETHER_SURFACE_HIGH 3
|
||||
#define Z_LEVEL_TETHER_TRANSIT 4
|
||||
#define Z_LEVEL_TETHER_SPACE_LOW 5
|
||||
#define Z_LEVEL_TETHER_SURFACE_MINE 6
|
||||
#define Z_LEVEL_TETHER_SOLARS 7
|
||||
|
||||
#define Z_NAME_TETHER_CENTCOM "Tether - Centcom" // Aliased to Z_NAME_ALIAS_CENTCOM
|
||||
#define Z_NAME_TETHER_MISC "Tether - Misc" // Aliased to Z_NAME_ALIAS_MISC
|
||||
#define Z_NAME_TETHER_UNDERDARK "Tether - Underdark"
|
||||
#define Z_NAME_TETHER_PLAINS "Tether - Plains"
|
||||
#define Z_NAME_TETHER_ROGUEMINE_1 "Asteroid Belt 1"
|
||||
#define Z_NAME_TETHER_ROGUEMINE_2 "Asteroid Belt 2"
|
||||
|
||||
// Stellar Delight
|
||||
#define Z_LEVEL_SHIP_LOW 1
|
||||
#define Z_LEVEL_SHIP_MID 2
|
||||
#define Z_LEVEL_SHIP_HIGH 3
|
||||
|
||||
#define Z_NAME_SHIP_CENTCOM "Ship - Central Command" // Aliased to Z_NAME_ALIAS_CENTCOM
|
||||
#define Z_NAME_SHIP_MISC "Ship - Misc" // Aliased to Z_NAME_ALIAS_MISC
|
||||
#define Z_NAME_SPACE_ROCKS "V3b Asteroid Field"
|
||||
#define Z_NAME_OVERMAP "Overmap"
|
||||
|
||||
// Groundbase
|
||||
#define Z_LEVEL_GB_BOTTOM 1
|
||||
#define Z_LEVEL_GB_MIDDLE 2
|
||||
#define Z_LEVEL_GB_TOP 3
|
||||
|
||||
#define Z_NAME_GB_WILDS_N1 "Northern Wilds 1"
|
||||
#define Z_NAME_GB_WILDS_N2 "Northern Wilds 2"
|
||||
#define Z_NAME_GB_WILDS_S1 "Southern Wilds 1"
|
||||
#define Z_NAME_GB_WILDS_S2 "Southern Wilds 2"
|
||||
#define Z_NAME_GB_WILDS_S3 "Southern Wilds 3"
|
||||
#define Z_NAME_GB_WILDS_E1 "Eastern Wilds 1"
|
||||
#define Z_NAME_GB_WILDS_E2 "Eastern Wilds 2"
|
||||
#define Z_NAME_GB_WILDS_W1 "Western Wilds 1"
|
||||
#define Z_NAME_GB_WILDS_W2 "Western Wilds 2"
|
||||
|
||||
#define Z_NAME_GB_CENTCOM "Groundbase - Central Command" // Aliased to Z_NAME_ALIAS_CENTCOM
|
||||
#define Z_NAME_GB_MISC "Groundbase - Misc" // Aliased to Z_NAME_ALIAS_MISC
|
||||
#define Z_NAME_GB_MINING "V3c Underground"
|
||||
|
||||
#define Z_NAME_ALIAS_GB_WILDS_N "GB WILDS NORTH"
|
||||
#define Z_NAME_ALIAS_GB_WILDS_S "GB WILDS SOUTH"
|
||||
#define Z_NAME_ALIAS_GB_WILDS_E "GB WILDS EAST"
|
||||
#define Z_NAME_ALIAS_GB_WILDS_W "GB WILDS WEST"
|
||||
|
||||
// Common
|
||||
#define Z_NAME_OFFMAP1 "Offmap Ship - Talon V2"
|
||||
#define Z_NAME_AEROSTAT "Remmi Aerostat - Z1 Aerostat"
|
||||
#define Z_NAME_AEROSTAT_SURFACE "Remmi Aerostat - Z2 Surface"
|
||||
#define Z_NAME_DEBRISFIELD "Debris Field - Z1 Space"
|
||||
#define Z_NAME_FUELDEPOT "Fuel Depot - Z1 Space"
|
||||
#define Z_NAME_BEACH "Desert Planet - Z1 Beach"
|
||||
#define Z_NAME_BEACH_CAVE "Desert Planet - Z2 Cave"
|
||||
|
||||
#define Z_NAME_ALIAS_GATEWAY "GATEWAY"
|
||||
#define Z_NAME_ALIAS_OM_ADVENTURE "OVERMAP ADVENTURE"
|
||||
#define Z_NAME_ALIAS_REDGATE "REDGATE"
|
||||
#define Z_NAME_ALIAS_CENTCOM "CENTRAL COMMAND"
|
||||
#define Z_NAME_ALIAS_MISC "MISC"
|
||||
|
||||
// Gateways (Aliased to Z_NAME_ALIAS_GATEWAY)
|
||||
#define Z_NAME_GATEWAY_CARP_FARM "Gateway - Carp Farm"
|
||||
#define Z_NAME_GATEWAY_SNOW_FIELD "Gateway - Snow Field"
|
||||
#define Z_NAME_GATEWAY_LISTENING_POST "Gateway - Listening Post"
|
||||
#define Z_NAME_GATEWAY_HONLETH_A "Gateway - Honleth Highlands A"
|
||||
#define Z_NAME_GATEWAY_HONLETH_B "Gateway - Honleth Highlands B"
|
||||
#define Z_NAME_GATEWAY_ARYNTHI_CAVE_A "Gateway - Arynthi Lake Underground A"
|
||||
#define Z_NAME_GATEWAY_ARYNTHI_A "Gateway - Arynthi Lake A"
|
||||
#define Z_NAME_GATEWAY_ARYNTHI_CAVE_B "Gateway - Arynthi Lake Underground B"
|
||||
#define Z_NAME_GATEWAY_ARYNTHI_B "Gateway - Arynthi Lake B"
|
||||
#define Z_NAME_GATEWAY_WILD_WEST "Gateway - Wild West"
|
||||
|
||||
// Overmap Adventures (Aliased to Z_NAME_ALIAS_OM_ADVENTURE)
|
||||
#define Z_NAME_OM_GRASS_CAVE "Grass Cave"
|
||||
|
||||
// Redgates (Aliased to Z_NAME_ALIAS_REDGATE)
|
||||
#define Z_NAME_REDGATE_TEPPI_RANCH "Redgate - Teppi Ranch"
|
||||
#define Z_NAME_REDGATE_INNLAND "Redgate - Innland"
|
||||
#define Z_NAME_REDGATE_ABANDONED_ISLAND "Redgate - Abandoned Island" // Commented out currently
|
||||
#define Z_NAME_REDGATE_DARK_ADVENTURE "Redgate - Dark Adventure"
|
||||
#define Z_NAME_REDGATE_EGGNOG_CAVE "Redgate - Eggnog Town Underground"
|
||||
#define Z_NAME_REDGATE_EGGNOG_TOWN "Redgate - Eggnog Town"
|
||||
#define Z_NAME_REDGATE_STAR_DOG "Redgate - Star Dog"
|
||||
#define Z_NAME_REDGATE_HOTSPRINGS "Redgate - Hotsprings"
|
||||
#define Z_NAME_REDGATE_RAIN_CITY "Redgate - Rain City"
|
||||
#define Z_NAME_REDGATE_ISLANDS_UNDERWATER "Redgate - Islands Underwater"
|
||||
#define Z_NAME_REDGATE_ISLANDS "Redgate - Islands"
|
||||
#define Z_NAME_REDGATE_MOVING_TRAIN "Redgate - Moving Train"
|
||||
#define Z_NAME_REDGATE_MOVING_TRAIN_UPPER "Redgate - Moving Train Upper Level"
|
||||
#define Z_NAME_REDGATE_FANTASY_DUNGEON "Redgate - Fantasy Dungeon"
|
||||
#define Z_NAME_REDGATE_FANTASY_TOWN "Redgate - Fantasy Town"
|
||||
#define Z_NAME_REDGATE_LASERDOME "Redgate - Laserdome"
|
||||
#define Z_NAME_REDGATE_CASCADING_FALLS "Redgate - Cascading Falls"
|
||||
#define Z_NAME_REDGATE_JUNGLE_CAVE "Redgate - Jungle Underground"
|
||||
#define Z_NAME_REDGATE_JUNGLE "Redgate - Jungle"
|
||||
#define Z_NAME_REDGATE_FACILITY "Redgate - Facility"
|
||||
|
||||
//Camera networks
|
||||
#define NETWORK_TETHER "Tether"
|
||||
#define NETWORK_OUTSIDE "Outside"
|
||||
#define NETWORK_HALLS "Halls"
|
||||
|
||||
/obj/effect/landmark/map_data/groundbase
|
||||
height = 3
|
||||
|
||||
/obj/effect/landmark/map_data/stellar_delight
|
||||
height = 3
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3b
|
||||
name = "Virgo 3B"
|
||||
desc = "Full of phoron, and home to the NSB Adephagia."
|
||||
scanner_desc = @{"[i]Registration[/i]: NSB Adephagia
|
||||
[i]Class[/i]: Installation
|
||||
[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
|
||||
[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
|
||||
|
||||
icon = 'icons/obj/overmap_vr.dmi'
|
||||
icon_state = "virgo3b"
|
||||
|
||||
skybox_icon = 'icons/skybox/virgo3b.dmi'
|
||||
skybox_icon_state = "small"
|
||||
skybox_pixel_x = 0
|
||||
skybox_pixel_y = 0
|
||||
|
||||
mob_announce_cooldown = 0
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3c
|
||||
name = "Virgo 3C"
|
||||
desc = "A small, volcanically active moon."
|
||||
scanner_desc = @{"[i]Registration[/i]: NSB Rascal's Pass
|
||||
[i]Class[/i]: Installation
|
||||
[i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF
|
||||
[b]Notice[/b]: NanoTrasen Base, authorized personnel only"}
|
||||
known = TRUE
|
||||
in_space = TRUE
|
||||
|
||||
icon = 'icons/obj/overmap.dmi'
|
||||
icon_state = "lush"
|
||||
|
||||
skybox_icon = null
|
||||
skybox_icon_state = null
|
||||
skybox_pixel_x = 0
|
||||
skybox_pixel_y = 0
|
||||
|
||||
initial_generic_waypoints = list("groundbase", "gb_excursion_pad","omship_axolotl")
|
||||
initial_restricted_waypoints = list()
|
||||
|
||||
/obj/effect/overmap/visitable/ship/stellar_delight
|
||||
name = "NRV Stellar Delight"
|
||||
icon = 'icons/obj/overmap_vr.dmi'
|
||||
icon_state = "stellar_delight_g"
|
||||
desc = "Spacefaring vessel. Friendly IFF detected."
|
||||
scanner_desc = @{"[i]Registration[/i]: NRV Stellar Delight
|
||||
[i]Class[/i]: Nanotrasen Response Vessel
|
||||
[i]Transponder[/i]: Transmitting (CIV), non-hostile"
|
||||
[b]Notice[/b]: A response vessel registered to Nanotrasen."}
|
||||
vessel_mass = 25000
|
||||
vessel_size = SHIP_SIZE_LARGE
|
||||
initial_generic_waypoints = list("starboard_shuttlepad","port_shuttlepad","sd-1-23-54","sd-1-67-15","sd-1-70-130","sd-1-115-85","sd-2-25-98","sd-2-117-98","sd-3-22-78","sd-3-36-33","sd-3-104-33","sd-3-120-78")
|
||||
initial_restricted_waypoints = list("Exploration Shuttle" = list("sd_explo"), "Mining Shuttle" = list("sd_mining"))
|
||||
levels_for_distress = list(Z_NAME_OFFMAP1, Z_NAME_BEACH, Z_NAME_AEROSTAT, Z_NAME_DEBRISFIELD, Z_NAME_FUELDEPOT)
|
||||
unowned_areas = list(/area/shuttle/sdboat)
|
||||
known = TRUE
|
||||
start_x = 2
|
||||
start_y = 2
|
||||
|
||||
fore_dir = NORTH
|
||||
|
||||
skybox_icon = 'maps/stellar_delight/stelardelightskybox.dmi'
|
||||
skybox_icon_state = "skybox"
|
||||
skybox_pixel_x = 450
|
||||
skybox_pixel_y = 200
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo2
|
||||
name = "Virgo 2"
|
||||
desc = "Includes the Remmi Aerostat and associated ground mining complexes."
|
||||
scanner_desc = @{"[i]Stellar Body[/i]: Virgo 2
|
||||
[i]Class[/i]: R-Class Planet
|
||||
[i]Habitability[/i]: Low (High Temperature, Toxic Atmosphere)
|
||||
[b]Notice[/b]: Planetary environment not suitable for life. Landing may be hazardous."}
|
||||
icon_state = "globe"
|
||||
in_space = 0
|
||||
known = TRUE
|
||||
icon_state = "chlorine"
|
||||
|
||||
skybox_icon = 'icons/skybox/virgo2.dmi'
|
||||
skybox_icon_state = "v2"
|
||||
skybox_pixel_x = 0
|
||||
skybox_pixel_y = 0
|
||||
|
||||
extra_z_levels = list(Z_NAME_AEROSTAT_SURFACE)
|
||||
@@ -410,7 +410,7 @@
|
||||
. = ..()
|
||||
announce_atc(AM,going = TRUE)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/proc/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
if(istype(AM, /obj/effect/overmap/visitable/ship/simplemob))
|
||||
if(world.time < mob_announce_cooldown)
|
||||
return
|
||||
@@ -422,11 +422,11 @@
|
||||
var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew
|
||||
var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle]
|
||||
if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
//For ships, it's safe to assume they're big enough to not be sneaky
|
||||
else if(istype(AM, /obj/effect/overmap/visitable/ship))
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/get_space_zlevels()
|
||||
return list(Z_LEVEL_SPACE_ROCKS)
|
||||
|
||||
@@ -231,7 +231,6 @@
|
||||
|
||||
/obj/item/paper/dockingcodes/sd
|
||||
name = "Stellar Delight Docking Codes"
|
||||
codes_from_z = Z_LEVEL_SHIP_LOW
|
||||
|
||||
/////FOR CENTCOMM (at least)/////
|
||||
/obj/effect/overmap/visitable/sector/virgo3b
|
||||
@@ -255,8 +254,8 @@
|
||||
initial_generic_waypoints = list("sr-c","sr-n","sr-s")
|
||||
initial_restricted_waypoints = list("Central Command Shuttlepad" = list("cc_shuttlepad"))
|
||||
|
||||
extra_z_levels = list(Z_LEVEL_SPACE_ROCKS)
|
||||
var/mob_announce_cooldown = 0
|
||||
extra_z_levels = list(Z_NAME_SPACE_ROCKS)
|
||||
mob_announce_cooldown = 0
|
||||
|
||||
/////SD Starts at V3b to pick up crew refuel and repair (And to make sure it doesn't spawn on hazards)
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/Initialize(mapload)
|
||||
@@ -273,7 +272,7 @@
|
||||
. = ..()
|
||||
announce_atc(AM,going = TRUE)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/proc/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
if(istype(AM, /obj/effect/overmap/visitable/ship/simplemob))
|
||||
if(world.time < mob_announce_cooldown)
|
||||
return
|
||||
@@ -285,11 +284,11 @@
|
||||
var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew
|
||||
var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle]
|
||||
if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
//For ships, it's safe to assume they're big enough to not be sneaky
|
||||
else if(istype(AM, /obj/effect/overmap/visitable/ship))
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/get_space_zlevels()
|
||||
return list(Z_LEVEL_SPACE_ROCKS)
|
||||
return list(Z_NAME_SPACE_ROCKS)
|
||||
|
||||
@@ -319,7 +319,7 @@
|
||||
)
|
||||
|
||||
levels_for_distress = list(Z_LEVEL_OFFMAP1, Z_LEVEL_BEACH, Z_LEVEL_AEROSTAT, Z_LEVEL_DEBRISFIELD, Z_LEVEL_FUELDEPOT)
|
||||
var/mob_announce_cooldown = 0
|
||||
mob_announce_cooldown = 0
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/Crossed(var/atom/movable/AM)
|
||||
. = ..()
|
||||
@@ -332,7 +332,7 @@
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/get_space_zlevels()
|
||||
return list(Z_LEVEL_SPACE_LOW)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/proc/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
if(istype(AM, /obj/effect/overmap/visitable/ship/simplemob))
|
||||
if(world.time < mob_announce_cooldown)
|
||||
return
|
||||
@@ -344,11 +344,11 @@
|
||||
var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew
|
||||
var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle]
|
||||
if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
//For ships, it's safe to assume they're big enough to not be sneaky
|
||||
else if(istype(AM, /obj/effect/overmap/visitable/ship))
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/virgo3b/generate_skybox(zlevel)
|
||||
var/static/image/bigone = image(icon = 'icons/skybox/virgo3b.dmi', icon_state = "large")
|
||||
|
||||
@@ -3,17 +3,6 @@
|
||||
var/datum/matter_synth/water_res = null //Enable water for lick clean
|
||||
//Multibelly support. We do not want to apply it to any module not supporting it in it's sprites
|
||||
|
||||
/mob/living/silicon/robot/verb/purge_nutrition()
|
||||
set name = "Purge Nutrition"
|
||||
set category = "Abilities.Vore"
|
||||
set desc = "Allows you to clear out most of your nutrition if needed."
|
||||
|
||||
if (stat != CONSCIOUS || nutrition <= 1000)
|
||||
return
|
||||
nutrition = 1000
|
||||
to_chat(src, span_warning("You have purged most of the nutrition lingering in your systems."))
|
||||
return TRUE
|
||||
|
||||
/mob/living/silicon/robot/proc/ex_reserve_refill()
|
||||
set name = "Refill Extinguisher"
|
||||
set category = "Object"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
extra_z_levels = list(Z_LEVEL_TRANSIT, Z_LEVEL_MISC,Z_LEVEL_SURFACE, Z_LEVEL_SURFACE_MINE, Z_LEVEL_SURFACE_WILD) //This should allow for comms to reach people from the station. Basically this defines all the areas of Southern Cross and the Sif local system on the overmap.
|
||||
// "Z_LEVEL_SURFACE_SKYLANDS, " //removed due to lack of use
|
||||
var/mob_announce_cooldown = 0
|
||||
mob_announce_cooldown = 0
|
||||
|
||||
|
||||
initial_generic_waypoints = list(
|
||||
@@ -68,7 +68,7 @@
|
||||
. = ..()
|
||||
announce_atc(AM,going = TRUE)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/Southern_Cross/proc/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
/obj/effect/overmap/visitable/sector/Southern_Cross/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
if(istype(AM, /obj/effect/overmap/visitable/ship/simplemob))
|
||||
if(world.time < mob_announce_cooldown)
|
||||
return
|
||||
@@ -80,11 +80,11 @@
|
||||
var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew
|
||||
var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle]
|
||||
if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
//For ships, it's safe to assume they're big enough to not be sneaky
|
||||
else if(istype(AM, /obj/effect/overmap/visitable/ship))
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
/obj/effect/overmap/visitable/planet/Sif/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
extra_z_levels = list(Z_LEVEL_TRANSIT, Z_LEVEL_MISC,Z_LEVEL_SURFACE, Z_LEVEL_SURFACE_MINE, Z_LEVEL_SURFACE_WILD) //This should allow for comms to reach people from the station. Basically this defines all the areas of Southern Cross and the Sif local system on the overmap.
|
||||
// "Z_LEVEL_SURFACE_SKYLANDS, " //removed due to lack of use
|
||||
var/mob_announce_cooldown = 0
|
||||
mob_announce_cooldown = 0
|
||||
|
||||
|
||||
initial_generic_waypoints = list(
|
||||
@@ -64,7 +64,7 @@
|
||||
. = ..()
|
||||
announce_atc(AM,going = TRUE)
|
||||
|
||||
/obj/effect/overmap/visitable/sector/Southern_Cross/proc/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
/obj/effect/overmap/visitable/sector/Southern_Cross/announce_atc(var/atom/movable/AM, var/going = FALSE)
|
||||
if(istype(AM, /obj/effect/overmap/visitable/ship/simplemob))
|
||||
if(world.time < mob_announce_cooldown)
|
||||
return
|
||||
@@ -76,11 +76,11 @@
|
||||
var/obj/effect/overmap/visitable/ship/landable/SL = AM //Phew
|
||||
var/datum/shuttle/autodock/multi/shuttle = SSshuttles.shuttles[SL.shuttle]
|
||||
if(!istype(shuttle) || !shuttle.cloaked) //Not a multishuttle (the only kind that can cloak) or not cloaked
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
//For ships, it's safe to assume they're big enough to not be sneaky
|
||||
else if(istype(AM, /obj/effect/overmap/visitable/ship))
|
||||
atc.msg(message)
|
||||
SSatc.msg(message)
|
||||
|
||||
/obj/effect/overmap/visitable/planet/Sif/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -384,6 +384,7 @@
|
||||
#include "code\controllers\subsystems\ai.dm"
|
||||
#include "code\controllers\subsystems\aifast.dm"
|
||||
#include "code\controllers\subsystems\air.dm"
|
||||
#include "code\controllers\subsystems\air_traffic.dm"
|
||||
#include "code\controllers\subsystems\airflow.dm"
|
||||
#include "code\controllers\subsystems\alarm.dm"
|
||||
#include "code\controllers\subsystems\asset_loading.dm"
|
||||
@@ -2197,9 +2198,17 @@
|
||||
#include "code\modules\blob2\overmind\types\shifting_fragments.dm"
|
||||
#include "code\modules\blob2\overmind\types\synchronous_mesh.dm"
|
||||
#include "code\modules\blob2\overmind\types\volatile_alluvium.dm"
|
||||
#include "code\modules\busy_space_yw\air_traffic.dm"
|
||||
#include "code\modules\busy_space_yw\loremaster.dm"
|
||||
#include "code\modules\busy_space_yw\organizations.dm"
|
||||
#include "code\modules\busy_space\atc_chatter.dm"
|
||||
#include "code\modules\busy_space\atc_chatter_type.dm"
|
||||
#include "code\modules\busy_space\chatter_civilian.dm"
|
||||
#include "code\modules\busy_space\chatter_distress.dm"
|
||||
#include "code\modules\busy_space\chatter_docking.dm"
|
||||
#include "code\modules\busy_space\chatter_police.dm"
|
||||
#include "code\modules\busy_space\chatter_sdf.dm"
|
||||
#include "code\modules\busy_space\chatter_shiftend.dm"
|
||||
#include "code\modules\busy_space\chatter_shiftstart.dm"
|
||||
#include "code\modules\busy_space\loremaster.dm"
|
||||
#include "code\modules\busy_space\organizations.dm"
|
||||
#include "code\modules\casino\boxes_casino.dm"
|
||||
#include "code\modules\casino\casino.dm"
|
||||
#include "code\modules\casino\casino_prize_vendor.dm"
|
||||
|
||||
Reference in New Issue
Block a user