mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge pull request #193 from KoffeinFlummi/Medical_Dragging
Medical: Carry, drag and dropping of a unit
This commit is contained in:
commit
cb63302926
@ -49,6 +49,30 @@ class ACE_Medical_Actions {
|
|||||||
callbackSuccess = QUOTE(DFUNC(treatmentBasic_bloodbag));
|
callbackSuccess = QUOTE(DFUNC(treatmentBasic_bloodbag));
|
||||||
animationCaller = "AinvPknlMstpSnonWnonDnon_medic1";
|
animationCaller = "AinvPknlMstpSnonWnonDnon_medic1";
|
||||||
};
|
};
|
||||||
|
class Carry: Bandage {
|
||||||
|
displayName = "";
|
||||||
|
displayNameProgress = "";
|
||||||
|
treatmentLocations[] = {"All"};
|
||||||
|
requiredMedic = 0;
|
||||||
|
treatmentTime = 0;
|
||||||
|
items[] = {};
|
||||||
|
condition = QUOTE(DFUNC(canCarry));
|
||||||
|
callbackSuccess = QUOTE([ARR_3(_this select 0, _this select 1, true)] call DFUNC(actionCarryUnit));
|
||||||
|
callbackFailure = "";
|
||||||
|
callbackProgress = "";
|
||||||
|
itemConsumed = 0;
|
||||||
|
animationPatient = "";
|
||||||
|
animationCaller = "";
|
||||||
|
animationCallerProne = "";
|
||||||
|
animationCallerSelf = "";
|
||||||
|
animationCallerSelfProne = "";
|
||||||
|
};
|
||||||
|
class Drag: Carry {
|
||||||
|
displayName = "";
|
||||||
|
displayNameProgress = "";
|
||||||
|
condition = QUOTE(DFUNC(canCarry));
|
||||||
|
callbackSuccess = QUOTE([ARR_3(_this select 0, _this select 1, false)] call DFUNC(actionCarryUnit));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Advanced {
|
class Advanced {
|
||||||
@ -199,6 +223,30 @@ class ACE_Medical_Actions {
|
|||||||
animationPatient = "";
|
animationPatient = "";
|
||||||
itemConsumed = 0;
|
itemConsumed = 0;
|
||||||
};
|
};
|
||||||
|
class Carry: fieldDressing {
|
||||||
|
displayName = "";
|
||||||
|
displayNameProgress = "";
|
||||||
|
treatmentLocations[] = {"All"};
|
||||||
|
requiredMedic = 0;
|
||||||
|
treatmentTime = 0;
|
||||||
|
items[] = {};
|
||||||
|
condition = QUOTE(DFUNC(canCarry));
|
||||||
|
callbackSuccess = QUOTE([ARR_3(_this select 0, _this select 1, true)] call DFUNC(actionCarryUnit));
|
||||||
|
callbackFailure = "";
|
||||||
|
callbackProgress = "";
|
||||||
|
itemConsumed = 0;
|
||||||
|
animationPatient = "";
|
||||||
|
animationCaller = "";
|
||||||
|
animationCallerProne = "";
|
||||||
|
animationCallerSelf = "";
|
||||||
|
animationCallerSelfProne = "";
|
||||||
|
};
|
||||||
|
class Drag: Carry {
|
||||||
|
displayName = "";
|
||||||
|
displayNameProgress = "";
|
||||||
|
condition = QUOTE(DFUNC(canCarry));
|
||||||
|
callbackSuccess = QUOTE([ARR_3(_this select 0, _this select 1, false)] call DFUNC(actionCarryUnit));
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -68,4 +68,8 @@ class ACE_Settings {
|
|||||||
typeName = "NUMBER";
|
typeName = "NUMBER";
|
||||||
value = 120;
|
value = 120;
|
||||||
};
|
};
|
||||||
|
class GVAR(allowDeadBodyMovement) {
|
||||||
|
typeName = "BOOL";
|
||||||
|
value = false;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
@ -894,6 +894,28 @@ class CfgVehicles {
|
|||||||
enableInside = 1;
|
enableInside = 1;
|
||||||
icon = PATHTOF(UI\icons\bandage.paa);
|
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 TriageCard {
|
class TriageCard {
|
||||||
displayName = "Triage Card";
|
displayName = "Triage Card";
|
||||||
@ -1050,27 +1072,27 @@ class CfgVehicles {
|
|||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV_500: PlasmaIV {
|
class PlasmaIV_500: PlasmaIV {
|
||||||
displayName = "Give Blood IV (500ml)";
|
displayName = "Give Plasma IV (500ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV_250: PlasmaIV {
|
class PlasmaIV_250: PlasmaIV {
|
||||||
displayName = "Give Blood IV (250ml)";
|
displayName = "Give Plasma IV (250ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV: BloodIV {
|
class SalineIV: BloodIV {
|
||||||
displayName = "Give Blood IV (1000ml)";
|
displayName = "Give Saline IV (1000ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV_500: SalineIV {
|
class SalineIV_500: SalineIV {
|
||||||
displayName = "Give Blood IV (500ml)";
|
displayName = "Give Saline IV (500ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV_250: SalineIV {
|
class SalineIV_250: SalineIV {
|
||||||
displayName = "Give Blood IV (250ml)";
|
displayName = "Give Saline IV (250ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
@ -1175,32 +1197,32 @@ class CfgVehicles {
|
|||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV: BloodIV {
|
class PlasmaIV: BloodIV {
|
||||||
displayName = "Give Blood IV (1000ml)";
|
displayName = "Give Plasma IV (1000ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV_500: PlasmaIV {
|
class PlasmaIV_500: PlasmaIV {
|
||||||
displayName = "Give Blood IV (500ml)";
|
displayName = "Give Plasma IV (500ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV_250: PlasmaIV {
|
class PlasmaIV_250: PlasmaIV {
|
||||||
displayName = "Give Blood IV (250ml)";
|
displayName = "Give Plasma IV (250ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV: BloodIV {
|
class SalineIV: BloodIV {
|
||||||
displayName = "Give Blood IV (1000ml)";
|
displayName = "Give Saline IV (1000ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV_500: SalineIV {
|
class SalineIV_500: SalineIV {
|
||||||
displayName = "Give Blood IV (500ml)";
|
displayName = "Give Saline IV (500ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV_250: SalineIV {
|
class SalineIV_250: SalineIV {
|
||||||
displayName = "Give Blood IV (250ml)";
|
displayName = "Give Saline IV (250ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
@ -1307,32 +1329,32 @@ class CfgVehicles {
|
|||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV: BloodIV {
|
class PlasmaIV: BloodIV {
|
||||||
displayName = "Give Blood IV (1000ml)";
|
displayName = "Give Plasma IV (1000ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV_500: PlasmaIV {
|
class PlasmaIV_500: PlasmaIV {
|
||||||
displayName = "Give Blood IV (500ml)";
|
displayName = "Give Plasma IV (500ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV_250: PlasmaIV {
|
class PlasmaIV_250: PlasmaIV {
|
||||||
displayName = "Give Blood IV (250ml)";
|
displayName = "Give Plasma IV (250ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV: BloodIV {
|
class SalineIV: BloodIV {
|
||||||
displayName = "Give Blood IV (1000ml)";
|
displayName = "Give saline IV (1000ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV_500: SalineIV {
|
class SalineIV_500: SalineIV {
|
||||||
displayName = "Give Blood IV (500ml)";
|
displayName = "Give saline IV (500ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV_250: SalineIV {
|
class SalineIV_250: SalineIV {
|
||||||
displayName = "Give Blood IV (250ml)";
|
displayName = "Give saline IV (250ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
@ -1427,32 +1449,32 @@ class CfgVehicles {
|
|||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV: BloodIV {
|
class PlasmaIV: BloodIV {
|
||||||
displayName = "Give Blood IV (1000ml)";
|
displayName = "Give Plasma IV (1000ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV_500: PlasmaIV {
|
class PlasmaIV_500: PlasmaIV {
|
||||||
displayName = "Give Blood IV (500ml)";
|
displayName = "Give Plasma IV (500ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class PlasmaIV_250: PlasmaIV {
|
class PlasmaIV_250: PlasmaIV {
|
||||||
displayName = "Give Blood IV (250ml)";
|
displayName = "Give Plasma IV (250ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV: BloodIV {
|
class SalineIV: BloodIV {
|
||||||
displayName = "Give Blood IV (1000ml)";
|
displayName = "Give Saline IV (1000ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV_500: SalineIV {
|
class SalineIV_500: SalineIV {
|
||||||
displayName = "Give Blood IV (500ml)";
|
displayName = "Give Saline IV (500ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
class SalineIV_250: SalineIV {
|
class SalineIV_250: SalineIV {
|
||||||
displayName = "Give Blood IV (250ml)";
|
displayName = "Give Saline IV (250ml)";
|
||||||
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(canTreatCached));
|
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(canTreatCached));
|
||||||
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(treatment));
|
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(treatment));
|
||||||
};
|
};
|
||||||
|
@ -11,6 +11,8 @@ PREP(actionPlaceInBodyBag);
|
|||||||
PREP(actionRemoveTourniquet);
|
PREP(actionRemoveTourniquet);
|
||||||
PREP(actionLoadUnit);
|
PREP(actionLoadUnit);
|
||||||
PREP(actionUnloadUnit);
|
PREP(actionUnloadUnit);
|
||||||
|
PREP(actionCarryUnit);
|
||||||
|
PREP(actionDropUnit);
|
||||||
PREP(addHeartRateAdjustment);
|
PREP(addHeartRateAdjustment);
|
||||||
PREP(addToInjuredCollection);
|
PREP(addToInjuredCollection);
|
||||||
PREP(addToLog);
|
PREP(addToLog);
|
||||||
@ -20,12 +22,14 @@ PREP(addUnloadPatientActions);
|
|||||||
PREP(canAccessMedicalEquipment);
|
PREP(canAccessMedicalEquipment);
|
||||||
PREP(canTreat);
|
PREP(canTreat);
|
||||||
PREP(canTreatCached);
|
PREP(canTreatCached);
|
||||||
|
PREP(canCarry);
|
||||||
PREP(determineIfFatal);
|
PREP(determineIfFatal);
|
||||||
PREP(getBloodLoss);
|
PREP(getBloodLoss);
|
||||||
PREP(getBloodPressure);
|
PREP(getBloodPressure);
|
||||||
PREP(getBloodVolumeChange);
|
PREP(getBloodVolumeChange);
|
||||||
PREP(getCardiacOutput);
|
PREP(getCardiacOutput);
|
||||||
PREP(getTypeOfDamage);
|
PREP(getTypeOfDamage);
|
||||||
|
PREP(getHeartRateChange);
|
||||||
PREP(getTriageStatus);
|
PREP(getTriageStatus);
|
||||||
PREP(getUnconsciousCondition);
|
PREP(getUnconsciousCondition);
|
||||||
PREP(handleDamage);
|
PREP(handleDamage);
|
||||||
@ -52,6 +56,7 @@ PREP(itemCheck);
|
|||||||
PREP(onMedicationUsage);
|
PREP(onMedicationUsage);
|
||||||
PREP(onWoundUpdateRequest);
|
PREP(onWoundUpdateRequest);
|
||||||
PREP(onPropagateWound);
|
PREP(onPropagateWound);
|
||||||
|
PREP(onCarryObjectDropped);
|
||||||
PREP(parseConfigForInjuries);
|
PREP(parseConfigForInjuries);
|
||||||
PREP(playInjuredSound);
|
PREP(playInjuredSound);
|
||||||
PREP(reactionToDamage);
|
PREP(reactionToDamage);
|
||||||
@ -89,9 +94,12 @@ PREP(moduleAssignMedicRoles);
|
|||||||
PREP(moduleAssignMedicalVehicle);
|
PREP(moduleAssignMedicalVehicle);
|
||||||
PREP(moduleAssignMedicalFacility);
|
PREP(moduleAssignMedicalFacility);
|
||||||
PREP(moduleTreatmentConfiguration);
|
PREP(moduleTreatmentConfiguration);
|
||||||
|
PREP(copyDeadBody);
|
||||||
PREP(requestWoundSync);
|
PREP(requestWoundSync);
|
||||||
|
|
||||||
GVAR(injuredUnitCollection) = [];
|
GVAR(injuredUnitCollection) = [];
|
||||||
|
GVAR(IVBags) = [];
|
||||||
|
|
||||||
call FUNC(parseConfigForInjuries);
|
call FUNC(parseConfigForInjuries);
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
87
addons/medical/functions/fnc_actionCarryUnit.sqf
Normal file
87
addons/medical/functions/fnc_actionCarryUnit.sqf
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
* Author: Glowbal
|
||||||
|
* makes the calling unit start carrying the specified unit
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: The caller <OBJECT>
|
||||||
|
* 1: The target <OBJECT>
|
||||||
|
* 2: Carry object. True is carry, false is dragging <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* NONE
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_caller", "_target", "_positionUnit", "_carry"];
|
||||||
|
_caller = _this select 0;
|
||||||
|
_target = _this select 1;
|
||||||
|
_carry = _this select 2;
|
||||||
|
|
||||||
|
if (!(_target isKindOf "CaManBase") || !(_caller isKindOf "CaManBase")) exitwith{ };
|
||||||
|
if (vehicle _caller != _caller || vehicle _target != _target) exitwith {};
|
||||||
|
if (!([_caller] call EFUNC(common,canInteract)) || {_caller == _target} || {(([_target] call EFUNC(common,isAwake)))}) exitwith {};
|
||||||
|
|
||||||
|
if (!alive _target) exitwith {
|
||||||
|
if (GVAR(allowDeadBodyMovement)) then {
|
||||||
|
[{
|
||||||
|
_this call FUNC(actionCarryUnit);
|
||||||
|
}, [_caller, ([_target,_caller] call FUNC(copyDeadBody)), _carry], 0.25, 0.25] call EFUNC(common,waitAndExecute);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if !([_caller,_target] call EFUNC(common,carryObj)) exitwith {};
|
||||||
|
|
||||||
|
if (primaryWeapon _caller == "") then {
|
||||||
|
_caller addWeapon "ACE_FakePrimaryWeapon";
|
||||||
|
};
|
||||||
|
if (currentWeapon _caller != (primaryWeapon _caller)) then {
|
||||||
|
_caller selectWeapon (primaryWeapon _caller);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (_carry) then {
|
||||||
|
_target attachTo [_caller, [0.1, -0.1, -1.25], "LeftShoulder"];
|
||||||
|
[_target, "AinjPfalMstpSnonWnonDf_carried_dead", 2, true] call EFUNC(common,doAnimation);
|
||||||
|
[_caller, "acinpercmstpsraswrfldnon", 1] call EFUNC(common,doAnimation);
|
||||||
|
} else {
|
||||||
|
_target attachTo [_caller, [0.125, 1.007, 0]];
|
||||||
|
_target setDir (getDir _target + 180) % 360;
|
||||||
|
_target setPos ((getPos _target) vectorAdd ((vectorDir _caller) vectorMultiply 1.5));
|
||||||
|
[_caller, "AcinPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation);
|
||||||
|
[_target, "AinjPpneMstpSnonWrflDb", 2, true] call EFUNC(common,doAnimation);
|
||||||
|
};
|
||||||
|
|
||||||
|
[
|
||||||
|
2,
|
||||||
|
[_caller, _target, _carry],
|
||||||
|
{
|
||||||
|
private ["_caller","_target", "_carry", "_args"];
|
||||||
|
_args = _this select 0;
|
||||||
|
_caller = _args select 0;
|
||||||
|
_target = _args select 1;
|
||||||
|
_carry = _args select 2;
|
||||||
|
|
||||||
|
_target setvariable [QGVAR(beingCarried), _caller, true];
|
||||||
|
_caller setvariable [QGVAR(carrying), _target, true];
|
||||||
|
_caller setvariable [QGVAR(isCarrying), if (_carry) then {1} else {0}, true];
|
||||||
|
|
||||||
|
// Removing any old drop scroll wheel actions
|
||||||
|
// TODO Do we still want scroll wheel actions?
|
||||||
|
if (!isnil QGVAR(DROP_ADDACTION)) then {
|
||||||
|
_caller removeAction GVAR(DROP_ADDACTION);
|
||||||
|
GVAR(DROP_ADDACTION) = nil;
|
||||||
|
};
|
||||||
|
// Adding the drop scroll wheel action.
|
||||||
|
GVAR(DROP_ADDACTION) = _caller addAction [format["Drop %1",[_target] call EFUNC(common,getName)], {[_this select 1, _this select 2] call FUNC(actionDropUnit);}];
|
||||||
|
|
||||||
|
[_target, true] call EFUNC(common,disableAI);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
[(_this select 0), objNull,[0, 0, 0]] call EFUNC(common,carryObj);
|
||||||
|
// TODO reset animations..
|
||||||
|
},
|
||||||
|
if (_carry) then {localize "STR_ACE_MEDICAL_ACTION_CARRY"} else {localize "STR_ACE_MEDICAL_ACTION_DRAG"},
|
||||||
|
{true}
|
||||||
|
] call EFUNC(common,progressBar);
|
@ -11,7 +11,9 @@
|
|||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_caller","_target"];
|
private ["_caller","_target"];
|
||||||
_caller = _this select 0;
|
_caller = _this select 0;
|
||||||
_target = _this select 1;
|
_target = _this select 1;
|
||||||
|
@ -11,7 +11,9 @@
|
|||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_caller","_target","_title","_content"];
|
private ["_caller","_target","_title","_content"];
|
||||||
_caller = _this select 0;
|
_caller = _this select 0;
|
||||||
_target = _this select 1;
|
_target = _this select 1;
|
||||||
|
23
addons/medical/functions/fnc_actionDropUnit.sqf
Normal file
23
addons/medical/functions/fnc_actionDropUnit.sqf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Author: Glowbal
|
||||||
|
* Drop a unit if the caller nit is currently dragging or carrying a unit
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: The caller <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* NONE
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private "_caller";
|
||||||
|
_caller = _this select 0;
|
||||||
|
|
||||||
|
if (!isnil QGVAR(DROP_ADDACTION)) then {
|
||||||
|
[_caller,objNull] call EFUNC(common,carryObj);
|
||||||
|
_caller removeAction GVAR(DROP_ADDACTION);
|
||||||
|
GVAR(DROP_ADDACTION) = nil;
|
||||||
|
};
|
@ -12,10 +12,8 @@
|
|||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
|
||||||
private ["_caller", "_target","_vehicle", "_loaded"];
|
private ["_caller", "_target","_vehicle", "_loaded"];
|
||||||
_caller = _this select 0;
|
_caller = _this select 0;
|
||||||
_target = _this select 1;
|
_target = _this select 1;
|
||||||
|
@ -27,7 +27,7 @@ if (([_target] call cse_fnc_isAwake)) exitwith {};
|
|||||||
if ([_caller, _target] call EFUNC(common,unloadPerson)) then {
|
if ([_caller, _target] call EFUNC(common,unloadPerson)) then {
|
||||||
if (_drag) then {
|
if (_drag) then {
|
||||||
if ((vehicle _caller) == _caller) then {
|
if ((vehicle _caller) == _caller) then {
|
||||||
[[_caller, _target], QUOTE(DFUNC(actionDragUnit)), _caller, false] call BIS_fnc_MP;
|
[[_caller, _target, true], QUOTE(DFUNC(actionDragUnit)), _caller, false] call EFUNC(common,execRemoteFnc); // TODO replace by event
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -39,6 +39,4 @@ _actions = [];
|
|||||||
};
|
};
|
||||||
} forEach crew _vehicle;
|
} forEach crew _vehicle;
|
||||||
|
|
||||||
systemChat str(count _actions);
|
|
||||||
|
|
||||||
_actions
|
_actions
|
||||||
|
29
addons/medical/functions/fnc_canCarry.sqf
Normal file
29
addons/medical/functions/fnc_canCarry.sqf
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Author: Glowbal
|
||||||
|
* Check if caller can carry or drag the target
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: The caller <OBJECT>
|
||||||
|
* 1: The target <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* NONE
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_caller", "_target", "_positionUnit", "_carry"];
|
||||||
|
_caller = _this select 0;
|
||||||
|
_target = _this select 1;
|
||||||
|
|
||||||
|
if (!(_target isKindOf "CaManBase") || !(_caller isKindOf "CaManBase")) exitwith{false};
|
||||||
|
|
||||||
|
if (vehicle _caller != _caller || vehicle _target != _target) exitwith {false};
|
||||||
|
|
||||||
|
if (!([_caller] call EFUNC(common,canInteract)) || {_caller == _target} || {(([_target] call EFUNC(common,isAwake)))}) exitwith {false};
|
||||||
|
|
||||||
|
if (!alive _target) exitwith {GVAR(allowDeadBodyMovement)};
|
||||||
|
|
||||||
|
((isNull ([_caller] call FUNC(getCarriedObj))) && {isNull ([_target] call FUNC(getCarriedObj))} && {isNull ([_caller] call FUNC(getCarriedBy))} && {isNull ([_target] call FUNC(getCarriedBy))})
|
@ -40,6 +40,7 @@ _locations = getArray (_config >> "treatmentLocations");
|
|||||||
|
|
||||||
_return = true;
|
_return = true;
|
||||||
if (getText (_config >> "condition") != "") then {
|
if (getText (_config >> "condition") != "") then {
|
||||||
|
_condition = getText (_config >> "condition");
|
||||||
if (isnil _condition) then {
|
if (isnil _condition) then {
|
||||||
_condition = compile _condition;
|
_condition = compile _condition;
|
||||||
} else {
|
} else {
|
||||||
|
83
addons/medical/functions/fnc_copyDeadBody.sqf
Normal file
83
addons/medical/functions/fnc_copyDeadBody.sqf
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* Author: Glowbal
|
||||||
|
* Makes a copy of a dead body. For handling dead bodies for actions such as load and carry.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: The oldbody <OBJECT>
|
||||||
|
* 1: The caller <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* OBJECT Returns the copy of the unit. If no copy could be made, returns the oldBody
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_oldBody","_newUnit","_class","_group","_position","_side","_allVariables"];
|
||||||
|
_oldBody = _this select 0;
|
||||||
|
_caller = _this select 1;
|
||||||
|
|
||||||
|
if (alive _oldBody) exitwith {_oldBody}; // we only want to do this for dead bodies
|
||||||
|
|
||||||
|
_name = _oldBody getvariable ["ACE_name", "unknown"];
|
||||||
|
_class = typeof _oldBody;
|
||||||
|
_side = side _caller;
|
||||||
|
_group = createGroup _side;
|
||||||
|
_position = getPos _oldBody;
|
||||||
|
|
||||||
|
_newUnit = _group createUnit [typeof _oldBody, _position, [], 0, "NONE"];
|
||||||
|
_newUnit setVariable ["ACE_name", _name, true];
|
||||||
|
|
||||||
|
_newUnit disableAI "TARGET";
|
||||||
|
_newUnit disableAI "AUTOTARGET";
|
||||||
|
_newUnit disableAI "MOVE";
|
||||||
|
_newUnit disableAI "ANIM";
|
||||||
|
_newUnit disableAI "FSM";
|
||||||
|
|
||||||
|
removeallweapons _newUnit;
|
||||||
|
removeallassigneditems _newUnit;
|
||||||
|
removeUniform _newUnit;
|
||||||
|
removeHeadgear _newUnit;
|
||||||
|
removeBackpack _newUnit;
|
||||||
|
removeVest _newUnit;
|
||||||
|
|
||||||
|
_newUnit addHeadgear (headgear _oldBody);
|
||||||
|
_newUnit addBackpack (backpack _oldBody);
|
||||||
|
clearItemCargoGlobal (backpackContainer _newUnit);
|
||||||
|
clearMagazineCargoGlobal (backpackContainer _newUnit);
|
||||||
|
clearWeaponCargoGlobal (backpackContainer _newUnit);
|
||||||
|
|
||||||
|
_newUnit addVest (vest _oldBody);
|
||||||
|
clearItemCargoGlobal (backpackContainer _newUnit);
|
||||||
|
clearMagazineCargoGlobal (backpackContainer _newUnit);
|
||||||
|
clearWeaponCargoGlobal (backpackContainer _newUnit);
|
||||||
|
|
||||||
|
_newUnit addUniform (uniform _oldBody);
|
||||||
|
clearItemCargoGlobal (backpackContainer _newUnit);
|
||||||
|
clearMagazineCargoGlobal (backpackContainer _newUnit);
|
||||||
|
clearWeaponCargoGlobal (backpackContainer _newUnit);
|
||||||
|
|
||||||
|
{_newUnit addMagazine _x} count (magazines _oldBody);
|
||||||
|
{_newUnit addWeapon _x} count (weapons _oldBody);
|
||||||
|
{_newUnit addItem _x} count (items _oldBody);
|
||||||
|
|
||||||
|
_newUnit selectWeapon (primaryWeapon _newUnit);
|
||||||
|
|
||||||
|
// We are attaching the old unit and hiding it, so we can keep the original unit until later.
|
||||||
|
_oldBody attachTo [_newUnit, [0,0,0]];
|
||||||
|
if (isMultiplayer) then {
|
||||||
|
hideObjectGlobal _oldBody;
|
||||||
|
} else {
|
||||||
|
hideObject _oldBody;
|
||||||
|
};
|
||||||
|
|
||||||
|
_newUnit setvariable [QGVAR(copyOfUnit), _oldBody, true];
|
||||||
|
_oldBody setvariable [QGVAR(hasCopy), _newUnit, true];
|
||||||
|
_newUnit setvariable ["ACE_isDead", true, true];
|
||||||
|
_newUnit setvariable ["ACE_isUnconscious", true, true];
|
||||||
|
_newUnit setvariable [QGVAR(disableInteraction), true, true];
|
||||||
|
_oldBody setvariable [QGVAR(disableInteraction), true, true];
|
||||||
|
|
||||||
|
_newUnit setDamage 0.89;
|
||||||
|
_newUnit;
|
@ -37,21 +37,13 @@ _bloodVolume = _unit getvariable [QGVAR(bloodVolume), 100];
|
|||||||
_bloodVolumeChange = -(_unit call FUNC(getBloodLoss));
|
_bloodVolumeChange = -(_unit call FUNC(getBloodLoss));
|
||||||
|
|
||||||
if (_bloodVolume < 100.0) then {
|
if (_bloodVolume < 100.0) then {
|
||||||
if ((_unit getvariable [QGVAR(salineIVVolume), 0]) > 0) then {
|
{
|
||||||
|
if ((_unit getvariable [_x, 0]) > 0) then {
|
||||||
_bloodVolumeChange = _bloodVolumeChange + BLOOD_CHANGE_PER_SECOND;
|
_bloodVolumeChange = _bloodVolumeChange + BLOOD_CHANGE_PER_SECOND;
|
||||||
_ivVolume = (_unit getvariable [QGVAR(salineIVVolume), 0]) + IV_CHANGE_PER_SECOND;
|
_ivVolume = (_unit getvariable [_x, 0]) + IV_CHANGE_PER_SECOND;
|
||||||
_unit setvariable [QGVAR(salineIVVolume),_ivVolume];
|
_unit setvariable [_x,_ivVolume];
|
||||||
};
|
|
||||||
if ((_unit getvariable [QGVAR(plasmaIVVolume), 0]) > 0) then {
|
|
||||||
_bloodVolumeChange = _bloodVolumeChange + BLOOD_CHANGE_PER_SECOND;
|
|
||||||
_ivVolume = (_unit getvariable [QGVAR(plasmaIVVolume), 0]) + IV_CHANGE_PER_SECOND;
|
|
||||||
_unit setvariable [QGVAR(plasmaIVVolume),_ivVolume];
|
|
||||||
};
|
|
||||||
if ((_unit getvariable [QGVAR(bloodIVVolume), 0]) > 0) then {
|
|
||||||
_bloodVolumeChange = _bloodVolumeChange + BLOOD_CHANGE_PER_SECOND;
|
|
||||||
_ivVolume = (_unit getvariable [QGVAR(bloodIVVolume), 0]) + IV_CHANGE_PER_SECOND;
|
|
||||||
_unit setvariable [QGVAR(bloodIVVolume),_ivVolume];
|
|
||||||
};
|
};
|
||||||
|
}foreach GVAR(IVBags);
|
||||||
};
|
};
|
||||||
|
|
||||||
_bloodVolumeChange;
|
_bloodVolumeChange;
|
||||||
|
@ -105,7 +105,7 @@ if (GVAR(level) >= 2) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Set the vitals
|
// Set the vitals
|
||||||
_heartRate = (_unit getvariable [QGVAR(heartRate), 0]) + ([_unit] call FUNC(getHeartRateChange)) * _interval;
|
_heartRate = (_unit getvariable [QGVAR(heartRate), 0]) + (([_unit] call FUNC(getHeartRateChange)) * _interval);
|
||||||
_unit setvariable [QGVAR(heartRate), _heartRate, _syncValues];
|
_unit setvariable [QGVAR(heartRate), _heartRate, _syncValues];
|
||||||
|
|
||||||
_bloodPressure = [_unit] call FUNC(getBloodPressure);
|
_bloodPressure = [_unit] call FUNC(getBloodPressure);
|
||||||
|
85
addons/medical/functions/fnc_onCarryObjectDropped.sqf
Normal file
85
addons/medical/functions/fnc_onCarryObjectDropped.sqf
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* Author: Glowbal
|
||||||
|
* Called on event CarryObjectDropped
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: The caller <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* NONE
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_unit","_params"];
|
||||||
|
_caller = _this select 0;
|
||||||
|
_target = _caller getvariable [QGVAR(carrying), objNull];
|
||||||
|
_carrying = _caller getvariable [QGVAR(isCarrying), -1];
|
||||||
|
|
||||||
|
if (_carrying >= 0) then {
|
||||||
|
if !(isNull (_target getvariable [QGVAR(copyOfUnit), objNull])) then {
|
||||||
|
_copy = _target;
|
||||||
|
_target = _copy getvariable [QGVAR(copyOfUnit), objNull];
|
||||||
|
if (isMultiplayer) then {
|
||||||
|
_target hideObjectGlobal false;
|
||||||
|
} else {
|
||||||
|
_target hideObject false;
|
||||||
|
};
|
||||||
|
detach _copy;
|
||||||
|
deleteVehicle _copy;
|
||||||
|
_target setvariable [QGVAR(disableInteraction), nil, true];
|
||||||
|
_target setvariable [QGVAR(hasCopy), nil, true];
|
||||||
|
};
|
||||||
|
|
||||||
|
_caller setvariable [QGVAR(isCarrying), -1, true];
|
||||||
|
if (primaryWeapon _caller == "ACE_FakePrimaryWeapon") then {
|
||||||
|
_caller removeWeapon "ACE_FakePrimaryWeapon";
|
||||||
|
};
|
||||||
|
|
||||||
|
[_target, false] call EFUNC(common,disableAI);
|
||||||
|
_caller setvariable[QGVAR(onStartMovingUnitParams), nil];
|
||||||
|
|
||||||
|
// handle the drag & carry administration
|
||||||
|
if (_carrying == 0) then {
|
||||||
|
_target setvariable [QGVAR(beingDragged), nil, true];
|
||||||
|
_caller setvariable [QGVAR(dragging), nil, true];
|
||||||
|
} else {
|
||||||
|
_target setvariable [QGVAR(beingCarried), nil, true];
|
||||||
|
_caller setvariable [QGVAR(carrying), nil, true];
|
||||||
|
};
|
||||||
|
|
||||||
|
// handle the drag & carry animiations
|
||||||
|
if ([_caller] call EFUNC(common,isAwake) && (vehicle _caller == _caller)) then {
|
||||||
|
[_caller,"amovpercmstpsraswrfldnon_amovpknlmstpslowwrfldnon", 1] call EFUNC(common,doAnimation);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (vehicle _target == _target) then {
|
||||||
|
if (_carrying == 0) then {
|
||||||
|
[_target,"AinjPpneMstpSnonWrflDb_release", 2, true] call EFUNC(common,doAnimation);
|
||||||
|
} else {
|
||||||
|
[_target,"AinjPfalMstpSnonWrflDnon_carried_Down", 2, true] call EFUNC(common,doAnimation);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
if ([_target] call EFUNC(common,isAwake)) then {
|
||||||
|
[_target,"", 2] call EFUNC(common,doAnimation); // TODO play animation for the current seat instead
|
||||||
|
} else {
|
||||||
|
// this might not work properly
|
||||||
|
[_target,([_target] call EFUNC(common,getDeathAnim)), 1] call EFUNC(common,doAnimation);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Ensure that the unit does not get dropped through the floor of a building
|
||||||
|
if (!surfaceIsWater getPos _caller) then {
|
||||||
|
[{
|
||||||
|
EXPLODE_3_PVT(_this,_caller,_target,_killOnDrop);
|
||||||
|
if (vehicle _target == _target && (vehicle _caller == _caller)) then {
|
||||||
|
// This will set the target body/unit on the correct position, so it doesn't fall through floors.
|
||||||
|
_positionUnit = getPosATL _target;
|
||||||
|
_positionUnit set [2, (getPosATL _caller) select 2];
|
||||||
|
_target setPosATL _positionUnit;
|
||||||
|
};
|
||||||
|
}, [_caller,_target], 0.5, 0.5] call EFUNC(common,waitAndExecute);
|
||||||
|
};
|
||||||
|
};
|
@ -73,11 +73,7 @@ if (alive _target) then {
|
|||||||
|
|
||||||
// Reduce the pain level
|
// Reduce the pain level
|
||||||
_pain = _target getvariable [QGVAR(pain), 0];
|
_pain = _target getvariable [QGVAR(pain), 0];
|
||||||
_pain = _pain * _painReduce;
|
_target setvariable [QGVAR(pain), (_pain - _painReduce) max 0];
|
||||||
if (_pain <= 0) then {
|
|
||||||
_pain = 0;
|
|
||||||
};
|
|
||||||
_target setvariable [QGVAR(pain), _pain];
|
|
||||||
|
|
||||||
_resistance = _unit getvariable [QGVAR(peripheralResistance), 100];
|
_resistance = _unit getvariable [QGVAR(peripheralResistance), 100];
|
||||||
_resistance = _resistance + _viscosityChange;
|
_resistance = _resistance + _viscosityChange;
|
||||||
|
@ -21,8 +21,8 @@ _ivItem = _this select 1;
|
|||||||
|
|
||||||
// Find the proper attributes for the used IV
|
// Find the proper attributes for the used IV
|
||||||
_config = (configFile >> "ACE_Medical_Advanced" >> "Treatment" >> "IV");
|
_config = (configFile >> "ACE_Medical_Advanced" >> "Treatment" >> "IV");
|
||||||
_volumeAdded = getNumber (_medicationConfig >> "volume");
|
_volumeAdded = getNumber (_config >> "volume");
|
||||||
_typeOf = getText (_medicationConfig >> "type");
|
_typeOf = getText (_config >> "type");
|
||||||
|
|
||||||
if (isClass (_config >> _className)) then {
|
if (isClass (_config >> _className)) then {
|
||||||
_config = (_config >> _className);
|
_config = (_config >> _className);
|
||||||
@ -33,6 +33,11 @@ if (isClass (_config >> _className)) then {
|
|||||||
_varName = format["ACE_Medical_IVVolume_%1",_typeOf];
|
_varName = format["ACE_Medical_IVVolume_%1",_typeOf];
|
||||||
_target setvariable [_varName, (_target getvariable [_varName, 0]) + _volumeAdded];
|
_target setvariable [_varName, (_target getvariable [_varName, 0]) + _volumeAdded];
|
||||||
|
|
||||||
|
if !(_varName in GVAR(IVBags)) then {
|
||||||
|
GVAR(IVBags) pushback _varName;
|
||||||
|
publicVariable GVAR(IVBags);
|
||||||
|
};
|
||||||
|
|
||||||
// TODO localization
|
// TODO localization
|
||||||
//[_target,"treatment",format["%1 has given %4 a %2(%3ml)",[_caller] call EFUNC(common,getName),_attributes select 2,_attributes select 1,_target]] call FUNC(addActivityToLog);
|
//[_target,"treatment",format["%1 has given %4 a %2(%3ml)",[_caller] call EFUNC(common,getName),_attributes select 2,_attributes select 1,_target]] call FUNC(addActivityToLog);
|
||||||
//[_target,_removeItem] call FUNC(addToTriageList);
|
//[_target,_removeItem] call FUNC(addToTriageList);
|
||||||
|
@ -720,10 +720,69 @@
|
|||||||
<Russian>%1 проводит вам интубацию</Russian>
|
<Russian>%1 проводит вам интубацию</Russian>
|
||||||
<Spanish>%1 te está intubando</Spanish>
|
<Spanish>%1 te está intubando</Spanish>
|
||||||
</Key>
|
</Key>
|
||||||
|
<Key ID="STR_ACE_MEDICAL_DRAG">
|
||||||
|
<English>Drag</English>
|
||||||
|
<German>Ziehen</German>
|
||||||
|
<Spanish>Arrastrar</Spanish>
|
||||||
|
<Polish>Ciągnij</Polish>
|
||||||
|
<Czech>Táhnout</Czech>
|
||||||
|
<Russian>Тащить</Russian>
|
||||||
|
<French>Tracter</French>
|
||||||
|
<Hungarian>Húzás</Hungarian>
|
||||||
|
<Portuguese>Arrastar</Portuguese>
|
||||||
|
<Italian>Trascina</Italian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_MEDICAL_CARRY">
|
||||||
|
<English>Carry</English>
|
||||||
|
<German>Tragen</German>
|
||||||
|
<Spanish>Cargar</Spanish>
|
||||||
|
<Polish>Nieś</Polish>
|
||||||
|
<Czech>Nést</Czech>
|
||||||
|
<Russian>Нести</Russian>
|
||||||
|
<French>Porter</French>
|
||||||
|
<Hungarian>Cipelés</Hungarian>
|
||||||
|
<Portuguese>Carregar</Portuguese>
|
||||||
|
<Italian>Trasporta</Italian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_MEDICAL_RELEASE">
|
||||||
|
<English>Release</English>
|
||||||
|
<German>Loslassen</German>
|
||||||
|
<Spanish>Soltar</Spanish>
|
||||||
|
<Polish>Połóż</Polish>
|
||||||
|
<Czech>Položit</Czech>
|
||||||
|
<Russian>Отпустить</Russian>
|
||||||
|
<French>Déposer</French>
|
||||||
|
<Hungarian>Elenged</Hungarian>
|
||||||
|
<Portuguese>Largar</Portuguese>
|
||||||
|
<Italian>Lascia</Italian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_MEDICAL_LOAD">
|
||||||
|
<English>Load Patient Into</English>
|
||||||
|
<German>Patient Einladen</German>
|
||||||
|
<Spanish>Cargar el paciente en</Spanish>
|
||||||
|
<Polish>Załaduj pacjenta</Polish>
|
||||||
|
<Czech>Naložit pacianta do</Czech>
|
||||||
|
<Russian>Погрузить пациента в</Russian>
|
||||||
|
<French>Embarquer le Patient</French>
|
||||||
|
<Hungarian>Sebesült berakása</Hungarian>
|
||||||
|
<Portuguese>Carregar Paciente Em</Portuguese>
|
||||||
|
<Italian>Carica paziente nel</Italian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_MEDICAL_UNLOAD">
|
||||||
|
<English>Unload Patient</English>
|
||||||
|
<German>Patient Ausladen</German>
|
||||||
|
<Spanish>Descargar el paciente</Spanish>
|
||||||
|
<Polish>Wyładuj pacjenta</Polish>
|
||||||
|
<Czech>Vyložit pacienta</Czech>
|
||||||
|
<Russian>Выгрузить пациента</Russian>
|
||||||
|
<French>Débarquer le Patient</French>
|
||||||
|
<Hungarian>Sebesült kihúzása</Hungarian>
|
||||||
|
<Portuguese>Descarregar Paciente</Portuguese>
|
||||||
|
<Italian>Scarica il paziente</Italian>
|
||||||
|
</Key>
|
||||||
<Key ID="STR_ACE_Medical_UnloadPatient">
|
<Key ID="STR_ACE_Medical_UnloadPatient">
|
||||||
<English>Unload patient >></English>
|
<English>Unload patient >></English>
|
||||||
</Key>
|
</Key>
|
||||||
</Container>
|
</Container>
|
||||||
|
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
Reference in New Issue
Block a user