Merge pull request #8974 from elgeonmb/newtracon

Overhauls the Air Traffic Controller / Busy Space system
This commit is contained in:
Sypsoti
2023-03-08 11:54:35 -06:00
committed by GitHub
7 changed files with 1220 additions and 185 deletions
+16 -20
View File
@@ -3,8 +3,8 @@
var/global/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
/datum/lore/atc_controller
var/delay_max = 25 MINUTES //How long between ATC traffic, max. Default is 25 mins.
var/delay_min = 40 MINUTES //How long between ATC traffic, min. Default is 40 mins.
var/delay_min = 25 MINUTES //How long between ATC traffic, min. Default is 25 mins.
var/delay_max = 40 MINUTES //How long between ATC traffic, max. Default is 40 mins.
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 //When the next message should happen in world.time
var/force_chatter_type //Force a specific type of messages
@@ -48,23 +48,17 @@ var/global/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
msg("Automated Shuttle, cleared to complete routine transfer from [using_map.station_name] to [using_map.dock_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[pick(loremaster.organizations)]
var/datum/lore/organization/source = loremaster.organizations[one] //Resolve to the instances
var/datum/lore/organization/dest = loremaster.organizations[two]
//get the relevant mission string from our org.
//will also give us a new ship name
var/mission_text = source.generate_mission()
//Let's get some mission parameters
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 to go with it
var/destname = pick(dest.destination_names) //Pick a random holding from the destination
var/combined_name = "[owner] [prefix] [shipname]"
var/combined_name = "[source.short_name] [source.current_ship]"
var/alt_atc_names = list("[using_map.station_short] TraCon","[using_map.station_short] Control","[using_map.station_short] ATC","[using_map.station_short] Airspace")
var/wrong_atc_names = list("Sol Command","New Reykjavik StarCon", "NLS Southern Cross TraCon", "[using_map.dock_name]")
var/mission_noun = list("flight","mission","route")
var/request_verb = list("requesting","calling for","asking for")
//First response is 'yes', second is 'no'
@@ -90,7 +84,7 @@ var/global/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
else
chatter_type = pick(2;"emerg",5;"wrong_freq","normal") //Be nice to have wrong_lang...
var/yes = prob(90) //Chance for them to say yes vs no
var/yes = prob(source.legit) //Chance for them to say yes vs no
var/request = pick(requests)
var/callname = pick(alt_atc_names)
@@ -103,27 +97,29 @@ var/global/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
switch(chatter_type)
if("wrong_freq")
callname = pick(wrong_atc_names)
full_request = "[callname], this is [combined_name] on a [mission] [pick(mission_noun)] to [destname], [pick(request_verb)] [request]."
full_request = "[callname], this is [source.short_name] [mission_text], [pick(request_verb)] [request]."
full_response = "[combined_name], this is [using_map.station_short] TraCon, wrong frequency. Switch to [rand(700,999)].[rand(1,9)]."
full_closure = "[using_map.station_short] TraCon, understood, apologies."
if("wrong_lang")
//Can't implement this until autosay has language support
if("emerg")
var/problem = pick("hull breaches on multiple decks","unknown life forms on board","a drive about to go critical","lost attitude control","asteroids impacting the hull","an engine on fire","a total loss of engine power","a malfunctioning bluespace drive","people trying to board the ship","instrument failure and zero visibility")
var/problem = pick("hull breaches on multiple decks","unknown life forms on board","a drive about to go critical","lost attitude control","asteroids impacting the hull","an engine on fire","a total loss of engine power","a malfunctioning bluespace drive","people trying to board the ship","instrument failure and zero visibility", "Skathari on board", "a malfunctioning core intelligence")
full_request = "This is [combined_name] declaring an emergency! We have [problem]!"
full_response = "[combined_name], this is [using_map.station_short] TraCon, copy. Switch to emergency responder channel [rand(700,999)].[rand(1,9)]."
full_closure = "[using_map.station_short] TraCon, okay, switching now."
full_closure = pick("[using_map.station_short] TraCon, okay, switching now!", "Roger, [using_map.station_short] TraCon!", "Switching!", "...")
else
full_request = "[callname], this is [combined_name] on a [mission] [pick(mission_noun)] to [destname], [pick(request_verb)] [request]."
full_request = "[callname], this is [source.short_name] [mission_text], [pick(request_verb)] [request]."
full_response = "[combined_name], this is [using_map.station_short] TraCon, [response]." //Station TraCon always calls themselves TraCon
full_closure = "[using_map.station_short] TraCon, [yes ? "thank you" : "understood"], good day." //They always copy what TraCon called themselves in the end when they realize they said it wrong
if(source.motto && prob(source.annoying) && yes)
full_closure += " " + source.motto
//Ship sends request to ATC
msg(full_request,"[prefix] [shipname]")
msg(full_request,"[source.current_ship]")
sleep(5 SECONDS)
//ATC sends response to ship
msg(full_response)
sleep(5 SECONDS)
//Ship sends response to ATC
msg(full_closure,"[prefix] [shipname]")
msg(full_closure,"[source.current_ship]")
return
+7
View File
@@ -0,0 +1,7 @@
/datum/lore/location
var/desc = ""
var/mission_types = list()
/datum/lore/location/New(_desc,_mission_types)
desc = _desc
mission_types = _mission_types
+62
View File
@@ -0,0 +1,62 @@
/datum/lore/mission
var/prefix = ""
var/mission_strings = list()
var/mission_type = ""
/datum/lore/mission/New(_prefix,_mission_strings,_mission_type)
prefix = _prefix
mission_strings = _mission_strings
mission_type = _mission_type
/datum/lore/mission/prebuilt
/datum/lore/mission/prebuilt/New(a)
prefix = a
//Default mission types for ease of populating organizations
//Most orgs that do medical missions are going to run comperable kinds of medical mission
/datum/lore/mission/prebuilt/medical
mission_strings = list("medical", "medical resupply", "hospital", "vaccine distribution")
mission_type = ATC_MED
/datum/lore/mission/prebuilt/transport
mission_strings = list("transport", "passenger transport", "general transport", "courier")
mission_type = ATC_TRANS
/datum/lore/mission/prebuilt/freight
mission_strings = list("freight", "hauling", "bulk transport", "materials delivery")
mission_type = ATC_FREIGHT
/datum/lore/mission/prebuilt/defense
mission_strings = list("defense", "asset protection", "patrol")
mission_type = ATC_DEF
/datum/lore/mission/prebuilt/industrial
mission_strings = list("industrial", "construction", "repair", "maintence", "factory resupply")
mission_type = ATC_INDU
/datum/lore/mission/prebuilt/scientific
mission_strings = list("scientific", "research", "data collection", "survey")
mission_type = ATC_SCI
/datum/lore/mission/prebuilt/diplomatic
mission_strings = list("diplomatic", "dignitary transport", "cultural exchange")
mission_type = ATC_DIPLO
/datum/lore/mission/prebuilt/luxury
mission_strings = list("luxury cruise", "pleasure cruise", "VIP transport", "sight-seeing", "vacation")
mission_type = ATC_LUX
/datum/lore/mission/prebuilt/salvage
mission_strings = list("salvage", "scrap gathering", "damage assessment", "material recovery", "data recovery", "effects recovery", "in-situ repair")
mission_type = ATC_SALVAGE
/datum/lore/mission/prebuilt/medical_response
mission_strings = list("medical response", "emergency triage", "first response", "pathogen containment")
mission_type = ATC_MED
/datum/lore/mission/prebuilt/defense_response
mission_strings = list("crisis response", "SOS investigation", "high-priority escort", "rescue")
mission_type = ATC_DEF
/datum/lore/mission/prebuilt/transport/default
prefix = "ITV"
+514 -165
View File
@@ -1,15 +1,22 @@
//Datums for different companies that can be used by busy_space
/datum/lore/organization
var/name = "" // Organization's name
var/short_name = "" // Organization's shortname (NanoTrasen for "NanoTrasen Incorporated")
var/acronym = "" // Organization's acronym, e.g. 'NT' for NanoTrasen'.
var/desc = "" // One or two paragraph description of the organization, but only current stuff. Currently unused.
var/history = "" // Historical discription of the organization's origins Currently unused.
var/work = "" // Short description of their work, eg "an arms manufacturer"
var/headquarters = "" // Location of the organization's HQ. Currently unused.
var/motto = "" // A motto/jingle/whatever, if they have one. Currently unused.
var/name = "" // Organization's name
var/short_name = "" // Organization's shortname (NanoTrasen for "NanoTrasen Incorporated")
var/acronym = "" // Organization's acronym, e.g. 'NT' for NanoTrasen'.
var/desc = "" // One or two paragraph description of the organization, but only current stuff. Currently unused.
var/history = "" // Historical discription of the organization's origins Currently unused.
var/work = "" // Short description of their work, eg "an arms manufacturer"
var/headquarters = "" // Location of the organization's HQ. Currently unused.
var/motto = "" // A motto/jingle/whatever, if they have one.
var/legit = 90 // The odds of them being approved a flight route. mostly a function of their reputation though unfamiliarity with local traffic rules is also a factor
var/annoying = 10 // The odds they'll say their motto at the end of a successfully negotiatiated route.
var/serviced = list(/datum/lore/system/sol = 1) // systems they work in, weighted
var/missions = list() // mission types they run
var/special_locations = list() // individual locations they might run missions to outside of their serviced systems
var/mission_noun = list("mission","flight", "trip") //
var/current_ship = "" // the most recent ship from this org to have talked on the tracon
//todo, implement per-org special locations
var/list/ship_prefixes = list() //Some might have more than one! Like NanoTrasen. Value is the mission they perform, e.g. ("ABC" = "mission desc")
var/list/ship_names = list( //Names of spaceships. This is a mostly generic list that all the other organizations inherit from if they don't have anything better.
"Kestrel",
"Beacon",
@@ -31,6 +38,7 @@
"Explorer",
"Swift",
"Dragonfly",
"Hollyhock",
"Ascendant",
"Tenacious",
"Pioneer",
@@ -159,21 +167,57 @@
"King of the Unathi",
"Ishtar's Grace"
)
var/list/destination_names = list() //Names of static holdings that the organization's ships visit regularly.
var/autogenerate_destination_names = TRUE
/datum/lore/organization/New()
..()
if(autogenerate_destination_names) // Lets pad out the destination names.
var/i = rand(6, 10)
var/list/star_names = list(
"Sol", "Alpha Centauri", "Tau Ceti", "Zhu Que", "Oasis", "Vir", "Gavel", "Ganesha",
"Saint Columbia", "Altair", "Sidhe", "New Ohio", "Parvati", "Mahi-Mahi", "Nyx", "New Seoul", "Abel's Rest", "Relan", "Natuna", "Terminus",
"Kess-Gendar", "Raphael", "Phact", "Altair", "El", "Eutopia", "Qerr'valis", "Qerrna-Lakirr", "Rarkajar", "Thoth", "Jahan's Post", "Kauq'xum", "Silk", "New Singapore", "Stove", "Viola", "Love")
var/list/destination_types = list("dockyard", "station", "vessel", "waystation", "telecommunications satellite", "spaceport", "anomaly", "colony", "outpost")
while(i)
destination_names.Add("a [pick(destination_types)] in [pick(star_names)]")
i--
/datum/lore/organization/proc/generate_mission()
// pick what system we're going to run in
var/datum/lore/system/destination_system = pickweight(serviced)
if(destination_system)
destination_system = new destination_system
//shuffle
missions = shuffle(missions)
destination_system.locations = shuffle(destination_system.locations)
//init other variables
var/destination_mission_types = list()
var/possible_mission_types = list()
//find what missions we can run
for(var/datum/lore/mission/x in missions)
possible_mission_types |= x.mission_type
//populate destination_missions with all the mission types in that system
for(var/datum/lore/location/x in destination_system.locations)
destination_mission_types |= x.mission_types
// only find missions in the system we can run
possible_mission_types &= destination_mission_types
//sanity checking
if(!possible_mission_types) //an org was given a system that contains no missions they run. let's fail gracefully about it
current_ship = "vessel [pick("SOL", "VIR", "STC", "ACE")]-575-[rand(0,999999)]" //unnamed ship
return "[current_ship], traveling to local registrar" //instantly identifiable as an error but still immersive
//select a mission we can run
var/datum/lore/mission/selected_mission
for(var/datum/lore/mission/x in missions)
if(x.mission_type in possible_mission_types)
selected_mission = x
break
//select a place to do it at
var/datum/lore/location/selected_location
for(var/datum/lore/location/x in destination_system.locations)
if(selected_mission.mission_type in x.mission_types)
selected_location = x
break
//set our ship name for consistancy on the tracon
current_ship = "[selected_mission.prefix] [pick(ship_names)]"
//finally return our answer
return "[current_ship] on a [pick(selected_mission.mission_strings)] [pick(mission_noun)] to [selected_location.desc]"
//////////////////////////////////////////////////////////////////////////////////
@@ -183,7 +227,7 @@
short_name = "NanoTrasen"
acronym = "NT"
desc = "NanoTrasen is one of the foremost research and development companies in SolGov space. \
Originally focused on consumer products, their swift move into the field of Phoron has lead to \
Originally focused on consumer products, their swift move into the field of phoron has lead to \
them being the foremost experts on the substance and its uses. In the modern day, NanoTrasen prides \
itself on being an early adopter to as many new technologies as possible, often offering the newest \
products to their employees. In an effort to combat complaints about being 'guinea pigs', Nanotrasen \
@@ -197,8 +241,53 @@
work = "research giant"
headquarters = "Luna, Sol"
motto = ""
legit = 95 //they own the local airspace
missions = list( // they get almost every mission type because they're, you know, NT
new /datum/lore/mission/prebuilt/medical("NMV"),
new /datum/lore/mission/prebuilt/transport("NTV"),
new /datum/lore/mission/prebuilt/defense("NDV"),
new /datum/lore/mission/prebuilt/freight("NFV"),
new /datum/lore/mission/prebuilt/industrial("NIV"),
new /datum/lore/mission/prebuilt/scientific("NSV"),
new /datum/lore/mission/prebuilt/salvage("NIV"),
new /datum/lore/mission/prebuilt/medical_response("NRV"),
new /datum/lore/mission/prebuilt/defense_response("NRV")
)
serviced = list( //again, protagonists, so this is something close to a map by trade distance of human+tajaran space
/datum/lore/system/vir = 20,
/datum/lore/system/sol = 15,
/datum/lore/system/gavel = 15,
/datum/lore/system/oasis = 15,
/datum/lore/system/saint_columbia = 10,
/datum/lore/system/kess_gendar = 10,
/datum/lore/system/tau_ceti = 10,
/datum/lore/system/alpha_centauri = 10,
/datum/lore/system/new_ohio = 10,
/datum/lore/system/new_seoul = 10,
/datum/lore/system/el = 10, //specific high NT investment
/datum/lore/system/nyx = 10,
/datum/lore/system/zhu_que = 5,
/datum/lore/system/love = 5,
/datum/lore/system/kauqxum = 5,
/datum/lore/system/sidhe = 5,
/datum/lore/system/mahimahi = 5,
/datum/lore/system/relan = 5,
/datum/lore/system/exalts_light = 5,
/datum/lore/system/rarkajar = 5,
/datum/lore/system/raphael = 5, //they own one of the raphaelite colonies
/datum/lore/system/mesomori = 2,
/datum/lore/system/arrathiir = 2,
/datum/lore/system/jahans_post = 2,
/datum/lore/system/abels_rest = 2,
/datum/lore/system/terminus = 2,
/datum/lore/system/eutopia = 2,
/datum/lore/system/altair = 2,
/datum/lore/system/neon_light = 1
)
ship_prefixes = list("NSV" = "exploration", "NTV" = "hauling", "NDV" = "patrol", "NRV" = "emergency response", "NDV" = "asset protection")
//Scientist naming scheme
ship_names = list(
"Bardeen",
@@ -244,26 +333,6 @@
)
destination_names = list(
"NSS Exodus in Nyx",
"NCS Northern Star in Vir",
"NLS Southern Cross in Vir",
"a dockyard orbiting Sif",
"an asteroid orbiting Kara",
"an asteroid orbiting Rota",
"Vir Interstellar Spaceport"
)
/datum/lore/organization/tsc/nanotrasen/New()
..()
spawn(1) // BYOND shenanigans means using_map is not initialized yet. Wait a tick.
// Get rid of the current map from the list, so ships flying in don't say they're coming to the current map.
var/string_to_test = "[using_map.station_name] in [using_map.starsys_name]"
if(string_to_test in destination_names)
destination_names.Remove(string_to_test)
/datum/lore/organization/tsc/hephaestus
name = "Hephaestus Industries"
short_name = "Hephaestus"
@@ -278,7 +347,37 @@
headquarters = "Luna, Sol"
motto = ""
ship_prefixes = list("HTV" = "freight", "HLV" = "munitions resupply", "HDV" = "asset protection", "HDV" = "preemptive deployment")
missions = list(
new/datum/lore/mission/prebuilt/defense("HDV"),
new/datum/lore/mission/prebuilt/industrial("HLV"),//to avoid unfortunate prefixes
new/datum/lore/mission/prebuilt/freight("HFV"),
new/datum/lore/mission/prebuilt/transport("HTV"),
new/datum/lore/mission("HSV", list("weapons testing", "materials testing", "data exchange"), ATC_SCI) //might produce slightly weird results vis a vis location
)
serviced = list(
/datum/lore/system/vir = 10, //local space (local operations significantly reduced)
/datum/lore/system/sol = 20,
/datum/lore/system/oasis = 15, //local + on the border
/datum/lore/system/saint_columbia = 15, //SCG military outposts
/datum/lore/system/jahans_post = 15,
/datum/lore/system/tau_ceti = 15, //specifically named local operations
/datum/lore/system/kess_gendar = 15,
/datum/lore/system/alpha_centauri = 10,
/datum/lore/system/abels_rest = 10,
/datum/lore/system/new_ohio = 10, //is very obviously a big border thing
/datum/lore/system/gavel = 10, //local
/datum/lore/system/sidhe = 5, //other systems w/ piracy problems and governments addressing them
/datum/lore/system/love = 5,
/datum/lore/system/zhu_que = 5,
/datum/lore/system/raphael = 5,
/datum/lore/system/new_seoul = 5,//national capitals that are vaguely scg friendly
/datum/lore/system/rarkajar = 5,
/datum/lore/system/terminus = 2,
/datum/lore/system/whythe = 1, //very good national contractors are allowed to poke at the fucked up hell ruins
/datum/lore/system/isavaus_gamble = 1,
)
//War God/Soldier Theme
ship_names = list(
"Ares",
@@ -323,14 +422,6 @@
"Yamamoto",
"Bismarck"
)
destination_names = list(
"a SolGov dockyard on Luna",
"a SolGov dockyard in Saint Columbia",
"an anti-piracy outpost in The Bowl",
"a Fleet outpost on the Almach border",
"a Fleet outpost on the Moghes border",
"a Five Arrows outpost in the Sagittarius Heights",
)
/datum/lore/organization/tsc/vey_med
name = "Vey-Medical"
@@ -347,9 +438,37 @@
work = "medical equipment supplier"
headquarters = "Toledo, New Ohio"
motto = ""
legit = 80 //major NT competitor + dirty aliens etc
ship_prefixes = list("VTV" = "transportation", "VMV" = "medical resupply", "VSV" = "research mission", "VRV" = "emergency medical support")
// Diona names
missions = list(
new/datum/lore/mission/prebuilt/medical("VMV"),
new/datum/lore/mission/prebuilt/medical_response("VRV"),
new/datum/lore/mission/prebuilt/scientific("VSV"),
new/datum/lore/mission/prebuilt/transport("VTV")
)
serviced = list(
/datum/lore/system/vir = 15,
/datum/lore/system/new_ohio = 15, //their HQ
/datum/lore/system/gavel = 10,
/datum/lore/system/oasis = 10,
/datum/lore/system/sol = 10,
/datum/lore/system/kauqxum = 10, //activity mostly in the heights
/datum/lore/system/new_seoul = 10,
/datum/lore/system/mahimahi = 10, //im guessing wildly about mahi-mahi i know nothing
/datum/lore/system/sidhe = 5,
/datum/lore/system/qerrvalis = 5, //one of very few organizations that will actually operate out that far
/datum/lore/system/tau_ceti = 5,
/datum/lore/system/alpha_centauri = 5,
/datum/lore/system/kess_gendar = 5,
/datum/lore/system/exalts_light = 5, //delicious almachi medicine
/datum/lore/system/relan = 5,
/datum/lore/system/vounna = 5,
/datum/lore/system/el = 2,
/datum/lore/system/eutopia = 2
)
// Mostly Diona names
ship_names = list(
"Wind That Stirs The Waves",
"Sustained Note Of Metal",
@@ -374,17 +493,12 @@
"Memory of Kel'xi",
"Xi'Kroo's Herald"
)
destination_names = list(
"a research facility in Samsara",
"a SDTF near Ue-Orsi",
"a sapientarian mission in the Almach Rim"
)
/datum/lore/organization/tsc/zeng_hu
name = "Zeng-Hu Pharmaceuticals"
short_name = "Zeng-Hu"
acronym = "ZH"
desc = "Zeng-Hu is an old TSC, based in the Sol system. Until the discovery of Phoron, Zeng-Hu maintained a stranglehold \
desc = "Zeng-Hu is an old TSC, based in the Sol system. Until the discovery of phoron, Zeng-Hu maintained a stranglehold \
on the market for medications, and many household names are patentted by Zeng-Hu-- Bicaridyne, Dylovene, Tricordrizine, \
and Dexalin all came from a Zeng-Hu medical laboratory. Zeng-Hu's fortunes have been in decline as Nanotrasen's near monopoly \
on phoron research cuts into their R&D and Vey-Med's superior medical equipment effectively decimated their own equipment \
@@ -393,10 +507,32 @@
history = ""
work = "pharmaceuticals company"
headquarters = "Earth, Sol"
motto = ""
motto = "When your life is on the line, trust Zeng-Hu." //from the wiki
legit = 85 // major NT competitor
ship_prefixes = list("ZTV" = "transportation", "ZMV" = "medical resupply")
destination_names = list()
missions = list(
new /datum/lore/mission/prebuilt/medical("ZMV"), //they dont really like. do emergency medical shit. they just kind of sell drugs.
new /datum/lore/mission/prebuilt/transport("ZTV"),
new /datum/lore/mission/prebuilt/scientific("ZSV")
)
serviced = list( //some of this list is veering perilously close to just making shit up tbh
/datum/lore/system/vir = 10,
/datum/lore/system/sol = 15,
/datum/lore/system/alpha_centauri = 10,
/datum/lore/system/tau_ceti = 10,
/datum/lore/system/kess_gendar = 10,
/datum/lore/system/new_ohio = 5,
/datum/lore/system/new_seoul = 5,
/datum/lore/system/mahimahi = 5,
/datum/lore/system/saint_columbia = 5, //i imagine they have decent SCG hospital contracts compared to vey-med (foreign) and nanotrasen (super shifty)
/datum/lore/system/jahans_post = 5,
/datum/lore/system/abels_rest = 5,
/datum/lore/system/love = 2,
/datum/lore/system/zhu_que = 2,
/datum/lore/system/sidhe = 2,
/datum/lore/system/vounna = 2 //i imagine theyre mostly being squeezed out of the almachi investment rush given kalediscope and their poor positioning in general
)
/datum/lore/organization/tsc/ward_takahashi
name = "Ward-Takahashi General Manufacturing Conglomerate"
@@ -406,14 +542,54 @@
and even mid-class automobiles a fixture of many households. Less famously, Ward-Takahashi also supplies most \
of the AI cores on which vital control systems are mounted, and it is this branch of their industry that has \
led to their tertiary interest in the development and sale of high-grade AI systems. Ward-Takahashi's economies \
of scale frequently steal market share from Nanotrasen's high-price products, leading to a bitter rivalry in the \
of scale frequently steal market share from NanoTrasen's high-price products, leading to a bitter rivalry in the \
consumer electronics market."
history = ""
work = "electronics manufacturer"
headquarters = ""
motto = ""
legit = 85 //major NT competitor
missions = list(
new /datum/lore/mission/prebuilt/freight("WFV"),
new /datum/lore/mission/prebuilt/transport("WTV"),
new /datum/lore/mission/prebuilt/industrial("WIV"),
new /datum/lore/mission/prebuilt/scientific("WSV"),
new /datum/lore/mission/prebuilt/defense("WDV")
)
serviced = list( //pretty similar to the NT map-- they're NT's biggest competitor on like, half their things
/datum/lore/system/vir = 10, //squeezed out by big NT
/datum/lore/system/sol = 15,
/datum/lore/system/gavel = 10,
/datum/lore/system/oasis = 10,
/datum/lore/system/kess_gendar = 10,
/datum/lore/system/tau_ceti = 10,
/datum/lore/system/alpha_centauri = 10,
/datum/lore/system/new_ohio = 10,
/datum/lore/system/new_seoul = 10,
/datum/lore/system/saint_columbia = 5,
/datum/lore/system/el = 5,
/datum/lore/system/zhu_que = 5,
/datum/lore/system/love = 5,
/datum/lore/system/kauqxum = 5,
/datum/lore/system/sidhe = 5,
/datum/lore/system/mahimahi = 5,
/datum/lore/system/relan = 5,
/datum/lore/system/exalts_light = 5,
/datum/lore/system/rarkajar = 5,
/datum/lore/system/terminus = 5,
/datum/lore/system/eutopia = 5, //computer manufacturers love unfree labor
/datum/lore/system/altair = 5,
/datum/lore/system/phact = 5, //historic ties. the name also helps
/datum/lore/system/mesomori = 2,
/datum/lore/system/arrathiir = 2,
/datum/lore/system/jahans_post = 2,
/datum/lore/system/abels_rest = 2,
/datum/lore/system/raphael = 2,
/datum/lore/system/neon_light = 1
)
ship_prefixes = list("WFV" = "freight", "WTV" = "transport", "WDV" = "asset protection")
ship_names = list(
"Comet",
"Aurora",
@@ -444,9 +620,6 @@
"Milky Way",
"Trojan"
)
destination_names = list(
"A manufacturing facility in the Almach Protectorate"
)
/datum/lore/organization/tsc/bishop
name = "Bishop Cybernetics"
@@ -463,27 +636,70 @@
headquarters = ""
motto = ""
ship_prefixes = list("ITV" = "transportation", "ISV" = "research exchange") //Bishop can't afford / doesn't care enough to afford its own prefixes
destination_names = list(
"a medical facility in Angessa's Pearl"
missions = list(
new /datum/lore/mission/prebuilt/transport("ITV"), //Bishop can't afford / doesn't care enough to afford its own prefixes
new /datum/lore/mission("ISV", list("data exchange", "data collection", "prototype demonstration"), ATC_SCI), //bishop doesn't really, like, stellaris scan anomalies.
)
serviced = list( //wealthy, nearby-ish systems-- theyre not a huge operation and theyre not really going to put up a big boutique in saint columbia
/datum/lore/system/vir = 15,
/datum/lore/system/sol = 10,
/datum/lore/system/oasis = 10,
/datum/lore/system/gavel = 10,
/datum/lore/system/alpha_centauri = 5,
/datum/lore/system/tau_ceti = 5,
/datum/lore/system/new_seoul = 5,
/datum/lore/system/exalts_light = 5, //recklessly extrapolating from the old version of the lore page that they probably have some significant presence here
/datum/lore/system/new_ohio = 2,
/datum/lore/system/altair = 2, //they dont /sell/ here but they produce here
/datum/lore/system/eutopia = 2,
/datum/lore/system/relan = 2,
/datum/lore/system/neon_light = 1
)
/datum/lore/organization/tsc/morpheus
name = "Morpheus Cyberkinetics"
short_name = "Morpheus"
acronym = "MC"
name = "Morpheus Cyberkinetics - Sol Branch"
short_name = "Morpheus Sol"
acronym = "MC-S"
desc = "The only large corporation run by positronic intelligences, Morpheus caters almost exclusively to their sensibilities \
and needs. A product of the synthetic colony of Shelf, Morpheus eschews traditional advertising to keep their prices low and \
and needs. Originally product of the synthetic colony of Shelf, Morpheus eschews traditional advertising to keep their prices low and \
relied on word of mouth among positronics to reach their current economic dominance. Morpheus in exchange lobbies heavily for \
positronic rights, sponsors positronics through their Jans-Fhriede test, and tends to other positronic concerns to earn them \
the good-will of the positronics, and the ire of those who wish to exploit them."
the good-will of the positronics, and the ire of those who wish to exploit them. Morpheus Sol is legally distinct from its \
Shelfican counterpart, though both are notionally headed by the same board of directors."
history = ""
work = "cybernetics manufacturer"
headquarters = "Shelf"
headquarters = "Sophia, El" //ancient discord lore but also just a really reasonable extrapolation from everything
motto = ""
legit = 75 // hey remember that time they blew up a star. and then everything sucked for everyone.
ship_prefixes = list("MTV" = "freight")
// Culture names, because Anewbe told me so.
missions = list(
new /datum/lore/mission/prebuilt/freight("MFV"),
new /datum/lore/mission/prebuilt/transport("MTV"),
new /datum/lore/mission/prebuilt/scientific("MSV"), // this is the MSV We Didn't Do It! on a data collection flight to an anomaly in whythe
new /datum/lore/mission/prebuilt/defense("MDV") //ive been giving defense fleets to every "major" TSC but morph's narrow focus and Obvious Sleeziness means they might not even want one?
)
serviced = list( //pretty flat weighting structure -- a lot of posi-majority systems are on the other end of Sol so it kinda works out that way
/datum/lore/system/vir = 15,
/datum/lore/system/el = 15,
/datum/lore/system/sol = 10,
/datum/lore/system/gavel = 10,
/datum/lore/system/oasis = 10, //somehow i imagine they do not really operate openly in Saint Columbia anymore
/datum/lore/system/kess_gendar = 5,
/datum/lore/system/tau_ceti = 5,
/datum/lore/system/terminus = 10,
/datum/lore/system/raphael = 10,
/datum/lore/system/relan = 10,
/datum/lore/system/exalts_light = 5,
/datum/lore/system/new_ohio = 5,
/datum/lore/system/new_seoul = 5,
/datum/lore/system/zhu_que = 5, //apparently they have a voter farm??
/datum/lore/system/love = 2,
/datum/lore/system/neon_light = 2,
/datum/lore/system/alpha_centauri = 2,
/datum/lore/system/whythe = 1 //oh god
)
ship_names = list(
"Nervous Energy",
"Prosthetic Conscience",
@@ -583,10 +799,7 @@
"Define Offensive",
"Tiffany",
"My Other Ship is A Gestalt",
"NTV HTV WTV ITV ZTV"
)
destination_names = list(
"a trade outpost in Terminus"
"NTV HTV WTV ITV ZTV",
)
/datum/lore/organization/tsc/xion
@@ -601,8 +814,40 @@
headquarters = ""
motto = ""
ship_prefixes = list("XTV" = "hauling", "XFV" = "bulk transport", "XIV" = "resupply")
destination_names = list()
missions = list(
new /datum/lore/mission/prebuilt/freight("XFV"),
new /datum/lore/mission/prebuilt/transport("XTV"),
new /datum/lore/mission/prebuilt/industrial("XIV"),
new /datum/lore/mission/prebuilt/salvage("XIV"),
new /datum/lore/mission/prebuilt/defense("XDV"),
)
serviced = list(
/datum/lore/system/vir = 10,
/datum/lore/system/sol = 15,
/datum/lore/system/alpha_centauri = 20, // they own a fucking moon
/datum/lore/system/tau_ceti = 15,
/datum/lore/system/gavel = 15, //vaguely remember there being obscure lore that said gavel does mining?
/datum/lore/system/new_seoul = 10,
/datum/lore/system/love = 10,
/datum/lore/system/zhu_que = 10,
/datum/lore/system/saint_columbia = 10,
/datum/lore/system/new_ohio = 5,
/datum/lore/system/oasis = 5,
/datum/lore/system/sidhe = 5,
/datum/lore/system/mahimahi = 5,
/datum/lore/system/jahans_post = 5,
/datum/lore/system/abels_rest = 5,
/datum/lore/system/raphael = 5, // they own a celestial body here too
/datum/lore/system/rarkajar = 5, // i love building extractive capital in developing nations
/datum/lore/system/exalts_light = 5,
/datum/lore/system/relan = 2, //i think relan mostly nationalized a bunch of their industries but like. they are not really in a bargaining position rn
/datum/lore/system/eutopia = 2,
/datum/lore/system/vounna = 2,
/datum/lore/system/mesomori = 2,
/datum/lore/system/arrathiir = 2,
/datum/lore/system/isavaus_gamble = 1 //they used to run salvage ops here and might as well keep doing it
)
/datum/lore/organization/tsc/mbt
name = "Major Bill's Transportation"
@@ -615,9 +860,47 @@
work = "courier and passenger transit"
headquarters = "Mars, Sol"
motto = "With Major Bill's, you won't pay major bills!"
annoying = 100 //oh god
ship_prefixes = list("TTV" = "transport", "TTV" = "luxury transit")
destination_names = list()
missions = list(
new /datum/lore/mission/prebuilt/transport("TTV"),
new /datum/lore/mission/prebuilt/freight("TFV"),
new /datum/lore/mission/prebuilt/luxury("TTV")
)
serviced = list( // and THIS is basically just a population map of known space, slightly adjusted for distance
/datum/lore/system/vir = 5, //ppl mostly do not use major bills for in-system stuff, is my sense of it
/datum/lore/system/sol = 25,
/datum/lore/system/alpha_centauri = 20,
/datum/lore/system/tau_ceti = 20,
/datum/lore/system/kess_gendar = 15,
/datum/lore/system/new_seoul = 15,
/datum/lore/system/oasis = 15,//tourism pull
/datum/lore/system/kauqxum = 15,
/datum/lore/system/gavel = 10,
/datum/lore/system/saint_columbia = 10,
/datum/lore/system/mahimahi = 10,
/datum/lore/system/zhu_que = 10,
/datum/lore/system/love = 10,
/datum/lore/system/el = 10,
/datum/lore/system/abels_rest = 10,
/datum/lore/system/rarkajar = 5,
/datum/lore/system/eutopia = 5, //tourism pull
/datum/lore/system/raphael = 5,
/datum/lore/system/jahans_post = 5,
/datum/lore/system/relan = 5,
/datum/lore/system/exalts_light = 5,
/datum/lore/system/terminus = 3,
/datum/lore/system/phact = 3, //people really want to see the dumb castle
/datum/lore/system/qerrvalis = 3,
/datum/lore/system/nyx = 3,
/datum/lore/system/mesomori = 2,
/datum/lore/system/vounna = 2,
/datum/lore/system/arrathiir = 2,
/datum/lore/system/neon_light = 2
)
//TODO: add in other tscs-- kaleidoscope, SAARE, and PCRC for sure but maybe also gilthari,grayson, aether
/datum/lore/organization/tsc/independent
name = "Free Traders"
@@ -626,10 +909,49 @@
history = ""
work = "trade and transit"
headquarters = "N/A"
motto = "N/A"
motto = ""
legit = 85 //kinda amateurish
ship_prefixes = list("IEV" = "prospecting", "IEC" = "prospecting", "IFV" = "bulk freight", "ITV" = "passenger transport", "ITC" = "just-in-time delivery")
destination_names = list()
missions = list( //my sense is theres not really free trader medical or defense craft worth mentioning -- or, i guess more accurately, an "independent defense vessel" is probably just a pirate
new /datum/lore/mission/prebuilt/transport("ITV"),
new /datum/lore/mission/prebuilt/freight("IFV"),
new /datum/lore/mission/prebuilt/industrial("IIV"),
new /datum/lore/mission/prebuilt/salvage("IIV")
)
serviced = list( // basically an adjusted version of the Major Bills chart but a little more evenly weighted, with some more bias towards otherwise underserved systems and with some more off-the-grid locations about it
/datum/lore/system/vir = 20,
/datum/lore/system/sol = 15,
/datum/lore/system/alpha_centauri = 15,
/datum/lore/system/tau_ceti = 15,
/datum/lore/system/zhu_que = 15,
/datum/lore/system/love = 15,
/datum/lore/system/kess_gendar = 10,
/datum/lore/system/new_seoul = 10,
/datum/lore/system/kauqxum = 10,
/datum/lore/system/gavel = 10,
/datum/lore/system/oasis = 10,
/datum/lore/system/el = 10,
/datum/lore/system/abels_rest = 5,
/datum/lore/system/mahimahi = 5,
/datum/lore/system/saint_columbia = 5,
/datum/lore/system/rarkajar = 5,
/datum/lore/system/eutopia = 5,
/datum/lore/system/raphael = 5,
/datum/lore/system/jahans_post = 5,
/datum/lore/system/relan = 5,
/datum/lore/system/exalts_light = 5,
/datum/lore/system/natuna = 5,
/datum/lore/system/casinis_reach = 5, //i laborously enscribed special snowflake code for an authentically immersive communard experience and then have them trading with exactly one org
/datum/lore/system/nyx = 5,
/datum/lore/system/neon_light = 3,
/datum/lore/system/terminus = 3,
/datum/lore/system/phact = 2,
/datum/lore/system/mesomori = 2,
/datum/lore/system/vounna = 2,
/datum/lore/system/arrathiir = 2,
/datum/lore/system/isavaus_gamble = 2 //literally dont even worry officer i super have a permit for this
)
/datum/lore/organization/local_traffic
name = "independent traffic"
@@ -638,10 +960,24 @@
history = ""
work = "trade and transit"
headquarters = "N/A"
motto = "N/A"
autogenerate_destination_names = FALSE
motto = ""
legit = 80 //extremely amateurish
missions = list(
new /datum/lore/mission("ITC", list("local shuttle service", "private transport"), ATC_TRANS),
new /datum/lore/mission("IFC", list("courier", "local delivery", "just-in-time delivery"), ATC_FREIGHT),
new /datum/lore/mission("IIC", list("local maintence", "repair", "in-situ manufacturing"), ATC_INDU),
new /datum/lore/mission("ISC", list("test flight", "local university research", "data collection"), ATC_SCI),
new /datum/lore/mission/prebuilt/luxury("ITC"),
new /datum/lore/mission/prebuilt/medical_response("IMC"),
new /datum/lore/mission/prebuilt/defense_response("IDC"),
new /datum/lore/mission/prebuilt/salvage("IIC")
)
serviced = list(
/datum/lore/system/vir = 1 // the one thing that's uncomplicated about the new system
)
ship_prefixes = list("ITC" = "local shuttle service", "ITC" = "luxury transit", "ITC" = "pleasure cruise", "ITC" = "private transport", "IFC" = "courier", "IFC" = "local delivery", "IIC" = "maintenance", "IMC" = "medical response")
ship_names = list(
"Ambition",
"Blue Moon",
@@ -673,29 +1009,6 @@
"Savik"
)
destination_names = list(
"New Reykjavik",
"Kalmar",
"Ekmanshalvo",
"a settlement on Sif",
"a corporate facility on Sif",
"the Ullran Expanse",
"Kaltsandur",
"Amundsen",
"Londuneyja",
"the Thorvaldsson Plains",
"the NCS Northern Star",
"a location in the Sivian wilderness",
"Sif orbit",
"the rings of Kara",
"the rings of Rota",
"Firnir orbit",
"Tyr orbit",
"Magni orbit",
"a vessel in Vir territory",
"a mining outpost"
)
// Governments
/datum/lore/organization/gov/virgov
@@ -705,7 +1018,7 @@
out of New Reykjavik on Sif. It is a representative democratic government, and a fully recognised member of the \
Confederation.\
<br><br>\
Corporate entities such as Nanotrasen which operate on Sif, in Vir space, or on other bodies in the Vir system must \
Corporate entities such as NanoTrasen which operate on Sif, in Vir space, or on other bodies in the Vir system must \
all comply with legislation as determined by the VGA and SolGov. As a result, any serious criminal offences, \
industrial accidents, or concerning events should be forwarded to the VGA in the event that assistance or \
communication is required from the Vir Police, Vir Defence Force, Vir Interior Ministry, or other important groups."
@@ -713,9 +1026,21 @@
work = "governing body of Vir"
headquarters = "New Reykjavik, Sif, Vir"
motto = ""
autogenerate_destination_names = FALSE
legit = 95 //government
missions = list( //most transport and freight is privatized. sifguard is its own org for whatever reason
new /datum/lore/mission("VGA", list("energy relay", "emergency resupply", "restricted material transport"), ATC_FREIGHT),
new /datum/lore/mission("VGA", list("refugee transport", "prison transport"), ATC_TRANS),
new /datum/lore/mission/prebuilt/diplomatic("VGA"), //local zaddat colonies
new /datum/lore/mission/prebuilt/scientific("VGA")
)
serviced = list(
/datum/lore/system/vir = 10, //unsurprisingly, mostly stays in vir
/datum/lore/system/gavel = 1, //sometimes does some limited local cooperative diplomacy or emergency response
/datum/lore/system/oasis = 1
)
ship_prefixes = list("VGA" = "hauling", "VGA" = "energy relay", "VGA" = "private transport")
ship_names = list(
"Alfred Nobel",
"Anders Celcius",
@@ -744,17 +1069,6 @@
"Thingvellir"
)
destination_names = list(
"New Reykjavik on Sif",
"Kalmar on Sif",
"Ekmanshalvo on Sif",
"a settlement on Sif",
"Radiance Energy Chain",
"a dockyard orbiting Sif",
"a telecommunications satellite",
"Vir Interstellar Spaceport"
)
/datum/lore/organization/gov/solgov
name = "Solar Confederate Government"
short_name = "SolGov"
@@ -775,16 +1089,62 @@
work = "governing polity of humanity's Confederation"
headquarters = "Luna, Sol"
motto = "Nil Mortalibus Ardui Est" // Latin, because latin. Says 'Nothing is too steep for mortals'.
autogenerate_destination_names = TRUE
legit = 95 //government
ship_prefixes = list("SCG-T" = "transportation", "SCG-D" = "diplomatic", "SCG-F" = "freight", "SCG-M" = "medical response")
destination_names = list(
"Venus",
"Earth",
"Luna",
"Mars",
"Titan"
)// autogen will add a lot of other places as well.
missions = list(
new /datum/lore/mission("SCG-T", list("transport", "passenger transport", "prisoner transport", "refugee resettlement", "classified"), ATC_TRANS),
new /datum/lore/mission("SCG-F", list("emergency resupply", "hazardous material transport", "strategic resupply", "classified"), ATC_FREIGHT),
new /datum/lore/mission("SCG-E", list("damage assesment", "data recovery", "classified"), ATC_SALVAGE),
new /datum/lore/mission("SCG-D", list("defense", "patrol", "military response", "joint exercise", "classified"), ATC_DEF),
new /datum/lore/mission/prebuilt/scientific("SCG-S"),
new /datum/lore/mission/prebuilt/diplomatic("SCG-D"), //local zaddat colonies, independent earth nations, internal diplomatic missions to embassies in Sol, abels rest. actual foreign diplomacy happens elsewhere
new /datum/lore/mission/prebuilt/medical_response("SCG-M"),
new /datum/lore/mission/prebuilt/defense_response("SCG-D")
)
serviced = list(
/datum/lore/system/vir = 10,
/datum/lore/system/sol = 25,
/datum/lore/system/alpha_centauri = 20,
/datum/lore/system/tau_ceti = 20,
/datum/lore/system/kess_gendar = 20,
/datum/lore/system/saint_columbia = 20,
/datum/lore/system/jahans_post = 15,
/datum/lore/system/abels_rest = 15,
/datum/lore/system/el = 10,
/datum/lore/system/raphael = 10,
/datum/lore/system/altair = 10,
/datum/lore/system/zhu_que = 10,
/datum/lore/system/love = 5,
/datum/lore/system/isavaus_gamble = 3,
/datum/lore/system/whythe = 2 //not in scg space but im sure they can still get at it
)
//kind of experimental
//lets SCG do diplomacy but not eg military action in foreign systems
//in the future, similar splits could allow corps to have 'core' defense assets they dont send on idiotic military actions to Vounna
//could also be expanded with fluff ala VGA/Sifguard
/datum/lore/organization/gov/solgov/diplo_corps
missions = list(
new /datum/lore/mission/prebuilt/diplomatic("SCG-D")
)
serviced = list(
/datum/lore/system/qerrvalis = 15, //capital systems of major interstellar powers
/datum/lore/system/rarkajar = 15,
/datum/lore/system/new_seoul = 15,
/datum/lore/system/relan = 15,
/datum/lore/system/casinis_reach = 10, //independent single systems
/datum/lore/system/eutopia = 10,
/datum/lore/system/phact = 10,
/datum/lore/system/natuna = 10,
/datum/lore/system/neon_light = 5, // neon light (neon light)
/datum/lore/system/exalts_light = 5, //noncapital systems of major interstellar powers
/datum/lore/system/vounna = 5,
/datum/lore/system/sidhe = 5,
/datum/lore/system/new_cairo = 3, //funny bugs
)
//TODO add 5 Arrows, Protectorate, Pearlshield
//maybe some other flavorful government agencies like the EIO or the GSA or SOFI
// Military
@@ -798,7 +1158,18 @@
work = "Vir Governmental Authority's military"
headquarters = "New Reykjavik, Sif"
motto = ""
autogenerate_destination_names = FALSE // Kinda weird if SifGuard goes to Nyx.
legit = 95 // government
missions = list(
new /datum/lore/mission("VGA-PV", list("defense", "patrol", "military response", "joint exercise"), ATC_DEF),
new /datum/lore/mission/prebuilt/defense_response("VGA-PC")
)
serviced = list(
/datum/lore/system/vir = 10,
/datum/lore/system/gavel = 1,
/datum/lore/system/oasis = 1
)
ship_names = list(
"Halfdane",
@@ -827,26 +1198,4 @@
"Draken",
"Gladan",
"Falken"
)
ship_prefixes = list("VGA-PV" = "military", "VGA-PV" = "patrol", "VGA-PC" = "rescue", "VGA-PC" = "emergency response")
destination_names = list(
"New Reykjavik on Sif",
"Kalmar on Sif",
"Ekmanshalvo on Sif",
"a settlement on Sif",
"a location in the Sivian wilderness",
"a classified location in Vir",
"Sif orbit",
"the rings of Kara",
"the rings of Rota",
"Firnir orbit",
"Tyr orbit",
"Magni orbit",
"a wreck in VirGov territory",
"a military outpost",
"an incursion site within Vir",
"rendezvous to an incursion site in Oasis",
"rendezvous to an incursion site in Gavel"
)
)
+602
View File
@@ -0,0 +1,602 @@
/datum/lore/system
var/name = "" //the system's name
var/desc = "" // short description probably stolen from places on the wiki
var/history = "" //unused, but included for parity with /lore/organizations
var/autogenerate_destinations = TRUE // should probably be true for most systems, might be false for Sif or weird shit like Isavau's / Terminus / Silk
var/planets = list() //planetary destinations will automatically pick an inhabited terrestrial planet to be on. no planet == no planetary destinations. major planets only
var/space_destinations = list("a dockyard", "a station", "a vessel", "a waystation", "a satellite", "a spaceport", "an anomaly", "a habitat", "an outpost", "a facility", "a derelict", "a wreck", "a Skathari hotspot") // should be just fine for most systems, some might want individual entries culled from the autogen
var/planetary_destinations = list("a colony", "a dome", "an outpost", "a city", "a facility", "a ruin") //likewise
var/locations = list() // locations within the system. list of strings for now, might involve fancier logic later
/datum/lore/system/New()
..()
if(!autogenerate_destinations)
return
for(var/i in 1 to 3)// three random places per system per round should be plenty
var/initial = ""
var/mission = list()
if(rand(length(planets))) // equal chance of an event in local space or any individual planet
initial = pick(planetary_destinations)
if(initial in list("an outpost", "a facility", "a commune", "a settlement")) //some of these aren't in the default list but are used down the line
mission = list(ATC_TYPICAL)
else if(initial in list("a ruin"))
mission = list(ATC_SALVAGE)
else
mission = list(ATC_ALL_CIV)
locations += new /datum/lore/location((initial + " on " + pick(planets) + ", " + name), mission)
else
initial = pick(space_destinations)
if(initial in list("a waystation", "a satellite"))
mission = list(ATC_TRANS, ATC_FREIGHT, ATC_DEF, ATC_INDU) //generally unmanned so no medical or science jobs
else if(initial in list("an anomaly"))
mission = list(ATC_DEF, ATC_SCI) //theres kinda only two things to do about mysterious space wedgies)
else if(initial in list("a skathari hotspot"))
mission = list(ATC_DEF, ATC_MED)
else if(initial in list("a dockyard", "a station", "a vessel", "a spaceport", "an outpost", "a facility"))
mission = list(ATC_TYPICAL)
else if(initial in list("a derelict", "a wreck"))
mission = list(ATC_SALVAGE)
else
mission = list(ATC_ALL_CIV)
locations += new /datum/lore/location("[initial] in [name]", mission)
//some of the locations with identical mission types could be compressed with pick expressions in a single location datum to improve weighting
//this usually isn't super necessary and is often outright counterproductive so I haven't really done it
//for reference: ATC_TYPICAL is medical, defense, freight, transport, and industrial missions-- the kind of traffic you'd see to a small settlement or independent colony of little note
//ATC_ALL_CIV has ATC_TYPICAL plus luxury and scientific missions too, so it's the kind of traffic you'd see to a major cultural center
//ATC_ALL has ATC_ALL_CIV plus diplomatic and salvage missions and really isn't appropriate for use in most places
//ATC_SCI might need to get split into academic stuff and 'weird space wedgies'
//SCG major systems
/datum/lore/system/sol
name = "Sol"
desc = "Humanity's heartland. The most densely settled system in space. You know. Sol." //desc isn't currently used for anything so I'm being sparse for all of these in hopes of like, actually completing the project.
autogenerate_destinations = FALSE // it has more sites than literally anywhere else
planets = list("Earth", "Mars", "Luna", "Venus", "Titan", "Pluto") //not used but whatever
locations = list(
new /datum/lore/location("Baghdad on Earth, Sol", list(ATC_LUX)),
new /datum/lore/location("Paradise Bay on Earth, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Atlantis on Earth, Sol", list(ATC_INDU, ATC_SCI)),
new /datum/lore/location("Elevator City on Earth, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Antanavario on Earth, Sol", list(ATC_TYPICAL, ATC_DIPLO)), //they independent baybe
new /datum/lore/location("Paris on Earth, Sol", list(ATC_ALL_CIV, ATC_DIPLO)), //just a reasonable number of existing world cities that would not be underwater or desertified. by which i mean god please check my work on this.
new /datum/lore/location("Detroit on Earth, Sol", list(ATC_ALL_CIV, ATC_DIPLO)), //it's not clear which parts of earth are independent now so let's just assume the diplomatic corps is working on all of them
new /datum/lore/location("Dubai on Earth, Sol", list(ATC_ALL_CIV, ATC_DIPLO)),
new /datum/lore/location("Beijing on Earth, Sol", list(ATC_ALL_CIV, ATC_DIPLO)),
new /datum/lore/location("Dakar on Earth, Sol", list(ATC_ALL_CIV, ATC_DIPLO)),
new /datum/lore/location("Sao Paulo on Earth, Sol", list(ATC_ALL_CIV, ATC_DIPLO)),
new /datum/lore/location("Mojave University on Earth, Sol", list(ATC_SCI)),
new /datum/lore/location("a station orbitting Earth, Sol", list(ATC_ALL_CIV)),
new /datum/lore/location("a colony in Earth-Luna Lagrange Orbit in Sol", list(ATC_ALL_CIV)),
new /datum/lore/location("Tycho on Luna, Sol", list(ATC_ALL_CIV)),
new /datum/lore/location("the Pearlshield Coalition embassy in Tycho, Luna, Sol", list(ATC_DIPLO)), // a lot of embassy spam but most orgs don't do diplomatic missions so they'll be ignored
new /datum/lore/location("the Moghes Hegemony embassy in Tycho, Luna, Sol", list(ATC_DIPLO)),
new /datum/lore/location("the Five Arrows embassy in Tycho, Luna, Sol", list(ATC_DIPLO)),
new /datum/lore/location("the Almach Protectorate embassy in Tycho, Luna, Sol", list(ATC_DIPLO)),
new /datum/lore/location("a skrellian embassy in Little Qerrbalak, Luna, Sol", list(ATC_DIPLO)),
new /datum/lore/location("an independent embassy on Luna, Sol", list(ATC_DIPLO)),
new /datum/lore/location("a dome on Luna, Sol", list(ATC_ALL_CIV)), //padding -- Luna's kind of a big deal relative to its number of named sites
new /datum/lore/location("a city on Luna, Sol", list(ATC_ALL_CIV)),
new /datum/lore/location("a Fleet base on Luna, Sol", list(ATC_TRANS, ATC_FREIGHT, ATC_INDU)), //fleet does their own defense and medical
new /datum/lore/location("the Armstrong Museum and Gift Shop on Luna, Sol", list(ATC_LUX)),
new /datum/lore/location("a Second Cold War battlefield on Luna, Sol", list(ATC_LUX)),
new /datum/lore/location("Tharsis on Mars, Sol", list(ATC_ALL_CIV)), //more padding
new /datum/lore/location("a facility in Tharsis, Mars, Sol", list(ATC_ALL_CIV)),
new /datum/lore/location("Tharsis University on Mars, Sol", list(ATC_SCI)),
new /datum/lore/location("Olympus Mon on Mars, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Shudra's Retreat on Venus, Sol", list(ATC_LUX, ATC_TRANS, ATC_MED)),
new /datum/lore/location("Persephone on Venus, Sol", list(ATC_ALL_CIV)),
new /datum/lore/location("Mariner University on Venus, Sol", list(ATC_SCI)),
new /datum/lore/location("an aerostat on Venus, Sol", list(ATC_ALL_CIV)),
new /datum/lore/location("Nyborg on Pluto, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Makom Kal on Pluto, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Novy Krasnoyarsk on Pluto, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Xanadu on Titan, Saturn subsystem, Sol", list(ATC_ALL_CIV)),
new /datum/lore/location("Seledon on Titan, Saturn subsystem, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Hammar on Titan, Saturn subsystem, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Bolsena on Titan, Saturn subsystem, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Sotra on Titan, Saturn subsystem, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Mercury, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Callisto, Jupiter subsystem, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Ganymede, Jupiter subsystem, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Io, Jupiter subsystem, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("a detention facility on Io, Jupiter subsystem, Sol", list(ATC_MED, ATC_TRANS)),
new /datum/lore/location("Europa, Jupiter subsystem, Sol", list(ATC_ALL_CIV)),
new /datum/lore/location("Titania, Uranus subsystem, Sol", list(ATC_TYPICAL)),
new /datum/lore/location("Oberon, Uranus subsystem, Sol", list(ATC_TYPICAL, ATC_SCI)), //there's ancient discord lore that has a school here??
new /datum/lore/location("Neptune, Sol", list(ATC_TYPICAL))
)
/datum/lore/system/vir
name = "Vir"
desc = "You Are Here. A crossroads system with a tendency towards sleepy isolation."
autogenerate_destinations = FALSE
planets = list("Sif")
locations = list(
new /datum/lore/location("New Rekjavik", list(ATC_ALL_CIV)), //sivian locations don't need 'on sif' and virite locations dont need 'in vir'-- theyre local
new /datum/lore/location("Kalmar", list(ATC_ALL_CIV)),
new /datum/lore/location("Ekmanshalvo", list(ATC_ALL_CIV)),
new /datum/lore/location("a settlement on the Thorvaldsson Plains", list(ATC_TYPICAL)), //padding
new /datum/lore/location("a mining outpost in the Dauthabrekka Mountains", list(ATC_TYPICAL)),
new /datum/lore/location("a corporate facility in Stockholm-Skargard", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("a site in the Ullran Expanse", list(ATC_MED, ATC_DEF, ATC_INDU)),
new /datum/lore/location("a location in the Anomalous Region", list(ATC_SCI)),
new /datum/lore/location("the NLS Southern Cross", list(ATC_DEF, ATC_INDU)),
new /datum/lore/location("the NCS Northern Star", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("Vir Interstellar Spaceport", list(ATC_TYPICAL)),
new /datum/lore/location("Firnir", list(ATC_TYPICAL)),
new /datum/lore/location("Tyr", list(ATC_TYPICAL)),
new /datum/lore/location("Magnai", list(ATC_TYPICAL)),
new /datum/lore/location("the rings of Kara", list(ATC_LUX)),
new /datum/lore/location("the rings of Rota", list(ATC_LUX)),
new /datum/lore/location("the Radiance Energy Chain", list(ATC_FREIGHT, ATC_DEF, ATC_INDU)),
new /datum/lore/location("a corporate colony in the Kara subsystem", list(ATC_ALL_CIV)), //padding-- there should probably be more than one named kara colony anyway
new /datum/lore/location("an independent colony in the Kara subsystem", list(ATC_ALL_CIV)),
new /datum/lore/location("a phoron mine in the Kara subsystem", list(ATC_TYPICAL)),
new /datum/lore/location("a xenoarcheological dig in the Kara subsystem", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("an Incursion derelict in local space", list(ATC_SALVAGE, ATC_DEF, ATC_SCI, ATC_INDU)),
new /datum/lore/location("Colony Bright", list(ATC_TYPICAL, ATC_DIPLO))
)
/datum/lore/system/alpha_centauri
name = "Alpha Centauri"
desc = "The stars closest to Sol and the site of the first extrasolar colonies. The worlds orbitting Proxima Centauri were colonized by stateless refugees\
as part of an early SCG migration program.The habitats orbitting Alpha Centauri proper were colonized by radical terrorists fleeing Solar law enforcement.\
There is some tension."
planets = list("Kishar", "Anshar")
locations = list(
new /datum/lore/location("Kanondaga on Kishar, Alpha Centauri", list(ATC_ALL_CIV)),
new /datum/lore/location("Putiya Nadu on Kishar, Alpha Centauri", list(ATC_ALL_CIV)),
new /datum/lore/location("Oyo-ni-aaye on Kishar, Alpha Centauri", list(ATC_ALL_CIV)),
new /datum/lore/location("Valhalla in Heaven, Alpha Centauri", list(ATC_TYPICAL)),
new /datum/lore/location("Elyisum in Heaven, Alpha Centauri", list(ATC_TYPICAL)),
new /datum/lore/location("the remains of Ragnarok, Alpha Centauri", list(ATC_INDU, ATC_FREIGHT, ATC_SCI)),
new /datum/lore/location("The Rings in Heaven, Alpha Centauri", list(ATC_ALL_CIV)),
new /datum/lore/location("The Angelic College at Heaven, Alpha Centauri", list(ATC_SCI))
)
/datum/lore/system/tau_ceti
name = "Tau Ceti"
desc = "Home to the first discovered garden world other than Earth and the second largest population. Tends to be kind of isolationist and independently minded."
planets = list("Binma", "New Gibson")
locations = list(
new /datum/lore/location("Pelamance, Binma, Tau Ceti", list(ATC_ALL_CIV)), //pulling the list of city states from the Binma page was An Effort. may have missed some
new /datum/lore/location("New Florence, Binma, Tau Ceti", list(ATC_ALL_CIV)),
new /datum/lore/location("Mandala Sur, Binma, Tau Ceti", list(ATC_ALL_CIV)),
new /datum/lore/location("the Kesalon, Binma, Tau Ceti", list(ATC_SCI, ATC_TRANS, ATC_LUX)),
new /datum/lore/location("the Hyperion Orbital Scaffhold around Binma, Tau Ceti", list(ATC_ALL_CIV)),
new /datum/lore/location("Ceti Technical Institute, Binma, Tau Ceti", list(ATC_SCI)),
new /datum/lore/location("Aria, Tau Ceti", list(ATC_INDU, ATC_FREIGHT, ATC_LUX)),
new /datum/lore/location("LL1, Tau Ceti", list(ATC_INDU, ATC_FREIGHT, ATC_TRANS)),
new /datum/lore/location("LL2, Tau Ceti", list(ATC_INDU, ATC_FREIGHT, ATC_TRANS))
)
/datum/lore/system/tau_ceti/New()
planetary_destinations -= "a dome" //binma is fully habitable. i think new gibson also is
..()
/datum/lore/system/kess_gendar
name = "Kess-Gendar"
desc = "A cosmopolitan system hosting the jungle world Nisp and a large orbital economy."
planets = list("Nisp")
locations = list(
new /datum/lore/location("Gorovan on Nisp, Kess-Gendar", list(ATC_ALL_CIV)),
new /datum/lore/location("Janthir on Nisp, Kess-Gendar", list(ATC_ALL_CIV)),
new /datum/lore/location("al-Dubad on Nisp, Kess-Gendar", list(ATC_ALL_CIV)),
new /datum/lore/location("Qixiang on Nisp, Kess-Gendar", list(ATC_ALL_CIV)),
new /datum/lore/location("Theveste on Nisp, Kess-Gendar", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("Eta Kess, Nisp orbit, Kess-Gendar", list(ATC_TYPICAL)),
new /datum/lore/location("Elysium, Kess-Gendar", list(ATC_TYPICAL)),
new /datum/lore/location("Colony Heedful, Kess-Gendar", list(ATC_TYPICAL, ATC_DIPLO))
)
/datum/lore/system/el
name = "El"
desc = "Home system of the positronics and birthplace of the Positronic Rights Movement."
locations = list(
new /datum/lore/location("the First Factory in Sophia, El", list(ATC_LUX, ATC_FREIGHT)),
new /datum/lore/location("Gilthari Casino in Sophia, El", list(ATC_LUX, ATC_TRANS)),
new /datum/lore/location("the Old City in Sophia, El", list(ATC_FREIGHT, ATC_TRANS, ATC_DEF, ATC_SCI, ATC_LUX)),
new /datum/lore/location("the Pleroman Cathedral in Sophia, El", list(ATC_LUX, ATC_TRANS)),
new /datum/lore/location("a habitat block in Sophia, El", list(ATC_FREIGHT, ATC_TRANS, ATC_DEF)), //Sophia doesn't really get medical ships because it's all fucking robots
new /datum/lore/location("a Morpheus Sol facility in Sophia, El", list(ATC_FREIGHT, ATC_TRANS, ATC_DEF, ATC_SCI)), //padding -- autogenerated locations aren't going to play nicely with Sophia's topography
new /datum/lore/location("a datacenter in Sophia, El", list(ATC_FREIGHT, ATC_TRANS, ATC_DEF, ATC_SCI)),
new /datum/lore/location("a dig site in Sophia, El", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("the MAS Sophia Jr. in El", list(ATC_TYPICAL, ATC_SCI))
)
//it is objectively weird as hell that these are "major systems" but they have words on
/datum/lore/system/nyx
name = "Nyx"
desc = "Human-colonized system furthest from Sol. Covered in weird phoron anomalies. Was not treated very nicely by the Incursion."
planets = list("Brinkburn", "Yulecite")
locations = list(
new /datum/lore/location("Moros, Nyx", list(ATC_TYPICAL)),
new /datum/lore/location("Erebus, Nyx", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("Roanoke, Erebus subsystem, Nyx", list(ATC_TYPICAL)),
new /datum/lore/location("the NSS Exodus in Nyx", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("the NAS Crescent in Nyx", list(ATC_TYPICAL)),
new /datum/lore/location("Talon's Bull in Nyx", list(ATC_TYPICAL)),
new /datum/lore/location("Emerald Habitation in Nyx", list(ATC_TYPICAL)),
new /datum/lore/location("the Void Star in Nyx", list(ATC_TRANS, ATC_FREIGHT, ATC_LUX)),
new /datum/lore/location("Euthenia, Nyx", list(ATC_TYPICAL)),
new /datum/lore/location("an Incursion wreck", list(ATC_SALVAGE))
)
/datum/lore/system/altair //hey do you think altair like. survived the incursion actually
name = "Altair"
desc = "Once a promising nearby colonization site, Altair is now a very, very large prison."
space_destinations = list("a station", "a vessel", "a waystation", "an outpost", "an anomaly","a facility")
locations = list(
new /datum/lore/location("The Stack in Altair", list(ATC_TRANS, ATC_MED, ATC_DEF)),
new /datum/lore/location("Becquerel Station in Altair", list(ATC_TYPICAL))
)
/datum/lore/system/altair/New()
space_destinations -= list("a dockyard", "a sattelite", "a spaceport", "a habitat") // altair kind of sucks
..()
//SolGov minor systems
//limiting to systems that are at least, like, kind of described -- stuff like Ganesha and Stove which just have names and map points aren't making it until someone writes them up
/datum/lore/system/jahans_post
name = "Jahan's Post"
desc = "Home to the biggest SCG observation post and an enormous Fleet base. Huge positronic population."
locations = list(
new /datum/lore/location("a weapons platform in Jahan's Post", list(ATC_INDU, ATC_FREIGHT, ATC_TRANS)),
new /datum/lore/location("a dreadnought in Jahan's Post", list(ATC_MED, ATC_INDU, ATC_TRANS, ATC_FREIGHT)), // no sense sending defense assets to a warship at dock
new /datum/lore/location("a battlecruiser in Jahan's Post", list(ATC_MED, ATC_INDU, ATC_TRANS, ATC_FREIGHT)),
new /datum/lore/location("a Fleet construction site in Jahan's Post", list(ATC_MED, ATC_INDU, ATC_TRANS, ATC_FREIGHT)),
new /datum/lore/location("an observatory in Jahan's Post", list(ATC_MED, ATC_INDU, ATC_TRANS, ATC_FREIGHT, ATC_SCI)),
new /datum/lore/location("a classified location in Jahan's Post", list(ATC_TYPICAL)),
new /datum/lore/location("a First Contact derelict in Jahan's Post", list(ATC_SALVAGE))
)
/datum/lore/system/oasis
name = "Oasis"
desc = "A resort system controlled by Gilthari Industries and catering to Skrellian clientele. Part of the GCAB with Vir and Gavel. Famous for hate crimes against the Unathi."
planets = list("Mandrake")
locations = list(
new /datum/lore/location("a vista on Mandrake, Oasis", list(ATC_LUX)),
new /datum/lore/location("a resort on Mandrake, Oasis", list(ATC_LUX, ATC_TRANS, ATC_FREIGHT, ATC_MED)),
new /datum/lore/location("Gilthari Casino in orbit around Mandrake, Oasis", list(ATC_LUX, ATC_TRANS)),
new /datum/lore/location("a Golden Crescent Alliance base in Oasis", list(ATC_TYPICAL)),
new /datum/lore/location("Colony Ardent, Oasis", list(ATC_TYPICAL, ATC_DIPLO))
)
/datum/lore/system/saint_columbia
name = "Saint Columbia"
desc = "Famous for constant attempted secessions, most recently as part of the Almach Crisis. Currently home to an enormous fleet base and a government that is totally not a junta."
locations = list( //transparently this is going to be pretty much identical to the Jahan's Post list with Almach-specific stuff afterwards
new /datum/lore/location("the Iserlohn platform in Saint Columbia", list(ATC_INDU, ATC_FREIGHT, ATC_TRANS)),
new /datum/lore/location("a dreadnought in Saint Columbia", list(ATC_MED, ATC_INDU, ATC_TRANS, ATC_FREIGHT)),
new /datum/lore/location("a battlecruiser in Saint Columbia", list(ATC_MED, ATC_INDU, ATC_TRANS, ATC_FREIGHT)),
new /datum/lore/location("a Fleet construction site in Saint Columbia", list(ATC_MED, ATC_INDU, ATC_TRANS, ATC_FREIGHT)),
new /datum/lore/location("a demonstration in Saint Columbia", list(ATC_DEF, ATC_MED)), // woof
new /datum/lore/location("Barrueco habitation dome, Saint Columbia", list(ATC_TYPICAL)), //ancient, ancient ic-news lore
new /datum/lore/location("a classified location in Saint Columbia", list(ATC_TYPICAL)),
new /datum/lore/location("a caravan in Saint Columbia", list(ATC_TYPICAL)),
new /datum/lore/location("Almach War wreckage in Saint Columbia", list(ATC_SALVAGE))
)
/datum/lore/system/raphael
name = "Raphael"
desc = "Positronic voter farms in the Crypt."
locations = list( //discord indicates they had some Troubles during the incursion but IDK anything fun to give them as a result
new /datum/lore/location("Yod habitation complex, Raphael", list(ATC_ALL_CIV)),
new /datum/lore/location("He habitation complex, Raphael", list(ATC_ALL_CIV)),
new /datum/lore/location("Waw habitation complex, Raphael", list(ATC_ALL_CIV))
)
/datum/lore/system/love
name = "Love"
desc = "Government is basically owned by a bunch of triads. Wellfare's really good though. Home to the ZMR."
planets = list("the planet") // ...ok. so. wiki indicates Love has a habitable world. there is no sense at all what it is called. this will generate locations in the form of "a dome on the planet in Love", which is bizzarely circumspect but basically fine. the alternative is giving them only space sites until someone names the planet.
locations = list(
new /datum/lore/location("a 'facility' in Love", list(ATC_ALL_CIV)), //i find this funny but you can nyx it if you want
new /datum/lore/location("a pharmacy in Love", list(ATC_ALL_CIV)), // this is probably the more serious version of the above
new /datum/lore/location("an independent mecenary outpost in Love", list(ATC_TYPICAL)),
new /datum/lore/location("Colony Daring in Love", list(ATC_TYPICAL, ATC_DIPLO))
)
/datum/lore/system/terminus
name = "Terminus Station"
desc = "A deep space outpost. Major academic institution, inventor of the Terminus language, kind of racist." //super super super needs an Incursion pass lol
autogenerate_destinations = FALSE //its just one really big station
locations = list(
new /datum/lore/location("Terminus Station", list(ATC_ALL_CIV)),
new /datum/lore/location("the Stream Terminus", list(ATC_SCI)),
new /datum/lore/location("a caravan gathering around Terminus Station", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("an academy on Terminus Station", list(ATC_SCI)),
new /datum/lore/location("an observatory on Terminus Station", list(ATC_SCI))
)
//these are the minimally-detailed not-on-the-wiki systems i could find enough discord / code / timeline lore on to be worth including
//might comment these out if you want though I think Gavel has enough stuff to be worth including (and also like written up)
/datum/lore/system/gavel
name = "Gavel"
desc = "Formerly an independent seccessionist nation during the Golden Hour, Gavel is now known mostly for being invaded and kind of wrecked by Almachi forces during the Almach War. Ironic. Part of the GCAB with Vir and Oasis."
planets = list("New Xanadu")
locations = list(
new /datum/lore/location("the NLS Aquarius in Gavel", list(ATC_TYPICAL)),
new /datum/lore/location("a Grayson Manufactories plant in Gavel", list(ATC_TYPICAL)),
new /datum/lore/location("an Almach War derelict in Gavel", list(ATC_SALVAGE)),
new /datum/lore/location("the old Boiling Point stronghold in Gavel", list(ATC_SCI, ATC_LUX, ATC_DEF)),
new /datum/lore/location("Requiem in Gavel", list(ATC_SCI, ATC_LUX)),
new /datum/lore/location("a Fleet base in Gavel", list(ATC_TRANS, ATC_INDU, ATC_FREIGHT)),
new /datum/lore/location("a Golden Crescent Alliance base in Gavel", list(ATC_TYPICAL)),
new /datum/lore/location("Colony Itinerant in Gavel", list(ATC_MED, ATC_TRANS, ATC_FREIGHT, ATC_INDU, ATC_DIPLO))
)
/datum/lore/system/new_ohio
name = "New Ohio"
desc = "Not even being well-placed as the only Sagitarius Heights system to have avoided becoming part of the Five Arrows could have prevented this system from succumbing to the curse of its namesake and becoming the most profoundly boring place anyone has ever seen."
locations = list(
new /datum/lore/location("Colony Intrepid in New Ohio", list(ATC_MED, ATC_TRANS, ATC_FREIGHT, ATC_INDU, ATC_DIPLO)),
new /datum/lore/location("Toledo in New Ohio", list(ATC_ALL_CIV)),
new /datum/lore/location("a Fleet base in New Ohio", list(ATC_TRANS, ATC_INDU, ATC_FREIGHT))
)
/datum/lore/system/abels_rest
name = "Abel's Rest"
desc = "The Hegemony invaded and occupied this system in 2508 and somehow has resisted all human efforts to detail it further"
locations = list(
new /datum/lore/location("a Fleet base in Abel's Rest", list(ATC_TRANS, ATC_INDU, ATC_FREIGHT)),
new /datum/lore/location("an unathi exclave in Abel's Rest", list(ATC_TYPICAL, ATC_DIPLO)),
new /datum/lore/location("a First Contact derelict in Abel's Rest", list(ATC_SALVAGE))
)
/datum/lore/system/zhu_que
name = "Zhu Que"
desc = "It's in the Inner Bowl and, likewise, has resisted all efforts to detail it further."
planets = list("Jade")
locations = list(
new /datum/lore/location("Urgia in Zhu Que", list(ATC_ALL_CIV)), //ancient notes
new /datum/lore/location("a Ward-Takahashi plant in Zhu Que", list(ATC_TYPICAL))
)
/datum/lore/system/zhu_que/New()
planetary_destinations -= "a dome" //Jade is fully habitable
..()
//Almach Protectorate
/datum/lore/system/relan
name = "Relan"
desc = "The first colonized system in the Almach Rim and defacto leader of the floudering Protectorate. Politically divided between Taron, the system's main planet, and Relan, its spacebound population"
planets = list("Taron")
locations = list(
new /datum/lore/location("Maruya in Relan", list(ATC_INDU)),
new /datum/lore/location("New Dayton on Taron, Relan", list(ATC_ALL_CIV)),
new /datum/lore/location("New Garissa on Taron, Relan", list(ATC_TYPICAL)),
new /datum/lore/location("Perez Rest on Taron, Relan", list(ATC_TYPICAL)),
new /datum/lore/location("Parker in Relan", list(ATC_TYPICAL)),
new /datum/lore/location("Abhayaranya in Relan", list(ATC_TYPICAL)),
new /datum/lore/location("Carter Interstellar Spaceport, Relan", list(ATC_ALL_CIV, ATC_DIPLO)),
new /datum/lore/location("a pirate base in Relan", list(ATC_DEF)),
new /datum/lore/location("a Protectorate laboratory in Relan", list(ATC_SCI)),
new /datum/lore/location("a Kaleidoscope Cosmetics office in Relan", list(ATC_TRANS, ATC_SCI)),
new /datum/lore/location("an Almach War derelict in Relan", list(ATC_SALVAGE))
)
/datum/lore/system/relan/New()
locations += list(
new /datum/lore/location("[pick("Fu Xi", "Nuwa", "Shennong")], Xia subsystem, Relan", list(ATC_TYPICAL)), //identically undetailed sattelites get compressed
new /datum/lore/location("[pick("Ubaid", "Badari", "Harappan", "Olmec", "Caral")], Zegev subsystem, Relan", list(ATC_TYPICAL))
)
..()
/datum/lore/system/vounna
name = "Vounna"
desc = "Home system of the Prometheans and member of the Protectorate."
planets = list("Aetolus")
locations = list(
new /datum/lore/location("the Spear of Agrafa in Vounna", list(ATC_TYPICAL)),
new /datum/lore/location("the Prometheus in Vounna", list(ATC_TYPICAL, ATC_DIPLO)),
new /datum/lore/location("the remains of the SGWP Delilah in Vounna", list(ATC_SALVAGE)),
new /datum/lore/location("the Sisyphus in Vounna", list(ATC_TYPICAL))
)
/datum/lore/system/exalts_light
name = "Exalt's Light"
desc = "But everyone just calls it after its planet. A theocratic technocratic autocracy run by Angessa Martei, it lead the push for Almachi independence and has remained recalcitrant ever since."
planets = list("Angessa's Pearl")
locations = list(
new /datum/lore/location("Skylight on Angessa's Pearl", list(ATC_ALL_CIV, ATC_DIPLO)),
new /datum/lore/location("Melt on Angessa's Pearl", list(ATC_TRANS, ATC_FREIGHT)), // melt doesn't get emergency responders
new /datum/lore/location("Angessa's Grave on Angessa's Pearl", list(ATC_TYPICAL, ATC_SCI, ATC_DIPLO)),
new /datum/lore/location("Tsunami on Angessa's Pearl", list(ATC_ALL_CIV, ATC_DIPLO)),
new /datum/lore/location("a demonstration on Angessa's Pearl", list(ATC_DEF, ATC_MED)),
new /datum/lore/location("a Far Kingdoms wreck in Exalt's Light", list(ATC_SALVAGE, ATC_SCI))
)
//Five Arrows
//might need lore ppl to weigh in here
/datum/lore/system/new_seoul
name = "New Seoul"
desc = "The capital system of Five Arrows. Historically wealthy."
locations = list(
new /datum/lore/location("the Five Arrows capital in New Seoul", list(ATC_ALL_CIV, ATC_DIPLO)),
new /datum/lore/location("NSAIST main campus in New Seoul", list(ATC_SCI))
)
/datum/lore/system/sidhe
name = "Sidhe"
desc = "A university and mining town in the Heights, decimated by the Incursion and subsequent Ue'Katish invasions. An ongoing refugee crisis."
planets = list("Abhartach")
locations = list(
new /datum/lore/location("Daoine Institute in Sidhe", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("Sidhe Alsace Fleet Base", list(ATC_TYPICAL)), //it's not really a permenant installation so def and med missions there make sense
new /datum/lore/location("Qux'Xinu on Abhartach, Sidhe", list(ATC_ALL_CIV, ATC_DIPLO)),
new /datum/lore/location("Colony Impossible in Sidhe", list(ATC_TYPICAL)),
new /datum/lore/location("the remains of the Colony Possible in Sidhe", list(ATC_SALVAGE)),
new /datum/lore/location("the School of Tachyon Physics in Sidhe", list(ATC_DEF, ATC_SCI)),
new /datum/lore/location("the XIS Hawthorn in Sidhe", list(ATC_FREIGHT, ATC_TRANS, ATC_DEF)),
new /datum/lore/location("Xe'xi in Sidhe", list(ATC_TYPICAL))
)
/datum/lore/system/kauqxum
name = "Kauq'xum"
desc = "The Skrellian monarchies closest to Sol. Joined the Five Arrows for mutual defense."
/datum/lore/system/mahimahi
name = "Mahi-Mahi"
desc = "Primarily an organic agricultural world, the planet is divided into two distinct economic and cultural sectors."
planets = list("the planet") //its the same dumb thing as Love
//human independents
/datum/lore/system/natuna
name = "Natuna Barisal" //we have unicode support but i think radio might still shit itself
desc = "Seceeded from SolGov over all the racism and casteism. Now it's home to pirates and also got invaded by the Hegemony"
planets = list("Natuna Barisal c") //its this or 'the planet' or 'natuna barisal, natuna barisal'-- the planet and the system share a name
locations = list(
new /datum/lore/location("Dhana in Natuna Barisal", list(ATC_TYPICAL)),
new /datum/lore/location("a human settlement on Natuna Barisal c", list(ATC_TYPICAL, ATC_DIPLO)),
new /datum/lore/location("an Ue-Katish settlement on Natuna Barisal c", list(ATC_TYPICAL, ATC_DIPLO)),
new /datum/lore/location("an abandoned Hegemony outpost on Natuna Barisal c", list(ATC_SALVAGE, ATC_SCI)),
new /datum/lore/location("a Ue-Katish trade ship in Natuna Barisal", list(ATC_TYPICAL, ATC_DIPLO)), //"trade ship"
new /datum/lore/location("an orbital dockyard in Natuna Barisal", list(ATC_TYPICAL)), // "dockyard"
new /datum/lore/location("a survey site on Natuna Barisal c", list(ATC_SCI))
)
/datum/lore/system/natuna/New()
planetary_destinations -= list("a colony", "a city")
planetary_destinations += "a settlement" //this is the language used on the natuna page and i think that makes for fun regional flavor
..()
/datum/lore/system/phact
name = "Phact"
desc = "They built a replica of Edo Castle in a dome. That's really all there is to say on the matter."
planets = list("New Kyoto", "Hokkaido", "Ryukyu")
locations = list(
new /datum/lore/location("the Imperial Palace in New Kyoto, Phact", list(ATC_LUX, ATC_DIPLO))
)
/datum/lore/system/casinis_reach
name = "Casini's Reach"
desc = "Anarchists who have managed to frame-perfect parry every terrible thing to have happened to humanity in the last 100 years."
planets = list("Santiago, Pontes subsystem", "Cotopaxi, Pontes subsystem") //theyre not planets but i think this will work fine
locations = list(
new /datum/lore/location("Rey Pedro, Pontes subsystem, Casini's Reach", list(ATC_TYPICAL)),
new /datum/lore/location("Santa Maria, Pontes subystem, Casini's Reach", list(ATC_TYPICAL)),
new /datum/lore/location("Aconcagua, Pontes subsystem, Casini's Reach", list(ATC_TYPICAL)),
new /datum/lore/location("Campinas, Pontes subsystem, Casini's Reach", list(ATC_TYPICAL)),
new /datum/lore/location("a commune in the Diego Belt, Casini's Reach", list(ATC_TYPICAL)),
new /datum/lore/location("a large commune on Santiago, Pontes subsystem, Casini's Reach", list(ATC_ALL_CIV, ATC_DIPLO)), //kinda kludgy but that lets ppl run diplomatic missions here
new /datum/lore/location("an abandoned mineshaft on Santa Maria, Pontes subsystem, Casini's Reach", list(ATC_MED, ATC_SALVAGE)),
new /datum/lore/location("the Unbound colony on Santa Maria, Pontes subsystem, Casini's Reach", list(ATC_TYPICAL))
)
/datum/lore/system/casinis_reach/New()
planetary_destinations -= list("a colony", "a city")
planetary_destinations += "a commune" //likewise, this is the language used on the casini's reach page
..()
/datum/lore/system/eutopia
name = "Eutopia" //the system is technically called 'Smith' but like. nobody calls it that.
desc = "It's Eutopia baybeee! Slavery is legal! Ancaps will use their power transmission infrastructure to shoot you if you try to violate the NAP by taking them away! Casinos!"
locations = list(
new /datum/lore/location("an automated mine on Friedman, Eutopia", list(ATC_FREIGHT, ATC_DEF, ATC_INDU)),
new /datum/lore/location("a mining complex on Rand, Eutopia", list(ATC_TYPICAL)),
new /datum/lore/location("a farm on Malthus, Ricardo subsystem, Eutopia", list(ATC_TYPICAL)),
new /datum/lore/location("a plastics plant on Malthus, Ricardo subsystem, Eutopia", list(ATC_TYPICAL)),
new /datum/lore/location("The Halo, Eutopia", list(ATC_INDU, ATC_FREIGHT)),
new /datum/lore/location("Kroptkin, Eutopia", list(ATC_TYPICAL, ATC_LUX)), //rich people are weird
new /datum/lore/location("a casino in Eutopia", list(ATC_TYPICAL, ATC_LUX)),
new /datum/lore/location("a resort in Eutopia", list(ATC_TYPICAL, ATC_LUX)),
new /datum/lore/location("a five-star restaurant in Eutopia", list(ATC_TYPICAL)),
new /datum/lore/location("a financial institute in Eutopia", list(ATC_TYPICAL)),
new /datum/lore/location("an auction in Eutopia", list(ATC_TRANS, ATC_MED, ATC_DEF)) //eat the rich
)
/datum/lore/system/neon_light
name = "Neon Light"
desc = "An independent black-market trade ship run by a series of matriarchies. Used to be in Almach. The person responsible for that decision is now a corpse!"
autogenerate_destinations = FALSE // it's just one ship
locations = list(
new /datum/lore/location("the Neon Light", list(ATC_TYPICAL, ATC_LUX, ATC_DIPLO)) //it's just one ship! too much grandularity would be weird here!
)
// nobody should be going to shelf or vystholm so we're skipping them for now
//Pearlshield Coalition
//Will probably want more details from the Catlord
//and lorestaff general since theyre like half human now
/datum/lore/system/rarkajar
name = "Rarkajar"
desc = "The home system of the Tajaran race."
planets = list("Meralar")
locations = list(
new /datum/lore/location("a helium-3 extractor on Keoalar, Rarkajar", list(ATC_TYPICAL)),
new /datum/lore/location("a geological survey site on Aipira, Rarkajar", list(ATC_TYPICAL, ATC_SCI)),
new /datum/lore/location("the SolGov embassy on Meralar, Rarkajar", list(ATC_DIPLO, ATC_TRANS)),
new /datum/lore/location("Nalyar on Meralar, Rarkajar", list(ATC_ALL_CIV)),
new /datum/lore/location("Jormitar on Meralar, Rarkajar", list(ATC_ALL_CIV)),
new /datum/lore/location("Mi'dynh Al'Manq on Meralar, Rarkajar", list(ATC_ALL_CIV))
)
/datum/lore/system/rarkajar/New()
planetary_destinations -= list("a dome", "a colony") //its the core it doesn't have colonies
planetary_destinations += "a town"
..()
/datum/lore/system/arrathiir
name = "Arrathiir"
desc = "The first exo-Rarkajaran Tajaran colony"
planets = list("Alar-Selna")
/datum/lore/system/mesomori
name = "Mesomori"
desc = "The second exo-Rarkajaran Tajaran colony. Technically not even part of the PCA but like. Come on."
//humans aren't generally allowed to go to uueoa-esa or Vengeful Father so we're skipping those
//Skrell stuff
/datum/lore/system/qerrvalis
name = "Qerr'Valis"
desc = "The home system of the Skrell, and some less important aliens."
autogenerate_destinations = FALSE //qerrvalis is a truly stupidly long distance away so a random medical mission to a minor colony isn't going to happen
locations = list( //teshari who?
new /datum/lore/location("a historical site in Qarr'kloa, Qerr'balak, Qerr'Valis", list(ATC_LUX, ATC_TRANS)),
new /datum/lore/location("a historical site in Mi'qoxi, Qerr'balak, Qerr'Valis", list(ATC_LUX, ATC_TRANS)),
new /datum/lore/location("a historical site in Kal'lo, Qerr'balak, Qerr'Valis", list(ATC_LUX, ATC_TRANS)),
new /datum/lore/location("an archeological dig in Qarr'kloa, Qerr'balak, Qerr'Valis", list(ATC_TRANS, ATC_SCI)),
new /datum/lore/location("a bulk phoron distibutor in Mo'glar, Qerr'balak, Qerr'Valis", list(ATC_FREIGHT)),
new /datum/lore/location("the Academy on Gli'morr, Qerr'balak, Qerr'Valis", list(ATC_SCI, ATC_TRANS)),
new /datum/lore/location("a SolGov embassy on Qerr'balak, Qerr'Valis", list(ATC_DIPLO))
)
//skipping Ue-Orsi unless I hear that they have returned to being a place you could go
//weird shit
/datum/lore/system/isavaus_gamble
name = "Isavau's Gamble" // pleas do not give this system to anyone who does not have very serious reasons to be here
desc = "Destroyed completely by the Skathari Incursion. Was previously a totally failed state consisting of one large spaceport, which was very very briefly part of a backroads route from Almach to Sol."
autogenerate_destinations = FALSE //its just wreckage
locations = list(
new /datum/lore/location("an Incursion site in Isavau's Gamble", list(ATC_DEF, ATC_MED)),
new /datum/lore/location("Isavau International Spaceport, Isavau's Gamble", list(ATC_SALVAGE)),
new /datum/lore/location("the Brazen Bull escort fleet in Isavau's Gamble", list(ATC_SALVAGE)), //wiki indicates salvage missions here are common but illegal so they PROBABLY wouldn't be declared on atc. i think its more interesting to do this and imagine tracon either doesn't know, doesn't care, or has been presented legitimate-seeming paperwork
new /datum/lore/location("the wreckage of the XIV Sri Chamarajendra in Isavau's Gamble", list(ATC_SALVAGE)),
new /datum/lore/location("the last known position of the IIV Reimarus in Isavau's Gamble", list(ATC_SALVAGE)),
new /datum/lore/location("debris in Isavau's Gamble", list(ATC_SALVAGE))
)
/datum/lore/system/whythe
name = "Whythe" //SUPER dont give this system to anyone who doesn't have reasons to be here
desc = "Atom bombs and dying stars. Whythe was home to the Wythe Superweapon, the firing of which caused the Far Kingdoms invasion and the Skathari Incursion. Woops. Currently decimated by the Incursion and considered uninhabitable."
autogenerate_destinations = FALSE
locations = list(
new /datum/lore/location("a skathari incursion in Whythe", list(ATC_DEF)),
new /datum/lore/location("the remains of Vigilance Station in Whythe", list(ATC_SALVAGE, ATC_SCI)),
new /datum/lore/location("a classified site in Whythe", list(ATC_DEF, ATC_SALVAGE, ATC_SCI))
)
/datum/lore/system/new_cairo
name = "New Cairo"
desc = "Home to the only known pre-FTL species in contact with the broader galactic community."
autogenerate_destinations = FALSE
locations = list(
new /datum/lore/location("the Embassy to the Khepri People in New Cairo orbit", list(ATC_DIPLO)) //there is nothing to do here but talk to the bugs
)