diff --git a/addons/medical/ACE_Medical_Actions.hpp b/addons/medical/ACE_Medical_Actions.hpp index 48cf6c87dc6..59342033333 100644 --- a/addons/medical/ACE_Medical_Actions.hpp +++ b/addons/medical/ACE_Medical_Actions.hpp @@ -250,6 +250,13 @@ class ACE_ArmLeft { EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; + class Adenosine: Morphine { + displayName = CSTRING(Inject_Adenosine); + condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(canTreatCached)); + statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(treatment)); + EXCEPTIONS + icon = PATHTOF(UI\icons\autoInjector.paa); + }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); @@ -404,6 +411,14 @@ class ACE_ArmRight { EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; + + class Adenosine: Morphine { + displayName = CSTRING(Inject_Adenosine); + condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(canTreatCached)); + statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(treatment)); + EXCEPTIONS + icon = PATHTOF(UI\icons\autoInjector.paa); + }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached)); @@ -558,6 +573,13 @@ class ACE_LegLeft { EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; + class Adenosine: Morphine { + displayName = CSTRING(Inject_Atropine); + condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(canTreatCached)); + statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(treatment)); + EXCEPTIONS + icon = PATHTOF(UI\icons\autoInjector.paa); + }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); @@ -699,6 +721,13 @@ class ACE_LegRight { EXCEPTIONS icon = PATHTOF(UI\icons\autoInjector.paa); }; + class Adenosine: Morphine { + displayName = CSTRING(Inject_Atropine); + condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(canTreatCached)); + statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(treatment)); + EXCEPTIONS + icon = PATHTOF(UI\icons\autoInjector.paa); + }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached)); diff --git a/addons/medical/ACE_Medical_SelfActions.hpp b/addons/medical/ACE_Medical_SelfActions.hpp index 4217e43e91a..54a8ba60f52 100644 --- a/addons/medical/ACE_Medical_SelfActions.hpp +++ b/addons/medical/ACE_Medical_SelfActions.hpp @@ -204,6 +204,13 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; + class Adenosine: Morphine { + displayName = CSTRING(Inject_Atropine); + condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(canTreatCached)); + exceptions[] = {"isNotInside"}; + statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(treatment)); + icon = PATHTOF(UI\icons\autoInjector.paa); + }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); @@ -302,6 +309,13 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; + class Adenosine: Morphine { + displayName = CSTRING(Inject_Atropine); + condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(canTreatCached)); + exceptions[] = {"isNotInside"}; + statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(treatment)); + icon = PATHTOF(UI\icons\autoInjector.paa); + }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached)); @@ -399,6 +413,13 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; + class Adenosine: Morphine { + displayName = CSTRING(Inject_Atropine); + condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(canTreatCached)); + exceptions[] = {"isNotInside"}; + statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(treatment)); + icon = PATHTOF(UI\icons\autoInjector.paa); + }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); @@ -484,6 +505,13 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); }; + class Adenosine: Morphine { + displayName = CSTRING(Inject_Atropine); + condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(canTreatCached)); + exceptions[] = {"isNotInside"}; + statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(treatment)); + icon = PATHTOF(UI\icons\autoInjector.paa); + }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached)); diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index ed6a0a82575..09401bdfe2e 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -50,12 +50,13 @@ class ACE_Medical_Actions { allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; allowSelfTreatment = 1; category = "medication"; - requiredMedic = 1; + requiredMedic = QGVAR(medicSetting_basicEpi); treatmentTime = 3; items[] = {"ACE_epinephrine"}; callbackSuccess = QUOTE(DFUNC(treatmentBasic_epipen)); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} }; + treatmentLocations[] = {QGVAR(useLocation_basicEpi)}; }; class BloodIV: Bandage { displayName = CSTRING(Transfuse_Blood); @@ -214,6 +215,12 @@ class ACE_Medical_Actions { animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; litter[] = { {"All", "", {"ACE_MedicalLitter_morphine"}} }; }; + class Adenosine: Morphine { + displayName = CSTRING(Inject_Adenosine); + displayNameProgress = CSTRING(Injecting_Adenosine); + items[] = {"ACE_adenosine"}; + litter[] = { {"All", "", {"ACE_MedicalLitter_adenosine"}} }; + }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); displayNameProgress = CSTRING(Injecting_Atropine); @@ -692,23 +699,56 @@ class ACE_Medical_Advanced { reopeningMinDelay = 120; reopeningMaxDelay = 200; class Abrasion { - effectiveness = 1; + effectiveness = 3; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; - class AbrasionMinor: Abrasion {}; - class AbrasionMedium: Abrasion {}; - class AbrasionLarge: Abrasion {}; + class AbrasionMinor: Abrasion { + effectiveness = 5; + reopeningChance = 0; + reopeningMinDelay = 1000; + reopeningMaxDelay = 5000; + }; + class AbrasionMedium: Abrasion { + effectiveness = 3; + reopeningChance = 0.7; + reopeningMinDelay = 750; + reopeningMaxDelay = 3000; + }; + class AbrasionLarge: Abrasion { + effectiveness = 2; + reopeningChance = 0.9; + reopeningMinDelay = 300; + reopeningMaxDelay = 1000; + }; + + class Avulsions: Abrasion { + effectiveness = 0.2; + reopeningChance = 0.8; + reopeningMinDelay = 5; + reopeningMaxDelay = 20; + }; + class AvulsionsMinor: Avulsions { + effectiveness = 0.4; + reopeningChance = 0.75; + reopeningMinDelay = 5; + reopeningMaxDelay = 20; + }; + class AvulsionsMedium: Avulsions { effectiveness = 0.3; - reopeningChance = 0.5; - reopeningMinDelay = 120; - reopeningMaxDelay = 200; + reopeningChance = 0.85; + reopeningMinDelay = 5; + reopeningMaxDelay = 10; }; - class AvulsionsMinor: Avulsions {}; - class AvulsionsMedium: Avulsions {}; - class AvulsionsLarge: Avulsions {}; + class AvulsionsLarge: Avulsions { + effectiveness = 0.1; + reopeningChance = 0.9; + reopeningMinDelay = 2; + reopeningMaxDelay = 10; + }; + class Contusion: Abrasion { effectiveness = 1; reopeningChance = 0; @@ -718,73 +758,183 @@ class ACE_Medical_Advanced { class ContusionMinor: Contusion {}; class ContusionMedium: Contusion {}; class ContusionLarge: Contusion {}; + class CrushWound: Abrasion { - effectiveness = 0.6; - reopeningChance = 0.2; + effectiveness = 1; + reopeningChance = 0.4; reopeningMinDelay = 120; reopeningMaxDelay = 200; }; - class CrushWoundMinor: CrushWound {}; - class CrushWoundMedium: CrushWound {}; - class CrushWoundLarge: CrushWound {}; - class Cut: Abrasion { + class CrushWoundMinor: CrushWound { + effectiveness = 1; + reopeningChance = 0.4; + reopeningMinDelay = 120; + reopeningMaxDelay = 200; + }; + class CrushWoundMedium: CrushWound { effectiveness = 0.4; - reopeningChance = 0.5; + reopeningChance = 0.3; + reopeningMinDelay = 100; + reopeningMaxDelay = 150; + }; + class CrushWoundLarge: CrushWound { + effectiveness = 0.2; + reopeningChance = 0.2; + reopeningMinDelay = 50; + reopeningMaxDelay = 70; + }; + + class Cut: Abrasion { + effectiveness = 3; + reopeningChance = 0.3; + reopeningMinDelay = 2000; + reopeningMaxDelay = 5000; + }; + class CutMinor: Cut { + effectiveness = 6; + reopeningChance = 0.1; + reopeningMinDelay = 5000; + reopeningMaxDelay = 8000; + }; + class CutMedium: Cut { + effectiveness = 3; + reopeningChance = 0.3; + reopeningMinDelay = 1200; + reopeningMaxDelay = 2000; + }; + class CutLarge: Cut { + effectiveness = 1; + reopeningChance = 0.6; reopeningMinDelay = 220; reopeningMaxDelay = 260; }; - class CutMinor: Cut {}; - class CutMedium: Cut {}; - class CutLarge: Cut {}; class Laceration: Abrasion { - effectiveness = 0.7; + effectiveness = 0.8; + reopeningChance = 0.3; + reopeningMinDelay = 220; + reopeningMaxDelay = 500; + }; + class LacerationMinor: Laceration { + effectiveness = 0.8; reopeningChance = 0.3; + reopeningMinDelay = 400; + reopeningMaxDelay = 800; + }; + class LacerationMedium: Laceration { + effectiveness = 0.5; + reopeningChance = 0.5; + reopeningMinDelay = 220; + reopeningMaxDelay = 500; + }; + class LacerationLarge: Laceration { + effectiveness = 0.3; + reopeningChance = 0.7; reopeningMinDelay = 120; reopeningMaxDelay = 260; }; - class LacerationMinor: Laceration {}; - class LacerationMedium: Laceration {}; - class LacerationLarge: Laceration {}; class velocityWound: Abrasion { - effectiveness = 0.3; + effectiveness = 0.5; + reopeningChance = 0.7; + reopeningMinDelay = 100; + reopeningMaxDelay = 300; + }; + class velocityWoundMinor: velocityWound { + effectiveness = 0.8; + reopeningChance = 0.4; + reopeningMinDelay = 300; + reopeningMaxDelay = 550; + }; + class velocityWoundMedium: velocityWound { + effectiveness = 0.6; reopeningChance = 0.8; - reopeningMinDelay = 20; + reopeningMinDelay = 100; reopeningMaxDelay = 300; }; - class velocityWoundMinor: velocityWound {}; - class velocityWoundMedium: velocityWound {}; - class velocityWoundLarge: velocityWound {}; + class velocityWoundLarge: velocityWound { + effectiveness = 0.3; + reopeningChance = 0.9; + reopeningMinDelay = 50; + reopeningMaxDelay = 170; + }; + class punctureWound: Abrasion { - effectiveness = 0.5; + effectiveness = 0.6; + reopeningChance = 0.3; + reopeningMinDelay = 200; + reopeningMaxDelay = 300; + }; + class punctureWoundMinor: punctureWound { + effectiveness = 0.8; + reopeningChance = 0.5; + reopeningMinDelay = 500; + reopeningMaxDelay = 800; + }; + class punctureWoundMedium: punctureWound { + effectiveness = 0.6; + reopeningChance = 0.3; + reopeningMinDelay = 400; + reopeningMaxDelay = 600; + }; + class punctureWoundLarge: punctureWound { + effectiveness = 0.3; reopeningChance = 0.8; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; - class punctureWoundMinor: punctureWound {}; - class punctureWoundMedium: punctureWound {}; - class punctureWoundLarge: punctureWound {}; }; class PackingBandage: fieldDressing { class Abrasion { + effectiveness = 0.1; + reopeningChance = 0.9; + reopeningMinDelay = 5; + reopeningMaxDelay = 10; + }; + class AbrasionMinor: Abrasion { + effectiveness = 0.1; + reopeningChance = 0.9; + reopeningMinDelay = 5; + reopeningMaxDelay = 10; + }; + class AbrasionMedium: Abrasion { + effectiveness = 0.1; + reopeningChance = 0.9; + reopeningMinDelay = 5; + reopeningMaxDelay = 10; + }; + class AbrasionLarge: Abrasion { effectiveness = 1; - reopeningChance = 0; - reopeningMinDelay = 0; - reopeningMaxDelay = 0; + reopeningChance = 0.9; + reopeningMinDelay = 5; + reopeningMaxDelay = 10; }; - class AbrasionMinor: Abrasion {}; - class AbrasionMedium: Abrasion {}; - class AbrasionLarge: Abrasion {}; + class Avulsions: Abrasion { effectiveness = 1; reopeningChance = 0.3; reopeningMinDelay = 120; reopeningMaxDelay = 200; }; - class AvulsionsMinor: Avulsions {}; - class AvulsionsMedium: Avulsions {}; - class AvulsionsLarge: Avulsions {}; + class AvulsionsMinor: Avulsions { + effectiveness = 1; + reopeningChance = 0.2; + reopeningMinDelay = 500; + reopeningMaxDelay = 1000; + }; + class AvulsionsMedium: Avulsions {{ + effectiveness = 0.7; + reopeningChance = 0.4; + reopeningMinDelay = 250; + reopeningMaxDelay = 750; + }; + class AvulsionsLarge: Avulsions { + effectiveness = 0.5; + reopeningChance = 0.5; + reopeningMinDelay = 120; + reopeningMaxDelay = 200; + }; + class Contusion: Abrasion { effectiveness = 1; reopeningChance = 0; @@ -793,72 +943,168 @@ class ACE_Medical_Advanced { }; class ContusionMinor: Contusion {}; class ContusionMedium: Contusion {}; - class ContusionLarge: Contusion {}; + class ContusionLarge: Contusion { + effectiveness = 1; + reopeningChance = 0; + reopeningMinDelay = 0; + reopeningMaxDelay = 0; + }; + class CrushWound: Abrasion { effectiveness = 0.6; reopeningChance = 0.2; reopeningMinDelay = 120; reopeningMaxDelay = 200; }; - class CrushWoundMinor: CrushWound {}; - class CrushWoundMedium: CrushWound {}; - class CrushWoundLarge: CrushWound {}; + class CrushWoundMinor: CrushWound { + effectiveness = 0.8; + reopeningChance = 0.4; + reopeningMinDelay = 500; + reopeningMaxDelay = 1000; + }; + class CrushWoundMedium: CrushWound { + effectiveness = 0.6; + reopeningChance = 0.6; + reopeningMinDelay = 280; + reopeningMaxDelay = 320; + }; + class CrushWoundLarge: CrushWound { + effectiveness = 0.4; + reopeningChance = 0.8; + reopeningMinDelay = 120; + reopeningMaxDelay = 200; + }; + class Cut: Abrasion { effectiveness = 0.2; + reopeningChance = 0.4; + reopeningMinDelay = 10000; + reopeningMaxDelay = 20000; + }; + class CutMinor: Cut { + effectiveness = 1; + reopeningChance = 0.1; + reopeningMinDelay = 20000; + reopeningMaxDelay = 30000; + }; + class CutMedium: Cut { + effectiveness = 0.5; + reopeningChance = 0.4; + reopeningMinDelay = 2000; + reopeningMaxDelay = 3000; + }; + class CutLarge: Cut { + effectiveness = 0.7; reopeningChance = 0.6; - reopeningMinDelay = 30; - reopeningMaxDelay = 260; + reopeningMinDelay = 300; + reopeningMaxDelay = 2060; }; - class CutMinor: Cut {}; - class CutMedium: Cut {}; - class CutLarge: Cut {}; + class Laceration: Abrasion { - effectiveness = 0.3; - reopeningChance = 0.3; + effectiveness = 0.5; + reopeningChance = 0.5; reopeningMinDelay = 120; reopeningMaxDelay = 260; }; - class LacerationMinor: Laceration {}; - class LacerationMedium: Laceration {}; - class LacerationLarge: Laceration {}; + class LacerationMinor: Laceration { + effectiveness = 1; + reopeningChance = 0.1; + reopeningMinDelay = 500; + reopeningMaxDelay = 700; + }; + class LacerationMedium: Laceration { + effectiveness = 0.7; + reopeningChance = 0.3; + reopeningMinDelay = 300; + reopeningMaxDelay = 600; + }; + class LacerationLarge: Laceration { + effectiveness = 0.3; + reopeningChance = 0.5; + reopeningMinDelay = 220; + reopeningMaxDelay = 360; + }; class velocityWound: Abrasion { effectiveness = 1; reopeningChance = 0.5; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; - class velocityWoundMinor: velocityWound {}; - class velocityWoundMedium: velocityWound {}; - class velocityWoundLarge: velocityWound {}; - class punctureWound: Abrasion { + class velocityWoundMinor: velocityWound { + effectiveness = 1; + reopeningChance = 0.7; + reopeningMinDelay = 800; + reopeningMaxDelay = 1000; + }; + class velocityWoundMedium: velocityWound { + effectiveness = 0.6; + reopeningChance = 0.6; + reopeningMinDelay = 500; + reopeningMaxDelay = 800; + }; + class velocityWoundLarge: velocityWound { effectiveness = 0.3; reopeningChance = 0.5; + reopeningMinDelay = 300; + reopeningMaxDelay = 500; + }; + class punctureWound: Abrasion { + effectiveness = 0.1; + reopeningChance = 0.5; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; class punctureWoundMinor: punctureWound {}; - class punctureWoundMedium: punctureWound {}; - class punctureWoundLarge: punctureWound {}; + class punctureWoundMedium: punctureWound { + effectiveness = 0.2; + reopeningChance = 0.5; + }; + class punctureWoundLarge: punctureWound { + effectiveness = 0.3; + reopeningChance = 0.5; + reopeningMinDelay = 20; + reopeningMaxDelay = 300; + }; }; + class ElasticBandage: fieldDressing { class Abrasion { - effectiveness = 1; + effectiveness = 2; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class AbrasionMinor: Abrasion {}; - class AbrasionMedium: Abrasion {}; - class AbrasionLarge: Abrasion {}; + class AbrasionMedium: Abrasion { + effectiveness = 1.5; + }; + class AbrasionLarge: Abrasion { + effectiveness = 1; + reopeningChance = 0; + reopeningMinDelay = 0; + }; + class Avulsions: Abrasion { effectiveness = 0.3; reopeningChance = 0.4; reopeningMinDelay = 120; reopeningMaxDelay = 200; }; - class AvulsionsMinor: Avulsions {}; - class AvulsionsMedium: Avulsions {}; - class AvulsionsLarge: Avulsions {}; + class AvulsionsMinor: Avulsions { + effectiveness = 0.9; + reopeningChance = 0.2; + }; + class AvulsionsMedium: Avulsions { + effectiveness = 0.7; + reopeningChance = 0.4; + }; + class AvulsionsLarge: Avulsions { + effectiveness = 0.3; + reopeningChance = 0.4; + reopeningMinDelay = 120; + reopeningMaxDelay = 200; + }; + class Contusion: Abrasion { effectiveness = 1; reopeningChance = 0; @@ -868,6 +1114,7 @@ class ACE_Medical_Advanced { class ContusionMinor: Contusion {}; class ContusionMedium: Contusion {}; class ContusionLarge: Contusion {}; + class CrushWound: Abrasion { effectiveness = 1; reopeningChance = 0; @@ -876,16 +1123,31 @@ class ACE_Medical_Advanced { }; class CrushWoundMinor: CrushWound {}; class CrushWoundMedium: CrushWound {}; - class CrushWoundLarge: CrushWound {}; - class Cut: Abrasion { + class CrushWoundLarge: CrushWound { effectiveness = 1; + reopeningChance = 0; + reopeningMinDelay = 0; + reopeningMaxDelay = 0; + }; + + class Cut: Abrasion { + effectiveness = 1.5; reopeningChance = 0.2; reopeningMinDelay = 10; reopeningMaxDelay = 400; }; class CutMinor: Cut {}; - class CutMedium: Cut {}; - class CutLarge: Cut {}; + class CutMedium: Cut { + effectiveness = 1.2; + reopeningChance = 0.3; + }; + class CutLarge: Cut { + effectiveness = 1; + reopeningChance = 0.5; + reopeningMinDelay = 10; + reopeningMaxDelay = 400; + }; + class Laceration: Abrasion { effectiveness = 1; reopeningChance = 0.3; @@ -893,26 +1155,50 @@ class ACE_Medical_Advanced { reopeningMaxDelay = 260; }; class LacerationMinor: Laceration {}; - class LacerationMedium: Laceration {}; - class LacerationLarge: Laceration {}; - class velocityWound: Abrasion { + class LacerationMedium: Laceration { + effectiveness = 0.75; + }; + class LacerationLarge: Laceration { effectiveness = 0.5; + reopeningChance = 0.3; + reopeningMinDelay = 120; + reopeningMaxDelay = 260; + }; + + class velocityWound: Abrasion { + effectiveness = 0.7; reopeningChance = 0.5; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; class velocityWoundMinor: velocityWound {}; - class velocityWoundMedium: velocityWound {}; - class velocityWoundLarge: velocityWound {}; + class velocityWoundMedium: velocityWound { + effectiveness = 0.5; + }; + class velocityWoundLarge: velocityWound { + effectiveness = 0.25; + reopeningChance = 0.7; + reopeningMinDelay = 20; + reopeningMaxDelay = 300; + }; + class punctureWound: Abrasion { - effectiveness = 0.85; - reopeningChance = 0.5; + effectiveness = 0.9; + reopeningChance = 0.3; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; class punctureWoundMinor: punctureWound {}; - class punctureWoundMedium: punctureWound {}; - class punctureWoundLarge: punctureWound {}; + class punctureWoundMedium: punctureWound { + effectiveness = 0.9; + reopeningChance = 0.5; + }; + class punctureWoundLarge: punctureWound { + effectiveness = 0.85; + reopeningChance = 0.7; + reopeningMinDelay = 20; + reopeningMaxDelay = 300; + }; }; class QuikClot: fieldDressing { class Abrasion { @@ -923,16 +1209,30 @@ class ACE_Medical_Advanced { }; class AbrasionMinor: Abrasion {}; class AbrasionMedium: Abrasion {}; - class AbrasionLarge: Abrasion {}; + class AbrasionLarge: Abrasion { + effectiveness = 0.7; + reopeningChance = 0; + reopeningMinDelay = 0; + reopeningMaxDelay = 0; + }; + class Avulsions: Abrasion { - effectiveness = 0.2; + effectiveness = 0.6; reopeningChance = 0.1; reopeningMinDelay = 300; reopeningMaxDelay = 350; }; class AvulsionsMinor: Avulsions {}; - class AvulsionsMedium: Avulsions {}; - class AvulsionsLarge: Avulsions {}; + class AvulsionsMedium: Avulsions { + effectiveness = 0.4; + }; + class AvulsionsLarge: Avulsions { + effectiveness = 0.2; + reopeningChance = 0.1; + reopeningMinDelay = 300; + reopeningMaxDelay = 350; + }; + class Contusion: Abrasion { effectiveness = 0.7; reopeningChance = 0; @@ -941,25 +1241,49 @@ class ACE_Medical_Advanced { }; class ContusionMinor: Contusion {}; class ContusionMedium: Contusion {}; - class ContusionLarge: Contusion {}; - class CrushWound: Abrasion { + class ContusionLarge: Contusion { effectiveness = 0.7; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; + + class CrushWound: Abrasion { + effectiveness = 1; + reopeningChance = 0; + reopeningMinDelay = 0; + reopeningMaxDelay = 0; + }; class CrushWoundMinor: CrushWound {}; - class CrushWoundMedium: CrushWound {}; - class CrushWoundLarge: CrushWound {}; + class CrushWoundMedium: CrushWound { + effectiveness = 0.9; + reopeningChance = 0.05; + }; + class CrushWoundLarge: CrushWound { + effectiveness = 0.7; + reopeningChance = 0.1; + reopeningMinDelay = 0; + reopeningMaxDelay = 0; + }; + class Cut: Abrasion { effectiveness = 0.7; - reopeningChance = 0.2; + reopeningChance = 0; reopeningMinDelay = 100; reopeningMaxDelay = 400; }; class CutMinor: Cut {}; - class CutMedium: Cut {}; - class CutLarge: Cut {}; + class CutMedium: Cut { + effectiveness = 0.6; + reopeningChance = 0; + }; + class CutLarge: Cut { + effectiveness = 0.5; + reopeningChance = 0.2; + reopeningMinDelay = 100; + reopeningMaxDelay = 400; + }; + class Laceration: Abrasion { effectiveness = 0.7; reopeningChance = 0; @@ -967,26 +1291,50 @@ class ACE_Medical_Advanced { reopeningMaxDelay = 0; }; class LacerationMinor: Laceration {}; - class LacerationMedium: Laceration {}; - class LacerationLarge: Laceration {}; + class LacerationMedium: Laceration { + effectiveness = 0.6; + }; + class LacerationLarge: Laceration { + effectiveness = 0.5; + reopeningChance = 0; + reopeningMinDelay = 0; + reopeningMaxDelay = 0; + }; + class velocityWound: Abrasion { effectiveness = 0.7; - reopeningChance = 0.1; + reopeningChance = 0; reopeningMinDelay = 200; reopeningMaxDelay = 300; }; class velocityWoundMinor: velocityWound {}; - class velocityWoundMedium: velocityWound {}; - class velocityWoundLarge: velocityWound {}; - class punctureWound: Abrasion { + class velocityWoundMedium: velocityWound { + effectiveness = 0.6; + }; + class velocityWoundLarge: velocityWound { effectiveness = 0.5; reopeningChance = 0.1; reopeningMinDelay = 200; reopeningMaxDelay = 300; }; + + class punctureWound: Abrasion { + effectiveness = 0.5; + reopeningChance = 0.05; + reopeningMinDelay = 200; + reopeningMaxDelay = 300; + }; class punctureWoundMinor: punctureWound {}; - class punctureWoundMedium: punctureWound {}; - class punctureWoundLarge: punctureWound {}; + class punctureWoundMedium: punctureWound { + effectiveness = 0.4; + reopeningChance = 0.1; + }; + class punctureWoundLarge: punctureWound { + effectiveness = 0.3; + reopeningChance = 0.15; + reopeningMinDelay = 200; + reopeningMaxDelay = 300; + }; }; }; @@ -1022,18 +1370,27 @@ class ACE_Medical_Advanced { }; class Epinephrine { painReduce = 0; - hrIncreaseLow[] = {10, 20, 30}; - hrIncreaseNormal[] = {10, 50, 20}; - hrIncreaseHigh[] = {10, 40, 10}; + hrIncreaseLow[] = {10, 20, 15}; + hrIncreaseNormal[] = {10, 50, 10}; + hrIncreaseHigh[] = {10, 40, 5}; timeInSystem = 120; maxDose = 10; inCompatableMedication[] = {}; }; + class Adenosine { + painReduce = 0; + hrIncreaseLow[] = {-7, -10, 15}; + hrIncreaseNormal[] = {-15, -30, 20}; + hrIncreaseHigh[] = {-15, -35, 10}; + timeInSystem = 120; + maxDose = 6; + inCompatableMedication[] = {}; + }; class Atropine { painReduce = 0; - hrIncreaseLow[] = {-5, -7, 15}; - hrIncreaseNormal[] = {-10, -30, 20}; - hrIncreaseHigh[] = {-10, -20, 10}; + hrIncreaseLow[] = {-2, -5, 15}; + hrIncreaseNormal[] = {-10, -15, 20}; + hrIncreaseHigh[] = {-5, -20, 10}; timeInSystem = 120; maxDose = 6; inCompatableMedication[] = {}; diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index 5c3ba86b121..e4dc1ea69c7 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -133,6 +133,12 @@ class ACE_Settings { typeName = "SCALAR"; value = 0; }; + class GVAR(medicSetting_basicEpi) { + category = CSTRING(Category_Medical); + typeName = "SCALAR"; + value = 1; + values[] = {"Anyone", "Medics only", "Doctors only"}; + }; class GVAR(medicSetting_PAK) { category = CSTRING(Category_Medical); typeName = "SCALAR"; @@ -157,6 +163,12 @@ class ACE_Settings { value = 0; values[] = {"No", "Yes"}; }; + class GVAR(useLocation_basicEpi) { + category = CSTRING(Category_Medical); + typeName = "SCALAR"; + value = 0; + values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)}; + }; class GVAR(useLocation_PAK) { category = CSTRING(Category_Medical); typeName = "SCALAR"; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index bb98c7f1faf..bddb8fc8a6a 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -151,7 +151,48 @@ class CfgVehicles { sync[] = {}; }; }; + class ACE_moduleBasicMedicalSettings: ACE_Module { + scope = 2; + displayName = CSTRING(BasicMedicalSettings_Module_DisplayName); + icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + category = "ACE_medical"; + function = QUOTE(FUNC(moduleBasicMedicalSettings)); + functionPriority = 10; + isGlobal = 2; + isSingular = 1; + isTriggerActivated = 0; + isDisposable = 0; + author = ECSTRING(common,ACETeam); + class Arguments { + class medicSetting_basicEpi { + displayName = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_DisplayName); + description = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_Description); + typeName = "NUMBER"; + class values { + class anyone { name = CSTRING(AdvancedMedicalSettings_anyone); value = 0; }; + class Medic { name = CSTRING(AdvancedMedicalSettings_Medic); value = 1; default = 1; }; + class Special { name = CSTRING(AdvancedMedicalSettings_Special); value = 2; }; + }; + }; + class useLocation_basicEpi { + displayName = CSTRING(BasicMedicalSettings_useLocation_basicEpi_DisplayName); + description = CSTRING(BasicMedicalSettings_useLocation_basicEpi_Description); + typeName = "NUMBER"; + class values { + class anywhere { name = CSTRING(AdvancedMedicalSettings_anywhere); value = 0; default = 1; }; + class vehicle { name = CSTRING(AdvancedMedicalSettings_vehicle); value = 1; }; + class facility { name = CSTRING(AdvancedMedicalSettings_facility); value = 2; }; + class vehicleAndFacility { name = CSTRING(AdvancedMedicalSettings_vehicleAndFacility); value = 3; }; + class disabled { name = ECSTRING(common,Disabled); value = 4;}; + }; + }; + }; + class ModuleDescription { + description = CSTRING(BasicMedicalSettings_Module_Description); + sync[] = {}; + }; + }; class ACE_moduleAdvancedMedicalSettings: ACE_Module { scope = 2; displayName = CSTRING(AdvancedMedicalSettings_Module_DisplayName); @@ -660,6 +701,9 @@ class CfgVehicles { class ACE_MedicalLitter_gloves: ACE_MedicalLitterBase { model = QUOTE(PATHTOF(data\littergeneric_gloves.p3d)); }; + class ACE_MedicalLitter_adenosine: ACE_MedicalLitterBase { + model = QUOTE(PATHTOF(data\littergeneric_adenosine.p3d)); + }; class ACE_MedicalLitter_atropine: ACE_MedicalLitterBase { model = QUOTE(PATHTOF(data\littergeneric_atropine.p3d)); }; @@ -723,6 +767,16 @@ class CfgVehicles { MACRO_ADDITEM(ACE_morphine,1); }; }; + class ACE_adenosineItem: Item_Base_F { + scope = 2; + scopeCurator = 2; + displayName = CSTRING(Adenosine_Display); + author = ECSTRING(common,ACETeam); + vehicleClass = "Items"; + class TransportItems { + MACRO_ADDITEM(ACE_adenosine,1); + }; + }; class ACE_atropineItem: Item_Base_F { scope = 2; scopeCurator = 2; @@ -841,6 +895,7 @@ class CfgVehicles { MACRO_ADDITEM(ACE_elasticBandage,25); MACRO_ADDITEM(ACE_tourniquet,15); MACRO_ADDITEM(ACE_morphine,15); + MACRO_ADDITEM(ACE_adenosine,15); MACRO_ADDITEM(ACE_atropine,15); MACRO_ADDITEM(ACE_epinephrine,15); MACRO_ADDITEM(ACE_plasmaIV,7); diff --git a/addons/medical/CfgWeapons.hpp b/addons/medical/CfgWeapons.hpp index 6de00eff22f..4bd5452794f 100644 --- a/addons/medical/CfgWeapons.hpp +++ b/addons/medical/CfgWeapons.hpp @@ -75,6 +75,17 @@ class CfgWeapons { mass = 1; }; }; + class ACE_adenosine: ACE_ItemCore { + scope = 2; + displayName = CSTRING(Adenosine_Display); + picture = QUOTE(PATHTOF(ui\items\adenosine_x_ca.paa)); + model = QUOTE(PATHTOF(data\adenosine.p3d)); + descriptionShort = CSTRING(adenosine_Desc_Short); + descriptionUse = CSTRING(adenosine_Desc_Use); + class ItemInfo: InventoryItem_Base_F { + mass = 1; + }; + }; class ACE_atropine: ACE_ItemCore { scope = 2; displayName = CSTRING(Atropine_Display); @@ -84,7 +95,6 @@ class CfgWeapons { descriptionUse = CSTRING(Atropine_Desc_Use); class ItemInfo: InventoryItem_Base_F { mass = 1; - }; }; class ACE_epinephrine: ACE_ItemCore { diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 5803fb625ca..d4cbe66ae1d 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -103,6 +103,7 @@ PREP(displayPatientInformation); PREP(displayTriageCard); PREP(dropDownTriageCard); PREP(moduleMedicalSettings); +PREP(moduleBasicMedicalSettings); PREP(moduleAdvancedMedicalSettings); PREP(moduleReviveSettings); PREP(moduleAssignMedicRoles); diff --git a/addons/medical/data/adenosine.p3d b/addons/medical/data/adenosine.p3d new file mode 100644 index 00000000000..fa9fb72c84a Binary files /dev/null and b/addons/medical/data/adenosine.p3d differ diff --git a/addons/medical/data/littergeneric_adenosine.p3d b/addons/medical/data/littergeneric_adenosine.p3d new file mode 100644 index 00000000000..4490a11c0e1 Binary files /dev/null and b/addons/medical/data/littergeneric_adenosine.p3d differ diff --git a/addons/medical/functions/fnc_handleCollisionDamage.sqf b/addons/medical/functions/fnc_handleCollisionDamage.sqf new file mode 100644 index 00000000000..191a91cb6a9 --- /dev/null +++ b/addons/medical/functions/fnc_handleCollisionDamage.sqf @@ -0,0 +1,14 @@ +// by commy2 +#include "script_component.hpp" + +params ["_unit", "_newDamage"]; + +private ["_selection", "_totalDamage"]; + +_selection = "body"; + +_totalDamage = (_unit getHit _selection) + _newDamage; + +_unit setHit [_selection, _totalDamage]; + +systemChat format ["collision: %1", _this]; diff --git a/addons/medical/functions/fnc_moduleBasicMedicalSettings.sqf b/addons/medical/functions/fnc_moduleBasicMedicalSettings.sqf new file mode 100644 index 00000000000..08076878f23 --- /dev/null +++ b/addons/medical/functions/fnc_moduleBasicMedicalSettings.sqf @@ -0,0 +1,23 @@ +/* + * Author: Glowbal + * Module for adjusting the medical treatment settings + * + * Arguments: + * 0: The module logic + * 1: units + * 2: activated + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +params ["_logic", "_units", "_activated"]; + +if !(_activated) exitWith {}; + +[_logic, QGVAR(medicSetting_basicEpi), "medicSetting_basicEpi"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(useLocation_basicEpi), "useLocation_basicEpi"] call EFUNC(common,readSettingFromModule); diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf index 291c8f6cbe8..7d34a278f10 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf @@ -19,6 +19,8 @@ params ["_caller", "_target", "_selectionName", "_className", "_items"]; if (alive _target && {(_target getVariable [QGVAR(inCardiacArrest), false] || _target getVariable [QGVAR(inReviveState), false])}) then { + [_target, "activity_view", LSTRING(Activity_cpr), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); + if (local _target) then { ["treatmentAdvanced_CPRLocal", [_caller, _target]] call EFUNC(common,localEvent); } else { diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 4d84f8e62a4..79809d1312b 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -49,6 +49,9 @@ O nível de detalhe de sujeira determina o número de itens que irão aparecer no cliente. Quantidades excessivas em áreas locais podem aumentar o lag do FPS, então esta é uma opção somente para o cliente. Počet zobrazených předmětů po použití zdravotnického materiálu ovlivňuje počet objektů, které budou zobrazeny klientovi v místě použití zdravotnického materiálu. Vyšší množství objektů může způsobovat poklesy FPS a proto je toto nastavení čistě na klientovi. + + Inject Adenosine + Inject Atropine Atropin injizieren @@ -241,6 +244,9 @@ Injetando Epinefrina ... Inietto l'adrenalina ... + + Injecting Adenosine ... + Injecting Atropine ... Atropin injizieren ... @@ -949,6 +955,15 @@ Um analgésico usado para combater dores moderadas e fortes. Analgetikum slouží k tlumení středně těžkých a těžkých bolestí + + Adenosine autoinjector + + + Used to counter effects of Epinephrine + + + A drug used to counter the effects of Epinephrine + Atropine autoinjector Атропин в пневмошприце @@ -2065,6 +2080,9 @@ %1 aplicou bandagem no paciente %1 již obvázal pacienta + + %1 started CPR + %1 used %2 %1 usó %2 @@ -3147,6 +3165,9 @@ Egy orvosi rendszert ad játékosok és AI-k számára. Fornisce un sistema medico sia per giocatori che IA. + + Basic Medical Settings [ACE] + Advanced Medical Settings [ACE] Настройки усложненной медицины [ACE] @@ -3255,6 +3276,12 @@ Sérülnek-e az egységek autós ütközés során? Le unità sostengono danni da incidenti con veicoli? + + Allow Epinephrine + + + Who can use Epinephrine for full heal? (Basic medical only) + Allow PAK Использование аптечки @@ -3339,6 +3366,12 @@ Eltávolítódjon az elsősegélycsomag használatkor? Il Kit Pronto Soccorso dev'essere rimosso dopo l'utilizzo? + + Locations Epinephrine + + + Where can the Epinephrine be used? (Basic Medical) + Locations PAK Место использования аптечки @@ -3575,8 +3608,11 @@ Боль приглушается только временно Dolore è solo temporaneamente soppresso, non rimosso + + Configure the treatment settings from ACE Basic Medical + - Configure the treatment settings from ACE Medical + Configure the treatment settings from ACE Advanced Medical Настройка лечения в медицинской системе ACE Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE Configure las opciones de tratamiento del ACE Médico diff --git a/addons/medical/ui/items/adenosine_x_ca.paa b/addons/medical/ui/items/adenosine_x_ca.paa new file mode 100644 index 00000000000..49b79e99e52 Binary files /dev/null and b/addons/medical/ui/items/adenosine_x_ca.paa differ