Merge branch 'master' of https://github.com/KoffeinFlummi/ACE3 into mediccarry

This commit is contained in:
commy2 2015-03-25 11:08:13 +01:00
commit 4ae3c22642
15 changed files with 143 additions and 119 deletions

View File

@ -1,4 +1,6 @@
#define MEDICAL_ACTION_DISTANCE 1.75
class CfgVehicles {
class Logic;
@ -861,7 +863,7 @@ class CfgVehicles {
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
icon = PATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitHead";
distance = 2.0;
@ -919,112 +921,110 @@ class CfgVehicles {
};
};
class ACE_Torso {
class Medical {
displayName = "Medical";
distance = 5.0;
condition = "true";
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
icon = PATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitBody";
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
hotkey = "M";
icon = PATHTOF(UI\icons\medical_cross.paa);
hotkey = "B";
enableInside = 1;
icon = PATHTOF(UI\icons\bandage.paa);
};
class Carry {
displayName = "$STR_ACE_MEDICAL_CARRY";
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Carry')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'Carry')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
hotkey = "";
enableInside = 1;
//icon = PATHTOF(UI\icons\bandage.paa);
};
class Drag {
displayName = "$STR_ACE_MEDICAL_DRAG";
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Drag')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'Drag')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
hotkey = "";
enableInside = 1;
//icon = PATHTOF(UI\icons\bandage.paa);
};
class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitBody";
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
hotkey = "B";
icon = PATHTOF(UI\icons\bandage.paa);
};
class Carry {
displayName = "$STR_ACE_MEDICAL_CARRY";
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Carry')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'Carry')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
hotkey = "";
//icon = PATHTOF(UI\icons\bandage.paa);
};
class Drag {
displayName = "$STR_ACE_MEDICAL_DRAG";
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Drag')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'Drag')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
hotkey = "";
//icon = PATHTOF(UI\icons\bandage.paa);
};
class TriageCard {
displayName = "Triage Card";
distance = 2.0;
condition = "true";
statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard));
showDisabled = 1;
priority = 2;
hotkey = "";
enableInside = 1;
icon = PATHTOF(UI\icons\triageCard.paa);
};
class TriageCard {
displayName = "Triage Card";
distance = 2.0;
condition = "true";
statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard));
showDisabled = 1;
priority = 2;
hotkey = "";
icon = PATHTOF(UI\icons\triageCard.paa);
};
// Advanced medical
class FieldDressing {
displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing";
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
priority = 2;
hotkey = "";
icon = PATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage";
condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment));
icon = PATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage";
condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment));
icon = PATHTOF(UI\icons\bandage.paa);
};
class QuikClot: fieldDressing {
displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot";
condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment));
icon = PATHTOF(UI\icons\bandage.paa);
};
class SurgicalKit: fieldDressing {
displayName = "Use Surgical Kit";
condition = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(treatment));
icon = PATHTOF(UI\icons\surgicalKit.paa);
};
class PersonalAidKit: fieldDressing {
displayName = "Use Personal Aid Kit";
condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment));
icon = "";
};
class CPR: fieldDressing {
displayName = "CPR";
condition = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(treatment));
icon = "";
};
// Advanced medical
class FieldDressing {
displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing";
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
priority = 2;
hotkey = "";
enableInside = 1;
icon = PATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage";
condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment));
icon = PATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage";
condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment));
icon = PATHTOF(UI\icons\bandage.paa);
};
class QuikClot: fieldDressing {
displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot";
condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment));
icon = PATHTOF(UI\icons\bandage.paa);
};
class SurgicalKit: fieldDressing {
displayName = "Use Surgical Kit";
condition = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(treatment));
icon = PATHTOF(UI\icons\surgicalKit.paa);
};
class PersonalAidKit: fieldDressing {
displayName = "Use Personal Aid Kit";
condition = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(treatment));
icon = "";
};
class CPR: fieldDressing {
displayName = "CPR";
condition = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(treatment));
icon = "";
};
};
class ACE_ArmLeft {
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation));
icon = PATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitLeftArm";
@ -1097,7 +1097,7 @@ class CfgVehicles {
icon = PATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = "#STR_ACE_MEDICAL_ACTIONS_Blood4_500";
displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_500";
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(treatment));
};
@ -1157,6 +1157,7 @@ class CfgVehicles {
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation));
icon = PATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitRightArm";
@ -1225,7 +1226,7 @@ class CfgVehicles {
icon = PATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = "#STR_ACE_MEDICAL_ACTIONS_Blood4_500";
displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_500";
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(treatment));
};
@ -1286,6 +1287,7 @@ class CfgVehicles {
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation));
icon = PATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitLeftLeg";
@ -1355,7 +1357,7 @@ class CfgVehicles {
icon = PATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = "#STR_ACE_MEDICAL_ACTIONS_Blood4_500";
displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_500";
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(treatment));
};
@ -1404,6 +1406,7 @@ class CfgVehicles {
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation));
icon = PATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitRightLeg";
@ -1473,7 +1476,7 @@ class CfgVehicles {
icon = PATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = "#STR_ACE_MEDICAL_ACTIONS_Blood4_500";
displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_500";
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(treatment));
};

View File

@ -3,8 +3,8 @@
private ["_unit"];
_unit = _this select 0;
if !(local _unit) exitWith {};
_unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}];
[_unit] call FUNC(init);
if (local _unit) then {
[_unit] call FUNC(init);
};

View File

@ -110,10 +110,11 @@ GVAR(effectTimeBlood) = time;
};
};
_bleeding = ACE_player call FUNC(getBloodLoss);
// Bleeding Indicator
if (damage ACE_player > 0.1 and GVAR(effectTimeBlood) + 6 < time) then {
if (_bleeding > 0 and GVAR(effectTimeBlood) + 6 < time) then {
GVAR(effectTimeBlood) = time;
[500 * damage ACE_player] call BIS_fnc_bloodEffect;
[500 * _bleeding] call BIS_fnc_bloodEffect;
};
// Blood Volume Effect

View File

@ -56,5 +56,5 @@ if ([_caller] call FUNC(isMedic)) then {
["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller]] call EFUNC(common,targetEvent);
if (_logOutPut != "") then {
[_target,"examine", format["%1 checked Blood Pressure: %2", [_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog);
[_target,"examine", "%1 checked Blood Pressure: %2", [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog);
};

View File

@ -49,5 +49,5 @@ if (_heartRate > 1.0) then {
["displayTextStructured", [_caller], [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller]] call EFUNC(common,targetEvent);
if (_logOutPut != "") then {
[_unit,"examine",format["%1 checked Heart Rate: %2",[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog);
[_unit,"examine","%1 checked Heart Rate: %2",[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog);
};

View File

@ -26,13 +26,11 @@ if ([_unit] call FUNC(hasMedicalEnabled) || _force) then {
if ((_unit getvariable[QGVAR(addedToUnitLoop),false] || !alive _unit) && !_force) exitwith{};
_unit setvariable [QGVAR(addedToUnitLoop), true, true];
diag_log format["[MEDICAL] Added a unit to loop: %1", _unit];
[{
private "_unit";
_unit = (_this select 0) select 0;
if (!alive _unit || !local _unit) then {
[_this select 1] call CBA_fnc_removePerFrameHandler;
diag_log format["[MEDICAL] Removed a unit from loop: %1", _unit];
if (!local _unit) then {
if (GVAR(level) >= 2) then {
_unit setvariable [QGVAR(heartRate), _unit getvariable [QGVAR(heartRate), 0], true];

View File

@ -49,7 +49,7 @@ if (_show) then {
};
if (((_target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]) select GVAR(currentSelectedSelectionN)) > 0) then {
_genericMessages pushback [localize "STR_ACE_MEDICAL_STATUS_TOURNIQUET_APPLIED", [0.5, 0.5, 0, 1]];
_genericMessages pushback [localize "STR_ACE_MEDICAL_STATUS_TOURNIQUET_APPLIED", [0.77, 0.51, 0.08, 1]];
};
if (_target getvariable[QGVAR(hasPain), false]) then {
_genericMessages pushback [localize "STR_ACE_MEDICAL_STATUS_PAIN", [1, 1, 1, 1]];

View File

@ -110,7 +110,7 @@ _minWaitingTime = (round(random(10)+5));
if (!_hasMovedOut) then {
// Reset the unit back to the previous captive state.
[_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
// Swhich the unit back to its original group
[_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
@ -118,7 +118,7 @@ _minWaitingTime = (round(random(10)+5));
_unit setUnitPos _originalPos; // This is not position but stance (DOWN, MIDDLE, UP)
_unit setUnconscious false;
["medical_onUnconscious", [_unit], [_unit, false]] call EFUNC(common,targetEvent);
["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
// ensure this statement runs only once
_args set [6, true];
};
@ -142,4 +142,4 @@ _minWaitingTime = (round(random(10)+5));
}, 0.1, [_unit,_animState, _originalPos, _startingTime, _minWaitingTime, false] ] call CBA_fnc_addPerFrameHandler;
["medical_onUnconscious", [_unit], [_unit, true]] call EFUNC(common,targetEvent);
["medical_onUnconscious", [_unit, true]] call EFUNC(common,globalEvent);

View File

@ -36,7 +36,7 @@ if ([_caller, _target, _items] call FUNC(useItems)) then {
}foreach _items;*/
["Medical_treatmentCompleted", [_caller, _target, _selectionName, _className, true]] call ace_common_fnc_localEvent;
[_target, "activity", "STR_ACE_HAS_BANDAGED_ACTIVITY", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
[_target, "activity", "STR_ACE_MEDICAL_ACTIVITY_bandagedPatient", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
};
true;

View File

@ -35,7 +35,7 @@ if ([_caller, _target, _items] call FUNC(useItems)) then {
}foreach _items;
["Medical_treatmentCompleted", [_caller, _target, _selectionName, _className, true]] call ace_common_fnc_localEvent;
[_target, "activity", "STR_ACE_HAS_MEDICATION_ACTIVITY", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
[_target, "activity", "STR_ACE_MEDICAL_ACTIVITY_usedItem", [[_caller] call EFUNC(common,getName), _className]] call FUNC(addToLog);
};
true;

View File

@ -31,5 +31,5 @@ if ([_caller, _target, _items] call FUNC(useItems)) then {
[[_target, _removeItem], QUOTE(DFUNC(treatmentIVLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */
["Medical_treatmentCompleted", [_caller, _target, _selectionName, _className, true]] call ace_common_fnc_localEvent;
[_target, _removeItem] call FUNC(addToTriageCard);
[_target, "activity", "STR_ACE_HAS_GIVEN_IV_ACTIVITY", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
[_target, "activity", "STR_ACE_MEDICAL_ACTIVITY_gaveIV", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
};

View File

@ -35,7 +35,7 @@ _target setvariable [_varName, (_target getvariable [_varName, 0]) + _volumeAdde
if !(_varName in GVAR(IVBags)) then {
GVAR(IVBags) pushback _varName;
publicVariable GVAR(IVBags);
publicVariable QGVAR(IVBags);
};
// TODO localization

View File

@ -44,7 +44,7 @@ if ([_caller, _target, _items] call FUNC(useItems)) then {
[[_target, _removeItem], QUOTE(DFUNC(treatmentTourniquetLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */
["Medical_treatmentCompleted", [_caller, _target, _selectionName, _className, true]] call ace_common_fnc_localEvent;
[_target, _removeItem] call FUNC(addToTriageCard);
[_target, "activity", "STR_ACE_HAS_APPLIED_TOURNIQUET_ACTIVITY", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
[_target, "activity", "STR_ACE_MEDICAL_ACTIVITY_appliedTourniquet", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog);
};
true;

View File

@ -853,5 +853,19 @@
<English>Unload patient</English>
</Key>
</Container>
<Container name="Activities">
<Key ID="STR_ACE_MEDICAL_ACTIVITY_bandagedPatient">
<English>%1 has bandaged patient</English>
</Key>
<Key ID="STR_ACE_MEDICAL_ACTIVITY_usedItem">
<English>%1 used %2</English>
</Key>
<Key ID="STR_ACE_MEDICAL_ACTIVITY_gaveIV">
<English>%1 has given an IV</English>
</Key>
<Key ID="STR_ACE_MEDICAL_ACTIVITY_appliedTourniquet">
<English>%1 applied a tourniquet</English>
</Key>
</Container>
</Package>
</Project>

View File

@ -66,4 +66,12 @@ class CfgVehicles {
description = "Controls how muchdata is filled in the microDAGR items. Less data restricts the map view to show less on the minimap.<br/>Source: microDAGR.pbo";
};
};
class Box_NATO_Support_F;
class ACE_Box_Misc: Box_NATO_Support_F {
class TransportItems {
MACRO_ADDITEM(ACE_microDAGR,10);
};
};
};