class ACE_Medical_Actions { class Basic { class Bandage { displayName = CSTRING(Bandage); displayNameProgress = CSTRING(Bandaging); category = "bandage"; treatmentLocations[] = {"All"}; allowedSelections[] = {"All"}; allowSelfTreatment = 1; requiredMedic = 0; treatmentTime = 5; treatmentTimeSelfCoef = 1; items[] = {{"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_quikclot"}}; condition = ""; patientStateCondition = 0; itemConsumed = 1; callbackSuccess = QUOTE(DFUNC(treatmentBasic_bandage)); callbackFailure = ""; callbackProgress = ""; animationPatient = ""; animationPatientUnconscious = "AinjPpneMstpSnonWrflDnon_rolltoback"; animationPatientUnconsciousExcludeOn[] = {"ainjppnemstpsnonwrfldnon"}; animationCaller = "AinvPknlMstpSlayWrflDnon_medicOther"; animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medicOther"; animationCallerSelf = "AinvPknlMstpSlayW[wpn]Dnon_medic"; animationCallerSelfProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; litter[] = { {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} }; }; class Morphine: Bandage { displayName = CSTRING(Inject_Morphine); displayNameProgress = CSTRING(Injecting_Morphine); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; allowSelfTreatment = 1; category = "medication"; treatmentTime = 2; items[] = {"ACE_morphine"}; callbackSuccess = QUOTE(DFUNC(treatmentBasic_morphine)); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; litter[] = { {"All", "", {"ACE_MedicalLitter_morphine"}} }; }; class Epinephrine: Bandage { displayName = CSTRING(Inject_Epinephrine); displayNameProgress = CSTRING(Injecting_Epinephrine); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; allowSelfTreatment = 1; category = "medication"; requiredMedic = 1; treatmentTime = 3; items[] = {"ACE_epinephrine"}; callbackSuccess = QUOTE(DFUNC(treatmentBasic_epipen)); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} }; }; class BloodIV: Bandage { displayName = CSTRING(Transfuse_Blood); displayNameProgress = CSTRING(Transfusing_Blood); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; allowSelfTreatment = 0; category = "advanced"; requiredMedic = 1; treatmentTime = 20; items[] = {"ACE_bloodIV"}; callbackSuccess = QUOTE(DFUNC(treatmentBasic_bloodbag)); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; litter[] = {}; }; class BloodIV_500: BloodIV { category = "advanced"; items[] = {"ACE_bloodIV_500"}; }; class BloodIV_250: BloodIV { category = "advanced"; items[] = {"ACE_bloodIV_250"}; }; class BodyBag: Bandage { displayName = CSTRING(PlaceInBodyBag); displayNameProgress = CSTRING(PlacingInBodyBag); category = "advanced"; treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 4; items[] = {"ACE_bodyBag"}; condition = "!alive (_this select 1);"; callbackSuccess = QUOTE(DFUNC(actionPlaceInBodyBag)); callbackFailure = ""; callbackProgress = ""; animationPatient = ""; animationPatientUnconscious = ""; itemConsumed = 1; litter[] = {}; }; class Diagnose: Bandage { displayName = CSTRING(Actions_Diagnose); displayNameProgress = CSTRING(Actions_Diagnosing); category = "examine"; treatmentLocations[] = {"All"}; allowedSelections[] = {"head", "body"}; requiredMedic = 0; treatmentTime = 1; items[] = {}; callbackSuccess = QUOTE(DFUNC(actionDiagnose)); callbackFailure = ""; callbackProgress = ""; animationPatient = ""; animationCaller = ""; // TODO itemConsumed = 0; litter[] = {}; }; class CPR: Bandage { displayName = CSTRING(Actions_CPR); displayNameProgress = CSTRING(Actions_PerformingCPR); category = "advanced"; treatmentLocations[] = {"All"}; allowedSelections[] = {"body"}; allowSelfTreatment = 0; requiredMedic = 0; treatmentTime = 15; items[] = {}; condition = QUOTE(!([(_this select 1)] call ace_common_fnc_isAwake) && GVAR(enableRevive)>0); callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_CPR)); callbackFailure = ""; callbackProgress = "!([((_this select 0) select 1)] call ace_common_fnc_isAwake)"; animationPatient = ""; animationPatientUnconscious = "AinjPpneMstpSnonWrflDnon_rolltoback"; animationCaller = "AinvPknlMstpSlayWnonDnon_medic"; animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; animationCallerSelf = ""; animationCallerSelfProne = ""; itemConsumed = 0; litter[] = {}; }; }; class Advanced { class FieldDressing { displayName = CSTRING(Actions_FieldDressing); displayNameProgress = CSTRING(Bandaging); category = "bandage"; // Which locations can this treatment action be used? Available: Field, MedicalFacility, MedicalVehicle, All. treatmentLocations[] = {"All"}; allowedSelections[] = {"All"}; allowSelfTreatment = 1; // What is the level of medical skill required for this treatment action? 0 = all soldiers, 1 = medic, 2 = doctor requiredMedic = 0; // The time it takes for a treatment action to complete. Time is in seconds. treatmentTime = 8; // Item required for the action. Leave empty for no item required. items[] = {"ACE_fieldDressing"}; condition = ""; patientStateCondition = 0; // Callbacks callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_bandage)); callbackFailure = ""; callbackProgress = ""; itemConsumed = 1; animationPatient = ""; animationPatientUnconscious = "AinjPpneMstpSnonWrflDnon_rolltoback"; animationPatientUnconsciousExcludeOn[] = {"ainjppnemstpsnonwrfldnon"}; animationCaller = "AinvPknlMstpSlayWrflDnon_medicOther"; animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medicOther"; animationCallerSelf = "AinvPknlMstpSlayW[wpn]Dnon_medic"; animationCallerSelfProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; litter[] = { {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} }; }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); items[] = {"ACE_packingBandage"}; litter[] = { {"All", "", {"ACE_MedicalLitter_packingBandage"}}, {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} }; }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); items[] = {"ACE_elasticBandage"}; }; class QuikClot: fieldDressing { displayName = CSTRING(Actions_QuikClot); items[] = {"ACE_quikclot"}; litter[] = { {"All", "", {"ACE_MedicalLitter_QuickClot"}}, {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} }; }; class Tourniquet: fieldDressing { displayName = CSTRING(Apply_Tourniquet); displayNameProgress = CSTRING(Applying_Tourniquet); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; items[] = {"ACE_tourniquet"}; treatmentTime = 4; callbackSuccess = QUOTE(DFUNC(treatmentTourniquet)); condition = QUOTE(!([ARR_2(_this select 1, _this select 2)] call FUNC(hasTourniquetAppliedTo))); litter[] = {}; }; class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); displayNameProgress = CSTRING(Injecting_Morphine); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; category = "medication"; items[] = {"ACE_morphine"}; treatmentTime = 3; callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_medication)); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; litter[] = { {"All", "", {"ACE_MedicalLitter_morphine"}} }; }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); displayNameProgress = CSTRING(Injecting_Atropine); items[] = {"ACE_atropine"}; litter[] = { {"All", "", {"ACE_MedicalLitter_atropine"}} }; }; class Epinephrine: Morphine { displayName = CSTRING(Inject_Epinephrine); displayNameProgress = CSTRING(Injecting_Epinephrine); items[] = {"ACE_epinephrine"}; litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} }; }; class BloodIV: fieldDressing { displayName = CSTRING(Actions_Blood4_1000); displayNameProgress = CSTRING(Transfusing_Blood); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; allowSelfTreatment = 0; category = "advanced"; items[] = {"ACE_bloodIV"}; requiredMedic = 1; treatmentTime = 7; callbackSuccess = QUOTE(DFUNC(treatmentIV)); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; litter[] = {}; }; class BloodIV_500: BloodIV { displayName = CSTRING(Actions_Blood4_500); items[] = {"ACE_bloodIV_500"}; }; class BloodIV_250: BloodIV { displayName = CSTRING(Actions_Blood4_250); items[] = {"ACE_bloodIV_250"}; }; class PlasmaIV: BloodIV { displayName = CSTRING(Actions_Plasma4_1000); displayNameProgress = CSTRING(Transfusing_Plasma); items[] = {"ACE_plasmaIV"}; animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; }; class PlasmaIV_500: PlasmaIV { displayName = CSTRING(Actions_Plasma4_500); items[] = {"ACE_plasmaIV_500"}; }; class PlasmaIV_250: PlasmaIV { displayName = CSTRING(Actions_Plasma4_250); items[] = {"ACE_plasmaIV_250"}; }; class SalineIV: BloodIV { displayName = CSTRING(Actions_Saline4_1000); displayNameProgress = CSTRING(Transfusing_Saline); items[] = {"ACE_salineIV"}; animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; }; class SalineIV_500: SalineIV { displayName = CSTRING(Actions_Saline4_500); items[] = {"ACE_salineIV_500"}; }; class SalineIV_250: SalineIV { displayName = CSTRING(Actions_Saline4_250); items[] = {"ACE_salineIV_250"}; }; class SurgicalKit: fieldDressing { displayName = CSTRING(Use_SurgicalKit); displayNameProgress = CSTRING(Stitching); category = "advanced"; items[] = {"ACE_surgicalKit"}; treatmentLocations[] = {QGVAR(useLocation_SurgicalKit)}; allowSelfTreatment = 0; requiredMedic = QGVAR(medicSetting_SurgicalKit); patientStateCondition = QGVAR(useCondition_SurgicalKit); treatmentTime = "(count ((_this select 1) getVariable ['ACE_Medical_bandagedWounds', []]) * 5)"; callbackSuccess = ""; callbackProgress = QUOTE(DFUNC(treatmentAdvanced_surgicalKit_onProgress)); itemConsumed = QGVAR(consumeItem_SurgicalKit); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"} }}; }; class PersonalAidKit: fieldDressing { displayName = CSTRING(Use_Aid_Kit); displayNameProgress = CSTRING(TreatmentAction); category = "advanced"; items[] = {"ACE_personalAidKit"}; treatmentLocations[] = {QGVAR(useLocation_PAK)}; allowSelfTreatment = 0; requiredMedic = QGVAR(medicSetting_PAK); patientStateCondition = QGVAR(useCondition_PAK); treatmentTime = QUOTE((_this select 1) call FUNC(treatmentAdvanced_fullHealTreatmentTime)); callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_fullHeal)); itemConsumed = QGVAR(consumeItem_PAK); animationPatient = ""; animationPatientUnconscious = "AinjPpneMstpSnonWrflDnon_rolltoback"; animationCaller = "AinvPknlMstpSlayWnonDnon_medicOther"; animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medicOther"; animationCallerSelf = ""; animationCallerSelfProne = ""; litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"}}, {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} }; }; class CheckPulse: fieldDressing { displayName = CSTRING(Actions_CheckPulse); displayNameProgress = CSTRING(Check_Pulse_Content); category = "examine"; treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 2; items[] = {}; callbackSuccess = QUOTE(DFUNC(actionCheckPulse)); callbackFailure = ""; callbackProgress = ""; animationPatient = ""; animationCaller = ""; // TODO animationCallerProne = ""; animationCallerSelfProne = ""; itemConsumed = 0; litter[] = {}; }; class CheckBloodPressure: CheckPulse { displayName = CSTRING(Actions_CheckBloodPressure); callbackSuccess = QUOTE(DFUNC(actionCheckBloodPressure)); displayNameProgress = CSTRING(Check_Bloodpressure_Content); }; class CheckResponse: CheckPulse { displayName = CSTRING(Check_Response); callbackSuccess = QUOTE(DFUNC(actionCheckResponse)); displayNameProgress = CSTRING(Check_Response_Content); allowSelfTreatment = 0; }; class RemoveTourniquet: Tourniquet { displayName = CSTRING(Actions_RemoveTourniquet); items[] = {}; treatmentTime = 2.5; callbackSuccess = QUOTE(DFUNC(actionRemoveTourniquet)); condition = QUOTE([ARR_2(_this select 1, _this select 2)] call FUNC(hasTourniquetAppliedTo)); displayNameProgress = CSTRING(RemovingTourniquet); litter[] = {}; }; class CPR: fieldDressing { displayName = CSTRING(Actions_CPR); displayNameProgress = CSTRING(Actions_PerformingCPR); category = "advanced"; treatmentLocations[] = {"All"}; allowedSelections[] = {"body"}; allowSelfTreatment = 0; requiredMedic = 0; treatmentTime = 15; items[] = {}; condition = "!([(_this select 1)] call ace_common_fnc_isAwake)"; callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_CPR)); callbackFailure = ""; callbackProgress = "!([((_this select 0) select 1)] call ace_common_fnc_isAwake)"; animationPatient = ""; animationPatientUnconscious = "AinjPpneMstpSnonWrflDnon_rolltoback"; animationCaller = "AinvPknlMstpSlayWnonDnon_medic"; animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; animationCallerSelf = ""; animationCallerSelfProne = ""; itemConsumed = 0; litter[] = {}; }; class BodyBag: fieldDressing { displayName = CSTRING(PlaceInBodyBag); displayNameProgress = CSTRING(PlacingInBodyBag); category = "advanced"; treatmentLocations[] = {"All"}; allowSelfTreatment = 0; requiredMedic = 0; treatmentTime = 15; items[] = {"ACE_bodyBag"}; condition = "!alive (_this select 1);"; callbackSuccess = QUOTE(DFUNC(actionPlaceInBodyBag)); callbackFailure = ""; callbackProgress = ""; animationPatient = ""; animationPatientUnconscious = ""; itemConsumed = 1; litter[] = {}; }; }; }; class ACE_Medical_Advanced { // Defines all the possible injury types for advanced medical class Injuries { // All the possible wounds class wounds { // Source: Scarle // Also called scrapes, they occur when the skin is rubbed away by friction against another rough surface (e.g. rope burns and skinned knees). class Abrasion { name = CSTRING(Wounds_Abrasion); selections[] = {"All"}; bleedingRate = 0.0001; pain = 0.01; causes[] = {"falling", "ropeburn", "vehiclecrash", "unknown"}; minDamage = 0.01; class Minor { name = CSTRING(Wounds_Abrasion_Minor); minDamage = 0.01; maxDamage = 0.2; bleedingRate = 0.0001; }; class Medium { name = CSTRING(Wounds_Abrasion_Medium); minDamage = 0.2; maxDamage = 0.3; bleedingRate = 0.00015; }; class Large { name = CSTRING(Wounds_Abrasion_Large); minDamage = 0.3; maxDamage = 0.5; bleedingRate = 0.0002; }; }; // Occur when an entire structure or part of it is forcibly pulled away, such as the loss of a permanent tooth or an ear lobe. Explosions, gunshots, and animal bites may cause avulsions. class Avulsions { name = CSTRING(Wounds_Avulsion); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.3; causes[] = {"explosive", "vehiclecrash", "grenade", "shell", "bullet", "backblast", "bite"}; minDamage = 0.2; class Minor { name = CSTRING(Wounds_Avulsion_Minor); minDamage = 0.2; maxDamage = 0.3; bleedingRate = 0.01; }; class Medium { name = CSTRING(Wounds_Avulsion_Medium); minDamage = 0.3; maxDamage = 0.6; bleedingRate = 0.02; }; class Large { name = CSTRING(Wounds_Avulsion_Large); minDamage = 0.5; bleedingRate = 0.05; }; }; // Also called bruises, these are the result of a forceful trauma that injures an internal structure without breaking the skin. Blows to the chest, abdomen, or head with a blunt instrument (e.g. a football or a fist) can cause contusions. class Contusion { name = CSTRING(Wounds_Contusion); selections[] = {"All"}; bleedingRate = 0.0; pain = 0.05; causes[] = {"bullet", "backblast", "punch", "vehiclecrash", "falling"}; minDamage = 0.01; maxDamage = 0.1; class Minor { name = CSTRING(Wounds_Contusion_Minor); minDamage = 0.01; maxDamage = 0.1; }; class Medium { name = CSTRING(Wounds_Contusion_Medium); minDamage = 0.1; maxDamage = 0.15; }; class Large { name = CSTRING(Wounds_Contusion_Large); minDamage = 0.15; maxDamage = 0.2; }; }; // Occur when a heavy object falls onto a person, splitting the skin and shattering or tearing underlying structures. class CrushWound { name = CSTRING(Wounds_Crush); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.1; causes[] = {"falling", "vehiclecrash", "punch", "unknown"}; minDamage = 0.1; class Minor { name = CSTRING(Wounds_Crush_Minor); minDamage = 0.1; maxDamage = 0.45; bleedingRate = 0.005; }; class Medium { name = CSTRING(Wounds_Crush_Medium); minDamage = 0.4; maxDamage = 0.7; bleedingRate = 0.007; }; class Large { name = CSTRING(Wounds_Crush_Large); minDamage = 0.6; bleedingRate = 0.0095; }; }; // Slicing wounds made with a sharp instrument, leaving even edges. They may be as minimal as a paper cut or as significant as a surgical incision. class Cut { name = CSTRING(Wounds_Cut); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.075; causes[] = {"vehiclecrash", "grenade", "explosive", "shell", "backblast", "stab", "unknown"}; minDamage = 0.1; class Minor { name = CSTRING(Wounds_Cut_Minor); minDamage = 0.1; maxDamage = 0.3; bleedingRate = 0.005; }; class Medium { name = CSTRING(Wounds_Cut_Medium); minDamage = 0.3; maxDamage = 0.65; bleedingRate = 0.02; }; class Large { name = CSTRING(Wounds_Cut_Large); minDamage = 0.65; bleedingRate = 0.05; }; }; // Also called tears, these are separating wounds that produce ragged edges. They are produced by a tremendous force against the body, either from an internal source as in childbirth, or from an external source like a punch. class Laceration { name = CSTRING(Wounds_Laceration); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.075; causes[] = {"vehiclecrash", "punch"}; minDamage = 0.01; class Minor { name = CSTRING(Wounds_Laceration_Minor); minDamage = 0.1; maxDamage = 0.5; bleedingRate = 0.005; }; class Medium { name = CSTRING(Wounds_Laceration_Medium); minDamage = 0.5; maxDamage = 0.7; bleedingRate = 0.01; }; class Large { name = CSTRING(Wounds_Laceration_Large); minDamage = 0.7; bleedingRate = 0.03; }; }; // Also called velocity wounds, they are caused by an object entering the body at a high speed, typically a bullet or small peices of shrapnel. class velocityWound { name = CSTRING(Wounds_VelocityWound); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.2; causes[] = {"bullet", "grenade","explosive", "shell", "unknown"}; minDamage = 0.15; class Minor { name = CSTRING(Wounds_VelocityWound_Minor); minDamage = 0.15; maxDamage = 0.3; bleedingRate = 0.025; }; class Medium { name = CSTRING(Wounds_VelocityWound_Medium); minDamage = 0.3; bleedingRate = 0.05; }; class Large { name = CSTRING(Wounds_VelocityWound_Large); minDamage = 0.75; bleedingRate = 0.1; }; }; // Deep, narrow wounds produced by sharp objects such as nails, knives, and broken glass. class punctureWound { name = CSTRING(Wounds_PunctureWound); selections[] = {"All"}; bleedingRate = 0.01; pain = 0.075; causes[] = {"stab", "grenade"}; minDamage = 0.01; class Minor { name = CSTRING(Wounds_PunctureWound_Minor); minDamage = 0.01; maxDamage = 0.5; bleedingRate = 0.01; }; class Medium { name = CSTRING(Wounds_PunctureWound_Medium); minDamage = 0.5; maxDamage = 0.75; bleedingRate = 0.03; }; class Large { name = CSTRING(Wounds_PunctureWound_Large); minDamage = 0.65; bleedingRate = 0.08; }; }; }; class fractures { class Femur { name = CSTRING(Wounds_Femur); selections[] = {"Head", "Torso"}; pain = 0.2; causes[] = {"Bullet", "VehicleCrash", "Backblast", "Explosive", "Shell", "Grenade"}; minDamage = 0.5; }; }; class damageTypes { thresholds[] = {{0.1, 1}}; selectionSpecific = 1; lethalDamage = 0.01; class bullet { // above damage, amount. Put the highest threshold to the left and lower the threshold with the elements to the right of it. thresholds[] = {{0.1, 1}}; selectionSpecific = 1; }; class grenade { thresholds[] = {{0.1, 3}, {0, 1}}; selectionSpecific = 0; }; class explosive { thresholds[] = {{1, 6}, {0.1, 4}, {0, 1}}; selectionSpecific = 0; }; class shell { thresholds[] = {{1, 7}, {0.1, 5}, {0, 1}}; selectionSpecific = 0; }; class vehiclecrash { thresholds[] = {{0.25, 5}, {0.05, 1}}; selectionSpecific = 0; lethalDamage = 0.2; }; class backblast { thresholds[] = {{1, 6}, {0.55, 5}, {0, 2}}; selectionSpecific = 0; lethalDamage = 1; }; class stab { thresholds[] = {{0.1, 1}}; selectionSpecific = 1; }; class punch { thresholds[] = {{0.1, 1}}; selectionSpecific = 1; }; class falling { thresholds[] = {{0.1, 1}}; selectionSpecific = 1; lethalDamage = 0.4; }; class ropeburn { thresholds[] = {{0.1, 1}}; selectionSpecific = 1; }; class unknown { thresholds[] = {{0.1, 1}}; }; }; }; class Treatment { class Bandaging { 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 = 1; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class AbrasionMinor: Abrasion {}; class AbrasionMedium: Abrasion {}; class AbrasionLarge: Abrasion {}; class Avulsions: Abrasion { effectiveness = 0.3; reopeningChance = 0.5; reopeningMinDelay = 120; reopeningMaxDelay = 200; }; class AvulsionsMinor: Avulsions {}; class AvulsionsMedium: Avulsions {}; class AvulsionsLarge: Avulsions {}; class Contusion: Abrasion { effectiveness = 1; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class ContusionMinor: Contusion {}; class ContusionMedium: Contusion {}; class ContusionLarge: Contusion {}; class CrushWound: Abrasion { effectiveness = 0.6; reopeningChance = 0.2; reopeningMinDelay = 120; reopeningMaxDelay = 200; }; class CrushWoundMinor: CrushWound {}; class CrushWoundMedium: CrushWound {}; class CrushWoundLarge: CrushWound {}; class Cut: Abrasion { effectiveness = 0.4; reopeningChance = 0.5; reopeningMinDelay = 220; reopeningMaxDelay = 260; }; class CutMinor: Cut {}; class CutMedium: Cut {}; class CutLarge: Cut {}; class Laceration: Abrasion { effectiveness = 0.7; reopeningChance = 0.3; reopeningMinDelay = 120; reopeningMaxDelay = 260; }; class LacerationMinor: Laceration {}; class LacerationMedium: Laceration {}; class LacerationLarge: Laceration {}; class velocityWound: Abrasion { effectiveness = 0.3; reopeningChance = 0.8; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; class velocityWoundMinor: velocityWound {}; class velocityWoundMedium: velocityWound {}; class velocityWoundLarge: velocityWound {}; class punctureWound: Abrasion { effectiveness = 0.5; reopeningChance = 0.8; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; class punctureWoundMinor: punctureWound {}; class punctureWoundMedium: punctureWound {}; class punctureWoundLarge: punctureWound {}; }; class PackingBandage: fieldDressing { class Abrasion { effectiveness = 1; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; 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 Contusion: Abrasion { effectiveness = 1; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class ContusionMinor: Contusion {}; class ContusionMedium: Contusion {}; class ContusionLarge: Contusion {}; class CrushWound: Abrasion { effectiveness = 0.6; reopeningChance = 0.2; reopeningMinDelay = 120; reopeningMaxDelay = 200; }; class CrushWoundMinor: CrushWound {}; class CrushWoundMedium: CrushWound {}; class CrushWoundLarge: CrushWound {}; class Cut: Abrasion { effectiveness = 0.2; reopeningChance = 0.6; reopeningMinDelay = 30; reopeningMaxDelay = 260; }; class CutMinor: Cut {}; class CutMedium: Cut {}; class CutLarge: Cut {}; class Laceration: Abrasion { effectiveness = 0.3; reopeningChance = 0.3; reopeningMinDelay = 120; reopeningMaxDelay = 260; }; class LacerationMinor: Laceration {}; class LacerationMedium: Laceration {}; class LacerationLarge: Laceration {}; class velocityWound: Abrasion { effectiveness = 1; reopeningChance = 0.5; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; class velocityWoundMinor: velocityWound {}; class velocityWoundMedium: velocityWound {}; class velocityWoundLarge: velocityWound {}; class punctureWound: Abrasion { effectiveness = 0.3; reopeningChance = 0.5; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; class punctureWoundMinor: punctureWound {}; class punctureWoundMedium: punctureWound {}; class punctureWoundLarge: punctureWound {}; }; class ElasticBandage: fieldDressing { class Abrasion { effectiveness = 1; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class AbrasionMinor: Abrasion {}; class AbrasionMedium: Abrasion {}; class AbrasionLarge: Abrasion {}; class Avulsions: Abrasion { effectiveness = 0.3; reopeningChance = 0.4; reopeningMinDelay = 120; reopeningMaxDelay = 200; }; class AvulsionsMinor: Avulsions {}; class AvulsionsMedium: Avulsions {}; class AvulsionsLarge: Avulsions {}; class Contusion: Abrasion { effectiveness = 1; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class ContusionMinor: Contusion {}; class ContusionMedium: Contusion {}; class ContusionLarge: Contusion {}; class CrushWound: Abrasion { effectiveness = 1; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class CrushWoundMinor: CrushWound {}; class CrushWoundMedium: CrushWound {}; class CrushWoundLarge: CrushWound {}; class Cut: Abrasion { effectiveness = 1; reopeningChance = 0.2; reopeningMinDelay = 10; reopeningMaxDelay = 400; }; class CutMinor: Cut {}; class CutMedium: Cut {}; class CutLarge: Cut {}; class Laceration: Abrasion { effectiveness = 1; reopeningChance = 0.3; reopeningMinDelay = 120; reopeningMaxDelay = 260; }; class LacerationMinor: Laceration {}; class LacerationMedium: Laceration {}; class LacerationLarge: Laceration {}; class velocityWound: Abrasion { effectiveness = 0.5; reopeningChance = 0.5; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; class velocityWoundMinor: velocityWound {}; class velocityWoundMedium: velocityWound {}; class velocityWoundLarge: velocityWound {}; class punctureWound: Abrasion { effectiveness = 0.85; reopeningChance = 0.5; reopeningMinDelay = 20; reopeningMaxDelay = 300; }; class punctureWoundMinor: punctureWound {}; class punctureWoundMedium: punctureWound {}; class punctureWoundLarge: punctureWound {}; }; class QuikClot: fieldDressing { class Abrasion { effectiveness = 0.7; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class AbrasionMinor: Abrasion {}; class AbrasionMedium: Abrasion {}; class AbrasionLarge: Abrasion {}; class Avulsions: Abrasion { effectiveness = 0.2; reopeningChance = 0.1; reopeningMinDelay = 300; reopeningMaxDelay = 350; }; class AvulsionsMinor: Avulsions {}; class AvulsionsMedium: Avulsions {}; class AvulsionsLarge: Avulsions {}; class Contusion: Abrasion { effectiveness = 0.7; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class ContusionMinor: Contusion {}; class ContusionMedium: Contusion {}; class ContusionLarge: Contusion {}; class CrushWound: Abrasion { effectiveness = 0.7; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class CrushWoundMinor: CrushWound {}; class CrushWoundMedium: CrushWound {}; class CrushWoundLarge: CrushWound {}; class Cut: Abrasion { effectiveness = 0.7; reopeningChance = 0.2; reopeningMinDelay = 100; reopeningMaxDelay = 400; }; class CutMinor: Cut {}; class CutMedium: Cut {}; class CutLarge: Cut {}; class Laceration: Abrasion { effectiveness = 0.7; reopeningChance = 0; reopeningMinDelay = 0; reopeningMaxDelay = 0; }; class LacerationMinor: Laceration {}; class LacerationMedium: Laceration {}; class LacerationLarge: Laceration {}; class velocityWound: Abrasion { effectiveness = 0.7; reopeningChance = 0.1; reopeningMinDelay = 200; reopeningMaxDelay = 300; }; class velocityWoundMinor: velocityWound {}; class velocityWoundMedium: velocityWound {}; class velocityWoundLarge: velocityWound {}; class punctureWound: Abrasion { effectiveness = 0.5; reopeningChance = 0.1; reopeningMinDelay = 200; reopeningMaxDelay = 300; }; class punctureWoundMinor: punctureWound {}; class punctureWoundMedium: punctureWound {}; class punctureWoundLarge: punctureWound {}; }; }; 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, seconds} hrIncreaseLow[] = {0, 0, 0}; hrIncreaseNormal[] = {0, 0, 0}; hrIncreaseHigh[] = {0, 0, 0}; // Callback once the heart rate values have been added. hrCallback = ""; // How long until this medication has disappeared timeInSystem = 120; // How many of this type of medication can be in the system before the patient overdoses? maxDose = 4; // Function to execute upon overdose. Arguments passed to call back are 0: unit , 1: medicationClassName 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 = 15; hrIncreaseLow[] = {-10, -20, 35}; hrIncreaseNormal[] = {-10, -30, 35}; hrIncreaseHigh[] = {-10, -35, 50}; timeInSystem = 900; maxDose = 4; inCompatableMedication[] = {}; viscosityChange = 10; }; class Epinephrine { painReduce = 0; hrIncreaseLow[] = {10, 20, 30}; hrIncreaseNormal[] = {10, 50, 20}; hrIncreaseHigh[] = {10, 40, 10}; timeInSystem = 120; maxDose = 10; inCompatableMedication[] = {}; }; class Atropine { painReduce = 0; hrIncreaseLow[] = {-5, -7, 15}; hrIncreaseNormal[] = {-10, -30, 20}; hrIncreaseHigh[] = {-10, -20, 10}; timeInSystem = 120; maxDose = 6; inCompatableMedication[] = {}; }; class PainKillers { painReduce = 0.7; timeInSystem = 120; maxDose = 10; inCompatableMedication[] = {}; 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; }; }; }; };