* prevent people being pulled from uncuffing themselves
* block -> modify duration
(cherry picked from commit d907e4ef577e6df595a77c7c87e5f864ee38ad0c)
# Description
Part of Issue #467
This is a complete re imagining of the Nyanotrasen Mass Contest
System(Long since removed from the game). This system adds a highly
flexible function that outputs a ratio of a given entity's mass, that is
optionally relative to another entity. I've primarily written this
system to be used in conjunction with PR #458 , as it adds several new
implementations of variable player mass to the game.
How this differs from the original Mass Contest system is that it is
configured via hotloaded CVars, and is inherently clamped so that
character mass only modifies functions by a finite amount rather than
providing infinite scaling. This essentially means that while an Oni is
25% better at shoving a Felinid to the floor thanks to their different
masses, a 2000kg Lamia is also only 25% better at shoving a Felinid to
the floor, rather than 50000% better. The inverse is also true, a small
player character can only be 25% better or worse at a given
implementation. These implementations are not handled directly by the
ContestSystem, and are instead handled directly by other systems that
call upon it.
This percentage limit can be modified by a new CVar at any time.
Additionally, the entire MassContest system can be optionally toggled
off completely at any time via CVar, without needing to modify any code
that calls upon it.
At this time, I have included three different implementations to serve
as suitable examples for how MassContest can be used.
1. Weapon recoil is now modified by an entity's mass relative to the
human average baseline. Smaller characters experience more recoil,
larger characters experience less recoil
2. Disarm/Shove is now modified by Mass Contests. Entities that are
sized differently from their target have their shove/disarm chance
modified based on the ratio of performer and target mass.
3. Certain types of handcuffs(such as Cablecuffs and zipties) are now
faster to slip out of if you are smaller than the average.
# Changelog
🆑
- add: Mass Contests have returned in a new reworked form.
- add: Weapon Recoil is now resisted by character mass. More massive
characters take less recoil, less massive characters take more recoil.
- add: Disarm and Shove actions are now modified by relative character
mass. It is easier to shove people around if you're bigger than them.
- add: Cablecuffs and Zipties are now easier to escape out of if you're
smaller.
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com>
* Fix cuffs breaking after they stop being pulled
* Do proper interaction check for UncuffAttempt
* Minor cleanup
Take as much out as possible from _net.IsServer() if blocks.
Misc cleanup
* Initial commit
* Remove damage from cuffs entirely
* Changed from Action uncuffing cooldown to UseDelay cooldown
* Minor merge conflict fix
* Edit the actual correct line
* Submodule fix
(cherry picked from commit 485fb4cb652793ab4f9cbe90bb2cbf555fbf5540)
* Remove IActionBlocker.CanMove
Ported the remainders over to using MovementAttemptEvent which should also help make mob movement a bit faster.
* Make that check faster
* Remove the unnecessary NetID property from ComponentState.
* Remove Component.NetworkSynchronizeExistence.
* Removed Component.NetID.
* Adds component netID automatic generation.
* Removed NetIdAttribute from serverside components with no corresponding clientside registration.
* Completely remove static NetIds.
* Renamed NetIDAttribute to NetworkedComponentAttribute.
* Add GenerateNetIds calls to client and server entry points.
Add test to make sure auto generated NetIds are identical.
* Component changes when rebasing that I am too lazy to rewrite into the branch.
Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>