diff --git a/code/__defines/atc.dm b/code/__defines/atc.dm new file mode 100644 index 0000000000..ee651765b8 --- /dev/null +++ b/code/__defines/atc.dm @@ -0,0 +1,11 @@ +#define ATC_MED "Medical" +#define ATC_TRANS "Transport" +#define ATC_FREIGHT "Freight" +#define ATC_DEF "Defense" +#define ATC_INDU "Industrial" +#define ATC_SCI "Scientific" +#define ATC_TYPICAL list(ATC_MED, ATC_TRANS, ATC_FREIGHT, ATC_DEF, ATC_INDU, ATC_SCI) + +#define ATC_DIPLO "Diplomacy" +#define ATC_LUX "Luxury" +#define ATC_ALL list(ATC_MED, ATC_TRANS, ATC_FREIGHT, ATC_DEF, ATC_INDU, ATC_SCI, ATC_DIPLO, ATC_LUX) \ No newline at end of file diff --git a/code/modules/busy_space/air_traffic.dm b/code/modules/busy_space/air_traffic.dm index ef737142a5..b9f1d98815 100644 --- a/code/modules/busy_space/air_traffic.dm +++ b/code/modules/busy_space/air_traffic.dm @@ -90,7 +90,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.shady) //Chance for them to say yes vs no var/request = pick(requests) var/callname = pick(alt_atc_names) @@ -117,6 +117,8 @@ var/global/datum/lore/atc_controller/atc = new/datum/lore/atc_controller full_request = "[callname], this is [combined_name] on a [mission] [pick(mission_noun)] to [destname], [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(10) || source.motto == "With Major Bill's, you won't pay major bills!") //ten percent chance of postpending the motto, unless it's MBT, in which case it will literally always do that + full_closure += " " + source.motto //Ship sends request to ATC msg(full_request,"[prefix] [shipname]") diff --git a/code/modules/busy_space/locations.dm b/code/modules/busy_space/locations.dm new file mode 100644 index 0000000000..752eb4c62e --- /dev/null +++ b/code/modules/busy_space/locations.dm @@ -0,0 +1,7 @@ +/datum/lore/location + var/desc = "" + var/types = list() + +/datum/lore/location/New(a,b) + desc = a + types = b \ No newline at end of file diff --git a/code/modules/busy_space/organizations.dm b/code/modules/busy_space/organizations.dm index 8299b98000..5e06024447 100644 --- a/code/modules/busy_space/organizations.dm +++ b/code/modules/busy_space/organizations.dm @@ -7,7 +7,8 @@ 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/motto = "" // A motto/jingle/whatever, if they have one. + var/shady = 10 // The odds of them being denied a flight route. mostly a function of their reputation though unfamiliarity with local traffic rules is also a factor 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. @@ -469,18 +470,19 @@ ) /datum/lore/organization/tsc/morpheus - name = "Morpheus Cyberkinetics" - short_name = "Morpheus" + name = "Morpheus Cyberkinetics - Sol Branch" + short_name = "Morpheus Sol" acronym = "MC" 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" - motto = "" + headquarters = "Sophia, El" + motto = "#6 Get bent, meatbags." ship_prefixes = list("MTV" = "freight") // Culture names, because Anewbe told me so. diff --git a/code/modules/busy_space/systems.dm b/code/modules/busy_space/systems.dm new file mode 100644 index 0000000000..c5e8f5593d --- /dev/null +++ b/code/modules/busy_space/systems.dm @@ -0,0 +1,79 @@ +/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/list/planets = list() //planetary destinations will automatically pick an inhabited terrestrial planet to be on. no planet == no planetary destinations. major planets only + var/list/space_destinations = list("a dockyard", "a station", "a vessel", "a waystation", "a satellite", "a spaceport", "an anomaly", "a habitat", "an outpost", "a facility") // should be just fine for most systems, some might want individual entries culled from the autogen + var/list/planetary_destinations = list("a colony", "a dome", "an outpost", "a city", "a facility") //likewise + var/list/locations = list() // locations within the system. list of strings for now, might involve fancier logic later + +/datum/lore/system/New() + ..() + if(autogenerate_destinations) + var/i = 3 + while(i) // 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")) //clunky but w/e + mission = ATC_TYPICAL + else + mission = ATC_ALL + 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 dockyard", "a station", "a vessel", "a spaceport", "an outpost", "a facility")) + mission = ATC_TYPICAL + else + mission = ATC_ALL + locations += new /datum/lore/location((initial + " in " + name), mission) + i-- + +/datum/lore/system/ganesha + name = "Ganesha" + desc = "Can you believe that shit has been on the timeline since like 2016 and its never even made it onto the map. the south dakota of space." + planets = list("It Probably Has One??") + + +/* +/datum/lore/system/vir + name = "Vir" + desc = "Vir's government stabilized comparatively recently, and as a result has a smaller population \ + than most other garden worlds. Its position along the Almach Stream and centralized between the Core Worlds, \ + the Sagittarius Heights, and the Golden Crescent made it a veritable trade hub for many years prior to the \ + Tachyon Downtick, attracting the interest of a number of Trans-Stellar Corporations, most prominently \ + Nanotrasen. Traditionally considered a fairly \"safe\" system, its immense volume of trade has always attracted \ + a number of pirates, and the high concentration of xenoarchaeological artifacts made it a focal point for the \ + devastating Skathari Incursion, which has rendered some regions of the system particularly dangerous to this day, \ + including some of Sif's surface, most notably the Anomalous Region. Vir is the capital system of the Golden Crescent Alliance Bloc." + history = "" + autogenerate_destination_names = FALSE // Vir is detailed enough to not need autogeneration + planets.Add("Sif") //not necessary but nice for parsimony + locations = 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 in Karan orbit", + "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") +*/ \ No newline at end of file diff --git a/polaris.dme b/polaris.dme index 98cbf3aca8..436b3ef896 100644 --- a/polaris.dme +++ b/polaris.dme @@ -29,6 +29,7 @@ #include "code\__defines\admin.dm" #include "code\__defines\ai.dm" #include "code\__defines\appearance.dm" +#include "code\__defines\atc.dm" #include "code\__defines\atmos.dm" #include "code\__defines\callbacks.dm" #include "code\__defines\chemistry.dm" @@ -1566,8 +1567,10 @@ #include "code\modules\blob2\overmind\types\synchronous_mesh.dm" #include "code\modules\blob2\overmind\types\volatile_alluvium.dm" #include "code\modules\busy_space\air_traffic.dm" +#include "code\modules\busy_space\locations.dm" #include "code\modules\busy_space\loremaster.dm" #include "code\modules\busy_space\organizations.dm" +#include "code\modules\busy_space\systems.dm" #include "code\modules\catalogue\atoms.dm" #include "code\modules\catalogue\catalogue_data.dm" #include "code\modules\catalogue\cataloguer.dm"