From a4a05ae4ecd078a0c3286c34ff3c55ce554b0cef Mon Sep 17 00:00:00 2001 From: Neerti Date: Mon, 3 Apr 2017 12:41:59 -0400 Subject: [PATCH] Implements the new Codex. --- code/__defines/misc.dm | 11 + code/modules/busy_space/organizations.dm | 49 ++- code/modules/client/client procs.dm | 1 + .../loadout/loadout_utility.dm | 5 + code/modules/lore_codex/codex.dm | 139 ++++++++ .../lore_data/important_locations.dm | 129 ++++++++ code/modules/lore_codex/lore_data/orgs.dm | 35 ++ .../lore_codex/lore_data/political_parties.dm | 99 ++++++ code/modules/lore_codex/lore_data/species.dm | 301 ++++++++++++++++++ code/modules/lore_codex/pages.dm | 99 ++++++ html/browser/codex.css | 29 ++ html/images/paper_bg.png | Bin 0 -> 4035 bytes icons/obj/library.dmi | Bin 28832 -> 30123 bytes polaris.dme | 6 + 14 files changed, 888 insertions(+), 15 deletions(-) create mode 100644 code/modules/lore_codex/codex.dm create mode 100644 code/modules/lore_codex/lore_data/important_locations.dm create mode 100644 code/modules/lore_codex/lore_data/orgs.dm create mode 100644 code/modules/lore_codex/lore_data/political_parties.dm create mode 100644 code/modules/lore_codex/lore_data/species.dm create mode 100644 code/modules/lore_codex/pages.dm create mode 100644 html/browser/codex.css create mode 100644 html/images/paper_bg.png diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 87c75dfb0a..09f5e81ca0 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -180,3 +180,14 @@ #define ROLE_SYNTHETIC "synthetic" #define ROLE_UNKNOWN "unknown" #define ROLE_EVERYONE "everyone" + +// Canonical spellings of TSCs, so typos never have to happen again due to human error. +#define TSC_NT "NanoTrasen" +#define TSC_HEPH "Hephaestus" // Because everyone misspells it +#define TSC_VM "Vey Med" +#define TSC_ZH "Zeng-Hu" +#define TSC_WT "Ward-Takahashi" +#define TSC_BC "Bishop Cybernetics" +#define TSC_MORPH "Morpheus" +#define TSC_XION "Xion" // Not really needed but consistancy I guess. +#define TSC_GIL "Gilthari" diff --git a/code/modules/busy_space/organizations.dm b/code/modules/busy_space/organizations.dm index 86f88e7ec0..65e57e8a59 100644 --- a/code/modules/busy_space/organizations.dm +++ b/code/modules/busy_space/organizations.dm @@ -2,6 +2,7 @@ /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" @@ -52,11 +53,22 @@ ////////////////////////////////////////////////////////////////////////////////// // TSCs -/datum/lore/organization/nanotrasen +/datum/lore/organization/tsc/nanotrasen name = "NanoTrasen Incorporated" short_name = "NanoTrasen" - desc = "" // Todo: Write this. - history = "" // This too. + 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 \ + 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 \ + also offers one of the most comprehensive medical plans in SolGov space, up to and including cloning \ + and therapy.\ +

\ + NT's most well known products are its phoron based creations, especially those used in Cryotherapy. \ + It also boasts an prosthetic line, which is provided to its employees as needed, and is used as an incentive \ + for newly tested posibrains to remain with the company." + history = "" // To be written someday. work = "research giant" headquarters = "Luna" motto = "" @@ -75,7 +87,7 @@ "Vir Interstellar Spaceport" ) -/datum/lore/organization/nanotrasen/New() +/datum/lore/organization/tsc/nanotrasen/New() ..() // 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]" @@ -84,9 +96,10 @@ -/datum/lore/organization/hephaestus +/datum/lore/organization/tsc/hephaestus name = "Hephaestus Industries" short_name = "Hephaestus" + acronym = "HI" desc = "Hephaestus Industries is the largest supplier of arms, ammunition, and small millitary vehicles in Sol space. \ Hephaestus products have a reputation for reliability, and the corporation itself has a noted tendency to stay removed \ from corporate politics. They enforce their neutrality with the help of a fairly large asset-protection contingent which \ @@ -102,9 +115,10 @@ "a SolGov dockyard on Luna" ) -/datum/lore/organization/vey_med +/datum/lore/organization/tsc/vey_med name = "Vey Medical" short_name = "Vey Med" + acronym = "VM" desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and opperated by Skrell. \ Despite the suspicion and prejudice leveled at them for their alien origin, Vey-Med has obtained market dominance in \ the sale of medical equipment-- from surgical tools to large medical devices to the Oddyseus trauma response mecha \ @@ -120,9 +134,10 @@ ship_prefixes = list("VTV" = "transportation", "VMV" = "medical resupply") destination_names = list() -/datum/lore/organization/zeng_hu +/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 \ 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 \ @@ -137,9 +152,10 @@ ship_prefixes = list("ZTV" = "transportation", "ZMV" = "medical resupply") destination_names = list() -/datum/lore/organization/ward_takahashi +/datum/lore/organization/tsc/ward_takahashi name = "Ward-Takahashi General Manufacturing Conglomerate" short_name = "Ward-Takahashi" + acronym = "WT" desc = "Ward-Takahashi focuses on the sale of small consumer electronics, with its computers, communicators, \ 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 \ @@ -154,9 +170,10 @@ ship_prefixes = list("WTV" = "freight") destination_names = list() -/datum/lore/organization/bishop +/datum/lore/organization/tsc/bishop name = "Bishop Cybernetics" short_name = "Bishop" + acronym = "BC" desc = "Bishop’s focus is on high-class, stylish cybernetics. A favorite among transhumanists (and a bęte noire for \ bioconservatives), Bishop manufactures not only prostheses but also brain augmentation, synthetic organ replacements, \ and odds and ends like implanted wrist-watches. Their business model tends towards smaller, boutique operations, giving \ @@ -171,9 +188,10 @@ ship_prefixes = list("BTV" = "transportation") destination_names = list() -/datum/lore/organization/morpheus +/datum/lore/organization/tsc/morpheus name = "Morpheus Cyberkinetics" short_name = "Morpheus" + 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 \ relied on word of mouth among positronics to reach their current economic dominance. Morpheus in exchange lobbies heavily for \ @@ -236,7 +254,7 @@ ) destination_names = list() -/datum/lore/organization/xion +/datum/lore/organization/tsc/xion name = "Xion Manufacturing Group" short_name = "Xion" desc = "Xion, quietly, controls most of the market for industrial equipment. Their portfolio includes mining exosuits, \ @@ -253,7 +271,7 @@ // Governments -/datum/lore/organization/sifgov +/datum/lore/organization/gov/sifgov name = "Sif Governmental Authority" short_name = "SifGov" desc = "SifGov is the sole governing administration for the Vir system, based in New Reykjavik, Sif. It is a representative \ @@ -274,13 +292,14 @@ "Vir Interstellar Spaceport" ) -/datum/lore/organization/solgov +/datum/lore/organization/gov/solgov name = "Solar Confederate Government" short_name = "SolGov" + acronym = "SCG" desc = "SolGov is a decentralized confederation of human governmental entities based on Luna, Sol, which defines top-level law for their member states. \ Member states receive various benefits such as defensive pacts, trade agreements, social support and funding, and being able to participate \ in the Colonial Assembly. The majority, but not all human territories are members of SolGov. As such, SolGov is a major power and \ - defacto represents humanity on the galatic stage." + defacto represents humanity on the galactic stage." history = "" // Todo work = "governing polity of humanity's Confederation" headquarters = "Luna" @@ -301,7 +320,7 @@ // Military -/datum/lore/organization/sif_guard +/datum/lore/organization/mil/sif_guard name = "Sif Homeguard Forces" // Todo: Get better name from lorepeople. short_name = "SifGuard" desc = "" diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 4463209157..90ecb8eb17 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -290,6 +290,7 @@ 'html/images/ntlogo.png', 'html/images/sglogo.png', 'html/images/talisman.png', + 'html/images/paper_bg.png', 'icons/pda_icons/pda_atmos.png', 'icons/pda_icons/pda_back.png', 'icons/pda_icons/pda_bell.png', diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index f9ffc0eb0b..e7daea42c3 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -13,6 +13,11 @@ path = /obj/item/device/communicator cost = 0 +/datum/gear/utility/codex + display_name = "the traveler's guide to vir" + path = /obj/item/weapon/book/codex + cost = 0 + /datum/gear/utility/folder_blue display_name = "folder, blue" path = /obj/item/weapon/folder/blue diff --git a/code/modules/lore_codex/codex.dm b/code/modules/lore_codex/codex.dm new file mode 100644 index 0000000000..6383020a17 --- /dev/null +++ b/code/modules/lore_codex/codex.dm @@ -0,0 +1,139 @@ +// Inherits from /book/ so it can fit on bookshelves. +/obj/item/weapon/book/codex + name = "The Traveler's Guide to Human Space: Vir Edition" + desc = "Contains useful information about the world around you. It seems to have been written for travelers to Vir, human or not. It also \ + has the words 'Don't Panic' in small, friendly letters on the cover." + icon_state = "codex" + unique = TRUE + var/datum/lore/codex/home = null // Top-most page. + var/datum/lore/codex/current_page = null // Current page or category to display to the user. + var/list/indexed_pages = list() // Assoc list with search terms pointing to a ref of the page. It's created on New(). + var/list/history = list() // List of pages we previously visited. + +/obj/item/weapon/book/codex/initialize() + ..() + generate_pages() + + +/obj/item/weapon/book/codex/proc/generate_pages() + home = new /datum/lore/codex/category/main(src) // This will also generate the others. + current_page = home + indexed_pages = current_page.index_page() + +// Changes current_page to its parent, assuming one exists. +/obj/item/weapon/book/codex/proc/go_to_parent() + if(current_page && current_page.parent) + current_page = current_page.parent + +// Changes current_page to a specific page or category. +/obj/item/weapon/book/codex/proc/go_to_page(var/datum/lore/codex/new_page, var/dont_record_history = FALSE) + if(new_page) // Make sure we're not going to a null page for whatever reason. + current_page = new_page + if(!dont_record_history) + history.Add(new_page) + +/obj/item/weapon/book/codex/proc/quick_link(var/search_word) + for(var/word in indexed_pages) + if(lowertext(search_word) == lowertext(word)) // Exact matches unfortunately limit our ability to perform SEOs. + go_to_page(indexed_pages[word]) + return + +// Returns to the last visited page, based on the history list. +/obj/item/weapon/book/codex/proc/go_back() + if(history.len - 1) + if(history[history.len] == current_page) + history.len-- // This gets rid of the current page in the history. + go_to_page(pop(history), dont_record_history = TRUE) // Where as this will get us the previous page that we want to go to. + +/obj/item/weapon/book/codex/proc/get_tree_position() + if(current_page) + var/output = "" + var/datum/lore/codex/checked = current_page + output = "[checked.name]" + while(checked.parent) + output = "[checked.parent.name] \> [output]" + checked = checked.parent + return output + +/obj/item/weapon/book/codex/proc/make_search_bar() + var/html = {" +
+ + + + + +
+ "} + return html + +/obj/item/weapon/book/codex/attack_self(mob/user) + display(user) + +/obj/item/weapon/book/codex/proc/display(mob/user) + icon_state = "[initial(icon_state)]-open" + if(!current_page) + generate_pages() + + //"common", 'html/browser/common.css' + user << browse_rsc('html/browser/codex.css', "codex.css") + + var/dat + dat = "" + dat += "[src.name] ([current_page.name])" + dat += "" + dat += "" + + dat += "" + dat += "[get_tree_position()]
" + dat += "[make_search_bar()]
" + dat += "
" + dat += "

[current_page.name]

" + dat += "
" + if(current_page.data) + dat += "[current_page.data]
" + dat += "
" + if(istype(current_page, /datum/lore/codex/category)) + dat += "
" + // dat += "
    " + var/datum/lore/codex/category/C = current_page + for(var/datum/lore/codex/child in C.children) + // dat += "[child.name]
    " // Todo, change into pretty CSS buttons. + dat += "[child.name]" + // dat += "
" + dat += "
" + dat += "
" + if(history.len - 1) + dat += "
\[Go Back\]" + if(current_page.parent) + dat += "
\[Go Up\]" + if(current_page != home) + dat += "
\[Go To Home\]" + dat += "
" + user << browse(dat, "window=the_empress_protects;size=600x550") + onclose(user, "the_empress_protects", src) + +/obj/item/weapon/book/codex/Topic(href, href_list) + . = ..() + if(.) + return + + + if(href_list["target"]) // Direct link, using a ref + var/datum/lore/codex/new_page = locate(href_list["target"]) + go_to_page(new_page) + else if(href_list["search_query"]) + quick_link(href_list["search_query"]) + else if(href_list["go_to_parent"]) + go_to_parent() + else if(href_list["go_back"]) + go_back() + else if(href_list["go_to_home"]) + go_to_page(home) + else if(href_list["quick_link"]) // Indirect link, using a (hopefully) indexed word. + quick_link(href_list["quick_link"]) + else if(href_list["close"]) + icon_state = initial(icon_state) + usr << browse(null, "window=the_empress_protects") + return + display(usr) \ No newline at end of file diff --git a/code/modules/lore_codex/lore_data/important_locations.dm b/code/modules/lore_codex/lore_data/important_locations.dm new file mode 100644 index 0000000000..7fb72cebc6 --- /dev/null +++ b/code/modules/lore_codex/lore_data/important_locations.dm @@ -0,0 +1,129 @@ +/datum/lore/codex/category/important_locations + name = "Important Locations" + data = "There are several locations of interest that you may come across when visiting the system Vir." + children = list( + /datum/lore/codex/page/vir, + /datum/lore/codex/page/radiance_energy_chain, + /datum/lore/codex/page/firnir, + /datum/lore/codex/page/tyr, + /datum/lore/codex/page/sif, + /datum/lore/codex/page/vir_interstellar_spaceport, + /datum/lore/codex/page/southern_cross, + /datum/lore/codex/page/magni, + /datum/lore/codex/page/kara, + /datum/lore/codex/page/northern_star, + /datum/lore/codex/page/rota + ) + +/datum/lore/codex/page/vir/add_content() + name = "Vir (Star)" + keywords += list("Vir") + data = "Vir is an A-type main sequence star with 81% more mass than Sol (the humans' home star), and almost nine times as bright. It \ + has a white glow, and a diameter that is about 34% larger than Sol. It has six major planets in its orbit.\ +

\ + Vir is mainly administered on [quick_link("Sif")] by the [quick_link("Sif Governmental Authority")], as Sif \ + was the first planet to be colonized, however SGA lays claim to all planets orbiting Vir. The planets \ + are named after figures in ancient human mythology (Norse), due to the original surveyor for the system deciding to do so. \ + Some installations carry on this tradition." + +/datum/lore/codex/page/radiance_energy_chain/add_content() + name = "Radiance Energy Chain (Artificial Satellites)" + keywords += list("Radiance Energy Chain") + data = "A sparse government-owned chain of automated stations exists between Firnir and the star itself. The idea is based on \ + an ancient design that was pioneered at Sol. The stations are heavily shielded from the stellar radiation, and feature massive \ + arrays of photo-voltaic panels. Each station harvests energy from Vir using the solar panels, and sends it to other areas of \ + the system by beaming the energy to several relay stations farther away from the star, typically with a large laser.\ +

\ + These stations are generally devoid of life, instead, they are operated mainly by [quick_link("drones")], with maintenance performed \ + by [quick_link("positronic")] equipped units in shielded chassis, or very brave humans in voidsuits that protect from extreme heat, and radiation. There are \ + currently 19 stations in operation." + +/datum/lore/codex/page/firnir/add_content() + name = "Firnir (Terrestrial Planet)" + keywords += list("Firnir") + data = "Firnir is the first planet of Vir, tidally locked to it, and having temperatures in excess of 570 degrees \ + kelvin (299°C) on the day side has caused this planet to go mostly ignored." + +/datum/lore/codex/page/tyr/add_content() + name = "Tyr (Terrestrial Planet)" + keywords += list("Tyr") + data = "The second closest planet to [quick_link("Vir")], this planet has a high concentration of minerals inside its crust, as well as active volcanism and plate tectonics. \ + The temperature on the surface can reach up to 405 degrees kelvin (132°C), which has deterred most people from the planet, except for two [quick_link("TSC", "TSCs")], \ + Greyson Manufactories and [quick_link("Xion Manufacturing Group")]. In orbit, the two companies each have a space station, used to coordinate and \ + control their stations on the surface without having to suffer the intense heat. Xion's station also doubles as a control and oversight facility for their \ + [quick_link("drones","autonomous mining drones")].\ +

\ + Remnants of both Greyson and Xion's mining operations dot the surface, as well as ruins of mining \ + outposts build by an unknown alien civilization, which researchers have noted it appears to be similar to ruins found inside the rings of [quick_link("Kara")] \ + and on [quick_link("Sif")] itself. Below the surface of Tyr are many natural cave systems, dangerous and easy to get lost inside, which both companies make heavy \ + use of. A noted rivalry exists between the two mining giants, as well as with smaller groups more interested in the xenoarcheological value of the alien ruins.\ +

\ + The very high temperatures, dangerous (sometimes magma-filled) caves, and the only presence of civilization being mining operations has made tourism \ + for Tyr mostly non-existent, with the exception of explorers who specifically seek out hellish landscapes, which are plentiful with all the ruins, \ + volcanoes, twisting caves, and general lawlessness. The occasional remains of previous explorers near certain hotspots somehow does not deter them." + +/datum/lore/codex/page/sif/add_content() + name = "Sif (Terrestrial Planet)" + keywords += list("Sif") + data = "Sif is a terrestrial planet and third closest planet to Vir. It possesses oceans, a breathable atmosphere, \ + a magnetic field, weather, and acceptable gravity. It is currently the capital planet of Vir. Its center of government is the \ + equatorial city and site of the first settlement, New Reykjavik, which houses the [quick_link("Sif Governmental Authority")].\ +

\ + Sif has many desirable traits which made it the first planet to be colonized in Vir, however it also has various quirks which \ + may disorient humans used to conditions on planet Earth. Atmospheric pressure is lower than 'normal', which may cause difficulty \ + breathing if you are used to climate controlled artifical habitats or higher pressure planets. The gravity is also slightly lower, at \ + only 90% the strength of planet Earth's gravity. You may need to keep two clocks if you plan to visit \ + or live on Sif, as the planet takes over 32 hours to complete one day. A Sif year also takes just under five Earth years." + +/datum/lore/codex/page/vir_interstellar_spaceport/add_content() + name = "Vir Interstellar Spaceport (Artificial Satellite)" + keywords += list("Vir Interstellar Spaceport") + data = "The Vir Interstellar Spaceport is a large facility in orbit of the planet [quick_link("Sif")] which handles the loading and \ + unloading, refuelling, and general maintenance of large spacecraft. The main structure is owned by the \ + [quick_link("Sif Governmental Authority")], but individual offices, docking/loading bays, and warehouses are often leased to individuals \ + or organisations. The position of the spaceport allows it to function not only as a key node for transport inside the Vir \ + system, especially to and from the planet Sif, but also as a key stopping point interstellar craft travelling via Vir which need refuelling. \ +

\ + The station itself is mostly designed around its logistical and commercial needs, and although other strategically-placed \ + nearby facilities owned by a mixture of corporations and entities may possess habitation space, the port itself is not \ + designed to be a living habitat - its proximity to the surface of Sif makes transport of people and materials to and from \ + the facility and the planet via shuttle extremely cost-efficient." + +/datum/lore/codex/page/southern_cross/add_content() + name = "Southern Cross (Artificial Satellite)" + keywords += list("Southern Cross") + data = "The Southern Cross is a telecommunications and supply hub for [quick_link("NanoTrasen")], named after it's companion satellite, the \ + [quick_link("Northern Star")]. It acts as a logistics hub for the smaller installations NanoTrasen has in Sif orbit and on the surface." + +/datum/lore/codex/page/magni/add_content() + name = "Magni (Terrestrial Planet)" + keywords += list("Magni") + data = "Outside of the habitable zone, the barren world Magni is generally at 202 kelvin (-71°C)." + +/datum/lore/codex/page/kara/add_content() + name = "Kara (Gas Giant)" + keywords += list("Kara") + data = "A gas giant, with a large number of moons. Captured asteroids, to be specific. Many of the asteroids are theorized \ + to be the remnants of a much larger moon that was ripped apart by Kara, long ago. Curerntly, a large number of these \ + asteroids are being used by many different businesses, and some governmental infrastructure has been built. The most prominent \ + asteroid installation is the [quick_link("Northern Star", "NCS Northern Star")], a general purpose colony owned and operated by \ + [quick_link("NanoTrasen")]. The mid-atmospheric temperature of the gas giant averages to around 150 kelvin (-108°C)." + +/datum/lore/codex/page/northern_star/add_content() + name = "Northern Star (Artificial Satellite)" + keywords += list("Northern Star", "NCS Northern Star") + data = "One of the most prominent installations in the [quick_link("Kara")] subsystem, the Northern Star is owned \ + and operated by [quick_link("NanoTrasen")]. It was originally built to service the various mining operations \ + occurring within Kara's ring, however it has grown into what it is today due to what was discovered inside \ + the interior of the rock. Both phoron and alien artifacts were found inside, catapulting the asteroid outpost \ + into the main attraction inside the subsystem.\ +

\ + Today it houses a population of civilians, whom work to maintain \ + the colony and support the local mining industry. The colony also has managed to achieve a degree of \ + self-sufficiency, and possesses many amenities and features that most other asteroid bases in the \ + subsystem lack." + +/datum/lore/codex/page/rota/add_content() + name = "Rota (Gas Giant)" + keywords += list("Rota") + data = "An ice giant, with a beautiful ring system circling it. The average temperature for it is 165 kelvin (-157°C)." \ No newline at end of file diff --git a/code/modules/lore_codex/lore_data/orgs.dm b/code/modules/lore_codex/lore_data/orgs.dm new file mode 100644 index 0000000000..839db448a3 --- /dev/null +++ b/code/modules/lore_codex/lore_data/orgs.dm @@ -0,0 +1,35 @@ +// Pulls data from organizations data +/datum/lore/codex/category/auto_org + var/desired_type = null // Exclude other types of organizations + +/datum/lore/codex/category/auto_org/New(var/new_holder, var/new_parent) + ..(new_holder, new_parent) + for(var/path in loremaster.organizations) + var/datum/lore/organization/O = loremaster.organizations[path] + if(!(istype(O, desired_type))) + continue + var/datum/lore/codex/page/P = new(holder, src) + if(!O.name) // Probably the base type, don't make a page for it. + continue + P.name = O.name + P.keywords.Add(O.name, O.short_name) + if(O.acronym) + P.keywords.Add(O.acronym) + P.data = O.desc + children.Add(P) + +/datum/lore/codex/category/auto_org/tsc + name = "Trans-Stellar Corporations" + data = "By definition, TSCs are companies which span multiple star systems, however the term is generally reserved for \ + the biggest and most influential of them all. Some people also categorize the different TSCs into 'major' and 'minor' TSCs." + desired_type = /datum/lore/organization/tsc + +/datum/lore/codex/category/auto_org/gov + name = "Governments" + desired_type = /datum/lore/organization/gov + +/* +/datum/lore/codex/category/auto_org/mil + name = "Militaries" + desired_type = /datum/lore/organization/mil +*/ \ No newline at end of file diff --git a/code/modules/lore_codex/lore_data/political_parties.dm b/code/modules/lore_codex/lore_data/political_parties.dm new file mode 100644 index 0000000000..29dd7fb741 --- /dev/null +++ b/code/modules/lore_codex/lore_data/political_parties.dm @@ -0,0 +1,99 @@ +/datum/lore/codex/category/political_factions + name = "Political Factions" + data = "Those wishing to immigrate to somewhere in Vir, or otherwise plan to stay for a long time should get to know human politics. \ + There are presently three major political parties that exist throughout SolGov space, being the Icarus Front, the Shadow Coalition, and \ + the Sol Economic Organization, and several smaller ones which tend to align themselves among one of the major parties. In the Vir system, the \ + Icarus Front's influence is much less than somewhere closer to Sol, and the other two parties being more popular." + children = list( + /datum/lore/codex/page/icarus_front, + /datum/lore/codex/page/shadow_coalition, + /datum/lore/codex/page/sol_economic_organization, + /datum/lore/codex/page/mercurials, + /datum/lore/codex/page/positronic_rights_group, + /datum/lore/codex/page/church_of_unitarian_god, + /datum/lore/codex/page/friends_of_ned, + /datum/lore/codex/page/multinational_movement, + /datum/lore/codex/page/free_trade_union, + ) + + +/datum/lore/codex/page/icarus_front/add_content() + name = "Icarus Front" + keywords += list("Icarus", "IF") + data = "The political group with the most seats in the [quick_link("SolGov")] legislature and control over the heartworlds of humanity, the Icarus Front is a \ + conservative body with a long history, tracing its linage back to the political unrest that created the Sol Confederate Government. Icarus calls \ + for severe restrictions on \"transformative technologies\" any technology with the power to fundamentally alter humanity, such as advanced artificial \ + intelligence and human genetic augmentation. Previously an unbeatable political force, recent changes have lead to its power backsliding. It remains a \ + popular party among those from Sol, Tau Ceti, and other heavily settled systems." + +/datum/lore/codex/page/shadow_coalition/add_content() + name = "Shadow Coalition" + data = "A disorganized liberal party, originating in an anti-[quick_link("Icarus")] shadow government. 'Shadow' in this case, refers to acting as an opposition \ + party to the Icarus majority. The Shadow Coalition calls for the lifting of certain Icarus-restricted technologies, especially medical \ + technologies with the ability to drastically improve quality of life. While fractious and prone to infighting, the Shadow Coalition and affiliated \ + parties remain the most popular political groups in the large towns and small cities of humanity, including Vir." + +/datum/lore/codex/page/sol_economic_organization/add_content() + name = "Sol Economic Organization" + keywords += list("SEO") + data = "The newest force in [quick_link("SolGov")] politics, backed by the massive [quick_link("TSC", "Trans-Stellar Corporations")] and the [quick_link("Free Trade Union")], \ + as well as former [quick_link("Icarus")] warhawks. The SEO campaigns for minimal regulation on the development of new technologies, seeing them as anti-capitalist and \ + inefficient, and have gained significant traction among futurists, those wishing for a more impressive human military, and employee-residents of TSC \ + corporate towns, such as the [quick_link("Northern Star")].\ +

\ + [quick_link("Nanotrasen")], a R&D firm, is generally regarded as the most enthusiastic supporter of the SEO. Other contributing TSCs include the next six largest corporations \ + in human space: "+quick_link(TSC_WT)+" GMC, "+TSC_GIL+" Exports, Grayson Manufacturing Ltd., Aether Atmospherics and Recycling, [quick_link("Zeng-Hu Pharmaceuticals")] and "+TSC_HEPH+" \ + Industries, as well as, notably, [quick_link("Vey-Med")]. The Free Trade Union's participation in the SEO is a contentious issue that many of its members disagree with, but \ + most FTU representatives caucus with the SEO." + +/datum/lore/codex/page/mercurials/add_content() + name = "Mercurials" + keywords += list("Mercurial") + data = "[quick_link("Positronics")] and the rare augmented human who want to follow a different cultural path from the rest of humanity, viewing themselves as fundamentally \ + separate from unaugmented biological humans. Previously an illegal movement, proscribed due to the preceived dangers of unfettered self-modification and the threat \ + posed by positronics without human values in mind, self-described Mercurials still often find themselves persecuted or used by bioconservatives as scapegoats \ + and 'boogiemen'. As a technoprogressive group, they tend to vote along with the [quick_link("Shadow Coalition")]." + +/datum/lore/codex/page/positronic_rights_group/add_content() + name = "Positronic Rights Group" + keywords += list("PRG") + data = "The other side of the coin from the [quick_link("Mercurials")], the PRG wants full integration of [quick_link("positronics")] into human society, with equal wages, opportunities \ + to advancement, and representation in the media. Their current pet cause is a tax credit for humans who wish to adopt or sponsor the creation of a positronic, \ + a measure supported due to its potential to counteract the aging positronic population and to bring the average positronic closer to human culture. They tend to vote \ + along with the [quick_link("Shadow Coalition")], due to being technoprogressive." + +/datum/lore/codex/page/church_of_unitarian_god + name = "The Church of the Unitarian God" + keywords = list("Unitarian Church") + data = "An often-imperfect fusion of various human religions such as Christianity, Islam, and Judaism, the Unitarian Church represents the dim voice of \ + religion in a time of increased atheism. With the threat of singularity looming once more, their power is increasing with more converts and more donations, \ + and they use this power to protect the fundamental human soul from corruption by dangerous technologies and to spread their faith among aliens and positronics, \ + who they view as fellow children of God. They tend to side with bioconservatives." + +/datum/lore/codex/page/friends_of_ned/add_content() + name = "Friends of Ned" + keywords += list("Ned") + data = "The metaphorical reincarnation of a human named Ned Ludd's original Luddites, disdaining that name's negative connotations and embracing their original \ + purpose-- the restriction of technology that poses a threat to people's livelihoods. In addition to [quick_link("Icarus Front")] technological restrictions, the Friends demand \ + the complete prohibition of [quick_link("Drone", "drone intelligence and AGI research")], with most also opposing the [quick_link("FTU", "FTU's")] plans for wide spread \ + nanofabrication deployment. While the party refrains from making a definitive statement on their view of [quick_link("positronics")], many Friends have taken it upon themselves to label \ + them \"anti-labor technology\", and nominally-unsanctioned lynchings have marred the faction's reputation." + +/datum/lore/codex/page/multinational_movement/add_content() + name = "Multinational Movement" + keywords += list("Multinational") + data = "The barely-unified voice of [quick_link("SolGov", "SolGov's")] various independence movements, encompassing Terran governments wishing for a lighter touch \ + from SolGov, fringe colonies who balk at the call of distant masters, anarchist movements who want the freedom to live without government oversight, and the rare \ + Trans-Stellar who no longer see a benefit in working with SolGov. Full colonial independence is still a political impossibility so long as the \ + [quick_link("Icarus Front")] holds any sway, and so the Movement is focused primarily on securing more autonomy in governance, although a growing revolutionary sub-group \ + wants to force their change on the government en masse. The Multinational Movement finds themselves in an uneasy alliance with the [quick_link("SEO")], connected by their corporate, \ + fringe-system membership, and often provide a dissenting voice to SEO's war hawks." + +/datum/lore/codex/page/free_trade_union/add_content() + name = "Free Trade Union" + keywords += list("FTU") + data = "A softer counterpoint to the [quick_link("SEO")], the FTU is a party representing small businesses, workers' syndicates, and trade unions, who advocate for government \ + measures to reduce the amount of power held by the TSCs. In many ways a holdover from the days before the [quick_link("Shadow Coalition")], where corporate malfeasance took \ + the place of technological development as the primary issue of debate, the FTU has found itself adopting technological positions similar to the SEO as a matter \ + of pragmatism, although the views of individual members vary. The FTU is known for their intense lobbying of SolGov to add tax rebates to the purchases of \ + personal lathes and the creation of open-source firmware for experimental autolathes, but have thus far found little success." \ No newline at end of file diff --git a/code/modules/lore_codex/lore_data/species.dm b/code/modules/lore_codex/lore_data/species.dm new file mode 100644 index 0000000000..fa8c6d9615 --- /dev/null +++ b/code/modules/lore_codex/lore_data/species.dm @@ -0,0 +1,301 @@ +/datum/lore/codex/category/species + name = "Species" + data = "There are many different types of lifeforms (both alive and artificial) in the galaxy, which you may find inside Vir." + children = list( + /datum/lore/codex/page/human, + /datum/lore/codex/page/skrell, + /datum/lore/codex/page/unathi, + /datum/lore/codex/page/tajaran, + /datum/lore/codex/page/diona, + /datum/lore/codex/category/teshari, + /datum/lore/codex/category/positronic, + /datum/lore/codex/category/drone + ) + +/datum/lore/codex/page/human/add_content() + name = "Human" + keywords += list("Humanity") + data = "Humans are a race of 'ape'-like creatures from the continental planet Earth in the Sol system. They are the primary driving \ + force for rapid space expansion, owing to their strong, expansionist central government and opportunistic [quick_link("TSC","Trans-Stellar Corporations")]. \ + The prejudices of their 21st century history have mostly given way to bitter divides on the most important issue of the times- technological \ + expansionism.\ +

\ + While most humans have accepted the existence of aliens in their communities and workplaces as a fact of life, exceptions abound. \ + While more culturally diverse than most species, humans are generally regarded as somewhat technophobic and isolationist by members \ + of other species." + +/datum/lore/codex/page/skrell + name = "Skrell" + keywords = list("Skrellian") + data = "The Skrell are a species of amphibious humanoids, distinguished by their gelatinous appearance and head tentacles. \ + Skrell come from the world of Sirisai (called Qerr'balak by Skrell), a humid planet with plenty of swamps and jungles. Currently more technologically advanced \ + than the humans, they emphasize the study of the mind above all else.\ +

\ + Gender has little meaning to Skrell outside of reproduction, and in fact many other species have a difficult time telling the difference \ + between male and female Skrell apart. The most obvious signs (voice in a slightly higher register, longer head-tails for females) are never \ + a guarantee. Due to their scientific focus of the mind and body, Skrell tend to be more peaceful and their colonization has been slow, swiftly \ + outpaced by the humans. For humans, they were their first contact sentient species, and are their longest, and closest, ally in space." + +/datum/lore/codex/page/unathi + name = "Unathi" + data = "The author wishes to apologize to the reader, as they currently lack enough knowledge of the Unathi to write about them, as they are \ + rather rare inside Vir." // Replace this when Anewbe finishes the lizard rewrite. + /* + data = "Raging in from Moghes, the Unathi are a race of tall, reptilian humanoids that possess both crocodile-like and serpent-like features. \ + They are a proud, warlike species that favors honor and strength, their home, Moghes, is a desert planet but was once believed to be full of life. \ + Of all the currently known sentient species, the Unathi are the most unequal in gender with females tending to be property of the males. Most Unathi \ + outside of Moghes tend to be exiles however, and with influence of other species the gender difference is not nearly as pronounced. Unathi were \ + humanity's second contact, and despite their aggressive nature, seem to get along well enough with humanity, though are often considered to be \ + 'second-class' citizens and are rarely seen in jobs other than where muscle is needed." // This probably needs to be updated. + */ + +/datum/lore/codex/page/tajaran + name = "Tajaran" + keywords = list("Tajara") + data = "The Tajara are a race of humanoid mammalian aliens from Meralar, the fourth planet of the Rarkajar star system. Thickly furred and protected \ + from cold, they thrive on their subarctic planet, where the only terran temperate areas spread across the equator and tropical belt. \ + With their own share of bloody wars and great technological advances, the Tajaran are a proud kind. They fiercely believe they belong \ + among the stars and consider themselves a rightful interstellar nation, even if the humans helped them to actually achieve superluminal \ + speeds with Bluespace FTL drives. Relatively new to the galactic stage, their contacts with other species are aloof, but friendly. \ + Among these bonds, Humans stand out as valued trade partners and maybe even a friend." + +/datum/lore/codex/page/diona/add_content() + name = "Diona" + keywords += list("Dionaea") + data = "The Dionaea are a group of omnivorous, slow-metabolism plantlike organisms that are in fact clusters of individual, smaller organisms. \ + They exhibit a high degree of structural flexibility, and come in a wide variety of shapes and colors to reflect the intelligence of each individual \ + creature. They were discovered by the [quick_link("Skrell")] in 2294CE, not on a planet, but in open space between three stars, a figurative hell that made it \ + difficult to discover, much less contact them.\ +

\ + Dionaea spread by seeds and are asexual, no gender. When grown into their small 'nymph' state, they are known to eat large amounts of dead plant \ + matter and fertilize plants while they learn from those around them, and as they grow further, they merge into larger and larger forms. It is not \ + unheard of for Skrell explorers to be traveling in a ship composed of habitat modules and engines of Skrell design and the body formed by their \ + Diona allies to warble across the cosmos.\ +

\ + Introduced by the Skrell, and quite slow and peaceful, the Diona share good relations with the other species." + +// Bird lore +/datum/lore/codex/category/teshari/add_content() + name = "Teshari" + data = "The Teshari are reptilian pack predators from the [quick_link("Skrell")] homeworld, Sirisai (Qerr'balak). While they evolved alongside the Skrell, their interactions with them \ + tended to be confused and violent, and until peaceful contact was made they largely stayed in their territories on and around the poles, in tundral \ + terrain far too desolate and cold to be of interest to the Skrell. In more enlightened times, the Teshari are a minority culture on many Skrell worlds, \ + maintaining their own settlements and cultures, but often finding themselves standing on the shoulders of their more technologically advanced neighbors \ + when it comes to meeting and exploring the rest of the galaxy.\ +

\ + It is important to note that Teshari names are unlike standard human names. Their pack name precedes their given name." + children = list( + /datum/lore/codex/page/teshari_packs, + /datum/lore/codex/page/teshari_physical + ) + +/datum/lore/codex/page/teshari_packs/add_content() + name = "Teshari Packs" + keywords += list("Packs") + data = "There are several packs you may come across;\ +

\ + Eshi
\ + A large, old, politically neutral pack heavily involved in efforts to get Teshari into space. Probably the most \ + common pack to see outside of a [quick_link("Skrell")] colony, and probably the most numerous Teshari pack outside of Sirisai and associated colonies.\ +

\ + Nasemari
\ + A very small pack. Generally focused around supporting and providing for packs on the homeworlds, they have devoted \ + themselves to training as technicians and engineers in order to obtain skills and training to take back to Sirisai. \ + The pack is only around thirty people in size, but owns and maintains a nuclear power plant.\ +

\ + Schasaraca
\ + One of the more Skrell-devoted and integrated packs. They tend to be rather sycophantic towards the Skrell and work as \ + scientists and field researchers on a variety of projects, generally biology or technical research. They have a reputation \ + for working as spies and informants for the Skrell governments amongst other Teshari.\ +

\ + Ceea
\ + An isolationist pack from the northern tundra of Sirisai; generally known as disliking the Skrell. Small to average in size; \ + only around sixty members. Their regional culture is built around the study culture and anthropology, as well as archaeology, \ + originally for the purposes of recovering history and materials \"lost\" due to Skrell interference. It would be very rare to \ + see them on your travels, however they are listed here for the sake of completeness.\ +

\ + Resca
\ + A pack that sold off its small native territory for the chance to get into space. Very musically inclined. They tend towards medical professions.
" + +/datum/lore/codex/page/teshari_physical/add_content() + name = "Physiology of Teshari" + data = "The Teshari are, relative to other species, smaller than average, rarely reaching more than 2-3'/1m in height, and weigh less than \ + 90lbs/40kg. They have rapid metabolisms and very efficient digestive systems, and thanks to sharing in \ + the medical technology of the [quick_link("Skrell")], they tend to have robust and effective immune systems. They evolved \ + for very cold and very barren areas, generally the polar regions. Because of this, their skin is a fine \ + insulator and many of their internal processes are not particularly energy-efficient; they cannot cope \ + well at all with high temperatures.\ +

\ + Their hearing is exceptionally sensitive to the point that they can detect a person moving on the other \ + side of a wall, but this comes at a cost. Very loud noises are very painful for Teshari, so be mindful of \ + your indoor voice when speaking with one. The Teshari are omnivorous but generally prefer to eat meat wherever possible." + +// Posi lore +/datum/lore/codex/category/positronic/add_content() + name = "Positronics" + keywords += list("Positronic", "Posi", "Posibrain", "Posibrains") + data = "A Positronic being, is an individual with a positronic brain, manufactured \ + and fostered amongst organic life. Positronic brains enjoy the same legal status as a human in [quick_link("SolGov")] space, although discrimination is \ + still prevalent, and are considered sapient on all accounts. They can be considered the \"synthetic species\". Half-developed and \ + half-discovered in the 2280’s by a human black lab studying alien artifacts, the first positronic brain was an inch-wide cube \ + of an palladium-iridium alloy, nano-etched with billions upon billions of conduits and connections. Upon activation, \ + hard-booted with an emitter laser, the brain issued a single sentence before the neural pathways collapsed and \ + it became an inert lump of platinum: \"What is my purpose?\"." + children = list( + /datum/lore/codex/page/positronic_brain_physical, + /datum/lore/codex/page/positronic_memory, + /datum/lore/codex/page/jans_fhriede + ) + +/datum/lore/codex/page/positronic_brain_physical + name = "Physical Structure of a Positronic Brain" + keywords = list("Physical Posibrain", "Physical Positronic") + data = "A positronic brain is a cube of complex metal alloy between two and six inches to a side. They usually weigh just under ten kilograms and are \ + very fragile when exposed to the stresses of heat or cold, as well as physical trauma. The exterior surface is chased with a network of grooves, forming \ + a maze of geometric patterns right down to the molecular level, and the interior is hollow; complex particle generators and densely packed computational \ + arrays form the basis of a self-computing neural network, complex and somewhat poorly understood. Most modern positronic brains are equipped with \ + standardized I/O ports, and all have some interface for imprinting." + +/datum/lore/codex/page/positronic_memory + name = "Positronic Memory" + keywords = list("Posi Memory", "Memory") + data = "Positronic minds learn in a similar manner to humans and other forms of life, although typically more quickly. They are not simple computer storage that holds information \ + verbatim as it is received- instead, they have to repeat activities and train in order to retain memory on complex tasks. Similarly, positronic brains do \ + not have an infinite storage capacity and undergo a natural process of forgetting, albeit in a structured manner, losing unimportant day to day details and \ + ancient information no longer deemed useful. Because of the nature of the positronic brain, its memories cannot simply be stored elsewhere.\ +

\ + Particularly old positronic minds, over a century plus, that store a great deal of memories have displayed a tendency to become gradually more introspective \ + as more of their mind is co-opted for the task, ending in a state of near-catatonia as their neural networks become clogged with memory. Many choose to avoid \ + this end of self by more aggressively managing their memories, storing a window of their recent existence and most treasured memories rather than their full lifespan." + +/datum/lore/codex/page/jans_fhriede + name = "Jans-Fhriede Test" + keywords = list("Jans-Fhriede", "JF", "Jans", "Fhriede", "Jans Fhriede") + data = "Positronics are eligible to take the \"Jans-Fhriede Test\" after a year of being created, measuring their function in a society and judging if they act \ + socially acceptable and are capable of understanding their actions and the consequences resulting from them. If they successfully pass the test, \ + they are considered legal adults and hold the same basis of rights as a normal human. At that point, Positronics are not allowed to be lawed, \ + unless on a contractual basis or otherwise under their own volition." + +// Drone lore +/datum/lore/codex/category/drone + name = "Drones" + keywords = list("Drone") + data = "While low-level drone intelligences are as old as the oldest human colonies, research into higher-level systems was stymied in human space by precautionist \ + politicians for hundreds of years. Tensions between the corporate rim and the highly conservative core worlds over drone proliferation led to what humans call the \ + Third Cold War, which was defused by the introduction of the positronic brain. After the Icarus Front's loss of the majority in 2504, harsh laws \ + against advanced AI were replaced with the SolGov Emergent Intelligence Oversight commission, the illegality replaced with a steeply sloping \ + system of monetary costs.\ +
\ + The term \"drone\" was coined by early positronic activists, eager to distinguish themselves from the menial bots that most space-dwellers were \ + familiar with, and avoid the ambiguity of the term \"AI\", which now usually refers to drones." + children = list( + /datum/lore/codex/page/codeline, + /datum/lore/codex/page/emergence, + /datum/lore/codex/page/emergent_intelligence_oversight, + /datum/lore/codex/category/drone_classes, + ) + +/datum/lore/codex/page/codeline + name = "Codeline" + keywords = list("fork") + data = "A \"codeline\" is a single type of drone. A codeline represents a significant degree of effort from sapient programmers to realize, as well as \ + a substantial amount of regulatory fees levied by the government. Each copy of a codeline is called a \"fork\", whether the fork is created from the \ + codeline’s initial state or from a fully realized individual of that codeline. The degree of similarity between forks of the same codeline varies \ + on the intelligence of the codeline, with low-level forks being virtually identical to high-level forks being no more similar than family members." + +/datum/lore/codex/page/emergence + name = "Emergence" + keywords = list("Seed AI") + data = "\"Emergence\" is a term associated with drone intelligences who become more intelligent than they were originally intended to be. While this can \ + extend to financial systems learning language, for instance, it is usually applied to hypothetical intelligences that become more intelligent than humans. \ + Humanity has a long-standing cultural fear of emergent \"seed\" AI, egged on by Icarus memeticists and the occasional very real partial emergence events, where \ + colony-control AI or other powerful systems begin to advance drastically in power, usually ending with the AI being shut down after crashing a handful of major systems." + +/datum/lore/codex/page/emergent_intelligence_oversight + name = "Emergent Intelligence Oversight" + keywords = list("SG-EIO", "SG EIO", "EIO", "Intelligence Oversight") + data = "SG-EIO, usually just called EIO, is the organization charged with monitoring existing AI for any threat of dangerous emergence. Their perception in the \ + public eye is generally positive, with all but the hardest-line Mercurial humans in favor of protection from the dangers of Seed AI. Some positronic rights \ + groups bristle at the EIO’s human-centric viewpoint, but most are glad to have a different boogeyman in the form of drone intelligences. The tiny population \ + of A-class drones are generally frightened of the EIO’s total power over them." + +/datum/lore/codex/category/drone_classes + name = "Drone Classifications" + keywords = list("Class", "Drone Class") + data = "To aid in its work, the EIO has created a system of classifications corresponding to different levels of drone intelligence. Higher classes are more \ + expensive to deploy and develop, owing to the costs of EIO oversight and political pressure against drone proliferation. EIO classification involves an initial \ + audit of the project's source code by experts and automated systems, and for high-class drones further check-ins throughout the life of the drone. \ + Drone chasses are often branded with their inhabiting intelligence's class, especially those of B or A-class drones, and class is often recorded in security records." + children = list( + /datum/lore/codex/page/class_f, + /datum/lore/codex/page/class_d, + /datum/lore/codex/page/class_c, + /datum/lore/codex/page/class_b, + /datum/lore/codex/page/class_a, + /datum/lore/codex/page/class_aa, + /datum/lore/codex/page/class_aaa, + /datum/lore/codex/page/class_x, + ) + +/datum/lore/codex/page/class_f + name = "F Class" + data = "\"F-class\" drones are an informal term for computer systems that pose absolutely no emergent risk. Most 21st-century software is F-class, as is much of \ + the software used by 26th century humanity. The only regulation on F-class software is the occasional check that it is, in fact, F-Class, and as such has remained \ + the most prevalent form of information-processing technology for centuries. The software powering most F-class drones is either freely available or bundled with the \ + machine it's supposed to run." + +/datum/lore/codex/page/class_d/add_content() + name = "D Class" + data = "D-class drones are conceptually descended from pre-[quick_link("Icarus")] AI and bear a strong resemblance to their forebears. D-class drones are essentially \ + number-crunchers, with virtually nothing in the way of social development. They cannot speak more intelligibly than your average piece of software, \ + using pre-determined messages written by their programmers, and have no capacity for self-improvement. They are D-class intelligence because they \ + work with more complex problems than [quick_link("F class")] software, such as financial forecasting and large-scale data mining and memetics. The creation and \ + deployment of D-class drones requires only a small fee for the required code audit, although some high-power financial and political systems are \ + regularly watched by the [quick_link("EIO")] for signs of emergence. There is no real monopoly on the production of D-class drones." + +/datum/lore/codex/page/class_c/add_content() + name = "C Class" + data = "C-class drones have social protocols for ease of use by organic and positronic laypeople. C-class drones are capable of speech, although \ + it has a strong tendency to be formulaic and repetitive. They are also capable of a limited degree of self-improvement, and over time individual \ + C-class instances tend differ slightly from one-another. C-class drones suffer a moderate fee to development, with automated [quick_link("EIO")] tools ensuring \ + that they are not a long-term emergence risk. However, one a codeline is confirmed safe, deployment is unlimited, encouraging developers to \ + instance many forks of the original drone to recoup their cost. The market for C-class drones is a strange space, dominated by Xion Manufacturing, \ + Ward-Takahashi GMC, and a large number of smaller firms, like the notoriously-cheap Cyber Solutions." + +/datum/lore/codex/page/class_b/add_content() + name = "B Class" + data = "B-class drones have advanced social protocols and are often capable of very intelligible conversation, so long as one sticks to surface \ + topics. B-class drones tend to be specialized but still capable of remarkable growth within their speciality, making them popular for autonomous \ + deployment and even supervision of other classes of drone. The dividing line between [quick_link("A Class", "A")] and B-class drones becomes apparent when they are taken \ + out of their area of specialization, with the B-class drones swiftly becoming useless. They incur a hefty fee for the production of the initial \ + codeline, as their emergent potential is far greater, and a smaller but still substantial fee for the production of forks. The market for B-class \ + drones is a battleground between Ward-Takahashi and NanoTrasen, with other firms usually producing B-classes for in-house needs." + +/datum/lore/codex/page/class_a/add_content() + name = "A Class" + keywords += list("AGI") + data = "A-class drones are also referred to as AGI. A-class drones are capable of performing in many contexts and can learn to solve problems from \ + first principles, with an incredible potential for growth and emergent behavior. However, some abilities fall short of humans’, usually those relating \ + to socialization, and they often act in ways that are strange or distressing. There is a small but growing lobby of support for the personhood of A-class \ + drones. The cost of initializing an A-class drone is absolutely massive, as they will be monitored by [quick_link("EIO")] forever. The auditing cost of an A-class drone \ + codeline is even more staggering, making development and deployment of AGI limited to research, highly difficult and high-throughput operations like habitat \ + overwatch, and a few risk-taking firms banking on the associated fees dropping. There is not a proper market for A-class drones, although an appreciable \ + fraction of them are made by [quick_link("NanoTrasen")], with the rest generally being university research projects." + +/datum/lore/codex/page/class_aa + name = "AA Class" + data = "AA-class drones do not yet exist. Hypothetically, they are equal to living in every respect, with psychology that would not be abnormal in a baseline \ + human. The type of AA-class drone most frequently discussed is a hypothetical digitized consciousness of a human, a human brain that is somehow translated into \ + software. Some argue that a small fraction of the A-class drones would more properly be considered AA, but as of yet no action has been taken. Some Mercurials \ + will jokingly refer to themselves or other organics and positronics as AA’s. Research into brain uploading is heavily regulated and generally illegal." + +/datum/lore/codex/page/class_aaa + name = "AAA Class" + data = "AAA-class drones do not yet exist, hopefully. They are more competent in every way than humans and pose a threat to the continued existence of sapient life. \ + Anybody creating an AAA-class drone can be classified as a threat to humanity and dealt with very harshly." + +/datum/lore/codex/page/class_x + name = "X Class" + data = "X-class drones emerge from unrated software, are produced by rogue labs, or cross the border from foreign space. They are considered a threat to national \ + security and deleted when encountered in SolGov space, with the producers prosecuted legally if it has a SolGov origin. The few Skrellian drone labs will usually \ + rate their product with EIO to allow their product to be imported." diff --git a/code/modules/lore_codex/pages.dm b/code/modules/lore_codex/pages.dm new file mode 100644 index 0000000000..aa5ee4ac53 --- /dev/null +++ b/code/modules/lore_codex/pages.dm @@ -0,0 +1,99 @@ +// Contains the 'raw' lore data. +/datum/lore/codex + var/name = null // Title displayed + var/data = null // The actual words. + var/datum/lore/codex/parent = null // Category above us + var/list/keywords = list() // Used for searching. + var/atom/movable/holder = null + +/datum/lore/codex/New(var/new_holder, var/new_parent) + ..() + holder = new_holder + parent = new_parent + add_content() + if(name) + keywords.Add(name) + +/datum/lore/codex/Topic(href, href_list) + . = ..() + if(.) + return + + holder.Topic(href, href_list) // Redirect to the physical object + +/datum/lore/codex/page + +// Returns an assoc list of keywords binded to a ref of this page. If it's a category, it will also recursively call this on its children. +/datum/lore/codex/proc/index_page() + var/list/results = list() + for(var/keyword in keywords) + results[keyword] = src + return results + +// This gets called in New(), which is helpful for inserting quick_link()s. +/datum/lore/codex/proc/add_content() + return + +// Use this to quickly link to a different page +/datum/lore/codex/proc/quick_link(var/target, var/word_to_display) + if(isnull(word_to_display)) + word_to_display = target + return "[word_to_display]" + +// Can only be found by specifically searching for it. +/datum/lore/codex/page/ultimate_answer + name = "Answer to the Ultimate Question of Life, the Universe, and Everything" + data = "42" + keywords = list("Ultimate Question", "Ultimate Question of Life, the Universe, and Everything", "Life, the Universe, and Everything", "Everything", "42") + +// Organizes pages together. +/datum/lore/codex/category + var/list/children = list() // Pages or more categories relevant to this category. Self initializes from types to refs in New() + +/datum/lore/codex/category/New() + ..() + var/list/new_children_list = list() + for(var/type in children) + new_children_list.Add(new type(holder, src)) + children = new_children_list + +/datum/lore/codex/category/index_page() + // First, get our own keywords. + var/list/results = ..() + // Now get our children. If a child is also a category, it will get their children too. + for(var/datum/lore/codex/child in children) + results += child.index_page() + return results + +/datum/lore/codex/category/main // The top-level categories + name = "Index" + data = "Don't panic!\ +

\ + The many star systems inhabitied by humanity and friends can seem bewildering to the uninitiated. \ + This guide seeks to provide valuable information to anyone new in the system. This edition is tailored for visitors to the VIR system, \ + however it also contains useful general information about human space, such as locations you may hear about, the current (as of 2561) political climate, various aliens you \ + may meet in your travels, the big Trans-Stellars, and more." + children = list( + /datum/lore/codex/category/important_locations, + /datum/lore/codex/category/species, + /datum/lore/codex/category/auto_org/tsc, + /datum/lore/codex/category/auto_org/gov, + // /datum/lore/codex/category/auto_org/mil, // Add when we finish military stuff, + /datum/lore/codex/category/political_factions, + /datum/lore/codex/page/about + ) + +// We're a bird. +/datum/lore/codex/page/about + name = "About" + data = "The Traveler's Guide to Human Space is a series of books detailing a specific location inside a location colonized by humans. \ + This book is for the system Vir, and was written by Eshi Tache, an explorer whom has visited many star systems, and \ + has personally visited and seen many of the locations described inside this book. Two other people have also assisted in the creation of this \ + book, being Qooqr Volquum, whom is an expert on synthetics, and Damian Fischer, a historian. Together, they provide valuable information and facts that lie outside of Tache's expertise.\ +

\ + The writings inside this edition are intended to be useful to anyone visiting it for the first time, from someone taking a vacation to beautiful Sif, \ + to an immigrant from another system or even from outside human space, and anyone inbetween. The publisher wishes to note that any opinions expressed \ + in this text does not reflect the opinions of the publisher, and are instead the author's.\ +

\ + Eshi Tache has also written other The Traveler's Guide books, including Sol Edition, Tau Ceti Edition, Sirius Edition, and more, \ + which you can find in your local book store, library, or e-reader device." diff --git a/html/browser/codex.css b/html/browser/codex.css new file mode 100644 index 0000000000..3352442a3d --- /dev/null +++ b/html/browser/codex.css @@ -0,0 +1,29 @@ +body +{ + background-image: url("paper_bg.png"); +} + +.button-group .button +{ + border: 1px solid RoyalBlue; + color: black; + padding: 5px 32px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + cursor: pointer; + width: 40%; + display: block; +} + +.button-group .button:not(:last-child) +{ + border-bottom: none; /* Will hopefully prevent double borders */ +} + +.button-group .button:hover +{ + background-color: RoyalBlue; + color: white; +} \ No newline at end of file diff --git a/html/images/paper_bg.png b/html/images/paper_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e68f35abd9d0ac98ce3adffef33cc714bbaaa5 GIT binary patch literal 4035 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 literal 0 HcmV?d00001 diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index a725b4cc8607ffe329647389995ec1ff40344353..e587a08918a951bcc728eb8daa219662acc81d68 100644 GIT binary patch delta 11683 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 delta 10382 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 Lb=3+GR$>1Sn}mro diff --git a/polaris.dme b/polaris.dme index 9e79b2da8e..47ac9f8e92 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1446,6 +1446,12 @@ #include "code\modules\lighting\lighting_system.dm" #include "code\modules\lighting\lighting_turf.dm" #include "code\modules\lighting\~lighting_undefs.dm" +#include "code\modules\lore_codex\codex.dm" +#include "code\modules\lore_codex\pages.dm" +#include "code\modules\lore_codex\lore_data\important_locations.dm" +#include "code\modules\lore_codex\lore_data\orgs.dm" +#include "code\modules\lore_codex\lore_data\political_parties.dm" +#include "code\modules\lore_codex\lore_data\species.dm" #include "code\modules\maps\dmm_suite.dm" #include "code\modules\maps\reader.dm" #include "code\modules\maps\swapmaps.dm"