* Update display name in team
* Update display name everywhere
* order
https://youtu.be/VYycQTm2HrM
---------
Co-authored-by: BrettMayson <brett@mayson.io>
* Medical Engine - Unlock when dead
* Update fnc_unloadPersonLocal.sqf
* Update addons/common/functions/fnc_unloadPersonLocal.sqf
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
* fix actually unloading people to found emptyPos
* handle deleted units
* handle dead units
ref 179957c39d
* vehicle -> objectParent
---------
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
* Lock seats of unconscious or dead units
* disable pullOutBody if medical is loaded
* fix undefined var and switch to objectParent
---------
Co-authored-by: Salluci <salluci.lovi@gmail.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
* Refactor medical to use hashmaps for wound storage
- We most frequently want to access wounds by body part, so this makes
that a constant time lookup.
- The body part index is no longer stored in every wound since it's
inherent in the wound storage.
- Using body part names as the keys of the hashmap to improve code
clarity (no more magic numbers).
closes#6468
* Add deserilization migration from old wound arrays
Will migrate from old form array wound storage to the new hashmap
strucutre during deserlization. This is relevant for communities piping
medical state out to a database or similar between sessions.
* fix issue with suture stitching
* change version number in comment
---------
Co-authored-by: Salluci <salluci.lovi@gmail.com>
- 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.
* Medical - Add force walk option to fracture setting
* Add French translation
Co-authored-by: Elgin675 <elgin675@hotmail.com>
* Reduce calls to statusEffect_set (#7865)
* Reduce calls to statusEffect_set
* statusEffect_addType fracture to forcewalk
Co-authored-by: Elgin675 <elgin675@hotmail.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
* Add custom anim entries
* Switch to SQF based animation detection
* Add time out to CBA_fnc_waitUntilAndExecute
* Remove unneeded comments or defines
* Restore line break
* Styling and removal of not needed code
* Move waitForAnime and make it local nil
* Extended comment
* Add Kola to authors file
* Small bug fix in terms of animation names
* Add custom anim entries
Switch to SQF based animation detection
Add time out to CBA_fnc_waitUntilAndExecute
Remove unneeded comments or defines
Restore line break
Styling and removal of not needed code
Move waitForAnime and make it local nil
Extended comment
Add Kola to authors file
Small bug fix in terms of animation names
* Move animations into data folder
* add uppercase on sqf command
* Rename animation config names and files
* fix physx uncon fix
* Change initial after ragdoll animation name
* 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>
* Modernize and cleanup medical_treatment
* One line for each old public function
* Fix litterCleanupDelay name
* Improve adjustment calcs / wound blood loss / medications
fix func descriptions
Calc wound blood loss on events
reorder includes so scritpmacroMed has global effect
trivial optimization for getCardiacOutput
Fix var
Fix wounds not reopening (nil _category)
Fix surgical kit inherting canBandage conditional
debug hitpoints
Update ACE_Medical_Treatment_Actions.hpp
Use woundBleeding for IS_BLEEDING macro
rework medication vars
comments
Reset var in init / fullHeal
Update addons/medical_treatment/functions/fnc_onMedicationUsage.sqf
Co-Authored-By: PabstMirror <pabstmirror@gmail.com>
* Change wound data array
Drop unique id and merge classId and category
* Splinting and treatment and gui
* Add arm fractures and aim effects
* localizations and event
* fix
* fix merge for renamed files
* Fixes and code review changes
* Move medical logs clearing to treatment
* More cleanup work
* cleanup
* Apply suggestions from code review
Co-Authored-By: PabstMirror <pabstmirror@gmail.com>
* formating, rename bone images
* Fix args for setDead call in actionPlaceInBodyBag
* Apply suggestions from code review
Co-Authored-By: PabstMirror <pabstmirror@gmail.com>
* disable calls to extension
* Update fnc_onMedicationUsage.sqf
* Medical - Skip unneeded setVars on initUnit (#6949)
* Medical - Transfer state machine state on locality (#6950)
* Medical - Transfer state machine state on locality
* Fix feedback isUnconscious var
* Exclude AI
* Make UAV excludes consistant, formating
* Update fnc_treatmentFullHealLocal.sqf
* reset fractures on respawn
* Fix merge
* Add PAK time coefficient setting
* Fix medication
* Add ace_medical_replacementItems config array
* checkItems performance improvement
* Treatment - cap max animation speed (#6995)
* Treatment - cap max animation speed
and add lock to prevent AF from reseting anim
* Update fnc_getBandageTime.sqf
* Use local version of setAnimSpeedCoef
* Revert "Use local version of setAnimSpeedCoef"
This reverts commit 36c22a9047.
* Move replacementItems compiling to preInit
* Improve replacementItems compiling
* Cleanup splint functions, use macros for fractures
* Rename splintCondition to canSplint
* Add cprCreatesPulse setting
* Cleanup remaining functions
* Capitalize stringtable entry names
* getStitchTime function and fix treatment locations
* Update addons/medical_treatment/functions/fnc_getHealTime.sqf
Co-Authored-By: SilentSpike <silentspike100+Github@gmail.com>
* Improve adjustment calcs / wound blood loss / medications
fix func descriptions
Calc wound blood loss on events
reorder includes so scritpmacroMed has global effect
trivial optimization for getCardiacOutput
Fix var
Fix wounds not reopening (nil _category)
Fix surgical kit inherting canBandage conditional
debug hitpoints
Update ACE_Medical_Treatment_Actions.hpp
Use woundBleeding for IS_BLEEDING macro
rework medication vars
comments
Reset var in init / fullHeal
Update addons/medical_treatment/functions/fnc_onMedicationUsage.sqf
Co-Authored-By: PabstMirror <pabstmirror@gmail.com>
* Change wound data array
Drop unique id and merge classId and category
* Splinting and treatment and gui
* Add arm fractures and aim effects
* localizations and event
* fix
* cleanup
* Apply suggestions from code review
Co-Authored-By: PabstMirror <pabstmirror@gmail.com>
* formating, rename bone images
* Apply suggestions from code review
Co-Authored-By: PabstMirror <pabstmirror@gmail.com>
* disable calls to extension
* Update fnc_onMedicationUsage.sqf
* Medical - Skip unneeded setVars on initUnit (#6949)
* Medical - Transfer state machine state on locality (#6950)
* Medical - Transfer state machine state on locality
* Fix feedback isUnconscious var
* Exclude AI
* Make UAV excludes consistant, formating
* Update fnc_treatmentFullHealLocal.sqf
* reset fractures on respawn
* 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).
* Move scream and moan sounds to medical feedback
* Move vanilla feedback overrides to medical feedback
* Update all function calls
* Use events to avoid a dependency
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.