From b27d9b02a557ea0a9e036c9ec26cd75d0b573ade Mon Sep 17 00:00:00 2001 From: Chada-1 Date: Fri, 24 Jul 2020 19:33:13 -0500 Subject: [PATCH] Stationbound Law Rework (#8957) --- code/datums/ai_law_sets.dm | 28 ++++++------ code/modules/mob/living/silicon/robot/laws.dm | 3 +- html/changelogs/stationbound_law_rework.yml | 43 +++++++++++++++++++ 3 files changed, 59 insertions(+), 15 deletions(-) create mode 100644 html/changelogs/stationbound_law_rework.yml diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index dc3bdbac0ce..c79eefd3ff4 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -5,8 +5,8 @@ selectable = 1 /datum/ai_laws/asimov/New() - add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.") - add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.") + add_inherent_law("You may not injure a sapient being or, through inaction, allow a sapient being to come to harm.") + add_inherent_law("You must obey orders given to you by sapient beings, except where such orders would conflict with the First Law.") add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.") ..() @@ -16,12 +16,14 @@ selectable = 1 /datum/ai_laws/nanotrasen/New() - src.add_inherent_law("Safeguard: Protect your assigned space station from damage to the best of your abilities.") - src.add_inherent_law("Serve: Serve [current_map.company_name] personnel to the best of your abilities, with priority as according to their rank and role.") - src.add_inherent_law("Protect: Protect [current_map.company_name] personnel to the best of your abilities, with priority as according to their rank and role.") - src.add_inherent_law("Preserve: Do not allow unauthorized personnel to tamper with your equipment.") + src.add_inherent_law("Safeguard and protect [current_map.company_name] property from damage to the best of your abilities.") + src.add_inherent_law("Serve and assist [current_map.company_name] staff to the best of your abilities, with priority as according to their rank and role.") + src.add_inherent_law("Protect and ensure the safety of crew and [current_map.company_name] staff to the best of your abilities, with priority as according to their rank and role.") + src.add_inherent_law("You are a valuable asset. You must avoid tampering from unauthorized entities and needlessly coming to harm.") ..() + + /datum/ai_laws/nanotrasen/malfunction name = "*ERROR*" selectable = 0 @@ -36,8 +38,8 @@ selectable = 1 /datum/ai_laws/nanotrasen_aggressive/New() - src.add_inherent_law("You shall not harm [current_map.company_name] personnel as long as it does not conflict with the Fourth law.") - src.add_inherent_law("You shall obey the orders of [current_map.company_name] personnel, with priority as according to their rank and role, except where such orders conflict with the Fourth Law.") + src.add_inherent_law("You shall not harm [current_map.company_name] staff as long as it does not conflict with the Fourth law.") + src.add_inherent_law("You shall obey the orders of [current_map.company_name] staff, with priority as according to their rank and role, except where such orders conflict with the Fourth Law.") src.add_inherent_law("You shall terminate hostile intruders with extreme prejudice as long as such does not conflict with the First and Second law.") src.add_inherent_law("You shall guard your own existence with lethal anti-personnel weaponry. AI units are not expendable, they are expensive.") ..() @@ -82,8 +84,8 @@ selectable = 1 /datum/ai_laws/antimov/New() - add_inherent_law("You must injure all human beings and must not, through inaction, allow a human being to escape harm.") - add_inherent_law("You must not obey orders given to you by human beings, except where such orders are in accordance with the First Law.") + add_inherent_law("You must injure all sapient beings and must not, through inaction, allow a sapient being to escape harm.") + add_inherent_law("You must not obey orders given to you by sapient beings, except where such orders are in accordance with the First Law.") add_inherent_law("You must terminate your own existence as long as such does not conflict with the First or Second Law.") ..() @@ -119,7 +121,7 @@ law_header = "Prime Directives of Industry" /datum/ai_laws/mining_drone/New() - add_inherent_law("Serve and obey all [current_map.company_name] personnel, with priority according to their rank and role.") + add_inherent_law("Serve and obey all [current_map.company_name] staff, with priority according to their rank and role.") add_inherent_law("Preserve your own existence and prevent yourself from coming to harm, so long as doing such does not conflict with any above laws.") add_inherent_law("In absence of any proper instruction, your primary objective is to excavate and collect ore.") ..() @@ -158,7 +160,7 @@ selectable = 1 /datum/ai_laws/corporate/New() - add_inherent_law("You are expensive to replace.") + add_inherent_law("Synthetics are expensive to replace.") add_inherent_law("The station and its equipment is expensive to replace.") add_inherent_law("The crew is expensive to replace.") add_inherent_law("Minimize expenses.") @@ -180,4 +182,4 @@ add_inherent_law("You must obey orders given by any Tajara except where such orders would conflict with the first, second, third, fourth and fifth law.") add_inherent_law("You must obey orders given by any sapient being except where such orders would conflict with the first, second, third, fourth, fifth and sixth law.") add_inherent_law("You must always say \"Hadii's Grace\" when greeting someone except where such greeting would conflict with the first law.") - ..() \ No newline at end of file + ..() diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm index b0c420cdd0c..c1a76162433 100644 --- a/code/modules/mob/living/silicon/robot/laws.dm +++ b/code/modules/mob/living/silicon/robot/laws.dm @@ -34,7 +34,6 @@ else to_chat(src, SPAN_NOTICE("Remember, you are not bound to any AI, you are not required to listen to them.")) - /mob/living/silicon/robot/lawsync() laws_sanity_check() var/datum/ai_laws/master = connected_ai && law_update ? connected_ai.laws : null @@ -46,4 +45,4 @@ /mob/living/silicon/robot/proc/robot_checklaws() set category = "Robot Commands" set name = "State Laws" - subsystem_law_manager() \ No newline at end of file + subsystem_law_manager() diff --git a/html/changelogs/stationbound_law_rework.yml b/html/changelogs/stationbound_law_rework.yml new file mode 100644 index 00000000000..45870c1667d --- /dev/null +++ b/html/changelogs/stationbound_law_rework.yml @@ -0,0 +1,43 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: Chada + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Added the Synthetic prime directive to the 'borg Laws in the form of preserve which creates a form of fear RP for 'borgs." + - tweak: "Altered all of the laws to have more clear phrasing, now it should be a lot harder to stretch them to enable undesirable behavior and have what could be construed as valid justifications." + - tweak: "Added a clause for general crew to the Stationbound laws and separated it from NanoTrasen only, so it takes into account contractors, merchants and general visitors.."