mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
a0f3933bf0
* Consistentency Update with Overdosing * Added Description to Condition Cases * Updated to CASE 2 Overdose behavior: ODs on uses `_maxDose + {1 or 2 or 3}` from `_maxDose + {0 or 1 or 2}` * Update fnc_onMedicationUsage.sqf * Update fnc_onMedicationUsage.sqf * Added riskDose range and updated medications * maxDose -> maxSafeDose | riskDose -> chanceDoses * Fixed maxDose reference in trace * Added chanceDoses to trace * Fixed use of TRACE macro * Updated comments and variable maxSafeDose -> maxDose * Updated comment and overdose formula * chanceDoses -> maxDoseDeviation * Update addons/medical_treatment/functions/fnc_onMedicationUsage.sqf * Update addons/medical_treatment/functions/fnc_onMedicationUsage.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Update addons/medical_treatment/ACE_Medical_Treatment.hpp --------- Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
661 lines
21 KiB
C++
661 lines
21 KiB
C++
|
|
class ADDON {
|
|
class Bandaging {
|
|
// Field dressing is normal average treatment
|
|
// packing bandage is average treatment, higher reopen change, longer reopening delay
|
|
// elastic bandage is higher treatment, higher reopen change, shorter reopen delay
|
|
// quickclot is lower treatment, lower reopen change, longer reopening delay
|
|
class BasicBandage {
|
|
effectiveness = 5;
|
|
reopeningChance = 0;
|
|
reopeningMinDelay = 0;
|
|
reopeningMaxDelay = 0;
|
|
};
|
|
|
|
class FieldDressing {
|
|
// How effect is the bandage for treating one wounds type injury
|
|
effectiveness = 1;
|
|
// What is the chance and delays (in seconds) of the treated default injury reopening
|
|
reopeningChance = 0.1;
|
|
reopeningMinDelay = 120;
|
|
reopeningMaxDelay = 200;
|
|
|
|
class Abrasion {
|
|
effectiveness = 3;
|
|
reopeningChance = 0.3;
|
|
reopeningMinDelay = 200;
|
|
reopeningMaxDelay = 1000;
|
|
};
|
|
class AbrasionMinor: Abrasion {
|
|
effectiveness = 3;
|
|
};
|
|
class AbrasionMedium: Abrasion {
|
|
effectiveness = 2.5;
|
|
reopeningChance = 0.7;
|
|
};
|
|
class AbrasionLarge: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.9;
|
|
};
|
|
|
|
class Avulsion: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.5;
|
|
reopeningMinDelay = 120;
|
|
reopeningMaxDelay = 200;
|
|
};
|
|
class AvulsionMinor: Avulsion {
|
|
effectiveness = 1;
|
|
};
|
|
class AvulsionMedium: Avulsion {
|
|
effectiveness = 0.9;
|
|
};
|
|
class AvulsionLarge: Avulsion {
|
|
effectiveness = 0.75;
|
|
};
|
|
|
|
class Contusion: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0;
|
|
reopeningMinDelay = 0;
|
|
reopeningMaxDelay = 0;
|
|
};
|
|
class ContusionMinor: Contusion {};
|
|
class ContusionMedium: Contusion {};
|
|
class ContusionLarge: Contusion {};
|
|
|
|
class Crush: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.2;
|
|
reopeningMinDelay = 200;
|
|
reopeningMaxDelay = 1000;
|
|
};
|
|
class CrushMinor: Crush {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.2;
|
|
};
|
|
class CrushMedium: Crush {
|
|
effectiveness = 0.7;
|
|
reopeningChance = 0.3;
|
|
};
|
|
class CrushLarge: Crush {
|
|
effectiveness = 0.6;
|
|
reopeningChance = 0.4;
|
|
};
|
|
|
|
class Cut: Abrasion {
|
|
effectiveness = 4;
|
|
reopeningChance = 0.1;
|
|
reopeningMinDelay = 300;
|
|
reopeningMaxDelay = 1000;
|
|
};
|
|
class CutMinor: Cut {
|
|
effectiveness = 4;
|
|
reopeningChance = 0.1;
|
|
};
|
|
class CutMedium: Cut {
|
|
effectiveness = 3;
|
|
reopeningChance = 0.3;
|
|
};
|
|
class CutLarge: Cut {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.5;
|
|
};
|
|
|
|
class Laceration: Abrasion {
|
|
effectiveness = 0.95;
|
|
reopeningChance = 0.3;
|
|
reopeningMinDelay = 100;
|
|
reopeningMaxDelay = 800;
|
|
};
|
|
class LacerationMinor: Laceration {
|
|
effectiveness = 0.95;
|
|
reopeningChance = 0.3;
|
|
};
|
|
class LacerationMedium: Laceration {
|
|
effectiveness = 0.7;
|
|
reopeningChance = 0.5;
|
|
};
|
|
class LacerationLarge: Laceration {
|
|
effectiveness = 0.5;
|
|
reopeningChance = 0.6;
|
|
};
|
|
|
|
class VelocityWound: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.7;
|
|
reopeningMinDelay = 100;
|
|
reopeningMaxDelay = 500;
|
|
};
|
|
class VelocityWoundMinor: VelocityWound {
|
|
effectiveness = 2;
|
|
};
|
|
class VelocityWoundMedium: VelocityWound {
|
|
effectiveness = 1.5;
|
|
};
|
|
class VelocityWoundLarge: VelocityWound {
|
|
effectiveness = 1;
|
|
};
|
|
|
|
class PunctureWound: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.5;
|
|
reopeningMinDelay = 200;
|
|
reopeningMaxDelay = 850;
|
|
};
|
|
class PunctureWoundMinor: PunctureWound {
|
|
effectiveness = 2;
|
|
};
|
|
class PunctureWoundMedium: PunctureWound {
|
|
effectiveness = 1.3;
|
|
};
|
|
class PunctureWoundLarge: PunctureWound {
|
|
effectiveness = 0.9;
|
|
};
|
|
};
|
|
|
|
class PackingBandage: FieldDressing {
|
|
class Abrasion {
|
|
effectiveness = 3;
|
|
reopeningChance = 0.6;
|
|
reopeningMinDelay = 800;
|
|
reopeningMaxDelay = 1500;
|
|
};
|
|
class AbrasionMinor: Abrasion {
|
|
effectiveness = 3;
|
|
};
|
|
class AbrasionMedium: Abrasion {
|
|
effectiveness = 2.5;
|
|
reopeningChance = 0.9;
|
|
};
|
|
class AbrasionLarge: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 1;
|
|
};
|
|
|
|
class Avulsion: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.7;
|
|
reopeningMinDelay = 1000;
|
|
reopeningMaxDelay = 1600;
|
|
};
|
|
class AvulsionMinor: Avulsion {
|
|
effectiveness = 1;
|
|
};
|
|
class AvulsionMedium: Avulsion {
|
|
effectiveness = 0.9;
|
|
};
|
|
class AvulsionLarge: Avulsion {
|
|
effectiveness = 0.75;
|
|
};
|
|
|
|
class Contusion: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0;
|
|
reopeningMinDelay = 0;
|
|
reopeningMaxDelay = 0;
|
|
};
|
|
class ContusionMinor: Contusion {};
|
|
class ContusionMedium: Contusion {};
|
|
class ContusionLarge: Contusion {};
|
|
|
|
class Crush: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.5;
|
|
reopeningMinDelay = 600;
|
|
reopeningMaxDelay = 1000;
|
|
};
|
|
class CrushMinor: Crush {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.6;
|
|
};
|
|
class CrushMedium: Crush {
|
|
effectiveness = 0.7;
|
|
reopeningChance = 0.7;
|
|
};
|
|
class CrushLarge: Crush {
|
|
effectiveness = 0.6;
|
|
reopeningChance = 0.8;
|
|
};
|
|
|
|
class Cut: Abrasion {
|
|
effectiveness = 4;
|
|
reopeningChance = 0.4;
|
|
reopeningMinDelay = 700;
|
|
reopeningMaxDelay = 1000;
|
|
};
|
|
class CutMinor: Cut {
|
|
effectiveness = 4;
|
|
reopeningChance = 0.6;
|
|
};
|
|
class CutMedium: Cut {
|
|
effectiveness = 3;
|
|
reopeningChance = 0.7;
|
|
};
|
|
class CutLarge: Cut {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.8;
|
|
};
|
|
|
|
class Laceration: Abrasion {
|
|
effectiveness = 0.95;
|
|
reopeningChance = 0.65;
|
|
reopeningMinDelay = 500;
|
|
reopeningMaxDelay = 2000;
|
|
};
|
|
class LacerationMinor: Laceration {
|
|
effectiveness = 0.95;
|
|
reopeningChance = 0.65;
|
|
};
|
|
class LacerationMedium: Laceration {
|
|
effectiveness = 0.7;
|
|
reopeningChance = 0.8;
|
|
};
|
|
class LacerationLarge: Laceration {
|
|
effectiveness = 0.5;
|
|
reopeningChance = 0.9;
|
|
};
|
|
|
|
class VelocityWound: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 1;
|
|
reopeningMinDelay = 800;
|
|
reopeningMaxDelay = 2000;
|
|
};
|
|
class VelocityWoundMinor: VelocityWound {
|
|
effectiveness = 2;
|
|
};
|
|
class VelocityWoundMedium: VelocityWound {
|
|
effectiveness = 1.5;
|
|
};
|
|
class VelocityWoundLarge: VelocityWound {
|
|
effectiveness = 1;
|
|
};
|
|
|
|
class PunctureWound: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 1;
|
|
reopeningMinDelay = 1000;
|
|
reopeningMaxDelay = 3000;
|
|
};
|
|
class PunctureWoundMinor: PunctureWound {
|
|
effectiveness = 2;
|
|
};
|
|
class PunctureWoundMedium: PunctureWound {
|
|
effectiveness = 1.3;
|
|
};
|
|
class PunctureWoundLarge: PunctureWound {
|
|
effectiveness = 0.9;
|
|
};
|
|
};
|
|
|
|
class ElasticBandage: FieldDressing {
|
|
class Abrasion {
|
|
effectiveness = 4;
|
|
reopeningChance = 0.6;
|
|
reopeningMinDelay = 80;
|
|
reopeningMaxDelay = 150;
|
|
};
|
|
class AbrasionMinor: Abrasion {
|
|
effectiveness = 4;
|
|
};
|
|
class AbrasionMedium: Abrasion {
|
|
effectiveness = 3;
|
|
reopeningChance = 0.9;
|
|
};
|
|
class AbrasionLarge: Abrasion {
|
|
effectiveness = 2.5;
|
|
reopeningChance = 1;
|
|
};
|
|
|
|
class Avulsion: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.7;
|
|
reopeningMinDelay = 100;
|
|
reopeningMaxDelay = 160;
|
|
};
|
|
class AvulsionMinor: Avulsion {
|
|
effectiveness = 2;
|
|
};
|
|
class AvulsionMedium: Avulsion {
|
|
effectiveness = 1.4;
|
|
};
|
|
class AvulsionLarge: Avulsion {
|
|
effectiveness = 1;
|
|
};
|
|
|
|
class Contusion: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 0;
|
|
reopeningMinDelay = 0;
|
|
reopeningMaxDelay = 0;
|
|
};
|
|
class ContusionMinor: Contusion {};
|
|
class ContusionMedium: Contusion {};
|
|
class ContusionLarge: Contusion {};
|
|
|
|
class Crush: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.5;
|
|
reopeningMinDelay = 60;
|
|
reopeningMaxDelay = 100;
|
|
};
|
|
class CrushMinor: Crush {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.6;
|
|
};
|
|
class CrushMedium: Crush {
|
|
effectiveness = 1.7;
|
|
reopeningChance = 0.7;
|
|
};
|
|
class CrushLarge: Crush {
|
|
effectiveness = 1.6;
|
|
reopeningChance = 0.8;
|
|
};
|
|
|
|
class Cut: Abrasion {
|
|
effectiveness = 5;
|
|
reopeningChance = 0.4;
|
|
reopeningMinDelay = 70;
|
|
reopeningMaxDelay = 100;
|
|
};
|
|
class CutMinor: Cut {
|
|
effectiveness = 5;
|
|
reopeningChance = 0.6;
|
|
};
|
|
class CutMedium: Cut {
|
|
effectiveness = 3.5;
|
|
reopeningChance = 0.7;
|
|
};
|
|
class CutLarge: Cut {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.8;
|
|
};
|
|
|
|
class Laceration: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.65;
|
|
reopeningMinDelay = 50;
|
|
reopeningMaxDelay = 200;
|
|
};
|
|
class LacerationMinor: Laceration {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.65;
|
|
};
|
|
class LacerationMedium: Laceration {
|
|
effectiveness = 1.5;
|
|
reopeningChance = 0.8;
|
|
};
|
|
class LacerationLarge: Laceration {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.9;
|
|
};
|
|
|
|
class VelocityWound: Abrasion {
|
|
effectiveness = 2.2;
|
|
reopeningChance = 1;
|
|
reopeningMinDelay = 80;
|
|
reopeningMaxDelay = 200;
|
|
};
|
|
class VelocityWoundMinor: VelocityWound {
|
|
effectiveness = 2.2;
|
|
};
|
|
class VelocityWoundMedium: VelocityWound {
|
|
effectiveness = 1.75;
|
|
};
|
|
class VelocityWoundLarge: VelocityWound {
|
|
effectiveness = 1.5;
|
|
};
|
|
|
|
class PunctureWound: Abrasion {
|
|
effectiveness = 2.5;
|
|
reopeningChance = 1;
|
|
reopeningMinDelay = 100;
|
|
reopeningMaxDelay = 300;
|
|
};
|
|
class PunctureWoundMinor: PunctureWound {
|
|
effectiveness = 2.5;
|
|
};
|
|
class PunctureWoundMedium: PunctureWound {
|
|
effectiveness = 2;
|
|
};
|
|
class PunctureWoundLarge: PunctureWound {
|
|
effectiveness = 1.5;
|
|
};
|
|
};
|
|
|
|
class QuikClot: FieldDressing {
|
|
class Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.3;
|
|
reopeningMinDelay = 800;
|
|
reopeningMaxDelay = 1500;
|
|
};
|
|
class AbrasionMinor: Abrasion {
|
|
effectiveness = 2;
|
|
};
|
|
class AbrasionMedium: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.4;
|
|
};
|
|
class AbrasionLarge: Abrasion {
|
|
effectiveness = 0.7;
|
|
reopeningChance = 0.5;
|
|
};
|
|
|
|
class Avulsion: Abrasion {
|
|
effectiveness = 0.7;
|
|
reopeningChance = 0.2;
|
|
reopeningMinDelay = 1000;
|
|
reopeningMaxDelay = 1600;
|
|
};
|
|
class AvulsionMinor: Avulsion {
|
|
effectiveness = 0.7;
|
|
};
|
|
class AvulsionMedium: Avulsion {
|
|
effectiveness = 0.65;
|
|
};
|
|
class AvulsionLarge: Avulsion {
|
|
effectiveness = 0.5;
|
|
};
|
|
|
|
class Contusion: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0;
|
|
reopeningMinDelay = 0;
|
|
reopeningMaxDelay = 0;
|
|
};
|
|
class ContusionMinor: Contusion {};
|
|
class ContusionMedium: Contusion {};
|
|
class ContusionLarge: Contusion {};
|
|
|
|
class Crush: Abrasion {
|
|
effectiveness = 0.6;
|
|
reopeningChance = 0.5;
|
|
reopeningMinDelay = 600;
|
|
reopeningMaxDelay = 1000;
|
|
};
|
|
class CrushMinor: Crush {
|
|
effectiveness = 0.6;
|
|
reopeningChance = 0.3;
|
|
};
|
|
class CrushMedium: Crush {
|
|
effectiveness = 0.5;
|
|
};
|
|
class CrushLarge: Crush {
|
|
effectiveness = 0.4;
|
|
};
|
|
|
|
class Cut: Abrasion {
|
|
effectiveness = 2;
|
|
reopeningChance = 0.2;
|
|
reopeningMinDelay = 700;
|
|
reopeningMaxDelay = 1000;
|
|
};
|
|
class CutMinor: Cut {
|
|
effectiveness = 2;
|
|
};
|
|
class CutMedium: Cut {
|
|
effectiveness = 1;
|
|
};
|
|
class CutLarge: Cut {
|
|
effectiveness = 0.6;
|
|
};
|
|
|
|
class Laceration: Abrasion {
|
|
effectiveness = 0.7;
|
|
reopeningChance = 0.4;
|
|
reopeningMinDelay = 500;
|
|
reopeningMaxDelay = 2000;
|
|
};
|
|
class LacerationMinor: Laceration {
|
|
effectiveness = 0.7;
|
|
reopeningChance = 0.4;
|
|
};
|
|
class LacerationMedium: Laceration {
|
|
effectiveness = 0.7;
|
|
};
|
|
class LacerationLarge: Laceration {
|
|
effectiveness = 0.5;
|
|
};
|
|
|
|
class VelocityWound: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.5;
|
|
reopeningMinDelay = 800;
|
|
reopeningMaxDelay = 2000;
|
|
};
|
|
class VelocityWoundMinor: VelocityWound {
|
|
effectiveness = 1;
|
|
};
|
|
class VelocityWoundMedium: VelocityWound {
|
|
effectiveness = 0.75;
|
|
};
|
|
class VelocityWoundLarge: VelocityWound {
|
|
effectiveness = 0.5;
|
|
};
|
|
|
|
class PunctureWound: Abrasion {
|
|
effectiveness = 1;
|
|
reopeningChance = 0.5;
|
|
reopeningMinDelay = 1000;
|
|
reopeningMaxDelay = 3000;
|
|
};
|
|
class PunctureWoundMinor: PunctureWound {
|
|
effectiveness = 1;
|
|
};
|
|
class PunctureWoundMedium: PunctureWound {
|
|
effectiveness = 0.7;
|
|
};
|
|
class PunctureWoundLarge: PunctureWound {
|
|
effectiveness = 0.4;
|
|
};
|
|
};
|
|
};
|
|
|
|
class Medication {
|
|
// How much does the pain get reduced?
|
|
painReduce = 0;
|
|
// How much will the heart rate be increased when the HR is low (below 55)? {minIncrease, maxIncrease}
|
|
hrIncreaseLow[] = {0, 0}; // _heartRate < 55
|
|
hrIncreaseNormal[] = {0, 0}; // 55 <= _heartRate <= 110
|
|
hrIncreaseHigh[] = {0, 0}; // 110 < _heartRate
|
|
|
|
// How long until this medication has disappeared
|
|
timeInSystem = 120;
|
|
// How long until the maximum effect is reached
|
|
timeTillMaxEffect = 30;
|
|
// How many of this type of medication can be in the system before the patient can possibly overdose?
|
|
maxDose = 4;
|
|
// The number of doses over maxDose where there is a chance to overdose.
|
|
// Example with maxDose = 4 and maxDoseDeviation = 2: Dose 4: Safe | Dose 5 and 6: Possible overdose | Dose 7: Guaranteed overdose
|
|
maxDoseDeviation = 2;
|
|
// Function to execute upon overdose. Arguments passed to call back are 0: unit <OBJECT>, 1: medicationClassName <STRING>
|
|
onOverDose = "";
|
|
// The viscosity of a fluid is a measure of its resistance to gradual deformation by shear stress or tensile stress. For liquids, it corresponds to the informal concept of "thickness". This value will increase/decrease the viscoty of the blood with the percentage given. Where 100 = max. Using the minus will decrease viscosity
|
|
viscosityChange = 0;
|
|
|
|
// specific details for the ACE_Morphine treatment action
|
|
class Morphine {
|
|
painReduce = 0.8;
|
|
hrIncreaseLow[] = {-10, -20};
|
|
hrIncreaseNormal[] = {-10, -30};
|
|
hrIncreaseHigh[] = {-10, -35};
|
|
timeInSystem = 1800;
|
|
timeTillMaxEffect = 30;
|
|
maxDose = 4;
|
|
incompatibleMedication[] = {};
|
|
viscosityChange = -10;
|
|
};
|
|
class Epinephrine {
|
|
painReduce = 0;
|
|
hrIncreaseLow[] = {10, 20};
|
|
hrIncreaseNormal[] = {10, 50};
|
|
hrIncreaseHigh[] = {10, 40};
|
|
timeInSystem = 120;
|
|
timeTillMaxEffect = 10;
|
|
maxDose = 9;
|
|
incompatibleMedication[] = {};
|
|
};
|
|
class Adenosine {
|
|
painReduce = 0;
|
|
hrIncreaseLow[] = {-7, -10};
|
|
hrIncreaseNormal[] = {-15, -30};
|
|
hrIncreaseHigh[] = {-15, -35};
|
|
timeInSystem = 120;
|
|
timeTillMaxEffect = 15;
|
|
maxDose = 5;
|
|
incompatibleMedication[] = {};
|
|
};
|
|
class PainKillers {
|
|
painReduce = 0.35;
|
|
hrIncreaseLow[] = {-5, -10};
|
|
hrIncreaseNormal[] = {-5, -15};
|
|
hrIncreaseHigh[] = {-5, -17};
|
|
timeInSystem = 420;
|
|
timeTillMaxEffect = 60;
|
|
maxDose = 5;
|
|
incompatibleMedication[] = {};
|
|
viscosityChange = 5;
|
|
};
|
|
};
|
|
class IV {
|
|
// volume is in millileters
|
|
volume = 1000;
|
|
ratio[] = {};
|
|
type = "Blood";
|
|
class BloodIV {
|
|
volume = 1000;
|
|
ratio[] = {"Plasma", 1};
|
|
};
|
|
class BloodIV_500: BloodIV {
|
|
volume = 500;
|
|
};
|
|
class BloodIV_250: BloodIV {
|
|
volume = 250;
|
|
};
|
|
class PlasmaIV: BloodIV {
|
|
volume = 1000;
|
|
ratio[] = {"Blood", 1};
|
|
type = "Plasma";
|
|
};
|
|
class PlasmaIV_500: PlasmaIV {
|
|
volume = 500;
|
|
};
|
|
class PlasmaIV_250: PlasmaIV {
|
|
volume = 250;
|
|
};
|
|
class SalineIV: BloodIV {
|
|
volume = 1000;
|
|
type = "Saline";
|
|
ratio[] = {};
|
|
};
|
|
class SalineIV_500: SalineIV {
|
|
volume = 500;
|
|
};
|
|
class SalineIV_250: SalineIV {
|
|
volume = 250;
|
|
};
|
|
};
|
|
};
|