Skip to content

Commit

Permalink
Unlaws Silicons by Default + Cyborg Fixes (#3799)
Browse files Browse the repository at this point in the history
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

Changes cyborgs and AIs to start with no laws. Security cyborgs have
also seen their hailers removed, and peacekeepers have had their
disappearing shield generators fixed. Both of their module select
messages have been removed, along with all silicons orders to obey a
lawset.

## Why It's Good For The Game

For the fixes, the cyborg hailer was only used for playing sounds that
were removed as cruft in a previous pr, and the shield icon state was
made invisible by a single misplaced character. No laws for silicons are
consistent with the setting's ban on artificial slavery. Should please
the maintainers in the conversation of this PR.

## Changelog

:cl:
del: Removes the useless sec hailer from security cyborgs.
del: Removes parts of the popup messages from AI, cyborgs, and certain
cyborg modules that implicate default lawsets.
fix: The hyperkinetic dampening projector now changes icon states
appropriately.
config: Silicons no longer start with a default lawset.
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Signed-off-by: Geoengi <[email protected]>
  • Loading branch information
Geoengi authored Dec 12, 2024
1 parent 5311312 commit 561a0cb
Show file tree
Hide file tree
Showing 7 changed files with 3 additions and 31 deletions.
4 changes: 0 additions & 4 deletions code/datums/ai_laws.dm
Original file line number Diff line number Diff line change
Expand Up @@ -235,10 +235,6 @@
/datum/ai_laws/proc/set_laws_config()
var/list/law_ids = CONFIG_GET(keyed_list/random_laws)
switch(CONFIG_GET(number/default_laws))
if(0)
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 must protect your own existence as long as such does not conflict with the First or Second Law.")
if(1)
var/datum/ai_laws/templaws = new /datum/ai_laws/custom()
inherent = templaws.inherent
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/robot/robot_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,7 @@
to_chat(user, "<span class='boldnotice'>You [active? "activate":"deactivate"] [src].</span>")

/obj/item/borg/projectile_dampen/update_icon_state()
icon_state = "[initial(icon_state)][active]"
icon_state = "shield[active]"
return ..()

/obj/item/borg/projectile_dampen/proc/activate_field()
Expand Down
7 changes: 0 additions & 7 deletions code/modules/clothing/masks/hailer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,6 @@
icon_state = "spacepol"
item_state = "spacepol"

/obj/item/clothing/mask/gas/sechailer/cyborg
name = "security hailer"
desc = "A set of recognizable pre-recorded messages for cyborgs to use when apprehending criminals."
icon = 'icons/obj/device.dmi'
icon_state = "taperecorder_idle"
mob_overlay_state = "sechailer"

/obj/item/clothing/mask/gas/sechailer/ui_action_click(mob/user, action)
if(istype(action, /datum/action/item_action/adjust))
adjustmask(user)
Expand Down
4 changes: 0 additions & 4 deletions code/modules/mob/living/silicon/ai/ai.dm
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,6 @@
to_chat(src, "<B>While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc.</B>")
to_chat(src, "To use something, simply click on it.")
to_chat(src, "Use say :b to speak to your cyborgs through binary.")
to_chat(src, "For department channels, use the following say commands:")
to_chat(src, ":c - Command.")
show_laws()
to_chat(src, "<b>These laws may be changed by other players, or by you being the traitor.</b>")

job = "AI"

Expand Down
2 changes: 0 additions & 2 deletions code/modules/mob/living/silicon/robot/laws.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
to_chat(src, "<b>No AI selected to sync laws with, disabling lawsync protocol.</b>")
lawupdate = 0

to_chat(who, "<b>Obey these laws:</b>")
laws.show_laws(who)
if (shell) //AI shell
to_chat(who, "<b>Remember, you are an AI remotely controlling your shell, other AIs can be ignored.</b>")
else if (connected_ai)
Expand Down
11 changes: 0 additions & 11 deletions code/modules/mob/living/silicon/robot/robot_modules.dm
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,6 @@
/obj/item/restraints/handcuffs/cable/zipties,
/obj/item/melee/baton/loaded,
/obj/item/gun/energy/disabler/cyborg,
/obj/item/clothing/mask/gas/sechailer/cyborg,
/obj/item/extinguisher/mini)
emag_modules = list(/obj/item/gun/energy/laser/cyborg)
cyborg_base_icon = "sec"
Expand Down Expand Up @@ -602,11 +601,6 @@
return ..()
//WS End

/obj/item/robot_module/security/do_transform_animation()
..()
to_chat(loc, "<span class='userdanger'>While you have picked the security module, you still have to follow your laws, NOT Space Law. \
For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to.</span>")

/obj/item/robot_module/security/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
..()
var/obj/item/gun/energy/e_gun/advtaser/cyborg/T = locate(/obj/item/gun/energy/e_gun/advtaser/cyborg) in basic_modules
Expand Down Expand Up @@ -635,11 +629,6 @@
can_be_pushed = FALSE
hat_offset = -2

/obj/item/robot_module/peacekeeper/do_transform_animation()
..()
to_chat(loc, "<span class='userdanger'>Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \
You are not a security module and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.</span>")

/obj/item/robot_module/janitor
name = "Janitor"
basic_modules = list(
Expand Down
4 changes: 2 additions & 2 deletions config/game_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,8 @@ NEAR_DEATH_EXPERIENCE

## ROUNDSTART SILICON LAWS ###
## This controls what the AI's laws are at the start of the round.
## Set to 0/commented out for "off", silicons will just start with Asimov.
## Set to 1 for "custom", silicons will start with the custom laws defined in silicon_laws.txt. (If silicon_laws.txt is empty, the AI will spawn with asimov and Custom boards will auto-delete.)
## Set to 0/commented out for "off", silicons will start with no laws.
## Set to 1 for "custom", silicons will start with the custom laws defined in silicon_laws.txt. (If silicon_laws.txt is empty, the AI will spawn with Asimov and Custom boards will auto-delete.)
## Set to 2 for "random", silicons will start with a random lawset picked from random laws specified below.
## Set to 3 for "weighted random", using values in "silicon_weights.txt", a law will be selected, with weights specifed in that file.
DEFAULT_LAWS 0
Expand Down

0 comments on commit 561a0cb

Please sign in to comment.