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 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"