From 80aa05e6e63ee40c8053095454cc6a7987d4d73f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 23 Apr 2019 22:17:45 -0500 Subject: [PATCH] Add arm fractures and aim effects --- .../functions/fnc_arithmeticGetResult.sqf | 20 ++++----- addons/medical/XEH_postInit.sqf | 4 +- addons/medical/dev/watchVariable.sqf | 4 ++ .../functions/fnc_woundsHandlerSQF.sqf | 14 +++---- addons/medical_engine/XEH_PREP.hpp | 2 +- addons/medical_engine/XEH_postInit.sqf | 7 ++++ ...imping.sqf => fnc_updateDamageEffects.sqf} | 21 ++++++---- .../data/body_image/arm_left_bonel.paa | Bin 0 -> 26461 bytes .../data/body_image/arm_right_boner.paa | Bin 0 -> 26424 bytes .../functions/fnc_updateBodyImage.sqf | 4 +- addons/medical_gui/gui.hpp | 38 +++++++++++++----- addons/medical_gui/script_component.hpp | 6 ++- addons/medical_treatment/XEH_postInit.sqf | 1 - .../functions/fnc_handleBandageOpening.sqf | 2 +- .../functions/fnc_splintLocal.sqf | 2 +- .../functions/fnc_treatmentBandageLocal.sqf | 4 +- .../functions/fnc_treatmentFullHealLocal.sqf | 2 +- .../fnc_treatmentSurgicalKit_onProgress.sqf | 6 ++- 18 files changed, 87 insertions(+), 50 deletions(-) rename addons/medical_engine/functions/{fnc_setLimping.sqf => fnc_updateDamageEffects.sqf} (66%) create mode 100644 addons/medical_gui/data/body_image/arm_left_bonel.paa create mode 100644 addons/medical_gui/data/body_image/arm_right_boner.paa diff --git a/addons/common/functions/fnc_arithmeticGetResult.sqf b/addons/common/functions/fnc_arithmeticGetResult.sqf index 418d510d66..e54f44fd27 100644 --- a/addons/common/functions/fnc_arithmeticGetResult.sqf +++ b/addons/common/functions/fnc_arithmeticGetResult.sqf @@ -6,7 +6,7 @@ * Arguments: * 0: Namespace * 1: Number Set ID - * 2: Operation (sum, product, min, max, avg) + * 2: Operation (sum, product, min, max, avg) (Case Sensitive) * * Return Value: * Value @@ -19,11 +19,19 @@ */ params ["_namespace", "_setID", "_op"]; -TRACE_3("params",_namespace,_setID,_op); +TRACE_3("arithmeticGetResult",_namespace,_setID,_op); private _data = (_namespace getVariable _setID) param [2, []]; switch (_op) do { + case ("max"): { + private _result = -1e99; + { + _result = _result max (call _x); + nil + } count _data; + _result // return + }; case ("sum"): { private _result = 0; { @@ -48,14 +56,6 @@ switch (_op) do { } count _data; _result // return }; - case ("max"): { - private _result = -1e99; - { - _result = _result max (call _x); - nil - } count _data; - _result // return - }; case ("avg"): { private _result = 0; { diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 5dd19195e8..c2d202f567 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -6,9 +6,7 @@ if (!hasInterface) exitWith {}; [missionNamespace, "ACE_setCustomAimCoef", QUOTE(ADDON), { - private _pain = GET_PAIN_PERCEIVED(ACE_player); - - linearConversion [0, 1, _pain, 1, 5, true]; + (linearConversion [0, 1, GET_PAIN_PERCEIVED(ACE_player), 1, 5, true]) + (ACE_player getVariable [QEGVAR(medical_engine,aimFracture), 0]) }] call EFUNC(common,arithmeticSetSource); #ifdef DEBUG_MODE_FULL diff --git a/addons/medical/dev/watchVariable.sqf b/addons/medical/dev/watchVariable.sqf index c14d52649e..4eeee668b0 100644 --- a/addons/medical/dev/watchVariable.sqf +++ b/addons/medical/dev/watchVariable.sqf @@ -144,6 +144,10 @@ _return pushBack "------- Medications Raw: -------"; _return append _rawMedications; + if (_unit isEqualTo ACE_player) then { + _return pushBack format ["ACE_setCustomAimCoef: %1", [missionNamespace, "ACE_setCustomAimCoef", "max"] call ace_common_fnc_arithmeticGetResult]; + }; + // Footer: _return pushBack ""; diff --git a/addons/medical_damage/functions/fnc_woundsHandlerSQF.sqf b/addons/medical_damage/functions/fnc_woundsHandlerSQF.sqf index 410a49fa8c..c6eeab01e9 100644 --- a/addons/medical_damage/functions/fnc_woundsHandlerSQF.sqf +++ b/addons/medical_damage/functions/fnc_woundsHandlerSQF.sqf @@ -67,7 +67,7 @@ if (_highestPossibleSpot < 0) exitWith { TRACE_2("no wounds possible",_damage,_h // Administration for open wounds and ids private _openWounds = _unit getVariable [QEGVAR(medical,openWounds), []]; -private _updateLimping = false; +private _updateDamageEffects = false; private _painLevel = 0; private _critialDamage = false; private _bodyPartDamage = _unit getVariable [QEGVAR(medical,bodyPartDamage), [0,0,0,0,0,0]]; @@ -133,16 +133,16 @@ private _bodyPartVisParams = [_unit, false, false, false, false]; // params arra [QEGVAR(medical,FatalInjury), _unit] call CBA_fnc_localEvent; }; }; - case (_causeFracture && {EGVAR(medical,fractures) > 0} && {_bodyPartNToAdd > 3} && {_woundDamage > FRACTURE_DAMAGE_THRESHOLD}): { // ToDo: Arm fractures? - TRACE_1("fracture",_bodyPartNToAdd); + case (_causeFracture && {EGVAR(medical,fractures) > 0} && {_bodyPartNToAdd > 1} && {_woundDamage > FRACTURE_DAMAGE_THRESHOLD}): { + TRACE_1("limb fracture",_bodyPartNToAdd); // todo: play sound? private _fractures = _unit getVariable [QEGVAR(medical,fractures), [0,0,0,0,0,0]]; _fractures set [_bodyPartNToAdd, 1]; _unit setVariable [QEGVAR(medical,fractures), _fractures, true]; - _updateLimping = true; + _updateDamageEffects = true; }; case (_causeLimping && {EGVAR(medical,limping) > 0} && {_bodyPartNToAdd > 3} && {_woundDamage > LIMPING_DAMAGE_THRESHOLD}): { - _updateLimping = true; + _updateDamageEffects = true; }; }; @@ -175,8 +175,8 @@ private _bodyPartVisParams = [_unit, false, false, false, false]; // params arra }; } forEach _thresholds; -if (_updateLimping) then { - [_unit] call EFUNC(medical_engine,setLimping); +if (_updateDamageEffects) then { + [_unit] call EFUNC(medical_engine,updateDamageEffects); }; _unit setVariable [QEGVAR(medical,openWounds), _openWounds, true]; diff --git a/addons/medical_engine/XEH_PREP.hpp b/addons/medical_engine/XEH_PREP.hpp index 3c7872c515..0bacdd97e7 100644 --- a/addons/medical_engine/XEH_PREP.hpp +++ b/addons/medical_engine/XEH_PREP.hpp @@ -1,6 +1,6 @@ PREP(handleDamage); PREP(damageBodyPart); PREP(updateBodyPartVisuals); -PREP(setLimping); +PREP(updateDamageEffects); PREP(setStructuralDamage); PREP(setUnconsciousAnim); diff --git a/addons/medical_engine/XEH_postInit.sqf b/addons/medical_engine/XEH_postInit.sqf index f4f9f746c7..18703e7358 100644 --- a/addons/medical_engine/XEH_postInit.sqf +++ b/addons/medical_engine/XEH_postInit.sqf @@ -1,5 +1,12 @@ #include "script_component.hpp" +[QGVAR(updateDamageEffects), LINKFUNC(updateDamageEffects)] call CBA_fnc_addEventHandler; +["unit", { + params ["_new"]; + [_new] call FUNC(updateDamageEffects); // Run on new controlled unit to update QGVAR(aimFracture) +}, true] call CBA_fnc_addPlayerEventHandler; + + ["CAManBase", "init", { params ["_unit"]; diff --git a/addons/medical_engine/functions/fnc_setLimping.sqf b/addons/medical_engine/functions/fnc_updateDamageEffects.sqf similarity index 66% rename from addons/medical_engine/functions/fnc_setLimping.sqf rename to addons/medical_engine/functions/fnc_updateDamageEffects.sqf index 6cb7c067d7..dffe7f2ebc 100644 --- a/addons/medical_engine/functions/fnc_setLimping.sqf +++ b/addons/medical_engine/functions/fnc_updateDamageEffects.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" /* - * Author: commy2 - * Forces a unit to limp or not. + * Author: commy2, PabstMirror + * Updates damage effects for limping and fractures * * Arguments: * 0: Unit @@ -11,7 +11,7 @@ * None * * Example: - * [player] call ace_medical_engine_fnc_setLimping + * [player] call ace_medical_engine_fnc_updateDamageEffects * * Public: No */ @@ -24,24 +24,31 @@ private _isLimping = false; if (EGVAR(medical,fractures) > 0) then { private _fractures = _unit getVariable [QEGVAR(medical,fractures), [0,0,0,0,0,0]]; + TRACE_1("",_fractures); if (((_fractures select 4) == 1) || {(_fractures select 5) == 1}) then { TRACE_1("limping because of fracture",_fractures); _isLimping = true; }; + private _aimFracture = 0; + if ((_fractures select 2) == 1) then { _aimFracture = _aimFracture + 4; }; + if ((_fractures select 3) == 1) then { _aimFracture = _aimFracture + 4; }; - if (EGVAR(medical,fractures) == 2) then { // block sprinting if we have a leg splint on - private _isSprintBlocked = ((_fractures select 4) == -1) || {(_fractures select 5) == -1}; - TRACE_2("",_isSprintBlocked,_fractures); + if (EGVAR(medical,fractures) == 2) then { // the limp with a splint will still cause effects + private _isSprintBlocked = ((_fractures select 4) == -1) || {(_fractures select 5) == -1}; // block sprinting if we have a leg splint on if (_isSprintBlocked || {!isSprintAllowed _unit}) then { // only update status effect if we need to + TRACE_1("updating status effect",_isSprintBlocked); [_unit, "blockSprint", QEGVAR(medical,fracture), _isSprintBlocked] call EFUNC(common,statusEffect_set); }; + if ((_fractures select 2) == 1) then { _aimFracture = _aimFracture + 2; }; + if ((_fractures select 3) == 1) then { _aimFracture = _aimFracture + 2; }; }; + _unit setVariable [QGVAR(aimFracture), _aimFracture, false]; // local only var, used in ace_medical's postInit to set ACE_setCustomAimCoef }; if (!_isLimping && {EGVAR(medical,limping) > 0}) then { private _woundsToCheck = _unit getVariable [QEGVAR(medical,openWounds), []]; if (EGVAR(medical,limping) == 2) then { - _woundsToCheck = _woundsToCheck + (_unit getVariable [QEGVAR(medical,bandagedWounds), []]); // append will break things + _woundsToCheck = _woundsToCheck + (_unit getVariable [QEGVAR(medical,bandagedWounds), []]); // do not append }; { _x params ["_xClassID", "_xBodyPartN", "_xAmountOf", "", "_xDamage"]; diff --git a/addons/medical_gui/data/body_image/arm_left_bonel.paa b/addons/medical_gui/data/body_image/arm_left_bonel.paa new file mode 100644 index 0000000000000000000000000000000000000000..9d4cefd89b55a01876e5f95f9c4a5c2f8573afd0 GIT binary patch literal 26461 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 3}) then { - [_target] call EFUNC(medical_engine,setLimping); + [_target] call EFUNC(medical_engine,updateDamageEffects); }; }; } else { diff --git a/addons/medical_treatment/functions/fnc_splintLocal.sqf b/addons/medical_treatment/functions/fnc_splintLocal.sqf index 003adc073c..1996e8321a 100644 --- a/addons/medical_treatment/functions/fnc_splintLocal.sqf +++ b/addons/medical_treatment/functions/fnc_splintLocal.sqf @@ -26,6 +26,6 @@ _fractures set [_bodyPartNum, -1]; _target setVariable [QEGVAR(medical,fractures), _fractures, true]; // Check if we fixed limping from this treatment -[_target] call EFUNC(medical_engine,setLimping); +[_target] call EFUNC(medical_engine,updateDamageEffects); // toDo: AddToLog: diff --git a/addons/medical_treatment/functions/fnc_treatmentBandageLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentBandageLocal.sqf index 9b362954bd..94ab425b00 100644 --- a/addons/medical_treatment/functions/fnc_treatmentBandageLocal.sqf +++ b/addons/medical_treatment/functions/fnc_treatmentBandageLocal.sqf @@ -47,8 +47,8 @@ if (_impact > 0 && {GVAR(advancedBandages) && {GVAR(woundReopening)}}) then { }; // Check if we fixed limping from this treatment -if ((EGVAR(medical,limping) == 1) && {_amountOf <= 0} && {_target getVariable [QEGVAR(medical,isLimping), false]}) then { - [_target] call EFUNC(medical_engine,setLimping); +if ((EGVAR(medical,limping) == 1) && {_partIndex > 3} && {_amountOf <= 0} && {_target getVariable [QEGVAR(medical,isLimping), false]}) then { + [_target] call EFUNC(medical_engine,updateDamageEffects); }; true diff --git a/addons/medical_treatment/functions/fnc_treatmentFullHealLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentFullHealLocal.sqf index 7369eb57aa..014b102834 100644 --- a/addons/medical_treatment/functions/fnc_treatmentFullHealLocal.sqf +++ b/addons/medical_treatment/functions/fnc_treatmentFullHealLocal.sqf @@ -71,7 +71,7 @@ _target setVariable [VAR_MEDICATIONS, [], true]; // Reset triage card since medication is all reset _target setVariable [QEGVAR(medical,triageCard), [], true]; -[_target] call EFUNC(medical_engine,setLimping); +[_target] call EFUNC(medical_engine,updateDamageEffects); // Resetting damage _target setDamage 0; diff --git a/addons/medical_treatment/functions/fnc_treatmentSurgicalKit_onProgress.sqf b/addons/medical_treatment/functions/fnc_treatmentSurgicalKit_onProgress.sqf index a49560ac01..66d2373804 100644 --- a/addons/medical_treatment/functions/fnc_treatmentSurgicalKit_onProgress.sqf +++ b/addons/medical_treatment/functions/fnc_treatmentSurgicalKit_onProgress.sqf @@ -39,8 +39,10 @@ if (_totalTime - _elapsedTime <= (count _bandagedWounds - 1) * 5) then { // Check if we fixed limping from this treatment if ((EGVAR(medical,limping) == 2) && {_target getVariable [QEGVAR(medical,isLimping), false]}) then { _treatedWound params ["", "_partN"]; - if (_partN < 4) exitWith {}; - [_target] call EFUNC(medical_engine,setLimping); + if (_partN > 3) then { // only for LEG wounds + TRACE_3("updating damage effects",_target,_partN,local _target); + [QEGVAR(medical_engine,updateDamageEffects), [_target], _target] call CBA_fnc_targetEvent; + }; }; };