* Update display name in team
* Update display name everywhere
* order
https://youtu.be/VYycQTm2HrM
---------
Co-authored-by: BrettMayson <brett@mayson.io>
- Add stackable wound handler system for easy 3rd party extensibility and overriding of default wound handler.
- Change mapping from wound type -> damage types, to damage type -> wound types. Improves the semantics and makes configuration easier to reason about.
- Allow damage types to influence wound properties (bleed, size, etc.) with configurable variance parameters.
- Allow configuration of wound type variance per damage type. Enabling more logically driven variance for sensible but still varied end results.
- Improve handling of non-selection-specific damage events. The wound handler now receives all incoming damages and may apply damage to multiple selections (previously only ever one) if the damage type is not configured to be selection specific (with new config property `selectionSpecific`).
- Add debug script for testing explosion damage events at varied ranges.
- Add custom fire wound handler.
* Determine ammo damage type through config property
* Tabs
* Add warning when property is missing
Co-Authored-By: PabstMirror <pabstmirror@gmail.com>
* Fixed up inheritance
Some classes were not editable;
changes moved to relevant subclasses instead
* Newlines for readability
* More sensible default value
* Fix mistakes I added
* Update addons/medical_damage/CfgAmmo.hpp
* Pre-cache special values for damage types
* Support # values
For backwards compatibility
Co-Authored-By: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
* HandleDamage uses armour values to determine which hitpoint was damaged
* Tidied up comments
* Newlines
* Tabs? In MY code?!
* Added uniform caching and option to force disable caching
* Review suggestions
* Review suggestions/code style
* Spelling and select
* Removed unnecessary validity check
* Apply suggestions from code review
Co-Authored-By: commy2 <commy-2@gmx.de>
* Tweaks and optimisations, removed _noCache
Also fixed cache nil vs empty
* Different approach with fewer loops
Lookup is now done per-hitpoint and default values cached
fnc_getItemArmor made a helper function as it's now only a few lines
* Tabs & newlines
* Moved uniform logic inside helper function
* Optimisations
* Tweaks & optimisations, improved formatting
* Ignore explosionShielding
* Moved getArmor back to separate func, add per-unit caching
* Formatting
* Review suggestions
Co-authored-by: commy2 <commy-2@gmx.de>
* Fixes BleedingCoef having impact on bloodloss KO
Fixes incorrect var in setUnconscious
* Changes method for checking if typeOfDamage is valid
Adds check for if typeOfDamage is valid to extension version of woundsHandler
* Changes collision wound location select to a weighted system to make it more lethal at faster collisions
Adds collision and drowning damage types to config (drowning has no related wounds to prevent wounds being added while drowning).
* Fixes unneeded space
* Fixes minor mistake (body damage chance should go from 1 to 0 without ever becoming negative)
* Tidy handle damage code
* Fix environmental damage conditions
- Vehicle damage would never occur because it doesn't fire all the
hitpoints
- Missing sanity check on fall damage to check that unit isn't in a
vehicle
- Getting hit by a vehicle while on foot can be detected by checking for
a shooter
* Improve collision handling
- All collisions have a `_shooter` so we simply first check for that because burning doesn't and it could happen at any velocity
- We don't actually care what caused the collision because they should all cause the same type of wounding
- The exception is fall damage because we want to prioritise wounding the legs, we assume if the `_unit` had downward velocity and `_shooter == _unit` that it was fall damage (not necessarily always true, but almost always is and there doesn't look to be a more specific way to check).
Units accumulate damage in the local variables
"ACE_Medical_Engine_$HitXXXX", but these are never reset. The way these
vars are used is as a single-damage-event tracker, and the end result of
not resetting their value when they're done being used is that a
specific $HitXXXX can accumulate enough damage to cause the "select
wound with highest damage" code to always select _it_ for the next wound
event, even if it wasn't the primary target of the last wound event.
I.E. I get shot in the right leg badly. If I then get winged in the left
arm, that wound will end up on my right leg, because when the code runs,
it finds QGVAR($HitRightLeg) > QGVAR($HitLeftArm), and so it applies the
wound to the right leg.