Merge pull request #518 from acemod/basic-medical-tweaks

Basic medical tweaks
This commit is contained in:
Felix Wiegand
2015-04-14 23:49:00 +02:00
12 changed files with 187 additions and 118 deletions

View File

@ -7,7 +7,7 @@ class ACE_Head {
icon = PATHTOF(UI\icons\medical_cross.paa); icon = PATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE; distance = MEDICAL_ACTION_DISTANCE;
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitHead"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment)); statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment));
@ -78,7 +78,7 @@ class ACE_Torso {
icon = PATHTOF(UI\icons\medical_cross.paa); icon = PATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE; distance = MEDICAL_ACTION_DISTANCE;
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitBody"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment)); statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment));
@ -178,7 +178,7 @@ class ACE_ArmLeft {
distance = MEDICAL_ACTION_DISTANCE; distance = MEDICAL_ACTION_DISTANCE;
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitLeftArm"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment));
@ -334,7 +334,7 @@ class ACE_ArmRight {
distance = MEDICAL_ACTION_DISTANCE; distance = MEDICAL_ACTION_DISTANCE;
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitRightArm"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment));
@ -487,7 +487,7 @@ class ACE_LegLeft {
distance = MEDICAL_ACTION_DISTANCE; distance = MEDICAL_ACTION_DISTANCE;
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitLeftLeg"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment));
@ -628,7 +628,7 @@ class ACE_LegRight {
distance = MEDICAL_ACTION_DISTANCE; distance = MEDICAL_ACTION_DISTANCE;
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitRightLeg"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment));

View File

@ -14,7 +14,7 @@ class Medical {
runOnHover = 1; runOnHover = 1;
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitHead"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"}; exceptions[] = {"isNotInside"};
@ -84,7 +84,7 @@ class Medical {
icon = PATHTOF(UI\icons\medical_cross.paa); icon = PATHTOF(UI\icons\medical_cross.paa);
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitBody"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"}; exceptions[] = {"isNotInside"};
@ -149,7 +149,7 @@ class Medical {
icon = PATHTOF(UI\icons\medical_cross.paa); icon = PATHTOF(UI\icons\medical_cross.paa);
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitLeftArm"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"}; exceptions[] = {"isNotInside"};
@ -249,7 +249,7 @@ class Medical {
icon = PATHTOF(UI\icons\medical_cross.paa); icon = PATHTOF(UI\icons\medical_cross.paa);
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitRightArm"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"}; exceptions[] = {"isNotInside"};
@ -345,7 +345,7 @@ class Medical {
icon = PATHTOF(UI\icons\medical_cross.paa); icon = PATHTOF(UI\icons\medical_cross.paa);
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitLeftLeg"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"}; exceptions[] = {"isNotInside"};
@ -430,7 +430,7 @@ class Medical {
icon = PATHTOF(UI\icons\medical_cross.paa); icon = PATHTOF(UI\icons\medical_cross.paa);
class Bandage { class Bandage {
displayName = "$STR_ACE_Medical_Bandage_HitRightLeg"; displayName = "$STR_ACE_Medical_Bandage";
distance = 2.0; distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached)); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"}; exceptions[] = {"isNotInside"};
@ -506,4 +506,4 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment));
}; };
}; };
}; };

View File

@ -55,15 +55,6 @@ class ACE_Medical_Actions {
animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; animationCaller = "AinvPknlMstpSnonWnonDnon_medic1";
litter[] = {}; litter[] = {};
}; };
class Tourniquet: Bandage {
displayName = "$STR_ACE_Medical_Apply_Tourniquet";
displayNameProgress = "$STR_ACE_Medical_Applying_Tourniquet";
items[] = {"ACE_tourniquet"};
treatmentTime = 6;
callbackSuccess = QUOTE(DFUNC(treatmentTourniquet));
condition = QUOTE(!([ARR_2(_this select 1, _this select 2)] call FUNC(hasTourniquetAppliedTo)));
litter[] = {};
};
class BodyBag: Bandage { class BodyBag: Bandage {
displayName = "$STR_ACE_MEDICAL_PlaceInBodyBag"; displayName = "$STR_ACE_MEDICAL_PlaceInBodyBag";
displayNameProgress = "$STR_ACE_MEDICAL_PlacingInBodyBag"; displayNameProgress = "$STR_ACE_MEDICAL_PlacingInBodyBag";
@ -80,6 +71,27 @@ class ACE_Medical_Actions {
itemConsumed = 1; itemConsumed = 1;
litter[] = {}; litter[] = {};
}; };
class CheckPulse: Bandage {
displayName = "";
displayNameProgress = "";
treatmentLocations[] = {"All"};
requiredMedic = 0;
treatmentTime = 2;
items[] = {};
callbackSuccess = QUOTE(DFUNC(actionCheckPulse));
callbackFailure = "";
callbackProgress = "";
animationPatient = "";
animationCaller = ""; // TODO
itemConsumed = 0;
litter[] = {};
};
class CheckBloodPressure: CheckPulse {
callbackSuccess = QUOTE(DFUNC(actionCheckBloodPressure));
};
class CheckResponse: CheckPulse {
callbackSuccess = QUOTE(DFUNC(actionCheckResponse));
};
}; };
class Advanced { class Advanced {

View File

@ -117,4 +117,11 @@ class ACE_Settings {
typeName = "BOOL"; typeName = "BOOL";
value = 1; value = 1;
}; };
class GVAR(painEffectType) {
displayName = "$STR_ACE_Medical_painEffectType";
typeName = "SCALAR";
value = 0;
values[] = {"$STR_ACE_Medical_painEffect_Flash", "$STR_ACE_Medical_painEffect_Chroma"};
isClientSettable = 1;
};
}; };

View File

@ -47,11 +47,3 @@ class Extended_Local_EventHandlers {
}; };
}; };
}; };
class Extended_Take_EventHandlers {
class CAManBase {
class ADDON {
take = QUOTE(call FUNC(itemCheck));
};
};
};

View File

@ -645,7 +645,7 @@ class CfgVehicles {
EGVAR(dragging,dragPosition[]) = {0,1.2,0}; EGVAR(dragging,dragPosition[]) = {0,1.2,0};
EGVAR(dragging,dragDirection) = 0; EGVAR(dragging,dragDirection) = 0;
class ACE_Actions { class ACE_Actions {
class ACE_MainActions { class ACE_MainActions {
displayName = "$STR_ACE_Interaction_MainAction"; displayName = "$STR_ACE_Interaction_MainAction";
distance = 5; distance = 5;
condition = QUOTE(true); condition = QUOTE(true);
@ -696,10 +696,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_BANDAGE_BASIC_DISPLAY; displayName = $STR_ACE_MEDICAL_BANDAGE_BASIC_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_fieldDressing {
class ACE_fieldDressing
{
name = "ACE_fieldDressing"; name = "ACE_fieldDressing";
count = 1; count = 1;
}; };
@ -711,10 +709,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_PACKING_BANDAGE_DISPLAY; displayName = $STR_ACE_MEDICAL_PACKING_BANDAGE_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_packingBandage {
class ACE_packingBandage
{
name = "ACE_packingBandage"; name = "ACE_packingBandage";
count = 1; count = 1;
}; };
@ -726,10 +722,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_BANDAGE_ELASTIC_DISPLAY; displayName = $STR_ACE_MEDICAL_BANDAGE_ELASTIC_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_elasticBandage {
class ACE_elasticBandage
{
name = "ACE_elasticBandage"; name = "ACE_elasticBandage";
count = 1; count = 1;
}; };
@ -741,10 +735,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_TOURNIQUET_DISPLAY; displayName = $STR_ACE_MEDICAL_TOURNIQUET_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_tourniquet {
class ACE_tourniquet
{
name = "ACE_tourniquet"; name = "ACE_tourniquet";
count = 1; count = 1;
}; };
@ -756,10 +748,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_MORPHINE_DISPLAY; displayName = $STR_ACE_MEDICAL_MORPHINE_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_morphine {
class ACE_morphine
{
name = "ACE_morphine"; name = "ACE_morphine";
count = 1; count = 1;
}; };
@ -771,10 +761,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_ATROPINE_DISPLAY; displayName = $STR_ACE_MEDICAL_ATROPINE_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_atropine {
class ACE_atropine
{
name = "ACE_atropine"; name = "ACE_atropine";
count = 1; count = 1;
}; };
@ -786,10 +774,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_EPINEPHRINE_DISPLAY; displayName = $STR_ACE_MEDICAL_EPINEPHRINE_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_epinephrine {
class ACE_epinephrine
{
name = "ACE_epinephrine"; name = "ACE_epinephrine";
count = 1; count = 1;
}; };
@ -801,10 +787,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_PLASMA_IV; displayName = $STR_ACE_MEDICAL_PLASMA_IV;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_plasmaIV {
class ACE_plasmaIV
{
name = "ACE_plasmaIV"; name = "ACE_plasmaIV";
count = 1; count = 1;
}; };
@ -817,10 +801,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_BLOOD_IV; displayName = $STR_ACE_MEDICAL_BLOOD_IV;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_bloodIV {
class ACE_bloodIV
{
name = "ACE_bloodIV"; name = "ACE_bloodIV";
count = 1; count = 1;
}; };
@ -832,10 +814,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_SALINE_IV; displayName = $STR_ACE_MEDICAL_SALINE_IV;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_salineIV {
class ACE_salineIV
{
name = "ACE_salineIV"; name = "ACE_salineIV";
count = 1; count = 1;
}; };
@ -847,10 +827,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_QUIKCLOT_DISPLAY; displayName = $STR_ACE_MEDICAL_QUIKCLOT_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_quikClot {
class ACE_quikClot
{
name = "ACE_quikclot"; name = "ACE_quikclot";
count = 1; count = 1;
}; };
@ -862,10 +840,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_AID_KIT_DISPLAY; displayName = $STR_ACE_MEDICAL_AID_KIT_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_personalAidKit {
class ACE_personalAidKit
{
name = "ACE_personalAidKit"; name = "ACE_personalAidKit";
count = 1; count = 1;
}; };
@ -877,10 +853,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_SURGICALKIT_DISPLAY; displayName = $STR_ACE_MEDICAL_SURGICALKIT_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_surgicalKit {
class ACE_surgicalKit
{
name = "ACE_surgicalKit"; name = "ACE_surgicalKit";
count = 1; count = 1;
}; };
@ -892,10 +866,8 @@ class CfgVehicles {
displayName = $STR_ACE_MEDICAL_BODYBAG_DISPLAY; displayName = $STR_ACE_MEDICAL_BODYBAG_DISPLAY;
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems class TransportItems {
{ class ACE_bodyBag {
class ACE_bodyBag
{
name = "ACE_bodyBag"; name = "ACE_bodyBag";
count = 1; count = 1;
}; };
@ -906,9 +878,42 @@ class CfgVehicles {
class ACE_medicalSupplyCrate: NATO_Box_Base { class ACE_medicalSupplyCrate: NATO_Box_Base {
scope = 2; scope = 2;
accuracy = 1000; accuracy = 1000;
displayName = "[ACE] Medical Supply Crate"; displayName = "[ACE] Medical Supply Crate (Basic)";
model = PATHTOF(data\ace_medcrate.p3d); model = PATHTOF(data\ace_medcrate.p3d);
author = "$STR_ACE_Common_ACETeam"; author = "$STR_ACE_Common_ACETeam";
class TransportItems {
class ACE_fieldDressing {
name = "ACE_fieldDressing";
count = 50;
};
class ACE_morphine {
name = "ACE_morphine";
count = 25;
};
class ACE_epinephrine {
name = "ACE_epinephrine";
count = 25;
};
class ACE_bloodIV {
name = "ACE_bloodIV";
count = 15;
};
class ACE_bloodIV_500 {
name = "ACE_bloodIV_500";
count = 15;
};
class ACE_bloodIV_250 {
name = "ACE_bloodIV_250";
count = 15;
};
class ACE_bodyBag {
name = "ACE_bodyBag";
count = 10;
};
};
};
class ACE_medicalSupplyCrate_advanced: ACE_medicalSupplyCrate {
displayName = "[ACE] Medical Supply Crate (Advanced)";
class TransportItems { class TransportItems {
class ACE_fieldDressing { class ACE_fieldDressing {
name = "ACE_fieldDressing"; name = "ACE_fieldDressing";

View File

@ -19,7 +19,6 @@ class CfgWeapons {
}; };
}; };
// @todo localize
class ACE_ItemCore; class ACE_ItemCore;
class ACE_fieldDressing: ACE_ItemCore { class ACE_fieldDressing: ACE_ItemCore {
scope = 2; scope = 2;

View File

@ -153,11 +153,6 @@ GVAR(effectTimeBlood) = time;
GVAR(lastHeartBeat) = time; GVAR(lastHeartBeat) = time;
GVAR(lastHeartBeatSound) = time; GVAR(lastHeartBeatSound) = time;
// @todo, remove once parameters are set up
if (isNil QGVAR(level)) then {
GVAR(level) = 0;
};
// HEARTRATE BASED EFFECTS // HEARTRATE BASED EFFECTS
[{ [{
_heartRate = ACE_player getVariable [QGVAR(heartRate), 70]; _heartRate = ACE_player getVariable [QGVAR(heartRate), 70];
@ -172,8 +167,7 @@ if (isNil QGVAR(level)) then {
// Pain effect // Pain effect
_strength = ACE_player getVariable [QGVAR(pain), 0]; _strength = ACE_player getVariable [QGVAR(pain), 0];
// _strength = _strength * (ACE_player getVariable [QGVAR(coefPain), GVAR(coefPain)]); @todo // _strength = _strength * (ACE_player getVariable [QGVAR(coefPain), GVAR(coefPain)]); @todo
GVAR(alternativePainEffect) = false; // @todo if (GVAR(painEffectType) == 1) then {
if (GVAR(alternativePainEffect)) then {
GVAR(effectPainCC) ppEffectEnable false; GVAR(effectPainCC) ppEffectEnable false;
if ((ACE_player getVariable [QGVAR(pain), 0]) > 0 && {alive ACE_player}) then { if ((ACE_player getVariable [QGVAR(pain), 0]) > 0 && {alive ACE_player}) then {
_strength = _strength * 0.15; _strength = _strength * 0.15;
@ -198,7 +192,7 @@ if (isNil QGVAR(level)) then {
} else { } else {
GVAR(effectPainCA) ppEffectEnable false; GVAR(effectPainCA) ppEffectEnable false;
if ((ACE_player getVariable [QGVAR(pain), 0]) > 0 && {alive ACE_player}) then { if ((ACE_player getVariable [QGVAR(pain), 0]) > 0 && {alive ACE_player}) then {
_strength = _strength * 0.6; _strength = _strength * 0.9;
GVAR(effectPainCC) ppEffectEnable true; GVAR(effectPainCC) ppEffectEnable true;
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - _strength,1 - _strength,0,0,0,0.2,2]]; GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - _strength,1 - _strength,0,0,0,0.2,2]];
GVAR(effectPainCC) ppEffectCommit 0.01; GVAR(effectPainCC) ppEffectCommit 0.01;
@ -266,3 +260,8 @@ if (USE_WOUND_EVENT_SYNC) then {
// Prevent all types of interaction while unconscious // Prevent all types of interaction while unconscious
// @todo: probably remove this when CBA keybind hold key works properly // @todo: probably remove this when CBA keybind hold key works properly
["isNotUnconscious", {!((_this select 0) getVariable ["ACE_isUnconscious", false])}] call EFUNC(common,addCanInteractWithCondition); ["isNotUnconscious", {!((_this select 0) getVariable ["ACE_isUnconscious", false])}] call EFUNC(common,addCanInteractWithCondition);
// Item Event Handler
["playerInventoryChanged", {
[ACE_player] call FUNC(itemCheck);
}] call EFUNC(common,addEventHandler);

View File

@ -47,8 +47,10 @@ if (_show) then {
_allInjuryTexts = []; _allInjuryTexts = [];
_genericMessages = []; _genericMessages = [];
_partText = ["STR_ACE_Interaction_Head", "STR_ACE_Interaction_Torso", "STR_ACE_Interaction_ArmLeft" ,"STR_ACE_Interaction_ArmRight" ,"STR_ACE_Interaction_LegLeft", "STR_ACE_Interaction_LegRight"] select _selectionN; if (GVAR(level) >= 2) then {
_genericMessages pushback [localize _partText, [1, 1, 1, 1]]; _partText = ["STR_ACE_Interaction_Head", "STR_ACE_Interaction_Torso", "STR_ACE_Interaction_ArmLeft" ,"STR_ACE_Interaction_ArmRight" ,"STR_ACE_Interaction_LegLeft", "STR_ACE_Interaction_LegRight"] select _selectionN;
_genericMessages pushback [localize _partText, [1, 1, 1, 1]];
};
if (_target getvariable[QGVAR(isBleeding), false]) then { if (_target getvariable[QGVAR(isBleeding), false]) then {
_genericMessages pushback [localize "STR_ACE_MEDICAL_STATUS_BLEEDING", [1, 0.1, 0.1, 1]]; _genericMessages pushback [localize "STR_ACE_MEDICAL_STATUS_BLEEDING", [1, 0.1, 0.1, 1]];
@ -126,12 +128,22 @@ if (_show) then {
{ {
_selectionBloodLoss set [_forEachIndex, _target getHitPointDamage _x]; _selectionBloodLoss set [_forEachIndex, _target getHitPointDamage _x];
if (_target getHitPointDamage _x > 0.1 && {_forEachIndex == _selectionN}) then { if (_target getHitPointDamage _x > 0 && {_forEachIndex == _selectionN}) then {
// @todo localize _pointDamage = _target getHitPointDamage _x;
_allInjuryTexts pushBack [format ["%1 %2", _severity = switch (true) do {
["Lightly wounded", "Heavily wounded"] select (_target getHitPointDamage _x > 0.5), case (_pointDamage > 0.5): {localize "STR_ACE_Medical_HeavilyWounded"};
["head", "torso", "left arm", "right arm", "left leg", "right leg"] select _forEachIndex case (_pointDamage > 0.1): {localize "STR_ACE_Medical_LightlyWounded"};
], [1,1,1,1]]; default {localize "STR_ACE_Medical_VeryLightlyWounded"};
};
_part = localize ([
"STR_ACE_Medical_Head",
"STR_ACE_Medical_Torso",
"STR_ACE_Medical_LeftArm",
"STR_ACE_Medical_RightArm",
"STR_ACE_Medical_LeftLeg",
"STR_ACE_Medical_RightLeg"
] select _forEachIndex);
_allInjuryTexts pushBack [format ["%1 %2", _severity, toLower _part], [1,1,1,1]];
}; };
} forEach ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; } forEach ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"];
}; };

View File

@ -13,7 +13,7 @@
#include "script_component.hpp" #include "script_component.hpp"
#define BLOODLOSSRATE_BASIC 0.4 #define BLOODLOSSRATE_BASIC 0.2
private ["_totalBloodLoss","_tourniquets","_openWounds", "_value", "_cardiacOutput", "_internalWounds"]; private ["_totalBloodLoss","_tourniquets","_openWounds", "_value", "_cardiacOutput", "_internalWounds"];
// TODO Only use this calculation if medium or higher, otherwise use vanilla calculations (for basic medical). // TODO Only use this calculation if medium or higher, otherwise use vanilla calculations (for basic medical).

View File

@ -28,9 +28,8 @@ if (_syncValues) then {
}; };
_bloodVolume = (_unit getvariable [QGVAR(bloodVolume), 0]) + ([_unit] call FUNC(getBloodVolumeChange)); _bloodVolume = (_unit getvariable [QGVAR(bloodVolume), 0]) + ([_unit] call FUNC(getBloodVolumeChange));
if (_bloodVolume <= 0) then { _bloodVolume = _bloodVolume max 0;
_bloodVolume = 0;
};
_unit setvariable [QGVAR(bloodVolume), _bloodVolume, _syncValues]; _unit setvariable [QGVAR(bloodVolume), _bloodVolume, _syncValues];
// Set variables for synchronizing information across the net // Set variables for synchronizing information across the net
@ -78,15 +77,11 @@ if (GVAR(level) == 1) then {
// bleeding // bleeding
_blood = _unit getVariable [QGVAR(bloodVolume), 100]; _blood = _unit getVariable [QGVAR(bloodVolume), 100];
_blood = (_blood - 0.4 * (damage _unit) * _interval) max 0; if (_blood <= 35 and !(_unit getVariable ["ACE_isUnconscious", false])) then {
if (_blood != (_unit getVariable [QGVAR(bloodVolume), 100])) then { [_unit, true] call FUNC(setUnconscious);
_unit setVariable [QGVAR(bloodVolume), _blood, _syncValues]; };
if (_blood <= 35 and !(_unit getVariable ["ACE_isUnconscious", false])) then { if (_blood == 0) then {
[_unit, true] call FUNC(setUnconscious); [_unit] call FUNC(setDead);
};
if (_blood == 0) then {
[_unit] call FUNC(setDead);
};
}; };
}; };

View File

@ -1284,5 +1284,53 @@
<Polish>%1 założył stazę</Polish> <Polish>%1 założył stazę</Polish>
<French>%1 a appliqué un garrot</French> <French>%1 a appliqué un garrot</French>
</Key> </Key>
<Key ID="STR_ACE_Medical_HeavilyWounded">
<English>Heavily wounded</English>
<German>Schwer verwundet:</German>
</Key>
<Key ID="STR_ACE_Medical_LightlyWounded">
<English>Lightly wounded</English>
<German>Leicht verwundet:</German>
</Key>
<Key ID="STR_ACE_Medical_VeryLightlyWounded">
<English>Very lightly wounded</English>
<German>Sehr leicht verwundet:</German>
</Key>
<Key ID="STR_ACE_Medical_Head">
<English>Head</English>
<German>Kopf</German>
</Key>
<Key ID="STR_ACE_Medical_Torso">
<English>Torso</English>
<German>Torso</German>
</Key>
<Key ID="STR_ACE_Medical_LeftArm">
<English>Left Arm</English>
<German>Linker Arm</German>
</Key>
<Key ID="STR_ACE_Medical_RightArm">
<English>Right Arm</English>
<German>Rechter Arm</German>
</Key>
<Key ID="STR_ACE_Medical_LeftLeg">
<English>Left Leg</English>
<German>Linkes Bein</German>
</Key>
<Key ID="STR_ACE_Medical_RightLeg">
<English>Right Leg</English>
<German>Rechtes Bein</German>
</Key>
<Key ID="STR_ACE_Medical_painEffectType">
<English>Pain Effect Type</English>
<German>Schmerzeffekt-Typ</German>
</Key>
<Key ID="STR_ACE_Medical_painEffect_Flash">
<English>Colour Flashing</English>
<German>Farbblinken</German>
</Key>
<Key ID="STR_ACE_Medical_painEffect_Chroma">
<English>Chromatic Aberration</English>
<German>Chromatische Aberration</German>
</Key>
</Package> </Package>
</Project> </Project>