/* * Author: PabstMirror * Dev function to watch all medical variables on a unit * * Arguments: * None * * Return Value: * None * * Example: * [] call ace_medical_fnc_dev_watchMedicalStats; * * Public: Yes */ #include "script_component.hpp" ["medical", { // Hide when patient display is up because they might overlap if (!isNull EGVAR(medical,displayPatientInformationTarget)) exitWith {""}; private _unit = cursorTarget; if (!(_unit isKindOf "CAManBase")) then {_unit = cursorObject}; if (!(_unit isKindOf "CAManBase")) then {_unit = player}; if (!(_unit isKindOf "CAManBase")) exitWith {"No Unit?"}; private _return = []; // Header: _return pushBack format ["%2 [%3]", (["00FF00", "0000FF"] select (_unit == player)), [_unit] call EFUNC(common,getName), typeOf _unit]; _return pushBack ""; // State: private _hasStableVitals = [_unit] call EFUNC(medical,hasStableVitals); private _targetState = [_unit, GVAR(STATE_MACHINE)] call CBA_statemachine_fnc_getCurrentState; private _color = switch (_targetState) do {case "Default": {"33FF33"}; case "Injured": {"FF3333"}; case "Unconscious": {"FF8833"}; case "CardiacArrest": {"FF33AA"}; default {"333333"}}; _return pushBack format ["State: %2 [StableVitals: %3]", _color, _targetState, _hasStableVitals]; // Blood: private _bloodVolume = _unit getVariable [QEGVAR(medical,bloodVolume), DEFAULT_BLOOD_VOLUME]; private _bloodLoss = [_unit] call EFUNC(medical,getBloodLoss); private _secondsToHeartstop = if (_bloodLoss != 0) then {format ["[Time Left: %1 sec]", (((_bloodVolume - BLOOD_VOLUME_CLASS_4_HEMORRHAGE) max 0) / _bloodLoss) toFixed 1]} else {""}; _return pushBack format ["Blood: %1", _bloodVolume toFixed 3]; _return pushBack format [" - [Loss: %1] %2", _bloodLoss toFixed 5, _secondsToHeartstop]; // Heart: private _cardiacOutput = [_unit] call EFUNC(medical,getCardiacOutput); private _heartRate = _unit getVariable [QEGVAR(medical,heartRate), DEFAULT_HEART_RATE]; ([_unit] call EFUNC(medical,getBloodPressure)) params ["_bpLow", "_bpHigh"]; _return pushBack format ["CardiacOutput %1", _cardiacOutput toFixed 5]; _return pushBack format [" - [HR: %1] [BP: %2 / %3]", _heartRate toFixed 1, _bpLow toFixed 1, _bpHigh toFixed 1]; // Pain: private _pain = _unit getVariable [QEGVAR(medical,pain), 0]; private _painSuppress = _unit getVariable [QEGVAR(medical,painSuppress), 0]; private _painLevel = [_unit] call EFUNC(medical,getPainLevel); _return pushBack format ["Effective Pain: %1", _painLevel toFixed 3]; _return pushBack format [" - [Pain: %1] [Suppress: %2]", _pain toFixed 3, _painSuppress toFixed 3]; // Damage: private _damage = _unit getVariable [QEGVAR(medical,bodyPartDamage), [0,0,0,0,0,0]]; private _limping = if (_unit getVariable [QEGVAR(medical_engine,isLimping), false]) then {"[ Limping ]"} else {""}; _return pushBack format ["Damage: [H: %1] [B: %2] %3", (_damage select 0) toFixed 2, (_damage select 1) toFixed 2, _limping]; _return pushBack format ["[LA:%1] [RA: %2] [LL:%1] [RL: %2]", (_damage select 2) toFixed 2, (_damage select 3) toFixed 2, (_damage select 4) toFixed 2, (_damage select 5) toFixed 2]; // Tourniquets: _return pushBack "------- Tourniquets: -------"; private _tourniquets = _unit getVariable [QEGVAR(medical,tourniquets), [0,0,0,0,0,0]]; private _occludedMedications = _unit getVariable [QEGVAR(medical,occludedMedications), []]; { private _tPartNum = _forEachIndex; if (_x != 0) then { _return pushBack format ["%1 [Time On: %2]", GVAR(SELECTIONS) select _tPartNum, (CBA_missionTime - _x) toFixed 1]; }; { _x params ["", "_medClassname", "_medPartNum"]; if (_medPartNum == _tPartNum) then { _return pushBack format [" - Occluded Med: %1", _medClassname]; }; } forEach _occludedMedications; } forEach _tourniquets; // Wounds: _return pushBack "------- Wounds: -------"; private _wounds = _unit getVariable [QEGVAR(medical,openWounds), []]; { _x params ["", "_xClassID", "_xBodyPartN", "_xAmountOf", "_xBleeding", "_xDamage", "_xCategory"]; _return pushBack format ["%1: [%2-%3] [x%4] [Bld: %5] [Dmg: %6]", GVAR(SELECTIONS) select _xBodyPartN, _xClassID, _xCategory, _xAmountOf toFixed 1, _xBleeding toFixed 4, _xDamage toFixed 2]; } forEach _wounds; // IVs: _return pushBack "------- IVs: -------"; private _ivBags = _unit getVariable [QEGVAR(medical,ivBags), []]; { _x params ["_xVolumeAdded", "_xType", "_xBodyPartN"]; _return pushBack format ["%1: %2 [%3 ml]", GVAR(SELECTIONS) select _xBodyPartN, _xType, _xVolumeAdded]; } forEach _ivBags; // Footer: _return pushBack ""; // Return: _return joinString "
" }, [30]] call EFUNC(common,watchVariable);