- Armor and sneaking have exclusive effects on overall stealth, rather
than armor taking effect only while sneaking.
Gameplay:
- Agents factor in stealth from armor in all cases, not only when sneaking.
- Max stealth takes place when sneaking (final multiplier of `0.7`) and with stealth from armor up to `0.7` (`0.3` multiplier), resulting in a max distance modifier of about `0.5`, approximately what it was previously.
- Min stealth score from armor is now 0 instead of 2.
Internals:
- Stealth getter accounts for sneaking in final calculation, not just
armor.
- Prevents potential division by zero.
- Stealth getter returns value that should be multiplied instead of divided.
- Legitimized stealth as a score between 0 and 1.
Notes:
- FIXME: Someone more familiar with the different armor types may want to adjust their stealths.
- Armor stealths seem to be valued between `0.0` and `1.0`, and I've reinforced this in the code. However, it is possible, particularly for the `Dragonscale` armors, to cumulatively reach a value of `2.0`.
- Refactors `choose_target()`, renaming it and extracting functions with more meaningful names and more correct behavior.
- Adds FOV for agents scanning for hostile targets.
+ Multiple/Random inheritance for loadout configs
+ Using ItemSpecNew in Hands
+ Rename Hands::Specific to Hands::InHands to represent non-random
combination
Changes from old config:
* Structure instead of HashMap which allows us have multiple types for
fields.
* Using error propagating instead of panic, which opens possibility for
better error messages.
* Implemented inheritance.
* New Hands type for more practical way of declaring weapons/tools.
- Prevent utterances and other sounds from causing undesired jitters and
fleeing, such as those caused by greeting villagers.
- Agents will no longer flee from quieter weapon sounds such as melee.