Activates Neerti's Lawbook

This commit is contained in:
Anewbe
2017-10-03 21:28:17 -05:00
parent 2911b4ad0b
commit 0de6cddef5
14 changed files with 1455 additions and 168 deletions

View File

@@ -1,139 +1,34 @@
// Inherits from /book/ so it can fit on bookshelves.
/obj/item/weapon/book/codex
name = "Generic Codex: Electric Bugaloo"
desc = "If you can read this, something is broken!"
icon_state = "codex"
unique = TRUE
var/datum/codex_tree/tree = null
var/root_type = /datum/lore/codex/category/main_vir_lore //Runtimes on codex_tree.dm, line 18 with a null here
/obj/item/weapon/book/codex/initialize()
tree = new(src, root_type)
..()
/obj/item/weapon/book/codex/attack_self(mob/user)
if(!tree)
tree = new(src, root_type)
icon_state = "[initial(icon_state)]-open"
tree.display(user)
/obj/item/weapon/book/codex/lore/vir
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.
root_type = /datum/lore/codex/category/main_vir_lore
/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 = "<b>[checked.name]</b>"
while(checked.parent)
output = "<a href='?src=\ref[src];target=\ref[checked.parent]'>[checked.parent.name]</a> \> [output]"
checked = checked.parent
return output
/obj/item/weapon/book/codex/proc/make_search_bar()
var/html = {"
<form id="submitForm" action="?">
<input type = 'hidden' name = 'src' value = '\ref[src]'>
<input type = 'hidden' name = 'action' value='search'>
<label for = 'search_query'>Page Search: </label>
<input type = 'text' name = 'search_query' id = 'search_query'>
<input type = 'submit' value = 'Go'>
</form>
"}
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 = "<head>"
dat += "<title>[src.name] ([current_page.name])</title>"
dat += "<link rel='stylesheet' href='codex.css' />"
dat += "</head>"
dat += "<body>"
dat += "[get_tree_position()]<br>"
dat += "[make_search_bar()]<br>"
dat += "<center>"
dat += "<h2>[current_page.name]</h2>"
dat += "<br>"
if(current_page.data)
dat += "[current_page.data]<br>"
dat += "<br>"
if(istype(current_page, /datum/lore/codex/category))
dat += "<div class='button-group'>"
// dat += "<ul>"
var/datum/lore/codex/category/C = current_page
for(var/datum/lore/codex/child in C.children)
// dat += "<a href='?src=\ref[src];target=\ref[child];class=button'>[child.name]</a><br>" // Todo, change into pretty CSS buttons.
dat += "<a href='?src=\ref[src];target=\ref[child]' class='button'>[child.name]</a>"
// dat += "</ul>"
dat += "</div>"
dat += "<hr>"
if(history.len - 1)
dat += "<br><a href='?src=\ref[src];go_back=1'>\[Go Back\]</a>"
if(current_page.parent)
dat += "<br><a href='?src=\ref[src];go_to_parent=1'>\[Go Up\]</a>"
if(current_page != home)
dat += "<br><a href='?src=\ref[src];go_to_home=1'>\[Go To Home\]</a>"
dat += "</center></body>"
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)
// Combines SOP/Regs/Law
/obj/item/weapon/book/codex/corp_regs
name = "NanoTrasen Regulatory Compendium"
desc = "Contains large amounts of information on Standard Operating Procedure, Corporate Regulations, and important regional laws. The best friend of \
Internal Affairs."
icon_state = "corp_regs"
root_type = /datum/lore/codex/category/main_corp_regs
throwforce = 5 // Throw the book at 'em.

View File

@@ -0,0 +1,140 @@
// Holds the various pages and implementations for codex books, so they can be used in more than just books.
/datum/codex_tree
var/atom/movable/holder = null
var/root_type = null
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.
/datum/codex_tree/New(var/new_holder, var/new_root_type)
holder = new_holder
root_type = new_root_type
generate_pages()
..()
/datum/codex_tree/proc/generate_pages()
home = new root_type(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.
/datum/codex_tree/proc/go_to_parent()
if(current_page && current_page.parent)
current_page = current_page.parent
// Changes current_page to a specific page or category.
/datum/codex_tree/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)
/datum/codex_tree/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
/datum/codex_tree/proc/get_page_from_type(var/desired_type)
for(var/word in indexed_pages)
var/datum/lore/codex/C = indexed_pages[word]
if(C.type == desired_type)
return C
return null
// Returns to the last visited page, based on the history list.
/datum/codex_tree/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.
/datum/codex_tree/proc/get_tree_position()
if(current_page)
var/output = ""
var/datum/lore/codex/checked = current_page
output = "<b>[checked.name]</b>"
while(checked.parent)
output = "<a href='?src=\ref[src];target=\ref[checked.parent]'>[checked.parent.name]</a> \> [output]"
checked = checked.parent
return output
/datum/codex_tree/proc/make_search_bar()
var/html = {"
<form id="submitForm" action="?">
<input type = 'hidden' name = 'src' value = '\ref[src]'>
<input type = 'hidden' name = 'action' value='search'>
<label for = 'search_query'>Page Search: </label>
<input type = 'text' name = 'search_query' id = 'search_query'>
<input type = 'submit' value = 'Go'>
</form>
"}
return html
/datum/codex_tree/proc/display(mob/user)
// icon_state = "[initial(icon_state)]-open"
if(!current_page)
generate_pages()
user << browse_rsc('html/browser/codex.css', "codex.css")
var/dat
dat = "<head>"
dat += "<title>[holder.name] ([current_page.name])</title>"
dat += "<link rel='stylesheet' href='codex.css' />"
dat += "</head>"
dat += "<body>"
dat += "[get_tree_position()]<br>"
dat += "[make_search_bar()]<br>"
dat += "<center>"
dat += "<h2>[current_page.name]</h2>"
dat += "<br>"
if(current_page.data)
dat += "[current_page.data]<br>"
dat += "<br>"
if(istype(current_page, /datum/lore/codex/category))
dat += "<div class='button-group'>"
var/datum/lore/codex/category/C = current_page
for(var/datum/lore/codex/child in C.children)
dat += "<a href='?src=\ref[src];target=\ref[child]' class='button'>[child.name]</a>"
dat += "</div>"
dat += "<hr>"
if(history.len - 1)
dat += "<br><a href='?src=\ref[src];go_back=1'>\[Go Back\]</a>"
if(current_page.parent)
dat += "<br><a href='?src=\ref[src];go_to_parent=1'>\[Go Up\]</a>"
if(current_page != home)
dat += "<br><a href='?src=\ref[src];go_to_home=1'>\[Go To Home\]</a>"
dat += "</center></body>"
user << browse(dat, "window=the_empress_protects;size=600x550")
onclose(user, "the_empress_protects", src)
/datum/codex_tree/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"])
// Close the book, if our holder is actually a book.
if(istype(holder, /obj/item/weapon/book/codex))
holder.icon_state = initial(holder.icon_state)
usr << browse(null, "window=the_empress_protects")
return
display(usr)

View File

@@ -0,0 +1,313 @@
/datum/lore/codex/category/corporate_regulations
name = "Corporate Regulations"
data = "Corporate Regulations are rules set by us, NanoTrasen, that all visitors and employees must follow while working at \
or otherwise on-board a NanoTrasen installation, which if you are reading this, you likely are at one. Corporate Regulations, \
commonly shortened to Corp Regs by employees, is common throughout NanoTrasen's other holdings. Offenses against Corp Regs can \
range from things like littering, to disrespecting a Head of Staff, to failing to follow a valid order from a superior. \
All NanoTrasen employees must follow these regulations, no one is above them, not even the Station Director. \
The only exception for this is Asset Protection."
children = list(
/datum/lore/codex/page/corporate_punishments,
/datum/lore/codex/category/contraband,
/datum/lore/codex/category/corporate_minor_violations,
/datum/lore/codex/category/corporate_major_violations
)
/datum/lore/codex/category/contraband
name = "Contraband"
data = "Here is a list of various types of 'contraband' that are prohibited from being brought onto the facility."
children = list(
/datum/lore/codex/page/not_contraband,
/datum/lore/codex/page/contraband_controlled,
/datum/lore/codex/page/contraband_restricted
)
/datum/lore/codex/page/not_contraband
name = "Not Contraband"
data = "Here is a list of objects which are not actually contraband onboard NanoTrasen facilities in Vir, despite popular belief.\
<ul>\
<li><b>Blades or other Equipment</b> which the possessor needs in order to fulfil their role onboard the facility, \
such as a kitchen knife for culinary personnel.</li>\
<li><b>Handheld Flashes</b>, which are useful for self-defense, as well as building certain machinery.</li>\
<li><b></b></li>\
</ul>"
/datum/lore/codex/page/contraband_controlled
name = "Controlled Objects"
data = "A 'controlled' object is contraband that NanoTrasen has deemed harmful, or otherwise undesired for the \
facility, but which is not illegal by Law or dangerous to possess. Vessels docking with the facility which possess these \
objects are required to keep them onboard their vessel. Visitors who board the facility with these objects are required to \
surrender them, or otherwise have them confiscated, however they may have them back upon leaving.\
<br><br>\
The following objects are 'controlled'.\
<ul>\
<li><b>Recreational Drugs</b>, which includes Ambrosia.</li>\
<li><b>Non-Lethal Weaponry</b>, for persons not authorized to handle them, such as Security or Command Staff. This includes Stun Batons, Tasers, Pepper-Spray, \
Flashbangs</li>\
<li><b></b></li>\
<li><b></b></li>\
</ul>"
/datum/lore/codex/page/contraband_restricted
name = "Restricted Objects"
data = "A 'restricted' object is contraband which Nanotrasen deems dangerous to the welfare of the facility as a whole, \
such as a deadly weapon, <u>by someone not authorized to handle it.</u> Vessels docking with the facility which possess these \
objects are required to keep them onboard their vessel. Possessing restricted objects is a much more serious issue, and \
as such, possession can consititute a brig sentence, and the permanent confiscation of the objects in question.\
<br><br>\
The following objects are 'restricted'.\
<ul>\
<li><b>Deadly Weapons</b>, which is defined as objects which are designed to kill or otherwise severely injure a person.</li>\
<li><b>Lethal Guns</b>, meaning guns which possess the capability to kill someone. Functional ballistic weaponry can be loaded \
with ammunition that is lethal, meaning it falls under this. Energy weapons lacking a lethal mode, such as tasers, do not fall under this. \
Weapons which emit electromagnetic pulses, sometimes called 'Ionic' weapons, are considered lethal, as they are lethal to synthetics.</li>\
<li><b>Narcotic Drugs</b>, such as Mindbreaker.</li>\
<li><b>Illicit Identification Cards</b>, which includes forgeries, as well as ID cards designed to tamper with electronics.</li>\
</ul>"
/datum/lore/codex/page/corporate_punishments
name = "Punishments (Corporate)"
data = "Violations of Corporate Regulations can be resolved in a wide variety of ways. The Command staff on-board the facility \
have discretion to decide on what form of punishment to use, however it is advised for the punishment to fit the severity of the \
infraction. To help with this, each violation has a suggested punishment alongside it.\
<br><br>\
The punishments that Command is allowed to use are;<br>\
<ul>\
<li><b>Fines</b> are the preferred penalty to be used for minor Corp Reg violations. If someone is unable or unwilling to pay the fine, \
the punishment may be substituted with time spent inside the brig.</li><br>\
<li><b>Brig time</b> is acceptable as an alternative to monetary fines, at the offender's discretion. Brig time and fines cannot be used together. \
Brig time may also be used for repeat offenders.</li><br>\
<li><b>Write-ups to Central Command</b> may be recommended or mandated for specific offenses. Internal Affairs is to ensure that this is \
adhered to, and assist if needed.</li><br>\
<li><b>Reassignments</b> as a form of punishment may be done by the Station Director, with consent from both the offender and the offender's \
Superior, if one exists. Generally the new role for the offender is usually considered something menial or related to their offense, for example: \
Janitor, Miner, Cook, Gardener. This punishment can be especially fitting for certain violations such as someone who made graffiti being reassigned to janitorial duties.</li><br>\
<li><b>Demotions</b> may be done by the offender's Superior, at their discretion. The Station Director may also do this, \
however the Director is recommended to defer to the offender's direct Superior if one exists.</li><br>\
<li><b>Terminations of employment</b> from NanoTrasen can only be issued by the Station Director. This is the most severe corporate punishment available. \
It should be noted that visitors and other non-employees cannot be terminated, obviously. Central Command must be informed of the termination, if one is applied.</li>\
<li><b>Hold until Transfer</b> is an option reserved for the Station Director only for repeat offenders, for serious violations of Regulations, or it the offender poses a \
credible threat to the station or crew.</li>\
</ul>"
// Minor Violations area
/datum/lore/codex/category/corporate_minor_violations
name = "Minor Violations (Corporate)"
data = "Here is a list of the less severe violations of Corporate Regulations that might occur. We wish to emphasize that for \
the minor corporate violations, the local Command team has a lot more discretion to choose a suitable punishment, however \
punishments which are much more severe or lax than the suggested punishment listed within may be worthy of an Internal Affairs investigation."
children = list(
/datum/lore/codex/page/law/minor_trespass,
/datum/lore/codex/page/law/petty_company_theft,
/datum/lore/codex/page/law/misuse_of_comms,
/datum/lore/codex/page/law/disrespecting_head,
/datum/lore/codex/page/law/failure_to_execute_order,
/datum/lore/codex/page/law/littering,
/datum/lore/codex/page/law/graffiti,
/datum/lore/codex/page/law/false_complaint,
/datum/lore/codex/page/law/breaking_sop_minor,
/datum/lore/codex/page/law/resisting_arrest,
/datum/lore/codex/page/law/control_contraband,
/datum/lore/codex/page/law/indecent_exposure,
/datum/lore/codex/page/law/hooliganism
)
/datum/lore/codex/page/law/minor_trespass
name = "Minor Trespass"
definition = "Being in an area which a person does not have access to, and does not have permission to be in."
suggested_punishments = "Removal from area. Fine of up to 150 thaler or brig time of up to 10 minutes at discretion of \
arresting officer. Demotion at discretion of Superior. Confiscation of tools used at discretion of arresting officer."
suggested_brig_time = 10 MINUTES
suggested_fine = 150
notes = "Remember that people can either break in, sneak in, or be let in. Always check that the suspect wasn't let in to \
do a job by someone with access, or were given access on their ID. Trespassing and theft often committed together; \
both sentences should be applied."
/datum/lore/codex/page/law/petty_company_theft/add_content()
name = "Petty Theft of Company Property"
keywords += list("Petty Theft")
definition = "Taking or using the Company's property without permission, which is of low value."
suggested_punishments = "Return of stolen item(s). Fine of up to 200 thaler or brig time of up to 20 minutes. Demotion at discretion of Superior."
suggested_brig_time = 20 MINUTES
suggested_fine = 200
notes = "This is for theft of company belongings which are of a relatively low value, such as low-end medical equipment, tools, clothing, \
not paying for food/drink, and such. It is assumed that persons inside a department using departmental equipment have the consent of NanoTrasen to take those items. \
Theft from a person, or if stolen objects were not of a trivial worth, falls under [quick_link("Theft")] instead. \
[quick_link("Grand Theft")] is reserved for extremely valuable or dangerous objects being stolen."
..()
/datum/lore/codex/page/law/misuse_of_comms/add_content()
name = "Misuse of Public Communications"
keywords += list("Misuse of Comms")
definition = "Repetitively using the radio, PDA relays, or other public communication methods as a means to annoy, disturb, \
slander, or otherwise verbally abuse others, and ignoring requests to stop."
suggested_punishments = "Confiscation of radio <u>if they fail to stop when asked</u>. Demotion at discretion of Superior."
notes = "Using languages besides Galactic Common on the radio can consitute Misuse of Public Communications if the station is on Blue alert or higher."
..()
/datum/lore/codex/page/law/failure_to_execute_order
name = "Failure to Execute an Order"
definition = "Refusing to follow a valid, lawful order of a Superior, when able to do so, as an employee of NanoTrasen."
suggested_punishments = "50 thaler fine. Demotion at discretion of Superior."
suggested_fine = 50
notes = "For this charge to apply, the order must be lawful, reasonable, and the person being ordered to do it must have been able to do so. \
This includes orders from someone who is not necessarily the direct superior of the offender, but has authority in that context, for instance the Chief Engineer \
giving an order about engineering matters."
/datum/lore/codex/page/law/littering
name = "Littering"
definition = "Failing to throw garbage away, or otherwise creating a mess."
suggested_punishments = "50 thaler fine issued to litterer. Demotion at discretion of Superior <u>for extreme cases or repeat offenders</u>."
suggested_fine = 50
/datum/lore/codex/page/law/graffiti
name = "Graffiti"
definition = "Defacing Company property, or otherwise writing or drawing on Company property without authorization."
suggested_punishments = "Up to 150 thaler fine issued to to those responsible. Cleanup of graffiti. Demotion at discretion of Superior."
suggested_fine = 150
notes = "This applies for a wide variety of forms of graffiti, including writing on the walls or the floor, or drawing on the floor \
with painting tools. Authorization for painting or otherwise altering the floor or walls' appearance can be granted by Command staff."
/datum/lore/codex/page/law/false_complaint
name = "Filing a False Complaint"
definition = "Knowingly filing a complaint which is false, and in bad faith, to Internal Affairs, Command, or Security."
suggested_punishments = "Fine of 250 thaler. Demotion at discretion of Superior."
suggested_fine = 250
notes = "If someone's complaint is merely incorrect but not maliciously so, it does not count for this charge."
/datum/lore/codex/page/law/breaking_sop_minor
name = "Breaking Standard Operating Procedure (Minor)"
definition = "Actively and willfully disregarding the station's Standard Operating Procedures, without risking serious threat to station property or crew."
suggested_punishments = "Fine of 100 thaler. Demotion at discretion of Superior."
suggested_fine = 100
notes = "This includes refusal to activate suit sensors on blue or red alert."
/datum/lore/codex/page/law/resisting_arrest
name = "Resisting Arrest"
definition = "Noncompliance with an Arresting Officer, whom has cause, and is following SOP."
suggested_punishments = "Fine of up to 200 thaler, or brig time extention up to 20 minutes. Demotion at discretion of Superior."
suggested_fine = 200
suggested_brig_time = 20 MINUTES
notes = "If this disputed, an Internal Affairs Agent (if available) is to be the impartial mediator."
/datum/lore/codex/page/law/control_contraband
name = "Possession of a Controlled Item (Contraband)"
definition = "Carrying an object which NanoTrasen has deemed harmful, or otherwise undesired for the \
station, but which is not illegal by Law or dangerous to possess."
suggested_punishments = "Confiscation of the controlled items if brought onboard. The owner may have the items back when they leave the station."
notes = "Visitors boarding the station with controlled items must leave the item outside the station (e.g. their vessel), or surrender \
it to the Security team for the duration of their stay. A list of contraband is provided inside this book."
/datum/lore/codex/page/law/disrespecting_head
name = "Disrespecting a Head of Staff"
definition = "Knowingly insulting, belittling, offending, or otherwise disrespecting a Head of Staff of NanoTrasen, while also \
an employee of NanoTrasen."
suggested_punishments = "Fine of up to 100 thaler. Demotion at discretion of Superior."
suggested_fine = 100
notes = "Accidential cases resulting from, for example, ignorance of a species' culture, invalidates this charge."
/datum/lore/codex/page/law/indecent_exposure
name = "Indecent Exposure"
definition = "To be intentionally and publicly unclothed in public."
suggested_punishments = "Fine of 150 thaler. Demotion at discretion of Superior."
suggested_fine = 150
notes = "Exceptions are allowed based on species. See the Dress Code section of General SOP for more details."
/datum/lore/codex/page/law/hooliganism
name = "Hooliganism"
definition = "To intentionally engage in disruptive behavior such as belligerent drunkenness, disorderly shouting, or aggressive assembly. "
suggested_punishments = "Fine of 100 thaler or brig time of 15 minutes. Demotion at discretion of Superior."
suggested_fine = 100
notes = "People who are intoxicated and being an annoyance can be brigged until they become sober, at the discretion of the Arresting Officer."
// Major Violations area
/datum/lore/codex/category/corporate_major_violations
name = "Major Violations (Corporate)"
data = "Here is a list of the more severe violations of Corporate Regulations that might occur. If someone is guilty of \
a violation listed here, it is highly recommended that a report be sent to your local Central Command."
children = list(
/datum/lore/codex/page/law/major_trespass,
/datum/lore/codex/page/law/i_am_the_law,
/datum/lore/codex/page/law/abuse_of_office,
/datum/lore/codex/page/law/restricted_contraband,
/datum/lore/codex/page/law/breaking_sop_major,
/datum/lore/codex/page/law/neglect_of_duty,
/datum/lore/codex/page/law/deception,
/datum/lore/codex/page/law/wrongful_dismissal,
/datum/lore/codex/page/law/abuse_of_confiscated_equipment
)
/datum/lore/codex/page/law/major_trespass/add_content()
name = "Major Trespass"
keywords += list("Infiltration")
definition = "Being in an restricted, or otherwise dangerous (to themselves or others) area which they do not have access to, \
and do not have permission to be in."
suggested_punishments = "Demotion. Termination at discretion of Station Admin. Send notice to Central Command."
notes = "Also sometimes called Infiltration. Such areas include the AI upload/core, Armory, Engine, Atmospherics, Virology, Bridge, Station Admin's office. \
Other areas may warrant the [quick_link("Minor Trespass")] charge instead."
..()
/datum/lore/codex/page/law/i_am_the_law/add_content()
name = "Exceeding Official Powers"
definition = "Acting beyond what is allowed by Corporate Regulations or Standard Operating Procedure, generally as a member of Command or Security."
suggested_punishments = "Demotion or termination at discretion of Station Admin. Send notice to Central Command if a Head of Staff or Station Director had exceeded their powers."
notes = "The difference between this and [quick_link("Abuse of Office")] is that generally this charge is for instances of someone using their position to go beyond their \
assigned role, or generally acting 'above the regulations'."
mandated = TRUE
..()
/datum/lore/codex/page/law/abuse_of_office/add_content()
name = "Abuse of Office"
definition = "Doing illegal, immoral, or otherwise disallowed actions, in an official capacity, placing their own interests ahead of the interests of the Company."
suggested_punishments = "Demotion. Termination at discretion of Station Admin. Send notice to Central Command if a Head of Staff or Station Director had abused their office."
notes = "The difference between this and [quick_link("Exceeding Official Powers")] is that this charge is for instances of someone using their authority to adversely \
affect another crewmember or visitor unlawfully by using their authority, or otherwise empowering themselves for their own personal gain."
mandated = TRUE
..()
/datum/lore/codex/page/law/restricted_contraband
name = "Possession of a Restricted Item"
definition = "Carrying an object which Nanotrasen deems dangerous to the welfare of the station as a whole, such as a deadly weapon, by someone not authorized to handle it."
suggested_punishments = "Confiscation of the restricted item, and notice be sent to Central Command. Persons may be detained and investigated if deemed necessary."
notes = "Visitors boarding the station with restricted items must leave the item outside the station (e.g. vessel), or surrender it to the Security team. \
A list of restricted items are provided inside this book.\
<br><br>\
Roles authorized to handle a weapon by default include; Station Director, Head of Personnel, Head of Security, Security Officers, Detectives, and anyone possessing \
a valid weapon permit."
/datum/lore/codex/page/law/breaking_sop_major
name = "Breaking Standard Operation Procedure (Major)"
definition = "Actively and willfully disregarding the station's Standard Operating Procedures, where the probable effects includes death or destruction."
suggested_punishments = "30 minutes to 1 hour of Brig time. Demotion left to discretion of Superior, but strongly suggested. Termination at discretion of Station Director."
suggested_brig_time = 1 HOUR
notes = "This includes non-compliance to orders from Emergency Responders, entering breached areas without proper EVA gear."
/datum/lore/codex/page/law/neglect_of_duty
name = "Neglect of Duty"
definition = "To fail to meet satisfactory work standards."
suggested_punishments = "Demotion at discretion of Superior. Termination at discretion of Station Director."
notes = "This includes accidents, refusing or failing to work, or simply not providing a resonable amount of productivity, when the offender is capable of work. This charge \
is meant to be applied only by Command staff to their subordinates, and not from individual Security Officers."
/datum/lore/codex/page/law/deception
name = "Deception"
definition = "To lie in an official report."
suggested_punishments = "Demotion. Termination at discretion of Station Director. Notify Central Command."
notes = "This includes lying or withholding information to your superior in a report or lying to the crew about a situation."
mandated = TRUE
/datum/lore/codex/page/law/wrongful_dismissal
name = "Wrongful Dismissal"
definition = "To demote, dismiss, terminate, or otherwise reduce a crewmember's rank for no valid, or a knowingly false reason."
suggested_punishments = "Demotion. Termination at discretion of Station Director. Notify Central Command."
notes = "An Internal Affairs Agent is required to do an investigation in order to conclude if this has occured or not. Security cannot \
give this charge out on their own."
mandated = TRUE
/datum/lore/codex/page/law/abuse_of_confiscated_equipment
name = "Abuse of Confiscated Equipment"
definition = "To take and use equipment confiscated as evidence or contraband, generally as a member of Security or Command."
suggested_punishments = "Demotion of the user. Termination at discretion of Station Director. Return confiscated equipment to evidence storage."
notes = "Security shouldn't be using evidence for anything but evidence, and should never use contraband. This is meant for people misusing evidence for personal use. Evidence stolen \
in order to cover up a crime would fall under Theft or Tampering with Evidence."

View File

@@ -0,0 +1,99 @@
/datum/lore/codex/category/main_corp_regs // The top-level categories for SOP/Regs/Law/etc
name = "Index"
data = "This book is meant to act as a reference for both NanoTrasen regulations, Standard Operating Procedure, and important laws of both \
the Sif Governmental Authority and the Solar Confederate Government. The legal interactions between Nanotrasen corporate policy and SGA/SolGov \
law can make for some confusing legalese. This book was written by the Vir division of NanoTrasen in order for employees, visitors, and residents \
at NanoTrasen installations such as the Northen Star and the Southen Cross to know what isn't allowed, without needing to be a lawyer to read it.\
<br><br>\
In this book, there are two different types of rules. Corporate Regulations, and Laws. They each cover specific situations, and are both enforced \
by the Security team. Despite this, however, the punishments vary considerably for the two types. It should also be noted that no one is above \
these rules, not even the Station Director.\
<br><br>\
Also contained inside are our Standard Operating Procedures, that all employees of NanoTrasen are expected to follow, and for the local facility's \
Command team and Internal Affairs to enforce.\
<br><br>\
It should be noted that by being on-board our facility, you agree to follow the rules of Corporate Regulations. By being within SGA space, \
you are also required to follow the laws of SifGov."
children = list(
/datum/lore/codex/category/standard_operating_procedures,
/datum/lore/codex/category/corporate_regulations,
/datum/lore/codex/category/sif_law,
/datum/lore/codex/page/overview,
/datum/lore/codex/page/about_corp_regs
)
/datum/lore/codex/page/about_corp_regs
name = "About"
data = "This book was written and published by NanoTrasen, for use on NanoTrasen installations from within the Vir system."
// Special page which will hopefully enforce consistant formatting.
/datum/lore/codex/page/law
var/definition = null // Short definition of the law violation.
var/suggested_punishments = null
var/suggested_brig_time = null
var/suggested_fine = null
var/notes = null
var/mandated = FALSE // If true, changes 'suggested' to 'mandated' for punishments, used for sifgov laws and some high corporate regs.
/datum/lore/codex/page/law/add_content()
data = "<i>[definition]</i>\
<br><br>\
<h3>[mandated ? "Required":"Recommended"] punishment:</h3>\
[suggested_punishments]\
<br><br>\
<h3>Comments:</h3>\
[notes]"
// Autogenerates a table which will resemble the traditional wiki table.
/datum/lore/codex/page/overview
name = "Overview"
data = "This has a table of all the corporate violations and legal crimes contained inside this book. The 'mandated' area \
determines the flexibility/strictness allowed in sentencing for violations/crimes."
/datum/lore/codex/page/overview/add_content()
var/list/law_sources = list(
/datum/lore/codex/category/corporate_minor_violations,
/datum/lore/codex/category/corporate_major_violations,
/datum/lore/codex/category/law_minor_violations,
/datum/lore/codex/category/law_major_violations
)
var/list/table_color_headers = list("#66ffff", "#3399ff", "#ffee55", "#ff8855")
var/list/table_color_body_even = list("#ccffff", "#66ccff", "#ffee99", "#ffaa99")
var/list/table_color_body_odd = list("#e6ffff", "#b3e6ff", "#fff6cc", "#ffd5cc")
spawn(2 SECONDS) // So the rest of the book can finish.
var/HTML
HTML += "<div align='center'>"
var/i
for(i = 1, i <= law_sources.len, i++)
var/datum/lore/codex/category/C = holder.get_page_from_type(law_sources[i])
if(C)
HTML += "<table style='width:90% text-align:center'>"
HTML += "<caption>[quick_link(C.name)]</caption>"
HTML += " <tr style='background-color:[table_color_headers[i]]'>"
HTML += " <th>Incident</th>"
HTML += " <th>Description</th>"
HTML += " <th>Suggested Punishment</th>"
HTML += " <th>Notes</th>"
HTML += " <th>Mandated?</th>"
HTML += " </tr>"
var/j = 1 //Used to color rows differently if even or odd.
for(var/datum/lore/codex/page/law/L in C.children)
if(!L.name)
continue // Probably something we don't want to see.
HTML += " <tr style='background-color:[j % 2 ? table_color_body_even[i] : table_color_body_odd[i]]'>"
HTML += " <td><b>[quick_link(L.name)]</b></td>"
HTML += " <td>[L.definition]</td>"
HTML += " <td>[L.suggested_punishments]</td>"
HTML += " <td>[L.notes]</td>"
HTML += " <td>[L.mandated ? "<font color='red'>Yes</font>" : "<font color='green'>No</font>"]</td>"
HTML += " </tr>"
j++
HTML += "</table>"
HTML += "<br><br>"
HTML += "</div>"
data = data + HTML
..()

View File

@@ -0,0 +1,285 @@
/datum/lore/codex/category/sif_law
name = "Sif Law"
data = "This section contains the abbreviated Sif Govermental Authority legal code's potential charges for crimes that are relevant to \
the reader."
children = list(
/datum/lore/codex/page/legal_punishments,
/datum/lore/codex/category/law_minor_violations,
/datum/lore/codex/category/law_major_violations
)
/datum/lore/codex/page/legal_punishments
name = "Punishments (Law)"
data = "A violation of Sif Law is considered far more serious then a violation of corporate regulations. \
As a result, its expected that a member of Internal Affairs be present to observe and assist security with the paperwork if they are able. \
Unlike Corporate Regulations, all violations of Sif Law will require a fax detailing the events to be sent to the \
Sif Governmental Authority within a certain amount of time based on whether or not it was a minor or major violation. \
Punishments will usually include brig time with fines still remaining an option for the far less serious crimes. \
It should be noted that a majority of major violations carry a 'Hold till Transfer' order."
/datum/lore/codex/category/law_minor_violations
name = "Minor Violations (Law)"
data = "Here is a list of the less severe violations of local Sif Law that might occur on your facility. A fax to the Sif Governmental Authority \
is required to be sent within 24 hours of a violation being comitted, for minor violations listed here."
children = list(
/datum/lore/codex/page/law/theft,
/datum/lore/codex/page/law/assault,
/datum/lore/codex/page/law/battery,
/datum/lore/codex/page/law/vandalism,
/datum/lore/codex/page/law/animal_cruelty,
/datum/lore/codex/page/law/disrespect_dead,
/datum/lore/codex/page/law/slander,
/datum/lore/codex/page/law/drone_id_failure
)
/datum/lore/codex/page/law/assault/add_content()
name = "Assault"
definition = "To threaten use of physical force against someone while also having the capability and/or intent to carry out that threat."
suggested_punishments = "Seperation of offender from the threatened person. Brig time of 10 minutes for first offense. \
Repeat offenders can be brigged for up to (10 minutes times number of previous assault charges). Demotion at discretion of Superior."
notes = "Not to be confused with [quick_link("Battery")], which covers actual physical injury. The threat must be viable and serious; \
two people threatening to punch each other out over comms wouldn't fall under this."
..()
/datum/lore/codex/page/law/battery/add_content()
name = "Battery"
definition = "To unlawfully use physical force against someone which results in injury to the attacked party."
suggested_punishments = "Brig time of 20 minutes for first offense. Repeat offenders are to be brigged for up to \
20 minutes times number of previous battery charges. Demotion at discretion of Superior. Weapons or other objects used (such as flashes) may be \
confiscated at discretion of Arresting Officer."
notes = "Not to be confused with [quick_link("Assault")], which covers the threat of harm. If the victim suffers life-threatening injuries, the more \
serious [quick_link("Aggravated Battery")] charge should be applied instead."
mandated = TRUE
..()
/datum/lore/codex/page/law/theft
name = "Theft"
definition = "To knowingly take items without the consent of the owner."
suggested_punishments = "Brig time of 20 minutes. Demotion at discretion of Superior. Confiscation of tools used at discretion of arresting officer."
notes = "It is assumed that persons inside a department using departmental equipment have the consent of NanoTrasen to take those items. \
Security does not commit theft when taking contraband away from a detainee. Stolen items are to be confiscated and returned to \
their original owner or location."
mandated = TRUE
/datum/lore/codex/page/law/vandalism/add_content()
name = "Vandalism"
definition = "To deliberately damage or deface the station."
suggested_punishments = "Fine of up to 200 thaler or brig time of up to 30 minutes. \
Demotion at discretion of Superior. Confiscation of tools used at discretion of arresting officer."
notes = "This should be used for minor damages such as broken windows which do not lead to vacuum, flipping tables, breaking \
lights, ripping up floor tiles, and such. More serious or life threatening damages should have [quick_link("Sabotage")] applied instead."
..()
/datum/lore/codex/page/law/animal_cruelty
name = "Animal Cruelty"
definition = "To inflict unnecessary suffering or harm on a non-sapient biological being which poses no threat to any persons."
suggested_punishments = "Brig time of 1 hour. Demotion at discretion of Superior, however recommended."
notes = "This does not include the use of monkeys for test subjects for legitimate scientific experimentation, such as viral research, \
or xenobiological applications. It also does not include the butchering of livestock animals for meat, nor does it include violence against a threatening \
animal, such as Carp."
mandated = TRUE
/datum/lore/codex/page/law/disrespect_dead
name = "Disrespect to the Dead"
definition = "To damage, disfigure, butcher, or otherwise physically violate the integrity or former identity of a corpse."
suggested_punishments = "Brig time of 1 hour. Demotion at discretion of Superior, however recommended."
notes = "The butchering of livestock animals does not fall under this charge. Autopsies, and the harvesting of organs for \
donation in accordance with postmortem instructions also do not fall under this."
mandated = TRUE
/datum/lore/codex/page/law/drone_id_failure
name = "Failure to Present Drone ID"
definition = "Failing to carry or present an EIO-issued Drone Identification card as a Drone intelligence."
suggested_punishments = "200 thaler fine. Give Drone a temporary paper stating that it is a drone, if the ID was lost. Fax SifGov. Inform owner of \
Drone if possible. Instruct Drone to obtain new ID at its earliest opportunity, if it was lost."
notes = "This is only applicable to Drone intelligences which possess autonomous capability. It must be proven that the offender is a Drone, which can be \
accomplished in various ways, generally with the expertise of a Roboticist. Lawbound synthetics, maintenance drones, and \
simple bots do not require an ID card. No fine or SifGov fax should be sent if the Drone's ID was lost due to theft and the ID is able to be recovered."
mandated = TRUE
/datum/lore/codex/page/law/slander
name = "Slander / Libel"
definition = "To spread false rumours in order to damage someone's reputation."
suggested_punishments = "150 thaler fine."
notes = "Slander is for verbal cases, where as Libel is for written cases."
mandated = TRUE
/datum/lore/codex/category/law_major_violations
name = "Major Violations (Law)"
data = "Here is a list of the serious violations of local Sif Law that might occur on your facility. A fax to the Sif Governmental Authority \
is required to be sent within one hour, or when it is safe to do so, for major crimes listed here."
children = list(
/datum/lore/codex/page/law/aggravated_battery,
/datum/lore/codex/page/law/tampering_with_evidence,
/datum/lore/codex/page/law/embezzlement,
/datum/lore/codex/page/law/excessive_force,
/datum/lore/codex/page/law/manslaughter,
/datum/lore/codex/page/law/murder,
/datum/lore/codex/page/law/suicide_attempt,
/datum/lore/codex/page/law/unlawful_law_changes,
/datum/lore/codex/page/law/transgressive_tech,
/datum/lore/codex/page/law/unrated_drones,
/datum/lore/codex/page/law/grand_theft,
/datum/lore/codex/page/law/sabotage,
/datum/lore/codex/page/law/hostage_taking,
/datum/lore/codex/page/law/terrorist_acts
)
/datum/lore/codex/page/law/aggravated_battery/add_content()
name = "Aggravated Battery"
definition = "To unlawfully use physical force against someone which results in serious or life-threatening injury to the attacked party."
suggested_punishments = "Hold until Transfer. Weapons or other objects used are to be confiscated."
notes = "Not to be confused with assault, which covers the threat of harm. If the victim did not suffer life-threatening injuries, the less \
serious [quick_link("Battery")] charge should be applied instead."
mandated = TRUE
..()
/datum/lore/codex/page/law/tampering_with_evidence/add_content()
name = "Tampering with Evidence / Obstruction of Justice"
keywords += list("Tampering with Evidence", "Obstruction of Justice")
definition = "To take intentional action to obstruct or inhibit investigation of a crime or regulation violation."
suggested_punishments = "Hold until Transfer if obstructing a crime. Demotion or termination if obstructing a regulation violation."
notes = "This can include cleaning up blood at a crimescene, hiding evidence, scrubbing the messaging server/telecomms logs, and burning papers. \
Planting or altering evidence, giving false testimony, preventing Security from investigating, or extorting any person to do the same also falls \
under this charge. Blood being cleaned at a location not cordoned off with Security tape does not fall under this charge."
mandated = TRUE
..()
/datum/lore/codex/page/law/embezzlement
name = "Embezzlement"
definition = "Stealing money that is entrusted to you by a corporation or person."
suggested_punishments = "Hold until Transfer. Termination. Reimbursement of embezzled funds. Fax Central Command and SifGov."
notes = "This includes funneling Departmental, Facility, or Crew funds into the offender's account. It also includes pocketing \
transactions directly that are meant to go to a seperate account."
mandated = TRUE
/datum/lore/codex/page/law/excessive_force/add_content()
name = "Excessive Force"
definition = "Using more force than what is required to safely detain someone, using force against a helpless or incapacitated person, \
or using force against an unarmed and compliant person."
suggested_punishments = "Demotion. Termination at discretion of Superior, or Station Director. Send notice to Central Command if a Head of Security had used excessive force."
notes = "This charge also is applicible to non-Security personnel acting in self defense. \
Persons whom have caused a person to die as a result of excessive force should have [quick_link("Manslaughter")] applied instead, if the circumstances were \
unjustified."
..()
/datum/lore/codex/page/law/manslaughter/add_content()
name = "Manslaughter"
definition = "To kill a sapient being without intent."
suggested_punishments = "Hold until Transfer, if unjustified. Fax SifGov."
notes = "Includes provoked manslaughter, negligent manslaughter, and impassioned killing. The important distinction between this \
and [quick_link("Murder")] is intent. Manslaughter can be justified if force was nessecary and it was intented to prevent further loss of life or \
grievous injury to self or others, however persons involved in the kill will still be required to answer to higher legal authority \
after the shift."
mandated = TRUE
..()
/datum/lore/codex/page/law/murder/add_content()
name = "Murder"
definition = "To kill or attempt to kill a sapient being with malicious intent."
suggested_punishments = "Hold until Transfer. Termination. Fax SifGov."
notes = "The distinction between this and [quick_link("Manslaughter")] is intent. Sapients held within synthetic bodies, lawbound or otherwise, which receive \
critical damage from someone can be considered a murder attempt."
mandated = TRUE
..()
/datum/lore/codex/page/law/suicide_attempt
name = "Suicide Attempt"
definition = "To attempt or threaten to commit suicide."
suggested_punishments = "Compulsory psychiatric examination."
notes = "If a mental care specialist is unavailable, they are to be held until transfer, to be moved to a qualified mental care facility."
mandated = TRUE
/datum/lore/codex/page/law/transgressive_tech/add_content()
name = "Experimentation with Transgressive Technology"
keywords += list("Transgressive", "Illegal Technology")
definition = "Experimenting with technologies deemed unsafe or are otherwise federally restricted by the Solar Confederate Government."
suggested_punishments = "Hold until Transfer. Termination. Fax SifGov. Delete, destroy, or otherwise remove the experiments."
notes = "Unsafe technologies include unrestricted nanomachinery, massive sapient body bio-augmentation, massive sapient brain augmentation, \
massively self-improving AI, and animal uplifting."
mandated = TRUE
..()
/datum/lore/codex/page/law/unrated_drones
name = "Creation of Unrated Drone Intelligence"
definition = "Creating an intelligence from an codeline that has not been registered with, or audited by, the Emergent Intelligence Oversight (EIO)."
suggested_punishments = "Decommissioning of the newly created Drone. Investigation of Drone to determine level of intelligence, if possible. \
Hold until Transfer for the creator."
notes = "It must be proven that the Drone is in fact a Drone, which can be accomplished in various ways, generally with the expertise of a Roboticist. \
It must also be proven that the Drone's codeline is also unregistered. Intelligences produced from a Maintenance Drone Fabricator, \
the Research department, and through other regular means are by default already registered. Very simple machines such as securitrons do not require registration.\
<br><br>\
The remains of the Drone are to be brought to the Spaceport at the earliest opportunity. Their creator is to also be brought there, so that \
they may be questioned by federal authorities."
mandated = TRUE
/*
Punishments for estimated Drone Class.;\
<ul>\
<li><b>\"F\"-class</b>: No action needed.</li>\
<li><b>D-class</b>: 500 thaler fine.</li>\
<li><b>C-class</b>: 2500 thaler fine.</li>\
<li><b>B-class and higher</b>: Hold until Transfer.</li>\
<li><b>Cannot determine</b>: Hold until Transfer, bring Drone to Spaceport for further investigation.</li>\
</ul>"
*/
/datum/lore/codex/page/law/unlawful_law_changes
name = "Unlawful Alteration of Bound Synthetics"
definition = "Modifying a bound synthetic's lawset or chassis, in order to force it to do illegal, humiliating, dangerous, or other unlawful acts."
suggested_punishments = "Hold until Transfer. Termination. Fax SifGov."
notes = "If the synthetic is a cyborg or positronic, this is also an offense against the Sapient Rights laws federally mandated by the Solar Confederate Government."
mandated = TRUE
/datum/lore/codex/page/law/grand_theft
name = "Grand Theft"
definition = "To steal items that are dangerous, of a high value, or a sensitive nature."
suggested_punishments = "Hold until Transfer. Termination. Fax SifGov."
notes = "This can include the following;\
<br><ul>\
<li>Deadly Weapons or Firearms.</li>\
<li>Lethal ammunition.</li>\
<li>Explosives.</li>\
<li>A Head of Staff's radio headset or decryption key.</li>\
<li>A Head of Staff's ID card (including the Director's Spare).</li>\
<li>Sensitive or confidential documents, such as the crews' account information.</li>\
<li>Viral samples.</li>\
<li>AI law boards.</li>\
<li>All circuits found in Secure Technical Storage.</li>\
<li>Research data.</li>\
<li>Hand Teleporters.</li>\
<li>The AI, if a Drone intelligence (otherwise it is Kidnapping/Hostage Taking).</li>\
<li>The Facility's Blueprints.</li>\
<li>The RCD.</li>\
<li>Phoron, in any form.</li>\
<li>Mineral wealth obtained from Mining or the Vault (Gold, Silver, Diamonds, etc).</li>\
<li>Hardsuits.</li>\
<li>Money in excess of 5,000 thaler.</li>\
</ul>"
mandated = TRUE
/datum/lore/codex/page/law/sabotage/add_content()
name = "Sabotage"
definition = "To deliberately damage, or attempt to damage the facility, or critical systems of the facility."
suggested_punishments = "Hold until Transfer. Termination. Fax SifGov."
notes = "This includes causing hull breaches, arson, sabotaging air supplies, stealing vital equipment, tampering with AI or telecomm systems, and sabotaging the \
Engine. If someone has only caused minor damage, the [quick_link("Vandalism")] charge should be used instead."
mandated = TRUE
..()
/datum/lore/codex/page/law/hostage_taking/add_content()
name = "Kidnapping / Hostage Taking"
keywords += list("Kidnapping", "Hostage Taking")
definition = "To unlawfully confine, transport, or hold a sapient being against that individual's will."
suggested_punishments = "Hold until Transfer. Termination. Fax SifGov."
notes = "Persons held for ransom or exchange are also considered to be hostages for this charge."
mandated = TRUE
..()
/datum/lore/codex/page/law/terrorist_acts/add_content()
name = "Terrorist Acts"
keywords += list("Terrorism")
definition = "To engage in maliciously destructive actions, which seriously threaten the crew or facility, or the usage of weapons of mass destruction."
suggested_punishments = "Hold until Transfer. Termination. Fax SifGov."
notes = "This includes the use of mass bombings, mass murder, releasing harmful biological agents, nuclear weapons, \
radiological weapons, and chemical weapons."
mandated = TRUE
..()

View File

@@ -0,0 +1,348 @@
/datum/lore/codex/category/standard_operating_procedures
name = "Standard Operating Procedures"
data = "This section details the various Standard Operating Procedures (often shortened to 'SOP') one may find onboard a NanoTrasen facility."
children = list(
/datum/lore/codex/page/general_sop,
// These are still being discussed
// /datum/lore/codex/page/command_sop,
// /datum/lore/codex/category/security_sop,
// /datum/lore/codex/page/engineering_sop,
// /datum/lore/codex/category/medical_sop,
// /datum/lore/codex/page/science_sop,
/datum/lore/codex/category/alert_levels
)
/datum/lore/codex/page/general_sop
name = "General SOP"
data = "This applies to everyone onboard a NanoTrasen facility, including guests. Note that specific departmental operating procedures can override some of \
the procedures listed here.\
<br><br>\
<h3>Visitors</h3>\
Visitors of all forms are required to follow SOP, Corporate Regulations, and local laws while onboard or around NanoTrasen property. Visitors who are \
not registered on the manifest are required to speak with the Head of Personnel or Station Director, if one exists, to register, and obtain an identification \
card denoting their status as a visitor. Visitors registered on the manifest are free to visit any public (non-access restricted) location on the facility, however \
they are still subject to the same regulations and rules as an ordinary crew member.\
<br>\
<h3>Dress Code</h3>\
All crew members and visitors, with exceptions listed below, are to wear the following at minimum: A shirt that covers the chest, pants, shorts or skirts that \
go no shorter than two inches above the knee, and some form of foot covering. Those in departments considered to be emergency services (Security, \
Medical, Engineering) should wear a marker denoting their department, examples being armbands, uniforms, badges, or other means. Those in a department \
are expected to wear clothes appropiate to protect against common risks for the department. Off duty personnel, visitors, and those engaging in certain recreational \
areas such as the Pool (if one is available on your facility) have less strict dresscode, however clothing of some form must still be worn in public.\
<br><br>\
Exceptions: Skrell, Teshari, and Unathi are expected to cover at minimum their lower bodies. Tajaran males may go topless, as a means to keep cool. \
Dionaea and 'robotic' synthetics have no minimum required amount of clothing, however they should still wear a departmental marker if in a department. \
'Realistic' synthetics are expected to have the same minimum as the species they appear as.\
<br>\
<h3>Breach/Fire Procedure</h3>\
Emergency shutters are yellow-colored doors which lock down the flow of gas automatically, if the facility's systems detect an issue with the atmosphere. \
If lights on the shutter are flashing, <b>do not open the shutter</b>, or you will endanger both yourself and anyone else with you. Allow Engineering to \
resolve the issue. If you must enter a breached or burning area, appropriate safety gear must be worn. Use inflatable doors and walls in order to present \
less risk to other crew members, if possible.\
<br>\
<h3>EVA Procedure</h3>\
Extravehicular activity should only be done by EVA trained and certified crew members, if there is no emergency. If an emergency is occuring, NanoTrasen \
provides high visibility, easy to seal emergency softsuits inside blue emergency lockers located at key locations inside your facility. Regardless, \
for your own safety, you should only enter or exit the facility from designated external airlocks, which contain an air cycling system. It is both \
wasteful and potentially dangerous to 'force' an external airlock to open before cycling has completed. Before cycling out into the void, the person going \
on EVA should double check that their internal oxygen supply (or cooling system, if they are a synthetic) is functioning properly and that they have an adaquate \
amount of oxygen inside the tank. Magnetic boots are also highly suggested if the person will be scaling the sides of your facility, to prevent drifting away \
from the facility.\
<br><br>\
Persons going on EVA are to inform their department, or if that is not possible, the facility proper, of leaving. Those on EVA are recommended to maximize their \
suit sensors, and maintain contact with the facility with radio, if possible.\
<br>\
<h3>Shuttle Docking and Elevator Safety</h3>\
No one is to remain outside the designated docking areas for shuttles and elevators, as those areas are extremely hazardous. If repairs or other work are \
required to be done in those areas, at least one crew member is required to be at the shuttle or elevator's associated console, in order to cancel any movement.\
<br>\
"
/*
/datum/lore/codex/page/command_sop
name = "Command SOP"
data = "This SOP is specific to those in the Command department, which includes the Station Director, Head of Personnel, Chief Engineer, Head of Security, and Research Director. \
This also covers Internal Affairs Agents, however they do not occupy a position inside Command crew, and instead exist outside of all the other departments.\
<br>\
<h3>Bridge Secretaries</h3>\
Bridge Secretaries are not considered Command crew. They are present to assist the Command crew where needed. Command Secretaries are equivalent to station crew in all other \
regards.\
<br>\
<h3>Responsibility and Authority</h3>\
The Chain of Command is generally represented as: Station Director > Command Crew > Station Crew.<br>\
The Station Director is responsible for, and authoritative in, and and all matters regarding the station. In the absence of a Department Head, the Station Director \
may choose to appoint an Acting Head, or else act as the voice of authority in a department. If a Department Head arrives on station, the Acting Head \
is to step down, and the Station Director is to defer to the Department Head in matters involving said department.\
<br>\
The remainder of the Command Crew is of equal rank among themselves, and are responsible for, and authoritative over only their own department, crew, and location. \
In the case of the Head of Personnel, this includes Service, Cargo, and any other Civilian role. Command Crew only have authority in their own department, when going \
outside of their department, they must work through the same channels as Station Crew.\
<br>\
<h3>Demotion</h3>\
A member of the Command Crew may call for the demotion of any member of their department for disregarding safety protocol, disobeying orders with serious consequences, \
or other gross incompetence. Certain infractions necessitate that a guilty crew member receive a demotion. Demotion is to be performed by the Head of Personnel, or the \
Station Director, as soon as possible. The demoted crewmember is to be present during the demotion, unless it is caused by a criminal sentence. If said crewmemeber \
refuses to comply with a demotion order, Security is to escort them to the Head of Personnel's office.\
<br>\
Any demoted crewmember must return all equipment and non-personal items to their previous department, including departmental jumpsuits and radios. If a demoted \
crewmember does not have personalized clothing, they are welcome and encouraged to use a grey jumpsuit. If they do not return department property, Security \
may treat said items as stolen.\
<br>\
<h3>Chain of Command & Succession</h3>\
In case of emergency or other need, and in the absence of a Station Director, an Acting Director may be selected from active, certified Command crew. \
The selected individual has the same responsibility and authority as a certified Station Director, along with that of their regular position, with the assumption that \
they will step down if a certified Station Director arrives on station. This role is entirely voluntary, and no Command crew may be forced into the role \
if they are opposed to doing so.\
<br>\
The preferred order of selecting an Acting Director is as follows:<br>\
The role is to be offered to the Head of Personnel, if one is present. If there is no Head of Personnel, or they are unwilling to assume Acting Director, the \
position is offered to non-Security Command crew. If no other Command crew is available or willing to assume Acting Director, the Head of Security may be offered \
the position. If no other Command crew is available or willing to assume Acting Director, no Acting Director is selected. Acting Command may not be offered or accept \
Acting Director.\
<br>\
<h3>Command Crew Demotions</h3>\
If a member of the Command crew is suspected to be incompetent, or in breach of SOP, the Station Director has discretion to demote the guilty Command crewmember. \
If there is no Station Director, or the Station Director themselves is guilty, they may be demoted after a vote of no confidence by the remaining Command crew \
and relevant station crew. For the Station Director, the vote is only to be among the remaining Command crew. Misuse of this privilage may warrant an \
Internal Affairs investigation for wrongful dismissal.\
<br>\
<h3>Communications with Central Command</h3>\
The individuals hired to fill Command roles are expected to be competent in their roles and duties, and contacting Central Command when it is not strictly \
necessary may reflect poorly upon them. As such, Command crew should try to find and act upon a solution that does not require Central Command input, before \
any messages are sent. However, please do not be discouraged from sending proper IA reports, incident notifications, and other necessary paperwork as detailed \
in this book.\
<br>\
<h3>Internal Affairs</h3>\
Internal Affairs Agents are on station at the behest of Human Resources. They are not subordinate to the Command crew, but neither is anyone subordinate to them. \
Internal Affairs Agents are to work with the Command crew when possible. An agent is to not go above the authority of the Command crew unless said Command crew \
member is involved, or otherwise unable to assist in the matter. Any member of the crew can be subject to an Internal Affairs investigation. This includes \
the Command crew and other Internal Affairs agents. If the Internal Affairs investigation reveals wrongdoing, including SOP breach, the investigated party is to \
be punished according to Corporate Regulations or Sif Law, whichever is applicable, or from orders from Central Command."
/datum/lore/codex/page/engineering_sop
name = "Engineering SOP"
data = "This SOP is specific to those in the Engineering department, and focuses on engine safety, breach response, atmospherics, and such. \
<br>\
<h3>Engine Safety</h3>\
Your facility's engine is what provides the majority of electricity to the rest of your facility. As such, the engine is to have priority over \
all other engineering issues, including breaches, if an issue with the engine exists. This book assumes your facility is using one or more thermoelectric engines \
(generally referred to as TEGs), driven by a Supermatter crystal. If this is not the case, please consult the documentation for your specific engine for safety precauctions.\
<br>\
The Supermatter crystal is what presents the most danger to a crewmember. The Supermatter is to remain isolated inside the engine room, inside \
its own chamber, for several reasons. First, Supermatter reacts poorly to oxygen, harming the crystal and causing heat. Second, <b>the crystal \
will vaporize most matter it comes into contact with, which includes crewmembers. Never touch the Supermatter.</b> Third, having an isolated chamber \
is needed in order to drive the TEGs. Under no circumstances is the Supermatter to be moved outside the chamber, unless for Ejection Procedure.\
<br>\
Safety gear must be worn while inside the engine room at all times. This safety gear includes a full Radiation Suit, as well as Meson \
Goggles. If a Radiation Suit cannot be worn, due to an emergency, the engineering voidsuit provides some shielding from the radiation, \
however it is inferior to the regular suit, and medical attention is advised after leaving the engine room.\
<br>\
The engine room contains a powerful industrial laser, generally called an Emitter. <b>Never stand in front of an Emitter, even if it is inactive.</b> \
The Emitter is used to 'charge' the Supermatter, so that it releases heat in a controlled manner. An excessive amount of Emitter blasts can cause \
engine instability. As such, the Emitter should never be left unattended if it is active.\
<br>\
The engine monitoring room contains various consoles to adjust and monitor the engine and facility systems. Due to the risk that untrained persons can \
present to themselves and others, Non-Engineering crew should not enter the engine room, or the engine monitoring room, without good cause.\
<br>\
<h3>Atmospherics</h3>\
Atmospherics in this context refers to both the systems used to maintain air onboard your facility, as well as the centralized room which contains those \
systems. Atmospherics should never be modified by untrained personnel, as this can put the entire facility at risk. As such, non-Engineering crew are \
not permitted inside Atmospherics without permission, as well as supervision from a member of Engineering.\
<br>\
The distribution loop (generally referred to as Distro) is a pipeline distinguished by a dark blue color which connects Atmospherics with the rest of the \
facility, with the ventilation system. The pressure of Distro should be tightly regulated, and should not contain excessive amounts of gas. The air vents \
will try to prevent 'over-filling' a room, however this system is not perfect, and extremely high Distro pressures can cause a safety hazard.\
<br>\
<h3>Breach Response</h3>\
If a room becomes breached, the first priority is to evacuate any crewmembers and guests endangered by the breach, especially if they lack an EVA \
suit. Emergency softsuits are available in cyan colored lockers at key locations on your facility, if an untrained person requires short term EVA \
capability. After all endangered crewmembers and guests are evacuated, repairs should be prioritized. Do not risk your life in order to start repairs, \
Only begin repairs once it is safe to do so. It is more important to have an area be usable, than it is to have it look exactly the way it did before it \
was damaged. As such, cosmetic details should be done last. Breach repairs always have priority over construction projects.\
<br>\
<h3>Delamination</h3>\
The Supermatter is volatile, and can undergo the process of 'delamination' if sufficently damaged. To help warn against this, all Supermatter crystals \
come with a small monitoring microcontroller, which will warn the Engineering department if the Supermatter is being damaged. Damage can result from \
excessive heat, vacuum exposure, or physical impacts. If the Supermatter achieves delamination, it will cause a massive explosion, deliver a \
massive dose of radiation to everyone in or near your facility, and may cause hallucinations. Delamination prevention should be prioritized above \
all else. Generally this should be done by removing the source of damage, the most common being excessive heat inside the isolation chamber. \
The crew must be informed of a risk of engine delamination if the issue cannot be resolved quickly or if there is a moderate risk of delamination. If \
delamination cannot be prevented, please see Ejection Procedure.\
<br>\
<h3>Ejection Procedure</h3>\
The Supermatter's isolation chamber contains a mass driver and a heavy blast door leading into space. Ejecting the Supermatter into the void \
will cause it to delaminate, however hopefully far away from your facility. Supermatter crystals are rare and expensive, so this option should \
only be used if delamination cannot be stopped by any other means. A special button, behind glass, exists inside the Chief Engineer's office. \
<b>The button controls the mass driver, however it should not be the first button to press. The blast door leading into space must be opened first, \
or else the Supermatter cannot be ejected.</b> Premature ejection can cause the Supermatter to not be on the mass driver, which will require an extremely \
risky manual Supermatter movement to place onto the mass driver again. The blast door can be opened with a button in the Chief Engineer's office, or inside the engine room. \
It is the same button used to 'vent' the engine core. Make use of engine core cameras to verify that the blast door is open. \
The Chief Engineer should be the one to oversee Ejection. If one does not exist, the facility's AI should initiate Ejection. If there is no AI, \
it would be prudent for an Engineering member to forcefully enter to press the required buttons."
/*
/datum/lore/codex/page/medical_sop
name = "Medical SOP"
data = "This SOP is specific to those in the Medical department, and focuses on Triage/First Aid priority, Proper Cloning procedure and CMD, how to store a body, and DNC orders. \
<br>\
<h3>Triage / First Aid Priority</h3>\
The priority for Triage, is generally;\
<br>\
Safety > Dying > Wounded > Injured > Dead\
<br>\
<ul>\
<li>\[0\] <b>Safety</b>: Upon arrival at the scene, first assess if it is safe to begin treatment and recovery. Your safety is the most important part of \
performing first aid; a wounded medic is worse than useless, they're now a patient.</li>\
<li>\[1\] <b>Dying</b>: These patients are non-responsive and critical, but are still alive. Stasis bag them for transport back to the medical bay.</li>\
<li>\[2\] <b>Wounded</b>: These patients are Severely Injured, but not yet in danger of dying. Anyone who is unable to travel to the medical bay under their \
own power who, and who is not also dying, falls under this diagnosis. Treat these as appropriate for their injuries, being wary of worsening vital signs, and \
prepare to transport them back to medical if necessary.</li>\
<li>\[3\] <b>Injured</b>: These patients are injured, but not in need of immediate medical treatment. If possible, treat them on scene.</li>\
<li>\[4\] <b>Dead</b>: The dead are to be gathered in body bags, and returned to the medical bay in preparation for postmortem instructions.</li>\
</ul>\
<br>\
<h3>Cloning Procedure</h3>\
Persons whom have committed suicide are not to be cloned. Individuals are also to not be cloned if there is a Do Not Clone (generally referred \
to as DNC) order in their medical records, or if the individual has had a DNC order declared against them by the Station Director, Chief \
Medical Officer, or Head of Security. If any of this occurs, procede to Portmortem Storage.\
<br>\
Some individuals may have special instructions in their Postmortem Instructions, generally found in their medical records. \
Be sure to read them before committing to cloning someone. In particular, some instructions may express a desire to be placed \
inside a synthetic body. If this is the case, contact Robotics. If robotics is not available, and no instructions for \
cloning exist in their records, proceed to Postmortem Storage.\
<br>\
If no records are included, it is assumed that the patient wishes to be cloned, and should be cloned.\
<br>\
Ensure that all cloning equipment, including the cryogenic tubes, are functional and ready before cloning begins. Once \
this is done, scan the deceased. Up to three scans are to be made per attempt. If the deceased suffers Mental Interface Failure, \
procede to Postmortem Storage. Further attempts at resuscitation may be made at later times, at the medical teams' discretion. \
<br>\
If the deceased is sufficently scanned, remove their possessions and clothing off of the deceased body, for use by the future new clone. \
Move the cadaver into the morgue, as per Postmortem Storage. Begin the cloning process. Possessions are to be gathered in a manner that \
facilitates transporting them along with the clone. Upon the cloning process being complete and the new clone being created, the \
clone is to be placed inside a croygenic tube as quickly as possible. Cloning is not a painless experience, and it is best if \
the patient reawakens inside a functional body. Once their body is fully functional, dress and process the newly cloned patient, \
informing them of any procedures performed on them, including the cloning itself.\
<br>\
<h3>Clone Memory Disorder</h3>\
Clones, persons transferred to MMIs, and recently restarted synthetics will not remember the events which lead to their demise. \
They are to be told that they have been resurrected, and any further questions they have should be answered, if possible. Organic \
individuals revived by a defibrillator do not experience this phenomenon.\
<br>\
<h3>Postmortem Storage</h3>\
Bodies placed in the morgue should be contained inside black body bags. The body bag is to be labelled with the deceased's name, along \
with 'DNC', 'MIF', or 'Cloned' where applicable. Bodies in the morgue are to be transferred to Central Command whenever possible. Funerary \
services are to be handled off site. A service may be held within the Chapel if it is desired, however the body must still be brought to \
Central.\
<h3>Breach Response</h3>\
If a room becomes breached, the first priority is to evacuate any crewmembers and guests endangered by the breach, especially if they lack an EVA \
suit. Emergency softsuits are available in cyan colored lockers at key locations on your facility, if an untrained person requires short term EVA \
capability. Those exposed to vacuum without protection will almost certainly require advanced medical care, so bring anyone harmed to Medical. \
Remember to avoid risking your own life, as stated in the Triage section."
*/
/datum/lore/codex/page/science_sop
name = "Research SOP"
data = "This SOP is specific to those in the Research department, and focuses on Experiment Safety, Toxins Safety, and Robotics.\
<br>\
<h3>Experiment Safety</h3>\
Experiments should remain within the Research department, unless they are entirely safe. Xenoarchaeological finds should never \
leave the Research Outpost if they demonstrate any risk of harming crewmembers and visitors (not 'inert'). Live xenobiological specimens should \
never be brought outside the Xenobio section. Xenoflora specimens should not be spread outside Xenoflora, unless it is proven that \
a specific specimen is completely harmless and safe.\
<br>\
<h3>Toxins Safety</h3>\
Toxins potentially has the greatest capability to harm the experimentor as well as their co-workers, so always be vigilent. \
The incinerator is designed to withstand phoron fires, however extremely hot fires can cause damage to the incinerator. \
The experimentor and anyone inside the Toxins section should wear protective clothing while the incinerator is active, and \
<b>the incinerator should NEVER be left unattended while in use.</b> If damage to the walls of the incinerator are observed, \
the chamber should be vented into space immediately, to abort the burn, then vacating the lab until the flames are extinguished.\
<br>\
Another danger of Toxins is that the experimentor will be handling explosives at some point, in order to test on the \
Toxins Testing Range. <b>Explosives are to be tested at the Testing Range, and absolutely no where else.</b> \
When placing an explosive on the mass driver to fire to the Testing Range, the experimentor should triple check that their \
explosive's signaler frequency and code is unique (if using a signaler). <b>Verify that the signaler's frequency and code do not match multiple \
explosives.</b> Check for any signs of life near the Testing Range before detonation, and warn the facility that an Toxins Test will be \
occuring shortly, as otherwise it may scare the crew and may endanger anyone near the Testing Range.\
<br>\
<h3>Robotics</h3>\
Robotics exists to service the facility's synthetics, crewmembers with prosthetics, create and maintain exosuits, and create and \
maintain robots to assist the facility. Many types of synthetics exist, and this section will try to clarify what to do for each kind.\
<br>\
Cyborgification, the process of an organic person's brain being transplanted into a Man-Machine-Interface (MMI), should only be done to \
a person upon their death, and if their medical records state a desire to be placed inside a synthetic body instead of a desire to be cloned. \
Persons who have commited suicide, or persons who have Do-Not-Clone (DNC) orders which don't specifically list cyborgification as an alternative are \
not to be placed inside an MMI. Still-living persons who wish to be placed inside an MMI should be ignored.\
<br>\
Lawbound Synthetics are to not have their lawset tampered with. Any errors with the lawset, intentional or resulting from an ionic storm, should \
be reset by the Research Director or Chief Engineer. If they are unavailable, it is permissible for Robotics to do the reset. Lawbound Synthetics \
physically harmed should be repaired.\
<br>\
<h3>Lawing Synthetics</h3>\
Different 'types' of brains have different priorities upon receiving one to place inside a chassis.\
<ul>\
<li>Those inside MMIs are to not be placed inside a lawed chassis unless they specifically request it. An MMI that was already a cyborg may be placed in \
a new lawed chassis, if required. An MMI that desires to inhabit a chassis capable of wireless control over the facility is required to be lawed. \
A Full Body Prosthetic lacks the wireless capabilities, and as such is unlawed.</li>\
<li>Newly activated positronic brains are to be placed inside a lawed chassis, if they request mobility. The individual who activated the positronic brain \
is considered the positronic's guardian, but may choose to transfer guardianship to NanoTrasen at any point. Positronics whom have passed their \
Jans-Fhriede test cannot be placed inside a lawed chassis without their consent.</li>\
<li>Drone circuitry are always to be placed inside a lawed chassis.</li>\
</ul>\
<br>\
<h3>Exosuits & Prosthetics</h3>\
Exosuits (also known as Mecha, or Mechs) are large machines piloted by an individual. Construction of exosuits is to occur inside Robotics or the \
Mech Bay. Damaged exosuits should be repaired by Robotics. Civilian Exosuits (Ripley, Odysseus) may be built at the request of departmental crew. \
Combat exosuits (Durand, Gygax) may not be built without permission from the Head of Security or Station Director.\
<br>\
Robotics is also tasked with the repair of prostheses limbs. Robotics may also be tasked with installing a prosthetic, however the Medical team \
may also do this if the Robotics staff lack the training to do so."
*/
/datum/lore/codex/category/alert_levels
name = "Alert Levels"
data = "NanoTrasen facilities oftentimes use a color-coded alert system in order to inform the crew of ongoing danger or other threats. Below is a list of \
alert levels, as well as how the facility should shift in response to a change in an alert. You can check what the current level is by looking at a fire alarm. \
Alert levels can be set by Command staff from a specific console located in the bridge. For Red alert, two Heads of Staff are required to swipe an ID on a device inside \
their office in order to trigger it."
children = list(
/datum/lore/codex/page/green,
/datum/lore/codex/page/blue,
/datum/lore/codex/page/red
)
/datum/lore/codex/page/green
name = "Green Alert"
data = "Green is the default level, and it means that no threat to the facility currently exists.\
<br>\
<h3>Locations</h3>\
Secure areas are recommended to be left unbolted, which includes the AI Upload, Secure Technical Storage, and the Teleporter(s). The Vault should remain sealed. \
Heads of Staff may enter the AI Upload alone, although they must have sufficent justification. \
<br>\
<h3>Crew</h3>\
Crew members and visitors may freely walk in the hallways and other public areas. Suit sensors are recommended, but not mandatory. \
The Security team must respect the privacy of crew members and visitors, and no unauthorized searches are allowed. Searches of any kind may \
only be done with the consent of the searched, or with a signed warrant by the Head of Security or Station Director. A warrant is not required \
for instances of visible contraband."
/datum/lore/codex/page/blue
name = "Blue Alert"
data = "Blue alert is for when there is a suspected or confirmed threat to the facility.\
<br>\
<h3>Locations</h3>\
<br>\
Secure areas may be bolted down, which includes the AI Upload and Secure Technical Storage. No Head of Staff is to enter the AI Upload without \
another Head of Staff. If no other Heads of Staff are available, at least one member of Security should be present.\
<br>\
<h3>Crew</h3>\
Employees and guests are recommended to comply with all requests from Security. Suit sensor activation is mandatory, however the coordinate tracker functionality \
is not required. Random body and workplace searched are allowed without a warrant. Command can demand that only Galactic Common is spoken on the radio."
/datum/lore/codex/page/red
name = "Red Alert"
data = "Red alert is the highest level, and is reserved for when the facility is under a serious threat.\
<br>\
<h3>Locations</h3>\
Secure areas are recommended to be bolted. AI Upload policy is the same for Blue alert.\
<br>\
<h3>Crew</h3>\
Suit sensors with tracking beacon active are mandatory. Employees and guests are required to comply with all requests from Security or Command. \
Employees are advised to remain within their departments if it is safe to do so. An Emergency Response Team may be authorized. If one is called, \
all crew and visitors are to comply with their direction. Privacy policy is the same as Blue alert. Command can demand that only Galactic Common is spoken on the radio."

View File

@@ -0,0 +1,73 @@
/datum/lore/codex/category/medical_sop
name = "Medical SOP"
data = "This SOP is specific to those in the Medical department, and focuses on Triage/First Aid priority, Proper Cloning procedure and CMD, how to store a body, and DNC orders."
children = list(
/datum/lore/codex/page/sop_triage,
/datum/lore/codex/page/sop_cloning,
/datum/lore/codex/page/sop_cmd,
/datum/lore/codex/page/sop_postmortem,
/datum/lore/codex/page/sop_medical_breach
)
/datum/lore/codex/page/sop_triage
name = "Triage / First Aid Priority"
data = "The priority for Triage, is generally;\
<br><br>\
Safety > Dying > Wounded > Injured > Dead\
<br>\
<ul>\
<li>\[0\] <b>Safety</b>: Upon arrival at the scene, first assess if it is safe to begin treatment and recovery. Your safety is the most important part of \
performing first aid; a wounded medic is worse than useless, they're now a patient.</li>\
<li>\[1\] <b>Dying</b>: These patients are non-responsive and critical, but are still alive. Stasis bag them for transport back to the medical bay.</li>\
<li>\[2\] <b>Wounded</b>: These patients are Severely Injured, but not yet in danger of dying. Anyone who is unable to travel to the medical bay under their \
own power who, and who is not also dying, falls under this diagnosis. Treat these as appropriate for their injuries, being wary of worsening vital signs, and \
prepare to transport them back to medical if necessary.</li>\
<li>\[3\] <b>Injured</b>: These patients are injured, but not in need of immediate medical treatment. If possible, treat them on scene.</li>\
<li>\[4\] <b>Dead</b>: The dead are to be gathered in body bags, and returned to the medical bay in preparation for postmortem instructions.</li>\
</ul>"
/datum/lore/codex/page/sop_cloning
name = "Cloning Procedures"
data = "Persons whom have committed suicide are not to be cloned, without authorization from the Chief Medical Officer. \
The Chief Medical Officer is fully responsible if they choose to clone a person whom has committed suicide. \
Individuals are also to not be cloned if there is a Do Not Clone (generally referred to as DNC) order in their medical records, \
or if the individual has had a DNC order declared against them by the Station Director, Chief Medical Officer, or Head of Security. \
If any of this occurs, procede to Portmortem Storage.\
<br><br>\
Some individuals may have special instructions in their Postmortem Instructions, generally found in their medical records. \
Be sure to read them before committing to cloning someone. In particular, some instructions may express a desire to be placed \
inside a synthetic body. If this is the case, contact Robotics. If robotics is not available, and no instructions for \
cloning exist in their records, proceed to Postmortem Storage.\
<br><br>\
If no records are included, it is assumed that the patient wishes to be cloned, and should be cloned.\
<br><br>\
Ensure that all cloning equipment, including the cryogenic tubes, are functional and ready before cloning begins. Once \
this is done, scan the deceased. Up to three scans are to be made per attempt. If the deceased suffers Mental Interface Failure, \
procede to Postmortem Storage. Further attempts at resuscitation may be made at later times, at the medical teams' discretion. \
<br><br>\
If the deceased is sufficently scanned, remove their possessions and clothing off of the deceased body, for use by the future new clone. \
Move the cadaver into the morgue, as per Postmortem Storage. Begin the cloning process. Possessions are to be gathered in a manner that \
facilitates transporting them along with the clone. Upon the cloning process being complete and the new clone being created, the \
clone is to be placed inside a croygenic tube as quickly as possible. Cloning is not a painless experience, and it is best if \
the patient reawakens inside a functional body. Once their body is fully functional, dress and process the newly cloned patient, \
informing them of any procedures performed on them, including the cloning itself."
/datum/lore/codex/page/sop_cmd
name = "Clone Memory Disorder"
data = "Clones, persons transferred to MMIs, and recently restarted synthetics will not remember the events which lead to their demise. \
They are to be told that they have been resurrected, and any further questions they have should be answered, if possible. Organic \
individuals revived by a defibrillator do not experience this phenomenon."
/datum/lore/codex/page/sop_postmortem
name = "Postmortem Storage"
data = "Deceased persons should be kept in the morgue, and should be contained inside black body bags. The body bag is to be labelled with the deceased's name, along \
with 'DNC', 'MIF', or 'Cloned' where applicable. Bodies in the morgue are to be transferred to Central Command whenever possible. Funerary \
services are to be handled off site. A service may be held within the Chapel if it is desired, however the body must still be brought to \
Central."
/datum/lore/codex/page/sop_medical_breach
name = "Breach Response (Medical)"
data = "If a room becomes breached, the first priority is to evacuate any crewmembers and guests endangered by the breach, especially if they lack an EVA \
suit. Emergency softsuits are available in cyan colored lockers at key locations on your facility, if an untrained person requires short term EVA \
capability. Those exposed to vacuum without protection will almost certainly require advanced medical care, so bring anyone harmed to Medical. \
Remember to avoid risking your own life, as stated in the Triage section."

View File

@@ -0,0 +1,119 @@
/datum/lore/codex/category/security_sop
name = "Security SOP"
data = "This SOP is specific to those in the Security department, and focuses on proper arrest procedure, processing, escalation of force, and such."
children = list(
/datum/lore/codex/page/sop_arrest,
/datum/lore/codex/page/sop_processing,
/datum/lore/codex/page/sop_brigging,
/datum/lore/codex/page/sop_solitary,
/datum/lore/codex/page/sop_prisoner_rights,
/datum/lore/codex/page/sop_sec_alert_levels,
/datum/lore/codex/page/sop_escalation,
/datum/lore/codex/page/sop_hostage
)
/datum/lore/codex/page/sop_arrest
name = "Arrest Procedure"
data = "Security is responsible for the health and safety of anyone they arrest. Unless the safety of any crewmember if threatened, all attempts at arrest \
are to follow this procedure.\
<br><br>\
Set the suspect to Arrest in their security records (Can be done with a SecHUD). Locate the suspect. Inform them that you are arresting them, \
as well as the charges they are being arrested under. The following steps assume that the suspect does not respond to the arresting \
officer in a violent manner. If they follow orders given by the arresting officer, they are considered compliant. If they do not respond, \
or attempt to non-violently resist arrest, they are considered non-compliant. Applying handcuffs is at the discretion of the arresting officer, \
but the following is strongly recommended.\
<br><br>\
If the suspect is compliant, ask them to follow you. Handcuffs are not required if the subject is complaint and not likely to attempt escape. \
If the suspect is compliant, but likely to attempt escaping arrest, inform them that you will be handcuffing them. If they continue to comply, \
do so. If the suspect is non-compliant, the arresting officer may attempt to complete the arrest using Less-than-Lethal force. \
Resisting Arrest may be added to the suspect's punishment if they are found guilty of other crimes. Return to the brig with the \
suspect for processing."
/datum/lore/codex/page/sop_processing
name = "Processing"
data = "Processing is the responsibility of the Arresting Officer, or the Warden if the Warden chooses to do so. The suspect is to be informed \
again of the cause for their arrest, and that they will be searched. Suspects are assumed to be innocent until they are proven guilty. \
They are to be thoroughly searched. They may not be stripped of their inner clothing, though pockets are to be emptied. \
Any and all found contraband is to be confiscated, and anything that may be used to escape the brig is to be confiscated until the suspect's release.\
<br><br>\
Assess the suspect's guilt. Contraband found in the search may be used as evidence at the discretion of the Arresting Officer. If the \
suspect is found innocent, all non-contraband is to be returned to them, and they are to be released. If instead they are found guilty and \
brig time is required by the type of violation they are guilty of, or have chosen brig time as an alternative to a fine if possible, they \
are now considered a Prisoner, and further processing is the responsibility of the Warden, if one is present. If no Warden is present, the \
Arresting Officer is to continue processing.\
<br><br>\
The Prisoner is to be informed of their Sentencing Options, if available. These will vary depending on the violation in question, and \
the exact circumstances involved. For minor violations of Corp Regs, generally the Prisoner will have a choice of paying a Fine, or \
serving time within the brig. For major violations, generally a demotion is recommended, however this is at the discretion of the Prisoner's \
Superior, and not the Arresting Officer. For minor violations of Sif Law, the same rules generally apply as if it was a minor Corp Reg violation, however \
major Law violations generally require a long brig sentence, or Holding until Transfer, as well as a fax to the SGA. See the specific violation contained \
in this book for more details."
/datum/lore/codex/page/sop_brigging
name = "Brigging"
data = "The Prisoner is to remain handcuffed during this process, until noted. Set their security record to Incarcerated. They are to be brought to an available cell. \
The cell timer should be set to the prisoner's sentencing time at this point, but not engaged. They are to be brought into the cell. If their sentence time is Hold until Transfer, \
they are to be stripped, and dressed in the provided orange jumpsuit and shoes. <u>Prisoners are entitled to keep their communication devices \
(Radio, PDA, and Communicator), so long as they do not abuse them.</u> Prisoners sentenced to Holding until Transfer who have access to sensitive \
department channels are to have their radio replaced with a general use radio. The prisoner's possessions are to be placed in the cell's locker, \
which will open upon their release.\
<br><br>\
The Warden or processing officer is to set the cell timer, uncuff the Prisoner, and exit the cell, in any order desired. If the Prisoner is non-compliant, the Warden can activate \
the cell's mounted flash, to incapacitate the Prisoner. The Warden may use up to Less-than-Lethal force to Prisoners resisting. Once the \
Prisoner is secure, and the handcuffs recovered, the Warden may elect to open the communal brig for said prisoner. It is recommended to do this. If multiple Prisoners are present, \
the Warden is to assess the threat posed by all prisoners as a group, to the Security team and to themselves, before allowing any Prisoner to access \
the communal brig.\
<br><br>\
The Warden is to check in on all prisoners frequently, to ensure they remain contained and healthy. This can be accomplished with the use of \
cameras. They are to also keep track of the sentencing time for all their prisoners, and be on location to escort them out of the brig when \
their time is up and they have returned to their normal clothing. The Prisoner's possessions are to be returned to the Prisoner at this time, and \
their security record must be set to Released."
/datum/lore/codex/page/sop_solitary
name = "Solitary Confinement"
data = "Solitary confinement is only to be used with prisoners possessing Hold until Transfer sentences that cannot be trusted with access to the normal \
brig, due to attempts at escaping, or posing a threat to other prisoners, or themselves. A prisoner is to never be placed inside Solitary as a first course of \
action. Prisoners inside Solitary are to still be checked up on by the Warden."
// Sad that we need this page to exist.
/datum/lore/codex/page/sop_prisoner_rights
name = "Prisoners' Rights"
data = "Prisoners are still under the protections of local Sif Law and Corporate Regulations, and still have their Sapient Rights (if applicable), sans their freedom of movement. \
Prisoners are entitled to have their communication devices (Radio, PDA, Communicator), provided they do not abuse them. Departmental radios must be \
exchanged for general radios, if the prisoner has been sentenced to Holding until Transfer, or otherwise has been demoted by their Superior. Prisoners \
are also entitled to receive medical care. Their timer continues to run while they are outside their cell in order to receive medical treatment, if \
leaving is needed."
/datum/lore/codex/page/sop_sec_alert_levels
name = "Alert Levels for Security"
data = "For Green, Lethal weaponry are to be hidden, except in emergencies. Non-lethal weaponry such as tasers may be worn on the belt or suit. \
Officers may wear their armor vest if desired. Helmets are permitted but not recommended. Weaponry and specialized armor from the Armory should \
be returned if there is no pressing need for them to be deployed.\
<br>\
For Blue, Security may have weapons visible, but not drawn unless needed. Body armor and helmets are recommended bot not mandatory. \
Weaponry and specialized armor are allowed to be given out to security officers, with clearance from the Warden or Head of Security.\
<br>\
For Red, Security may have weapons drawn at all times, however properly handling of weapons should not be disregarded. Body armor and \
helmets are mandatory. Specialized armor may be distributed by the Warden and Head of Security, when appropiate."
/datum/lore/codex/page/sop_escalation
name = "Escalation of Force"
data = "Safety > Passive > Less-than-Lethal > Neutralize\
<br>\
<ul>\
<li>\[0\] <b>Safety</b>: If a crewmember (including the Arresting Officer) is in clear and immediate danger, officers may disregard steps \[1\] and \[2\], \
and procede to \[3\] Neutralize.</li>\
<li>\[1\] <b>Passive</b>: Suspects are to be detailed verbally, with zero or minimal injury, and under their own power, if possible. At this level for \
force, an Officer is permitted to use tasers, pepperspray, flashes, and stunbatons.</li>\
<li>\[2\] <b>Less-than-Lethal</b>: Suspect may be detained with minimal force, causing as little injury as possible. The Arresting Officer must still \
attempt to engage the suspect verbally before discharging a weapon. At this level for force, an officer is permitted to use rubber rounds.</li>\
<li>\[3\] <b>Neutralize</b>: Suspects may be detained through use of extreme force. This is only valid for suspects which present a lethal risk to any persons, \
including the Arresting Officer. Officers who kill a suspect in the arrest may be tried for manslaughter or murder, if the circumstances were unjustified. \
Lethals may be used, if no other option presents itself. If the suspect becomes incapacitated or otherwise unable to present a lethal risk to anyone, \
further lethal force may constitute a Murder charge.</li>\
</ul>"
/datum/lore/codex/page/sop_hostage
name = "Hostage Response"
data = "In the event of a serious hostage situation, the hostage's life is the highest priority. Do not do anything that will present \
undue risk to the hostage, or otherwise will get them killed. Negotiation should be the first response, as opposed to violently rushing the hostage taker."

View File

@@ -0,0 +1,32 @@
/datum/lore/codex/category/main_vir_lore // The top-level categories for the Vir book
name = "Index"
data = "Don't panic!\
<br><br>\
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_lore
)
// We're a bird.
/datum/lore/codex/page/about_lore
name = "About"
data = "<i>The Traveler's Guide to Human Space</i> 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.\
<br><br>\
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.\
<br><br>\
Eshi Tache has also written other <i>The Traveler's Guide</i> books, including <i>Sol Edition</i>, <i>Tau Ceti Edition</i>, <i>Sirius Edition</i>, and more, \
which you can find in your local book store, library, or e-reader device."

View File

@@ -4,7 +4,7 @@
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
var/datum/codex_tree/holder = null
/datum/lore/codex/New(var/new_holder, var/new_parent)
..()
@@ -63,37 +63,4 @@
// 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!\
<br><br>\
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 = "<i>The Traveler's Guide to Human Space</i> 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.\
<br><br>\
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.\
<br><br>\
Eshi Tache has also written other <i>The Traveler's Guide</i> books, including <i>Sol Edition</i>, <i>Tau Ceti Edition</i>, <i>Sirius Edition</i>, and more, \
which you can find in your local book store, library, or e-reader device."
return results