ACE3/addons/medical_engine/script_component.hpp
pterolatypus 73a7dbdc1e
Medical - Rework wound handling (#8278)
- 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.
2022-02-17 20:03:12 +00:00

43 lines
1.3 KiB
C++

#define COMPONENT medical_engine
#define COMPONENT_BEAUTIFIED Medical Engine
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL
// #define DISABLE_COMPILE_CACHE
// #define ENABLE_PERFORMANCE_COUNTERS
#ifdef DEBUG_ENABLED_MEDICAL_ENGINE
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_MEDICAL_ENGINE
#define DEBUG_SETTINGS DEBUG_SETTINGS_MEDICAL_ENGINE
#endif
#include "\z\ace\addons\medical_engine\script_macros_medical.hpp"
#include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical_engine\script_macros_config.hpp"
#define PRELOAD_CLASS(class) \
TRACE_1("Starting preload",class);\
[{\
1 preloadObject _this;\
}, {\
TRACE_1("Preload done",_this);\
}, class] call CBA_fnc_waitUntilAndExecute
#define PRIORITY_HEAD 3
#define PRIORITY_BODY 4
#define PRIORITY_LEFT_ARM (1 + random 1)
#define PRIORITY_RIGHT_ARM (1 + random 1)
#define PRIORITY_LEFT_LEG (1 + random 1)
#define PRIORITY_RIGHT_LEG (1 + random 1)
#define PRIORITY_STRUCTURAL 1
// don't change, these reflect hard coded engine behaviour
#define DAMAGED_MIN_THRESHOLD 0.45
#define LIMPING_MIN_DAMAGE 0.5
#define UNCON_ANIM(var1) DOUBLES(GVAR(uncon_anim),var1)
#define QUNCON_ANIM(var1) QUOTE(UNCON_ANIM(var1))