# Description
This PR massively expands upon the functionality of the Contests System,
fully restoring it not only to the original level of functionality
available to the Nyanotrasen Contests, but vastly exceeding its
functionality too. Contests now include features like Health Contests,
Stamina Contests, but also include hooks for Mind Contests (To allow
other systems to implement theoretical effects of MindContest even
though I'm not yet finished with the Psionic Refactor).
Additionally, all Contests now include optional overrides, allowing
other functions to modify their own expected outcomes from the
ContestsSystem. These two optional overrides are:
- BypassClamp: Bypasses the clamp outright, allowing for Classic
Nyanotrasen Contests style of outputs, with theoretically infinite
results. If completely unlimited infinite results is desired, setting
this to true when calling Contests will unlock the range to (-inf, inf).
- RangeFactor: Proportionally expands the allowed Range of outputs from
a given Contest. Normally they are CVar clamped to +/- 0.25, but if for
instance RangeFactor was set to 2, the Range is now +/- 0.5
# Changelog
No changelog because this is completely zero player-facing
implementations. All I have done is give DEVS the tools needed to begin
implementing easy math into the game.
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
# 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>