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 += "" + 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 0000000000..b5e68f35ab Binary files /dev/null and b/html/images/paper_bg.png differ diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index a725b4cc86..e587a08918 100644 Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ 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"