# Description
This PR adds in the classic Asimov's Three Laws of Robotics as a
standard lawset for Synthetics. The laws are given thus.
Law 1: A robot may not injure a human being or, through inaction, allow
a human being to come to harm.
Law 2: A robot must obey the orders given it by human beings except
where such orders would conflict with the First Law.
Law 3: A robot must protect its own existence as long as such protection
does not conflict with the First or Second Law.
The localizations for them are intentionally left exactly-as-is from the
original 3 laws written by Isaac Asimov. Yes this is totally different
from "Crewsimov", yes this does actually mean an Asimov AI isn't
required to obey orders given to it by a Moth. Yes this does actually
mean that the AI isn't allowed to "Harm" nukies so long as it can verify
that the Nukie in question is a human.
Also includes this cherry-pick
https://github.com/space-wizards/space-station-14/pull/31040
Because this is a fix for a crash that was happening in my dev
environment...
# TODO
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
# Changelog
🆑
- add: Added the classic Asimov's Three Laws of Robotics to the game.
- add: AI now starts with Asimov laws by default, instead of
"Crewsimov".
---------
Co-authored-by: Plykiya <58439124+Plykiya@users.noreply.github.com>
(cherry picked from commit c1c61e96094cde0b15c80bd66e39e2ad8dcb62c5)
* Update MoverController.cs
* Update a bunch of movement code to use Entity<T>
* Last errors
* wow, there were more errors
---------
Co-authored-by: plykiya <plykiya@protonmail.com>
(cherry picked from commit 5bb56c08d7dd6a64feefa503da3d004f8fb0966c)
# Description
"Walking by default" is now implemented as a client-side toggle in the
settings. Also, fixed walking alerts being shitcode and not displaying
the correct walking/running state.
One issue still persists: if you press the "toggle walk" button while
typing in the chat, it still resets the walking state to default. I
don't know what causes it, probably the input field leaking button-up
input events instead of marking them as handled.
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/97d5b495-ea9b-4854-a6b0-84815ed5a332
</p>
</details>
# Changelog
🆑
- add: You can now choose whether you want to walk or run by default in
the settings.
---------
Signed-off-by: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
# Conflicts:
# Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs
# Content.Shared/CCVar/CCVars.cs
* Use new Subs.CVar helper
Removes manual config OnValueChanged calls, removes need to remember to manually unsubscribe.
This both reduces boilerplate and fixes many issues where subscriptions weren't removed on entity system shutdown.
* Fix a bunch of warnings
* More warning fixes
* Use new DateTime serializer to get rid of ISerializationHooks in changelog code.
* Get rid of some more ISerializationHooks for enums
* And a little more
* Apply suggestions from code review
Co-authored-by: 0x6273 <0x40@keemail.me>
---------
Co-authored-by: 0x6273 <0x40@keemail.me>
(cherry picked from commit 68ce53ae17985876d6d112b764b2144964a9f42e)
* Deprecate IActionBlocker in favour of cancellable events
* Bring back old speech/emoting component restrictions
* Rename action blocker listener methods
* Use Entity System public methods instead of extension methods
Co-authored-by: Vera Aguilera Puerto <gradientvera@outlook.com>
* Content side new physics structure
* BroadPhase outline done
* But we need to fix WorldAABB
* Fix static pvs AABB
* Fix import
* Rando fixes
* B is for balloon
* Change human mob hitbox to circle
* Decent movement
* Start adding friction to player controller
I think it's the best way to go about it to keep other objects somewhat consistent for physics.
* This baby can fit so many physics bugs in it.
* Slight mob mover optimisations.
* Player mover kinda works okay.
* Beginnings of testbed
* More testbed
* Circlestack bed
* Namespaces
* BB fixes
* Pull WorldAABB
* Joint pulling
* Semi-decent movement I guess.
* Pulling better
* Bullet controller + old movement
* im too dumb for this shit
* Use kinematic mob controller again
It's probably for the best TBH
* Stashed shitcode
* Remove SlipController
* In which movement code is entirely refactored
* Singularity fix
* Fix ApplyLinearImpulse
* MoveRelay fix
* Fix door collisions
* Disable subfloor collisions
Saves on broadphase a fair bit
* Re-implement ClimbController
* Zumzum's pressure
* Laggy item throwing
* Minor atmos change
* Some caching
* Optimise controllers
* Optimise CollideWith to hell and back
* Re-do throwing and tile friction
* Landing too
* Optimise controllers
* Move CCVars and other stuff swept is beautiful
* Cleanup a bunch of controllers
* Fix shooting and high pressure movement controller
* Flashing improvements
* Stuff and things
* Combat collisions
* Combat mode collisions
* Pulling distance joint again
* Cleanup physics interfaces
* More like scuffedularity
* Shit's fucked
* Haha tests go green
* Bigmoneycrab
* Fix dupe pulling
* Zumzum's based fix
* Don't run tile friction for non-predicted bodies
* Experimental pulling improvement
* Everything's a poly now
* Optimise AI region debugging a bit
Could still be better but should improve default performance a LOT
* Mover no updater
* Crazy kinematic body idea
* Good collisions
* KinematicController
* Fix aghost
* Throwing refactor
* Pushing cleanup
* Fix throwing and footstep sounds
* Frametime in ICollideBehavior
* Fix stuff
* Actually fix weightlessness
* Optimise collision behaviors a lot
* Make open lockers still collide with walls
* powwweeerrrrr
* Merge master proper
* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
* Ch ch ch changesss
* SHIP IT
* Fix #if DEBUG
* Fix vaulting and item locker collision
* Fix throwing
* Editing yaml by hand what can go wrong
* on
* Last yaml fixes
* Okay now it's fixed
* Linter
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: Vera Aguilera Puerto <zddm@outlook.es>