diff --git a/addons/medical/$PBOPREFIX$ b/addons/medical/$PBOPREFIX$ index 72c25436dd..15ed1394ed 100644 --- a/addons/medical/$PBOPREFIX$ +++ b/addons/medical/$PBOPREFIX$ @@ -1 +1 @@ -z\ace\addons\medical +z\ace\addons\medical \ No newline at end of file diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp deleted file mode 100644 index 5fa1a6e760..0000000000 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ /dev/null @@ -1,280 +0,0 @@ -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; - maxDamage = 0.75; - 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}}; - }; - }; - }; -}; diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp deleted file mode 100644 index a785c2cad5..0000000000 --- a/addons/medical/ACE_Settings.hpp +++ /dev/null @@ -1,307 +0,0 @@ -class ACE_Settings { - class GVAR(level) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_level_DisplayName); - description = CSTRING(MedicalSettings_level_Description); - value = 1; - typeName = "SCALAR"; - values[] = {"Disabled", "Basic", "Advanced"}; - }; - class GVAR(medicSetting) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_medicSetting_DisplayName); - description = CSTRING(MedicalSettings_medicSetting_Description); - value = 1; - typeName = "SCALAR"; - values[] = {"Disabled", "Normal", "Advanced"}; - }; - class GVAR(increaseTrainingInLocations) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_increaseTrainingInLocations_DisplayName); - description = CSTRING(MedicalSettings_increaseTrainingInLocations_Description); - value = 0; - typeName = "BOOL"; - }; - class GVAR(enableFor) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName); - description = CSTRING(AdvancedMedicalSettings_enableFor_Description); - value = 0; - typeName = "SCALAR"; - values[] = {"Players only", "Players and AI"}; - }; - class GVAR(enableOverdosing) { - category = CSTRING(Category_Medical); - typeName = "BOOL"; - value = 1; - }; - class GVAR(bleedingCoefficient) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_bleedingCoefficient_DisplayName); - description = CSTRING(MedicalSettings_bleedingCoefficient_Description); - typeName = "SCALAR"; - value = 1; - }; - class GVAR(painCoefficient) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_painCoefficient_DisplayName); - description = CSTRING(MedicalSettings_painCoefficient_Description); - typeName = "SCALAR"; - value = 1; - }; - class GVAR(enableAirway) { - category = CSTRING(Category_Medical); - typeName = "BOOL"; - value = false; - }; - class GVAR(enableFractures) { - category = CSTRING(Category_Medical); - typeName = "BOOL"; - value = false; - }; - class GVAR(enableAdvancedWounds) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_DisplayName); - description = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_Description); - typeName = "BOOL"; - value = false; - }; - class GVAR(enableVehicleCrashes) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_DisplayName); - description = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_Description); - typeName = "BOOL"; - value = 1; - }; - class GVAR(enableScreams) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_enableScreams_DisplayName); - description = CSTRING(MedicalSettings_enableScreams_Description); - typeName = "BOOL"; - value = 1; - }; - class GVAR(playerDamageThreshold) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_playerDamageThreshold_DisplayName); - description = CSTRING(MedicalSettings_playerDamageThreshold_Description); - typeName = "SCALAR"; - value = 1; - }; - class GVAR(AIDamageThreshold) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_AIDamageThreshold_DisplayName); - description = CSTRING(MedicalSettings_AIDamageThreshold_Description); - typeName = "SCALAR"; - value = 1; - }; - class GVAR(enableUnconsciousnessAI) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_enableUnconsciousnessAI_DisplayName); - description = CSTRING(MedicalSettings_enableUnconsciousnessAI_Description); - value = 1; - typeName = "SCALAR"; - values[] = {"Disabled", "50/50", "Enabled"}; - }; - class GVAR(remoteControlledAI) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_remoteControlledAI_DisplayName); - description = CSTRING(MedicalSettings_remoteControlledAI_Description); - typeName = "BOOL"; - value = 1; - }; - class GVAR(preventInstaDeath) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_preventInstaDeath_DisplayName); - description = CSTRING(MedicalSettings_preventInstaDeath_Description); - typeName = "BOOL"; - value = 0; - }; - class GVAR(enableRevive) { - category = CSTRING(Category_Medical); - displayName = CSTRING(ReviveSettings_enableRevive_DisplayName); - description = CSTRING(ReviveSettings_enableRevive_Description); - typeName = "SCALAR"; - value = 0; - values[] = {"Disabled", "Players only", "Players and AI"}; - }; - class GVAR(maxReviveTime) { - category = CSTRING(Category_Medical); - displayName = CSTRING(ReviveSettings_maxReviveTime_DisplayName); - description = CSTRING(ReviveSettings_maxReviveTime_Description); - typeName = "SCALAR"; - value = 120; - }; - class GVAR(amountOfReviveLives) { - category = CSTRING(Category_Medical); - displayName = CSTRING(ReviveSettings_amountOfReviveLives_DisplayName); - description = CSTRING(ReviveSettings_amountOfReviveLives_Description); - typeName = "SCALAR"; - value = -1; - }; - class GVAR(allowDeadBodyMovement) { - category = CSTRING(Category_Medical); - typeName = "BOOL"; - value = 0; - }; - class GVAR(allowLitterCreation) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_allowLitterCreation_DisplayName); - description = CSTRING(MedicalSettings_allowLitterCreation_Description); - typeName = "BOOL"; - value = 1; - }; - class GVAR(litterSimulationDetail) { - category = CSTRING(Category_Medical); - displayName = CSTRING(litterSimulationDetail); - description = CSTRING(litterSimulationDetail_Desc); - typeName = "SCALAR"; - - value = 3; - values[] = {"Off", "Low", "Medium", "High", "Ultra"}; - _values[] = { 0, 50, 100, 1000, 5000 }; - - isClientSettable = 1; - }; - class GVAR(litterCleanUpDelay) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_litterCleanUpDelay_DisplayName); - description = CSTRING(MedicalSettings_litterCleanUpDelay_Description); - typeName = "SCALAR"; - value = 0; - }; - class GVAR(medicSetting_basicEpi) { - category = CSTRING(Category_Medical); - displayName = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_DisplayName); - description = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_Description); - typeName = "SCALAR"; - value = 1; - values[] = {"Anyone", "Medics only", "Doctors only"}; - }; - class GVAR(medicSetting_PAK) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_DisplayName); - description = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_Description); - typeName = "SCALAR"; - value = 1; - values[] = {"Anyone", "Medics only", "Doctors only"}; - }; - class GVAR(medicSetting_SurgicalKit) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName); - description = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_Description); - typeName = "SCALAR"; - value = 1; - values[] = {"Anyone", "Medics only", "Doctors only"}; - }; - class GVAR(consumeItem_PAK) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName); - description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description); - typeName = "SCALAR"; - value = 0; - values[] = {"No", "Yes"}; - }; - class GVAR(consumeItem_SurgicalKit) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName); - description = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_Description); - typeName = "SCALAR"; - value = 0; - values[] = {"No", "Yes"}; - }; - class GVAR(useLocation_basicEpi) { - category = CSTRING(Category_Medical); - displayName = CSTRING(BasicMedicalSettings_useLocation_basicEpi_DisplayName); - description = CSTRING(BasicMedicalSettings_useLocation_basicEpi_Description); - 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); - displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName); - description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description); - typeName = "SCALAR"; - value = 3; - values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)}; - }; - class GVAR(useLocation_SurgicalKit) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName); - description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description); - typeName = "SCALAR"; - value = 2; - values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)}; - }; - class GVAR(useCondition_PAK) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName); - description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description); - typeName = "SCALAR"; - value = 0; - values[] = {"Anytime", "Stable"}; - }; - class GVAR(useCondition_SurgicalKit) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName); - description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description); - typeName = "SCALAR"; - value = 0; - values[] = {"Anytime", "Stable"}; - }; - class GVAR(keepLocalSettingsSynced) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_keepLocalSettingsSynced_DisplayName); - description = CSTRING(MedicalSettings_keepLocalSettingsSynced_Description); - typeName = "BOOL"; - value = 1; - }; - class GVAR(healHitPointAfterAdvBandage) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName); - description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description); - typeName = "BOOL"; - value = 0; - }; - class GVAR(painIsOnlySuppressed) { - category = CSTRING(Category_Medical); - displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName); - description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description); - typeName = "BOOL"; - value = 1; - }; - class GVAR(painEffectType) { - category = CSTRING(Category_Medical); - displayName = CSTRING(painEffectType); - typeName = "SCALAR"; - value = 0; - values[] = {CSTRING(painEffect_Flash), CSTRING(painEffect_Chroma)}; - isClientSettable = 1; - }; - class GVAR(allowUnconsciousAnimationOnTreatment) { - category = CSTRING(Category_Medical); - typeName = "BOOL"; - value = 0; - }; - class GVAR(moveUnitsFromGroupOnUnconscious) { - category = CSTRING(Category_Medical); - typeName = "BOOL"; - value = 0; - }; - class GVAR(menuTypeStyle) { - category = CSTRING(Category_Medical); - displayName = CSTRING(menuTypeDisplay); - description = CSTRING(menuTypeDescription); - typeName = "SCALAR"; - value = 0; - values[] = {CSTRING(useSelection), CSTRING(useRadial), "Disabled"}; - isClientSettable = 1; - }; - class GVAR(delayUnconCaptive) { - category = CSTRING(Category_Medical); - displayName = CSTRING(MedicalSettings_delayUnconCaptive_DisplayName); - description = CSTRING(MedicalSettings_delayUnconCaptive_Description); - typeName = "SCALAR"; - value = 3; - }; -}; diff --git a/addons/medical/CfgActions.hpp b/addons/medical/CfgActions.hpp deleted file mode 100644 index ccaac6f75b..0000000000 --- a/addons/medical/CfgActions.hpp +++ /dev/null @@ -1,6 +0,0 @@ -class CfgActions { - class None; - class Heal: None { - show = 0; - }; -}; \ No newline at end of file diff --git a/addons/medical/CfgEden.hpp b/addons/medical/CfgEden.hpp deleted file mode 100644 index a9b4594b66..0000000000 --- a/addons/medical/CfgEden.hpp +++ /dev/null @@ -1,70 +0,0 @@ -class ctrlToolbox; - -class Cfg3DEN { - class Attributes { - class Default; - class Title: Default { - class Controls { - class Title; - }; - }; - class GVAR(isMedicControl): Title { - attributeLoad = "(_this controlsGroupCtrl 100) lbsetcursel (((_value + 1) min 3) max 0);"; - attributeSave = "(missionnamespace getvariable ['ace_isMeidc_temp',0]) - 1;"; - class Controls: Controls { - class Title: Title{}; - class Value: ctrlToolbox { - idc = 100; - style = "0x02"; - x = "48 * (pixelW * pixelGrid * 0.25)"; - w = "82 * (pixelW * pixelGrid * 0.25)"; - h = "5 * (pixelH * pixelGrid * 0.25)"; - rows = 1; - columns = 4; - strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignMedicRoles_role_none), CSTRING(AssignMedicRoles_role_medic), CSTRING(AssignMedicRoles_role_doctorShort)}; - onToolboxSelChanged = "missionnamespace setvariable ['ace_isMeidc_temp',_this select 1];"; - }; - }; - }; - }; - class Object { - class AttributeCategories { - class ace_attributes { - class Attributes { - class ace_isMedic { - property = QUOTE(ace_isMedic); - control = QGVAR(isMedicControl); - displayName = CSTRING(AssignMedicRoles_role_DisplayName); - tooltip = CSTRING(Attributes_isMedic_Description); - expression = QUOTE(if (_value != -1) then {_this setVariable [ARR_3(QUOTE(QGVAR(medicClass)),_value, true)];};); - typeName = "NUMBER"; - condition = "objectBrain"; - defaultValue = "-1"; - }; - class ace_isMedicalVehicle { - property = QUOTE(ace_isMedicalVehicle); - value = 0; - control = "CheckboxNumber"; - displayName = CSTRING(AssignMedicVehicle_enabled_DisplayName); - tooltip = CSTRING(Attributes_isMedicalVehicle_Description); - expression = QUOTE(_this setVariable [ARR_3(QUOTE(QGVAR(medicClass)),_value, true)];); - typeName = "NUMBER"; - condition = "objectVehicle"; - defaultValue = 0; - }; - class ace_isMedicalFacility { - property = QUOTE(ace_isMedicalFacility); - value = 0; - control = "Checkbox"; - displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName); - tooltip = CSTRING(AssignMedicalFacility_enabled_Description); - expression = QUOTE(_this setVariable [ARR_3(QUOTE(QGVAR(isMedicalFacility)),_value, true)];); - typeName = "BOOL"; - condition = "(1 - objectBrain) * (1 - objectVehicle)"; - defaultValue = "false"; - }; - }; - }; - }; - }; -}; diff --git a/addons/medical/CfgEventHandlers.hpp b/addons/medical/CfgEventHandlers.hpp index ab7c1868ab..5c45c6e9b9 100644 --- a/addons/medical/CfgEventHandlers.hpp +++ b/addons/medical/CfgEventHandlers.hpp @@ -1,4 +1,3 @@ - class Extended_PreStart_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_preStart)); @@ -11,45 +10,10 @@ class Extended_PreInit_EventHandlers { }; }; -class Extended_PostInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_postInit)); - }; -}; - class Extended_Init_EventHandlers { class CAManBase { class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_init)); - }; - }; - class ACE_bodyBagObject { - class ADDON { - init = QUOTE(_this call DEFUNC(dragging,initObject)); - }; - }; -}; - -class Extended_Respawn_EventHandlers { - class CAManBase { - class ADDON { - respawn = QUOTE(call COMPILE_FILE(XEH_respawn)); - }; - }; -}; - -class Extended_Killed_EventHandlers { - class CAManBase { - class ADDON { - killed = QUOTE(call FUNC(handleKilled)); - }; - }; -}; - -class Extended_Local_EventHandlers { - class CAManBase { - class ADDON { - local = QUOTE(call FUNC(handleLocal)); + init = QUOTE(call FUNC(install)); }; }; }; diff --git a/addons/medical/CfgFactionClasses.hpp b/addons/medical/CfgFactionClasses.hpp deleted file mode 100644 index 0ca922c8a6..0000000000 --- a/addons/medical/CfgFactionClasses.hpp +++ /dev/null @@ -1,6 +0,0 @@ -class CfgFactionClasses { - class NO_CATEGORY; - class ADDON: NO_CATEGORY { - displayName = CSTRING(Category_DisplayName); - }; -}; diff --git a/addons/medical/CfgSounds.hpp b/addons/medical/CfgSounds.hpp deleted file mode 100644 index 9cc5faedf9..0000000000 --- a/addons/medical/CfgSounds.hpp +++ /dev/null @@ -1,37 +0,0 @@ -class CfgSounds { - class ACE_heartbeat_fast_1 { - name = "ACE_heartbeat_fast_1"; - sound[] = {QPATHTOF(sounds\heart_beats\fast_1.wav), "db+1", 1}; - titles[] = {}; - }; - class ACE_heartbeat_fast_2 { - name = "ACE_heartbeat_fast_2"; - sound[] = {QPATHTOF(sounds\heart_beats\fast_2.wav), "db+1", 1}; - titles[] = {}; - }; - class ACE_heartbeat_fast_3 { - name = "ACE_heartbeat_fast_3"; - sound[] = {QPATHTOF(sounds\heart_beats\fast_3.wav), "db+1", 1}; - titles[] = {}; - }; - class ACE_heartbeat_norm_1 { - name = "ACE_heartbeat_norm_1"; - sound[] = {QPATHTOF(sounds\heart_beats\norm_1.wav), "db+1", 1}; - titles[] = {}; - }; - class ACE_heartbeat_norm_2 { - name = "ACE_heartbeat_norm_2"; - sound[] = {QPATHTOF(sounds\heart_beats\norm_2.wav), "db+1", 1}; - titles[] = {}; - }; - class ACE_heartbeat_slow_1 { - name = "ACE_heartbeat_slow_1"; - sound[] = {QPATHTOF(sounds\heart_beats\slow_1.wav), "db+1", 1}; - titles[] = {}; - }; - class ACE_heartbeat_slow_2 { - name = "ACE_heartbeat_slow_2"; - sound[] = {QPATHTOF(sounds\heart_beats\slow_2.wav), "db+1", 1}; - titles[] = {}; - }; -}; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp deleted file mode 100644 index 8b97b7b595..0000000000 --- a/addons/medical/CfgVehicles.hpp +++ /dev/null @@ -1,872 +0,0 @@ - -#define MEDICAL_ACTION_DISTANCE 1.75 - -class CBA_Extended_EventHandlers; - -class CfgVehicles { - class Logic; - class Module_F: Logic { - class ArgumentsBaseUnits { - }; - }; - - class ACE_Module; - class ACE_moduleMedicalSettings: ACE_Module { - scope = 2; - displayName = CSTRING(MedicalSettings_Module_DisplayName); - icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); - category = "ACE_medical"; - function = QUOTE(DFUNC(moduleMedicalSettings)); - functionPriority = 1; - isGlobal = 1; - isSingular = 1; - isTriggerActivated = 0; - author = ECSTRING(common,ACETeam); - - class Arguments { - class level { - displayName = CSTRING(MedicalSettings_level_DisplayName); - description = CSTRING(MedicalSettings_level_Description); - typeName = "NUMBER"; - class values { - class normal { - name = CSTRING(MedicalSettings_basic); - value = 1; - default = 1; - }; - class full { - name = CSTRING(MedicalSettings_advanced); - value = 2; - }; - }; - }; - class medicSetting { - displayName = CSTRING(MedicalSettings_medicSetting_DisplayName); - description = CSTRING(MedicalSettings_medicSetting_Description); - typeName = "NUMBER"; - class values { - class disable { - name = CSTRING(MedicalSettings_medicSetting_disable); - value = 0; - }; - class normal { - name = CSTRING(MedicalSettings_basic); - value = 1; - default = 1; - }; - class full { - name = CSTRING(MedicalSettings_advanced); - value = 2; - }; - }; - }; - class increaseTrainingInLocations { - displayName = CSTRING(MedicalSettings_increaseTrainingInLocations_DisplayName); - description = CSTRING(MedicalSettings_increaseTrainingInLocations_Description); - typeName = "BOOL"; - defaultValue = 0; - }; - class allowLitterCreation { - displayName = CSTRING(MedicalSettings_allowLitterCreation_DisplayName); - description = CSTRING(MedicalSettings_allowLitterCreation_Description); - typeName = "BOOL"; - defaultValue = 1; - }; - class litterCleanUpDelay { - displayName = CSTRING(MedicalSettings_litterCleanUpDelay_DisplayName); - description = CSTRING(MedicalSettings_litterCleanUpDelay_Description); - typeName = "NUMBER"; - defaultValue = 1800; - }; - class enableScreams { - displayName = CSTRING(MedicalSettings_enableScreams_DisplayName); - description = CSTRING(MedicalSettings_enableScreams_Description); - typeName = "BOOL"; - defaultValue = 1; - }; - class playerDamageThreshold { - displayName = CSTRING(MedicalSettings_playerDamageThreshold_DisplayName); - description = CSTRING(MedicalSettings_playerDamageThreshold_Description); - typeName = "NUMBER"; - defaultValue = 1; - }; - class AIDamageThreshold { - displayName = CSTRING(MedicalSettings_AIDamageThreshold_DisplayName); - description = CSTRING(MedicalSettings_AIDamageThreshold_Description); - typeName = "NUMBER"; - defaultValue = 1; - }; - class enableUnconsciousnessAI { - displayName = CSTRING(MedicalSettings_enableUnconsciousnessAI_DisplayName); - description = CSTRING(MedicalSettings_enableUnconsciousnessAI_Description); - typeName = "NUMBER"; - class values { - class disable { - name = ECSTRING(common,Disabled); - value = 0; - }; - class normal { - name = "50/50"; - value = 1; - default = 1; - }; - class full { - name = ECSTRING(common,Enabled); - value = 2; - }; - }; - }; - class remoteControlledAI { - displayName = CSTRING(MedicalSettings_remoteControlledAI_DisplayName); - description = CSTRING(MedicalSettings_remoteControlledAI_Description); - typeName = "BOOL"; - defaultValue = 1; - }; - class preventInstaDeath { - displayName = CSTRING(MedicalSettings_preventInstaDeath_DisplayName); - description = CSTRING(MedicalSettings_preventInstaDeath_Description); - typeName = "BOOL"; - defaultValue = 0; - }; - class bleedingCoefficient { - displayName = CSTRING(MedicalSettings_bleedingCoefficient_DisplayName); - description = CSTRING(MedicalSettings_bleedingCoefficient_Description); - typeName = "NUMBER"; - defaultValue = 1; - }; - class painCoefficient { - displayName = CSTRING(MedicalSettings_painCoefficient_DisplayName); - description = CSTRING(MedicalSettings_painCoefficient_Description); - typeName = "NUMBER"; - defaultValue = 1; - }; - class keepLocalSettingsSynced { - displayName = CSTRING(MedicalSettings_keepLocalSettingsSynced_DisplayName); - description = CSTRING(MedicalSettings_keepLocalSettingsSynced_Description); - typeName = "BOOL"; - defaultValue = 1; - }; - }; - - class ModuleDescription { - description = CSTRING(MedicalSettings_Module_Description); - sync[] = {}; - }; - }; - class ACE_moduleBasicMedicalSettings: ACE_Module { - scope = 2; - displayName = CSTRING(BasicMedicalSettings_Module_DisplayName); - icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); - category = "ACE_medical"; - function = QFUNC(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); - icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); - category = "ACE_medical"; - function = QFUNC(moduleAdvancedMedicalSettings); - functionPriority = 10; - isGlobal = 2; - isSingular = 1; - isTriggerActivated = 0; - isDisposable = 0; - author = ECSTRING(common,ACETeam); - - class Arguments { - class enableFor { - displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName); - description = CSTRING(AdvancedMedicalSettings_enableFor_Description); - typeName = "NUMBER"; - class values { - class playableUnits { - name = CSTRING(playeronly); - value = 0; - default = 1; - }; - class playableUnitsAndAI { - name = CSTRING(playersandai); - value = 1; - }; - }; - }; - class enableAdvancedWounds { - displayName = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_DisplayName); - description = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_Description); - typeName = "BOOL"; - defaultValue = 0; - }; - class enableVehicleCrashes { - displayName = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_DisplayName); - description = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_Description); - typeName = "BOOL"; - defaultValue = 1; - }; - class medicSetting_PAK { - displayName = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_DisplayName); - description = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_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 consumeItem_PAK { - displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName); - description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description); - typeName = "NUMBER"; - class values { - class keep { name = ECSTRING(common,No); value = 0; }; - class remove { name = ECSTRING(common,Yes); value = 1; default = 1; }; - }; - }; - class useCondition_PAK { - displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName); - description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description); - typeName = "NUMBER"; - class values { - class AnyTime { name = CSTRING(AnyTime); value = 0; }; - class Stable { name = CSTRING(Stable); value = 1; default = 1; }; - }; - }; - class useLocation_PAK { - displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName); - description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description); - typeName = "NUMBER"; - class values { - class anywhere { name = CSTRING(AdvancedMedicalSettings_anywhere); value = 0; }; - class vehicle { name = CSTRING(AdvancedMedicalSettings_vehicle); value = 1; }; - class facility { name = CSTRING(AdvancedMedicalSettings_facility); value = 2; }; - class vehicleAndFacility { name = CSTRING(AdvancedMedicalSettings_vehicleAndFacility); value = 3; default = 1; }; - class disabled { name = ECSTRING(common,Disabled); value = 4;}; - }; - }; - class medicSetting_SurgicalKit: medicSetting_PAK { - displayName = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName); - description = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_Description); - }; - class consumeItem_SurgicalKit: consumeItem_PAK { - displayName = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName); - description = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_Description); - }; - class useLocation_SurgicalKit: useLocation_PAK { - displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName); - description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description); - }; - class useCondition_SurgicalKit: useCondition_PAK { - displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName); - description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description); - class values { - class AnyTime { name = CSTRING(AnyTime); value = 0; default = 1; }; - class Stable { name = CSTRING(Stable); value = 1; }; - }; - }; - class healHitPointAfterAdvBandage { - displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName); - description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description); - typeName = "BOOL"; - defaultValue = 0; - }; - class painIsOnlySuppressed { - displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName); - description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description); - typeName = "BOOL"; - defaultValue = 1; - }; - }; - - class ModuleDescription { - description = CSTRING(AdvancedMedicalSettings_Module_Description); - sync[] = {}; - }; - }; - - class ACE_moduleReviveSettings: ACE_Module { - scope = 2; - displayName = CSTRING(ReviveSettings_Module_DisplayName); - icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); - category = "ACE_medical"; - function = QUOTE(DFUNC(moduleReviveSettings)); - functionPriority = 1; - isGlobal = 1; - isSingular = 1; - isTriggerActivated = 0; - author = ECSTRING(common,ACETeam); - - class Arguments { - class enableRevive { - displayName = CSTRING(ReviveSettings_enableRevive_DisplayName); - description = CSTRING(ReviveSettings_enableRevive_Description); - typeName = "NUMBER"; - defaultValue = 0; - class values { - class disable { name = ECSTRING(common,Disabled); value = 0; default = 1;}; - class playerOnly { name = CSTRING(playeronly); value = 1; }; - class playerAndAI { name = CSTRING(playersandai); value = 2; }; - }; - }; - class maxReviveTime { - displayName = CSTRING(ReviveSettings_maxReviveTime_DisplayName); - description = CSTRING(ReviveSettings_maxReviveTime_Description); - typeName = "NUMBER"; - defaultValue = 120; - }; - class amountOfReviveLives { - displayName = CSTRING(ReviveSettings_amountOfReviveLives_DisplayName); - description = CSTRING(ReviveSettings_amountOfReviveLives_Description); - typeName = "NUMBER"; - defaultValue = -1; - }; - }; - - class ModuleDescription { - description = CSTRING(ReviveSettings_Module_Description); - sync[] = {}; - }; - }; - - class ACE_moduleAssignMedicRoles: Module_F { - scope = 2; - displayName = CSTRING(AssignMedicRoles_Module_DisplayName); - icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); - category = "ACE_medical"; - function = QFUNC(moduleAssignMedicRoles); - functionPriority = 10; - isGlobal = 2; - isTriggerActivated = 0; - isDisposable = 0; - author = ECSTRING(common,ACETeam); - - class Arguments { - class EnableList { - displayName = CSTRING(AssignMedicRoles_EnableList_DisplayName); - description = CSTRING(AssignMedicRoles_EnableList_Description); - defaultValue = ""; - typeName = "STRING"; - }; - class role { - displayName = CSTRING(AssignMedicRoles_role_DisplayName); - description = CSTRING(AssignMedicRoles_role_Description); - typeName = "NUMBER"; - class values { - class none { - name = CSTRING(AssignMedicRoles_role_none); - value = 0; - }; - class medic { - name = CSTRING(AssignMedicRoles_role_medic); - value = 1; - default = 1; - }; - class doctor { - name = CSTRING(AssignMedicRoles_role_doctor); - value = 2; - }; - }; - }; - }; - - class ModuleDescription { - description = CSTRING(AssignMedicRoles_Module_Description); - sync[] = {}; - }; - }; - - class ACE_moduleAssignMedicVehicle: Module_F { - scope = 2; - displayName = CSTRING(AssignMedicVehicle_Module_DisplayName); - icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); - category = "ACE_medical"; - function = QFUNC(moduleAssignMedicalVehicle); - functionPriority = 10; - isGlobal = 2; - isTriggerActivated = 0; - isDisposable = 0; - author = ECSTRING(common,ACETeam); - - class Arguments { - class EnableList { - displayName = CSTRING(AssignMedicVehicle_EnableList_DisplayName); - description = CSTRING(AssignMedicVehicle_EnableList_Description); - defaultValue = ""; - typeName = "STRING"; - }; - class enabled { - displayName = CSTRING(AssignMedicVehicle_enabled_DisplayName); - description = CSTRING(AssignMedicVehicle_enabled_Description); - - typeName = "NUMBER"; - class values { - class none { - name = ECSTRING(common,No); - value = 0; - }; - class medic { - name = ECSTRING(common,Yes); - value = 1; - default = 1; - }; - }; - }; - }; - - class ModuleDescription { - description = CSTRING(AssignMedicVehicle_Module_Description); - sync[] = {}; - }; - }; - - class ACE_moduleAssignMedicalFacility: Module_F { - scope = 2; - displayName = CSTRING(AssignMedicalFacility_Module_DisplayName); - icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); - category = "ACE_medical"; - function = QFUNC(moduleAssignMedicalFacility); - functionPriority = 10; - isGlobal = 2; - isTriggerActivated = 0; - isDisposable = 0; - author = ECSTRING(common,ACETeam); - - class Arguments { - class enabled { - displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName); - description = CSTRING(AssignMedicalFacility_enabled_Description); - typeName = "BOOL"; - }; - }; - - class ModuleDescription { - description = CSTRING(AssignMedicalFacility_Module_Description); - sync[] = {}; - }; - }; - - #define ARM_LEG_ARMOR_DEFAULT 1 - #define ARM_LEG_ARMOR_BETTER 1 - #define ARM_LEG_ARMOR_CSAT 1 - - #define ADD_ACE_HITPOINTS(ARM_ARMOR,LEG_ARMOR) \ - class HitLeftArm { \ - armor = ARM_ARMOR; \ - material = -1; \ - name = "hand_l"; \ - passThrough = 1; \ - radius = 0.08; \ - explosionShielding = 1; \ - visual = "injury_hands"; \ - minimalHit = 0.01; \ - }; \ - class HitRightArm: HitLeftArm { \ - name = "hand_r"; \ - }; \ - class HitLeftLeg { \ - armor = LEG_ARMOR; \ - material = -1; \ - name = "leg_l"; \ - passThrough = 1; \ - radius = 0.1; \ - explosionShielding = 1; \ - visual = "injury_legs"; \ - minimalHit = 0.01; \ - }; \ - class HitRightLeg: HitLeftLeg { \ - name = "leg_r"; \ - }; - - class Man; - class CAManBase: Man { - class HitPoints { - ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_DEFAULT,ARM_LEG_ARMOR_DEFAULT) - }; - }; - - class SoldierWB: CAManBase {}; - class SoldierEB: CAManBase {}; - class SoldierGB: CAManBase {}; - - class B_Soldier_base_F: SoldierWB {}; - - class B_Soldier_04_f: B_Soldier_base_F { - class HitPoints { - ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER) - }; - }; - - class B_Soldier_05_f: B_Soldier_base_F { - class HitPoints { - ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER) - }; - }; - - class I_Soldier_base_F: SoldierGB {}; - - class I_Soldier_03_F: I_Soldier_base_F { - class HitPoints { - ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER) - }; - }; - - class I_Soldier_04_F: I_Soldier_base_F { - class HitPoints { - ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER) - }; - }; - - class O_Soldier_base_F: SoldierEB { - class HitPoints { - ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER) - }; - }; - - class O_Soldier_diver_base_F: O_Soldier_base_F { - class HitPoints { - ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER) - }; - }; - - class O_Soldier_02_F: O_Soldier_base_F { - class HitPoints { - ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER) - }; - }; - - class O_officer_F: O_Soldier_base_F { - class HitPoints { - ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER) - }; - }; - - //These VR guys already have limb hitpoints that we should be able to use - //Note: the selections are a little weird, eg: class leg_l {name = "leg_l";}; - // class B_Soldier_VR_F: B_Soldier_base_F { { - // class HitPoints { - //Has class hand_l, hand_r, leg_l, leg_r Hitpoints already - // }; - // }; - // class O_Soldier_VR_F: O_Soldier_base_F { { - // class HitPoints { - //Has class hand_l, hand_r, leg_l, leg_r Hitpoints already - // }; - // }; - // class I_Soldier_VR_F: I_Soldier_base_F { { - // class HitPoints { - //Has class hand_l, hand_r, leg_l, leg_r Hitpoints already - // }; - // }; - // class C_Soldier_VR_F: C_man_1 { - // class HitPoints { - //Has class hand_l, hand_r, leg_l, leg_r Hitpoints already - // }; - // }; - // class O_Protagonist_VR_F: O_Soldier_base_F { - // class HitPoints { - //Has class hand_l, hand_r, leg_l, leg_r Hitpoints already - // }; - // }; - - class MapBoard_altis_F; - class ACE_bodyBagObject: MapBoard_altis_F { - class EventHandlers { - class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; - }; - - scope = 1; - scopeCurator = 2; - side = -1; - model = QPATHTOEF(apl,bodybag.p3d); - icon = ""; - displayName = CSTRING(Bodybag_Display); - EGVAR(dragging,canDrag) = 1; - EGVAR(dragging,dragPosition)[] = {0,1.2,0}; - EGVAR(dragging,dragDirection) = 0; - EGVAR(cargo,size) = 1; - EGVAR(cargo,canLoad) = 1; - class ACE_Actions { - class ACE_MainActions { - displayName = ECSTRING(interaction,MainAction); - distance = 5; - condition = QUOTE(true); - statement = ""; - icon = "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa"; - selection = ""; - }; - }; - }; - - // Medical litter classes - class Thing; - class ACE_MedicalLitterBase: Thing { - scope = 1; - scopeCurator = 0; - displayName = " "; - destrType = "DestructNo"; - model = QPATHTOF(data\littergeneric.p3d); - }; - class ACE_MedicalLitter_clean: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_clean.p3d); - }; - class ACE_MedicalLitter_bandage1: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_bandages1.p3d); - }; - class ACE_MedicalLitter_bandage2: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_bandages2.p3d); - }; - class ACE_MedicalLitter_bandage3: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_bandages3.p3d); - }; - class ACE_MedicalLitter_packingBandage: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_packingBandage.p3d); - }; - class ACE_MedicalLitter_gloves: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_gloves.p3d); - }; - class ACE_MedicalLitter_adenosine: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_adenosine.p3d); - }; - class ACE_MedicalLitter_atropine: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_atropine.p3d); - }; - class ACE_MedicalLitter_epinephrine: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_epinephrine.p3d); - }; - class ACE_MedicalLitter_morphine: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_morphine.p3d); - }; - class ACE_MedicalLitter_QuickClot: ACE_MedicalLitterBase { - model = QPATHTOF(data\littergeneric_Quikclot.p3d); - }; - class Item_Base_F; - class ACE_fieldDressingItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Bandage_Basic_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_fieldDressing,1); - }; - }; - class ACE_packingBandageItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Packing_Bandage_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_packingBandage,1); - }; - }; - class ACE_elasticBandageItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Bandage_Elastic_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_elasticBandage,1); - }; - }; - class ACE_tourniquetItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Tourniquet_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_tourniquet,1); - }; - }; - class ACE_morphineItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Morphine_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - 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; - displayName = CSTRING(Atropine_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_atropine,1); - }; - }; - class ACE_epinephrineItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Epinephrine_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_epinephrine,1); - }; - }; - class ACE_plasmaIVItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Plasma_IV); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_plasmaIV,1); - }; - }; - - class ACE_bloodIVItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Blood_IV); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_bloodIV,1); - }; - }; - class ACE_salineIVItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Saline_IV); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_salineIV,1); - }; - }; - class ACE_quikClotItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(QuikClot_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_quikclot,1); - }; - }; - class ACE_personalAidKitItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Aid_Kit_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_personalAidKit,1); - }; - }; - class ACE_surgicalKitItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(SurgicalKit_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_surgicalKit,1); - }; - }; - class ACE_bodyBagItem: Item_Base_F { - scope = 2; - scopeCurator = 2; - displayName = CSTRING(Bodybag_Display); - author = ECSTRING(common,ACETeam); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_bodyBag,1); - }; - }; - - class NATO_Box_Base; - class ACE_medicalSupplyCrate: NATO_Box_Base { - scope = 2; - scopeCurator = 2; - accuracy = 1000; - displayName = CSTRING(medicalSupplyCrate); - model = QPATHTOF(data\ace_medcrate.p3d); - author = ECSTRING(common,ACETeam); - class TransportItems { - MACRO_ADDITEM(ACE_fieldDressing,50); - MACRO_ADDITEM(ACE_morphine,25); - MACRO_ADDITEM(ACE_epinephrine,25); - MACRO_ADDITEM(ACE_bloodIV,15); - MACRO_ADDITEM(ACE_bloodIV_500,15); - MACRO_ADDITEM(ACE_bloodIV_250,15); - MACRO_ADDITEM(ACE_bodyBag,10); - }; - }; - class ACE_medicalSupplyCrate_advanced: ACE_medicalSupplyCrate { - displayName = CSTRING(medicalSupplyCrate_advanced); - class TransportItems { - MACRO_ADDITEM(ACE_fieldDressing,25); - MACRO_ADDITEM(ACE_packingBandage,25); - 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); - MACRO_ADDITEM(ACE_plasmaIV_500,7); - MACRO_ADDITEM(ACE_plasmaIV_250,7); - MACRO_ADDITEM(ACE_salineIV,7); - MACRO_ADDITEM(ACE_salineIV_500,7); - MACRO_ADDITEM(ACE_salineIV_250,7); - MACRO_ADDITEM(ACE_bloodIV,7); - MACRO_ADDITEM(ACE_bloodIV_500,7); - MACRO_ADDITEM(ACE_bloodIV_250,7); - MACRO_ADDITEM(ACE_quikClot,20); - MACRO_ADDITEM(ACE_personalAidKit,3); - MACRO_ADDITEM(ACE_surgicalKit,2); - MACRO_ADDITEM(ACE_bodyBag,5); - }; - }; -}; diff --git a/addons/medical/CfgWeapons.hpp b/addons/medical/CfgWeapons.hpp deleted file mode 100644 index df9a756a34..0000000000 --- a/addons/medical/CfgWeapons.hpp +++ /dev/null @@ -1,242 +0,0 @@ - -class CfgWeapons { - class ItemCore; - class InventoryItem_Base_F; - class InventoryFirstAidKitItem_Base_F; - class MedikitItem; - - // ITEMS - class FirstAidKit: ItemCore { - type = 0; - class ItemInfo: InventoryFirstAidKitItem_Base_F { - mass = 4; - }; - }; - class Medikit: ItemCore { - type = 0; - class ItemInfo: MedikitItem { - mass = 60; - }; - }; - - class ACE_ItemCore; - class ACE_fieldDressing: ACE_ItemCore { - scope = 2; - model = QPATHTOF(data\bandage.p3d); - picture = QPATHTOF(ui\items\fieldDressing_x_ca.paa); - displayName = CSTRING(Bandage_Basic_Display); - descriptionShort = CSTRING(Bandage_Basic_Desc_Short); - descriptionUse = CSTRING(Bandage_Basic_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 1; - }; - }; - class ACE_packingBandage: ACE_ItemCore { - scope = 2; - displayName = CSTRING(Packing_Bandage_Display); - picture = QPATHTOF(ui\items\packingBandage_x_ca.paa); - model = QPATHTOF(data\packingbandage.p3d); - descriptionShort = CSTRING(Packing_Bandage_Desc_Short); - descriptionUse = CSTRING(Packing_Bandage_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 1; - }; - }; - class ACE_elasticBandage: ACE_ItemCore { - scope = 2; - displayName = CSTRING(Bandage_Elastic_Display); - picture = QPATHTOF(ui\items\elasticBandage_x_ca.paa); - model = "\A3\Structures_F_EPA\Items\Medical\Bandage_F.p3d"; - descriptionShort = CSTRING(Bandage_Elastic_Desc_Short); - descriptionUse = CSTRING(Bandage_Elastic_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 1; - }; - }; - class ACE_tourniquet: ACE_ItemCore { - scope = 2; - displayName = CSTRING(Tourniquet_Display); - picture = QPATHTOF(ui\items\tourniquet_x_ca.paa); - model = QPATHTOF(data\tourniquet.p3d); - descriptionShort = CSTRING(Tourniquet_Desc_Short); - descriptionUse = CSTRING(Tourniquet_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 1; - }; - }; - class ACE_morphine: ACE_ItemCore { - scope = 2; - displayName = CSTRING(Morphine_Display); - picture = QPATHTOF(ui\items\morphine_x_ca.paa); - model = QPATHTOF(data\morphine.p3d); - descriptionShort = CSTRING(Morphine_Desc_Short); - descriptionUse = CSTRING(Morphine_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 1; - }; - }; - class ACE_adenosine: ACE_ItemCore { - scope = 2; - displayName = CSTRING(Adenosine_Display); - picture = QPATHTOF(ui\items\adenosine_x_ca.paa); - model = QPATHTOF(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); - picture = QPATHTOF(ui\items\atropine_x_ca.paa); - model = QPATHTOF(data\atropine.p3d); - descriptionShort = CSTRING(Atropine_Desc_Short); - descriptionUse = CSTRING(Atropine_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 1; - }; - }; - class ACE_epinephrine: ACE_ItemCore { - scope = 2; - displayName = CSTRING(Epinephrine_Display); - picture = QPATHTOF(ui\items\epinephrine_x_ca.paa); - model = QPATHTOF(data\epinephrine.p3d); - descriptionShort = CSTRING(Epinephrine_Desc_Short); - descriptionUse = CSTRING(Epinephrine_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 1; - }; - }; - - class ACE_plasmaIV: ACE_ItemCore { - scope = 2; - displayName = CSTRING(Plasma_IV); - model = QPATHTOF(data\IVBag_1000ml.p3d); - hiddenSelections[] = {"camo"}; - hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_plasma_1000ml_ca.paa) }; - picture = QPATHTOF(ui\items\plasmaIV_x_ca.paa); - descriptionShort = CSTRING(Plasma_IV_Desc_Short); - descriptionUse = CSTRING(Plasma_IV_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 10; - }; - }; - class ACE_plasmaIV_500: ACE_plasmaIV { - displayName = CSTRING(Plasma_IV_500); - model = QPATHTOF(data\IVBag_500ml.p3d); - hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_plasma_500ml_ca.paa) }; - class ItemInfo: InventoryItem_Base_F { - mass = 5; - }; - }; - class ACE_plasmaIV_250: ACE_plasmaIV { - displayName = CSTRING(Plasma_IV_250); - model = QPATHTOF(data\IVBag_250ml.p3d); - hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_plasma_250ml_ca.paa) }; - class ItemInfo: InventoryItem_Base_F { - mass = 2.5; - }; - }; - class ACE_bloodIV: ACE_ItemCore { - scope = 2; - model = QPATHTOF(data\IVBag_1000ml.p3d); - displayName = CSTRING(Blood_IV); - picture = QPATHTOF(ui\items\bloodIV_x_ca.paa); - hiddenSelections[] = {"camo"}; - hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_blood_1000ml_ca.paa) }; - descriptionShort = CSTRING(Blood_IV_Desc_Short); - descriptionUse = CSTRING(Blood_IV_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 10; - }; - }; - class ACE_bloodIV_500: ACE_bloodIV { - displayName = CSTRING(Blood_IV_500); - model = QPATHTOF(data\IVBag_500ml.p3d); - hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_blood_500ml_ca.paa) }; - class ItemInfo: InventoryItem_Base_F { - mass = 5; - }; - }; - class ACE_bloodIV_250: ACE_bloodIV { - displayName = CSTRING(Blood_IV_250); - model = QPATHTOF(data\IVBag_250ml.p3d); - hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_blood_250ml_ca.paa) }; - class ItemInfo: InventoryItem_Base_F { - mass = 2.5; - }; - }; - class ACE_salineIV: ACE_ItemCore { - scope = 2; - displayName = CSTRING(Saline_IV); - model = QPATHTOF(data\IVBag_1000ml.p3d); - hiddenSelections[] = {"camo"}; - hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_saline_1000ml_ca.paa) }; - picture = QPATHTOF(ui\items\salineIV_x_ca.paa); - descriptionShort = CSTRING(Saline_IV_Desc_Short); - descriptionUse = CSTRING(Saline_IV_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 10; - }; - }; - class ACE_salineIV_500: ACE_salineIV { - displayName = CSTRING(Saline_IV_500); - model = QPATHTOF(data\IVBag_500ml.p3d); - hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_saline_500ml_ca.paa) }; - class ItemInfo: InventoryItem_Base_F { - mass = 5; - }; - }; - class ACE_salineIV_250: ACE_salineIV { - displayName = CSTRING(Saline_IV_250); - model = QPATHTOF(data\IVBag_250ml.p3d); - hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_saline_250ml_ca.paa) }; - class ItemInfo: InventoryItem_Base_F { - mass = 2.5; - }; - }; - class ACE_quikclot: ACE_ItemCore { - scope = 2; - displayName = CSTRING(QuikClot_Display); - model = QPATHTOF(data\QuikClot.p3d); - picture = QPATHTOF(ui\items\quickclot_x_ca.paa); - descriptionShort = CSTRING(QuikClot_Desc_Short); - descriptionUse = CSTRING(QuikClot_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 1; - }; - }; - class ACE_personalAidKit: ACE_ItemCore { - scope = 2; - displayName = CSTRING(Aid_Kit_Display); - picture = QPATHTOF(ui\items\personal_aid_kit_x_ca.paa); - descriptionShort = CSTRING(Aid_Kit_Desc_Short); - descriptionUse = CSTRING(Aid_Kit_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 10; - }; - }; - class ACE_surgicalKit: ACE_ItemCore { - scope=2; - displayName= CSTRING(SurgicalKit_Display); - model = QPATHTOF(data\surgical_kit.p3d); - picture = QPATHTOF(ui\items\surgicalKit_x_ca.paa); - descriptionShort = CSTRING(SurgicalKit_Desc_Short); - descriptionUse = CSTRING(SurgicalKit_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 15; - }; - }; - class ACE_bodyBag: ACE_ItemCore { - scope=2; - displayName= CSTRING(Bodybag_Display); - model = QPATHTOF(data\bodybagItem.p3d); - picture = QPATHTOF(ui\items\bodybag_x_ca.paa); - descriptionShort = CSTRING(Bodybag_Desc_Short); - descriptionUse = CSTRING(Bodybag_Desc_Use); - class ItemInfo: InventoryItem_Base_F { - mass = 7; - }; - }; -}; diff --git a/addons/medical/README.md b/addons/medical/README.md deleted file mode 100644 index ecf8f5793e..0000000000 --- a/addons/medical/README.md +++ /dev/null @@ -1,12 +0,0 @@ -ace_medical -=============== - -Provides a basic and advanced medical system. - - -## Maintainers - -The people responsible for merging changes to this component or answering potential questions. - -- [Glowbal](https://github.com/Glowbal) -- [KoffeinFlummi](https://github.com/KoffeinFlummi) diff --git a/addons/medical/XEH_PREP.hpp b/addons/medical/XEH_PREP.hpp index a4b284a50e..572a2efe9f 100644 --- a/addons/medical/XEH_PREP.hpp +++ b/addons/medical/XEH_PREP.hpp @@ -1,79 +1,20 @@ -PREP(addDamageToUnit); -PREP(addHeartRateAdjustment); -PREP(addToInjuredCollection); -PREP(addUnconsciousCondition); -PREP(addUnloadPatientActions); -PREP(addVitalLoop); + +PREP(addStateHandler); PREP(adjustPainLevel); -PREP(bodyCleanupLoop); -PREP(canAccessMedicalEquipment); -PREP(canTreat); -PREP(canTreatCached); -PREP(determineIfFatal); PREP(getBloodLoss); PREP(getBloodPressure); PREP(getBloodVolumeChange); PREP(getCardiacOutput); -PREP(getTypeOfDamage); PREP(getHeartRateChange); -PREP(getTriageStatus); -PREP(getUnconsciousCondition); -PREP(handleDamage); -PREP(handleDamage_advanced); -PREP(handleDamage_advancedSetDamage); -PREP(handleDamage_airway); -PREP(handleDamage_caching); -PREP(handleDamage_fractures); -PREP(handleDamage_internalInjuries); -PREP(handleDamage_wounds); -PREP(handleDamage_woundsOld); -PREP(handleUnitVitals); -PREP(handleKilled); -PREP(handleLocal); -PREP(handleBandageOpening); -PREP(hasMedicalEnabled); PREP(hasTourniquetAppliedTo); PREP(init); -PREP(isBeingCarried); -PREP(isBeingDragged); +PREP(install); PREP(isInMedicalFacility); PREP(isInMedicalVehicle); +PREP(isInStableCondition); PREP(isMedic); PREP(isMedicalVehicle); -PREP(isInStableCondition); -PREP(itemCheck); -PREP(medicationEffectLoop); -PREP(modifyMedicalAction); PREP(parseConfigForInjuries); -PREP(playInjuredSound); -PREP(reviveStateLoop); PREP(selectionNameToNumber); -PREP(serverRemoveBody); -PREP(setCardiacArrest); -PREP(setDead); PREP(setHitPointDamage); PREP(setStructuralDamage); -PREP(setUnconscious); -PREP(showBloodEffect); -PREP(translateSelections); -PREP(treatment); -PREP(treatment_failure); -PREP(treatment_success); -PREP(vitalLoop); -PREP(displayPatientInformation); -PREP(displayTriageCard); -PREP(dropDownTriageCard); -PREP(moduleMedicalSettings); -PREP(moduleBasicMedicalSettings); -PREP(moduleAdvancedMedicalSettings); -PREP(moduleReviveSettings); -PREP(moduleAssignMedicRoles); -PREP(moduleAssignMedicalVehicle); -PREP(moduleAssignMedicalFacility); -PREP(copyDeadBody); -PREP(unconsciousPFH); - -// Networked litter -PREP(createLitter); -PREP(handleCreateLitter); -PREP(litterCleanupLoop); diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf deleted file mode 100644 index a59ed0f433..0000000000 --- a/addons/medical/XEH_postInit.sqf +++ /dev/null @@ -1,280 +0,0 @@ -// ACE Medical System Visual Loop - -#include "script_component.hpp" - -GVAR(heartBeatSounds_Fast) = ["ACE_heartbeat_fast_1", "ACE_heartbeat_fast_2", "ACE_heartbeat_fast_3"]; -GVAR(heartBeatSounds_Normal) = ["ACE_heartbeat_norm_1", "ACE_heartbeat_norm_2"]; -GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; - -["ace_interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call CBA_fnc_addEventHandler; - -//Treatment EventHandlers: -[QGVAR(addVitalLoop), DFUNC(addVitalLoop)] call CBA_fnc_addEventHandler; -[QGVAR(setDead), DFUNC(setDead)] call CBA_fnc_addEventHandler; -[QGVAR(setHitPointDamage), DFUNC(setHitPointDamage)] call CBA_fnc_addEventHandler; -[QGVAR(setUnconscious), DFUNC(setUnconscious)] call CBA_fnc_addEventHandler; - -["ace_unconscious", { - params ["_unit", "_status"]; - if (local _unit) then { - if (_status) then { - _unit setVariable ["tf_voiceVolume", 0, true]; - _unit setVariable ["tf_unable_to_use_radio", true, true]; - - _unit setVariable ["acre_sys_core_isDisabled", true, true]; - } else { - _unit setVariable ["tf_voiceVolume", 1, true]; - _unit setVariable ["tf_unable_to_use_radio", false, true]; - - _unit setVariable ["acre_sys_core_isDisabled", false, true]; - }; - }; -}] call CBA_fnc_addEventHandler; - - -// Initialize all effects -if (hasInterface) then { - -_fnc_createEffect = { - private "_effect"; - params ["_type", "_layer", "_default"]; - - _effect = ppEffectCreate [_type, _layer]; - _effect ppEffectForceInNVG true; - _effect ppEffectAdjust _default; - _effect ppEffectCommit 0; - - _effect -}; - -GVAR(effectUnconsciousCC) = [ - "ColorCorrections", - 4201, - [1,1,0, [0,0,0,1], [0,0,0,0], [1,1,1,1], [0.4,0.4,0,0,0,0.1,0.3]] -] call _fnc_createEffect; - -GVAR(effectUnconsciousRB) = [ - "RadialBlur", - 4202, - [0.01,0.01,0,0] -] call _fnc_createEffect; - -GVAR(effectBlindingCC) = [ - "ColorCorrections", - 4203, - [1,1,0, [1,1,1,0], [0,0,0,1], [0,0,0,0]] -] call _fnc_createEffect; - -GVAR(effectBloodVolumeCC) = [ - "ColorCorrections", - 4204, - [1,1,0, [0,0,0,0], [1,1,1,1], [0.2,0.2,0.2,0]] -] call _fnc_createEffect; - -GVAR(effectPainCA) = [ - "chromAberration", - 4205, - [0, 0, false] -] call _fnc_createEffect; - -GVAR(effectPainCC) = [ - "ColorCorrections", - 4206, - [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1.3,1.3,0,0,0,0.2,2]] -] call _fnc_createEffect; - -// Initialize Other Variables -GVAR(effectBlind) = false; -GVAR(effectTimeBlood) = CBA_missionTime; - -// MAIN EFFECTS LOOP -[{ - private["_bleeding", "_blood"]; - // Zeus interface is open or player is dead; disable everything - if (!(isNull curatorCamera) or !(alive ACE_player)) exitWith { - GVAR(effectUnconsciousCC) ppEffectEnable false; - GVAR(effectUnconsciousRB) ppEffectEnable false; - GVAR(effectBlindingCC) ppEffectEnable false; - GVAR(effectBloodVolumeCC) ppEffectEnable false; - GVAR(effectPainCA) ppEffectEnable false; - GVAR(effectPainCC) ppEffectEnable false; - ["unconscious", false] call EFUNC(common,setDisableUserInputStatus); - }; - - // Unconsciousness effect - if (ACE_player getVariable ["ACE_isUnconscious", false]) then { - GVAR(effectUnconsciousCC) ppEffectEnable true; - GVAR(effectUnconsciousRB) ppEffectEnable true; - GVAR(effectBlind) = true; - ["unconscious", true] call EFUNC(common,setDisableUserInputStatus); - } else { - GVAR(effectUnconsciousCC) ppEffectEnable false; - GVAR(effectUnconsciousRB) ppEffectEnable false; - ["unconscious", false] call EFUNC(common,setDisableUserInputStatus); - if (GVAR(effectBlind)) then { - _strength = 0.78 * (call EFUNC(common,ambientBrightness)); - GVAR(effectBlindingCC) ppEffectEnable true; - GVAR(effectBlindingCC) ppEffectAdjust [1,1,_strength, [1,1,1,0], [0,0,0,1], [0,0,0,0]]; - GVAR(effectBlindingCC) ppEffectCommit 0; - - [{ - GVAR(effectBlindingCC) ppEffectAdjust [1,1,0, [1,1,1,0], [0,0,0,1], [0,0,0,0]]; - GVAR(effectBlindingCC) ppEffectCommit ((_this select 0) * 2); - }, [_strength], 0.01, 0] call CBA_fnc_waitAndExecute; - - [{ - GVAR(effectBlindingCC) ppEffectEnable false; - }, [], (_strength * 2) + 0.5, 0] call CBA_fnc_waitAndExecute; - - GVAR(effectBlind) = false; - }; - }; - - _bleeding = [ACE_player] call FUNC(getBloodLoss); - // Bleeding Indicator - if (_bleeding > 0 and GVAR(effectTimeBlood) + 3.5 < CBA_missionTime) then { - GVAR(effectTimeBlood) = CBA_missionTime; - [600 * _bleeding] call FUNC(showBloodEffect); - }; - - // Blood Volume Effect - _blood = if (GVAR(level) < 2) then { - (ACE_player getVariable [QGVAR(bloodVolume), 100]) / 100; - } else { - (((ACE_player getVariable [QGVAR(bloodVolume), 100]) - 60) max 0) / 40; - }; - - if (_blood > 0.99) then { - GVAR(effectBloodVolumeCC) ppEffectEnable false; - } else { - GVAR(effectBloodVolumeCC) ppEffectEnable true; - GVAR(effectBloodVolumeCC) ppEffectAdjust [1,1,0, [0,0,0,0], [1,1,1,_blood], [0.2,0.2,0.2,0]]; - GVAR(effectBloodVolumeCC) ppEffectCommit 0; - }; -}, 0.5, []] call CBA_fnc_addPerFrameHandler; - - -GVAR(lastHeartBeat) = CBA_missionTime; -GVAR(lastHeartBeatSound) = CBA_missionTime; - -// HEARTRATE BASED EFFECTS -[{ - private["_heartRate", "_interval", "_minTime", "_sound", "_strength", "_pain"]; - _heartRate = ACE_player getVariable [QGVAR(heartRate), 70]; - _pain = ACE_player getVariable [QGVAR(pain), 0]; - if (GVAR(level) == 1) then { - _heartRate = 60 + 40 * _pain; - }; - if (_heartRate <= 0) exitWith {}; - _interval = 60 / (_heartRate min 40); - - if ((ACE_player getVariable ["ACE_isUnconscious", false])) then { - if (GVAR(painEffectType) == 1) then { - GVAR(effectPainCA) ppEffectEnable false; - } else { - GVAR(effectPainCC) ppEffectEnable false; - }; - } else { - if ((CBA_missionTime > GVAR(lastHeartBeat) + _interval)) then { - GVAR(lastHeartBeat) = CBA_missionTime; - - // Pain effect, no pain effect in zeus camera - if (isNull curatorCamera) then { - _strength = ((_pain - (ACE_player getVariable [QGVAR(painSuppress), 0])) max 0) min 1; - _strength = _strength * (ACE_player getVariable [QGVAR(painCoefficient), GVAR(painCoefficient)]); - if (GVAR(painEffectType) == 1) then { - GVAR(effectPainCC) ppEffectEnable false; - if (_pain > (ACE_player getVariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then { - _strength = _strength * 0.15; - GVAR(effectPainCA) ppEffectEnable true; - GVAR(effectPainCA) ppEffectAdjust [_strength, _strength, false]; - GVAR(effectPainCA) ppEffectCommit 0.01; - [{ - GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; - GVAR(effectPainCA) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call CBA_fnc_waitAndExecute; - [{ - GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; - GVAR(effectPainCA) ppEffectCommit 0.01; - }, [_strength * 0.7], _interval * 0.3, 0] call CBA_fnc_waitAndExecute; - [{ - GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; - GVAR(effectPainCA) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call CBA_fnc_waitAndExecute; - } else { - GVAR(effectPainCA) ppEffectEnable false; - }; - } else { - GVAR(effectPainCA) ppEffectEnable false; - if (_pain > (ACE_player getVariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then { - _strength = _strength * 0.9; - 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) ppEffectCommit 0.01; - [{ - GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; - GVAR(effectPainCC) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call CBA_fnc_waitAndExecute; - [{ - GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; - GVAR(effectPainCC) ppEffectCommit 0.01; - }, [_strength * 0.7], _interval * 0.3, 0] call CBA_fnc_waitAndExecute; - [{ - GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; - GVAR(effectPainCC) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call CBA_fnc_waitAndExecute; - } else { - GVAR(effectPainCC) ppEffectEnable false; - }; - }; - }; - }; - }; - - if (GVAR(level) >= 2 && {_heartRate > 0}) then { - _minTime = 60 / _heartRate; - if (CBA_missionTime - GVAR(lastHeartBeatSound) > _minTime) then { - GVAR(lastHeartBeatSound) = CBA_missionTime; - // Heart rate sound effect - if (_heartRate < 60) then { - _sound = GVAR(heartBeatSounds_Normal) select (random((count GVAR(heartBeatSounds_Normal)) -1)); - playSound _sound; - } else { - if (_heartRate > 150) then { - playSound "ACE_heartbeat_fast_2"; - }; - }; - }; - }; - -}, 0, []] call CBA_fnc_addPerFrameHandler; -}; - -["ace_settingsInitialized", { - // Networked litter (need to wait for GVAR(litterCleanUpDelay) to be set) - [QGVAR(createLitter), FUNC(handleCreateLitter), GVAR(litterCleanUpDelay)] call EFUNC(common,addSyncedEventHandler); - - [ - {(((_this select 0) getVariable [QGVAR(bloodVolume), 100]) < 65)}, - {(((_this select 0) getVariable [QGVAR(pain), 0]) - ((_this select 0) getVariable [QGVAR(painSuppress), 0])) > 0.9}, - {(([_this select 0] call FUNC(getBloodLoss)) > 0.25)}, - {((_this select 0) getVariable [QGVAR(inReviveState), false])}, - {((_this select 0) getVariable [QGVAR(inCardiacArrest), false])}, - {((_this select 0) getVariable ["ACE_isDead", false])} - ] call FUNC(addUnconsciousCondition); - -}] call CBA_fnc_addEventHandler; - -// Prevent all types of interaction while unconscious -// @todo: probably remove this when CBA keybind hold key works properly -["isNotUnconscious", {!((_this select 0) getVariable ["ACE_isUnconscious", false])}] call EFUNC(common,addCanInteractWithCondition); - -// Item Event Handler -["loadout", FUNC(itemCheck)] call CBA_fnc_addPlayerEventHandler; - -if (hasInterface) then { - ["ace_playerJIP", { - ACE_LOGINFO("JIP Medical init for player."); - [player] call FUNC(init); - }] call CBA_fnc_addEventHandler; -}; diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index a5dc596ba2..cf14ac59f8 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -4,23 +4,11 @@ ADDON = false; #include "XEH_PREP.hpp" -GVAR(injuredUnitCollection) = []; -GVAR(IVBags) = []; - -private _versionEx = "ace_medical" callExtension "version"; -DFUNC(handleDamage_assignWounds) = if (_versionEx == "") then { - ACE_LOGINFO_1("Extension %1.dll not installed.","ace_medical"); - DFUNC(handleDamage_woundsOld) -} else { - ACE_LOGINFO_2("Extension version: %1: %2","ace_medical",_versionEx); - DFUNC(handleDamage_wounds) -}; - -call FUNC(parseConfigForInjuries); - GVAR(HITPOINTS) = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; GVAR(SELECTIONS) = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]; +call FUNC(parseConfigForInjuries); + //Hack for #3168 (units in static weapons do not take any damage): //doing a manual pre-load with a small distance seems to fix the LOD problems with handle damage not returning full results GVAR(fixedStatics) = []; @@ -51,5 +39,4 @@ addMissionEventHandler ["Loaded",{ } forEach GVAR(fixedStatics); }]; - ADDON = true; diff --git a/addons/medical/XEH_respawn.sqf b/addons/medical/XEH_respawn.sqf deleted file mode 100644 index 1d1c34d6c7..0000000000 --- a/addons/medical/XEH_respawn.sqf +++ /dev/null @@ -1,17 +0,0 @@ -#include "script_component.hpp" - -params ["_unit"]; - -// reset all variables. @todo GROUP respawn? -[_unit] call FUNC(init); - -// Reset captive status for respawning unit -if (!(_unit getVariable ["ACE_isUnconscious", false])) then { - [_unit, "setCaptive", "ace_unconscious", false] call EFUNC(common,statusEffect_set); -}; - -// Remove maximum unconsciousness time handler -_maxUnconHandle = _unit getVariable [QGVAR(maxUnconTimeHandle), -1]; -if (_maxUnconHandle > 0) then { - [_maxUnconHandle] call CBA_fnc_removePerFrameHandler; -}; diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 8ba9e9ce0d..3095ef4216 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -3,37 +3,16 @@ class CfgPatches { class ADDON { name = COMPONENT_NAME; - units[] = {"ACE_medicalSupplyCrate", "ACE_medicalSupplyCrate_advanced", "ACE_fieldDressingItem", "ACE_packingBandageItem", "ACE_elasticBandageItem", "ACE_tourniquetItem", "ACE_morphineItem", "ACE_atropineItem", "ACE_epinephrineItem", "ACE_plasmaIVItem", "ACE_bloodIVItem", "ACE_salineIVItem", "ACE_quikclotItem", "ACE_personalAidKitItem", "ACE_surgicalKitItem", "ACE_bodyBagItem", "ACE_bodyBagObject"}; - weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"}; + units[] = {}; + weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_interaction", "ace_apl"}; + requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); - authors[] = {"Glowbal", "KoffeinFlummi"}; + authors[] = {""}; url = ECSTRING(main,URL); VERSION_CONFIG; }; }; -#include "CfgActions.hpp" #include "CfgEventHandlers.hpp" -#include "CfgFactionClasses.hpp" -#include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" -#include "CfgSounds.hpp" -#include "CfgEden.hpp" -#include "ACE_Medical_Treatments.hpp" -#include "ACE_Settings.hpp" -#include "UI\CfgInGameUI.hpp" -#include "UI\RscTitles.hpp" -#include "UI\triagecard.hpp" - -class ACE_newEvents { - medical_onUnconscious = "ace_unconscious"; - medical_onSetDead = "ace_killed"; - Medical_onEnteredCardiacArrest = "ace_cardiacArrestEntered"; - Medical_onHeartRateAdjustmentAdded = "ace_heartRateAdjustmentAdded"; - setUnconscious = QGVAR(setUnconscious); - setHitPointDamage = QGVAR(setHitPointDamage); - setDead = QGVAR(setDead); - addVitalLoop = QGVAR(addVitalLoop); -}; +#include "injuries.hpp" diff --git a/addons/medical/data/EpiMorphine_co.paa b/addons/medical/data/EpiMorphine_co.paa deleted file mode 100644 index 04d5f4aae5..0000000000 Binary files a/addons/medical/data/EpiMorphine_co.paa and /dev/null differ diff --git a/addons/medical/data/IVBag.rvmat b/addons/medical/data/IVBag.rvmat deleted file mode 100644 index c33c0ead90..0000000000 --- a/addons/medical/data/IVBag.rvmat +++ /dev/null @@ -1,99 +0,0 @@ -#define _ARMA_ - -class StageTI -{ - texture = "a3\data_f\default_ti_ca.paa"; -}; -ambient[] = {1,1,1,1}; -diffuse[] = {1,1,1,1}; -forcedDiffuse[] = {0,0,0,0}; -emmisive[] = {0,0,0,0}; -specular[] = {0.3,0.3,0.3,0.3}; -specularPower = 150; -PixelShaderID = "Super"; -VertexShaderID = "Super"; -class Stage1 -{ - texture = "z\ace\addons\medical\data\IVBag_nohq.paa"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage2 -{ - texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage3 -{ - texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage4 -{ - texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage5 -{ - texture = "#(argb,8,8,3)color(0,0.6,1,1,SMDI)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage6 -{ - texture = "#(ai,64,64,1)fresnelGlass(2)"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; -class Stage7 -{ - useWorldEnvMap = "true"; - texture = "a3\data_f\env_land_ca.paa"; - uvSource = "tex"; - class uvTransform - { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,1}; - pos[] = {0,0,0}; - }; -}; diff --git a/addons/medical/data/IVBag_1000ml.p3d b/addons/medical/data/IVBag_1000ml.p3d deleted file mode 100644 index e76108b4ff..0000000000 Binary files a/addons/medical/data/IVBag_1000ml.p3d and /dev/null differ diff --git a/addons/medical/data/IVBag_250ml.p3d b/addons/medical/data/IVBag_250ml.p3d deleted file mode 100644 index 1e727c45d8..0000000000 Binary files a/addons/medical/data/IVBag_250ml.p3d and /dev/null differ diff --git a/addons/medical/data/IVBag_500ml.p3d b/addons/medical/data/IVBag_500ml.p3d deleted file mode 100644 index 569244fe88..0000000000 Binary files a/addons/medical/data/IVBag_500ml.p3d and /dev/null differ diff --git a/addons/medical/data/IVBag_blood_1000ml_ca.paa b/addons/medical/data/IVBag_blood_1000ml_ca.paa deleted file mode 100644 index 8831da60c1..0000000000 Binary files a/addons/medical/data/IVBag_blood_1000ml_ca.paa and /dev/null differ diff --git a/addons/medical/data/IVBag_blood_250ml_ca.paa b/addons/medical/data/IVBag_blood_250ml_ca.paa deleted file mode 100644 index bd1d323917..0000000000 Binary files a/addons/medical/data/IVBag_blood_250ml_ca.paa and /dev/null differ diff --git a/addons/medical/data/IVBag_blood_500ml_ca.paa b/addons/medical/data/IVBag_blood_500ml_ca.paa deleted file mode 100644 index ad093988fe..0000000000 Binary files a/addons/medical/data/IVBag_blood_500ml_ca.paa and /dev/null differ diff --git a/addons/medical/data/IVBag_nohq.paa b/addons/medical/data/IVBag_nohq.paa deleted file mode 100644 index 3018c3a044..0000000000 Binary files a/addons/medical/data/IVBag_nohq.paa and /dev/null differ diff --git a/addons/medical/data/IVBag_plasma_1000ml_ca.paa b/addons/medical/data/IVBag_plasma_1000ml_ca.paa deleted file mode 100644 index c3959990d9..0000000000 Binary files a/addons/medical/data/IVBag_plasma_1000ml_ca.paa and /dev/null differ diff --git a/addons/medical/data/IVBag_plasma_250ml_ca.paa b/addons/medical/data/IVBag_plasma_250ml_ca.paa deleted file mode 100644 index 6ba7ae4f9d..0000000000 Binary files a/addons/medical/data/IVBag_plasma_250ml_ca.paa and /dev/null differ diff --git a/addons/medical/data/IVBag_plasma_500ml_ca.paa b/addons/medical/data/IVBag_plasma_500ml_ca.paa deleted file mode 100644 index 3a58b45ff8..0000000000 Binary files a/addons/medical/data/IVBag_plasma_500ml_ca.paa and /dev/null differ diff --git a/addons/medical/data/IVBag_saline_1000ml_ca.paa b/addons/medical/data/IVBag_saline_1000ml_ca.paa deleted file mode 100644 index 3637870600..0000000000 Binary files a/addons/medical/data/IVBag_saline_1000ml_ca.paa and /dev/null differ diff --git a/addons/medical/data/IVBag_saline_250ml_ca.paa b/addons/medical/data/IVBag_saline_250ml_ca.paa deleted file mode 100644 index d37f6d2ce5..0000000000 Binary files a/addons/medical/data/IVBag_saline_250ml_ca.paa and /dev/null differ diff --git a/addons/medical/data/IVBag_saline_500ml_ca.paa b/addons/medical/data/IVBag_saline_500ml_ca.paa deleted file mode 100644 index f3305e5b02..0000000000 Binary files a/addons/medical/data/IVBag_saline_500ml_ca.paa and /dev/null differ diff --git a/addons/medical/data/QuikClot.p3d b/addons/medical/data/QuikClot.p3d deleted file mode 100644 index 9fe747cb54..0000000000 Binary files a/addons/medical/data/QuikClot.p3d and /dev/null differ diff --git a/addons/medical/data/QuikClot.rvmat b/addons/medical/data/QuikClot.rvmat deleted file mode 100644 index 778e9812e1..0000000000 --- a/addons/medical/data/QuikClot.rvmat +++ /dev/null @@ -1,82 +0,0 @@ -class StageTI -{ - texture="a3\data_f\default_ti_ca.paa"; -}; -ambient[]={1,1,1,1}; -diffuse[]={1,1,1,1}; -forcedDiffuse[]={0,0,0,0}; -emmisive[]={0,0,0,1}; -specular[]={0.050000008,0.050000008,0.050000008,1}; -specularPower=50; -PixelShaderID="Super"; -VertexShaderID="Super"; -class Stage1 -{ - texture="z\ace\addons\medical\data\quikclot_nohq.paa"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage2 -{ - texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; - uvSource="tex"; - class uvTransform - { - aside[]={0,9,0}; - up[]={4.5,0,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage3 -{ - texture="#(argb,8,8,3)color(0,0,0,0)"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage4 -{ - texture="#(argb,8,8,3)color(1,1,1,1,AS)"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage5 -{ - texture="#(argb,8,8,3)color(1,1,1,1,SMDI)"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage6 -{ - texture="#(ai,64,64,1)fresnel(1.5,1.22)"; - uvSource="none"; -}; -class Stage7 -{ - texture="a3\data_f\env_land_co.paa"; - uvSource="none"; -}; diff --git a/addons/medical/data/QuikClot_CO.paa b/addons/medical/data/QuikClot_CO.paa deleted file mode 100644 index ce1a412b74..0000000000 Binary files a/addons/medical/data/QuikClot_CO.paa and /dev/null differ diff --git a/addons/medical/data/QuikClot_NOHQ.paa b/addons/medical/data/QuikClot_NOHQ.paa deleted file mode 100644 index 0b5f78ff0f..0000000000 Binary files a/addons/medical/data/QuikClot_NOHQ.paa and /dev/null differ diff --git a/addons/medical/data/ace_litterclean_co.paa b/addons/medical/data/ace_litterclean_co.paa deleted file mode 100644 index 68fb2a2b22..0000000000 Binary files a/addons/medical/data/ace_litterclean_co.paa and /dev/null differ diff --git a/addons/medical/data/ace_littergeneric1_co.paa b/addons/medical/data/ace_littergeneric1_co.paa deleted file mode 100644 index 48aaeeb795..0000000000 Binary files a/addons/medical/data/ace_littergeneric1_co.paa and /dev/null differ diff --git a/addons/medical/data/ace_medcrate.p3d b/addons/medical/data/ace_medcrate.p3d deleted file mode 100644 index 4398599b99..0000000000 Binary files a/addons/medical/data/ace_medcrate.p3d and /dev/null differ diff --git a/addons/medical/data/ace_medcrate_co.paa b/addons/medical/data/ace_medcrate_co.paa deleted file mode 100644 index a817bf0ae4..0000000000 Binary files a/addons/medical/data/ace_medcrate_co.paa and /dev/null differ diff --git a/addons/medical/data/ace_medcrate_r.p3d b/addons/medical/data/ace_medcrate_r.p3d deleted file mode 100644 index f711996bec..0000000000 Binary files a/addons/medical/data/ace_medcrate_r.p3d and /dev/null differ diff --git a/addons/medical/data/adenosine.p3d b/addons/medical/data/adenosine.p3d deleted file mode 100644 index fa9fb72c84..0000000000 Binary files a/addons/medical/data/adenosine.p3d and /dev/null differ diff --git a/addons/medical/data/atropine.p3d b/addons/medical/data/atropine.p3d deleted file mode 100644 index fa9fb72c84..0000000000 Binary files a/addons/medical/data/atropine.p3d and /dev/null differ diff --git a/addons/medical/data/atropine_co.paa b/addons/medical/data/atropine_co.paa deleted file mode 100644 index aadcb955f8..0000000000 Binary files a/addons/medical/data/atropine_co.paa and /dev/null differ diff --git a/addons/medical/data/bandage.p3d b/addons/medical/data/bandage.p3d deleted file mode 100644 index 23540f10d9..0000000000 Binary files a/addons/medical/data/bandage.p3d and /dev/null differ diff --git a/addons/medical/data/bodybagItem.p3d b/addons/medical/data/bodybagItem.p3d deleted file mode 100644 index 73b3bfe404..0000000000 Binary files a/addons/medical/data/bodybagItem.p3d and /dev/null differ diff --git a/addons/medical/data/bodybagItem.rvmat b/addons/medical/data/bodybagItem.rvmat deleted file mode 100644 index a373bfaae8..0000000000 --- a/addons/medical/data/bodybagItem.rvmat +++ /dev/null @@ -1,32 +0,0 @@ -ambient[]={1.000000,1.000000,1.000000,1.000000}; -diffuse[]={1.000000,1.000000,1.000000,1.000000}; -forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000}; -emmisive[]={0.000000,0.000000,0.000000,1.000000}; -specular[]={1.000000,1.000000,1.000000,1.000000}; -specularPower=20.000000; -PixelShaderID="NormalMapSpecularDIMap"; -VertexShaderID="NormalMap"; -class Stage1 -{ - texture="z\ace\addons\medical\data\bodybagItem_nohq.paa"; - uvSource="tex"; - class uvTransform - { - aside[]={1.000000,0.000000,0.000000}; - up[]={0.000000,1.000000,0.000000}; - dir[]={0.000000,0.000000,0.000000}; - pos[]={0.000000,0.000000,0.000000}; - }; -}; -class Stage2 -{ - texture="z\ace\addons\medical\data\bodybagItem_smdi.paa"; - uvSource="tex"; - class uvTransform - { - aside[]={1.000000,0.000000,0.000000}; - up[]={0.000000,1.000000,0.000000}; - dir[]={0.000000,0.000000,0.000000}; - pos[]={0.000000,0.000000,0.000000}; - }; -}; diff --git a/addons/medical/data/bodybagItem_co.paa b/addons/medical/data/bodybagItem_co.paa deleted file mode 100644 index d04f8ec64c..0000000000 Binary files a/addons/medical/data/bodybagItem_co.paa and /dev/null differ diff --git a/addons/medical/data/bodybagItem_nohq.paa b/addons/medical/data/bodybagItem_nohq.paa deleted file mode 100644 index 5699ec5e04..0000000000 Binary files a/addons/medical/data/bodybagItem_nohq.paa and /dev/null differ diff --git a/addons/medical/data/bodybagItem_smdi.paa b/addons/medical/data/bodybagItem_smdi.paa deleted file mode 100644 index cf4cf805e3..0000000000 Binary files a/addons/medical/data/bodybagItem_smdi.paa and /dev/null differ diff --git a/addons/medical/data/epinephrine.p3d b/addons/medical/data/epinephrine.p3d deleted file mode 100644 index 45f0aee1f7..0000000000 Binary files a/addons/medical/data/epinephrine.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric.p3d b/addons/medical/data/littergeneric.p3d deleted file mode 100644 index 801a6f5a4f..0000000000 Binary files a/addons/medical/data/littergeneric.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_Quikclot.p3d b/addons/medical/data/littergeneric_Quikclot.p3d deleted file mode 100644 index e54e331721..0000000000 Binary files a/addons/medical/data/littergeneric_Quikclot.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_adenosine.p3d b/addons/medical/data/littergeneric_adenosine.p3d deleted file mode 100644 index 4490a11c0e..0000000000 Binary files a/addons/medical/data/littergeneric_adenosine.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_atropine.p3d b/addons/medical/data/littergeneric_atropine.p3d deleted file mode 100644 index 4490a11c0e..0000000000 Binary files a/addons/medical/data/littergeneric_atropine.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_bandages1.p3d b/addons/medical/data/littergeneric_bandages1.p3d deleted file mode 100644 index bdbc447178..0000000000 Binary files a/addons/medical/data/littergeneric_bandages1.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_bandages2.p3d b/addons/medical/data/littergeneric_bandages2.p3d deleted file mode 100644 index 7b48675370..0000000000 Binary files a/addons/medical/data/littergeneric_bandages2.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_bandages3.p3d b/addons/medical/data/littergeneric_bandages3.p3d deleted file mode 100644 index 7b48675370..0000000000 Binary files a/addons/medical/data/littergeneric_bandages3.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_clean.p3d b/addons/medical/data/littergeneric_clean.p3d deleted file mode 100644 index 0ebddf30ca..0000000000 Binary files a/addons/medical/data/littergeneric_clean.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_epinephrine.p3d b/addons/medical/data/littergeneric_epinephrine.p3d deleted file mode 100644 index 8246ef607e..0000000000 Binary files a/addons/medical/data/littergeneric_epinephrine.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_gloves.p3d b/addons/medical/data/littergeneric_gloves.p3d deleted file mode 100644 index ca92017688..0000000000 Binary files a/addons/medical/data/littergeneric_gloves.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_gloves.rvmat b/addons/medical/data/littergeneric_gloves.rvmat deleted file mode 100644 index 0a0df2c55c..0000000000 --- a/addons/medical/data/littergeneric_gloves.rvmat +++ /dev/null @@ -1,32 +0,0 @@ -ambient[]={1,1,1,1}; -diffuse[]={0.5,0.5,0.5,1}; -forcedDiffuse[]={0.5,0.5,0.5,0}; -emmisive[]={0,0,0,1}; -specular[]={0.20000001,0.20000001,0.20000001,0}; -specularPower=350.799999; -PixelShaderID="NormalMapSpecularDIMap"; -VertexShaderID="NormalMap"; -class Stage1 -{ - texture="z\ace\addons\medical\data\littergeneric_gloves_nohq.paa"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,1}; - pos[]={0,0,0}; - }; -}; -class Stage2 -{ - texture= "#(argb,8,8,3)color(0.1,0.1,0.1,0,SMDI)"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,1}; - pos[]={0,0,0}; - }; -}; diff --git a/addons/medical/data/littergeneric_gloves_co.paa b/addons/medical/data/littergeneric_gloves_co.paa deleted file mode 100644 index 77deb00196..0000000000 Binary files a/addons/medical/data/littergeneric_gloves_co.paa and /dev/null differ diff --git a/addons/medical/data/littergeneric_gloves_nohq.paa b/addons/medical/data/littergeneric_gloves_nohq.paa deleted file mode 100644 index 86388fad83..0000000000 Binary files a/addons/medical/data/littergeneric_gloves_nohq.paa and /dev/null differ diff --git a/addons/medical/data/littergeneric_morphine.p3d b/addons/medical/data/littergeneric_morphine.p3d deleted file mode 100644 index 906280227c..0000000000 Binary files a/addons/medical/data/littergeneric_morphine.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_packingbandage.p3d b/addons/medical/data/littergeneric_packingbandage.p3d deleted file mode 100644 index 185b8a73ff..0000000000 Binary files a/addons/medical/data/littergeneric_packingbandage.p3d and /dev/null differ diff --git a/addons/medical/data/littergeneric_packingbandage.rvmat b/addons/medical/data/littergeneric_packingbandage.rvmat deleted file mode 100644 index 8deaff550f..0000000000 --- a/addons/medical/data/littergeneric_packingbandage.rvmat +++ /dev/null @@ -1,31 +0,0 @@ -ambient[]={1,1,1,1}; -diffuse[]={0.5,0.5,0.5,1}; -forcedDiffuse[]={0.5,0.5,0.5,0}; -emmisive[]={0,0,0,1}; -specular[]={0,0,0,0}; -PixelShaderID="NormalMapSpecularDIMap"; -VertexShaderID="NormalMap"; -class Stage1 -{ - texture="z\ace\addons\medical\data\littergeneric_packingbandage_nohq.paa"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,1}; - pos[]={0,0,0}; - }; -}; -class Stage2 -{ - texture= "#(argb,8,8,3)color(0,0,0,1,SMDI)"; - uvSource="tex"; - class uvTransform - { - aside[]={0,0,0}; - up[]={0,0,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; diff --git a/addons/medical/data/littergeneric_packingbandage_nohq.paa b/addons/medical/data/littergeneric_packingbandage_nohq.paa deleted file mode 100644 index b3d88b53ab..0000000000 Binary files a/addons/medical/data/littergeneric_packingbandage_nohq.paa and /dev/null differ diff --git a/addons/medical/data/medical_co.paa b/addons/medical/data/medical_co.paa deleted file mode 100644 index b53fffc1c5..0000000000 Binary files a/addons/medical/data/medical_co.paa and /dev/null differ diff --git a/addons/medical/data/model.cfg b/addons/medical/data/model.cfg deleted file mode 100644 index 114fae7ada..0000000000 --- a/addons/medical/data/model.cfg +++ /dev/null @@ -1,24 +0,0 @@ -class CfgSkeletons { - class Default { - isDiscrete = 1; - skeletonInherit = ""; - skeletonBones[] = {}; - }; -}; - -class CfgModels { - class Default { - sectionsInherit=""; - sections[] = {""}; - skeletonName = ""; - }; - class IVBagBase: Default { - sectionsInherit = ""; - sections[] = {"camo"}; - skeletonName = ""; - }; - - class IVBag_250ml: IVBagBase {}; - class IVBag_500ml: IVBagBase {}; - class IVBag_1000ml: IVBagBase {}; -}; \ No newline at end of file diff --git a/addons/medical/data/morphine.p3d b/addons/medical/data/morphine.p3d deleted file mode 100644 index 3328630ac9..0000000000 Binary files a/addons/medical/data/morphine.p3d and /dev/null differ diff --git a/addons/medical/data/packingbandage.p3d b/addons/medical/data/packingbandage.p3d deleted file mode 100644 index 0e083c4766..0000000000 Binary files a/addons/medical/data/packingbandage.p3d and /dev/null differ diff --git a/addons/medical/data/packingbandage.rvmat b/addons/medical/data/packingbandage.rvmat deleted file mode 100644 index ba2fdfb2e6..0000000000 --- a/addons/medical/data/packingbandage.rvmat +++ /dev/null @@ -1,32 +0,0 @@ -ambient[]={1,1,1,1}; -diffuse[]={0.5,0.5,0.5,1}; -forcedDiffuse[]={0.5,0.5,0.5,0}; -emmisive[]={0,0,0,0}; -specular[]={0,0,0,0}; -specularPower=0; -PixelShaderID="NormalMapSpecularDIMap"; -VertexShaderID="NormalMap"; -class Stage1 -{ - texture="z\ace\addons\medical\data\packingbandage_nohq.paa"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,1}; - pos[]={0,0,0}; - }; -}; -class Stage2 -{ - texture= "#(argb,8,8,3)color(0,0,0,1,SMDI)"; - uvSource="tex"; - class uvTransform - { - aside[]={0,0,0}; - up[]={0,0,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; diff --git a/addons/medical/data/packingbandage_co.paa b/addons/medical/data/packingbandage_co.paa deleted file mode 100644 index cac0cd7c90..0000000000 Binary files a/addons/medical/data/packingbandage_co.paa and /dev/null differ diff --git a/addons/medical/data/packingbandage_nohq.paa b/addons/medical/data/packingbandage_nohq.paa deleted file mode 100644 index 27420ea40a..0000000000 Binary files a/addons/medical/data/packingbandage_nohq.paa and /dev/null differ diff --git a/addons/medical/data/surgical_kit.p3d b/addons/medical/data/surgical_kit.p3d deleted file mode 100644 index f820ea6078..0000000000 Binary files a/addons/medical/data/surgical_kit.p3d and /dev/null differ diff --git a/addons/medical/data/surgical_kit.rvmat b/addons/medical/data/surgical_kit.rvmat deleted file mode 100644 index 71d266f668..0000000000 --- a/addons/medical/data/surgical_kit.rvmat +++ /dev/null @@ -1,92 +0,0 @@ -ambient[]={1,1,1,1}; -diffuse[]={1,1,1,1}; -forcedDiffuse[]={0,0,0,0}; -emmisive[]={0,0,0,1}; -specular[]={0.70399898,0.70399898,0.70399898,0}; -specularPower=70; -PixelShaderID="Super"; -VertexShaderID="Super"; -class Stage1 -{ - texture="z\ace\addons\medical\data\surgical_kit_nohq.paa"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage2 -{ - texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage3 -{ - texture="#(argb,8,8,3)color(0,0,0,0,MC)"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage4 -{ - texture="#(argb,8,8,3)color(1,1,1,1,AS)"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage5 -{ - texture="#(argb,8,8,3)color(0,0.05,1,1,SMDI)"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage6 -{ - texture="#(ai,32,128,1)fresnel(0.98,1.02)"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage7 -{ - texture="z\ace\addons\apl\data\env_co.tga"; - uvSource="tex"; - class uvTransform - { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; diff --git a/addons/medical/data/surgical_kit_co.paa b/addons/medical/data/surgical_kit_co.paa deleted file mode 100644 index 3e622afe48..0000000000 Binary files a/addons/medical/data/surgical_kit_co.paa and /dev/null differ diff --git a/addons/medical/data/surgical_kit_metal.rvmat b/addons/medical/data/surgical_kit_metal.rvmat deleted file mode 100644 index 65192a777f..0000000000 --- a/addons/medical/data/surgical_kit_metal.rvmat +++ /dev/null @@ -1,22 +0,0 @@ -ambient[]={1,1,1,0}; -diffuse[]={1,1,1,0}; -forcedDiffuse[]={0,0,0,0}; -emmisive[]={0,0,0,0}; -specular[]={0.5,0.5,0.5,0}; -specularPower=11.6; -renderFlags[]= -{ - "NoAlphaWrite" -}; -PixelShaderID="Glass"; -VertexShaderID="Glass"; -class Stage1 -{ - texture="#(argb,8,8,3)color(1,1,1,0.9)"; - uvSource="none"; -}; -class Stage2 -{ - texture="a3\data_f\env_chrome_co.paa"; - uvSource="none"; -}; diff --git a/addons/medical/data/surgical_kit_nohq.paa b/addons/medical/data/surgical_kit_nohq.paa deleted file mode 100644 index b8027515bc..0000000000 Binary files a/addons/medical/data/surgical_kit_nohq.paa and /dev/null differ diff --git a/addons/medical/data/tourniquet.p3d b/addons/medical/data/tourniquet.p3d deleted file mode 100644 index 94a7e4c830..0000000000 Binary files a/addons/medical/data/tourniquet.p3d and /dev/null differ diff --git a/addons/medical/data/tourniquet_co.paa b/addons/medical/data/tourniquet_co.paa deleted file mode 100644 index e83aada994..0000000000 Binary files a/addons/medical/data/tourniquet_co.paa and /dev/null differ diff --git a/addons/medical/functions/fnc_addDamageToUnit.sqf b/addons/medical/functions/fnc_addDamageToUnit.sqf deleted file mode 100644 index 1969e3ff74..0000000000 --- a/addons/medical/functions/fnc_addDamageToUnit.sqf +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Author: PabstMirror - * Manually Apply Damage to a unit (can cause lethal damage) - * NOTE: because of caching, this will not have instant effects (~3 frame delay) - * - * Arguments: - * 0: The Unit - * 1: Damage to Add - * 2: Selection ("head", "body", "hand_l", "hand_r", "leg_l", "leg_r") - * 3: Projectile Type - * - * Return Value: - * HandleDamage's return - * - * Example: - * [player, 0.8, "leg_r", "bullet"] call ace_medical_fnc_addDamageToUnit - * [cursorTarget, 1, "body", "stab"] call ace_medical_fnc_addDamageToUnit - * - * Public: Yes - */ -// #define DEBUG_MODE_FULL -// #define DEBUG_TESTRESULTS -#include "script_component.hpp" - -params [["_unit", objNull, [objNull]], ["_damageToAdd", -1, [0]], ["_selection", "", [""]], ["_typeOfDamage", "", [""]]]; -TRACE_4("params",_unit,_damageToAdd,_selection,_typeOfDamage); - -_selection = toLower _selection; -if ((isNull _unit) || {!local _unit} || {!alive _unit}) exitWith {ACE_LOGERROR_1("addDamageToUnit - badUnit %1", _this); -1}; -if (_damageToAdd < 0) exitWith {ACE_LOGERROR_1("addDamageToUnit - bad damage %1", _this); -1}; -if (!(_selection in GVAR(SELECTIONS))) exitWith {ACE_LOGERROR_1("addDamageToUnit - bad selection %1", _this); -1}; - -//Get the hitpoint and the index -private _hitpoint = [_unit, _selection, true] call ace_medical_fnc_translateSelections; -(getAllHitPointsDamage _unit) params [["_allHitPoints", []]]; -private _hitpointIndex = -1; -{ //case insensitive find - if (_x == _hitpoint) exitWith {_hitpointIndex = _forEachIndex;}; -} forEach _allHitPoints; -if (_hitpointIndex < 0) exitWith {ACE_LOGERROR_1("addDamageToUnit - bad hitpointIndex %1", _this); -1}; - -private _currentDamage = _unit getHitIndex _hitpointIndex; - -#ifdef DEBUG_TESTRESULTS -private _checkAtFrame = diag_frameno + 5; -private _partNumber = [_selection] call FUNC(selectionNameToNumber); -private _startDmg = (_unit getVariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]) select _partNumber; -private _debugCode = { - params ["", "_unit", "_startDmg", "_damageToAdd", "_partNumber"]; - private _endDmg = (_unit getVariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]) select _partNumber; - if ((!alive _unit) || {_endDmg > _startDmg}) then { - ACE_LOGINFO_6("addDamageToUnit - PASSED - [unit:%1, partNo:%2, addDmg:%3] results:[alive:%4 old:%5 new:%6]", _unit, _partNumber, _damageToAdd, alive _unit, _startDmg, _endDmg); - } else { - ACE_LOGERROR_6("addDamageToUnit - FAILED - [unit:%1, partNo:%2, addDmg:%3] results:[alive:%4 old:%5 new:%6]", _unit, _partNumber, _damageToAdd, alive _unit, _startDmg, _endDmg); - }; -}; -[{diag_frameno > (_this select 0)}, _debugCode, [_checkAtFrame, _unit, _startDmg, _damageToAdd, _partNumber]] call CBA_fnc_waitUntilAndExecute; -#endif - -private _return = [_unit, _selection, (_currentDamage + _damageToAdd), _unit, _typeOfDamage, _hitpointIndex] call FUNC(handleDamage); -TRACE_1("handleDamage called",_return); - -_return diff --git a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf deleted file mode 100644 index a23ea45023..0000000000 --- a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Author: Glowbal, KoffeinFlummi - * Increase the Heart Rate of a local unit by given number within given amount of seconds. - * - * Arguments: - * 0: The unit - * 1: value - * 2: time in seconds - * 3: callback - * - * Return Value: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params [["_unit", objNull, [objNull]], ["_value", 0, [0]], ["_time", 1, [0]], ["_callBack", {}, [{}]]]; - -private _adjustment = _unit getVariable [QGVAR(heartRateAdjustments), []]; -_adjustment pushBack [_value, _time, _callBack]; -_unit setVariable [QGVAR(heartRateAdjustments), _adjustment]; - -["ace_heartRateAdjustmentAdded", [_unit, _value, _time]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_addStateHandler.sqf b/addons/medical/functions/fnc_addStateHandler.sqf new file mode 100644 index 0000000000..933e197e2e --- /dev/null +++ b/addons/medical/functions/fnc_addStateHandler.sqf @@ -0,0 +1,4 @@ + + +params ["_unit"]; +// TODO check if this unit is being monitored by the state machine diff --git a/addons/medical/functions/fnc_addToInjuredCollection.sqf b/addons/medical/functions/fnc_addToInjuredCollection.sqf deleted file mode 100644 index 77d2378d0d..0000000000 --- a/addons/medical/functions/fnc_addToInjuredCollection.sqf +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Author: Glowbal - * Enabled the vitals loop for a unit. - * - * Arguments: - * 0: The Unit - * - * ReturnValue: - * None - * - * Deprecated - */ -#include "script_component.hpp" - -ACE_DEPRECATED("ace_medical_fnc_addToInjuredCollection","3.7.0","ace_medical_fnc_addVitalLoop"); - -_this call FUNC(addVitalLoop); diff --git a/addons/medical/functions/fnc_addUnconsciousCondition.sqf b/addons/medical/functions/fnc_addUnconsciousCondition.sqf deleted file mode 100644 index 195cd557d7..0000000000 --- a/addons/medical/functions/fnc_addUnconsciousCondition.sqf +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Author: Glowbal - * Adds new condition for the unconscious state. Conditions are not actively checked for units unless unit is in unconscious state. - * - * Arguments: - * 0-N: Code, should return a boolean - * - * ReturnValue: - * None - * - * Public: Yes - */ -#include "script_component.hpp" - -if (isnil QGVAR(unconsciousConditions)) then { - GVAR(unconsciousConditions) = []; -}; -if (_this isEqualType []) then { - { - if (_x isEqualType {}) then { - GVAR(unconsciousConditions) pushback _x; - }; - } foreach _this; -}; diff --git a/addons/medical/functions/fnc_addUnloadPatientActions.sqf b/addons/medical/functions/fnc_addUnloadPatientActions.sqf deleted file mode 100644 index 596a536de6..0000000000 --- a/addons/medical/functions/fnc_addUnloadPatientActions.sqf +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Author: esteldunedain - * Create one unload action per unconscious passenger - * - * Arguments: - * 0: Vehicle - * 1: Player - * 3: Parameters - * - * Return Value: - * Children actions - * - * Public: No - */ -#include "script_component.hpp" -params ["_vehicle", "_player", "_parameters"]; - -private _actions = []; - -{ - private _unit = _x; - if (_unit != _player && {(alive _unit) && {_unit getVariable ["ACE_isUnconscious", false]}}) then { - _actions pushBack - [ - [ - str(_unit), - [_unit, true] call EFUNC(common,getName), - "", - {[_player, (_this select 2) select 0] call FUNC(actionUnloadUnit);}, - {true}, - {}, - [_unit] - ] call EFUNC(interact_menu,createAction), - [], - _unit - ]; - }; -} forEach crew _vehicle; - -_actions diff --git a/addons/medical/functions/fnc_addVitalLoop.sqf b/addons/medical/functions/fnc_addVitalLoop.sqf deleted file mode 100644 index aa3d6608d0..0000000000 --- a/addons/medical/functions/fnc_addVitalLoop.sqf +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Author: Glowbal - * Enabled the vitals loop for a unit. - * - * Arguments: - * 0: The Unit - * - * ReturnValue: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_unit", ["_force", false]]; - -if !([_unit] call FUNC(hasMedicalEnabled) || _force) exitWith {}; - -if !(local _unit) exitWith { - [QGVAR(addVitalLoop), [_unit, _force], _unit] call CBA_fnc_targetEvent; -}; - -// Quit if the unit already has a vital loop, or is dead, unless it's forced -if ((_unit getVariable[QGVAR(addedToUnitLoop),false] || !alive _unit) && !_force) exitWith{}; - -// Schedule the loop to be executed again 1 sec later -// @todo: should the loop be started righ away instead? -_unit setVariable [QGVAR(addedToUnitLoop), true, true]; -[DFUNC(vitalLoop), [_unit, CBA_missionTime], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_adjustPainLevel.sqf b/addons/medical/functions/fnc_adjustPainLevel.sqf index e37972d0ef..d2a118223f 100644 --- a/addons/medical/functions/fnc_adjustPainLevel.sqf +++ b/addons/medical/functions/fnc_adjustPainLevel.sqf @@ -31,6 +31,6 @@ private _pain = ((_unit getVariable [QGVAR(pain), 0]) + _addedPain) max 0; _unit setVariable [QGVAR(pain), _pain]; //Start up the vital watching (if not already running) -[_unit] call FUNC(addVitalLoop); +// [_unit] call FUNC(addVitalLoop); _pain; diff --git a/addons/medical/functions/fnc_bodyCleanupLoop.sqf b/addons/medical/functions/fnc_bodyCleanupLoop.sqf deleted file mode 100644 index af17ffcd34..0000000000 --- a/addons/medical/functions/fnc_bodyCleanupLoop.sqf +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Author: Glowbal, esteldunedain - * Loop that cleans up litter - * - * Arguments: - * None - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -{ - TRACE_2("body",_x,isPlayer _x); - if ((!isNull _x) && {!isPlayer _x}) then {deleteVehicle _x}; -} forEach GVAR(bodiesToDelete); - -// deleteVehicle doesn't have instant results so it won't usualy be filtered until next run -GVAR(bodiesToDelete) = GVAR(bodiesToDelete) - [objNull]; - -// If no more bodies remain, exit the loop -if (GVAR(bodiesToDelete) isEqualTo []) exitWith { - TRACE_1("array emptied - rem PFEH",GVAR(bodiesToDelete)); -}; - -// Schedule the loop to be executed again 20 sec later -[DFUNC(bodyCleanupLoop), [], 20] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf b/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf deleted file mode 100644 index 53707ae65c..0000000000 --- a/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Author: Glowbal - * Check if caller can access targets medical equipment, based upon accessLevel. - * - * Arguments: - * 0: The caller - * 1: The target - * - * ReturnValue: - * Can Treat - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_caller", "_target"]; - -private _accessLevel = _target getVariable [QGVAR(allowSharedEquipmentAccess), -1]; - -private _return = false; - -if (_accessLevel >= 0) then { - if (_accessLevel == 0) exitWith { _return = true; }; - if (_accessLevel == 1) exitWith { _return = (side _target == side _caller); }; - if (_accessLevel == 2) exitWith { _return = (group _target == group _caller); }; -}; - -_return; diff --git a/addons/medical/functions/fnc_canTreat.sqf b/addons/medical/functions/fnc_canTreat.sqf deleted file mode 100644 index 1c78eb1e43..0000000000 --- a/addons/medical/functions/fnc_canTreat.sqf +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Author: Glowbal - * Check if the treatment action can be performed. - * - * Arguments: - * 0: The caller - * 1: The target - * 2: Selection name - * 3: ACE_Medical_Treatments Classname - * - * ReturnValue: - * Can Treat - * - * Example: - * [player, cursorTarget, "Head", "SurgicalKit"] call ace_medical_fnc_canTreat - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName", "_className"]; - -if !(_target isKindOf "CAManBase") exitWith { false }; - -private _config = (ConfigFile >> "ACE_Medical_Actions" >> (["Basic", "Advanced"] select (GVAR(level)>=2)) >> _className); - -if !(isClass _config) exitwith {false}; - -// Allow self treatment check -if (_caller == _target && {getNumber (_config >> "allowSelfTreatment") == 0}) exitwith {false}; - -private _medicRequired = if (isNumber (_config >> "requiredMedic")) then { - getNumber (_config >> "requiredMedic"); -} else { - // Check for required class - if (isText (_config >> "requiredMedic")) exitwith { - missionNamespace getVariable [(getText (_config >> "requiredMedic")), 0] - }; - 0; -}; -if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith { false }; - -private _items = getArray (_config >> "items"); -if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith { false }; - -private _allowedSelections = getArray (_config >> "allowedSelections"); -if !("All" in _allowedSelections || {(_selectionName in _allowedSelections)}) exitwith { false }; - -private _return = true; -if (getText (_config >> "condition") != "") then { - private _condition = getText (_config >> "condition"); - if (isnil _condition) then { - _condition = compile _condition; - } else { - _condition = missionNamespace getVariable _condition; - }; - if (_condition isEqualType false) then { - _return = _condition; - } else { - _return = [_caller, _target, _selectionName, _className] call _condition; - }; -}; -if (!_return) exitwith { false }; - -private _patientStateCondition = if (isText(_config >> "patientStateCondition")) then { - missionNamespace getVariable [getText(_config >> "patientStateCondition"), 0] -} else { - getNumber(_config >> "patientStateCondition") -}; -if (_patientStateCondition == 1 && {!([_target] call FUNC(isInStableCondition))}) exitwith {false}; - -private _locations = getArray (_config >> "treatmentLocations"); -if ("All" in _locations) exitwith { true }; - -private _medFacility = {([_caller] call FUNC(isInMedicalFacility)) || ([_target] call FUNC(isInMedicalFacility))}; -private _medVeh = {([_caller] call FUNC(isInMedicalVehicle)) || ([_target] call FUNC(isInMedicalVehicle))}; - -{ - if (_x == "field") exitwith {_return = true;}; - if (_x == "MedicalFacility" && _medFacility) exitwith {_return = true;}; - if (_x == "MedicalVehicle" && _medVeh) exitwith {_return = true;}; - if !(isnil _x) exitwith { - private _val = missionNamespace getVariable _x; - if (_val isEqualType 0) then { - _return = switch (_val) do { - case 0: {true}; //AdvancedMedicalSettings_anywhere - case 1: {call _medVeh}; //AdvancedMedicalSettings_vehicle - case 2: {call _medFacility}; //AdvancedMedicalSettings_facility - case 3: {(call _medFacility) || {call _medVeh}}; //AdvancedMedicalSettings_vehicleAndFacility - default {false}; //Disabled - }; - }; - }; -} foreach _locations; - -_return; diff --git a/addons/medical/functions/fnc_canTreatCached.sqf b/addons/medical/functions/fnc_canTreatCached.sqf deleted file mode 100644 index 273da7dc4b..0000000000 --- a/addons/medical/functions/fnc_canTreatCached.sqf +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Author: Glowbal - * Cached Check if the treatment action can be performed. - * - * Arguments: - * 0: The caller - * 1: The target - * 2: Selection name - * 3: ACE_Medical_Treatments Classname - * - * ReturnValue: - * Can Treat - * - * Public: No - */ - -#include "script_component.hpp" - -#define MAX_DURATION_CACHE 2 -params ["", "_target", "_selection", "_classname"]; - -// parameters, function, namespace, uid -[_this, DFUNC(canTreat), _target, format [QGVAR(canTreat_%1_%2), _selection, _classname], MAX_DURATION_CACHE, "clearConditionCaches"] call EFUNC(common,cachedCall); diff --git a/addons/medical/functions/fnc_copyDeadBody.sqf b/addons/medical/functions/fnc_copyDeadBody.sqf deleted file mode 100644 index af601d9f33..0000000000 --- a/addons/medical/functions/fnc_copyDeadBody.sqf +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Author: Glowbal - * Makes a copy of a dead body. For handling dead bodies for actions such as load and carry. - * - * Arguments: - * 0: The oldbody - * 1: The caller - * - * Return Value: - * Returns the copy of the unit. If no copy could be made, returns the oldBody - * - * Public: No - */ - -#include "script_component.hpp" - -private ["_newUnit", "_class", "_group", "_position", "_side", "_name"]; -params ["_oldBody", "_caller"]; - -if (alive _oldBody) exitWith {_oldBody}; // we only want to do this for dead bodies - -_name = _oldBody getVariable ["ACE_name", "unknown"]; -_class = typeOf _oldBody; -_side = side _caller; -_group = createGroup _side; -_position = getPos _oldBody; - -_newUnit = _group createUnit [typeOf _oldBody, _position, [], 0, "NONE"]; -_newUnit setVariable ["ACE_name", _name, true]; - -_newUnit disableAI "TARGET"; -_newUnit disableAI "AUTOTARGET"; -_newUnit disableAI "MOVE"; -_newUnit disableAI "ANIM"; -_newUnit disableAI "FSM"; - -removeallweapons _newUnit; -removeallassigneditems _newUnit; -removeUniform _newUnit; -removeHeadgear _newUnit; -removeBackpack _newUnit; -removeVest _newUnit; - -_newUnit addHeadgear (headgear _oldBody); -_newUnit addBackpack (backpack _oldBody); -clearItemCargoGlobal (backpackContainer _newUnit); -clearMagazineCargoGlobal (backpackContainer _newUnit); -clearWeaponCargoGlobal (backpackContainer _newUnit); - -_newUnit addVest (vest _oldBody); -clearItemCargoGlobal (backpackContainer _newUnit); -clearMagazineCargoGlobal (backpackContainer _newUnit); -clearWeaponCargoGlobal (backpackContainer _newUnit); - -_newUnit addUniform (uniform _oldBody); -clearItemCargoGlobal (backpackContainer _newUnit); -clearMagazineCargoGlobal (backpackContainer _newUnit); -clearWeaponCargoGlobal (backpackContainer _newUnit); - -{_newUnit addMagazine _x} count (magazines _oldBody); -{_newUnit addWeapon _x} count (weapons _oldBody); -{_newUnit addItem _x} count (items _oldBody); - -_newUnit selectWeapon (primaryWeapon _newUnit); - -// We are attaching the old unit and hiding it, so we can keep the original unit until later. -_oldBody attachTo [_newUnit, [0,0,0]]; -if (isMultiplayer) then { - hideObjectGlobal _oldBody; -} else { - hideObject _oldBody; -}; - -_newUnit setVariable [QGVAR(copyOfUnit), _oldBody, true]; -_oldBody setVariable [QGVAR(hasCopy), _newUnit, true]; -_newUnit setVariable ["ACE_isDead", true, true]; -_newUnit setVariable ["ACE_isUnconscious", true, true]; -_newUnit setVariable [QGVAR(disableInteraction), true, true]; -_oldBody setVariable [QGVAR(disableInteraction), true, true]; - -[_newUnit, 0.89] call FUNC(setStructuralDamage); -_newUnit; diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf deleted file mode 100644 index fd3bc9a403..0000000000 --- a/addons/medical/functions/fnc_createLitter.sqf +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Author: Glowbal - * Spawns litter for the treatment action on the ground around the target - * - * Arguments: - * 0: The Caller - * 1: The target - * 2: The treatment Selection Name - * 3: The treatment classname - * 4: ? - * 5: Users of Items - * 6: Blood Loss on selection (previously called _previousDamage) - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -#define MIN_ENTRIES_LITTER_CONFIG 3 - -params ["_caller", "_target", "_selectionName", "_className", "", "_usersOfItems", "_bloodLossOnSelection"]; - -//Ensures comptibilty with other possible medical treatment configs -private _previousDamage = _bloodLossOnSelection; - -if !(GVAR(allowLitterCreation)) exitwith {}; -if (vehicle _caller != _caller || vehicle _target != _target) exitwith {}; - -private _config = if (GVAR(level) >= 2) then { - (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className); -} else { - (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className) -}; -if !(isClass _config) exitwith {false}; - -if !(isArray (_config >> "litter")) exitwith {}; -private _litter = getArray (_config >> "litter"); - -private _createLitter = { - params ["_unit", "_litterClass"]; - // @TODO: handle carriers over water - // For now, don't spawn litter if we are over water to avoid floating litter - if (surfaceIsWater (getPos _unit)) exitWith { false }; - - private _position = getPosATL _unit; - _position params ["_posX", "_posY", "_posZ"]; - _position = [_posX + (random 2) - 1, _posY + (random 2) - 1, _posZ]; - - private _direction = (random 360); - - // Create the litter, and timeout the event based on the cleanup delay - // The cleanup delay for events in MP is handled by the server side - [QGVAR(createLitter), [_litterClass, _position, _direction], 0] call EFUNC(common,syncedEvent); - - true -}; - -private _createdLitter = []; -{ - if (_x isEqualType []) then { - if (count _x < MIN_ENTRIES_LITTER_CONFIG) exitwith {}; - - _x params ["_selection", "_litterCondition", "_litterOptions"]; - - if (toLower _selection in [toLower _selectionName, "all"]) then { // in is case sensitve. We can be forgiving here, so lets use toLower. - - if (isnil _litterCondition) then { - _litterCondition = if (_litterCondition != "") then {compile _litterCondition} else {{true}}; - } else { - _litterCondition = missionNamespace getVariable _litterCondition; - if (!(_litterCondition isEqualType {})) then {_litterCondition = {false}}; - }; - if !([_caller, _target, _selectionName, _className, _usersOfItems, _bloodLossOnSelection] call _litterCondition) exitwith {}; - - if (_litterOptions isEqualType []) then { - // Loop through through the litter options and place the litter - { - if (_x isEqualType [] && {(count _x > 0)}) then { - [_target, selectRandom _x] call _createLitter; - }; - if (_x isEqualType "") then { - [_target, _x] call _createLitter; - }; - } foreach _litterOptions; - }; - }; - }; -} foreach _litter; diff --git a/addons/medical/functions/fnc_determineIfFatal.sqf b/addons/medical/functions/fnc_determineIfFatal.sqf deleted file mode 100644 index 9dbbcce9a6..0000000000 --- a/addons/medical/functions/fnc_determineIfFatal.sqf +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Author: Glowbal - * Determine If Fatal - * - * Arguments: - * 0: Unit - * 1: Part - * 2: with Damage (default: 0) - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -#define INCREASE_CHANCE_HEAD 0.05 -#define INCREASE_CHANCE_TORSO 0.03 -#define INCREASE_CHANGE_LIMB 0.01 - -#define CHANGE_FATAL_HEAD 0.7 -#define CHANGE_FATAL_TORSO 0.6 -#define CHANGE_FATAL_LIMB 0.1 - -params ["_unit", "_part", ["_withDamage", 0]]; - -if (!alive _unit) exitWith {true}; -if ((vehicle _unit != _unit) && {!alive (vehicle _unit)}) exitWith { true }; -if (_part < 0 || _part > 5) exitWith {false}; - -// Find the correct Damage threshold for unit. -private _damageThreshold = [1,1,1]; -if ([_unit] call EFUNC(common,IsPlayer)) then { - _damageThreshold =_unit getVariable[QGVAR(unitDamageThreshold), [GVAR(playerDamageThreshold), GVAR(playerDamageThreshold), GVAR(playerDamageThreshold) * 1.7]]; -} else { - _damageThreshold =_unit getVariable[QGVAR(unitDamageThreshold), [GVAR(AIDamageThreshold), GVAR(AIDamageThreshold), GVAR(AIDamageThreshold) * 1.7]]; -}; -_damageThreshold params ["_thresholdHead", "_thresholdTorso", "_thresholdLimbs"]; - -private _damageBodyPart = ((_unit getVariable [QGVAR(bodyPartStatus),[0, 0, 0, 0, 0, 0]]) select _part) + _withDamage; - -// Check if damage to body part is higher as damage head -if (_part == 0) exitWith { - private _chanceFatal = CHANGE_FATAL_HEAD + ((INCREASE_CHANCE_HEAD * (_damageBodyPart - _thresholdHead)) * 10); - (_damageBodyPart >= _thresholdHead && {(_chanceFatal >= random(1))}); -}; - -// Check if damage to body part is higher as damage torso -if (_part == 1) exitWith { - private _chanceFatal = CHANGE_FATAL_TORSO + ((INCREASE_CHANCE_TORSO * (_damageBodyPart - _thresholdTorso)) * 10); - (_damageBodyPart >= _thresholdTorso && {(_chanceFatal >= random(1))}); -}; -// Check if damage to body part is higher as damage limbs -// We use a slightly lower decrease for limbs, as we want any injuries done to those to be less likely to be fatal compared to head shots or torso. -private _chanceFatal = CHANGE_FATAL_LIMB + ((INCREASE_CHANGE_LIMB * (_damageBodyPart - _thresholdLimbs)) * 10); -(_damageBodyPart >= _thresholdLimbs && {(_chanceFatal >= random(1))}); diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf deleted file mode 100644 index ad53842275..0000000000 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Author: Glowbal - * Displays the patient information for given unit. - * - * Arguments: - * 0: The Unit - * 1: Show (default: true) - * 2: Selection (default: 0) - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" -#define MAX_DISTANCE 10 - -// Exit for basic medical -if (GVAR(level) < 2) exitWith {}; - -params ["_target", ["_show", true], ["_selectionN", 0]]; - -GVAR(currentSelectedSelectionN) = [0, _selectionN] select (IS_SCALAR(_selectionN)); -GVAR(displayPatientInformationTarget) = [ObjNull, _target] select _show; - -if (_show) then { - ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutRsc [QGVAR(DisplayInformation),"PLAIN"]; - - [{ - private ["_target", "_display", "_alphaLevel", "_damaged", "_availableSelections", "_openWounds", "_selectionBloodLoss", "_red", "_green", "_blue", "_alphaLevel", "_allInjuryTexts", "_lbCtrl", "_genericMessages"]; - params ["_args", "_idPFH"]; - _args params ["_target", "_selectionN"]; - - if (GVAR(displayPatientInformationTarget) != _target || GVAR(currentSelectedSelectionN) != _selectionN) exitwith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - if (ACE_player distance _target > MAX_DISTANCE) exitwith { - ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; - [_idPFH] call CBA_fnc_removePerFrameHandler; - [QEGVAR(common,displayTextStructured), [[LSTRING(DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player], [ACE_player]] call CBA_fnc_targetEvent; - }; - - disableSerialization; - private _display = uiNamespace getVariable QGVAR(DisplayInformation); - if (isnil "_display") exitwith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - - private _allInjuryTexts = []; - private _genericMessages = []; - - private _partText = [LSTRING(Head), LSTRING(Torso), LSTRING(LeftArm) ,LSTRING(RightArm) ,LSTRING(LeftLeg), LSTRING(RightLeg)] select _selectionN; - _genericMessages pushback [localize _partText, [1, 1, 1, 1]]; - - if (_target getVariable[QGVAR(isBleeding), false]) then { - _genericMessages pushback [localize LSTRING(Status_Bleeding), [1, 0.1, 0.1, 1]]; - }; - if (_target getVariable[QGVAR(hasLostBlood), 0] > 1) then { - _genericMessages pushback [localize LSTRING(Status_Lost_Blood), [1, 0.1, 0.1, 1]]; - }; - - if (((_target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]) select _selectionN) > 0) then { - _genericMessages pushback [localize LSTRING(Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; - }; - if (_target getVariable[QGVAR(hasPain), false]) then { - _genericMessages pushback [localize LSTRING(Status_Pain), [1, 1, 1, 1]]; - }; - - private _totalIvVolume = 0; - { - private _value = _target getVariable _x; - if !(isnil "_value") then { - _totalIvVolume = _totalIvVolume + (_target getVariable [_x, 0]); - }; - } foreach GVAR(IVBags); - - if (_totalIvVolume >= 1) then { - _genericMessages pushback [format[localize LSTRING(receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; - }; - - private _damaged = [false, false, false, false, false, false]; - private _selectionBloodLoss = [0,0,0,0,0,0]; - - private _openWounds = _target getVariable [QGVAR(openWounds), []]; - { - _x params ["", "_x1", "_selectionX", "_amountOf", "_x4"]; - // Find how much this bodypart is bleeding - if (_amountOf > 0) then { - _damaged set [_selectionX, true]; - _selectionBloodLoss set [_selectionX, (_selectionBloodLoss select _selectionX) + (20 * (_x4 * _amountOf))]; - - if (_selectionN == _selectionX) then { - // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] - if (_amountOf >= 1) then { - // TODO localization - _allInjuryTexts pushback [format["%2x %1", (GVAR(AllWoundInjuryTypes) select _x1) select 6, ceil _amountOf], [1,1,1,1]]; - } else { - // TODO localization - _allInjuryTexts pushback [format["Partial %1", (GVAR(AllWoundInjuryTypes) select _x1) select 6], [1,1,1,1]]; - }; - }; - }; - } foreach _openWounds; - - private _bandagedwounds = _target getVariable [QGVAR(bandagedWounds), []]; - { - _x params ["", "", "_selectionX", "_amountOf", "_x4"]; - // Find how much this bodypart is bleeding - if !(_damaged select _selectionX) then { - _selectionBloodLoss set [_selectionX, (_selectionBloodLoss select _selectionX) + (20 * (_x4 * _amountOf))]; - }; - if (_selectionN == _selectionX) then { - // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] - if (_amountOf > 0) then { - if (_amountOf >= 1) then { - // TODO localization - _allInjuryTexts pushback [format["[B] %2x %1", (GVAR(AllWoundInjuryTypes) select (_x select 1)) select 6, ceil _amountOf], [0.88,0.7,0.65,1]]; - } else { - // TODO localization - _allInjuryTexts pushback [format["[B] Partial %1", (GVAR(AllWoundInjuryTypes) select (_x select 1)) select 6], [0.88,0.7,0.65,1]]; - }; - }; - }; - } foreach _bandagedwounds; - - // Handle the body image coloring - private _availableSelections = [50,51,52,53,54,55]; - { - private _total = _x; - private _red = 1; - private _green = 1; - private _blue = 1; - - if (_total > 0) then { - if (_damaged select _forEachIndex) then { - _green = (0.9 - _total) max 0; - _blue = _green; - } else { - _green = (0.9 - _total) max 0; - _red = _green; - //_blue = _green; - }; - }; - (_display displayCtrl (_availableSelections select _foreachIndex)) ctrlSetTextColor [_red, _green, _blue, 1.0]; - } foreach _selectionBloodLoss; - - private _lbCtrl = (_display displayCtrl 200); - lbClear _lbCtrl; - { - _x params ["_add", "_color"]; - _lbCtrl lbAdd _add; - _lbCtrl lbSetColor [_foreachIndex, _color]; - } foreach _genericMessages; - - private _amountOfGeneric = count _genericMessages; - { - _x params ["_add", "_color"]; - _lbCtrl lbAdd _add; - _lbCtrl lbSetColor [_foreachIndex + _amountOfGeneric, _color]; - } foreach _allInjuryTexts; - if (count _allInjuryTexts == 0) then { - _lbCtrl lbAdd (localize LSTRING(NoInjuriesBodypart)); - }; - - private _logCtrl = (_display displayCtrl 302); - lbClear _logCtrl; - - private _logs = _target getVariable [QGVAR(logFile_Activity), []]; - { - _x params ["_message", "_moment", "_type", "_arguments"]; - if (isLocalized _message) then { - _message = localize _message; - }; - - { - if (_x isEqualType "" && {isLocalized _x}) then { - _arguments set [_foreachIndex, localize _x]; - }; - } foreach _arguments; - _message = format([_message] + _arguments); - _logCtrl lbAdd format["%1 %2", _moment, _message]; - } foreach _logs; - - private _triageStatus = [_target] call FUNC(getTriageStatus); - (_display displayCtrl 303) ctrlSetText (_triageStatus select 0); - (_display displayCtrl 303) ctrlSetBackgroundColor (_triageStatus select 2); - - }, 0, [_target, GVAR(currentSelectedSelectionN)]] call CBA_fnc_addPerFrameHandler; - -} else { - ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; -}; diff --git a/addons/medical/functions/fnc_displayTriageCard.sqf b/addons/medical/functions/fnc_displayTriageCard.sqf deleted file mode 100644 index 1633853214..0000000000 --- a/addons/medical/functions/fnc_displayTriageCard.sqf +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Author: Glowbal - * Display triage card for a unit - * - * Arguments: - * 0: The unit - * 1: Show (default: true) - * - * Return Value: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_target", ["_show", true]]; - -GVAR(TriageCardTarget) = if (_show) then {_target} else {ObjNull}; - -if (_show) then { - //("ACE_MedicalTriageCard" call BIS_fnc_rscLayer) cutRsc [QGVAR(triageCard),"PLAIN"]; - createDialog QGVAR(triageCard); - - [{ - params ["_args", "_idPFH"]; - _args params ["_target"]; - if (GVAR(TriageCardTarget) != _target) exitWith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - - disableSerialization; - private _display = uiNamespace getVariable QGVAR(triageCard); - if (isNil "_display") exitWith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - - private _triageCardTexts = []; - - // TODO fill the lb with the appropiate information for the patient - private _lbCtrl = (_display displayCtrl 200); - lbClear _lbCtrl; - - private _log = _target getVariable [QGVAR(triageCard), []]; - { - _x params ["_item", "_amount"]; - private _message = _item; - if (isClass(configFile >> "CfgWeapons" >> _item)) then { - _message = getText(configFile >> "CfgWeapons" >> _item >> "DisplayName"); - } else { - if (isLocalized _message) then { - _message = localize _message; - }; - }; - _triageCardTexts pushBack format["%1x - %2", _amount, _message]; - } forEach _log; - - if (count _triageCardTexts == 0) then { - _lbCtrl lbAdd (localize LSTRING(TriageCard_NoEntry)); - }; - { - _lbCtrl lbAdd _x; - } forEach _triageCardTexts; - - private _triageStatus = [_target] call FUNC(getTriageStatus); - _triageStatus params ["_text", "", "_color"]; - - (_display displayCtrl 2000) ctrlSetText _text; - (_display displayCtrl 2000) ctrlSetBackgroundColor _color; - - }, 0, [_target]] call CBA_fnc_addPerFrameHandler; - -} else { - //("ACE_MedicalTriageCard" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; - closeDialog 7010; -}; diff --git a/addons/medical/functions/fnc_dropDownTriageCard.sqf b/addons/medical/functions/fnc_dropDownTriageCard.sqf deleted file mode 100644 index c499283446..0000000000 --- a/addons/medical/functions/fnc_dropDownTriageCard.sqf +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Author: Glowbal - * Display triage card for a unit - * - * Arguments: - * 0: Show - * - * Return Value: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_show"]; - -disableSerialization; -private _display = uiNamespace getVariable QGVAR(triageCard); -if (isNil "_display") exitWith {}; - -private _pos = [0,0,0,0]; -if (_show) then { - _pos = ctrlPosition (_display displayCtrl 2001); -}; -for "_idc" from 2002 to 2006 step 1 do { - _pos set [1, (_pos select 1) + (_pos select 3)]; - private _ctrl = (_display displayCtrl _idc); - _ctrl ctrlSetPosition _pos; - _ctrl ctrlCommit 0; -}; diff --git a/addons/medical/functions/fnc_getBloodLoss.sqf b/addons/medical/functions/fnc_getBloodLoss.sqf index 8f2f968e99..a7e6ae15b8 100644 --- a/addons/medical/functions/fnc_getBloodLoss.sqf +++ b/addons/medical/functions/fnc_getBloodLoss.sqf @@ -13,8 +13,6 @@ #include "script_component.hpp" -#define BLOODLOSSRATE_BASIC 0.2 - // TODO Only use this calculation if medium or higher, otherwise use vanilla calculations (for basic medical). params ["_unit"]; diff --git a/addons/medical/functions/fnc_getTriageStatus.sqf b/addons/medical/functions/fnc_getTriageStatus.sqf deleted file mode 100644 index 79af660407..0000000000 --- a/addons/medical/functions/fnc_getTriageStatus.sqf +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Author: Glowbal - * Get the triage status and information from a unit - * - * Arguments: - * 0: The unit - * - * Return Value: - * 0: Name - * 1: Status ID - * 2: Color > - * - * Public: Yes - */ - -#include "script_component.hpp" - -private ["_unit","_return","_status"]; -params ["_unit"]; -_status = _unit getVariable [QGVAR(triageLevel), -1]; -_return = switch (_status) do { - case 1: {[localize LSTRING(Triage_Status_Minor), 1, [0, 0.5, 0, 0.9]]}; - case 2: {[localize LSTRING(Triage_Status_Delayed), 2, [0.7, 0.5, 0, 0.9]]}; - case 3: {[localize LSTRING(Triage_Status_Immediate), 3, [0.4, 0.07, 0.07, 0.9]]}; - case 4: {[localize LSTRING(Triage_Status_Deceased), 4, [0, 0, 0, 0.9]]}; - default {[localize LSTRING(Triage_Status_None), 0, [0, 0, 0, 0.9]]}; -}; -_return diff --git a/addons/medical/functions/fnc_getUnconsciousCondition.sqf b/addons/medical/functions/fnc_getUnconsciousCondition.sqf deleted file mode 100644 index ad366b5ab2..0000000000 --- a/addons/medical/functions/fnc_getUnconsciousCondition.sqf +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Author: Glowbal - * Get whatever or not a unit should be or stay unconscious. - * - * Arguments: - * 0: The Unit - * - * ReturnValue: - * Should the unit stay unconscious? - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_unit"]; - -if (isnil QGVAR(unconsciousConditions)) then { - GVAR(unconsciousConditions) = []; -}; - -private _return = false; -{ - if ((_x isEqualType {}) && {([_unit] call _x)}) exitwith { - _return = true; - }; -} foreach GVAR(unconsciousConditions); - -_return diff --git a/addons/medical/functions/fnc_handleBandageOpening.sqf b/addons/medical/functions/fnc_handleBandageOpening.sqf deleted file mode 100644 index f2a5a45af2..0000000000 --- a/addons/medical/functions/fnc_handleBandageOpening.sqf +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Author: Glowbal - * Handles the bandage of a patient. - * - * Arguments: - * 0: The target - * 1: The impact - * 2: Selection part number - * 3: Injury index - * 4: Injury - * 5: Used Bandage type - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -private ["_className", "_reopeningChance", "_reopeningMinDelay", "_reopeningMaxDelay", "_config", "_woundTreatmentConfig", "_bandagedWounds", "_exist", "_injuryId", "_existingInjury", "_delay", "_openWounds", "_selectedInjury", "_bandagedInjury"]; -params ["_target", "_impact", "_part", "_injuryIndex", "_injury", "_bandage"]; - -private _classID = _injury select 1; -private _className = GVAR(woundClassNames) select _classID; - -// default, just in case.. -private _reopeningChance = 0.1; -private _reopeningMinDelay = 120; -private _reopeningMaxDelay = 200; - -// Get the default values for the used bandage -private _config = (ConfigFile >> "ACE_Medical_Advanced" >> "Treatment" >> "Bandaging"); -if (isClass (_config >> _bandage)) then { - _config = (_config >> _bandage); - _reopeningChance = getNumber (_config >> "reopeningChance"); - _reopeningMinDelay = getNumber (_config >> "reopeningMinDelay"); - _reopeningMaxDelay = getNumber (_config >> "reopeningMaxDelay") max _reopeningMinDelay; -} else { - ACE_LOGWARNING_2("No config for bandage [%1] config base [%2]", _bandage, _config); -}; - -if (isClass (_config >> _className)) then { - private _woundTreatmentConfig = (_config >> _className); - if (isNumber (_woundTreatmentConfig >> "reopeningChance")) then { - _reopeningChance = getNumber (_woundTreatmentConfig >> "reopeningChance"); - }; - if (isNumber (_woundTreatmentConfig >> "reopeningMinDelay")) then { - _reopeningMinDelay = getNumber (_woundTreatmentConfig >> "reopeningMinDelay"); - }; - if (isNumber (_woundTreatmentConfig >> "reopeningMaxDelay")) then { - _reopeningMaxDelay = getNumber (_woundTreatmentConfig >> "reopeningMaxDelay") max _reopeningMinDelay; - }; -} else { - ACE_LOGWARNING_2("No config for wound type [%1] config base [%2]", _className, _config); -}; -TRACE_5("configs",_bandage,_className,_reopeningChance,_reopeningMinDelay,_reopeningMaxDelay); - -private _bandagedWounds = _target getVariable [QGVAR(bandagedWounds), []]; -private _injuryType = _injury select 1; -private _exist = false; -private _bandagedInjury = []; -{ - if ((_x select 1) == _injuryType && (_x select 2) == (_injury select 2)) exitwith { - _exist = true; - _existingInjury = _x; - _existingInjury set [3, (_existingInjury select 3) + _impact]; - _bandagedWounds set [_foreachIndex, _existingInjury]; - - _bandagedInjury = _existingInjury; - }; -} foreach _bandagedWounds; - -if !(_exist) then { - // [ID, classID, bodypart, percentage treated, bloodloss rate] - _bandagedInjury = [_injury select 0, _injury select 1, _injury select 2, _impact, _injury select 4]; - _bandagedWounds pushback _bandagedInjury; -}; - -_target setVariable [QGVAR(bandagedWounds), _bandagedWounds, true]; - -TRACE_1("",_reopeningChance); -// Check if we are ever going to reopen this -if (random(1) <= _reopeningChance) then { - _delay = _reopeningMinDelay + random(_reopeningMaxDelay - _reopeningMinDelay); - TRACE_1("Will open",_delay); - [{ - params ["_target", "_impact", "_part", "_injuryIndex", "_injury"]; - TRACE_5("params",_target,_impact,_part,_injuryIndex,_injury); - - //if (alive _target) then { - private _openWounds = _target getVariable [QGVAR(openWounds), []]; - if ((count _openWounds) - 1 < _injuryIndex) exitwith {}; - private _selectedInjury = _openWounds select _injuryIndex; - if (_selectedInjury select 1 == _injury select 1 && (_selectedInjury select 2) == (_injury select 2)) then { // matching the IDs - - private _bandagedWounds = _target getVariable [QGVAR(bandagedWounds), []]; - private _exist = false; - private _injuryId = _injury select 1; - { - if ((_x select 1) == _injuryId && (_x select 2) == (_injury select 2)) exitwith { - _exist = true; - _existingInjury = _x; - _existingInjury set [3, ((_existingInjury select 3) - _impact) max 0]; - _bandagedWounds set [_foreachIndex, _existingInjury]; - }; - } foreach _bandagedWounds; - - if (_exist) then { - TRACE_2("Reopening Wound",_bandagedWounds,_openWounds); - _selectedInjury set [3, (_selectedInjury select 3) + _impact]; - _openWounds set [_injuryIndex, _selectedInjury]; - _target setVariable [QGVAR(bandagedWounds), _bandagedWounds, true]; - _target setVariable [QGVAR(openWounds), _openWounds, true]; - }; - }; - // Otherwise something went wrong, we we don't reopen them.. - //}; - }, [_target, _impact, _part, _injuryIndex, +_injury], _delay] call CBA_fnc_waitAndExecute; -}; diff --git a/addons/medical/functions/fnc_handleCollisionDamage.sqf b/addons/medical/functions/fnc_handleCollisionDamage.sqf deleted file mode 100644 index 191a91cb6a..0000000000 --- a/addons/medical/functions/fnc_handleCollisionDamage.sqf +++ /dev/null @@ -1,14 +0,0 @@ -// 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_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf deleted file mode 100644 index b67d2107b0..0000000000 --- a/addons/medical/functions/fnc_handleCreateLitter.sqf +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Author: Glowbal - * handle Litter Create - * - * Arguments: - * 0: Litter Class - * 1: Position - * 2: Unit - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -if(!hasInterface) exitWith { false }; - -params ["_litterClass", "_position", "_direction"]; -private["_litterObject", "_maxLitterCount"]; -//IGNORE_PRIVATE_WARNING(_values); - -if (isNil QGVAR(allCreatedLitter)) then { - GVAR(allCreatedLitter) = []; - GVAR(litterPFHRunning) = false; -}; - -_litterObject = _litterClass createVehicleLocal _position; -_litterObject setDir _direction; -_litterObject setPosATL _position; -// Move the litter next frame to get rid of HORRIBLE spacing, fixes #1112 -[{ params ["_object", "_pos"]; _object setPosATL _pos; }, [_litterObject, _position]] call CBA_fnc_execNextFrame; - -_maxLitterCount = getArray (configFile >> "ACE_Settings" >> QGVAR(litterSimulationDetail) >> "_values") select GVAR(litterSimulationDetail); -if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then { - // gank the first litter object, and spawn ours. - private["_oldLitter"]; - _oldLitter = GVAR(allCreatedLitter) deleteAt 0; - { - deleteVehicle _x; - } forEach (_oldLitter select 1); -}; - -GVAR(allCreatedLitter) pushBack [CBA_missionTime, [_litterObject]]; - -if(!GVAR(litterPFHRunning) && {GVAR(litterCleanUpDelay) > 0}) then { - // Start the litter cleanup loop - GVAR(litterPFHRunning) = true; - call FUNC(litterCleanupLoop); -}; diff --git a/addons/medical/functions/fnc_handleKilled.sqf b/addons/medical/functions/fnc_handleKilled.sqf deleted file mode 100644 index c8d08cbde2..0000000000 --- a/addons/medical/functions/fnc_handleKilled.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Author: Glowbal - * Called when a unit is killed - * - * Arguments: - * 0: The Unit - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -private "_openWounds"; -params ["_unit"]; -if (!local _unit) exitWith {}; - -_unit setVariable [QGVAR(pain), 0]; -if (GVAR(level) >= 2) then { - _unit setVariable [QGVAR(heartRate), 0]; - _unit setVariable [QGVAR(bloodPressure), [0, 0]]; - _unit setVariable [QGVAR(airwayStatus), 0]; -}; diff --git a/addons/medical/functions/fnc_handleLocal.sqf b/addons/medical/functions/fnc_handleLocal.sqf deleted file mode 100644 index 42e8a9b7b2..0000000000 --- a/addons/medical/functions/fnc_handleLocal.sqf +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Author: Glowbal - * Called when a unit switched locality - * - * Arguments: - * 0: The Unit - * 1: Is local - * - * ReturnValue: - * None - * - * Public: No - */ - - -#include "script_component.hpp" - -params ["_unit", "_local"]; -if (_local) then { - // If the unit had a loop tracking its vitals, restart it locally - if (_unit getVariable[QGVAR(addedToUnitLoop),false]) then { - [_unit, true] call FUNC(addVitalLoop); - }; - - if ((_unit getVariable ["ACE_isUnconscious",false]) && {count (_unit getVariable [QGVAR(unconsciousArguments), []]) >= 6}) then { - private "_arguments"; - _arguments = (_unit getVariable [QGVAR(unconsciousArguments), []]); - _arguments set [2, CBA_missionTime]; - - [DFUNC(unconsciousPFH), 0.1, _arguments ] call CBA_fnc_addPerFrameHandler; - - _unit setVariable [QGVAR(unconsciousArguments), nil, true]; - }; -}; diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf deleted file mode 100644 index 96fecef035..0000000000 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Author: Glowbal - * Updates the vitals. Is expected to be called every second. - * - * Arguments: - * 0: The Unit - * - * ReturnValue: - * - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit", "_interval"]; -TRACE_3("ACE_DEBUG",_unit,_interval,_unit); -if (_interval == 0) exitWith {}; - -private _lastTimeValuesSynced = _unit getVariable [QGVAR(lastMomentValuesSynced), 0]; -private _syncValues = (CBA_missionTime - _lastTimeValuesSynced >= (10 + floor(random(10))) && GVAR(keepLocalSettingsSynced)); -if (_syncValues) then { - _unit setVariable [QGVAR(lastMomentValuesSynced), CBA_missionTime]; -}; - -private _bloodVolume = (_unit getVariable [QGVAR(bloodVolume), 100]) + ([_unit] call FUNC(getBloodVolumeChange)); -_bloodVolume = _bloodVolume max 0; - -_unit setVariable [QGVAR(bloodVolume), _bloodVolume, _syncValues]; - -TRACE_3("ACE_DEBUG",_bloodVolume,_syncValues,_unit); -// Set variables for synchronizing information across the net -if (_bloodVolume < 100) then { - if (_bloodVolume < 90) then { - TRACE_4("ACE_DEBUG",_bloodVolume,_unit getVariable QGVAR(hasLostBlood),_syncValues,_unit); - if (_unit getVariable [QGVAR(hasLostBlood), 0] != 2) then { - _unit setVariable [QGVAR(hasLostBlood), 2, true]; - }; - } else { - TRACE_4("ACE_DEBUG", _bloodVolume,_unit getVariable QGVAR(hasLostBlood),_syncValues,_unit); - if (_unit getVariable [QGVAR(hasLostBlood), 0] != 1) then { - _unit setVariable [QGVAR(hasLostBlood), 1, true]; - }; - }; -} else { - TRACE_4("ACE_DEBUG",_bloodVolume,_unit getVariable QGVAR(hasLostBlood),_syncValues,_unit); - if (_unit getVariable [QGVAR(hasLostBlood), 0] != 0) then { - _unit setVariable [QGVAR(hasLostBlood), 0, true]; - }; -}; - -TRACE_3("ACE_DEBUG",[_unit] call FUNC(getBloodLoss),_unit getVariable QGVAR(isBleeding),_unit); -if (([_unit] call FUNC(getBloodLoss)) > 0) then { - if !(_unit getVariable [QGVAR(isBleeding), false]) then { - _unit setVariable [QGVAR(isBleeding), true, true]; - }; -} else { - if (_unit getVariable [QGVAR(isBleeding), false]) then { - _unit setVariable [QGVAR(isBleeding), false, true]; - }; -}; - -private _painStatus = _unit getVariable [QGVAR(pain), 0]; -TRACE_4("ACE_DEBUG",_painStatus,_unit getVariable QGVAR(hasPain),_unit getVariable QGVAR(painSuppress),_unit); -if (_painStatus > (_unit getVariable [QGVAR(painSuppress), 0])) then { - if !(_unit getVariable [QGVAR(hasPain), false]) then { - _unit setVariable [QGVAR(hasPain), true, true]; - }; -} else { - if (_unit getVariable [QGVAR(hasPain), false]) then { - _unit setVariable [QGVAR(hasPain), false, true]; - }; -}; - -if (_bloodVolume < 30) exitWith { - [_unit] call FUNC(setDead); -}; - -if ([_unit] call EFUNC(common,isAwake)) then { - if (_bloodVolume < 60) then { - if (random(1) > 0.9) then { - [_unit, true, 15 + random(20)] call FUNC(setUnconscious); - }; - }; -}; - -if (GVAR(level) == 1) then { - TRACE_5("ACE_DEBUG_BASIC_VITALS",_painStatus,_unit getVariable QGVAR(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); - // reduce pain - if (_painStatus > 0) then { - _unit setVariable [QGVAR(pain), (_painStatus - 0.001 * _interval) max 0, _syncValues]; - }; - - // reduce painkillers - if (_unit getVariable [QGVAR(morphine), 0] > 0) then { - _unit setVariable [QGVAR(morphine), ((_unit getVariable [QGVAR(morphine), 0]) - 0.0015 * _interval) max 0, _syncValues]; - }; -}; - -// handle advanced medical, with vitals -if (GVAR(level) >= 2) then { - TRACE_6("ACE_DEBUG_ADVANCED_VITALS",_painStatus,_bloodVolume, _unit getVariable QGVAR(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); - - // Handle pain due tourniquets, that have been applied more than 120 s ago - private _oldTourniquets = (_unit getVariable [QGVAR(tourniquets), []]) select {_x > 0 && {CBA_missionTime - _x > 120}}; - // Increase pain at a rate of 0.001 units/s per old tourniquet - _painStatus = _painStatus + (count _oldTourniquets) * 0.001 * _interval; - - // Set the vitals - private _heartRate = (_unit getVariable [QGVAR(heartRate), 80]) + (([_unit] call FUNC(getHeartRateChange)) * _interval); - _unit setVariable [QGVAR(heartRate), _heartRate max 0, _syncValues]; - - private _bloodPressure = [_unit] call FUNC(getBloodPressure); - _unit setVariable [QGVAR(bloodPressure), _bloodPressure, _syncValues]; - - _painReduce = [0.001, 0.002] select (_painStatus > 5); - - // @todo: replace this and the rest of the setVariable with EFUNC(common,setApproximateVariablePublic) - _unit setVariable [QGVAR(pain), (_painStatus - _painReduce * _interval) max 0, _syncValues]; - - TRACE_8("ACE_DEBUG_ADVANCED_VITALS",_painStatus,_painReduce,_heartRate,_bloodVolume,_bloodPressure,_interval,_syncValues,_unit); - - // Check vitals for medical status - // TODO check for in revive state instead of variable - _bloodPressure params ["_bloodPressureL", "_bloodPressureH"]; - - if (!(_unit getVariable [QGVAR(inCardiacArrest),false])) then { - if (_heartRate < 10 || _bloodPressureH < 30 || _bloodVolume < 20) then { - [_unit, true, 10+ random(20)] call FUNC(setUnconscious); // safety check to ensure unconsciousness for units if they are not dead already. - }; - - if ((_bloodPressureH > 260) - || {_bloodPressureL < 40 && ({_heartRate > 190})} - || {(_bloodPressureH > 145 && {_heartRate > 150})}) then { - - if (random(1) > 0.7) then { - [_unit] call FUNC(setCardiacArrest); - }; - }; - if (_heartRate > 200 || (_heartRate < 20)) then { - [_unit] call FUNC(setCardiacArrest); - }; - }; - - // syncing any remaining values - if (_syncValues) then { - TRACE_3("ACE_DEBUG_IVBAGS_SYNC",GVAR(IVBags),_syncValues,_unit); - { - private "_value"; - _value = _unit getVariable _x; - if !(isNil "_value") then { - _unit setVariable [_x,(_unit getVariable [_x, 0]), true]; - }; - } forEach GVAR(IVBags); - }; -}; diff --git a/addons/medical/functions/fnc_hasMedicalEnabled.sqf b/addons/medical/functions/fnc_hasMedicalEnabled.sqf deleted file mode 100644 index 5cc5b60aa3..0000000000 --- a/addons/medical/functions/fnc_hasMedicalEnabled.sqf +++ /dev/null @@ -1,26 +0,0 @@ - -/* - * Author: Glowbal - * Check if unit has CMS enabled - * - * Arguments: - * 0: unit - * - * Return Value: - * enabled - * - * Example: - * [Unit] call ace_medical_fnc_hasMedicalEnabled - * - * Public: No - */ -#include "script_component.hpp" - -params ["_unit"]; - -private _medicalEnabled = _unit getVariable QGVAR(enableMedical); -if (isNil "_medicalEnabled") exitWith { - (((GVAR(enableFor) == 0 && (isPlayer _unit || (_unit getVariable [QEGVAR(common,isDeadPlayer), false])))) || (GVAR(enableFor) == 1) || GVAR(level) == 1) -}; - -_medicalEnabled diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf index 504135c204..8ef98f450e 100644 --- a/addons/medical/functions/fnc_init.sqf +++ b/addons/medical/functions/fnc_init.sqf @@ -14,24 +14,18 @@ params ["_unit"]; -// basic _unit setVariable [QGVAR(pain), 0, true]; -_unit setVariable [QGVAR(morphine), 0, true]; _unit setVariable [QGVAR(bloodVolume), 100, true]; -_unit setVariable ["ACE_isUnconscious", false, true]; +_unit setVariable ["ACE_isUnconscious", false, true]; // TODO this is done based on state -// advanced // tourniquets _unit setVariable [QGVAR(tourniquets), [0,0,0,0,0,0], true]; - -//Delayed Medications (from tourniquets) -_unit setVariable [QGVAR(occludedMedications), nil, true]; +_unit setVariable [QGVAR(occludedMedications), nil, true]; //Delayed Medications (from tourniquets) // wounds and injuries _unit setVariable [QGVAR(openWounds), [], true]; _unit setVariable [QGVAR(bandagedWounds), [], true]; _unit setVariable [QGVAR(internalWounds), [], true]; -_unit setVariable [QGVAR(lastUniqueWoundID), 1, true]; // vitals _unit setVariable [QGVAR(heartRate), 80]; @@ -43,8 +37,9 @@ _unit setVariable [QGVAR(peripheralResistance), 100]; _unit setVariable [QGVAR(fractures), [], true]; // triage card and logs -_unit setVariable [QGVAR(triageLevel), 0, true]; -_unit setVariable [QGVAR(triageCard), [], true]; +// TODO move to treatment +//_unit setVariable [QGVAR(triageLevel), 0, true]; +//_unit setVariable [QGVAR(triageCard), [], true]; // IVs _unit setVariable [QGVAR(salineIVVolume), 0, true]; @@ -60,8 +55,8 @@ _unit setVariable [QGVAR(airwayOccluded), false]; _unit setVariable [QGVAR(airwayCollapsed), false]; // generic medical admin -_unit setVariable [QGVAR(addedToUnitLoop), false, true]; -_unit setVariable [QGVAR(inCardiacArrest), false, true]; +_unit setVariable [QGVAR(addedToUnitLoop), false, true]; // TODO this is replaced by unit state +_unit setVariable [QGVAR(inCardiacArrest), false, true]; // TODO this is no longer present _unit setVariable [QGVAR(hasLostBlood), 0, true]; _unit setVariable [QGVAR(isBleeding), false, true]; _unit setVariable [QGVAR(hasPain), false, true]; @@ -77,12 +72,14 @@ _allUsedMedication = _unit getVariable [QGVAR(allUsedMedication), []]; } forEach _allUsedMedication; _unit setVariable [QGVAR(allUsedMedication), [], true]; +// TODO move to treatment _logs = _unit getVariable [QGVAR(allLogs), []]; { _unit setVariable [_x, nil]; } forEach _logs; _unit setVariable [QGVAR(allLogs), [], true]; +// TODO move to treatment // items [{ _this call FUNC(itemCheck); diff --git a/addons/medical/XEH_init.sqf b/addons/medical/functions/fnc_install.sqf similarity index 77% rename from addons/medical/XEH_init.sqf rename to addons/medical/functions/fnc_install.sqf index acdd50ce82..94feb1122b 100644 --- a/addons/medical/XEH_init.sqf +++ b/addons/medical/functions/fnc_install.sqf @@ -2,8 +2,6 @@ params ["_unit"]; -_unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}]; - if (local _unit) then { if (!EGVAR(common,settingsInitFinished)) exitWith { EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(init), [_unit]]; diff --git a/addons/medical/functions/fnc_isBeingCarried.sqf b/addons/medical/functions/fnc_isBeingCarried.sqf deleted file mode 100644 index b47c5e475f..0000000000 --- a/addons/medical/functions/fnc_isBeingCarried.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: PabstMirror - * Returns if a target is being carried. (from ace_dragging) - * - * Arguments: - * 0: Target Unit - * - * Return Value: - * Is being carried - * - * Example: - * [bob] call ace_medical_fnc_isBeingCarried - * - * Public: No - */ -#include "script_component.hpp" - -params ["_target"]; - -private "_owner"; - -_owner = _target getVariable [QEGVAR(common,owner), objNull]; - -if (isNull _owner) exitWith {false}; - -(_owner getVariable [QEGVAR(dragging,carriedObject), objNull]) == _target diff --git a/addons/medical/functions/fnc_isBeingDragged.sqf b/addons/medical/functions/fnc_isBeingDragged.sqf deleted file mode 100644 index 929b48ccb7..0000000000 --- a/addons/medical/functions/fnc_isBeingDragged.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: PabstMirror - * Returns if a target is being dragged. (from ace_dragging) - * - * Arguments: - * 0: Target Unit - * - * Return Value: - * Is being dragged - * - * Example: - * [bob] call ace_medical_fnc_isBeingDragged - * - * Public: No - */ -#include "script_component.hpp" - -params ["_target"]; - -private "_owner"; - -_owner = _target getVariable [QEGVAR(common,owner), objNull]; - -if (isNull _owner) exitWith {false}; - -(_owner getVariable [QEGVAR(dragging,draggedObject), objNull]) == _target diff --git a/addons/medical/functions/fnc_itemCheck.sqf b/addons/medical/functions/fnc_itemCheck.sqf deleted file mode 100644 index d49e04e774..0000000000 --- a/addons/medical/functions/fnc_itemCheck.sqf +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Author: KoffeinFlummi - * Replaces vanilla items with ACE ones. - * - * Arguments: - * 0: The unit - * - * ReturnValue: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_unit"]; - -while {({_x == "FirstAidKit"} count items _unit) > 0} do { - _unit removeItem "FirstAidKit"; - if (GVAR(level) >= 2) then { - _unit addItem "ACE_fieldDressing"; - _unit addItem "ACE_packingBandage"; - _unit addItem "ACE_morphine"; - _unit addItem "ACE_tourniquet"; - } else { - _unit addItem "ACE_fieldDressing"; - _unit addItem "ACE_fieldDressing"; - _unit addItem "ACE_morphine"; - }; -}; - -while {({_x == "Medikit"} count items _unit) > 0} do { - _unit removeItem "Medikit"; - if (GVAR(level) >= 2) then { - _unit addItemToBackpack "ACE_fieldDressing"; - _unit addItemToBackpack "ACE_packingBandage"; - _unit addItemToBackpack "ACE_packingBandage"; - _unit addItemToBackpack "ACE_epinephrine"; - _unit addItemToBackpack "ACE_morphine"; - _unit addItemToBackpack "ACE_salineIV_250"; - _unit addItemToBackpack "ACE_tourniquet"; - } else { - _unit addItemToBackpack "ACE_epinephrine"; - _unit addItemToBackpack "ACE_epinephrine"; - _unit addItemToBackpack "ACE_epinephrine"; - _unit addItemToBackpack "ACE_epinephrine"; - _unit addItemToBackpack "ACE_bloodIV"; - _unit addItemToBackpack "ACE_bloodIV"; - }; -}; diff --git a/addons/medical/functions/fnc_litterCleanupLoop.sqf b/addons/medical/functions/fnc_litterCleanupLoop.sqf deleted file mode 100644 index 00e301be6e..0000000000 --- a/addons/medical/functions/fnc_litterCleanupLoop.sqf +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Author: Glowbal, esteldunedain - * Loop that cleans up litter - * - * Arguments: - * None - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -{ - _x params ["_time", "_objects"]; - if (CBA_missionTime - _time >= GVAR(litterCleanUpDelay)) then { - { - deleteVehicle _x; - } forEach _objects; - GVAR(allCreatedLitter) set[_forEachIndex, objNull]; - }; -} forEach GVAR(allCreatedLitter); -GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull]; - -// If no more litter remaining, exit the loop -if ( (count GVAR(allCreatedLitter)) == 0) exitWith { - GVAR(litterPFHRunning) = false; -}; - -// Schedule the loop to be executed again 30 sec later -[DFUNC(litterCleanupLoop), [], 30] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_medicationEffectLoop.sqf b/addons/medical/functions/fnc_medicationEffectLoop.sqf deleted file mode 100644 index 00ef00a82c..0000000000 --- a/addons/medical/functions/fnc_medicationEffectLoop.sqf +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Author: Glowbal, esteldunedain - * Medication effect loop for an injection. - * - * Arguments: - * 0: Unit - * 1: Name of the Variable that is affected - * 2: Proportion of the effect applied - * 3: Rate at which the effect is applied - * 4: Viscosity adjustment rate - * 5: Pain reduction rate - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit", "_variableName", "_amountDecreased","_decreaseRate", "_viscosityAdjustmentRate", "_painReduceRate"]; - -// If the unit died the loop is finished -if (!alive _unit) exitWith {}; - -// If locality changed finish the local loop -if (!local _unit) exitWith {}; - -// Apply medicinal effect -private _usedMeds = (_unit getVariable [_variableName, 0]) - _decreaseRate; -_unit setVariable [_variableName, _usedMeds]; - -// Restore the viscosity while the medication is leaving the system -_unit setVariable [QGVAR(peripheralResistance), ((_unit getVariable [QGVAR(peripheralResistance), 100]) - _viscosityAdjustmentRate) max 0]; -_unit setVariable [QGVAR(painSuppress), ((_unit getVariable [QGVAR(painSuppress), 0]) - _painReduceRate) max 0]; - -// Exit if the medication has finished it's effect -_amountDecreased = _amountDecreased + _decreaseRate; -if (_amountDecreased >= 1 || (_usedMeds <= 0) || !alive _unit) exitWith {}; - -// Schedule the loop to be executed again 1 sec later -[DFUNC(medicationEffectLoop), [_unit, _variableName, _amountDecreased, _decreaseRate, _viscosityAdjustmentRate, _painReduceRate], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_modifyMedicalAction.sqf b/addons/medical/functions/fnc_modifyMedicalAction.sqf deleted file mode 100644 index 0081529c5a..0000000000 --- a/addons/medical/functions/fnc_modifyMedicalAction.sqf +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Author: esteldunedain - * Modify the visuals of a medical action point. - * On Basic medical: modify the icon color based on damage on that body part. - * - * Arguments: - * 0: The Patient Unit - * 1: The Diagnosing Unit - * 2: Selection Number - * 3: The action to modify - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_target", "_player", "_partNumber", "_actionData"]; - -private _bloodLossOnSelection = 0; -// Add all bleeding from wounds on selection -{ - _x params ["", "", "_selectionX", "_amountOf", "_percentageOpen"]; - if (_selectionX == _partNumber) then { - _bloodLossOnSelection = _bloodLossOnSelection + (_amountOf * _percentageOpen); - }; -} forEach (_target getvariable [QGVAR(openWounds), []]); - -if (_bloodLossOnSelection >=1 ) then { - _actionData set [2, QPATHTOF(UI\icons\medical_crossRed.paa)]; -} else { - if (_bloodLossOnSelection > 0 ) then { - _actionData set [2, QPATHTOF(UI\icons\medical_crossYellow.paa)]; - }; -}; diff --git a/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf b/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf deleted file mode 100644 index b54196d75f..0000000000 --- a/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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(enableFor), "enableFor"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(enableAdvancedWounds), "enableAdvancedWounds"] call EFUNC(common,readSettingFromModule); -// TODO disabled until implemented -// [_logic, QGVAR(enableAirway), "enableAirway"] call EFUNC(common,readSettingFromModule); -// [_logic, QGVAR(enableFractures), "enableFractures"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(medicSetting_PAK), "medicSetting_PAK"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(medicSetting_SurgicalKit), "medicSetting_SurgicalKit"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(consumeItem_PAK), "consumeItem_PAK"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(consumeItem_SurgicalKit), "consumeItem_SurgicalKit"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(useLocation_PAK), "useLocation_PAK"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(useLocation_SurgicalKit), "useLocation_SurgicalKit"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(useCondition_PAK), "useCondition_PAK"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(useCondition_SurgicalKit), "useCondition_SurgicalKit"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(healHitPointAfterAdvBandage), "healHitPointAfterAdvBandage"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(painIsOnlySuppressed), "painIsOnlySuppressed"] call EFUNC(common,readSettingFromModule); diff --git a/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf b/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf deleted file mode 100644 index 92814ed052..0000000000 --- a/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: Glowbal - * Assign a medical role to a unit. - * - * Arguments: - * 0: The module logic - * 1: Synchronized units - * 2: Activated - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -params ["_logic"]; - -if (!isNull _logic) then { - private ["_list", "_setting"]; - _list = _logic getVariable ["EnableList", ""]; - _setting = _logic getVariable ["role", 0]; - - [_list, QGVAR(medicClass), _setting, true] call EFUNC(common,assignObjectsInList); - [synchronizedObjects _logic, QGVAR(medicClass), _setting, true] call EFUNC(common,assignObjectsInList); -}; diff --git a/addons/medical/functions/fnc_moduleAssignMedicalFacility.sqf b/addons/medical/functions/fnc_moduleAssignMedicalFacility.sqf deleted file mode 100644 index 368b065908..0000000000 --- a/addons/medical/functions/fnc_moduleAssignMedicalFacility.sqf +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Author: Glowbal - * Register synchronized objects from passed object as a medical facility - * - * Arguments: - * 0: The module logic - * 1: units - * 2: activated - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -private ["_setting", "_objects"]; -params [["_logic", objNull, [objNull]]]; -if (!isNull _logic) then { - _setting = _logic getVariable ["class",0]; - _objects = synchronizedObjects _logic; - { - if (local _x) then { - _x setVariable[QGVAR(isMedicalFacility), true, true]; - }; - } forEach _objects; -}; - -true; diff --git a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf deleted file mode 100644 index 2bc6d3a332..0000000000 --- a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: Glowbal - * Assign vehicle as a medical vehicle. - * - * Arguments: - * 0: The module logic - * 1: Synchronized units - * 2: Activated - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -params ["_logic"]; - -if (!isNull _logic) then { - private ["_list", "_setting"]; - _list = _logic getVariable ["EnableList", ""]; - _setting = _logic getVariable ["enabled", 0]; - - [_list, QGVAR(medicClass), _setting, true] call EFUNC(common,assignObjectsInList); - [synchronizedObjects _logic, QGVAR(medicClass), _setting, true, true] call EFUNC(common,assignObjectsInList); -}; diff --git a/addons/medical/functions/fnc_moduleBasicMedicalSettings.sqf b/addons/medical/functions/fnc_moduleBasicMedicalSettings.sqf deleted file mode 100644 index 08076878f2..0000000000 --- a/addons/medical/functions/fnc_moduleBasicMedicalSettings.sqf +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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_moduleMedicalSettings.sqf b/addons/medical/functions/fnc_moduleMedicalSettings.sqf deleted file mode 100644 index 29398bbc35..0000000000 --- a/addons/medical/functions/fnc_moduleMedicalSettings.sqf +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Author: Glowbal - * Module for adjusting the medical damage 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(level), "level"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(medicSetting), "medicSetting"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(increaseTrainingInLocations), "increaseTrainingInLocations"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(allowLitterCreation), "allowLitterCreation"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(litterCleanUpDelay), "litterCleanUpDelay"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(enableScreams), "enableScreams"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(playerDamageThreshold), "playerDamageThreshold"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(AIDamageThreshold), "AIDamageThreshold"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(enableUnconsciousnessAI), "enableUnconsciousnessAI"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(remoteControlledAI), "remoteControlledAI"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(preventInstaDeath), "preventInstaDeath"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(bleedingCoefficient), "bleedingCoefficient"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(painCoefficient), "painCoefficient"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(keepLocalSettingsSynced), "keepLocalSettingsSynced"] call EFUNC(common,readSettingFromModule); -// [_logic, QGVAR(delayUnconCaptive), "delayUnconCaptive"] call EFUNC(common,readSettingFromModule); diff --git a/addons/medical/functions/fnc_moduleReviveSettings.sqf b/addons/medical/functions/fnc_moduleReviveSettings.sqf deleted file mode 100644 index 19aa9579dd..0000000000 --- a/addons/medical/functions/fnc_moduleReviveSettings.sqf +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Author: Glowbal - * Module for adjusting the medical revive 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(maxReviveTime), "maxReviveTime"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(amountOfReviveLives), "amountOfReviveLives"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(enableRevive), "enableRevive"] call EFUNC(common,readSettingFromModule); diff --git a/addons/medical/functions/fnc_parseConfigForInjuries.sqf b/addons/medical/functions/fnc_parseConfigForInjuries.sqf index 42dd98dc1f..663512aade 100644 --- a/addons/medical/functions/fnc_parseConfigForInjuries.sqf +++ b/addons/medical/functions/fnc_parseConfigForInjuries.sqf @@ -11,22 +11,19 @@ */ #include "script_component.hpp" -private ["_injuriesRootConfig", "_woundsConfig", "_allWoundClasses", "_amountOf", "_entry","_classType", "_selections", "_bloodLoss", "_pain","_minDamage","_causes", "_damageTypesConfig", "_thresholds", "_typeThresholds", "_selectionSpecific", "_selectionSpecificType", "_classDisplayName", "_subClassDisplayName", "_maxDamage", "_subClassmaxDamage", "_defaultMinLethalDamage", "_minLethalDamage", "_allFoundDamageTypes", "_classID", "_configDamageTypes", "_i", "_parseForSubClassWounds", "_subClass", "_subClassConfig", "_subClassbloodLoss", "_subClasscauses", "_subClassminDamage", "_subClasspain", "_subClassselections", "_subClasstype", "_type", "_varName", "_woundTypes"]; - -_injuriesRootConfig = (configFile >> "ACE_Medical_Advanced" >> "Injuries"); -_allFoundDamageTypes = []; -_configDamageTypes = (_injuriesRootConfig >> "damageTypes"); +private _injuriesRootConfig = (configFile >> "ACE_Medical_Injuries"); +private _allFoundDamageTypes = []; +private _configDamageTypes = (_injuriesRootConfig >> "damageTypes"); // minimum lethal damage collection, mapped to damageTypes -_defaultMinLethalDamage = getNumber (_configDamageTypes >> "lethalDamage"); +private _defaultMinLethalDamage = getNumber (_configDamageTypes >> "lethalDamage"); GVAR(minLethalDamages) = []; - // Collect all available damage types from the config for "_i" from 0 to (count _configDamageTypes -1) /* step +1 */ do { // Only get the subclasses in damageType class if (isClass(_configDamageTypes select _i)) then { _allFoundDamageTypes pushBack (configName (_configDamageTypes select _i)); - _minLethalDamage = if (isNumber((_configDamageTypes select _i) >> "lethalDamage")) then { + private _minLethalDamage = if (isNumber((_configDamageTypes select _i) >> "lethalDamage")) then { getNumber((_configDamageTypes select _i) >> "lethalDamage"); } else { _defaultMinLethalDamage @@ -39,23 +36,41 @@ GVAR(allAvailableDamageTypes) = _allFoundDamageTypes; GVAR(woundClassNames) = []; GVAR(fractureClassNames) = []; +private _getIfInConfig = { + params ["_config", "_default"]; + if (_default isEqualType []) exitWith { + if (isArray(_config)) then { getArray(_config)} else { _default }; + }; + if (_default isEqualType 0) exitWith { + if (isNumber(_config)) then { getNumber(_config)} else { _default }; + }; + if (_default isEqualType "") exitWith { + if (isText(_config)) then { getText(_config)} else { _default }; + }; + _default; +}; + // Parsing the wounds // function for parsing a sublcass of an injury -_parseForSubClassWounds = { - _subClass = _this select 0; +private _parseForSubClassWounds = { + params ["_subClass"]; if (isClass (_entry >> _subClass)) exitWith { - _subClassConfig = (_entry >> _subClass); - _subClasstype = _classType + (configName _subClassConfig); - _subClassselections = if (isArray(_subClassConfig >> "selections")) then { getArray(_subClassConfig >> "selections");} else { _selections }; - _subClassbloodLoss = if (isNumber(_subClassConfig >> "bleedingRate")) then { getNumber(_subClassConfig >> "bleedingRate");} else { _bloodLoss }; - _subClasspain = if (isNumber(_subClassConfig >> "pain")) then { getNumber(_subClassConfig >> "pain");} else { _pain }; - _subClassminDamage = if (isNumber(_subClassConfig >> "minDamage")) then { getNumber(_subClassConfig >> "minDamage");} else { _minDamage }; - _subClassmaxDamage = if (isNumber(_subClassConfig >> "maxDamage")) then { getNumber(_subClassConfig >> "maxDamage");} else { _maxDamage }; - _subClasscauses = if (isArray(_subClassConfig >> "causes")) then { getArray(_subClassConfig >> "causes");} else { _causes }; - _subClassDisplayName = if (isText(_subClassConfig >> "name")) then { getText(_subClassConfig >> "name");} else {_classDisplayName + " " + _subClass}; - if (count _selections > 0 && {count _causes > 0}) then { - GVAR(woundClassNames) pushBack _subClasstype; - _allWoundClasses pushBack [_classID, _subClassselections, _subClassbloodLoss, _subClasspain, [_subClassminDamage, _subClassmaxDamage], _subClasscauses, _subClassDisplayName]; + private _subClassConfig = (_entry >> _subClass); + private _subClassselections = [_subClassConfig >> "selections", _selections] call _getIfInConfig; + private _subClasscauses = [_subClassConfig >> "causes", _causes] call _getIfInConfig; + + if (count _subClassselections > 0 && {count _subClasscauses > 0}) then { + // constructs a type name, such as: 'woundMinor' + GVAR(woundClassNames) pushBack (_classType + (configName _subClassConfig)); + _allWoundClasses pushBack [ + _classID, + _subClassselections, + [_subClassConfig >> "bleedingRate", _bloodLoss] call _getIfInConfig, + [_subClassConfig >> "pain", _pain] call _getIfInConfig, + [[_subClassConfig >> "minDamage", _minDamage] call _getIfInConfig, [_subClassConfig >> "maxDamage", _maxDamage] call _getIfInConfig], + _subClasscauses, + [_subClassConfig >> "name", (_classDisplayName + " " + _subClass)] call _getIfInConfig + ]; _classID = _classID + 1; }; true; @@ -64,22 +79,22 @@ _parseForSubClassWounds = { }; // TODO classTypes are strings currently. Convert them to unqiue IDs instead. -_woundsConfig = (_injuriesRootConfig >> "wounds"); -_allWoundClasses = []; -_classID = 0; +private _woundsConfig = (_injuriesRootConfig >> "wounds"); +private _allWoundClasses = []; +private _classID = 0; if (isClass _woundsConfig) then { - _amountOf = count _woundsConfig; + private _amountOf = count _woundsConfig; for "_i" from 0 to (_amountOf -1) /* step +1 */ do { - _entry = _woundsConfig select _i; + private _entry = _woundsConfig select _i; if (isClass _entry) then { - _classType = (ConfigName _entry); - _selections = if (isArray(_entry >> "selections")) then { getArray(_entry >> "selections");} else {[]}; - _bloodLoss = if (isNumber(_entry >> "bleedingRate")) then { getNumber(_entry >> "bleedingRate");} else {0}; - _pain = if (isNumber(_entry >> "pain")) then { getNumber(_entry >> "pain");} else {0}; - _minDamage = if (isNumber(_entry >> "minDamage")) then { getNumber(_entry >> "minDamage");} else {0}; - _maxDamage = if (isNumber(_entry >> "maxDamage")) then { getNumber(_entry >> "maxDamage");} else {-1}; - _causes = if (isArray(_entry >> "causes")) then { getArray(_entry >> "causes");} else {[]}; - _classDisplayName = if (isText(_entry >> "name")) then { getText(_entry >> "name");} else {_classType}; + private _classType = (ConfigName _entry); + private _selections = if (isArray(_entry >> "selections")) then { getArray(_entry >> "selections");} else {[]}; + private _bloodLoss = if (isNumber(_entry >> "bleedingRate")) then { getNumber(_entry >> "bleedingRate");} else {0}; + private _pain = if (isNumber(_entry >> "pain")) then { getNumber(_entry >> "pain");} else {0}; + private _minDamage = if (isNumber(_entry >> "minDamage")) then { getNumber(_entry >> "minDamage");} else {0}; + private _maxDamage = if (isNumber(_entry >> "maxDamage")) then { getNumber(_entry >> "maxDamage");} else {-1}; + private _causes = if (isArray(_entry >> "causes")) then { getArray(_entry >> "causes");} else {[]}; + private _classDisplayName = if (isText(_entry >> "name")) then { getText(_entry >> "name");} else {_classType}; // TODO instead of hardcoding minor, medium and large just go through all sub classes recursively until none are found if (["Minor"] call _parseForSubClassWounds || ["Medium"] call _parseForSubClassWounds || ["Large"] call _parseForSubClassWounds) exitWith {}; // continue to the next one @@ -97,31 +112,32 @@ if (isClass _woundsConfig) then { GVAR(AllWoundInjuryTypes) = _allWoundClasses; // Linking injuries to the woundInjuryType variables. -_damageTypesConfig = (configFile >> "ACE_Medical_Advanced" >> "Injuries" >> "damageTypes"); -_thresholds = getArray(_damageTypesConfig >> "thresholds"); -_selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); +private _damageTypesConfig = (_injuriesRootConfig >> "damageTypes"); +private _thresholds = getArray(_damageTypesConfig >> "thresholds"); +private _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); { - _varName = format[QGVAR(woundInjuryType_%1),_x]; - _woundTypes = []; - _type = _x; + private _varName = format[QGVAR(woundInjuryType_%1),_x]; + private _woundTypes = []; + private _type = _x; { // Check if this type is in the causes of a wound class, if so, we will store the wound types for this damage type if (_type in (_x select 5)) then { _woundTypes pushBack _x; }; } forEach _allWoundClasses; - _typeThresholds = _thresholds; - _selectionSpecificType = _selectionSpecific; + private _typeThresholds = _thresholds; + private _selectionSpecificType = _selectionSpecific; if (isClass(_damageTypesConfig >> _x)) then { if (isArray(_damageTypesConfig >> _x >> "thresholds")) then { _typeThresholds = getArray(_damageTypesConfig >> _x >> "thresholds");}; if (isNumber(_damageTypesConfig >> _x >> "selectionSpecific")) then { _selectionSpecificType = getNumber(_damageTypesConfig >> _x >> "selectionSpecific");}; }; + + // TODO use CBA namespace missionNamespace setVariable [_varName, [_typeThresholds, _selectionSpecificType > 0, _woundTypes]]; - private ["_minDamageThresholds", "_amountThresholds"]; // extension loading - _minDamageThresholds = ""; - _amountThresholds = ""; + private _minDamageThresholds = ""; + private _amountThresholds = ""; { _minDamageThresholds = _minDamageThresholds + str(_x select 0); _amountThresholds = _amountThresholds + str(_x select 1); @@ -131,21 +147,23 @@ _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); }; } forEach _typeThresholds; - "ace_medical" callExtension format ["addDamageType,%1,%2,%3,%4,%5", _type, GVAR(minLethalDamages) select _forEachIndex, _minDamageThresholds, _amountThresholds, _selectionSpecificType]; - + // load in the damage types into the medical extension + private _extensionRes = "ace_medical" callExtension format ["addDamageType,%1,%2,%3,%4,%5", + _type, + GVAR(minLethalDamages) select _forEachIndex, + _minDamageThresholds, + _amountThresholds, + _selectionSpecificType + ]; + diag_log format["Extension result: %1", _extensionRes]; } forEach _allFoundDamageTypes; - // Extension loading - { - private ["_classID", "_className", "_allowedSelections", "_bloodLoss", "_pain", "_minDamage", "_maxDamage", "_causes", "_classDisplayName", "_extensionInput", "_selections", "_causesArray"]; - // add shit to addInjuryType _x params ["_classID", "_selections", "_bloodLoss", "_pain", "_damage", "_causesArray", "_classDisplayName"]; _damage params ["_minDamage", "_maxDamage"]; - _className = GVAR(woundClassNames) select _forEachIndex; - _allowedSelections = ""; - + private _className = GVAR(woundClassNames) select _forEachIndex; + private _allowedSelections = ""; { _allowedSelections = _allowedSelections + _x; if (_forEachIndex < (count _selections) - 1) then { @@ -153,17 +171,17 @@ _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); }; } forEach _selections; - _causes = ""; - + private _causes = ""; { _causes = _causes + _x; if (_forEachIndex < (count _causesArray) - 1) then { _causes = _causes + ":"; }; } forEach _causesArray; - _classDisplayName = _x select 6; - "ace_medical" callExtension format["addInjuryType,%1,%2,%3,%4,%5,%6,%7,%8,%9", _classID, _className, _allowedSelections, _bloodLoss, _pain, _minDamage, _maxDamage, _causes, _classDisplayName]; + diag_log format["Adding to extension injury type: %1 ", format["addInjuryType,%1,%2,%3,%4,%5,%6,%7,%8,%9", _classID, _className, _allowedSelections, _bloodLoss, _pain, _minDamage, _maxDamage, _causes, _classDisplayName]]; + private _extensionRes = "ace_medical" callExtension format["addInjuryType,%1,%2,%3,%4,%5,%6,%7,%8,%9", _classID, _className, _allowedSelections, _bloodLoss, _pain, _minDamage, _maxDamage, _causes, _classDisplayName]; + diag_log format["Extension result: %1", _extensionRes]; } forEach _allWoundClasses; diff --git a/addons/medical/functions/fnc_playInjuredSound.sqf b/addons/medical/functions/fnc_playInjuredSound.sqf deleted file mode 100644 index 2e5ec2ab5f..0000000000 --- a/addons/medical/functions/fnc_playInjuredSound.sqf +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Author: Glowbal - * Play the injured sound for a unit if the unit is damaged. The sound broadcasted across MP. - * Will not play if the unit has already played a sound within to close a time frame. - * Delay: With minimal damage (below 1), the delay is (10 + random(50)) seconds. Otherwise it is 60 seconds / damage. - * - * Arguments: - * 0: The Unit - * 1: Amount of Pain - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit", "_pain"]; -if (!local _unit || !GVAR(enableScreams)) exitWith{}; - -// Lock if the unit is already playing a sound. -if ((_unit getVariable [QGVAR(playingInjuredSound),false])) exitWith {}; -_unit setVariable [QGVAR(playingInjuredSound),true]; - -// Play the sound if there is any damage present. -if (_pain > 0 && {[_unit] call EFUNC(common,isAwake)}) exitWith { - // Classnames of the available sounds. - private _availableSounds_A = [ - "WoundedGuyA_01", - "WoundedGuyA_02", - "WoundedGuyA_03", - "WoundedGuyA_04", - "WoundedGuyA_05", - "WoundedGuyA_06", - "WoundedGuyA_07", - "WoundedGuyA_08" - ]; - private _availableSounds_B = [ - "WoundedGuyB_01", - "WoundedGuyB_02", - "WoundedGuyB_03", - "WoundedGuyB_04", - "WoundedGuyB_05", - "WoundedGuyB_06", - "WoundedGuyB_07", - "WoundedGuyB_08" - ]; - private _availableSounds_C = [ - "WoundedGuyC_01", - "WoundedGuyC_02", - "WoundedGuyC_03", - "WoundedGuyC_04", - "WoundedGuyC_05" - ]; - private _sound = ""; - - // Select the to be played sound based upon damage amount. - if (_pain > 0.5) then { - if (random(1) > 0.5) then { - _sound = selectRandom _availableSounds_A; - } else { - _sound = selectRandom _availableSounds_B; - }; - } else { - _sound = selectRandom _availableSounds_B; - }; - // Play the sound - playSound3D [(getArray(configFile >> "CfgSounds" >> _sound >> "sound") select 0) + ".wss", objNull, false, getPos _unit, 15, 1, 25]; // +2db, 15 meters. - - // Figure out what the delay will be before it is possible to play a sound again. - private _delay = (30 - (random(25) * _pain)) max (3.5 + random(2)); - - // Clean up the lock - [{ - (_this select 0) setVariable [QGVAR(playingInjuredSound), nil]; - }, [_unit], _delay, _delay] call CBA_fnc_waitAndExecute; -}; - -// Clean up in case there has not been played any sounds. -_unit setVariable [QGVAR(playingInjuredSound), nil]; diff --git a/addons/medical/functions/fnc_reviveStateLoop.sqf b/addons/medical/functions/fnc_reviveStateLoop.sqf deleted file mode 100644 index bfc55ae6d8..0000000000 --- a/addons/medical/functions/fnc_reviveStateLoop.sqf +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Author: Glowbal, esteldunedain - * Loop that handles a unit in the revive state. - * - * Arguments: - * 0: Unit - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit"]; - -// If locality changed finish the local loop -// @todo: reinitiate the loop elsewhere -if (!local _unit) exitWith {}; - -private _startTime = _unit getVariable [QGVAR(reviveStartTime), 0]; - -// Remove heartbeat -if (GVAR(level) >= 2) then { - if (_unit getVariable [QGVAR(heartRate), 60] > 0) then { - _unit setVariable [QGVAR(heartRate), 0]; - }; -}; - -// If we are in revive state in a blown up vehicle, try to unload so that people can access the body -if ((alive _unit) && {(vehicle _unit) != _unit} && {!alive (vehicle _unit)}) then { - TRACE_2("Unloading", _unit, vehicle _unit); - [_unit] call EFUNC(common,unloadPerson); -}; - -// If the timer run out, let the unit die and exit the loop -if (GVAR(maxReviveTime) > 0 && {CBA_missionTime - _startTime > GVAR(maxReviveTime)}) exitwith { - _unit setVariable [QGVAR(inReviveState), nil, true]; - _unit setVariable [QGVAR(reviveStartTime), nil]; - [_unit, true] call FUNC(setDead); -}; - -// If the unit was taken out from revive state, exit the loop -if !(_unit getVariable [QGVAR(inReviveState), false]) exitwith { - // Revived without dieing, so in case we have lifes, remove one. - if (GVAR(amountOfReviveLives) > 0) then { - _lifesLeft = _unit getVariable[QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives)]; - _unit setVariable [QGVAR(amountOfReviveLives), _lifesLeft - 1, true]; - }; - - _unit setVariable [QGVAR(reviveStartTime), nil]; -}; - -// Schedule the loop to be executed again 1 sec later -[DFUNC(reviveStateLoop), [_unit], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_serverRemoveBody.sqf b/addons/medical/functions/fnc_serverRemoveBody.sqf deleted file mode 100644 index 42e755f003..0000000000 --- a/addons/medical/functions/fnc_serverRemoveBody.sqf +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Author: PabstMirror - * Removes corpse. Idealy it is just deleted the next frame, - * but player bodies cannot be deleted until they respawn, so it is hidden and deleted later. - * - * Arguments: - * 0: Mr Body - * - * Return Value: - * Nothing - * - * Example: - * [cursorTarget] call ace_medical_fnc_serverRemoveBody - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_target"]; -TRACE_2("",_target,isPlayer _target); - -//Hide the body globaly -[QEGVAR(common,hideObjectGlobal), [_target, true]] call CBA_fnc_serverEvent; - -if (isNil QGVAR(bodiesToDelete)) then {GVAR(bodiesToDelete) = [];}; -GVAR(bodiesToDelete) pushBack _target; - -// Start up a loop to wait for bodies to be free to delete -if ((count GVAR(bodiesToDelete)) > 0) then { - [] call FUNC(bodyCleanupLoop); -}; - -nil diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf deleted file mode 100644 index f41dda8591..0000000000 --- a/addons/medical/functions/fnc_setCardiacArrest.sqf +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Author: Glowbal - * Triggers a unit into the Cardiac Arrest state from CMS. Will put the unit in an unconscious state and run a countdown timer until unit dies. - * Timer is a random value between 120 and 720 seconds. - * - * Arguments: - * 0: The unit that will be put in cardiac arrest state - * - * ReturnValue: - * None - * - * Public: yes - */ - -#include "script_component.hpp" - -private "_timeInCardiacArrest"; -params ["_unit"]; - -if (_unit getVariable [QGVAR(inCardiacArrest),false]) exitWith {}; -_unit setVariable [QGVAR(inCardiacArrest), true,true]; -_unit setVariable [QGVAR(heartRate), 0]; - -["ace_cardiacArrestEntered", [_unit]] call CBA_fnc_localEvent; - -[_unit, true] call FUNC(setUnconscious); -_timeInCardiacArrest = 120 + round(random(600)); - -[{ - params ["_args", "_idPFH"]; - _args params ["_unit", "_startTime", "_timeInCardiacArrest"]; - - private _heartRate = _unit getVariable [QGVAR(heartRate), 80]; - if (_heartRate > 0 || !alive _unit) exitWith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - _unit setVariable [QGVAR(inCardiacArrest), nil,true]; - }; - if (CBA_missionTime - _startTime >= _timeInCardiacArrest) exitWith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - _unit setVariable [QGVAR(inCardiacArrest), nil,true]; - [_unit] call FUNC(setDead); - }; -}, 1, [_unit, CBA_missionTime, _timeInCardiacArrest] ] call CBA_fnc_addPerFrameHandler; diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf deleted file mode 100644 index 0e5fd884f4..0000000000 --- a/addons/medical/functions/fnc_setDead.sqf +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Author: Glowbal - * Either kills a unit or puts the unit in a revivable state, depending on the settings. - * - * Arguments: - * 0: The unit that will be killed - * 1: Force Dead (ignore revive setting) - * 1: Delay setDamage for a frame - * - * ReturnValue: - * Did he died? - * - * Public: yes - */ - -#include "script_component.hpp" - -private ["_reviveVal", "_lifesLeft"]; -params ["_unit", ["_force", false], ["_delaySetDamage", false]]; - -if ((!alive _unit) || {_unit getVariable ["ACE_isDead", false]}) exitWith {true}; -if (!local _unit) exitwith { - [QGVAR(setDead), [_unit, _force], _unit] call CBA_fnc_targetEvent; - false; -}; - -_reviveVal = _unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]; -if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal == 2)) && !_force) exitwith { - if (_unit getVariable [QGVAR(inReviveState), false]) exitwith { - if (GVAR(amountOfReviveLives) > 0) then { - _lifesLeft = _unit getVariable[QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives)]; - if (_lifesLeft == 0) then { - [_unit, true] call FUNC(setDead); - }; - }; - - false; - }; - - _unit setVariable [QGVAR(inReviveState), true, true]; - _unit setVariable [QGVAR(reviveStartTime), CBA_missionTime]; - [_unit, true] call FUNC(setUnconscious); - - // Run the loop that tracks the revive state - [_unit ] call FUNC(reviveStateLoop); - false; -}; - -_unit setVariable ["ACE_isDead", true, true]; -if (isPLayer _unit) then { - _unit setVariable ["isDeadPlayer", true, true]; -}; - -["ace_killed", [_unit]] call CBA_fnc_localEvent; - -//Delay a frame before killing the unit via scripted damage -//to avoid triggering the "Killed" Event twice (and having the wrong killer) - -if (!_delaySetDamage) then { - [_unit, 1] call FUNC(setStructuralDamage); -} else { - [FUNC(setStructuralDamage), [_unit, 1]] call CBA_fnc_execNextFrame; -}; - -true; diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf deleted file mode 100644 index 41c02dd553..0000000000 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Author: Glowbal - * Sets a unit in the unconscious state. - * - * Arguments: - * 0: The unit that will be put in an unconscious state - * 1: Set unconsciouns (default: true) - * 2: Minimum unconscious time (default: (round(random(10)+5))) - * 3: Force AI Unconscious (skip random death chance) (default: false) - * - * ReturnValue: - * nil - * - * Example: - * [bob, true] call ace_medical_fnc_setUnconscious; - * - * Public: yes - */ - -#include "script_component.hpp" - -#define DEFAULT_DELAY (round(random(10)+5)) - -// only run this after the settings are initialized -if !(EGVAR(common,settingsInitFinished)) exitWith { - EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(setUnconscious), _this]; -}; - -private ["_animState", "_originalPos", "_startingTime", "_isDead"]; -params ["_unit", ["_set", true], ["_minWaitingTime", DEFAULT_DELAY], ["_force", false]]; - -// No change, fuck off. (why is there no xor?) -if (_set isEqualTo (_unit getVariable ["ACE_isUnconscious", false])) exitWith {}; - -if !(_set) exitWith { - _unit setVariable ["ACE_isUnconscious", false, true]; -}; - -if !(!(isNull _unit) && {(_unit isKindOf "CAManBase") && ([_unit] call EFUNC(common,isAwake))}) exitWith{}; - -if (!local _unit) exitWith { - [QGVAR(setUnconscious), [_unit, _set, _minWaitingTime, _force], _unit] call CBA_fnc_targetEvent; -}; - -_unit setVariable ["ACE_isUnconscious", true, true]; -_unit setUnconscious true; - -if (_unit == ACE_player) then { - if (visibleMap) then {openMap false}; - while {dialog} do { - closeDialog 0; - }; -}; - -// if we have unconsciousness for AI disabled, we will kill the unit instead -_isDead = false; -if (!([_unit, GVAR(remoteControlledAI)] call EFUNC(common,isPlayer)) && !_force) then { - _enableUncon = _unit getVariable [QGVAR(enableUnconsciousnessAI), GVAR(enableUnconsciousnessAI)]; - if (_enableUncon == 0 or {_enableUncon == 1 and (random 1) < 0.5}) then { - [_unit, true] call FUNC(setDead); - _isDead = true; - }; -}; -if (_isDead) exitWith {}; - -// If a unit has the launcher out, it will sometimes start selecting the primairy weapon while unconscious, -// therefor we force it to select the primairy weapon before going unconscious -if ((vehicle _unit) isKindOf "StaticWeapon") then { - [_unit] call EFUNC(common,unloadPerson); -}; -if (animationState _unit in ["ladderriflestatic","laddercivilstatic"]) then { - _unit action ["ladderOff", (nearestBuilding _unit)]; -}; -if (vehicle _unit == _unit) then { - if (primaryWeapon _unit == "") then { - _unit addWeapon "ACE_FakePrimaryWeapon"; - }; - _unit selectWeapon (primaryWeapon _unit); -}; - -// We are storing the current animation, so we can use it later on when waking the unit up inside a vehicle -if (vehicle _unit != _unit) then { - _unit setVariable [QGVAR(vehicleAwakeAnim), [(vehicle _unit), (animationState _unit)]]; -}; - -//Save current stance: -_originalPos = unitPos _unit; - -_unit setUnitPos "DOWN"; -[_unit, true] call EFUNC(common,disableAI); - -// So the AI does not get stuck, we are moving the unit to a temp group on its own. -//Unconscious units shouldn't be put in another group #527: -if (GVAR(moveUnitsFromGroupOnUnconscious)) then { - [_unit, true, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide); -}; -// Delay Unconscious so the AI dont instant stop shooting on the unit #3121 -if (GVAR(delayUnconCaptive) == 0) then { - [_unit, "setCaptive", "ace_unconscious", true] call EFUNC(common,statusEffect_set); -} else { - [{ - params ["_unit"]; - if (_unit getVariable ["ACE_isUnconscious", false]) then { - [_unit, "setCaptive", "ace_unconscious", true] call EFUNC(common,statusEffect_set); - }; - },[_unit], GVAR(delayUnconCaptive)] call CBA_fnc_waitAndExecute; -}; - -_anim = [_unit] call EFUNC(common,getDeathAnim); -[_unit, _anim, 1, true] call EFUNC(common,doAnimation); -[{ - params ["_unit", "_anim"]; - if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then { - [_unit, _anim, 2, true] call EFUNC(common,doAnimation); - }; -}, [_unit, _anim], 0.5, 0] call CBA_fnc_waitAndExecute; - -_startingTime = CBA_missionTime; - -[DFUNC(unconsciousPFH), 0.1, [_unit, _originalPos, _startingTime, _minWaitingTime, false, vehicle _unit isKindOf "ParachuteBase"] ] call CBA_fnc_addPerFrameHandler; - -// unconscious can't talk -[_unit, "isUnconscious"] call EFUNC(common,muteUnit); - -["ace_unconscious", [_unit, true]] call CBA_fnc_globalEvent; diff --git a/addons/medical/functions/fnc_showBloodEffect.sqf b/addons/medical/functions/fnc_showBloodEffect.sqf deleted file mode 100644 index 7659064aaa..0000000000 --- a/addons/medical/functions/fnc_showBloodEffect.sqf +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Author: KoffeinFlummi, Glowbal - * Does the blood screen effect, just like BIS_fnc_bloodeffect, but in non-sheduled environment. - * - * Arguments: - * 0: Effect multiplier - * - * Return Value: - * None - * - * Public: Yes - */ -#include "script_component.hpp" - -params ["_bloodRemaining"]; - -disableSerialization; - -// get already existing controls, or create them -private ["_fxBloodControls", "_bloodCtrl1", "_bloodCtrl2", "_bloodCtrl3"]; - -_fxBloodControls = GETUVAR(GVAR(FXBloodControls),[]); - -if (count _fxBloodControls != 3) then { - _bloodCtrl1 = findDisplay 46 ctrlCreate ["RscPicture", -1]; - _bloodCtrl2 = findDisplay 46 ctrlCreate ["RscPicture", -1]; - _bloodCtrl3 = findDisplay 46 ctrlCreate ["RscPicture", -1]; - - // set their textures, screen position etc. - _bloodCtrl1 ctrlSetText "A3\Ui_f\data\igui\rsctitles\HealthTextures\blood_lower_ca.paa"; - _bloodCtrl2 ctrlSetText "A3\Ui_f\data\igui\rsctitles\HealthTextures\blood_middle_ca.paa"; - _bloodCtrl3 ctrlSetText "A3\Ui_f\data\igui\rsctitles\HealthTextures\blood_upper_ca.paa"; - - // positions are from config - private "_ctrlPosition"; - _ctrlPosition = [ - ((0 * safezoneW) + safezoneX) + ((safezoneW - (2.125 * safezoneW * 3/4)) / 2), - (-0.0625 * safezoneH) + safezoneY, - 2.125 * safezoneW * 3/4, - 1.125 * safezoneH - ]; - - _bloodCtrl1 ctrlSetPosition _ctrlPosition; - _bloodCtrl2 ctrlSetPosition _ctrlPosition; - _bloodCtrl3 ctrlSetPosition _ctrlPosition; - - _fxBloodControls = [_bloodCtrl1, _bloodCtrl2, _bloodCtrl3]; - SETUVAR(GVAR(FXBloodControls),_fxBloodControls); -} else { - _bloodCtrl1 = _fxBloodControls select 0; - _bloodCtrl2 = _fxBloodControls select 1; - _bloodCtrl3 = _fxBloodControls select 2; -}; - -// reset everything -_bloodCtrl1 ctrlSetFade 1; -_bloodCtrl2 ctrlSetFade 1; -_bloodCtrl3 ctrlSetFade 1; - -_bloodCtrl1 ctrlCommit 0; -_bloodCtrl2 ctrlCommit 0; -_bloodCtrl3 ctrlCommit 0; - -if (_bloodRemaining < 5) exitWith { - // nothing -}; - -if (_bloodRemaining < 25) exitWith { - _bloodCtrl1 ctrlSetFade 0.2; - _bloodCtrl1 ctrlCommit 0.2; - - [{ - (_this select 0) ctrlSetFade 1; - (_this select 0) ctrlCommit 0.8; - }, _fxBloodControls, 0.7] call CBA_fnc_waitAndExecute; -}; - -if (_bloodRemaining < 40) exitWith { - _bloodCtrl1 ctrlSetFade 0.2; - _bloodCtrl2 ctrlSetFade 0.85; - _bloodCtrl1 ctrlCommit 0.2; - _bloodCtrl2 ctrlCommit 0.2; - - [{ - (_this select 0) ctrlSetFade 1; - (_this select 1) ctrlSetFade 1; - (_this select 1) ctrlCommit 1; - }, _fxBloodControls, 0.7] call CBA_fnc_waitAndExecute; - - [{ - (_this select 0) ctrlCommit 0.8; - }, _fxBloodControls, 1.2] call CBA_fnc_waitAndExecute; -}; - -if (_bloodRemaining < 55) exitWith { - _bloodCtrl1 ctrlSetFade 0.2; - _bloodCtrl2 ctrlSetFade 0.7; - _bloodCtrl1 ctrlCommit 0.2; - _bloodCtrl2 ctrlCommit 0.2; - - [{ - (_this select 0) ctrlSetFade 1; - (_this select 1) ctrlSetFade 1; - (_this select 2) ctrlSetFade 1; - (_this select 1) ctrlCommit 1; - }, _fxBloodControls, 0.7] call CBA_fnc_waitAndExecute; - - [{ - (_this select 0) ctrlCommit 0.8; - }, _fxBloodControls, 1.2] call CBA_fnc_waitAndExecute; -}; - -if (_bloodRemaining < 70) exitWith { - _bloodCtrl1 ctrlSetFade 0.2; - _bloodCtrl2 ctrlSetFade 0.7; - _bloodCtrl3 ctrlSetFade 0.85; - _bloodCtrl1 ctrlCommit 0.2; - _bloodCtrl2 ctrlCommit 0.2; - _bloodCtrl3 ctrlCommit 0.2; - - [{ - (_this select 0) ctrlSetFade 1; - (_this select 1) ctrlSetFade 1; - (_this select 2) ctrlSetFade 1; - (_this select 2) ctrlCommit 1.5; - }, _fxBloodControls, 0.7] call CBA_fnc_waitAndExecute; - - [{ - (_this select 1) ctrlCommit 1; - }, _fxBloodControls, 1.7] call CBA_fnc_waitAndExecute; - - [{ - (_this select 0) ctrlCommit 0.8; - }, _fxBloodControls, 2.2] call CBA_fnc_waitAndExecute; -}; - -//default -_bloodCtrl1 ctrlSetFade 0.2; -_bloodCtrl2 ctrlSetFade 0.7; -_bloodCtrl3 ctrlSetFade 0.7; -_bloodCtrl1 ctrlCommit 0.2; -_bloodCtrl2 ctrlCommit 0.2; -_bloodCtrl3 ctrlCommit 0.2; - -[{ - (_this select 0) ctrlSetFade 1; - (_this select 1) ctrlSetFade 1; - (_this select 2) ctrlSetFade 1; - (_this select 2) ctrlCommit 1.5; -}, _fxBloodControls, 0.7] call CBA_fnc_waitAndExecute; - -[{ - (_this select 1) ctrlCommit 1; -}, _fxBloodControls, 1.7] call CBA_fnc_waitAndExecute; - -[{ - (_this select 0) ctrlCommit 0.8; -}, _fxBloodControls, 2.2] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf deleted file mode 100644 index 453d074f98..0000000000 --- a/addons/medical/functions/fnc_treatment.sqf +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Author: Glowbal, KoffeinFlummi - * Starts the treatment process - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: SelectionName - * 3: Treatment classname - * - * Return Value: - * Succesful treatment started - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName", "_className"]; - -// If the cursorMenu is open, the loading bar will fail. If we execute the function one frame later, it will work fine -if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exitwith { - [DFUNC(treatment), _this] call CBA_fnc_execNextFrame; -}; - -if !(_target isKindOf "CAManBase") exitWith {false}; - -private _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className); -if (GVAR(level) >= 2) then { - _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className); -}; - -if !(isClass _config) exitwith {false}; - -// Allow self treatment check -if (_caller == _target && {getNumber (_config >> "allowSelfTreatment") == 0}) exitwith {false}; - -private _medicRequired = if (isNumber (_config >> "requiredMedic")) then { - getNumber (_config >> "requiredMedic"); -} else { - // Check for required class - if (isText (_config >> "requiredMedic")) exitwith { - missionNamespace getVariable [(getText (_config >> "requiredMedic")), 0]; - }; - 0; -}; - -if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false}; - -private _allowedSelections = getArray (_config >> "allowedSelections"); -if !("All" in _allowedSelections || {(_selectionName in _allowedSelections)}) exitwith {false}; - -// Check item -private _items = getArray (_config >> "items"); -if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false}; - -private _return = true; -if (isText (_config >> "Condition")) then { - private _condition = getText(_config >> "condition"); - if (_condition != "") then { - if (isnil _condition) then { - _condition = compile _condition; - } else { - _condition = missionNamespace getVariable _condition; - }; - if (_condition isEqualType false) then { - _return = _condition; - } else { - _return = [_caller, _target, _selectionName, _className] call _condition; - }; - }; -}; -if (!_return) exitwith {false}; - -private _patientStateCondition = if (isText(_config >> "patientStateCondition")) then { - missionNamespace getVariable [getText(_config >> "patientStateCondition"), 0] -} else { - getNumber(_config >> "patientStateCondition") -}; -if (_patientStateCondition == 1 && {!([_target] call FUNC(isInStableCondition))}) exitwith {false}; - -// Check allowed locations -private _locations = getArray (_config >> "treatmentLocations"); - -if ("All" in _locations) then { - _return = true; -} else { - private _medFacility = {([_caller] call FUNC(isInMedicalFacility)) || ([_target] call FUNC(isInMedicalFacility))}; - private _medVeh = {([_caller] call FUNC(isInMedicalVehicle)) || ([_target] call FUNC(isInMedicalVehicle))}; - - { - if (_x == "field") exitwith {_return = true;}; - if (_x == "MedicalFacility" && _medFacility) exitwith {_return = true;}; - if (_x == "MedicalVehicle" && _medVeh) exitwith {_return = true;}; - if !(isnil _x) exitwith { - private _val = missionNamespace getVariable _x; - if (_val isEqualType 0) then { - _return = switch (_val) do { - case 0: {true}; //AdvancedMedicalSettings_anywhere - case 1: {call _medVeh}; //AdvancedMedicalSettings_vehicle - case 2: {call _medFacility}; //AdvancedMedicalSettings_facility - case 3: {(call _medFacility) || {call _medVeh}}; //AdvancedMedicalSettings_vehicleAndFacility - default {false}; //Disabled - }; - }; - }; - } foreach _locations; -}; - -if !(_return) exitwith {false}; - -private _usersOfItems = []; -private _consumeItems = if (isNumber (_config >> "itemConsumed")) then { - getNumber (_config >> "itemConsumed"); -} else { - // Check for required class - if (isText (_config >> "itemConsumed")) exitwith { - missionNamespace getVariable [(getText (_config >> "itemConsumed")), 0]; - }; - 0; -}; -if (_consumeItems > 0) then { - _usersOfItems = ([_caller, _target, _items] call FUNC(useItems)) select 1; -}; - -// Parse the config for the progress callback -private _callbackProgress = getText (_config >> "callbackProgress"); -if (_callbackProgress == "") then { - _callbackProgress = "true"; -}; -if (isNil _callbackProgress) then { - _callbackProgress = compile _callbackProgress; -} else { - _callbackProgress = missionNamespace getVariable _callbackProgress; -}; - -// Patient Animation -private _patientAnim = getText (_config >> "animationPatient"); -if (_target getVariable ["ACE_isUnconscious", false] && GVAR(allowUnconsciousAnimationOnTreatment)) then { - if !(animationState _target in (getArray (_config >> "animationPatientUnconsciousExcludeOn"))) then { - _patientAnim = getText (_config >> "animationPatientUnconscious"); - }; -}; - -if (_caller != _target && {vehicle _target == _target} && {_patientAnim != ""}) then { - if (_target getVariable ["ACE_isUnconscious", false]) then { - [_target, _patientAnim, 2, true] call EFUNC(common,doAnimation); - } else { - [_target, _patientAnim, 1, true] call EFUNC(common,doAnimation); - }; -}; - -// Player Animation -private _callerAnim = [getText (_config >> "animationCaller"), getText (_config >> "animationCallerProne")] select (stance _caller == "PRONE"); -if (_caller == _target) then { - _callerAnim = [getText (_config >> "animationCallerSelf"), getText (_config >> "animationCallerSelfProne")] select (stance _caller == "PRONE"); -}; - -_caller setVariable [QGVAR(selectedWeaponOnTreatment), (weaponState _caller)]; - -// Cannot use secondairy weapon for animation -if (currentWeapon _caller == secondaryWeapon _caller) then { - _caller selectWeapon (primaryWeapon _caller); -}; - -private _wpn = ["non", "rfl", "pst"] select (1 + ([primaryWeapon _caller, handgunWeapon _caller] find (currentWeapon _caller))); -private _callerAnim = [_callerAnim, "[wpn]", _wpn] call CBA_fnc_replace; -if (vehicle _caller == _caller && {_callerAnim != ""}) then { - if (primaryWeapon _caller == "") then { - _caller addWeapon "ACE_FakePrimaryWeapon"; - }; - if (currentWeapon _caller == "") then { - _caller selectWeapon (primaryWeapon _caller); // unit always has a primary weapon here - }; - - if (isWeaponDeployed _caller) then { - TRACE_1("Weapon Deployed, breaking out first",(stance _caller)); - [_caller, "", 0] call EFUNC(common,doAnimation); - }; - - if ((stance _caller) == "STAND") then { - switch (_wpn) do {//If standing, end in a crouched animation based on their current weapon - case ("rfl"): {_caller setVariable [QGVAR(treatmentPrevAnimCaller), "AmovPknlMstpSrasWrflDnon"];}; - case ("pst"): {_caller setVariable [QGVAR(treatmentPrevAnimCaller), "AmovPknlMstpSrasWpstDnon"];}; - case ("non"): {_caller setVariable [QGVAR(treatmentPrevAnimCaller), "AmovPknlMstpSnonWnonDnon"];}; - }; - } else { - _caller setVariable [QGVAR(treatmentPrevAnimCaller), animationState _caller]; - }; - [_caller, _callerAnim] call EFUNC(common,doAnimation); -}; - -//Get treatment time -private _treatmentTime = if (isNumber (_config >> "treatmentTime")) then { - getNumber (_config >> "treatmentTime"); -} else { - if (isText (_config >> "treatmentTime")) exitwith { - private _treatmentTimeConfig = getText(_config >> "treatmentTime"); - if (isnil _treatmentTimeConfig) then { - _treatmentTimeConfig = compile _treatmentTimeConfig; - } else { - _treatmentTimeConfig = missionNamespace getVariable _treatmentTimeConfig; - }; - if (_treatmentTimeConfig isEqualType 0) exitwith { - _treatmentTimeConfig; - }; - [_caller, _target, _selectionName, _className] call _treatmentTimeConfig; - }; - 0; -}; - -// Start treatment -[ - _treatmentTime, - [_caller, _target, _selectionName, _className, _items, _usersOfItems], - DFUNC(treatment_success), - DFUNC(treatment_failure), - getText (_config >> "displayNameProgress"), - _callbackProgress, - ["isnotinside"] -] call EFUNC(common,progressBar); - -// Display Icon -private _iconDisplayed = getText (_config >> "actionIconPath"); -if (_iconDisplayed != "") then { - [QGVAR(treatmentActionIcon), true, _iconDisplayed, [1,1,1,1], getNumber(_config >> "actionIconDisplayTime")] call EFUNC(common,displayIcon); -}; - -// handle display of text/hints -private _displayText = ""; -if (_target != _caller) then { - _displayText = getText(_config >> "displayTextOther"); -} else { - _displayText = getText(_config >> "displayTextSelf"); -}; - -if (_displayText != "") then { - [QEGVAR(common,displayTextStructured), [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; -}; - -true; diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf deleted file mode 100644 index d81c576feb..0000000000 --- a/addons/medical/functions/fnc_treatment_failure.sqf +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Author: KoffeinFlummi, Glowbal - * Callback when the treatment fails - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: SelectionName - * 3: Treatment classname - * 4: Items available > - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_args"]; -_args params ["_caller", "_target", "_selectionName", "_className", "_items", "_usersOfItems"]; - -if (primaryWeapon _caller == "ACE_FakePrimaryWeapon") then { - _caller removeWeapon "ACE_FakePrimaryWeapon"; -}; -if (vehicle _caller == _caller) then { - private _lastAnim = _caller getVariable [QGVAR(treatmentPrevAnimCaller), ""]; - //Don't play another medic animation (when player is rapidily treating) - TRACE_2("Reseting to old animation", animationState player, _lastAnim); - switch (toLower _lastAnim) do { - case "ainvpknlmstpslaywrfldnon_medic": {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; - case "ainvppnemstpslaywrfldnon_medic": {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; - case "ainvpknlmstpslaywnondnon_medic": {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; - case "ainvppnemstpslaywpstdnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; - case "ainvpknlmstpslaywpstdnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; - }; - - [_caller, _lastAnim, 2] call EFUNC(common,doAnimation); -}; -_caller setVariable [QGVAR(treatmentPrevAnimCaller), nil]; - -private _weaponSelect = (_caller getVariable [QGVAR(selectedWeaponOnTreatment), []]); -if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") && {_previousWeapon in (weapons _caller)}}) then { - for "_index" from 0 to 99 do { - _caller action ["SwitchWeapon", _caller, _caller, _index]; - //Just check weapon, muzzle and mode (ignore ammo in case they were reloading) - if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {TRACE_1("Restoring", (weaponState _caller));}; - if ((weaponState _caller) isEqualTo ["","","","",0]) exitWith {ERROR("weaponState not found");}; - }; -} else { - _caller action ["SwitchWeapon", _caller, _caller, 99]; -}; - -{ - _x params ["_unit", "_item"]; - _unit addItem _item; -} forEach _usersOfItems; - -// Record specific callback -private _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className); -if (GVAR(level) >= 2) then { - _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className); -}; - -private _callback = getText (_config >> "callbackFailure"); -_callback = if (isNil _callback) then { - compile _callback -} else { - missionNamespace getVariable _callback -}; -if (!(_callback isEqualType {})) then {_callback = {TRACE_1("callback was NOT code",_callback)};}; - -_args call _callback; diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf deleted file mode 100644 index eb52d20e3c..0000000000 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Author: KoffeinFlummi, Glowbal - * Callback when the treatment is completed - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: SelectionName - * 3: Treatment classname - * 4: Items available > - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_args"]; -_args params ["_caller", "_target", "_selectionName", "_className", "_items", "_usersOfItems"]; - -if (primaryWeapon _caller == "ACE_FakePrimaryWeapon") then { - _caller removeWeapon "ACE_FakePrimaryWeapon"; -}; -if (vehicle _caller == _caller) then { - private _lastAnim = _caller getVariable [QGVAR(treatmentPrevAnimCaller), ""]; - //Don't play another medic animation (when player is rapidily treating) - TRACE_2("Reseting to old animation", animationState player, _lastAnim); - switch (toLower _lastAnim) do { - case "ainvpknlmstpslaywrfldnon_medic": {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; - case "ainvppnemstpslaywrfldnon_medic": {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; - case "ainvpknlmstpslaywnondnon_medic": {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; - case "ainvppnemstpslaywpstdnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; - case "ainvpknlmstpslaywpstdnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; - }; - - [_caller, _lastAnim, 2] call EFUNC(common,doAnimation); -}; -_caller setVariable [QGVAR(treatmentPrevAnimCaller), nil]; - -private _weaponSelect = (_caller getVariable [QGVAR(selectedWeaponOnTreatment), []]); -if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") && {_previousWeapon in (weapons _caller)}}) then { - for "_index" from 0 to 99 do { - _caller action ["SwitchWeapon", _caller, _caller, _index]; - //Just check weapon, muzzle and mode (ignore ammo in case they were reloading) - if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {TRACE_1("Restoring", (weaponState _caller));}; - if ((weaponState _caller) isEqualTo ["","","","",0]) exitWith {ERROR("weaponState not found");}; - }; -} else { - _caller action ["SwitchWeapon", _caller, _caller, 99]; -}; - -// Record specific callback -private _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className); -if (GVAR(level) >= 2) then { - _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className); -}; - -private _callback = getText (_config >> "callbackSuccess"); -if (isNil _callback) then { - _callback = compile _callback; -} else { - _callback = missionNamespace getVariable _callback; -}; -if (!(_callback isEqualType {})) then {_callback = {TRACE_1("callback was NOT code",_callback)};}; - -//Get current blood loose on limb (for "bloody" litter) -private _bloodLossOnSelection = 0; -private _partNumber = ([_selectionName] call FUNC(selectionNameToNumber)) max 0; - -// Add all bleeding from wounds on selection -private _openWounds = _target getvariable [QGVAR(openWounds), []]; -{ - _x params ["", "", "_selectionX", "_amountOf", "_percentageOpen"]; - if (_selectionX == _partNumber) then { - _bloodLossOnSelection = _bloodLossOnSelection + (_amountOf * _percentageOpen); - }; -} forEach _openWounds; -TRACE_1("advanced",_bloodLossOnSelection); - -_args call _callback; -_args pushBack _bloodLossOnSelection; -_args call FUNC(createLitter); - -//If we're not already tracking vitals, start: -if (!(_target getVariable [QGVAR(addedToUnitLoop),false])) then { - [_target] call FUNC(addVitalLoop); -}; - -["ace_treatmentSucceded", [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf deleted file mode 100644 index edf2e871fd..0000000000 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Author: Glowbal - * PFH logic for unconscious state - * - * Arguments: - * 0: PFEH - Args - * 0: The unit that will be put in an unconscious state - * 1: unitPos (stance) - * 2: Starting Time - * 3: Minimum Waiting Time - * 4: Has Moved Out - * 5: Parachute Check - * 1: PFEH ID - * - * ReturnValue: - * None - * - * Public: yes - */ -#include "script_component.hpp" - -private ["_unit", "_minWaitingTime", "_slotInfo", "_hasMovedOut", "_parachuteCheck", "_args", "_originalPos", "_startingTime", "_awakeInVehicleAnimation", "_oldVehicleAnimation", "_vehicle"]; -params ["_args", "_idPFH"]; -_args params ["_unit", "_originalPos", "_startingTime", "_minWaitingTime", "_hasMovedOut", "_parachuteCheck"]; - -TRACE_6("ACE_DEBUG_Unconscious_PFH",_unit, _originalPos, _startingTime, _minWaitingTime, _hasMovedOut, _parachuteCheck); - -if (!alive _unit) exitWith { - if ("ACE_FakePrimaryWeapon" in (weapons _unit)) then { - TRACE_1("Removing fake weapon [on death]",_unit); - _unit removeWeapon "ACE_FakePrimaryWeapon"; - }; - if (GVAR(moveUnitsFromGroupOnUnconscious)) then { - [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide); - }; - [_unit, "setCaptive", "ace_unconscious", false] call EFUNC(common,statusEffect_set); - [_unit, false] call EFUNC(common,disableAI); - //_unit setUnitPos _originalPos; - _unit setUnconscious false; - - [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); - ["ace_unconscious", [_unit, false]] call CBA_fnc_globalEvent; - - TRACE_3("ACE_DEBUG_Unconscious_Exit",_unit, (!alive _unit) , "ace_unconscious"); - - [_idPFH] call CBA_fnc_removePerFrameHandler; -}; - -// In case the unit is no longer in an unconscious state, we are going to check if we can already reset the animation -if !(_unit getVariable ["ACE_isUnconscious",false]) exitWith { - TRACE_7("ACE_DEBUG_Unconscious_PFH",_unit, _args, [_unit] call FUNC(isBeingCarried), [_unit] call FUNC(isBeingDragged), _idPFH, _unit getVariable QGVAR(unconsciousArguments),animationState _unit); - // TODO, handle this with carry instead, so we can remove the PFH here. - // Wait until the unit isn't being carried anymore, so we won't end up with wierd animations - if !(([_unit] call FUNC(isBeingCarried)) || ([_unit] call FUNC(isBeingDragged))) then { - if ("ACE_FakePrimaryWeapon" in (weapons _unit)) then { - TRACE_1("Removing fake weapon [on wakeup]",_unit); - _unit removeWeapon "ACE_FakePrimaryWeapon"; - }; - - if (vehicle _unit == _unit) then { - if (animationState _unit == "AinjPpneMstpSnonWrflDnon") then { - [_unit,"AinjPpneMstpSnonWrflDnon_rolltofront", 2] call EFUNC(common,doAnimation); - [_unit,"amovppnemstpsnonwnondnon", 1] call EFUNC(common,doAnimation); - } else { - [_unit,"amovppnemstpsnonwnondnon", 2] call EFUNC(common,doAnimation); - }; - } else { - _vehicle = vehicle _unit; - _oldVehicleAnimation = _unit getVariable [QGVAR(vehicleAwakeAnim), []]; - _awakeInVehicleAnimation = ""; - if (((count _oldVehicleAnimation) > 0) && {(_oldVehicleAnimation select 0) == _vehicle}) then { - _awakeInVehicleAnimation = _oldVehicleAnimation select 1; - }; - //Make sure we have a valid, non-terminal animation: - if ((_awakeInVehicleAnimation != "") && {(getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> _awakeInVehicleAnimation >> "terminal")) == 0}) then { - [_unit, _awakeInVehicleAnimation, 2] call EFUNC(common,doAnimation); - } else { - //Don't have a valid animation saved, reset the unit animation with a moveInXXX - TRACE_1("No Valid Animation, doing seat reset", _awakeInVehicleAnimation); - _slotInfo = []; - {if ((_x select 0) == _unit) exitWith {_slotInfo = _x;};} forEach (fullCrew _vehicle); - if (_slotInfo isEqualTo []) exitWith {ERROR("No _slotInfo?");}; - //Move the unit out: - _unit setPosASL ((getPosASL _unit) vectorAdd [0,0,100]); - //Move the unit back into old seat: - if ((_slotInfo select 1) == "driver") then { - _unit moveInDriver _vehicle; - } else { - if ((_slotInfo select 1) == "cargo") then { - _unit moveInCargo [_vehicle, (_slotInfo select 2)]; - } else { - _unit moveInTurret [_vehicle, (_slotInfo select 3)]; - }; - }; - }; - }; - _unit setVariable [QGVAR(vehicleAwakeAnim), nil]; - - ["ace_unconscious", [_unit, false]] call CBA_fnc_globalEvent; - // EXIT PFH - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - if (!_hasMovedOut) then { - // Reset the unit back to the previous captive state. - [_unit, "setCaptive", "ace_unconscious", false] call EFUNC(common,statusEffect_set); - - // Swhich the unit back to its original group - //Unconscious units shouldn't be put in another group #527: - if (GVAR(moveUnitsFromGroupOnUnconscious)) then { - [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide); - }; - [_unit, false] call EFUNC(common,disableAI); - _unit setUnitPos _originalPos; // This is not position but stance (DOWN, MIDDLE, UP) - - _unit setUnconscious false; - - [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); - - // ensure this statement runs only once - _args set [4, true]; - }; -}; - -if (_parachuteCheck) then { - if !(vehicle _unit isKindOf "ParachuteBase") then { - [_unit, [_unit] call EFUNC(common,getDeathAnim), 1, true] call EFUNC(common,doAnimation); - _args set [5, false]; - }; -}; - -if (!local _unit) exitWith { - TRACE_6("ACE_DEBUG_Unconscious_PFH",_unit, _args, _startingTime, _minWaitingTime, _idPFH, _unit getVariable QGVAR(unconsciousArguments)); - _args set [3, _minWaitingTime - (CBA_missionTime - _startingTime)]; - _unit setVariable [QGVAR(unconsciousArguments), _args, true]; - [_idPFH] call CBA_fnc_removePerFrameHandler; -}; - -// Ensure we are waiting at least a minimum period before checking if we can wake up the unit again, allows for temp knock outs -if ((CBA_missionTime - _startingTime) >= _minWaitingTime) exitWith { - TRACE_2("ACE_DEBUG_Unconscious_Temp knock outs",_unit, [_unit] call FUNC(getUnconsciousCondition)); - if (!([_unit] call FUNC(getUnconsciousCondition))) then { - _unit setVariable ["ACE_isUnconscious", false, true]; - }; -}; diff --git a/addons/medical/functions/fnc_vitalLoop.sqf b/addons/medical/functions/fnc_vitalLoop.sqf deleted file mode 100644 index 6e5bb7fb2b..0000000000 --- a/addons/medical/functions/fnc_vitalLoop.sqf +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Author: Glowbal, esteldunedain - * Vital loop for a unit. - * - * Arguments: - * 0: The Unit - * 1: Time of last computation - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit", "_lastTime"]; - -// If the unit died the loop is finished -if (!alive _unit) exitWith {}; - -// If locality changed, broadcast the last medical state and finish the local loop -if (!local _unit) exitWith { - if (GVAR(level) >= 2) then { - _unit setVariable [QGVAR(heartRate), _unit getVariable [QGVAR(heartRate), 80], true]; - _unit setVariable [QGVAR(bloodPressure), _unit getVariable [QGVAR(bloodPressure), [80, 120]], true]; - }; - _unit setVariable [QGVAR(bloodVolume), _unit getVariable [QGVAR(bloodVolume), 100], true]; -}; - -// Handle unit vitals -[_unit, CBA_missionTime - _lastTime] call FUNC(handleUnitVitals); - -// Play injured sounds -private _pain = _unit getVariable [QGVAR(pain), 0]; -if (_pain > (_unit getVariable [QGVAR(painSuppress), 0])) then { - // This introduces wierd unconscious behaviour for basic medical and possibly also advanced. - // TODO This is disabled as it's considered non critical code. - // We will need to decide if we want unconscious triggered on high pain levels or if we can get rid of this entirely. - /*if (_pain > 0.7 && {random(1) > 0.6}) then { - [_unit] call FUNC(setUnconscious); - };*/ - - [_unit, _pain] call FUNC(playInjuredSound); -}; - -// Schedule the loop to be executed again 1 sec later -[DFUNC(vitalLoop), [_unit, CBA_missionTime], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/script_component.hpp b/addons/medical/functions/script_component.hpp index 140463d68d..ea579c04a5 100644 --- a/addons/medical/functions/script_component.hpp +++ b/addons/medical/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\medical\script_component.hpp" +#include "\z\ace\addons\medical\script_component.hpp" \ No newline at end of file diff --git a/addons/medical/injuries.hpp b/addons/medical/injuries.hpp new file mode 100644 index 0000000000..72e3336148 --- /dev/null +++ b/addons/medical/injuries.hpp @@ -0,0 +1,276 @@ +class ACE_Medical_Injuries { + // Defines all the possible injury types for advanced medical + 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; + maxDamage = 0.75; + 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}}; + }; + }; +}; diff --git a/addons/medical/script_component.hpp b/addons/medical/script_component.hpp index bb0db0cd74..5fbbf093ce 100644 --- a/addons/medical/script_component.hpp +++ b/addons/medical/script_component.hpp @@ -1,5 +1,5 @@ #define COMPONENT medical -#define COMPONENT_BEAUTIFIED Medical +#define COMPONENT_BEAUTIFIED Medical Core #include "\z\ace\addons\main\script_mod.hpp" // #define DEBUG_MODE_FULL @@ -16,5 +16,3 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" - -#define USE_WOUND_EVENT_SYNC false diff --git a/addons/medical/sounds/Inject.ogg b/addons/medical/sounds/Inject.ogg deleted file mode 100644 index 8418078e0f..0000000000 Binary files a/addons/medical/sounds/Inject.ogg and /dev/null differ diff --git a/addons/medical/sounds/heart_beats/fast_1.wav b/addons/medical/sounds/heart_beats/fast_1.wav deleted file mode 100644 index 4ac1fe6c7d..0000000000 Binary files a/addons/medical/sounds/heart_beats/fast_1.wav and /dev/null differ diff --git a/addons/medical/sounds/heart_beats/fast_2.wav b/addons/medical/sounds/heart_beats/fast_2.wav deleted file mode 100644 index 38bae9cb2a..0000000000 Binary files a/addons/medical/sounds/heart_beats/fast_2.wav and /dev/null differ diff --git a/addons/medical/sounds/heart_beats/fast_3.wav b/addons/medical/sounds/heart_beats/fast_3.wav deleted file mode 100644 index f600d30567..0000000000 Binary files a/addons/medical/sounds/heart_beats/fast_3.wav and /dev/null differ diff --git a/addons/medical/sounds/heart_beats/norm_1.wav b/addons/medical/sounds/heart_beats/norm_1.wav deleted file mode 100644 index 73ebe128d6..0000000000 Binary files a/addons/medical/sounds/heart_beats/norm_1.wav and /dev/null differ diff --git a/addons/medical/sounds/heart_beats/norm_2.wav b/addons/medical/sounds/heart_beats/norm_2.wav deleted file mode 100644 index c46da91489..0000000000 Binary files a/addons/medical/sounds/heart_beats/norm_2.wav and /dev/null differ diff --git a/addons/medical/sounds/heart_beats/slow_1.wav b/addons/medical/sounds/heart_beats/slow_1.wav deleted file mode 100644 index 3cf199ba51..0000000000 Binary files a/addons/medical/sounds/heart_beats/slow_1.wav and /dev/null differ diff --git a/addons/medical/sounds/heart_beats/slow_2.wav b/addons/medical/sounds/heart_beats/slow_2.wav deleted file mode 100644 index ba50746326..0000000000 Binary files a/addons/medical/sounds/heart_beats/slow_2.wav and /dev/null differ diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 811d5cf6e7..8942a10a6a 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1,2393 +1,6 @@ - + - - INJURIES - VERLETZUNGEN - LESIONI - ТРАВМЫ - BLESSURES - OBRAŻENIA - HERIDAS - SÉRÜLÉSEK - ZRANĚNÍ - FERIMENTOS - - - No injuries on this bodypart... - Körperteil nicht verletzt... - Non ci sono lesioni in questa parte del corpo... - Данная часть тела не повреждена... - Aucune blessures sur cette partie du corps... - Brak obrażeń na tej części ciała... - Sin heridas en esta parte del cuerpo... - Ezen a testrészen nincs sérülés... - Žádné zranění na této části těla... - Nenhum ferimento nesta parte do corpo... - - - Litter Simulation Detail - Detale zużytych medykamentów - Detalle de simulación de basura - Количество мусора от медицины - Dettagli Simulazione Rifiuti - Niveau de simulation des détritus - Abfall-Detaillevel - Hulladékszimuláció részletessége - Detalhe da simulação de sujeira - Počet zobrazených předmětů po použití zdravotnického materiálu - - - Litter simulation detail level sets the number of litter items which will be locally spawned in the client. Excessive amounts in local areas could cause FPS lag, so this is a client only setting. - Opcja ta ustawia liczbę zużytych medykamentów, jakie pojawiają się lokalnie wokół gracza. Ich zbyt duża ilość może spowodować spadki FPS, dlatego jest to ustawienie tylko po stronie klienta. - Detalle simulación de basura establece el número de artículos de basura que se generan a nivel local en el cliente. Las cantidades excesivas en áreas locales podrían causar caída de rendimiento, así que esto es un ajuste de cliente únicamente. - Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента. - Il numero di rifiuti che verranno creati localmente. La creazione di troppi rifiuti in aree locali potrebbe causare lag e calo di FPS. Questo è un settaggio lato client. - Le niveau de simulation des détritus règle la quantité de déchets qui vont être créés localement chez le client. Des quantitées excessive chez certains clients peuvent causer des chutes de FPS, c'est donc une option client uniquement. - Die Einstellung für das Abfall-Detaillevel stellt die Menge des lokal angezeigten medizinischen Abfalls ein. Zuviel Abfall kann FPS-Einbrüche erzeugen, weswegen diese Einstellung nur clientseitig ist. - A hulladékszimuláció részletessége megszabja a kliens által megjelenített hulladékobjektumok mennyiségét. Súlyos mennyiségek izolált területeken alacsony FPS-t okozhatnak, így ez egy kliensoldali beállítás. - 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 - Adenosin injizieren - Inyectar Adenosina - Wstrzyknij adenozynę - Injecter de l'adénosine - Inietta andenosina - Aplikovat adenosine - Injetar Adenosina - - - Inject Atropine - Atropin injizieren - Inyectar Atropina - Aplikovat atropin - Wstrzyknij atropinę - Injecter de l'atropine - Ввести атропин - Atropin beadása - Inietta atropina - Injetar Atropina - - - Inject Epinephrine - Epinephrine injizieren - Inyectar Epinefrina - Wstrzyknij adrenalinę - Aplikovat adrenalin - Injecter épinéphrine - Ввести адреналин - Epinefrin beadása - Injetar Epinefrina - Inietta adrenalina - - - Inject Morphine - Morphin injizieren - Inyectar Morfina - Wstrzyknij morfinę - Aplikovat morfin - Ввести морфин - Injecter morphine - Morfium beadása - Injetar Morfina - Inietta morfina - - - Transfuse Blood - Bluttransfusion - Transfundir sangre - Przetocz krew - Transfúze krve - Перелить кровь - Transfuser du sang - Infúzió (vér) - Transfundir Sangue - Trasfusione di sangue - - - Transfuse Plasma - Plasmatransfusion - Transfundir plasma - Transfúze plazmy - Przetocz osocze - Transfuser du Plasma - Перелить плазму - Infúzió (vérplazma) - Trasfusione di plasma - Transfundir Plasma - - - Transfuse Saline - Salzlösungstransfusion - Transfundir salino - Transfúze fyziologického roztoku - Przetocz sól fizjologiczną - Transfuser de la solution saline - Перелить физраствор - Infúzió (sós víz) - Trasfusione di soluzione salina - Transfundir Soro - - - Apply Tourniquet - Tourniquet anwenden - Aplicar torniquete - Aplikovat škrtidlo - Załóż stazę - Appliquer un garrot - Наложить жгут - Applica laccio emostatico - Aplicar Torniquete - Érszorító alkalmazása - - - Bandage - Verbinden - Venda - Bandażuj - Obvázat - Panser - Benda - Kötözés - Atadura - Перевязать - - - Bandage Head - Kopf verbinden - Vendar la cabeza - Bandażuj głowę - Obvázat hlavu - Перевязать голову - Panser Tête - Fej kötözése - Atar Cabeça - Benda la testa - - - Bandage Torso - Torso verbinden - Vendar el torso - Bandażuj tors - Obvázat hruď - Перевязать торс - Panser Torse - Testtörzs kötözése - Atar Tronco - Benda il torso - - - Bandage Left Arm - Linken Arm verbinden - Vendar el brazo izquierdo - Bandażuj lewe ramię - Obvázat levou ruku - Перевязать левую руку - Panser Bras Gauche - Bal kar kötözése - Atar Braço Esquerdo - Benda il braccio sinistro - - - Bandage Right Arm - Rechten Arm verbinden - Vendar el brazo derecho - Bandażuj prawe ramię - Obvázat pravou ruku - Перевязать правую руку - Panser Bras Droit - Jobb kar kötözése - Atar Braço Direito - Benda il braccio destro - - - Bandage Left Leg - Linkes Bein verbinden - Vendar la pierna izquierda - Bandażuj lewą nogę - Obvázat levou nohu - Перевязать левую ногу - Panser Jambe Gauche - Bal láb kötözése - Atar Perna Esquerda - Benda la gamba sinistra - - - Bandage Right Leg - Rechtes Bein verbinden - Vendar la pierna derecha - Bandażuj prawą nogę - Obvázat pravou nohu - Перевязать правую ногу - Panser Jambe Droite - Jobb láb kötözése - Atar Perna Direita - Benda la gamba destra - - - Injecting Morphine... - Morphin injizieren... - Inyectando Morfina... - Wstrzykiwanie morfiny... - Aplikuji morfin... - Введение морфина... - Injection de Morphine... - Morfium beadása... - Injetando Morfina... - Inietto la morfina... - - - Injecting Epinephrine... - Epinephrin injizieren... - Inyectando Epinefrina... - Wstrzykiwanie adrenaliny... - Aplikuji adrenalin... - Введение адреналина... - Injection d'Adrénaline... - Epinefrin beadása... - Injetando Epinefrina... - Inietto l'adrenalina... - - - Injecting Adenosine... - Adenosin injizieren... - Inyectando Adenosina... - Wstrzykiwanie adenozyny... - Injection d'adénosine... - Inietto l'andenosina - Aplikuji adenosine... - Injetando Adenosina... - - - Injecting Atropine... - Atropin injizieren... - Inyectando Atropina... - Aplikuji atropin... - Wstrzykiwanie atropiny... - Injection d'Atropine... - Введение атропина... - Atropin beadása... - Inietto l'atropina... - Injetando Atropina - - - Transfusing Blood... - Bluttransfusion... - Transfusión de sangre... - Przetaczanie krwi... - Probíhá transfúze krve... - Переливание крови... - Transfusion Sanguine... - Infúzió vérrel... - Transfundindo Sangue... - Effettuo la trasfusione di sangue... - - - Transfusing Saline... - Salzlösungtransfusion... - Transfusión de salino... - Probíha transfúze fyziologického roztoku... - Przetaczanie soli fizjologicznej... - Transfusion de saline... - Переливание физраствора... - Infúzió sós vizzel... - Effettuo la rasfusione di soluzione salina - Transfundindo Soro... - - - Transfusing Plasma... - Plasmatransfusion... - Transfusión de plasma... - Probíha transfúze plazmy... - Przetaczanie osocza... - Transfusion de Plasma... - Переливание плазмы... - Infúzió vérplazmával... - Effettu la trasfusione di plasma... - Transfundindo Plasma... - - - Bandaging... - Verbinden... - Vendando... - Bandażowanie... - Obvazuji... - Pansement... - Sto bendando... - Bekötözés... - Atando... - Перевязывание... - - - Applying Tourniquet... - Setze Tourniquet an... - Aplicando torniquete... - Aplikuji škrtidlo... - Zakładanie stazy... - Mise en place du Garrot... - Наложение жгута... - Érszorító felhelyezése... - Sto applicando il laccio emostatico... - Applicando Torniquete - - - Medical - Lékařské - Médical - Sanitäter - Medico - Medyczne - Médico - Медик - Médico - Orvosi - - - Field Dressing - Wundverband - Compresa de campaña - Бинтовая повязка - Obinadlo - Bandaż jałowy - Bandage rapide - Zárókötszer - Bendaggio rapido - Curativo de Campo - - - Packing Bandage - Mullbinde - Vendaje compresivo - Компресионный пакет - Bandaż uciskowy - Nyomókötszer - Bendaggio compressivo - Bandage gauze - Bandagem de Compressão - Obvaz Tlakový - - - Elastic Bandage - Elastischer Verband - Vendaje elástico - Давящая повязка - Obavaz Elastický - Bandaż elastyczny - Pansement élastique - Rögzitő kötszer - Bendaggio elastico - Bandagem Elástica - - - QuikClot - QuikClot - QuikClot - QuikClot - Opatrunek QuikClot - QuikClot - Hémostatique - QuikClot - QuikClot (polvere emostatica) - QuikClot - - - Check Pulse - Puls überprüfen - Comprobar pulso - Проверить пульс - Zkontrolovat puls - Sprawdź tętno - Vérifier le pouls - Pulzus ellenőrzése - Controlla il polso - Checar Pulso - - - Check Blood Pressure - Blutdruck überprüfen - Comprobar presión arterial - Проверить давление - Zkontrolovat krevní tlak - Sprawdź ciśnienie krwi - Vérification de la tension - Vérnyomás megmérése - Controlla pressionsa sanguigna - Chegar Pressão Sanguínea - - - Triage Card - Triagekarte - Tarjeta de clasificación - Медкарта - Karta segregacyjna - Štítek - Carte de triage - Orvosi lap - Triage Card - Cartão de Triagem - - - No entries on this triage card. - Keine Einträge auf der Triagekarte - Nessuna voce sulla Triage Card - Нет записей. - Aucune entrée sur cette carte de triage - Brak wpisów w tej karcie segregacyjnej. - Sin entradas en esta tarjeta de clasificación. - Ez az orvosi lap nem tartalmaz bejegyzést. - Žádné záznamy na tomto štítku - Nenhuma entrada neste cartão de triagem - - - Tourniquet - Tourniquet - Torniquete - Жгут - Škrtidlo - Staza - Garrot - Érszorító - Laccio emostatico - Torniquete - - - Remove Tourniquet - Tourniquet entfernen - Quitar torniquete - Снять жгут - Sundat škrtidlo - Zdejmij stazę - Enlever le garrot - Érszorító leszedése - Rimuovi laccio emostatico - Remover Torniquete - - - Diagnose - Diagnose - Diagnosi - Диагностика - Diagnostiquer - Diagnoza - Diagnosticar - Diagnosztizálás - Diagnóza - Diagnosticar - - - Diagnosing... - Diagnostizieren... - Diagnosi in corso... - Диагностика... - Diagnostic en cours - Diagnozowanie... - Diagnosticando... - Diagnózis folyamatban... - Diagnostika... - Diagnosticando... - - - CPR - HLW - RCP - Сердечно-лёгочная реанимация - RPC - RKO - RCP - Újraélesztés - CPR - SBV - - - Performing CPR... - HLW durchführen... - Eseguendo RCP... - Сердечно-лёгочная реанимация... - RPC en cours - Przeprowadzanie RKO... - Realizando RCP... - Újraélesztés folyamatban... - Provádím CPR... - Realizando o SBV... - - - Give Blood IV (1000ml) - Bluttransfusion IV (1000ml) - Dar Sangre IV (1000ml) - Перелить пакет крови (1000 мл) - Podaj krew IV (1000ml) - Administrer du sang en IV (1000ml) - Podat krev. transfúzi (1000ml) - Vér adása intravénásan (1000ml) - Effettua trasfusione sangue EV (1˙000ml) - Administrar Sangue IV (1000ml) - - - Give Blood IV (500ml) - Bluttransfusion IV (500ml) - Dar Sangre IV (500ml) - Перелить пакет крови (500 мл) - Podaj krew IV (500ml) - Administrer du sang en IV (500ml) - Podat krev. transfúzi (500ml) - Vér adása intravénásan (500ml) - Effettua trasfusione sangue EV (500ml) - Administrar Sangue IV (500ml) - - - Give Blood IV (250ml) - Bluttransfusion IV (250ml) - Dar Sangre IV (250ml) - Перелить пакет крови (250 мл) - Podaj krew IV (250ml) - Administrer du sang en IV (250ml) - Podat krev. transfúzi (250ml) - Vér adása intravénásan (250ml) - Effettua trasfusione sangue EV (250ml) - Administrar Sangue IV (250ml) - - - Give Plasma IV (1000ml) - Plasmatransfusion IV (1000ml) - Dar Plasma IV (1000ml) - Перелить пакет плазмы (1000 мл) - Podaj osocze IV (1000ml) - Administrer du plasma en IV (1000ml) - Podat plazmu (1000ml) - Vérplazma adása intravénásan (1000ml) - Effettua trasfusione plasma EV (1˙000ml) - Administrar Plasma IV (1000ml) - - - Give Plasma IV (500ml) - Plasmatransfusion IV (500ml) - Dar Plasma IV (500ml) - Перелить пакет плазмы (500 мл) - Podaj osocze IV (500ml) - Administrer du plasma en IV (500ml) - Podat plazmu (500ml) - Vérplazma adása intravénásan (500ml) - Effettua trasfusione plasma EV (500ml) - Administrar Plasma IV (500ml) - - - Give Plasma IV (250ml) - Plasmatransfusion IV (250ml) - Dar Plasma IV (250ml) - Перелить пакет плазмы (250 мл) - Podaj osocze IV (250ml) - Administrer du plasma en IV (250ml) - Podat plazmu (250ml) - Vérplazma adása intravénásan (250ml) - Effettua trasfusione plasma EV (250ml) - Administrar Plasma IV (250ml) - - - Give Saline IV (1000ml) - Kochsalzlösung IV (1000ml) - Dar Salino IV (1000ml) - Перелить пакет физраствора (1000 мл) - Podaj sól fizjologiczną IV (1000ml) - Administrer de la solution saline en IV (1000ml) - Podaz fyz. roztok (1000ml) - Sós víz adása intravénásan (1000ml) - Effettua trasfusione salina EV (1˙000ml) - Administrar Soro IV (1000ml) - - - Give Saline IV (500ml) - Kochsalzlösung IV (500ml) - Dar Salino IV (500ml) - Перелить пакет физраствора (500 мл) - Podaj sól fizjologiczną IV (500ml) - Administrer de la solution saline en IV (500ml) - Podaz fyz. roztok (500ml) - Sós víz adása intravénásan (500ml) - Effettua trasfusione salina EV (500ml) - Administrar Soro IV (500ml) - - - Give Saline IV (250ml) - Kochsalzlösung IV (250ml) - Dar Salino IV (250ml) - Перелить пакет физраствора (250 мл) - Podaj sól fizjologiczną IV (250ml) - Administrer de la solution saline en IV (250ml) - Podaz fyz. roztok (250ml) - Sós víz adása intravénásan (250ml) - Effettua trasfusione salina EV (250ml) - Administrar Soro IV (250ml) - - - Minor - Gering - Menor - Несрочная помощь - Normalny - Mineur - Minimální - Enyhe - Minore - Leve - - - Delayed - Retrasado - Срочная помощь - Opóźniony - Différé - Verzögert - Odložitelný - Késleltetett - Differito - Atrasado - - - Immediate - Inmediato - Неотложная помощь - Natychmiastowy - Urgence Immédiate - Sofort - Okamžitý - Azonnali - Immediata - Imediato - - - Deceased - Fallecido - Труп - Nie żyje - Décédé - Verstorben - Mrtvý - Elhalálozott - Deceduto - Falecido - - - None - Ninguno - Отсутствует - Brak - Aucun - Keine - Nic - Semmi - Nessuna - Nenhum - - - Normal breathing - Дыхание в норме - Respiración normal - Respiration normale - Normalny oddech - Normale Atmung - Dýchá normálně - Normális légzés - Respiro normale - Respiração normal - - - No breathing - Keine Atmung - Дыхание отсутствует - No respira - Aucune respiration - Brak oddechu - Nedýchá - Nincs légzés - Mancanza di respiro - Não respira - - - Difficult breathing - Дыхание затруднено - Dificultad para respirar - Difficultée respiratoire - Trudności z oddychaniem - Schwere Atmung - Dýchá s obtížemi - Nehéz légzés - Difficoltà a respirare - Dificuldade para respirar - - - Almost no breathing - Beinahe keine Atmung - Дыхание очень слабое - Casi sin respiración - Respiration faible - Prawie brak oddechu - Skoro nedýchá - Alig van légzés - Respira a fatica - Quase não respira - - - Bleeding - Blutet - Кровотечение - Sangrando - Saignement - Krwawienie zewnętrzne - Krvácí - Vérzik - Sanguinando - Sangrando - - - In Pain - Hat Schmerzen - Испытывает боль - Con dolor - Ressent de la douleur - W bólu - V bolestech - Fájdalom alatt - Con dolore - Com dor - - - Lost a lot of Blood - Hat eine große Menge Blut verloren - Большая кровопотеря - Mucha sangre perdida - A perdu beaucoup de sang - Stracił dużo krwi - Ztratil hodně krve - Sok vért vesztett - Ha perso parecchio sangue - Perdeu muito sangue - - - Tourniquet [CAT] - Tourniquet [CAT] - Жгут - Torniquete [CAT] - Garrot [CAT] - Staza [typ. CAT] - Škrtidlo [CAT] - Érszorító [CAT] - Laccio emostatico [CAT] - Torniquete [CAT] - - - Receiving IV [%1ml] - Erhalte IV [%1ml] - Recibiendo IV [%1ml] - Принимается переливание [%1 мл] - Otrzymywanie IV [pozostało %1ml] - Transfusion en IV [%1ml] - Přijímání transfúze [%1ml] - Infúzióra kötve [%1ml] - Ricevendo EV [%1ml] - Recebendo IV [%1ml] - - - Bandage (Basic) - Bandage (Einfach) - Повязка (обычная) - Vendaje (Básico) - Bandage (Standard) - Bandaż (jałowy) - Obvaz (Standartní) - Kötszer (Általános) - Bendaggio (base) - Bandagem(Básico) - - - Used to cover a wound - Для перевязки ран - Utilizado para cubrir una herida - Utilisé pour couvrir une blessure - Używany w celu przykrycia i ochrony miejsca zranienia. Najczęściej stosowany bandaż na otarcia i draśnięcia. - Verwendet um Wunden abzudecken - Sebesülések befedésére alkalmas - Usato per coprire una ferita - Usado para cobrir um ferimento - Slouží k překrytí poranění - - - A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. - Ein Verband, der aus einem besonderen Material besteht um die Wunde zu schützen, nachdem die Blutung gestoppt wurde. - Повязка, накладываемая поверх раны после остановки кровотечения. - Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar. - Bandage fait d'un matériel spécial utilisé pour couvrir une blessure, qui peut etre appliqué dès que le saignement a été stoppé. - Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia. - Egy különleges anyagú kötszer sebek betakarására, amelyet a vérzés elállítása után helyeznek fel. - Una benda apposita, utilizzata per coprire una ferita, la quale viene applicata su di essa una volta fermata l'emorragia. - Uma curativo, material específico para cobrir um ferimento que é aplicado assim que o sangramento é estancando. - Obvaz je vhodným způsobem upravený sterilní materiál, určený k překrytí rány, případně k fixaci poranění. - - - Packing Bandage - Mullbinde - Тампонирующая повязка - Vendaje compresivo - Bandage gauze - Bandaż (uciskowy) - Nyomókötszer - Bendaggio compressivo - Bandagem de Compressão - Obvaz (Tlakový) - - - Used to pack medium to large wounds and stem the bleeding - Wird verwendet, um mittlere bis große Wunden abzudecken und Blutungen zu stoppen - Для тампонирования ран среднего и большого размера и остановки кровотечения. - Se utiliza para vendar heridas medianas o grandes y detener el sangrado - Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragie. - Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Dobrze radzi sobie z tamowaniem ran płatowych oraz postrzałowych. - Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer - Usato su ferite medie o larghe per fermare emorragie. - Usado para o preenchimento de cavidades geradas por ferimentos médios e grandes e estancar o sangramento. - Používá se k zastavení středních až silnějších krvácení - - - A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. - Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжёлых сочетанных ранениях возможно тампонирование раны. - Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos. - Bandage servant à recouvrir les blessures pour arrêter les hémoragies et faciliter la guérison. Recouvrir une blessure est optionnel dans le cas de blessures polytraumatiques. - Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran. - Egy kötszerfajta, melyet a sebek nyomására használnak a vérzés elállítása és sebgyógyulás érdekében. A nyomókötés egy lehetőség nagyobb polytraumatikus sérülések esetén. - Un bendaggio usato per coprire la ferita, fermare il sanguinamento e facilitarne la guarigione. Questa tecnica è opzionale su ferite multiple. - Ein Verband, um die Wunde abzudecken und die Wundheilung zu fördern. Wunden abdecken ist eine Option bei größeren Polytraumen - Uma bandagem usada para preencher o ferimento para estancar o sangramento e facilitar a cicatrização. Preenchimento de feridas é uma opção em ferimentos de politrauma grandes. - Tlakový obvaz se skládá se ze sterilní krycí vrstvy, na kterou je přiložena silná vrstva savého materiálu stlačující cévu v ráně a která je přitlačována k ráně a připevněna obinadlem. Slouží k zastavení silnějších krvácení. - - - Bandage (Elastic) - Bandage (Elastisch) - Повязка (давящая) - Vendaje (Elástico) - Bandage (Élastique) - Bandaż (elastyczny) - Obvaz (Elastický) - Rögzító kötszer - Benda (elastica) - Bandagem (Elástica) - - - Bandage kit, Elastic - Elastische Binde (Kompressionsbinde) - Давящая повязка - Kit de vendaje (Elástico) - Bandage compressif élastique - Bandaż elastyczny służy do opatrywania ran ciętych oraz kłutych. Dobrze radzi sobie również ze zgniecieniami tkanek miękkich oraz rozerwaniami powierzchni skóry. - Rugalmas kötszercsomag, "rögzítő" - Kit di bendaggio, elastico - Kit de Bandagem, Elástica - Sada obvazů, Elastická - - - Allows an even compression and extra support to the injured area. - Ermöglicht eine gleichmäßige Kompression und zusätzliche Unterstützung für den verletzten Bereich. - Давящая повязка обеспечивает равномерное сжатие и дополнительную поддержку повреждённой области - Ce bandage peut être utilisé pour compresser la plaie afin de ralentir le saignement et assurer la tenue du bandage lors de mouvement. - Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów. - Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada - Egyenletes nyomást és támogatást biztosít a sebesült felületnek. - Permette di comprimere e aiutare la zone ferita. - Esta bandagem pode ser utilizada para comprimir o ferimento e diminuir o sangramento e garantir que o ferimento não abra em movimento. - Hodí se k fixačním účelům a to i v oblastech kloubů. - - - Tourniquet (CAT) - Tourniquet [CAT] - Жгут - Torniquete (CAT) - Garrot (CAT) - Staza (typ. CAT) - Škrtidlo (CAT) - Érszorító (CAT) - Laccio emostatico (CAT) - Torniquete (CAT) - - - Slows down blood loss when bleeding - Замедляет кровопотерю при кровотечении - Reduce la velocidad de pérdida de sangre - Ralentit le saignement - Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. Nie może być noszony zbyt długo ze względu na narastający ból z kończyny. - Verringert den Blutverlust - Lelassítja a vérvesztést vérzés esetén - Rallenta la perdita di sangue in caso di sanguinamento - Reduz a velocidade da perda de sangue - Zpomaluje ztráty krve při krvácení - - - A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. - Жгут используется для прижатия сосудов к костным выступам, которое приводит к остановке или значительному уменьшению кровотечения - Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre - Un dispositif permettant de compresser les artères et veines afin de réduire la perte de sang. - Opaska uciskowa CAT służy do tamowanie krwotoków w sytuacji zranienia kończyn z masywnym krwawieniem tętniczym lub żylnym. - Ein Hilfsmittel, das Druck auf Venen und Arterien ausübt und so den Blutfluss verringert. - Egy szűkítőeszköz, mely a vénás és artériás nyomás keringés helyi összenyomására szolgál, ezzel lelassítva vagy megállítva az adott területen a vérkeringést. Ez csökkenti a vérvesztés mértékét. - Un laccio emostatico usato per comprimere le vene e arterie per bloccare o rallentare la circolazione del sangue e quindi rallentare dissanguamenti. - A aparelho que comprime as artérias e veias para diminuir a perda de sangue. - Zařízení používané ke stlačení venózního a arteriálního oběhu. V důsledku dochází ke zpomalení toku krve a tedy i snížení ztrát krve. - - - Morphine autoinjector - Morphium-Autoinjektor - Морфин в пневмошприце - Morfina auto-inyectable - Auto-injecteur de Morphine - Autostrzykawka z morfiną - Auto-morfin - Morfium autoinjektor - Autoiniettore di morfina - Auto-injetor de morfina - - - Used to combat moderate to severe pain experiences - Wird verwendet um moderate bis starke Schmerzen zu lindern. - Для снятия средних и сильных болевых ощущений - Usado para combatir los estados dolorosos de moderados a severos - Utilisé pour réduire les douleurs modérées à sévères. - Morfina. Ma silne działanie przeciwbólowe. Powoduje spowolnienie tętna oraz rozrzedzenie krwi, zwiększając tym samym ciśnienie tętnicze krwi. Działa przez ok. 15 minut. - Mérsékelttől erős fájdalomig, ellene alkalmazandó termék - Usato per combattere il dolore. - Usado para combater dores moderadas e severas - Slouží k tlumení středně těžkých a těžkých bolestí - - - An analgesic used to combat moderate to severe pain experiences. - Обезболивающее для снятия средних и сильных болевых ощущений. - Analgésico usado para combatir los estados dolorosos de moderados a severos. - Un analgésique puissant servant à réduire les douleurs modérées à sévères. - Organiczny związek chemiczny z grupy alkaloidów. Ma silne działanie przeciwbólowe. - Ein Schmerzmittel um mäßige bis starke Schmerzen zu behandeln - Egy fájdalomcsillapító anyag, jellemzően mérsékelt vagy erős fájdalom esetén alkalmazandó. - Un analgesico usato per combattere il dolore. - 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 - Adenosin-Autoinjektor - Asenosina auto-inyectable - Autostrzykawka z adenozyną - Auto-injécteur d'adénosine - Autoiniettore di adenosina - Auto-adenosine - Auto-injetor de Adenosina - - - Used to counter effects of Epinephrine - Wird verwendet um die Symptome von Epiniphrin zu lindern - Utilizada para contrarrestar los effectos de la Epinefrina - Adenozyna. Stosowana do zwalczania efektów działania adrenaliny. - Utilisé pour contrer les effets de l'adrénaline - Usato per contrastare l'effetto dell'epinefrina - Slouží jako protiváha Adrenalinu - Usado para combater os efeitos da Epinefrina - - - A drug used to counter the effects of Epinephrine - Ein Medikament, das die Symptome von Epiniphrin bekämpft. - Medicamento usado para contrarrestar los efectos de la Epinefrina. - Organiczny związek chemiczny z grupy nukleozydów. Skuteczna w leczeniu częstoskurczu komorowego. Działa rozszerzająco na naczynia krwionośne. - Un composé utilisé pour contrer les effets de l'adrénaline - Medicamento usato per contrastare l'effetto dell'epinefrina - Droga používaná k tlumení efektu Adrenalinu - Uma droga usada para combater os efeitos da Epinefrina - - - Atropine autoinjector - Атропин в пневмошприце - Atropina auto-inyectable - Auto-injecteur d'Atropine - Autostrzykawka AtroPen - Atropin-Autoinjektor - Auto-atropine - Atropin autoinjektor - Autoiniettore di atropina - Auto-injetor de Atropina - - - Used in NBC scenarios - Применяется для защиты от ОМП - Usado en escenarios NBQ - Utilisé en cas d'attaque CBRN - Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. - Verwendet bei ABC-Kontamination - NBK helyzetek esetén használandó - Usato in situazioni con gas nervino. - Usado em casos de ataque QBRN - Používá se v přítomnosti nervových plynů - - - A drug used by the Military in NBC scenarios. - Препарат, используемый в войсках для защиты от оружия массового поражения. - Medicamento usado por militares en escenarios NBQ - Médicament utilisé par l'armée en cas d'attaque CBRN - Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Środek stosowany w przypadku zagrożeń NBC. - Ein Medikament, das vom Militär bei ABC-Kontamination verwendet wird. - Egy instabil alkaloid, NBK helyzetek esetén a katonai szervezetek veszik használatba. - E' un farmaco usato in ambito militare in scenari con presenza di gas nervino. - Uma droga usada por militares em casos de ataque QBRN. - Atropin slouží jako protijed na otravu organofosfátovými insekticidy (diazinon) a nervovými plyny. - - - Epinephrine autoinjector - Адреналин в пневмошприце - Epinefrina auto-inyectable - Auto-injecteur d'épinéphrine - Autostrzykawka EpiPen - Epiniphrin-Autoinjektor - Auto-adrenalin - Epinefrin autoinjektor - Autoiniettore di adrenalina - Auto-injetor de epinefrina - - - Increase heart rate and counter effects given by allergic reactions - Стимулирует работу сердца и купирует аллергические реакции - Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas - Augmente la fréquence cadiaque et annule les effets d'une réaction anaphylactique - Adrenalina. Przyśpiesza tętno oraz zwiększa ciśnienie krwi a także przeciwdziała efektom wywołanym przez reakcje alergiczne. - Steigert die Herzfrequenz und bekämpft Symptome von allergischen Reaktionen. - Növeli a szívverést és ellenzi az allergiás reakciók hatásait - Aumenta il battito cardiaco e combatte gli effetti di reazioni allergiche. - Aumenta a frequência cardíaca e combate efeitos causados por reações alérgicas - Zvyšuje srdeční frekvenci a chrání před alergickými reakcemi - - - A drug that works on a sympathetic response to dilate the bronchi, increase heart rate and counter such effects given by allergic reactions (anaphylaxis). Used in sudden cardiac arrest scenarios with decreasing positive outcomes. - Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшенной вероятностью благоприятного исхода. - Medicamento que dilata los bronquios, aumenta la frecuencia cardiaca y contrarresta los efectos de las reacciones alérgicas (anafilaxis). Se utiliza en caso de paros cardiacos repentinos. - Medicament qui fonctionne sur le système nerveux sympathique créant une dilatation des bronches, augmente la fréquence cardiaque et annule les effets d'une réaction allergique (anaphylaxie). Utilisé lors d'arrêt cardio-respiratoire pour augmenter les chances de retrouver un pouls. - EpiPen z adrenaliną ma działanie sympatykomimetyczne, tj. pobudza receptory alfa- i beta-adrenergiczne. Pobudzenie układu współczulnego prowadzi do zwiększenia częstotliwości pracy serca, zwiększenia pojemności wyrzutowej serca i przyśpieszenia krążenia wieńcowego. Pobudzenie oskrzelowych receptorów beta-adrenergicznych wywołuje rozkurcz mięśni gładkich oskrzeli, co w efekcie zmniejsza towarzyszące oddychaniu świsty i duszności. - Una sostanza che permette di dilatare i bronchi, aumentare il battito cardiaco e combattere effetti di reazioni allergiche. Usato anche in casi di arresto cardiaco. - Ein Medikament, das die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen (Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht. - Uma droga trabalha dilatando os bronquios, aumentando a frequência cardíaca e combate efeitos de reações alérgicas(anáfilaticas). Usado em casos de parada cardiaca com poucas changes de recuperação. - Egy hormon, mely a szimpatikus idegrendszer által kitágítja a hörgőket, valamint megnöveli a szívverést, ezzel ellensúlyozva ilyen jellegű allergiás reakciókat (anafilaxiás sokk). Hirtelen szívmegállás esetén is használt, idő alatt csökkenő hatásfokkal. - Zúžení periferních cév díky působení na alfa receptory a následné kontrakci hladkých svalů, tím dochází k tzv. centralizaci oběhu, krev se soustřeďuje v životně důležitých centrálních orgánech (srdce, mozek, plíce), působí také pozitivně na srdeční činnost a dochází ke zvýšení krevního tlaku a tepu. Dále se používá při náhlé srdeční zástavě. - - - Plasma IV (1000ml) - Плазма для в/в вливания (1000 мл) - Plasma IV (1000ml) - Plasma Sanguin IV (1000ml) - Osocze IV (1000ml) - Plasma IV (1000ml) - Vérplazma-infúzió (1000ml) - Plasma EV (1000ml) - Plasma IV (1000ml) - Krevní plazma (1000ml) - - - A volume-expanding blood supplement. - Дополнительный препарат, применяемый при возмещении объема крови. - Suplemento para expandir el volumen sanguíneo. - Supplément visant à remplacer les volumes sanguin - Składnik krwi, używany do zwiększenia jej objętości. - Egy térfogatnövelő vérkiegészítmény. - Aiuta ad aumentare il volume sanguigno. - Volumenerweiterungsmittel (künstliches Blutvolumen) - Suplemento para expandir o volume sanguíneo. - Intravenózně podávaný doplněk k zvětšení objemu krve - - - A volume-expanding blood supplement. - Дополнительный препарат, применяемый при возмещении объема крови. - Suplemento para expandir el volumen sanguíneo. - Supplément visant à remplacer le volume sanguin et remplace les plaquettes. - Składnik krwi, używany do zwiększenia jej objętości. - Egy térfogatnövelő vérkiegészítmény. - Aiuta ad aumentare il volume sanguigno. - Volumenerweiterungsmittel (künstliches Blutvolumen) - Suplemento para expandir o volume sanguíneo. - Intravenózně podávaný doplněk k zvětšení objemu krve - - - Plasma IV (500ml) - Плазма для в/в вливания (500 мл) - Plasma IV (500ml) - Plasma sanguin IV (500ml) - Osocze IV (500ml) - Plasma IV (500ml) - Vérplazma-infúzió (500ml) - Plasma EV (500ml) - Plasma IV (500ml) - Krevní plazma (500ml) - - - Plasma IV (250ml) - Плазма для в/в вливания (250 мл) - Plasma IV (250ml) - Plasma sanguin (250ml) - Osocze IV (250ml) - Plasma IV (250ml) - Vérplazma-infúzió (250ml) - Plasma EV (250ml) - Plasma IV (250ml) - Krevní plazma (250ml) - - - Blood IV (1000ml) - Кровь для переливания (1000 мл) - Sangre IV (1000ml) - Cullot sanguin IV (1000ml) - Krew IV (1000ml) - Blut IV (1000ml) - Vér-infúzió (1000ml) - Sangue EV (1000ml) - Sangue IV (1000ml) - Krevní transfúze (1000ml) - - - Blood IV, for restoring a patients blood (keep cold) - Пакет крови для возмещения объёма потерянной крови (хранить в холодильнике) - Sangre intravenosa, para restarurar el volumen sanguíneo (mantener frío) - Cullot sanguin O-, utilisé seulement lors de perte sanguine majeure afin de remplacer le volume sanguin perdu. Habituelment utilisé lors du transport ou dans un etablisement de soins. - Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych. - Vér-infúzió, intravénás bejuttatásra egy páciensnek (hidegen tárolandó) - Sangue usato per ripristinare pazienti in cui si è verificata una perdita di sangue (conservare al fresco) - Blut IV, Bluthaushalt des Patienten wiederherstellen. (Kühl halten) - Sangue intravenoso, para restaurar o volume sanguinio do paciente.(Manter frio) - Krevní transfuze pro doplnění pacientovi krve (skladujte v chladu) - - - O Negative infusion blood used in strict and rare events to replenish blood supply usually conducted in the transport phase of medical care. - Кровь I группы, резус-отрицательная, применяется по жизненным показаниям для возмещения объема потерянной крови на догоспитальном этапе оказания медицинской помощи. - Krew 0 Rh-, używana w rzadkich i szczególnych przypadkach do uzupełnienia krwi u pacjenta, zazwyczaj w trakcie fazie transportu rannej osoby do szpitala. - Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdida. Uso habitual durante el transporte de heridos. - Sangue 0 negativo usato per ripristinare sangue in pazienti in cui si è verificata una perdita di sangue. - Cullot sanguin O- utilisé dans de rares et stricts cas pour compléter une perte de sang importante. Administré normalement lors d'un MEDEVAC. - O Negative Blutinfusion wird nur in seltenen Fällen verwendet, um den Bluthaushalt des Patienten zu ergänzen. Wird in der Regel wärend der Transportphase durchgeführt. - Sangue O- , utilizado em casos raros para rapidamente repor o sangue. Uso habitual ocorre durante o transporte ou em estações de tratamento. - Nullás vércsoportú, Rh-negatív vér-infúzió, melyet kritikus és ritka helyzetekben vérutánpótlásra használnak, jellemzően az orvosi ellátás szállítási fázisa közben. - 0 Rh negativní krev se používá v vzácných případech k doplnění pacientovy hladiny krve, obvykle při převozu zraněné osoby do nemocnice. - - - Blood IV (500ml) - Кровь для переливания (500 мл) - Sangre IV (500ml) - Cullot sanguin IV (500ml) - Krew IV (500ml) - Blut IV (500ml) - Vér-infúzió (500ml) - Sangue EV (500ml) - Sangue IV (500ml) - Krevní transfúze (500ml) - - - Blood IV (250ml) - Кровь для переливания (250 мл) - Sangre IV (250ml) - Cullot sanguin IV (250ml) - Krew IV (250ml) - Blut IV (250ml) - Vér-infúzió (250ml) - Sangue EV (250ml) - Sangue IV (250ml) - Krevní transfúze (250ml) - - - Saline IV (1000ml) - Физраствор для в/в вливания (1000 мл) - Salino IV (1000ml) - Solution saline 0.9% IV (1000ml) - Sól fizjologiczna IV (1000ml) - Kochsalzlösung (1000ml) - 0,9%-os sósvíz-infúzió (1000ml) - Soluzione salina EV (1˙000ml) - Soro IV (1000ml) - Fyziologický roztok (1000ml) - - - Saline IV, for restoring a patients blood - Пакет физраствора для возмещения объёма потерянной крови - Solución salina intravenosa, para restaurar el volumen sanguíneo - Solution saline 0.9% IV, pour rétablir temporairement la tension artérielle - Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV). - 0,9%-os sósvíz-infúzió, a páciens vérmennyiségének helyreállítására - Soluzione salina, usata per ripristinare sangue nei pazienti. - Kochsalzlösung, ein medizinisches Volumenersatzmittel - Solução Salina Intravenosa 0.9%, para restaurar o volume de sangue temporariamente. - Fyziologický roztok se aplikuje intravenózně a slouží k obnově pacientovi krve - - - A medical volume-replenishing agent introduced into the blood system through an IV infusion. - Пакет физиологического раствора для возмещения объёма потерянной крови путем внутривенного вливания - Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa. - Un remplacant temporaire pour rétablir la tension artérielle lors de perte sanguine, administré par intra-veineuse - Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV). - Egy orvosi térfogat-helyreállító készítmény, melyet intravénás módon lehet a szervezetbe juttatni. - Una soluzione medica per ripristinare il volume del sangue introdotta tramite trasfusione EV. - Ein medizinisches Volumenersatzmittel, dass durch einen intravenösen Zugang in den Blutkreislauf verabreicht wird. - Uma reposição temporaria para restaurar a pressão arterial perdida por perda de sangue. - Fyziologický roztok se využívá nejčastěji jako infuze při dehydrataci organismu. - - - Saline IV (500ml) - Физраствор для в/в вливания (500 мл) - Salino IV (500ml) - Solution saline 0.9% IV (500ml) - Sól fizjologiczna IV (500ml) - Kochsalzlösung (500ml) - 0,9%-os sósvíz-infúzió (500ml) - Soluzione salina EV (500ml) - Soro IV (1000ml) - Fyziologický roztok (500ml) - - - Saline IV (250ml) - Физраствор для в/в вливания (250 мл) - Salino IV (250ml) - Solution saline 0.9% IV (250ml) - Sól fizjologiczna IV (250ml) - Kochsalzlösung (250ml) - 0,9%-os sósvíz-infúzió (250ml) - Soluzione salina EV (250ml) - Soro IV (1000ml) - Fyziologický roztok (250ml) - - - Basic Field Dressing (QuikClot) - Первичный перевязочный пакет (QuikClot) - Vendaje básico (QuickClot) - Bandage basique (Hémostatique) - Opatrunek QuikClot ACS - Verbandpäckchen (QuikClot) - Általános zárókötszer (QuikClot) - Bendaggio emostatico (QuikClot) - Bandagem básica (Coagulante) - Hemostatický obvaz (QuikClot) - - - QuikClot bandage - Гемостатический пакет QuikClot - Vendaje QuikClot - Bandage hémostatique - Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. - Bandage mit Gerinnungsmittel - QuikClot kötszer - Bendaggio emostatico (QuikClot) - Bandagem com agente coagulante - Hemostatický obvaz (QuikClot) - - - Hemostatic bandage with coagulant that stops bleeding. - Медицинский коагулянт для экстренной остановки кровотечения - Un bandage aidant à coaguler les saignements mineurs à moyens. - Proszkowy opatrunek adsorpcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. - Vendaje hemostático con coagulante que detiene el sangrado. - Verband mit Gerinnungsmittel, um starke Blutung zu behandeln. - Hemostatikus kötszer egy vérzésgátló anyaggal. - Bendaggio emostatico con coagulante che permette di arrestare perdite di sangue - Bandagem Hemostática com coagulante que controla hemorragia médias e grandes com risco de vida. - Hemostatický obvaz určený k zástavě krvácení - - - Personal Aid Kit - Аптечка - Trousse de premiers soins - Equipo de primeros auxilios - Apteczka osobista - Persönliches Erste-Hilfe-Set - Elsősegélycsomag - Pronto soccorso personale - Kit De Primeiros Socorros Pessoal - Osobní lékárnička (PAK) - - - Includes various treatment kit needed for stitching or advanced treatment - Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи. - Incluye material médico para tratamientos avanzados - Inclue du matériel medical pour les traitements avancés, tel les points de suture. - Zestaw środków medycznych do opatrywania ran i dodatkowego leczenia po-urazowego. - Beinhaltet medizinisches Material für fortgeschrittene Behandlung und zum Nähen. - Változatos segédfelszereléseket tartalmaz sebvarráshoz és haladó elsősegélynyújtáshoz - Include vario materiale medico per trattamenti avanzati. - Inclui vários tratamentos materiais para custura e tratamento avançado - Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných - - - Personal Aid Kit for in field stitching or advanced treatment - W znacznym stopniu poprawia stan pacjenta - Полевая аптчека для продвинутого лечения и зашивания ран - Persönliches Erste-Hilfe-Set zum ambulanten Nähen und fortgeschrittener Behandlung. - Trousse de premiers soins pour coudre sur le terrain et traitements avancés. - Equipo de primeros auxilios para sutura de campaña o tratamientos avanzados - Elsősegélycsomag, terepen való sebvarráshoz és haladó ellátáshoz - Kit de primeiros socorros para sutura ou tratamentos avançados - Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných v poli - Pronto soccorso personale da campo per mettersi i punti o per trattamenti avanzati. - - - Use Personal Aid Kit - Erste-Hilfe-Set benutzen - Использовать аптечку - Utiliser la Trousse de premier soins - Użyj apteczki osobistej - Usar equipo de primeros auxilios - Elsősegélycsomag használata - Usar o kit de primeiros socorros - Použít osobní lékárničku (PAK) - Usa il pronto soccorso personale - - - Surgical Kit - Trousse chirurgicale - Хирургический набор - Kit quirúrgico - Zestaw do szycia ran - Operationsset - Sebészeti készlet - Kit chirurgico - Kit Cirurgico - Chirurgická sada - - - Surgical Kit for in field advanced medical treatment - Trousse chirurgicale pour le traitement sur le terrain - Набор для хирургической помощи в полевых условиях - Kit quirúrgico para el tratamiento avanzado en el campo de batalla - Zestaw pozwalający na zszywanie ran w polu - Operationsset für fortgeschrittene medizinische Feldversorgung - Sebészeti készlet komplex orvosi feladatok terepen való ellátására - Kit chirurgico per trattamenti avanzati sul campo. - Kit Cirurgico para uso de tratamento médico avançado em campo - Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli - - - Surgical Kit for in field advanced medical treatment - Набор для хирургической помощи в полевых условиях - Kit quirúrgico para el tratamiento avanzado en el campo de batalla - Zestaw pozwalający na zszywanie ran w polu - Operationsset für fortgeschrittene medizinische Feldversorgung - Trousse chirurgicale pour le traitement sur le terrain - Sebészeti készlet komplex orvosi feladatok terepen való ellátására - Kit chirurgico per trattamenti avanzati sul campo. - Kit Cirurgico para uso de tratamento médico avançado em campo. - Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli - - - Use Surgical Kit - Operationsset benutzen - Usa kit chirurgico - Использовать хирургический набор - Utiliser la trousse chirugicale - Zszyj rany - Usar equipo quirúrgico - Sebészeti készlet használata - Použít chirurgickou sadu - Usar kit cirúrgico - - - Bodybag - Housse mortuaire - Мешок для трупов - Bolsa para cadáveres - Worek na zwłoki - Leichensack - Hullazsák - Sacca per corpi - Saco para cadáver - Pytel na mrtvoly - - - A bodybag for dead bodies - Housse de transport des corps - Мешок для упаковки трупов - Una bolsa para cadáveres - Worek do pakowania zwłok - Ein Leichensack für Tote - Egy hullazsák a holttestek számára - Una sacca nera per trasportare cadaveri. - Um saco para corpos mortos - Pytel na mrtvoly - - - A bodybag for dead bodies - Housse de transport des corps - Мешок для упаковки трупов - Una bolsa para cadáveres - Worek do pakowania zwłok - Ein Leichensack für Tote - Egy hullazsák a holttestek számára - Una sacca nera per trasportare cadaveri. - Um saco para corpos mortos. - Pytel na mrtvoly - - - Blood Pressure - Tension artérielle - Артериальное давление - Presión arterial - Ciśnienie krwi - Blutdruck - Vérnyomás - Pressione sanguigna - Pressão Arterial - Krevní tlak - - - Checking Blood Pressure.. - Mesure de la tension... - Проверка артериального давления... - Comprobando presión arterial... - Sprawdzanie ciśnienia krwi... - Blutdruck kontrollieren... - Vérnyomás megmérése... - Controllando la pressione sanguigna.. - Aferindo Pressão Arterial... - Měřím krevní tlak... - - - %1 checked Blood Pressure: %2 - %1 kontrollierte Blutdruck: %2 - %1 controllata pressione sanguigna: %2 - %1 проверил артериальное давление: %2 - %1 à vérifié la tension: %2 - %1 sprawdził ciśnienie krwi: %2 - %1 verificada la presión arterial: %2 - %1 ellenőrizte a vérnyomást: %2 - %1 zkontroloval krevní tlak: %2 - %1 verificou pressão arterial: %2 - - - You checked %1 - Vous diagnostiquez %1 - Вы осмотрели раненого %1 - Examinando a %1 - Zbadałeś %1 - Kontrolliert %1 - A %1 ellenőrizve - Hai diagnosticato %1 - Você verificou o paciente %1 - Zkontroloval jsi %1 - - - You find a blood pressure of %2/%3 - Vous avez trouvé une tension de %2/%3 - Артериальное давление %2/%3 - La Presión Arterial es %2/%3 - A vérnyomás %2/%3 - Hai riscontrato una pressione di %2/%3 - Wyczuwasz ciśnienie krwi o wartości %2/%3 - Der Blutdruck liegt bei %2/%3 - A Pressão Arterial é de %2/%3 - Naměřil si krevní tlak u %2/%3 - - - You find a low blood pressure - Tension basse - Давление низкое - La presión arterial es baja - Wyczuwasz niskie ciśnienie krwi - Blutdruck ist niedrig - A vérnyomás alacsony - La pressione sanguigna è bassa - Pressão Arterial baixa - Naměřil si nízký krevní tlak - - - You find a normal blood pressure - Tension normale - Давление нормальное - La presión arterial es normal - Wyczuwasz normalne ciśnienie krwi - Blutdruck ist normal - A vérnyomás normális - La pressione sanguigna è normale - Pressão Arterial normal - Naměřil si normální krevní tlak - - - You find a high blood pressure - Tension haute - Давление высокое - La presión arterial es alta - Wyczuwasz wysokie ciśnienie krwi - Blutdruck ist hoch - A vérnyomás magas - La pressione sanguigna è alta - Pressão Arterial Alta - Naměřil si vysoký krevní tlak - - - You find no blood pressure - Pas de tension - Давления нет - No hay presión arterial - Nie wyczuwasz ciśnienia krwi - Patient hat keinen Blutdruck - Nem észlelhető vérnyomás - La pressione sanguigna è assente - Sem Pressão Arterial - Nenaměřil si žádný krevní tlak - - - You fail to find a blood pressure - Vous n'avez pas pu mesurer de tension - Артериальное давление не определяется - No puedes encontrar presión arterial - Nie udało Ci się sprawdzić ciśnienia krwi - Du konntest keinen Blutdruck feststellen - Nem sikerült a vérnyomás megmérése - Manca strumento per misurare pressione sanguigna - Você falhou em aferir a Pressão Arterial - Nedokázal si změřit krevní tlak - - - Low - Niedrig - Bassa - Низкое - Faible - Niskie - Baja - Alacsony - Nízký - Baixa - - - Normal - Normal - Normale - Нормальное - Normale - Normalne - Normal - Normális - Normální - Normal - - - High - Hoch - Alta - Высокое - Haute - Wysokie - Alta - Magas - Vysoký - Alta - - - No Blood Pressure - Kein Blutdruck - Nessuna Pressione Sanguigna - Артериальное давление отсутствует - Aucune tension - Brak ciśnienia krwi - Sin presión arterial - Nincs vérnyomás - Žádný krevní tlak - Sem pressão arterial - - - Pulse - Пульс - Pouls - Pulso - Tętno - Puls - Pulzus - Polso - Pulso - Puls - - - Checking Heart Rate... - Vérification du rythme cardiaque... - Проверка пульса... - Comprobando ritmo cardíaco... - Sprawdzanie tętna... - Kontrolliere Herzfrequenz... - Szívverés-szám mérése... - Controllando il battito cardiaco... - Aferindo Pulso... - Kontroluji srdeční tep... - - - You checked %1 - Вы осмотрели раненого %1 - Vous examinez %1 - Examinando a %1 - Zbadałeś %1 - Kontrolliert %1 - A %1 ellenőrizve - Hai diagnosticato %1 - Você aferiu o paciente %1 - Zkontroloval si %1 - - - %1 checked Heart Rate: %2 - %1 kontrollierte Herzfrequenz: %2 - %1 Controllata Frequenza Cardiaca: %2 - %1 проверил пульс: %2 - %1 à vérifié le rythme cardiaque: %2 - %1 sprawdził tętno: %2 - %1 verificado el ritmo cardíaco: %2 - %1 ellenőrizte a szívverés-számot: %2 - %1 zkontroloval srdeční tep: %2 - %1 verificou a frequência cardíaca: %2 - - - None - Нет - Żadna - Nada - Keine - Žádný - Nada - Aucun - Nincs - Niente - - - Weak - Schwach - Lento - Слабый - Faible - Słabe - Débil - Gyenge - Slabý - Fraca - - - Normal - Normal - Normale - Нормальный - Normal - Normalne - Normal - Normális - Normální - Normal - - - Strong - Stark - Veloce - Сильный - Fort - Silne - Fuerte - Erős - Silný - Forte - - - You find a Heart Rate of %2 - Rythme cardiaque de %2 - Пульс %2 уд./мин. - El ritmo cardíaco es de %2 - Wyczuwasz tętno o wartości %2 - Herzfrequenz ist %2 - A szívverés-szám %2 - Il battito cardiaco è %2 - A Freqüência Cardíaca é de %2 - Nahmatal jsi srdeční tep u %2 - - - You find a weak Heart Rate - Rythme cardiaque faible - Пульс слабый - El ritmo cardíaco es débil - Wyczuwasz słabe tętno - Schwacher Puls - A szívverés-szám alacsony - Hai riscontrato un debole battito cardiaco - Freqüência Cardíaca baixa - Nahmatal si slabý srdeční puls - - - You find a strong Heart Rate - Rythme cardiaque élevé - Пульс учащенный - El ritmo cardíaco está acelerado - Wyczuwasz silne tętno - Starker Puls - A szívverés-szám magas - Hai riscontrato un forte battito cardiaco - Freqüência Cardíaca normal - Nahmatal si silný srdeční puls - - - You find a normal Heart Rate - Rythme cardiaque normal - Пульс в норме - El ritmo cardíaco es bueno - Wyczuwasz normalne tętno - Normaler Puls - A szívverés-szám normális - Hai riscontrato un normale battito cardiaco - Freqüência Cardíaca alta - Nahmatal si normální srdeční puls - - - You find no Heart Rate - Pas de rythme cardiaque - Пульс не прощупывается - No tiene ritmo cardíaco - Wyczuwasz brak tętna - Kein Puls gefunden - Nem észlelhető szívverés - Hai riscontrato una assenza di battito cardiaco - Sem Freqüência Cardíaca - Žádný puls - - - Response - Etat de Conscience - Реакция - Respuesta - Przytomność - Ansprechbarkeit - Reagálóképesség - Risposta - Reação - Odezva - - - You check response of patient - Vous vérifiez la réponse du patient - Вы проверяете реакцию раненого - Compruebas si el paciente reacciona - Sprawdzasz przytomność pacjenta - Du prüfst ob der Patient ansprechbar ist - Ellenőrzöd a páciens reagálóképességét - Controlli la risposta del paziente - Aferindo se o paciente tem reação - Zkontroloval jsi reakci pacienta - - - %1 is responsive - %1 реагирует на раздражители - %1 est conscient - %1 ha reaccionado - %1 jest przytomny - %1 ist anprechbar - %1 reakcióképes - %1 e' cosciente - %1 está respondendo - %1 odpovídá - - - %1 is not responsive - %1 не реагирует на раздражители - %1 est inconscient - %1 no reacciona - %1 jest nieprzytomny - %1 ist nicht ansprechbar - %1 nem reagál - %1 e' incosciente - %1 não está respondendo - %1 neodpovídá - - - You checked %1 - Вы осмотрели раненого %1 - Vous avez examiné %1 - Examinas a %1 - Zbadałeś %1 - Du hast versucht, %1 anzusprechen - Megnézted %1-t - Hai controllato %1 - Você aferiu o paciente %1 - Zkontroloval jsi %1 - - - Patient %1<br/>is %2.<br/>%3.<br/>%4 - Il paziente %1<br/>è %2.<br/>%3.<br/>%4 - Пациент %1<br/>%2.<br/>%3.<br/>%4 - Patient %1<br/>ist %2.<br/>%3.<br/>%4 - Patient %1<br/>est %2.<br/>%3.<br/> - Pacjent %1<br/>jest %2.<br/>%3.<br/>%4 - Paciente %1<br/>is %2.<br/>%3.<br/>%4 - A páciens, %1,<br/>%2.<br/>%3.<br/>%4 - Pacient %1<br/>je %2.<br/>%3.<br/>%4 - Paciente %1<br/>é %2.<br/>%3.<br/>%4 - - - alive - vivo - жив - lebendig - vivant - żywy - vivo - élő - naživu - vivo - - - dead - morto - мёртв - muerto - tot - mort - martwy - halott - mrtev - morto - - - He's lost some blood - Ha perso poco sangue - Ha perdido un poco de sangre - Есть кровопотеря - Er hat etwas Blut verloren - Il a perdu du sang - Stracił trochę krwi - Valamennyi vért vesztett - Ztratil trochu krve - Ele perdeu um pouco de sangue - - - He's lost a lot of blood - Er hat viel Blut verloren - Sok vért vesztett - Stracił sporo krwi - Большая кровопотеря - Ha perdido mucha sangre - Il a perdu beaucoup de sang - Ztratil hodně krve - Ele perdeu muito sangue - Ha perso molto sangue - - - He hasn't lost blood - Non ha perso sangue - Нет кровопотери - Er hat kein Blut verloren - Il n'a pas perdu de sang - Nie stracił krwi - No ha perdido sangre - Nem vesztett vért - Neztratil žádnou krev - Ele não perdeu sangue - - - He is in pain - Sente dolori - Испытывает боль - Er hat Schmerzen - Il souffre - Odczuwa ból - Siente dolor - Fájdalmai vannak - Je v bolestech - Ele está com dor - - - He is not in pain - Non sente dolori - Не испытывает боли - Er hat keine Schmerzen - Il ne souffre pas - Nie odczuwa bólu - No siente dolor - Nincsenek fájdalmai - Nemá žádné bolesti - Ele não está com dor - - - Bandaged - Bandé - Повязка наложена - Vendado - Zabandażowano - Bekötözve - Bendato - verbunden - Enfaixado - Obvázaný - - - You bandage %1 (%2) - Vous bandez %1 (%2) - Вы перевязали раненого %1 (%2) - Aplicas vendaje a %1 en %2 - Bandażujesz %1 (%2) - Bekötözöd %1-t (%2) - Stai bendando %1 (%2) - Du verbindest %1 (%2) - Você aplica bandagem no paciente %1 (%2) - Obvazuješ %1 (%2) - - - %1 is bandaging you - %1 vous bande - %1 перевязывает вас - %1 te está vendando - %1 bandażuje Ciebie - %1 bekötöz téged - %1 ti sta bendando - %1 verbindet dich - %1 está aplicando uma bandagem em você - %1 tě obvazuje - - - You start stitching injuries from %1 (%2) - Вы зашиваете ранения от %1 (%2) - Du nähst die Wunden von %1 (%2) - Vous suturez %1 (%2) - Estás suturando heridas de %1 en %2 - Zszywasz rany %1 (%2) - Elkezded összevarni %1 sérüléseit (%2) - Stai suturando le ferite di %1 (%2) - Você começa a suturar os ferimentos do %1 (%2) - Zašíváš rány %1 (%2) - - - Stitching - Наложение швов - Suturando - Nähen - Sutures - Szycie - Összevarrás - Suturando - Suturando - Šití - - - You treat the airway of %1 - Вы интубируете раненого %1 - Estás intubando a %1 - Du behandelst die Atemwege von %1 - Vous traitez les voies respiratoires de %1 - Udrażniasz drogi oddechowe %1 - Kezeled %1 légútját - Controlli le vie respiratorie di %1 - Você entuba o %1 - Ošetřuješ dýchací cesty %1 - - - Airway - Дыхательные пути - Vías aéreas - Drogi oddechowe - Atemwege - Voies respiratoires - Légút - Vie respiratorie - Vias Aéreas - Dýchací cesty - - - %1 is treating your airway - %1 проводит вам интубацию - %1 traite vos voies respiratoires - %1 te está intubando - %1 udrażnia Twoje drogi oddechowe - %1 behandelt deine Atemwege - %1 kezeli a légútadat - %1 ti sta trattando le vie respiratorie - %1 está te entubando - %1 ošetřuje tvoje dýchací cesty - - - Drag - Ziehen - Arrastrar - Ciągnij - Táhnout - Тащить - Trainer - Húzás - Arrastar - Trascina - - - Carry - Tragen - Cargar - Nieś - Nést - Нести - Porter - Cipelés - Carregar - Trasporta - - - Release - Loslassen - Soltar - Połóż - Položit - Отпустить - Déposer - Elengedés - Soltar - Rrilascia - - - Load Patient Into - Patient einladen - Cargar al paciente en - Załaduj pacjenta - Naložit pacianta do - Погрузить пациента в - Embarquer le patient - Sebesült berakása - Carregar Paciente Em - Carica paziente nel - - - Unload Patient - Patient ausladen - Descargar al paciente - Wyładuj pacjenta - Vyložit pacienta - Выгрузить пациента - Débarquer le patient - Sebesült kihúzása - Descarregar Paciente - Scarica il paziente - - - Unload patient - Descargar al paciente - Выгрузить пациента - Patient ausladen - Wyładuj pacjenta - Débarquer le patient - Sebesült kihúzása - Scarica il paziente - Descarregar Paciente - Vyložit pacienta - - - Load patient - Cargar al paciente en - Погрузить пациента - Patient einladen - Załaduj pacjenta - Embarquer le patient - Sebesült berakása - Carica il paziente - Carregar Paciente Em - Naložit pacienta - - - Place body in bodybag - Colocar cuerpo en bolsa para cadáveres - Поместить тело в мешок для трупов - Körper in Leichesack verstauen - Zapakuj ciało do worka na zwłoki - Mettre le corps dans la housse mortuaire - Test hullazsákba helyezése - Metti il corpo nella sacca per cadaveri - Colocar corpo dentro do saco para cadáver - Umístni tělo do pytle na mrtvoly - - - Placing body in bodybag... - Colocando cuerpo en bolsa para cadáveres... - Упаковка тела... - Körper wird in Leichensack gepackt... - Pakowanie ciała do worka na zwłoki... - Placement du corps dans la housse... - Test hullazsákba helyezése... - Stai mettendo il corpo nella sacca... - Colocando corpo dentro do saco para cadáver... - Umístňuji tělo do pytle na mrtvoly... - - - %1 has bandaged patient - %1 has vendado al paciente - %1 перевязал пациента - %1 hat den Patienten verbunden - %1 założył bandaż - %1 a pansé le patient - %1 bekötözte a pácienst - %1 ha bendato il paziente - %1 aplicou bandagem no paciente - %1 již obvázal pacienta - - - %1 performed CPR - %1 wykonał cykl RKO - %1 provádí CPR - %1 hat eine HLW durchgeführt - %1 ha eseguito CPR - %1 realizou RCP - %1 провел сердечно-легочную реанимацию - %1 realicó RCP - %1 à fait une RPC - - - %1 used %2 - %1 usó %2 - %1 benutzt %2 - %1 использовал %2 - %1 użył %2 - %1 utilise %2 - %1 használta a %2-t - %1 ha usato %2 - %1 usou %2 - %1 použil %2 - - - %1 has given an IV - %1 провёл переливание - %1 ha puesto una IV - %1 hat eine Infusion verabreicht - %1 podał IV - %1 a administré une IV - %1 infúziót adott - %1 ha somministrato una EV - %1 aplicou um intravenoso - %1 již aplikoval IV - - - %1 applied a tourniquet - %1 aplicado torniquete - %1 наложил жгут - %1 hat ein Tourniquet angelegt - %1 założył stazę - %1 a appliqué un garrot - %1 felhelyezett egy érszorítót - %1 ha applicato un laccio emostatico - %1 aplicou um torniquete - %1 použil škrtidlo - - - %1 used Personal Aid Kit - %1 hat das eigene Erste-Hilfe-Set verwendet - %1 użył apteczki - %1 utilizou KPS - %1 používá PAK - %1 использовал аптечку - %1 ha usato Kit Pronto Soccorso Personale - %1 usó Kit de Primeros Auxilios - %1 à utilisé un PAK - - - Heavily wounded - Schwer verwundet: - Ciężko ranny - Тяжелые ранения - Gravemente ferito - Gravemente herido - Lourdement blessé - Erősen sérült - Těžce raněn - Gravemente ferido - - - Lightly wounded - Leicht verwundet: - Lekko ranny - Легкие ранения - Leggermente ferito - Levemente herido - Légèrement blessé - Enyhén sérült - Lehce raněn - Levemente ferido - - - Very lightly wounded - Sehr leicht verwundet: - B. lekko ranny - Царапины - Ferito lievemente - Muy levemente herido - Très légèrement blessé - Nagyon enyhén sérült - Velmi lehce raněn - Muito levemente ferido - - - Head - Kopf - Głowa - Головы - Testa - Cabeza - Tête - Fej - Hlava - Cabeça - - - Torso - Torso - Tors - Торса - Torso - Torso - Torse - Testtörzs - Trup - Torso - - - Left Arm - Linker Arm - Lewe ramię - Левой руки - Braccio sinistro - Brazo izquierdo - Bras gouche - Bal kar - Levá ruka - Braço Esquerdo - - - Right Arm - Rechter Arm - Prawe ramię - Правой руки - Braccio destro - Brazo derecho - Bras droit - Jobb kar - Pravá ruka - Braço Direito - - - Left Leg - Linkes Bein - Lewa noga - Левой ноги - Gamba sinistra - Pierna izquierda - Jambe gauche - Bal láb - Levá noha - Perna Esquerda - - - Right Leg - Rechtes Bein - Prawa noga - Правой ноги - Gamba destra - Pierna derecha - Jambe droite - Jobb láb - Pravá noha - Perna Direita - - - Heal fully bandaged hitpoints - Lecz w pełni zabandażowane hitpointy - Curar miembros totalmente vendados - Исцелять полностью перебинтованные части тела - Curar hitpoints totalmente enfaixados - Heal fully bandaged hitpoints - Cura hitpoints completamente bendati - Soigner les plaies entièrement bandées. - Heilt vollständig bandagierte Trefferpunkte - - - Pain is only temporarily suppressed - Schmerzen werden nur vorübergehend unterdrückt - Ból jest tymczasowo zwalczany - Bolest je potlačena pouze dočasně - El dolor se suprime solo temporalmente - Dor é suprimida somente temporáriamente - La douleur est seulement supprimée temporairement - A fájdalom csak ideiglenesen csökken - Боль приглушается только временно - Dolore è soppresso solo temporaneamente - - - Pain Effect Type - Schmerzeffekt-Typ - Rodzaj efektu bólu - Визуальный эффект боли - Pain Effect Type - Tipo de efecto de dolor - Type d'effet de douleur - Fájdalom-effekt típusa - Tipo do efeito de dor - Typ bolesti - efekt - - - Colour Flashing - Farbblinken - Pulsujące kolory - Пульсирующий свет - Colore lampeggiante - Parpadeo de color - Flash de couleur - Színvillódzás - Flash de cor - Blikající barva - - - Chromatic Aberration - Chromatische Aberration - Aberracja chromatyczna - Хроматическая аберрация - Aberrazione cromatica - Aberración cromática - Aberration chromatique - Kromatikus aberráció - Chromatická aberace - Aberração Cromática - - - Style of menu (Medical) - Styl menu medycznego - Style de menu (Médical) - Menüstil (Medizin) - Вид меню (медицина) - Tipo de menú (Medico) - Styl menu (Zdravotní) - Estilo do menu (Médico) - Menü stílusa (Orvosi) - Stile del menù (medico) - - - Select the type of menu you prefer; default 3d selections or radial. - Wybierz rodzaj menu, który preferujesz: domyślne pozycje 3D lub radialne - Selctionne le type de menu préféré; par défaut la sélection 3D ou radiale - Wähle den Menüstil: Standard 3D-Auswahl oder kreisförmig. - Выберите тип меню: стандартный вариант (3D) или радиальный - Selecciona el tipo de menú que prefieres: selecciones 3d por defecto o radial. - Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. - Válaszd ki a neked megfelelő menüt: Alapértelmezett 3D válogatás, vagy kerek. - Zvolte typ menu: základní 3D výběr nebo kruhový - Seleziona il tipo di menù che preferisci: selezione (3D), radiale o disabilitata. - - - Selections (3d) - Pozycje (3D) - sélections (3D) - 3D-Auswahl - Стандартный (3D) - Selecciones (3d) - Seleção (3d) - Választékok (3D) - 3D výběr - Selezione (3D) - - - Radial - Radialne - Radiale - Kreisförmig - Радиальный - Radial - Radial - Kerek - Kruhový - Radiale - Scrape Kratzer @@ -2784,1400 +397,5 @@ Fêmur quebrado Zlomená stehenní kost - - Treating... - Behandeln... - Ellátás... - Opatrywanie ran... - Traitement... - Лечение... - Tratando... - Tratando... - Ošetřuji... - Curando... - - - Removing Tourniquet... - Tourniquet entfernen... - Zdejmowanie stazy... - Quitando torniquete... - Retire le garrot... - Removendo torniquete... - Érszorító eltávolítása... - Sundavám škrtidlo... - Снятие жгута... - Togliendo il laccio emostatico... - - - ACE Medical - ACE: медицина - ACE Opcje medyczne - Médico ACE - ACE-Medicsystem - ACE Zdravotnické - ACE Médico - ACE Médical - ACE Orvosi Rendszer - ACE Medical - - - Medical Settings [ACE] - Настройки медицины [ACE] - Ustawienia medyczne - Ajustes médicos [ACE] - Sanitätseinstellungen [ACE] - Lékařské nastavení [ACE] - Ajustes médicos [ACE] - Option médicale [ACE] - Orvosi beállítások [ACE] - Impostazioni Mediche [ACE] - - - Medical Level - Сложность медицины - Poziom medyczny - Nivel médico - Stufe des Sanitätssystem - Úroveň medického - Nível médico - Niveau de simulation médicale - Orvosi szint - Livello Medico - - - What is the medical simulation level? - Каков уровень сложности медицинской системы? - Jaki jest poziom symulacji medycznej? - ¿Cuál es el nivel de simulación médica? - Wie hoch soll das medizinische Simulationslevel sein? - Jaká je úroveň lékařské simulace? - Qual o nível de simulação médica? - Quel niveau de simulation médicale choisissez vous? - Milyen komplex legyen az orvosi szimuláció? - Qual'è il livello di simulazione medica? - - - Basic - Базовый - Podstawowy - Básico - Standard - Základní - Básica - Basique - Alap - Basico - - - Advanced - Усложненный - Zaawansowany - Avanzado - Erweitert - Pokročilé - Avançada - Avancée - Fejlett - Avanzato - - - Medics setting - Настройки медиков - Poziom medyków - Configuración médica - Sanitätseinstellungen - Úroveň zdravotníků - Configuração médica - Paramètre des infirmiers - Orvosok beállítása - Parametri Medici - - - What is the level of detail prefered for medics? - Wie hoch soll das Simulationslevel für Sanitäter sein? - Каков уровень подробностей для медиков? - Jaki jest poziom detali medycznych wyświetlanych dla medyków? - ¿Cuál es el nivel de detalle preferido para los médicos? - Jaká úroveň detailů je preferována pro zdravotníky? - Qual o nível de detalhe preferido para os médicos? - Quel niveau de détail voullez vous pour les infirmier? - Mi a javasolt részletesség orvosok számára? - Qual'è il livello di dettagli preferito per i medici? - - - Locations boost training - Místa pro vylepšení zkušeností - Località aumentano addestramento - Örtliche Trainingssteigerung - Ubicación mejora entrenamiento. - Miejsca zwiększają wyszkolenie - Localização melhora treinamento - Locations boost l'entraînement de médecin - - - Boost medic rating in medical vehicles or near medical facilities [untrained becomes medic, medic becomes doctor] - Zlepšit zkušenosti zdravotníka v medickém vozidle nebo poblíž zdravotního zařízení [nezkušení se stane zdravotníkem, zdravotník se stane doktorem] - Aumenta il rating medico in veicoli medici o vicino strutture mediche [non addestrato diventa medico, medico diventa dottore] - Steigert die medizinische Einstufung eines Soldaten in Sanitätsfarhzeugen oder in der Nähe von Sanitätseinrichtungen [untrainiert wird zu Sanitäter, Sanitäter zu Doktor] - Mejora el entrenamiento médico dentro de vehículos médicos o cerca de instalaciones médicas (no entrenados se convierten en médicos, médicos se convierten en doctores) - Zwiększa poziom wyszkolenia medyków wewnątrz pojazdów medycznych lub w pobliżu budynków medycznych [niedoświadczony zostaje medykiem, medyk zostaje doktorem] - Aumenta a classificação do médico dentro de veículos médicos ou perto de instalações médicas [sem treinamento vira médico, médico vira doutor] - Boost le rang médical dans les véhicules ou bâtiments médicaux [non entraînés deviennent médecins, médecins deviennent docteurs] - - - Disable medics - Отключить медиков - Wyłącz medyków - Desactivar médicos - Sanitäter deaktivieren - Zakázat zdravotníky - Desativar médicos - Désactiver les infirmiers - Orvosok letiltása - Disabilita medici - - - Enable Litter - Включить мусор - Aktywuj odpadki - Activar restos médicos - Abfälle aktivieren - Povolit odpadky - Ativar lixo médico - Activer les détritus - Szemét engedélyezése - Abilita Barella - - - Enable litter being created upon treatment - Включить появление мусора после лечения - Twórz odpadki medyczne podczas leczenia - Activar los restos médicos que se crean en el tratamiento - Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde - Vytváří odpad zdravotnického materiálu pří léčení - Ativar lixo ser criado após tratamento - Activer la création de détrimus au début des traitements - Engedélyezi a szemét keletkezését ellátáskor - Abilita la creazione della barella dopo trattamento - - - Life time of litter objects - Время удаления мусора - Długość życia odpadków - Tiempo de vida de los restos médicos - Dauer des angezeigten Abfalls - Životnost pro odpadky - Tempo de vida dos objetos do lixo - Durée d'affichage des détritus - Szemétobjektumok élettartama - Tempo di vita delle barelle - - - How long should litter objects stay? In seconds. -1 is forever. - Как долго мусор будет оставаться на земле? В секундах. -1 означает бесконечное время. - Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności. - ¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre. - Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer. - Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy. - Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre. - Combien de temps doivent rester affiché les détritus? En secondes. -1 pour tout le temps - Milyen sokáig legyenek jelen a szemétobjektumok (másodpercben)? A -1 végtelen időt jelent. - Per quanto devono restare le barelle? In secondi. -1 è permanente - - - Enable Screams - Включить крики - Aktywuj wrzaski - Activar gritos - Schreie aktivieren - Povolit křik - Ativar gritos - Activer les hurlements - Kiáltások engedélyezése - Abilita Grida - - - Enable screaming by injuried units - Включить крики раненных бойцов - Aktywuj wrzeszczenie z bólu przez ranne jednostki - Activar gritos para unidades heridas - Aktiviere Schreie bei verletzten Einheiten - Povolit křičení zraněných jednotek - Ativa gritos para unidades feridas - Active les hurlements d'unités blessées - Engedélyezi a sérült egységek kiáltásait - Abilita Grida da parte delle unità ferite - - - Player Damage - Урон игроку - Próg obrażeń graczy - Daño de jugador - Spielerschaden - Poškození hráče - Dano do jogador - Dégats des joueurs - Játékos sérülés - Danno Giocatore - - - What is the damage a player can take before being killed? - Какой уровень урона необходим, чтобы убить игрока? - Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity? - ¿Cuál es el daño que un jugador puede sufrir antes de morir? - Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird? - Jaké poškození může hráč dostat než bude zabit? - Qal é o dano que um jogador pode sofrer antes de morrer? - Quels dégats peut subir un joueur avant d'être tué - Mennyi sérülést szenvedhet el egy játékos, mielőtt meghal? - Quanto è il danno che un giocatore può sostenere prima di essere ucciso? - - - AI Damage - Урон ботам - Próg obrażeń AI - Daño IA - KI-Schaden - Poškození AI - Dano da IA - Dégats des IA - AI sérülés - Danno AI - - - What is the damage an AI can take before being killed? - Какой уровень урона необходим, чтобы убить бота? - Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite? - ¿Cuál es el daño que la IA puede sufrir antes de morir? - Wie viel Schaden kann eine KI erleiden, bis sie getötet wird? - Jaké poškození může AI dostat než bude zabito? - Qual é o dano que uma IA pode sofrer antes de morrer? - Quels dégats peut subir une IA avant d'être tuée - Mennyi sérülést szenvedhet el egy AI, mielőtt meghal? - Quanto è il danno che un'IA può sostenere prima di essere uccisa? - - - AI Unconsciousness - Потеря сознания ботами - Nieprzytomność AI - Inconsciencia IA - KI-Bewusstlosigkeit - Bezvědomí AI - Inconsciência da IA - Inconscience des IA - AI eszméletlenség - Incoscienza IA - - - Allow AI to go unconscious - Позволить ботам терять сознание - Czy AI może być nieprzytomne od odniesionych obrażeń? - Permita a la IA caer inconsciente - KI kann bewusstlos werden - Umožňuje AI upadnout do bezvědomí - Permite IA ficar inconsciente - Autoriser les IA à tomber inconscients - Engedélyezi az AI eszméletének elvesztését - Permetti alle IA di diventare incoscienti - - - Remote Controlled AI - Ferngesteuerte KI-Einheiten - IA controlada remotamente - IA controlada remotamente - Zdalnie sterowane AI - Vzdáleně ovládané AI - Contrôle à distance des IA - Távvezérelt AI - Зевса считать ботом - IA Controllate in Remoto - - - Treat remote controlled units as AI not players? - Legt fest, ob ferngesteuerte Einheiten als KI anstatt als Spieler behandelt werden sollen. - ¿Tratar unidades remotamente controladas como IA? - Tratar unidades remotamente controladas como IA? - Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy? - Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče? - Soigner les unitées controlées à distance comme des IA et non comme des joueurs? - Távvezérelt egységek AI-ként, nem játékosként való kezelése? - Обрабатывать дистанционно управляемых юнитов как ботов, а не как игроков? - Considera le unità controllate in remoto come IA e non come giocatori? - - - Prevent instant death - Откл. мгновенную смерть - Wyłącz natychmiastową śmierć - Prevenir muerte instantánea - Verhindere direkten Tod - Zabránit okamžité smrti - Previnir morte instantânea - Empêcher la mort instantanée - Azonnali halál kiiktatása - Previeni morte istantanea - - - Have a unit move to unconscious instead of death - Бойцы теряют сознание вместо того, чтобы умирать - Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń - Mover una unidad a inconsciente en vez de a muerta - Lässt eine Einheit bewusstlos werden anstatt zu sterben - Jednotka upadne do bezvědomí namísto smrti - Fazer a unidade ficar inconsciente invés de morrer - Forcer l'inconscience au lieu de la mort instantanée - Egy egység kerüljön eszméletlen állapotba a halott helyett - Imposta un'unità come incosciente invece di morta - - - Bleeding coefficient - Коэффициент кровопотери - Mnożnik krwawienia - Coeficiente de sangrado - Verblutungsmultiplikator - Koeficient krvácení - Coeficiente de sangramento - Coefficient de saignement - Vérzési koefficiens - Coefficiente sanguinamento - - - Coefficient to modify the bleeding speed - Коэффициент, изменяющий скорость потери крови - Mnożnik modyfikujący prędkość wykrwawiania się - Coeficiente para modificar la velocidad de sangrado - Multiplikator um die Verblutungsgeschwindigkeit zu verändern - Koeficient rychlosti krvácení - Coeficiente para modificar a velocidade do sangramento - Coefficient modifiant la vitesse de saignement - Egy szorzó a vérzés sebességének szabályozására - Coefficiente che modifica la velocità di sanguinamento - - - Pain coefficient - Коэффициент боли - Mnożnik bólu - Coeficiente de dolor - Schmerzmultiplikator - Koeficient bolesti - Coeficiente de dor - Coefficient de douleur - Fájdalmi koefficiens - Coefficiente dolore - - - Coefficient to modify the pain intensity - Коэффициент, изменяющий уровень боли - Mnożnik modyfikujący intensywność bólu - Coeficiente para modificar la intensidad del dolor - Multiplikator um die Schmerzintensität zu verändern - Koeficient intenzity bolesti - Coeficiente para modificar a instensidade de dor - Coefficient modifiant l'intensité de la douleur - Egy szorzó a fájdalom erősségének szabályozására - Coefficiente che modifica l'intensità del dolore - - - Sync status - Синхронизация статуса - Synchronizuj status - Sincronizador estado - Status synchronisieren - Synchronizovat status - Sincronizar estado - Status de la synchronisation - Szinkronizációs állapot - Sincronizza stato - - - Keep unit status synced. Recommended on. - Синхронизировать статус юнитов. Рекомендуется включить. - Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. - Mantener el estado de la unidad sincronizado. Recomendado activado - Status der Einheit synchron halten. Sollte aktiviert bleiben. - Udržuje status jednotky synchronizovaný. Doporučeno zapnout. - Mater o estado da unidade sincronizado. Recomendado ativado. - Garder l'unité synchronisée, Recommandé sur oui. - Egységállapotok szinkronizálása. Javasolt a bekapcsolása. - Mantieni lo stato delle unità sincronizzato. Consigliato attivo. - - - Provides a medical system for both players and AI. - Включает медицинскую систему как для игроков, так и для ботов. - Moduł ten dostarcza system medyczny dla graczy oraz AI. - Proporciona un sistema médico para jugadores e IA. - Aktiviert ein Sanitätssystem für Spieler und KI. - Poskytuje zdravotní systém pro hráče a AI. - Proporciona o sistema médico para os jogadores e a IA. - Fourni un système médical pour les joueurs tout comme pour les IA. - 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] - Standard Sanitätseinstellungen [ACE] - Podstawowe ustawienia medyczne - Ajustes médicos básicos [ACE] - Réglages du système médical basic [ACE] - Impostazioni Mediche Di Base [ACE] - Základní zdravotnické nastavení [ACE] - Ajustes médicos básicos [ACE] - - - Advanced Medical Settings [ACE] - Настройки усложненной медицины [ACE] - Zaawansowane ustawienia medyczne - Ajustes médicos avanzados [ACE] - Erweiterte Sanitätseinstellungen [ACE] - Pokročilé zdravotnické nastavení [ACE] - Ajustes médicos avançados [ACE] - Paramètres des soins avancés - Fejlett orvosi beállítások [ACE] - Impostazioni Mediche Avanzate [ACE] - - - Enabled for - Включено для - Aktywne dla - Hablitado para - Aktiviert für - Povoleno pro - Habilitado para - Activer pour - Engedélyezve - Abilitato per - - - Select what units the advanced medical system will be enabled for - Выберите, на кого будет распространяться усложненная система медицины - Wybierz dla kogo zaawansowany system medyczny będzie aktywny - Seleccione para qué unidades será habilitado el sistema médico avanzado - Wähle aus, welche Einheiten unter das erweiterte Sanitätssystem fallen - Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen - Selecione quais unidades o sistema médico avançado será habilitado - Sélectionne pour quelle unité le système de soin avancé est activé - Kiválasztható, mely egységek számára legyen engedélyezve a fejlett orvosi rendszer - Seleziona per quali unità verrà abilitato i sistema medico avanzato - - - Players only - Игроков - Tylko dla graczy - Solo jugadores - Nur Spieler - Pouze hráči - Somente jogadores - Joueur uniquement - Csak játékosok - Solo giocatori - - - Players and AI - Игроков и ботов - Gracze oraz AI - Jugadores e IA - Spieler und KI - Hráči a AI - Jogadores e IA - Joueur et IA - Játékosok és AI - Giocatori ed IA - - - Enable Advanced wounds - Усложненные раны - Aktywuj zaawansowane rany - Activa heridas avanzadas - Aktiviere erweiterte Wunden - Povolit pokročilé zranění - Ativar ferimentos avançados - Activer les blessures avancées - Komplex sebek engedélyezése - Abilita ferite Avanzate - - - Allow reopening of bandaged wounds? - Будут ли открываться уже перевязанные раны? - Pozwól na otwieranie się zabandażowanych ran? - Permitir la reapertura de las heridas vendadas? - Erlaube das Öffnen von bandagierten Wunden? - Umožnit znovuotevření zavázané rány? - Permitr reabertura de ferimentos enfaixados? - Permettre la réouverture des bandages - Visszanyílhatnak a bekötözött sebek? - Permetti la riapertura di ferite bendate? - - - Vehicle Crashes - Аварии транспорта - Obrażenia od kolizji - Accidentes de vehículos - Fahrzeugunfälle - Poškození z kolize - Batidas de veículos - Accident en véhicule - Járműbalesetek - Schianto Veicoli - - - Do units take damage from a vehicle crash? - Должны ли юниты получать повреждения от аварий на транспорте? - Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? - ¿Las unidades reciben daño de un accidente de tráfico? - Verursacht ein Fahrzeugunfall Verletzungen - Dostane jednotka poškození při autonehodě? - As unidades recebem dano de uma batida de veículo? - Les unités subissent des dégats lors d'accident - Sérülnek-e az egységek autós ütközés során? - Le unità sostengono danni da incidenti con veicoli? - - - Allow Epinephrine - Erlaube Epiniphrin - Permitir Epinefrina - Ograniczenia adrenaliny - Autoriser l'adrénaline - Permette epinefrina - Povolit adrenalin - Permitir Epinefrina - - - Who can use Epinephrine for full heal? (Basic medical only) - Wer darf Epiniphrin zur vollständigen Heilung benutzen? (Standard Sanitätseinstellungen) - Configura quienes pueden usar Epinefrina (Solo sistema médico básico) - Kto może skorzystać z adrenaliny w celu pełnego uleczenia? (Tylko podstawowy system medyczny) - Qui peut utiliser l'adrénaline pour les soins complets ? (Médical basique seulement) - Chi può usare l'epinefrina per la cura completa? (solo per sistema medico di base) - Kdo může použít adrenalin k úplnému vyléčení? (Pouze základní zdravotní systém) - Quem pode usar Epinefrina para cura completa? (Somente sistema médico básico) - - - Allow PAK - Использование аптечки - Ustawienie apteczek osobistych - Permitir EPA - Erlaube Erste-Hilfe-Set - Povolit osobní lékárničky (PAK) - Permitir Kit de Primeiros Socorros - Permettre le kit de premier secours - Elsősegélycsomag engedélyezése - Consenti Kit di Pronto Soccorso - - - Who can use the PAK for full heal? - Кому разрешено выполнять полное лечение с помощью аптечки? - Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? - ¿Quién puede utilizar el EPA para una cura completa? - Wer kann das Erste-Hilfe-Set für eine Endheilung verwenden? - Kdo může použít osobní lékárničku pro plné vyléčení? - Quem pode usar o KPS para cura completa? - Qui peut utilier les kit de premier secours pour soigner - Ki használhatja az elsősegélycsomagot teljes gyógyításra? - Chi può usare il KPS per cura completa? - - - Anyone - Кем угодно - Wszyscy - Nadie - Jeder - Kdokoliv - Qualquer um - Tout le monde - Akárki - Chiunque - - - Medics only - Только медиками - Tylko medycy - Solo médicos - Nur Sanitäter - Pouze zdravotník - Somente médicos - Infirmier uniquement - Csak orvosok - Solo medici - - - Doctors only - Только врачами - Tylko doktorzy - Solo doctores - Nur Ärzte - Pouze doktor - Somente doutores - Médecin uniquement - Csak doktorok - Solo dottori - - - Remove PAK on use - Удалять аптечки после использования - Usuń apteczkę po użyciu - Eliminar EPA después del uso - Entf. Erste-Hilfe-Set bei Verwendung - Odebrat osobní lékárničku po použití - Remover o KPS depois do uso - Enlever le KPS à l'utilisation - Elsősegélycsomag eltávolítása használatkor - Rimuovi Kit Pronto Soccorso dopo l'uso - - - Should PAK be removed on usage? - Нужно ли удалять аптечки после использования? - Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? - El EPA será eliminado después de usarlo - Sollen Erste-Hilfe-Sets bei Verwendung entfernt werden? - Má se osobní lékárnička odstranit po použití? - Deve o KPS ser removido depois do uso? - Le Kit de Premier Secours doit il être enlevé à l'utilisation? - Eltávolítódjon az elsősegélycsomag használatkor? - Il Kit Pronto Soccorso dev'essere rimosso dopo l'utilizzo? - - - Locations Epinephrine - Orte für Epiniphrin - Ubicaciones epinefrina - Ograniczenia adrenaliny - Position des adrénalines - Ubicazione epinefrina - Oblast k použití adrenalinu - Localizações de Epinefrina - - - Where can the Epinephrine be used? (Basic Medical) - Wo kann Epiniphrin verwendet werden? (Standard Sanitätseinstellungen) - Configura donde puede usarse Epinefrina (Solo sistema médico básico) - Gdzie można korzystać z adrenaliny? (Podstawowy system medyczny) - Où peuvent être utilisées les adrénalines ? (Médical basique) - Dove si può usare l'epinefrina? (Sistema medico di base) - Kde může být použit adrenalin? (Pouze základní zdravotní systém) - Onde pode-se usar a Epinefrina? (Somente sistema médico básico) - - - Locations PAK - Место использования аптечки - Ograniczenie apteczek osobistych - Ubicaciones del EPA - Orte für Erste-Hilfe-Set - Oblast k použití PAK - Localizações do KPS - Lieu d'utilisation du KPS - Elsősegélycsomag helyek - Locazioni Kit Pronto Soccorso - - - Where can the PAK be used? - Где может использоваться аптечка? - Gdzie można korzystać z apteczek osobistych? - ¿Dónde se puede utilizar el equipo de primeros auxilios? - Wo kann das Erste-Hilfe-Set verwendet werden? - Kde může být použita osobní lékárnička (PAK)? - Onde o kit de primeiros socorros pode ser utilizado? - Où le Kit de Premier Secour peut être utilisé - Hol lehet az elsősegélycsomagot használni? - Dove può essere usato il Kit Pronto Soccorso? - - - Condition PAK - Bedingungen für d. Erste-Hilfe-Set - Podmínky pro použití osobní lékárničky - Condición EPA - Condition d'utilisation du KPS - Warunek apteczek - Elsősegélycsomag állapot - Condição do KPS - Условие использования аптечки - Condizioni Kit Pronto Soccorso - - - When can the PAK be used? - Wann kann das Erste-Hilfe-Set verwendet werden? - Kdy může být použita osobní lékárnička? - ¿Cuando se puede utilizar el Equipo de primeros auxilios? - Quand peut être utilisé le Kit de Premier Secours - Po spełnieniu jakich warunków apteczka osobista może zostać zastosowana na pacjencie? - Mikor lehet az elsősegélycsomagot használni? - Onde o kit de primeiros socorros pode ser utilizado? - Когда может использоваться аптечка? - Quando può essere usato il Kit Pronto Soccorso? - - - Anywhere - Где угодно - Wszędzie - Donde sea - Überall - Kdekoliv - Qualquer lugar - PArtout - Akárhol - Ovunque - - - Medical vehicles - В медицинском транспорте - Pojazdy medyczne - Vehiculos médicos - Sanitätsfahrzeuge - Zdravotnická vozidla - Veículos médcos - Dans les véhicules médicals - Orvosi járművek - Veicoli medici - - - Medical facility - В госпитале - Budynki medyczne - Centro médico - Medizinische Einrichtungen - Zdravotnické zařízení - Instalação médica - Dans les installations médicales - Orvosi létesítmény - Strutture mediche - - - Vehicles & facility - В транспорте и госпитале - Pojazdy i budynki medyczne - Vehículos y centros - Fahrzeuge & Einrichtungen - Vozidla a zařízení - Veículos e instalações - Dans les véhicules et les installations médicals - Járművek & létesítmény - Veicoli e Strutture - - - Allow Surgical Kit (Adv) - Хирургический набор может использоваться (усл.) - Ustawienia zestawu chirurgicznego - Permitir equipo quirúrgico (Avanzado) - Erlaube Operationskasten - Povolit chirurgickou soupravu (Pokr.) - Permite kit cirúrgico (avançado) - Permettre les kit de chirurgie (Avancé) - Sebészkészlet (Fejlett) engedélyezése - Permetti Kit Chirurgico (Avanzato) - - - Who can use the Surgical Kit? - Кто может использовать хирургический набор? - Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? - ¿Quién puede utilizar el equipo quirúrgico? - Wer kann den Operationskasten verwenden? - Kdo může použít chirurgickou soupravu? - Quem pode usar o kit cirúrgico? - Qui peut utiliser les kit de chirurgie - Ki használhatja a sebészkészletet? - Chi può usare il Kit Chirurgico? - - - Remove Surgical Kit (Adv) - Удалять хирургический набор (усл.) - Usuń zestaw chirurgiczny po użyciu - Eliminar equipo quirúrgico (Avanzado) - Entferne Operationskasten (erweitert) - Odebrat chirurgickou soupravu (Pokr.) - Remover kit cirúrgico (avançado) - Supprimer les kit de chirurgie (Avancé) - Sebészkészlet (Fejlett) eltávolítása - Rimuovi Kit Chirurgico (Avanzato) - - - Should Surgical kit be removed on usage? - Нужно ли удалять хирургический набор после использования? - Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? - Eliminar el equipo quirúrgico después del uso - Entferne Operationskästen bei Verwendung? - Odebrat chirurgickou soupravu po použití? - Deve o kit cirúrgico ser removido após o uso? - Le kit de chirurgie doit il être supprimé à l'utilisation - Eltávolítódjon a sebészkészlet használatkor? - Il Kit Chirurgico dev'essere rimosso dopo l'uso? - - - Locations Surgical Kit (Adv) - Место использования хирургического набора (усл.) - Ograniczenie zestawu chirurgicznego - Ubicaciones del equipo quirúrgico (Avanzado) - Orte für Operationskästen (erweitert) - Lokace chirurgické soupravy (Pokr.) - Localizações do kit cirúrgico (avançado) - Lieu d'utilisation du kit de chirurgie - Sebészkészlet (Fejlett) helyei - Località Kit Chirurgico (Avanzato) - - - Where can the Surgical Kit be used? - Где может использоваться хирургический набор? - Gdzie można korzystać z zestawu chirurgicznego? - Dónde se puede utilizar el equipo quirúrgico - Wo kann der Operationskasten verwendet werden? - Kde může být použita chirurgická souprava? - Onde o kit cirúrgico pode ser utilizado? - Où peut être utilisé les kit de chirurgie - Hol lehet a sebészkészletet használni? - Dove può essere usato il Kit Chirurgico? - - - Condition Surgical Kit (Adv) - Beding. für d. Operationskasten (erw.) - Podmínka chirurgické soupravy (Pokr.) - Condición de equipo quirúrgico (Av) - Conditions d'utilisation du kit de chirurgie - Warunek zestawu chirurgicznego - Sebészkészlet állapot - Condição do Kit Cirúrgico (Avançado) - Условие использования хирургического набора (усл.) - Condizioni Kit Chirurgico (Avanzato) - - - When can the Surgical Kit be used? - Wann kann der Operationskasten verwendet werden? - Kde může být použita chirurgická souprava? - ¿Cuando se puede utilizar el equipo quirúrgico? - Quand peut être utilisé les kit de chirurgie - Po spełnieniu jakich warunków zestaw chirurgiczny może zostać zastosowany na pacjencie? - Mikor lehet a sebészkészletet használni? - Onde o kit cirúrgico pode ser utilizado? - Когда может использоваться хирургический набор? - Quando può essere usato il Kit Chirurgico? - - - Heal hitpoints - Heile Trefferpunkte - Lecz hitpointy - Curar puntos de vida - Исцелять части тела - Curar hitpoints - Léčit hitponty - Cura Hitpoints - Soigner les dommages - - - Heal fully bandaged hitpoints - Heile verbundene Trefferpunkte - Po bandażowaniu ulecz hitpointy, usuwając z nich ślady krwi i przywracając im pełną sprawność. - Curar miembros totalmente vendados - Исцелять полностью перебинтованные части тела - Curar totalmente hitpoints enfaixados - Heal fully bandaged hitpoints - Cura Hitpoints completamente bendati - Soigner les plaies entièrement bandées. - - - Pain suppression - Schmerzunterdrückung - Zwalczanie bólu - Potlačení bolesti - Supresión del dolor - Supressão de dor - Suppression de la douleur - Fájdalomcsillapítás - Приглушение боли - Soppressione dolore - - - Pain is only temporarily suppressed, not removed - Schmerzen werden nur vorübergehend unterdrückt, nicht deren Ursache geheilt. - Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale - Bolest je potlačena, ale jen dočastně - El dolor se suprime solo temporalmente, no se elimina. - Dor é somente temporáriamente suprimida, não removida - La douleur est temporairement supprimée, pas enlevée - A fájdalom csak ideiglenesen csökken, nem távolítódik el - Боль приглушается только временно - Dolore è solo temporaneamente soppresso, non rimosso - - - Configure the treatment settings from ACE Basic Medical - Behandlungseinstellungen der Standard ACE-Medizin konfigurieren - Configure las opciones de tratamiento del sistema médico básico de ACE - Skonfiguruj ustawienia leczenia podstawowego systemu medycznego ACE - Configure les réglages de traitement dans ACE médical basique - Configura le impostazioni trattamenti per ACE Medical di base - Configura as opções de tratamento do sistema médico básico do ACE - - - Configure the treatment settings from ACE Advanced Medical - Настройка лечения в медицинской системе ACE - Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE - Configure las opciones de tratamiento del sistema médico avanzado de ACE - Behandlungseinstellungen vom ACE-Medizin konfigurieren - Konfigurace nastavení léčby ze zdravotnické systému ACE - Configure as opções de tratamento do ACE Médico - Configure les paramètres de traitement du système de soin ACE - Kezelési lehetőségek konfigurálása az ACE Orvosi rendszerből - Configura le impostazioni trattamenti per ACE Medical - - - Revive Settings [ACE] - Настройки реанимации [ACE] - Ustawienia wskrzeszania - Sistema de resucitado [ACE] - Wiederbelebungseinstellungen [ACE] - Nastavení oživení [ACE] - Sistema de reavivamento [ACE] - Paramètre du revive [ACE] - Újraélesztés beállításai [ACE] - Impostazioni Revive [ACE] - - - Enable Revive - Включить реанимацию - Aktywuj wskrzeszanie - Habilitar resucitado - Erlaube Wiederbelebung - Povolit oživení - Habilitar reavivamento - Activer le revive - Újraélesztés engedélyezése - Abilita Revive - - - Enable a basic revive system - Включить базовую систему реанимации - Aktywuj podstawowy system wskrzeszania - Habilitar un sistema básico de resucitado - Aktiviere Standard-Wiederbelebungssystem - Povolit základní systém oživení - Habilitar um sistema básico de reavivamento - Active un sytème de revive basique - Egy alap újraélesztési rendszer engedélyezése - Abilita un sistema revive basico - - - Max Revive time - Макс. время реанимации - Maksymalny czas agonii - Tiempo máximo de resucitado - Maximale Wiederbelebungszeit - Maximální čas pro oživení - Tempo máximo de reavivamento - Temps maximum pour le revive - Maximum újraélesztési idő - Tempo massimo Revive - - - Max amount of seconds a unit can spend in revive state - Максимальное время в секундах, в течение которого бойца можно реанимировать - Maksymalna długość agonii w sekundach (czas na wskrzeszenie) - Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación - Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann - Maximální doba v agónii v sekundách - Quantidade máxima de segundos que uma unidade pode gastar em um estado de reavivamento - Nombre de seconde maximum qu'une unité peut être en attente d'un revive - Maximum másodperc, amit egy egység újraélesztési állapotban tölthet - Numero massimo di secondi che un'unità può spendere in stato revive - - - Max Revive lives - Макс. кол-во жизней - Maks. ilość wskrzeszeń - Vidas máximas de resucitado - Maximale Anzahl der Wiederbelebungen - Maximální počet oživení - Vidas máximas do reavivado - Nombre maximum de revive - Maximum újraélesztési lehetőségek - Numero massimo Revives - - - Max amount of lives a unit. 0 or -1 is disabled. - Максимальное количество жизней у бойца. Чтобы отключить, укажите 0 или -1. - Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. - Cantidad máxima de vidas por unidad. 0 o -1 es desactivado. - Anzahl der Leben einer Einheit. 0 oder -1 bedeutet deaktiviert. - Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno. - Quantidade máxima de vidas por unidade. 0 ou -1 é desativado. - Nombre de vie maximale d'une unité. 0 ou -1 désactive - Egy egység maximum "életei". 0 vagy -1 letiltja. - Numero massimo di vite di un'unità. 0 o -1 per disabilitare. - - - Provides a medical system for both players and AI. - Включает медицинскую систему как для игроков, так и для ботов. - Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO. - Proporciona un sistema médico para jugadores e IA. - Aktiviert das Sanitätssystem für Spieler und KI. - Poskytuje zdravotní systém pro hráče a AI. - Proporciona um sistema médico para jogadores e IA. - Fourni un sytème médical pour les joueurs et les IAs - Egy orvosi rendszert ad játékosok és AI-k számára. - Fornisce un sistema medico sia per giocatori che IA - - - Set Medic Class [ACE] - Сделать медиком [ACE] - Ustaw klasę medyka - Establecer case médica [ACE] - Setze Sanitäterklassen [ACE] - Určit třídu medika [ACE] - Definir classe médica [ACE] - Définir comme unité médicale [ACE] - Orvos beállítása [ACE] - Imposta Classe Medico [ACE] - - - List - Список - Lista - Lista - Liste - Seznam - Lista - Liste - Lista - Lista - - - List of unit names that will be classified as medic, separated by commas. - Список имен юнитов, которые будут считаться медиками (через запятую). - Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami. - Lista de los nombres de las unidades que se clasifican como médico, separados por comas. - Aufzählung von Einheiten, die als Sanitäter gelten. Werden durch Kommata getrennt. - Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami. - Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas. - Liste d'unité qui seront listées comme infirmier, séparation par virgule - Azon egységek nevei, melyek orvosként vannak meghatározva, vesszővel elválasztva. - Lista di nomi unità che verranno classificati come medici, separati da virgole. - - - Is Medic - Является медиком - Klasa medyczna - Es médico - Ist Sanitäter - Je zdravotník - É médico - Est infirmier - Orvos-e - E' Medico - - - This module allows you to assign the medic class to selected units. - Moduł ten pozwala przypisać klasę medyczną wybranym jednostkom. - Dieses Modul legt fest, welche Einheiten Sanitäter sind. - Tento modul určuje, která jednotka je zdravotník. - Este módulo determina qual unidade é um paramédico. - Ce module permet d'assigner la classe médicale à une unité sélectionnée - Ez a modul engedélyezi az orvosi jelző hozzárendelését kiválasztott egységekhez. - Этот модуль позволяет назначить класс медика выбранным юнитам. - Este módulo permite asignar la clase médico a las unidades seleccionadas. - Questo modulo ti permette di assegnare la classe Medico alle unità selezionate. - - - None - Нет - Żadna - Nada - Keine - Žádný - Nada - Aucun - Nincs - Nessuno - - - Regular medic - Обычный медик - Zwykły medyk - Médico regular - Normaler Sanitäter - Řadový zdravotník - Médico regular - Infirmier standard - Hagyományos orvos - Medico Regolare - - - Doctor (Only Advanced Medics) - Врач (только усложн.) - Doktor (tylko zaawansowani medycy) - Doctor (Solo medicina avanzada) - Arzt (Nur erweitertes Sanitätssystem) - Doktor (Pouze pokročilý zdravotníci) - Doutor (Somente médicos avançados) - Médecin (traitements avancés uniquement) - Doktor (csak fejlett orvosok) - Dottore (Solo Medici Avanzati) - - - Doctor - Врач - Doktor - Doctor - Arzt - Doktor - Doutor - Médecin - Doktor - Dottore - - - Assigns the ACE medic class to a unit - Задает юниту класс медика - Moduł ten przypisuje klasę medyka ACE do jednostek. - Asigna la clase médico ACE a una unidad - Weise die ACE-Sanitäterklasse einer Einheit zu. - Přiřadí ACE třídu zdravotníka do jednotky - Atribui a classe médica do ACE a uma unidade - Assigner la classe médicale à une unité - Az ACE orvosi jelző hozzárendelése egy egységhez - Assegna la classe medico ACE ad un'unità - - - Set Medical Vehicle [ACE] - Сделать мед. транспортом [ACE] - Ustaw pojazd medyczny - Establecer vehículos médicos [ACE] - Setze Sanitätsfahrzeug [ACE] - Určit zdravotnické vozidlo [ACE] - Definir veículo médico [ACE] - Définir comme véhicule médical [ACE] - Orvosi jármű beállítása [ACE] - Imposta Veicolo Medico [ACE] - - - List - Список - Lista - Lista - Liste - Seznam - Lista - Liste - Lista - Lista - - - List of vehicles that will be classified as medical vehicle, separated by commas. - Список транспортных средств, которые будут считаться медицинским транспортом (через запятую). - Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami. - Lista de los vehículos que se clasifican como vehículo médicos, separados por comas. - Aufzählung von Fahrzeugen, die als Sanitätsfahrzeug gelten. Werden durch Kommata getrennt. - Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami. - Lista de veículos que serão classificados como veículos médicos, separados por vírgulas. - Liste de véhicule classé comme véhicule médical, séparation par virgule. - Orvosi járműveknek tekintett járművek listája, vesszővel elválasztva. - Lista di veicoli che verranno classificati come veicoli medici, separati da virgole. - - - Is Medical Vehicle - Является медицинским транспортом - Jest pojazdem medycznym - Es vehículo médico - Ist medizinisches Fahrzeug - Zdravotnické vozidlo - É um veículo médico - Véhicule médical - Orvosi jármű-e - E' Veicolo Medico - - - Whatever or not the objects in the list will be a medical vehicle. - Будут ли объекты в списке считаться медицинским транспортом. - Czy pojazdy z tej listy są pojazdami medycznymi? - Cualquiera de la lista o fuera de ella será un vehículo médico. - Legt fest, ob das Objekt in der Liste ein Sanitätsfahrzeug ist. - Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla. - Se serão ou não os objetos dessa lista veículos médicos. - Quoi qu'il arrive les objets de la liste seront des véhicules médical - A listában lévő objektumok orvosi járművek-e, vagy sem. - Gli oggetti nella lista verranno considerati veicoli medici o meno. - - - Assigns the ACE medic class to a unit - Задает юниту класс медика - Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne. - Asigna la clase médico ACE a una unidad - Weist die ACE-Sanitäterklasse einer Einheit zu - Přiřadí ACE třídu zdravotníka do jednotky - Atribui a classe médica ACE a uma unidade - Assigne la classe médicale à une unité - Hozzárendeli az ACE orvosi jelzőt egy egységhez - Assegna la classe medico ACE ad un'unità - - - Set Medical Facility [ACE] - Сделать госпиталем [ACE] - Ustaw budynek medyczny - Establece el centro médico [ACE] - Setze medizinische Einrichtung [ACE] - Určit zdravotnické zařízení [ACE] - Definir instalação médica [ACE] - Définir comme équipement médical [ACE] - Orvosi létesítmény beállítása [ACE] - Imposta Struttura Medica [ACE] - - - Is Medical Facility - Является госпиталем - Jest budynkiem medycznym - Es centro médico - Ist eine medizinische Einrichtung - Zdravotnické zařízení - É uma instalação médica - Est un équipement médical - Orvosi létesítmény-e - E' Struttura Medica - - - Registers an object as a medical facility - Определяет объект в качестве госпиталя - Przypisuje danemu obiektowi status budynku medycznego - Registra un objeto como un centro médico - Definiert ein Objekt als medizinische Einrichtung - Registruje objekt jako zdravotnické zařízení - Registra um objeto como instalacão médica - Enregistrer un objet comme un équipement médical - Egy objektum orvosi létesítményként való regisztrálása - Registra un oggetto come struttura medica - - - Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles. - Определяет объект в качестве госпиталя. Позволяет оказывать более сложную помощь. Может применяться к зданиям и технике. - Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach. - Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos. - Definiert ein Objekt als medizinische Einrichtung. Hier werden weitere, tiefgreifende Behandlungen ermöglicht. Kann Fahrzeugen oder Gebäuden zugewiesen werden. - Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla. - Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos. - Définir un objet comme équipement médical. Cela permet les traitements avancés. Peut être utilisé sur les batiments et les véhicules - Egy objektumot orvosi létesítményként határoz meg. Ez fejlett ellátási lehetőségeket engedélyez. Használható járműveken és épületeken. - Definisce un oggetto come struttura medica. Questo permette cure più avanzate. Può essere usato su edifici e veicoli. - - - [ACE] Medical Supply Crate (Basic) - [ACE] Ящик с медикаментами (базовая медицина) - [ACE] Skrzynka z zapasami medycznymi (podstawowa) - [ACE] Caja de suministros médicos (Básica) - [ACE] Sanitätskiste (Standard) - [ACE] Zdravotnické zásoby (základní) - [ACE] Caixa com suprimentos médicos - [ACE] Caisse médicale (basique) - [ACE] Orvosi láda (Alap) - [ACE] Cassa Rifornimenti Medici (Basico) - - - [ACE] Medical Supply Crate (Advanced) - [ACE] Ящик с медикаментами (усложн. медицина) - [ACE] Skrzynka z zapasami medycznymi (zaawansowana) - [ACE] Caja de suministros médicos (Avanzada) - [ACE] Sanitätskiste (erweitert) - [ACE] Zdravotnické zásoby (pokročilé) - [ACE] Caixa com suprimentos médicos (Avançados) - [ACE] Caisse médicale (avancée) - [ACE] Orvosi láda (Fejlett) - [ACE] Cassa Rifornimenti Medici (Avanzato) - - - Anytime - Jederzeit - Kdykoliv - Siempre - Tout le temps - Zawsze - Akármikor - Sempre - В любое время - Sempre - - - Stable - Stabil - Stabilní - Estable - Stable - Po stabilizacji - Stabil - Estável - После стабилизации - Stabile - - - Medical - Zdravotní - Médical - Sanitäter - Medico - Medyczne - Médico - Медик - Médico - Orvosi - - - Distance to %1 has become to far for treatment - Die Entfernung zu %1 ist zu groß für eine Behandlung - %1 odszedł zbyt daleko, nie można kontynuować leczenia - Расстояние до %1 стало слишком большим для лечения - A distância de %1 está muito longe para tratamento - La distancia hasta %1 se ha agrandado demasiado para el tratamiento - %1 je příliš daleko, léčba není možná - Distanza da %1 è diventata troppo alta per permettere trattamento - %1 est trop loin pour être soigné - - - This person (%1) is awake and cannot be loaded - Diese Person (%1) ist wach und kann nicht verladen werden - Ta osoba (%1) jest przytomna i nie może zostać załadowana - Esta persona (%1) está despierto y no puede ser cargado - Боец (%1) в сознании и не может быть погружен - Esta pessoa (%1) está acordada e não pode ser carregada - Tato osoba (%1) je vzhůru a nemůže být naložena - Questa persona (%1) è sveglia e non può essere caricata. - Cette personne (%1) est consciente et ne peut être chargées. - - - There is no tourniquet on this body part! - An diesem Körperteil befindet sich kein Tourniquet! - Na tej części ciała nie ma stazy! - No hay torniquete en esta parte del cuerpo! - Нет жгута на этой части тела! - Não existe nenhum torniquete nesta parte do corpo! - Žádné škrtidlo na této části těla! - Non c'è nessun laccio emostatico su questa parte del corpo! - Il n'y a pas de garrot sur ce membre ! - - - Medical training - Wyszkolenie medyczne - Addestramento Medico - Sanitätsausbildung - Entrenamiento médico - Entraînement médical - Lékařský výcvik - Treino médico - - - Whether or not the object will be a medical vehicle. - Czy pojazdy ma być pojazdem medycznym? - L'oggetto in questione sarà un veicolo medico o meno. - Legt fest, ob das Objekt ein Sanitätsfahrzeug ist. - Es un vehículo médico? - Définit si le véhicule est un véhicule médical ou non. - Se o objeto será ou não um veículo médico - - - Delay cease fire of AI while player is unconscious for medical reasons. - Verzögert das Ende des KI-Beschusses auf einen Spieler, wenn dieser aus medizinischen Gründen bewustlos wird. - Ritarda il cessate il fuoco dell'IA quando il giocatore è svenuto per motivi medici. - Prodleva zastavení palby pro AI, pokud je hráč v bezvědomí ze zdravotních důvodů. - Atraso durante cessar fogo da AI durante inconsciência médica - Délai de cessez le feu pour l'IA pendant que le joueur est inconscient pour des raisons médicales - - - Delay cease fire of AI for unconsciousness - Verzögert Ende des KI-Beschusses bei medizinischer Bewustlosigkeit - Demora antes de volverse neutral al caer inconsciente - Opóźnij status captive u nieprzytomnych osób - Ritarda il cessate il fuoco dell'IA quando si è svenuti - Prodleva zastavení palby AI na bezvědomé - Atraso durante cessar fogo da AI durante inconsciência - Délai de cessez le feu de l'IA pour la perte de conscience - - \ No newline at end of file + diff --git a/addons/medical/ui/CfgInGameUI.hpp b/addons/medical/ui/CfgInGameUI.hpp deleted file mode 100644 index 5a09a11414..0000000000 --- a/addons/medical/ui/CfgInGameUI.hpp +++ /dev/null @@ -1,6 +0,0 @@ - -class CfgInGameUI { - class PeripheralVision { - bloodTexture = ""; //"A3\ui_f\data\igui\cfg\PeripheralVision\bloodTexture_ca.paa"; - }; -}; diff --git a/addons/medical/ui/Icon_Module_Medical_ca.paa b/addons/medical/ui/Icon_Module_Medical_ca.paa deleted file mode 100644 index d66921dfcc..0000000000 Binary files a/addons/medical/ui/Icon_Module_Medical_ca.paa and /dev/null differ diff --git a/addons/medical/ui/RscTitles.hpp b/addons/medical/ui/RscTitles.hpp deleted file mode 100644 index 3f9113a9d2..0000000000 --- a/addons/medical/ui/RscTitles.hpp +++ /dev/null @@ -1,129 +0,0 @@ -class ACE_gui_backgroundBase; -class ACE_gui_listBoxBase; - -class Rsctitles { - class GVAR(DisplayInformation) { - duration = 10e10; - idd = 1111; - movingenable = 0; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QUOTE(GVAR(DisplayInformation))), _this select 0)]); - onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QUOTE(GVAR(DisplayInformation))), nil)]); - class controlsBackground { - class bodyImgBackground: ACE_gui_backgroundBase { - idc = -1; - x = "safezoneX + (2.5 * (((safezoneW / safezoneH) min 1.2) / 40))"; - y = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + safezoneY"; - w = "8.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "8.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; - colorBackground[] = {1,1,1,1}; - colorPicture[] = {1,1,1,1}; - colorText[] = {1,1,1,1}; - text = QPATHTOF(ui\body_background.paa); - }; - class bodyImgHead: bodyImgBackground { - idc = 50; - colorBackground[] = {1,1,1,1}; - colorPicture[] = {1,1,1,1}; - colorText[] = {1,1,1,1}; - text = QPATHTOF(ui\body_head.paa); - }; - class bodyImgTorso: bodyImgHead { - idc = 51; - text = QPATHTOF(ui\body_torso.paa); - }; - class bodyImgArms_l: bodyImgHead { - idc = 52; - text = QPATHTOF(ui\body_arm_left.paa); - }; - class bodyImgArms_r: bodyImgHead { - idc = 53; - text = QPATHTOF(ui\body_arm_right.paa); - }; - class bodyImgLegs_l: bodyImgHead { - idc = 54; - text = QPATHTOF(ui\body_leg_left.paa); - }; - class bodyImgLegs_r: bodyImgHead { - idc = 55; - text = QPATHTOF(ui\body_leg_right.paa); - }; - class InjuryListLabel { - idc = 199; - type = CT_STATIC; - x = "safezoneX + (2 * (((safezoneW / safezoneH) min 1.2) / 40))"; - y = "10.2 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + safezoneY"; - w = "9 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "0.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - style = 0x00 + 0x100; // ST_LEFT + ST_SHADOW - font = "RobotoCondensed"; - colorText[] = {0.95, 0.95, 0.95, 0.75}; - colorBackground[] = {"(profilenamespace getVariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getVariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getVariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; - text = CSTRING(Injuries); - }; - class InjuryList: ACE_gui_listBoxBase { - idc = 200; - x = "safezoneX + (2 * (((safezoneW / safezoneH) min 1.2) / 40))"; - y = "11 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + safezoneY"; - w = "9 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - rowHeight = 0.03; - colorBackground[] = {0, 0, 0, 0.2}; - colorText[] = {1,1, 1, 1.0}; - colorScrollbar[] = {0.95, 0.95, 0.95, 1}; - colorSelect[] = {0.95, 0.95, 0.95, 1}; - colorSelect2[] = {0.95, 0.95, 0.95, 1}; - colorSelectBackground[] = {0, 0, 0, 0.0}; - colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5}; - }; - class ActivityLog: InjuryList { - idc = 302; - y = "21.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + safezoneY"; - h = "7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - rowHeight = 0.03; - shadow = 2; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {1,1, 1, 1.0}; - colorScrollbar[] = {0.95, 0.95, 0.95, 1}; - colorSelect[] = {1,1,1,1}; - colorSelect2[] = {1,1,1,1}; - colorSelectBackground[] = {0, 0, 0, 0.0}; - colorSelectBackground2[] = {0.0, 0.0, 0.0, 0}; - }; - class TriageStatus { - idc = 303; - type = CT_STATIC; - x = "safezoneX + (2 * (((safezoneW / safezoneH) min 1.2) / 40))"; - y = "20.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + safezoneY"; - w = "9 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "0.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - style = 0x00 + 0x100; // ST_LEFT + ST_SHADOW - font = "RobotoCondensed"; - colorText[] = {0.95, 0.95, 0.95, 0.75}; - colorBackground[] = {0,0,0,0.9}; - text = ""; - }; - }; - }; - - // disables blood texture overlay - class RscHealthTextures { - class controls { - class Flame_1; - class Blood_1: Flame_1 { - text = ""; //"A3\Ui_f\data\igui\rsctitles\HealthTextures\blood_lower_ca.paa"; - }; - class Blood_2: Flame_1 { - text = ""; //"A3\Ui_f\data\igui\rsctitles\HealthTextures\blood_middle_ca.paa"; - }; - class Blood_3: Flame_1 { - text = ""; //"A3\Ui_f\data\igui\rsctitles\HealthTextures\blood_upper_ca.paa"; - }; - }; - }; -}; diff --git a/addons/medical/ui/body_arm_left.paa b/addons/medical/ui/body_arm_left.paa deleted file mode 100644 index 245cc4ba31..0000000000 Binary files a/addons/medical/ui/body_arm_left.paa and /dev/null differ diff --git a/addons/medical/ui/body_arm_right.paa b/addons/medical/ui/body_arm_right.paa deleted file mode 100644 index 2023d1e0b4..0000000000 Binary files a/addons/medical/ui/body_arm_right.paa and /dev/null differ diff --git a/addons/medical/ui/body_background.paa b/addons/medical/ui/body_background.paa deleted file mode 100644 index 525d9c4b6a..0000000000 Binary files a/addons/medical/ui/body_background.paa and /dev/null differ diff --git a/addons/medical/ui/body_head.paa b/addons/medical/ui/body_head.paa deleted file mode 100644 index 77ddd995bc..0000000000 Binary files a/addons/medical/ui/body_head.paa and /dev/null differ diff --git a/addons/medical/ui/body_leg_left.paa b/addons/medical/ui/body_leg_left.paa deleted file mode 100644 index a116305258..0000000000 Binary files a/addons/medical/ui/body_leg_left.paa and /dev/null differ diff --git a/addons/medical/ui/body_leg_right.paa b/addons/medical/ui/body_leg_right.paa deleted file mode 100644 index 02ce66ba70..0000000000 Binary files a/addons/medical/ui/body_leg_right.paa and /dev/null differ diff --git a/addons/medical/ui/body_torso.paa b/addons/medical/ui/body_torso.paa deleted file mode 100644 index 0a7212ac95..0000000000 Binary files a/addons/medical/ui/body_torso.paa and /dev/null differ diff --git a/addons/medical/ui/icons/autoInjector.paa b/addons/medical/ui/icons/autoInjector.paa deleted file mode 100644 index f1707d2b82..0000000000 Binary files a/addons/medical/ui/icons/autoInjector.paa and /dev/null differ diff --git a/addons/medical/ui/icons/bandage.paa b/addons/medical/ui/icons/bandage.paa deleted file mode 100644 index e8de331ae3..0000000000 Binary files a/addons/medical/ui/icons/bandage.paa and /dev/null differ diff --git a/addons/medical/ui/icons/bodybag.paa b/addons/medical/ui/icons/bodybag.paa deleted file mode 100644 index ec35ad0796..0000000000 Binary files a/addons/medical/ui/icons/bodybag.paa and /dev/null differ diff --git a/addons/medical/ui/icons/iv.paa b/addons/medical/ui/icons/iv.paa deleted file mode 100644 index ef7048dfd1..0000000000 Binary files a/addons/medical/ui/icons/iv.paa and /dev/null differ diff --git a/addons/medical/ui/icons/medical_cross.paa b/addons/medical/ui/icons/medical_cross.paa deleted file mode 100644 index 656ebc000b..0000000000 Binary files a/addons/medical/ui/icons/medical_cross.paa and /dev/null differ diff --git a/addons/medical/ui/icons/medical_crossRed.paa b/addons/medical/ui/icons/medical_crossRed.paa deleted file mode 100644 index 5a0c8e9f9c..0000000000 Binary files a/addons/medical/ui/icons/medical_crossRed.paa and /dev/null differ diff --git a/addons/medical/ui/icons/medical_crossYellow.paa b/addons/medical/ui/icons/medical_crossYellow.paa deleted file mode 100644 index 74ddefd837..0000000000 Binary files a/addons/medical/ui/icons/medical_crossYellow.paa and /dev/null differ diff --git a/addons/medical/ui/icons/packingBandage.paa b/addons/medical/ui/icons/packingBandage.paa deleted file mode 100644 index 0fb1a3650c..0000000000 Binary files a/addons/medical/ui/icons/packingBandage.paa and /dev/null differ diff --git a/addons/medical/ui/icons/surgicalKit.paa b/addons/medical/ui/icons/surgicalKit.paa deleted file mode 100644 index 212c56c78c..0000000000 Binary files a/addons/medical/ui/icons/surgicalKit.paa and /dev/null differ diff --git a/addons/medical/ui/icons/tourniquet.paa b/addons/medical/ui/icons/tourniquet.paa deleted file mode 100644 index 6497420e54..0000000000 Binary files a/addons/medical/ui/icons/tourniquet.paa and /dev/null differ diff --git a/addons/medical/ui/icons/triageCard.paa b/addons/medical/ui/icons/triageCard.paa deleted file mode 100644 index 0a1865fc9f..0000000000 Binary files a/addons/medical/ui/icons/triageCard.paa and /dev/null differ diff --git a/addons/medical/ui/items/adenosine_x_ca.paa b/addons/medical/ui/items/adenosine_x_ca.paa deleted file mode 100644 index 49b79e99e5..0000000000 Binary files a/addons/medical/ui/items/adenosine_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/atropine_x_ca.paa b/addons/medical/ui/items/atropine_x_ca.paa deleted file mode 100644 index 49b79e99e5..0000000000 Binary files a/addons/medical/ui/items/atropine_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/bloodIV_x_ca.paa b/addons/medical/ui/items/bloodIV_x_ca.paa deleted file mode 100644 index 489614bf44..0000000000 Binary files a/addons/medical/ui/items/bloodIV_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/bodybag_x_ca.paa b/addons/medical/ui/items/bodybag_x_ca.paa deleted file mode 100644 index a3a7257fc3..0000000000 Binary files a/addons/medical/ui/items/bodybag_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/elasticBandage_x_ca.paa b/addons/medical/ui/items/elasticBandage_x_ca.paa deleted file mode 100644 index bbf7901ceb..0000000000 Binary files a/addons/medical/ui/items/elasticBandage_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/epinephrine_x_ca.paa b/addons/medical/ui/items/epinephrine_x_ca.paa deleted file mode 100644 index d4c556281a..0000000000 Binary files a/addons/medical/ui/items/epinephrine_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/fieldDressing_x_ca.paa b/addons/medical/ui/items/fieldDressing_x_ca.paa deleted file mode 100644 index bfe11f2a07..0000000000 Binary files a/addons/medical/ui/items/fieldDressing_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/morphine_x_ca.paa b/addons/medical/ui/items/morphine_x_ca.paa deleted file mode 100644 index 16918da53f..0000000000 Binary files a/addons/medical/ui/items/morphine_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/packingBandage_x_ca.paa b/addons/medical/ui/items/packingBandage_x_ca.paa deleted file mode 100644 index 5825d17a77..0000000000 Binary files a/addons/medical/ui/items/packingBandage_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/personal_aid_kit_x_ca.paa b/addons/medical/ui/items/personal_aid_kit_x_ca.paa deleted file mode 100644 index 87d6a1612f..0000000000 Binary files a/addons/medical/ui/items/personal_aid_kit_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/plasmaIV_x_ca.paa b/addons/medical/ui/items/plasmaIV_x_ca.paa deleted file mode 100644 index 31eb3e34df..0000000000 Binary files a/addons/medical/ui/items/plasmaIV_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/quickclot_x_ca.paa b/addons/medical/ui/items/quickclot_x_ca.paa deleted file mode 100644 index 8727b7d1d0..0000000000 Binary files a/addons/medical/ui/items/quickclot_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/salineIV_x_ca.paa b/addons/medical/ui/items/salineIV_x_ca.paa deleted file mode 100644 index a957e36d7c..0000000000 Binary files a/addons/medical/ui/items/salineIV_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/surgicalKit_x_ca.paa b/addons/medical/ui/items/surgicalKit_x_ca.paa deleted file mode 100644 index e6b3533a12..0000000000 Binary files a/addons/medical/ui/items/surgicalKit_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/items/tourniquet_x_ca.paa b/addons/medical/ui/items/tourniquet_x_ca.paa deleted file mode 100644 index 1a0dace011..0000000000 Binary files a/addons/medical/ui/items/tourniquet_x_ca.paa and /dev/null differ diff --git a/addons/medical/ui/moduleIcon.paa b/addons/medical/ui/moduleIcon.paa deleted file mode 100644 index 9cb6c4782d..0000000000 Binary files a/addons/medical/ui/moduleIcon.paa and /dev/null differ diff --git a/addons/medical/ui/triage_card_corner_l.paa b/addons/medical/ui/triage_card_corner_l.paa deleted file mode 100644 index a713f43e2d..0000000000 Binary files a/addons/medical/ui/triage_card_corner_l.paa and /dev/null differ diff --git a/addons/medical/ui/triage_card_corner_r.paa b/addons/medical/ui/triage_card_corner_r.paa deleted file mode 100644 index 5d095321b9..0000000000 Binary files a/addons/medical/ui/triage_card_corner_r.paa and /dev/null differ diff --git a/addons/medical/ui/triagecard.hpp b/addons/medical/ui/triagecard.hpp deleted file mode 100644 index 6a5138def8..0000000000 --- a/addons/medical/ui/triagecard.hpp +++ /dev/null @@ -1,191 +0,0 @@ -class ACE_gui_buttonBase; - -class GVAR(triageCard) { - idd = 7010; - movingenable = 0; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QUOTE(GVAR(triageCard))), _this select 0)]); - onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QUOTE(GVAR(triageCard))), nil)]); - class controlsBackground { - class Background: ACE_gui_backgroundBase { - idc = -1; - type = CT_STATIC; - x = "10 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "19 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - style = ST_LEFT + ST_SHADOW; - font = "RobotoCondensed"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - colorText[] = {0.0, 0.0, 0.0, 1}; - colorBackground[] = {1,1,1,1}; - text = ""; - }; - class cornor_top_l: ACE_gui_backgroundBase { - idc = -1; - x = "10 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - font = "RobotoCondensed"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - colorText[] = {1,1,0,1}; - colorBackground[] = {0,0,0,0}; - text = QPATHTOF(ui\triage_card_corner_l.paa); - }; - class cornor_top_r: cornor_top_l { - x = "20 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QPATHTOF(ui\triage_card_corner_r.paa); - }; - - class TriageCardLabel { - idc = 199; - type = CT_STATIC; - x = "14.25 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "7.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "0.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - style = 0x02 + 0x100; // ST_LEFT + ST_SHADOW - font = "RobotoCondensed"; - colorText[] = {0,0,0,1}; - colorBackground[] = {0,0,0,0}; - text = CSTRING(Actions_TriageCard); - }; - class TriageList: ACE_gui_listBoxBase { - idc = 200; - x = "11 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "13 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "13 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - rowHeight = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0,0,0, 1.0}; - colorScrollbar[] = {0.95, 0.95, 0.95, 0}; - colorSelect[] = {0.0, 0.0, 0.0, 1}; - colorSelect2[] = {0.0, 0.0, 0.0, 1}; - colorSelectBackground[] = {0, 0, 0, 0.0}; - colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; - }; - class TriageTextBottom: TriageCardLabel { - idc = 2000; - x = "10 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "20 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - style = 0x02; - colorText[] = {1, 1, 1.0, 1}; - colorBackground[] = {0,0.0,0.0,0.7}; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - text = ""; - }; - class selectTriageStatus: ACE_gui_buttonBase { - idc = 2001; - x = "10 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "20 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "15 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - style = 0x02; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)"; - action = QUOTE([true] call FUNC(dropDownTriageCard);); - text = ""; - }; - class selectTriageStatusNone: selectTriageStatus { - idc = 2002; - x = 0; - y = 0; - w = 0; - h = 0; - text = CSTRING(Triage_Status_None); - style = 0x02; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureOver = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setVariable [ARR_3('ACE_medical_triageLevel',0,true)];); - }; - class selectTriageStatusMinor: selectTriageStatus { - idc = 2003; - x = 0; - y = 0; - w = 0; - h = 0; - text = CSTRING(Triage_Status_Minor); - style = 0x02; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTextureOver = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setVariable [ARR_3('ACE_medical_triageLevel',1,true)];); - }; - class selectTriageStatusDelayed: selectTriageStatus { - idc = 2004; - x = 0; - y = 0; - w = 0; - h = 0; - text = CSTRING(Triage_Status_Delayed); - style = 0x02; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTextureOver = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setVariable [ARR_3('ACE_medical_triageLevel',2,true)];); - }; - class selectTriageStatusImmediate: selectTriageStatus { - idc = 2005; - x = 0; - y = 0; - w = 0; - h = 0; - text = CSTRING(Triage_Status_Immediate); - style = 0x02; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTextureOver = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setVariable [ARR_3('ACE_medical_triageLevel', 3, true)];); - }; - class selectTriageStatusDeceased: selectTriageStatus { - idc = 2006; - x = 0; - y = 0; - w = 0; - h = 0; - text = CSTRING(Triage_Status_Deceased); - style = 0x02; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureOver = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setVariable [ARR_3('ACE_medical_triageLevel', 4, true)];); - }; - }; -}; \ No newline at end of file diff --git a/addons/medical_damage/$PBOPREFIX$ b/addons/medical_damage/$PBOPREFIX$ new file mode 100644 index 0000000000..188701b560 --- /dev/null +++ b/addons/medical_damage/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\medical_damage \ No newline at end of file diff --git a/addons/medical_damage/CfgEventHandlers.hpp b/addons/medical_damage/CfgEventHandlers.hpp new file mode 100644 index 0000000000..5c45c6e9b9 --- /dev/null +++ b/addons/medical_damage/CfgEventHandlers.hpp @@ -0,0 +1,19 @@ +class Extended_PreStart_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preStart)); + }; +}; + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; + +class Extended_Init_EventHandlers { + class CAManBase { + class ADDON { + init = QUOTE(call FUNC(install)); + }; + }; +}; diff --git a/addons/medical_damage/XEH_PREP.hpp b/addons/medical_damage/XEH_PREP.hpp new file mode 100644 index 0000000000..d99c3457df --- /dev/null +++ b/addons/medical_damage/XEH_PREP.hpp @@ -0,0 +1,13 @@ +PREP(airwayHandler); +PREP(damageCache); +PREP(damageOrchestration); +PREP(fracturesHandler); +PREP(getTypeOfDamage); +PREP(handleDamage); +PREP(getTypeOfDamage); +PREP(internalInjuriesHandler); +PREP(setDamage); +PREP(translateSelections); +PREP(woundsHandler); +PREP(woundsHandlerSqf); +PREP(install); diff --git a/addons/medical_damage/XEH_preInit.sqf b/addons/medical_damage/XEH_preInit.sqf new file mode 100644 index 0000000000..890180832e --- /dev/null +++ b/addons/medical_damage/XEH_preInit.sqf @@ -0,0 +1,11 @@ +#include "script_component.hpp" + +ADDON = false; + +#include "XEH_PREP.hpp" + +// EGVAR(medical,SELECTIONS) = []; // TODO get all selections from medical +// EGVAR(medical,HITPOINTS) = []; // TODO get all selections from medical +// TODO EGVAR(medical,allAvailableDamageTypes) = []; // get from medical core component + +ADDON = true; diff --git a/addons/medical_damage/XEH_preStart.sqf b/addons/medical_damage/XEH_preStart.sqf new file mode 100644 index 0000000000..022888575e --- /dev/null +++ b/addons/medical_damage/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" diff --git a/addons/medical_damage/config.cpp b/addons/medical_damage/config.cpp new file mode 100644 index 0000000000..60cad71f28 --- /dev/null +++ b/addons/medical_damage/config.cpp @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_medical"}; + author = ECSTRING(common,ACETeam); + authors[] = {""}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" diff --git a/addons/medical/functions/fnc_handleDamage_airway.sqf b/addons/medical_damage/functions/fnc_airwayHandler.sqf similarity index 91% rename from addons/medical/functions/fnc_handleDamage_airway.sqf rename to addons/medical_damage/functions/fnc_airwayHandler.sqf index ace7041cb5..a34615d8c0 100644 --- a/addons/medical/functions/fnc_handleDamage_airway.sqf +++ b/addons/medical_damage/functions/fnc_airwayHandler.sqf @@ -19,7 +19,7 @@ private "_bodyPartn"; params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage"]; -_bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); +_bodyPartn = [_selectionName] call EFUNC(medical,selectionNameToNumber); if (_bodyPartn > 1) exitWith {}; diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical_damage/functions/fnc_damageCache.sqf similarity index 97% rename from addons/medical/functions/fnc_handleDamage_caching.sqf rename to addons/medical_damage/functions/fnc_damageCache.sqf index ec245b5b06..c772b69117 100644 --- a/addons/medical/functions/fnc_handleDamage_caching.sqf +++ b/addons/medical_damage/functions/fnc_damageCache.sqf @@ -19,7 +19,7 @@ params ["_unit", "_selectionName", "_damage", "_source", "_projectile", "_hitPointIndex"]; -private _hitSelections = GVAR(SELECTIONS); +private _hitSelections = EGVAR(medical,SELECTIONS); // Calculate change in damage - use getHitIndex because selection is translated (hitdiaphragm->body) private _newDamage = _damage - (damage _unit); @@ -30,12 +30,12 @@ TRACE_7("ACE_DEBUG: HandleDamage_Caching Called",_unit, _selectionName, _damage, // Check for vehicle crash private _vehicle = vehicle _unit; if ((_vehicle != _unit) && {!(_vehicle isKindOf "StaticWeapon")} && {_source in [objNull, driver _vehicle, _vehicle]} && {_projectile == ""} && {_selectionName == ""}) then { - if (GVAR(enableVehicleCrashes)) then { + //if (GVAR(enableVehicleCrashes)) then { _selectionName = selectRandom _hitSelections; _projectile = "vehiclecrash"; _this set [1, _selectionName]; _this set [4, _projectile]; - }; + //}; }; // Handle falling damage @@ -85,9 +85,9 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) t private _cache_params = _unit getVariable [QGVAR(cachedHandleDamageParams), []]; private _cache_damages = _unit getVariable QGVAR(cachedDamages); { - (_x + [_cache_damages select _forEachIndex]) call FUNC(handleDamage_advanced); + (_x + [_cache_damages select _forEachIndex]) call FUNC(damageOrchestration); } forEach _cache_params; - [_unit] call FUNC(handleDamage_advancedSetDamage); + [_unit] call FUNC(setDamage); [_idPFH] call CBA_fnc_removePerFrameHandler; }; }, 0, [_unit, diag_frameno] ] call CBA_fnc_addPerFrameHandler; diff --git a/addons/medical/functions/fnc_handleDamage_advanced.sqf b/addons/medical_damage/functions/fnc_damageOrchestration.sqf similarity index 69% rename from addons/medical/functions/fnc_handleDamage_advanced.sqf rename to addons/medical_damage/functions/fnc_damageOrchestration.sqf index 068162a55b..f3e26d8666 100644 --- a/addons/medical/functions/fnc_handleDamage_advanced.sqf +++ b/addons/medical_damage/functions/fnc_damageOrchestration.sqf @@ -1,6 +1,6 @@ /* * Author: Glowbal - * Advanced HandleDamage EH function. + * Damage orchestration * * Arguments: * 0: Unit That Was Hit @@ -29,20 +29,21 @@ params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeO if (_newDamage isEqualType objNull) then { _newDamage = _this select 7; }; +TRACE_5("ACE_DEBUG: damageOrchestration Called",_unit, _selectionName, _amountOfDamage, _sourceOfDamage, _typeOfProjectile); -private _part = [_selectionName] call FUNC(selectionNameToNumber); +private _part = [_selectionName] call EFUNC(medical,selectionNameToNumber); if (_part < 0) exitWith {}; private _hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; // Sorting out the damage -private _damageBodyParts = _unit getVariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; +private _damageBodyParts = _unit getVariable [QEGVAR(medical,bodyPartStatus), [0,0,0,0,0,0]]; _damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage]; -_unit setVariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; +_unit setVariable [QEGVAR(medical,bodyPartStatus), _damageBodyParts, true]; private _typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage); -[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_assignWounds); +[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(woundsHandler); // TODO also support the sqf variant // TODO Disabled until implemented fully //if (GVAR(enableAirway)) then { @@ -55,9 +56,4 @@ private _typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage); // [_unit,_selectionName,_newDamage,_sourceOfDamage, _typeOfDamage] call FUNC(handleDamage_internalInjuries); //}; -if (alive _unit && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { - // If it reaches this, we can assume that the hit did not kill this unit, as this function is called 3 frames after the damage has been passed. - if ([_unit, _part, if (_part > 1) then {_newDamage * 1.3} else {_newDamage * 2}] call FUNC(determineIfFatal)) then { - [_unit] call FUNC(setUnconscious); - }; -}; +// TODO raise state events for unit diff --git a/addons/medical/functions/fnc_handleDamage_fractures.sqf b/addons/medical_damage/functions/fnc_fracturesHandler.sqf similarity index 96% rename from addons/medical/functions/fnc_handleDamage_fractures.sqf rename to addons/medical_damage/functions/fnc_fracturesHandler.sqf index 5292781420..ee89b4ac74 100644 --- a/addons/medical/functions/fnc_handleDamage_fractures.sqf +++ b/addons/medical_damage/functions/fnc_fracturesHandler.sqf @@ -19,7 +19,7 @@ private ["_bodyPartn", "_fractures", "_fractureType"]; params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage"]; -_bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); +_bodyPartn = [_selectionName] call EFUNC(medical,selectionNameToNumber); _fractureType = 1; if (_amountOfDamage > 0.05) then { diff --git a/addons/medical/functions/fnc_getTypeOfDamage.sqf b/addons/medical_damage/functions/fnc_getTypeOfDamage.sqf similarity index 99% rename from addons/medical/functions/fnc_getTypeOfDamage.sqf rename to addons/medical_damage/functions/fnc_getTypeOfDamage.sqf index 56cb8f75ef..200ba3d39d 100644 --- a/addons/medical/functions/fnc_getTypeOfDamage.sqf +++ b/addons/medical_damage/functions/fnc_getTypeOfDamage.sqf @@ -15,7 +15,6 @@ params ["_typeOfProjectile"]; - if (_typeOfProjectile isKindOf "BulletBase") exitWith {"bullet"}; if (_typeOfProjectile isKindOf "ShotgunBase") exitWith {"bullet"}; if (_typeOfProjectile isKindOf "GrenadeCore") exitWith {"grenade"}; diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical_damage/functions/fnc_handleDamage.sqf similarity index 69% rename from addons/medical/functions/fnc_handleDamage.sqf rename to addons/medical_damage/functions/fnc_handleDamage.sqf index abb91ff1c3..c3c8986643 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical_damage/functions/fnc_handleDamage.sqf @@ -47,10 +47,10 @@ _selection = [_unit, _selection, _hitPointIndex] call FUNC(translateSelections); _this set [1, _selection]; // ensure that the parameters are set correctly // If the damage is being weird, we just tell it to fuck off. Ignore: "hands", "legs", "arms" -if (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; +if (_selection != "" && {!(_selection in EGVAR(medical,SELECTIONS))}) exitWith {0}; // Exit if we disable damage temporarily -if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith { +if !(_unit getVariable [QEGVAR(medical,allowDamage), true]) exitWith { TRACE_3("ACE_DEBUG: HandleDamage damage disabled.",_selection,damage _unit,_unit); if (_selection == "") then { damage _unit @@ -62,15 +62,15 @@ if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith { // Get return damage private _damageReturn = _damage; -private _newDamage = _this call FUNC(handleDamage_caching); +private _newDamage = _this call FUNC(damageCache); // handleDamage_caching may have modified the projectile string private _typeOfDamage = [_projectile] call FUNC(getTypeOfDamage); TRACE_3("ACE_DEBUG: HandleDamage caching new damage",_selection,_newDamage,_unit); -private _typeIndex = (GVAR(allAvailableDamageTypes) find _typeOfDamage); +private _typeIndex = (EGVAR(medical,allAvailableDamageTypes) find _typeOfDamage); private _minLethalDamage = if (_typeIndex >= 0) then { - GVAR(minLethalDamages) select _typeIndex + EGVAR(medical,minLethalDamages) select _typeIndex } else { 0.01 }; @@ -82,12 +82,17 @@ if (!isNull _shooter) then { private _vehicle = vehicle _unit; private _effectiveSelectionName = _selection; if ((_vehicle != _unit) && {!(_vehicle isKindOf "StaticWeapon")} && {_shooter in [objNull, driver _vehicle, _vehicle]} && {_projectile == ""} && {_selection == ""}) then { - if (GVAR(enableVehicleCrashes)) then { + //if (GVAR(enableVehicleCrashes)) then { + // TODO implement properly _effectiveSelectionName = _this select 1; //pull random selection from HDC - }; + //}; }; -if ((_minLethalDamage <= _newDamage) && {[_unit, [_effectiveSelectionName] call FUNC(selectionNameToNumber), _newDamage] call FUNC(determineIfFatal)}) then { +// ensure we are not killing the unit in the handleDamage event +// TODO based on unit state, see if we are going ot kill the unit here. This will allow us to trigger ragdoll +_damageReturn = _damageReturn min 0.89; + +/*if ((_minLethalDamage <= _newDamage) && {[_unit, [_effectiveSelectionName] call EFUNC(medical,selectionNameToNumber), _newDamage] call FUNC(determineIfFatal)}) then { if ((_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)])) exitwith { _damageReturn = 0.9; }; @@ -97,46 +102,19 @@ if ((_minLethalDamage <= _newDamage) && {[_unit, [_effectiveSelectionName] call _damageReturn = _damageReturn min 0.89; }; } else { - _damageReturn = _damageReturn min 0.89; -}; +};*/ // Start the loop that tracks the unit vitals -[_unit] call FUNC(addVitalLoop); - -if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitWith { - private _delayedUnconsicous = false; - if (_vehicle != _unit and {damage _vehicle >= 1}) then { - [_unit] call EFUNC(common,unloadPerson); - _delayedUnconsicous = true; - }; - - if (_damageReturn >= 0.9 && {_selection in ["", "head", "body"]}) exitWith { - if (_unit getVariable ["ACE_isUnconscious", false]) exitwith { - [_unit, false, true] call FUNC(setDead); - 0.89; - }; - if (_delayedUnconsicous) then { - [{ - [_this select 0, true] call FUNC(setUnconscious); - }, [_unit], 0.7] call CBA_fnc_waitAndExecute; - } else { - [{ - [_this select 0, true] call FUNC(setUnconscious); - }, [_unit]] call CBA_fnc_execNextFrame; - }; - 0.89; - }; - _damageReturn min 0.89; -}; - +[_unit] call EFUNC(medical,addStateHandler); +/* if (((_unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]) > 0) && {_damageReturn >= 0.9} && {_selection in ["", "head", "body"]}) exitWith { + + // TODO execute this on revive entry if (vehicle _unit != _unit and {damage (vehicle _unit) >= 1}) then { [_unit] call EFUNC(common,unloadPerson); }; - [_unit, false, true] call FUNC(setDead); 0.89; -}; - +};*/ TRACE_3("ACE_DEBUG: HandleDamage damage return",_selection,_damageReturn,_unit); _damageReturn diff --git a/addons/medical_damage/functions/fnc_install.sqf b/addons/medical_damage/functions/fnc_install.sqf new file mode 100644 index 0000000000..ba2f359f5d --- /dev/null +++ b/addons/medical_damage/functions/fnc_install.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +params ["_unit"]; + +_unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}]; diff --git a/addons/medical/functions/fnc_handleDamage_internalInjuries.sqf b/addons/medical_damage/functions/fnc_internalInjuriesHandler.sqf similarity index 87% rename from addons/medical/functions/fnc_handleDamage_internalInjuries.sqf rename to addons/medical_damage/functions/fnc_internalInjuriesHandler.sqf index d8d9be1506..4f22ab349e 100644 --- a/addons/medical/functions/fnc_handleDamage_internalInjuries.sqf +++ b/addons/medical_damage/functions/fnc_internalInjuriesHandler.sqf @@ -19,6 +19,6 @@ private "_bodyPartn"; params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage"]; -_bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); +_bodyPartn = [_selectionName] call EFUNC(medical,selectionNameToNumber); // TODO implement internal injuries diff --git a/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf b/addons/medical_damage/functions/fnc_setDamage.sqf similarity index 90% rename from addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf rename to addons/medical_damage/functions/fnc_setDamage.sqf index b18604f133..39536ee3cf 100644 --- a/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf +++ b/addons/medical_damage/functions/fnc_setDamage.sqf @@ -18,7 +18,7 @@ params ["_unit"]; if (!local _unit) exitWith {}; // ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"] -private _bodyStatus = _unit getVariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; +private _bodyStatus = _unit getVariable [QEGVAR(medical,bodyPartStatus), [0,0,0,0,0,0]]; _bodyStatus params ["_headDamage", "_torsoDamage", "_handsDamageR", "_handsDamageL", "_legsDamageR", "_legsDamageL"]; diff --git a/addons/medical/functions/fnc_translateSelections.sqf b/addons/medical_damage/functions/fnc_translateSelections.sqf similarity index 94% rename from addons/medical/functions/fnc_translateSelections.sqf rename to addons/medical_damage/functions/fnc_translateSelections.sqf index e6624507d1..d0069cc2d1 100644 --- a/addons/medical/functions/fnc_translateSelections.sqf +++ b/addons/medical_damage/functions/fnc_translateSelections.sqf @@ -41,7 +41,7 @@ if (_selection == "") exitWith {""}; //Get Selection from standard selection ["head","body","hand_l","hand_r","leg_l","leg_r"] if (_hitPointIndex isEqualTo true) exitWith { - private _returnHitPoint = GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selection); + private _returnHitPoint = EGVAR(medical,HITPOINTS) select (EGVAR(medical,SELECTIONS) find _selection); //If the selection is a valid hitpoint just return it: if (!isNil {_unit getHitPointDamage _returnHitPoint}) exitWith { _returnHitPoint; @@ -78,7 +78,7 @@ if (_selection in L_LEG_SELECTIONS) exitWith {"leg_l"}; if (_selection in R_LEG_SELECTIONS) exitWith {"leg_r"};*/ //Backup method to detect weird selections/hitpoints -if ((_selection == "?") || {!(_selection in GVAR(SELECTIONS))}) exitWith { +if ((_selection == "?") || {!(_selection in EGVAR(medical,SELECTIONS))}) exitWith { if (_hitPointIndex < 0) exitWith {_selection}; private _hitPoint = toLower configName ((configProperties [(configFile >> "CfgVehicles" >> (typeOf _unit) >> "HitPoints")]) select _hitPointIndex); TRACE_4("Weird sel/hit", _unit, _selection, _hitPointIndex, _hitPoint); diff --git a/addons/medical/functions/fnc_handleDamage_wounds.sqf b/addons/medical_damage/functions/fnc_woundsHandler.sqf similarity index 67% rename from addons/medical/functions/fnc_handleDamage_wounds.sqf rename to addons/medical_damage/functions/fnc_woundsHandler.sqf index 31a3e360a5..46f1497c6e 100644 --- a/addons/medical/functions/fnc_handleDamage_wounds.sqf +++ b/addons/medical_damage/functions/fnc_woundsHandler.sqf @@ -18,13 +18,14 @@ #include "script_component.hpp" params ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage"]; -TRACE_6("ACE_DEBUG: HandleDamage Called",_unit, _selectionName, _damage, _shooter, _typeOfProjectile,_typeOfDamage); +TRACE_6("ACE_DEBUG: woundshandler",_unit, _selectionName, _damage, _shooter, _typeOfProjectile,_typeOfDamage); // Administration for open wounds and ids -private _openWounds = _unit getVariable[QGVAR(openWounds), []]; -private _woundID = _unit getVariable[QGVAR(lastUniqueWoundID), 1]; +private _openWounds = _unit getVariable[QEGVAR(medical,openWounds), []]; +private _woundID = _unit getVariable[QEGVAR(medical,lastUniqueWoundID), 1]; private _extensionOutput = "ace_medical" callExtension format ["HandleDamageWounds,%1,%2,%3,%4", _selectionName, _damage, _typeOfDamage, _woundID]; +diag_log format["Extension _extensionOutput: %1", _extensionOutput]; private _painToAdd = 0; private _woundsCreated = []; @@ -51,13 +52,15 @@ call compile _extensionOutput; }; } forEach _woundsCreated; -_unit setVariable [QGVAR(openWounds), _openWounds, true]; +_unit setVariable [QEGVAR(medical,openWounds), _openWounds, true]; // Only update if new wounds have been created if (count _woundsCreated > 0) then { - _unit setVariable [QGVAR(lastUniqueWoundID), _woundID, true]; + _unit setVariable [QEGVAR(medical,lastUniqueWoundID), _woundID, true]; }; -private _painLevel = _unit getVariable [QGVAR(pain), 0]; -_unit setVariable [QGVAR(pain), _painLevel + _painToAdd]; -TRACE_6("ACE_DEBUG: HandleDamage_WoundsOLD",_unit, _painLevel, _painToAdd, _unit getVariable QGVAR(pain), _unit getVariable QGVAR(openWounds),_woundsCreated); +// TODO use medical add pain function instead +private _painLevel = _unit getVariable [QEGVAR(medical,pain), 0]; +_unit setVariable [QEGVAR(medical,pain), _painLevel + _painToAdd]; + +TRACE_6("ACE_DEBUG: woundsHandler",_unit, _painLevel, _painToAdd, _unit getVariable QEGVAR(medical,pain), _unit getVariable QEGVAR(medical,openWounds),_woundsCreated); diff --git a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf b/addons/medical_damage/functions/fnc_woundsHandlerSqf.sqf similarity index 98% rename from addons/medical/functions/fnc_handleDamage_woundsOld.sqf rename to addons/medical_damage/functions/fnc_woundsHandlerSqf.sqf index c6ccd1c2b5..4e8d6865c6 100644 --- a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf +++ b/addons/medical_damage/functions/fnc_woundsHandlerSqf.sqf @@ -22,7 +22,7 @@ params ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamag TRACE_6("ACE_DEBUG: HandleDamage_WoundsOLD Called",_unit, _selectionName, _damage, _shooter, _typeOfProjectile,_typeOfDamage); // Convert the selectionName to a number and ensure it is a valid selection. -_bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); +_bodyPartn = [_selectionName] call EFUNC(medical,selectionNameToNumber); if (_bodyPartn < 0) exitWith {}; // Get the injury type information. Format: [typeDamage thresholds, selectionSpecific, woundTypes] diff --git a/addons/medical_damage/functions/script_component.hpp b/addons/medical_damage/functions/script_component.hpp new file mode 100644 index 0000000000..66d3d51283 --- /dev/null +++ b/addons/medical_damage/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\medical_damage\script_component.hpp" \ No newline at end of file diff --git a/addons/medical_damage/script_component.hpp b/addons/medical_damage/script_component.hpp new file mode 100644 index 0000000000..fed195ddfa --- /dev/null +++ b/addons/medical_damage/script_component.hpp @@ -0,0 +1,18 @@ +#define COMPONENT medical_damage +#define COMPONENT_BEAUTIFIED Medical Damage +#include "\z\ace\addons\main\script_mod.hpp" + +#define DEBUG_MODE_FULL +#define DISABLE_COMPILE_CACHE +#define CBA_DEBUG_SYNCHRONOUS +#define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_MEDICAL_DAMAGE + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_MEDICAL_DAMAGE + #define DEBUG_SETTINGS DEBUG_SETTINGS_MEDICAL_DAMAGE +#endif + +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/addons/medical_menu/ACE_Settings.hpp b/addons/medical_menu/ACE_Settings.hpp deleted file mode 100644 index d74a6bdfe0..0000000000 --- a/addons/medical_menu/ACE_Settings.hpp +++ /dev/null @@ -1,33 +0,0 @@ -class ACE_Settings { - class GVAR(allow) { - displayName = CSTRING(allow); - description = CSTRING(allow_Descr); - value = 1; - typeName = "SCALAR"; - values[] = {ECSTRING(common,Disabled), ECSTRING(common,Enabled), ECSTRING(common,VehiclesOnly)}; - category = ECSTRING(medical,Category_Medical); - }; - class GVAR(useMenu) { - displayName = CSTRING(useMenu); - description = CSTRING(useMenu_Descr); - value = 0; - typeName = "SCALAR"; - values[] = {ECSTRING(common,Disabled), ECSTRING(common,Enabled), ECSTRING(common,VehiclesOnly)}; - isClientSettable = 1; - category = ECSTRING(medical,Category_Medical); - }; - class GVAR(openAfterTreatment) { - displayName = CSTRING(openAfterTreatment); - description = CSTRING(openAfterTreatment_Descr); - typeName = "BOOL"; - value = 1; - isClientSettable = 1; - category = ECSTRING(medical,Category_Medical); - }; - class GVAR(maxRange) { - //for ref: 3d interaction (MEDICAL_ACTION_DISTANCE) is 1.75 - value = 3; - typeName = "SCALAR"; - category = ECSTRING(medical,Category_Medical); - }; -}; diff --git a/addons/medical_menu/CfgEventHandlers.hpp b/addons/medical_menu/CfgEventHandlers.hpp index da45b1d12e..93e3311cf2 100644 --- a/addons/medical_menu/CfgEventHandlers.hpp +++ b/addons/medical_menu/CfgEventHandlers.hpp @@ -1,4 +1,3 @@ - class Extended_PreStart_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_preStart)); @@ -10,9 +9,3 @@ class Extended_PreInit_EventHandlers { init = QUOTE(call COMPILE_FILE(XEH_preInit)); }; }; - -class Extended_PostInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_postInit)); - }; -}; diff --git a/addons/medical_menu/CfgVehicles.hpp b/addons/medical_menu/CfgVehicles.hpp deleted file mode 100644 index 1918511566..0000000000 --- a/addons/medical_menu/CfgVehicles.hpp +++ /dev/null @@ -1,71 +0,0 @@ - -class CfgVehicles { - - class ACE_Module; - class ACE_moduleMedicalMenuSettings: ACE_Module { - scope = 2; - displayName = CSTRING(module_DisplayName); - icon = QPATHTOEF(medical,UI\Icon_Module_Medical_ca.paa); - category = "ACE_medical"; - function = QUOTE(DFUNC(module)); - functionPriority = 1; - isGlobal = 0; - isSingular = 1; - isTriggerActivated = 0; - author = ECSTRING(common,ACETeam); - class Arguments { - class allow { - displayName = CSTRING(allow); - description = CSTRING(allow_Descr); - typeName = "NUMBER"; - class values { - class disable { - name = ECSTRING(common,Disabled); - value = 0; - }; - class enable { - name = ECSTRING(common,Enabled); - value = 1; - default = 1; - }; - class VehiclesOnly { - name = ECSTRING(common,VehiclesOnly); - value = 2; - }; - }; - }; - }; - class ModuleDescription { - description = CSTRING(module_Desc); - sync[] = {}; - }; - }; - - class Man; - class CAManBase: Man { - class ACE_SelfActions { - class Medical_Menu { - displayName = CSTRING(OpenMenu); - runOnHover = 0; - exceptions[] = {"isNotInside"}; - condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu)); - statement = QUOTE([_target] call DFUNC(openMenu)); - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - }; - }; - - class ACE_Actions { - // Create a consolidates medical menu for treatment while boarded - class ACE_MainActions { - class Medical_Menu { - displayName = CSTRING(OpenMenu); - runOnHover = 0; - exceptions[] = {"isNotInside"}; - condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu)); - statement = QUOTE([_target] call DFUNC(openMenu)); - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - }; - }; - }; - }; -}; diff --git a/addons/medical_menu/README.md b/addons/medical_menu/README.md deleted file mode 100644 index 86ae2039ea..0000000000 --- a/addons/medical_menu/README.md +++ /dev/null @@ -1,11 +0,0 @@ -ace_medical_menu -=============== - -Provides the CSE medical menu for the advanced medical system. - - -## Maintainers - -The people responsible for merging changes to this component or answering potential questions. - -- [Glowbal](https://github.com/Glowbal) diff --git a/addons/medical_menu/XEH_PREP.hpp b/addons/medical_menu/XEH_PREP.hpp index 8a44bd2bdc..e69de29bb2 100644 --- a/addons/medical_menu/XEH_PREP.hpp +++ b/addons/medical_menu/XEH_PREP.hpp @@ -1,18 +0,0 @@ - -PREP(onMenuOpen); -PREP(onMenuClose); -PREP(openMenu); - -PREP(canOpenMenu); -PREP(updateIcons); -PREP(updateUIInfo); -PREP(handleUI_DisplayOptions); -PREP(handleUI_dropDownTriageCard); -PREP(getTreatmentOptions); -PREP(updateActivityLog); -PREP(updateQuickViewLog); -PREP(updateBodyImage); -PREP(updateInformationLists); -PREP(setTriageStatus); -PREP(collectActions); -PREP(module); diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf deleted file mode 100644 index b028a16e75..0000000000 --- a/addons/medical_menu/XEH_postInit.sqf +++ /dev/null @@ -1,37 +0,0 @@ -#include "script_component.hpp" - -if (!hasInterface) exitWith {}; - -GVAR(MenuPFHID) = -1; -GVAR(lastOpenedOn) = -1; -GVAR(pendingReopen) = false; - -["ace_treatmentSucceded", { - if (GVAR(openAfterTreatment) && {GVAR(pendingReopen)}) then { - GVAR(pendingReopen) = false; - [{ - [GVAR(INTERACTION_TARGET)] call FUNC(openMenu); - }, []] call CBA_fnc_execNextFrame; - }; -}] call CBA_fnc_addEventHandler; - -["ACE3 Common", QGVAR(displayMenuKeyPressed), localize LSTRING(DisplayMenuKey), -{ - private _target = cursorTarget; - if (!((_target isKindOf "CAManBase") && {[ACE_player, _target] call FUNC(canOpenMenu)})) then {_target = ACE_player}; - - // Conditions: canInteract - if !([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; - if !([ACE_player, _target] call FUNC(canOpenMenu)) exitWith {false}; - - // Statement - [_target] call FUNC(openMenu); - false -}, -{ - if (CBA_missionTime - GVAR(lastOpenedOn) > 0.5) exitWith { - [objNull] call FUNC(openMenu); - }; - false -}, -[35, [false, false, false]], false, 0] call CBA_fnc_addKeybind; diff --git a/addons/medical_menu/XEH_preInit.sqf b/addons/medical_menu/XEH_preInit.sqf index 009a9ed1a6..a7feade1c3 100644 --- a/addons/medical_menu/XEH_preInit.sqf +++ b/addons/medical_menu/XEH_preInit.sqf @@ -4,11 +4,4 @@ ADDON = false; #include "XEH_PREP.hpp" -GVAR(INTERACTION_TARGET) = objNull; -GVAR(actionsOther) = []; -GVAR(actionsSelf) = []; -GVAR(selectedBodyPart) = 0; - -call FUNC(collectActions); - ADDON = true; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index ff78ca384a..f4a40e862a 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -6,19 +6,12 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_medical_treatment"}; + requiredAddons[] = {"ace_medical", "ace_medical_ui", "ace_medical_treatment"}; author = ECSTRING(common,ACETeam); - authors[] = {"Glowbal"}; + authors[] = {""}; url = ECSTRING(main,URL); VERSION_CONFIG; }; }; #include "CfgEventHandlers.hpp" -#include "ui\menu.hpp" -#include "ACE_Settings.hpp" -#include "CfgVehicles.hpp" - -class ACE_newEvents { - Medical_onMenuOpen = "ace_medicalMenuOpened"; -}; diff --git a/addons/medical_menu/data/background_img.paa b/addons/medical_menu/data/background_img.paa deleted file mode 100644 index de59065e3b..0000000000 Binary files a/addons/medical_menu/data/background_img.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/advanced_treatment_small.paa b/addons/medical_menu/data/icons/advanced_treatment_small.paa deleted file mode 100644 index 8becb9d2df..0000000000 Binary files a/addons/medical_menu/data/icons/advanced_treatment_small.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/airway_management_small.paa b/addons/medical_menu/data/icons/airway_management_small.paa deleted file mode 100644 index ab4da47958..0000000000 Binary files a/addons/medical_menu/data/icons/airway_management_small.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/bandage_fracture_small.paa b/addons/medical_menu/data/icons/bandage_fracture_small.paa deleted file mode 100644 index a869f260ec..0000000000 Binary files a/addons/medical_menu/data/icons/bandage_fracture_small.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/examine_patient_small.paa b/addons/medical_menu/data/icons/examine_patient_small.paa deleted file mode 100644 index 2e9fc9831d..0000000000 Binary files a/addons/medical_menu/data/icons/examine_patient_small.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_advanced_treatment.paa b/addons/medical_menu/data/icons/icon_advanced_treatment.paa deleted file mode 100644 index d6bf6effd9..0000000000 Binary files a/addons/medical_menu/data/icons/icon_advanced_treatment.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_airway_management.paa b/addons/medical_menu/data/icons/icon_airway_management.paa deleted file mode 100644 index f444f5f385..0000000000 Binary files a/addons/medical_menu/data/icons/icon_airway_management.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_bandage_fracture.paa b/addons/medical_menu/data/icons/icon_bandage_fracture.paa deleted file mode 100644 index df8d1de571..0000000000 Binary files a/addons/medical_menu/data/icons/icon_bandage_fracture.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_bleeding.paa b/addons/medical_menu/data/icons/icon_bleeding.paa deleted file mode 100644 index d11c2ed496..0000000000 Binary files a/addons/medical_menu/data/icons/icon_bleeding.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_carry.paa b/addons/medical_menu/data/icons/icon_carry.paa deleted file mode 100644 index 7ebb830b03..0000000000 Binary files a/addons/medical_menu/data/icons/icon_carry.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_examine_patient.paa b/addons/medical_menu/data/icons/icon_examine_patient.paa deleted file mode 100644 index 12eb06c890..0000000000 Binary files a/addons/medical_menu/data/icons/icon_examine_patient.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_medication.paa b/addons/medical_menu/data/icons/icon_medication.paa deleted file mode 100644 index 98893ad863..0000000000 Binary files a/addons/medical_menu/data/icons/icon_medication.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_toggle_self.paa b/addons/medical_menu/data/icons/icon_toggle_self.paa deleted file mode 100644 index 3078eb5dd5..0000000000 Binary files a/addons/medical_menu/data/icons/icon_toggle_self.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_tourniquet.paa b/addons/medical_menu/data/icons/icon_tourniquet.paa deleted file mode 100644 index 8b34a7bfbb..0000000000 Binary files a/addons/medical_menu/data/icons/icon_tourniquet.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_tourniquet_small.paa b/addons/medical_menu/data/icons/icon_tourniquet_small.paa deleted file mode 100644 index a457e2c0d5..0000000000 Binary files a/addons/medical_menu/data/icons/icon_tourniquet_small.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/icon_triage_card.paa b/addons/medical_menu/data/icons/icon_triage_card.paa deleted file mode 100644 index 850ab0f4ce..0000000000 Binary files a/addons/medical_menu/data/icons/icon_triage_card.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/medication_small.paa b/addons/medical_menu/data/icons/medication_small.paa deleted file mode 100644 index b6acd670c8..0000000000 Binary files a/addons/medical_menu/data/icons/medication_small.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/toggle_self_small.paa b/addons/medical_menu/data/icons/toggle_self_small.paa deleted file mode 100644 index 73108e5a98..0000000000 Binary files a/addons/medical_menu/data/icons/toggle_self_small.paa and /dev/null differ diff --git a/addons/medical_menu/data/icons/triage_card_small.paa b/addons/medical_menu/data/icons/triage_card_small.paa deleted file mode 100644 index 92eb0f0d20..0000000000 Binary files a/addons/medical_menu/data/icons/triage_card_small.paa and /dev/null differ diff --git a/addons/medical_menu/data/ui_background.paa b/addons/medical_menu/data/ui_background.paa deleted file mode 100644 index f1c42c7d7d..0000000000 Binary files a/addons/medical_menu/data/ui_background.paa and /dev/null differ diff --git a/addons/medical_menu/functions/fnc_canOpenMenu.sqf b/addons/medical_menu/functions/fnc_canOpenMenu.sqf deleted file mode 100644 index 1ef7dccf5b..0000000000 --- a/addons/medical_menu/functions/fnc_canOpenMenu.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Author: Glowbal - * Check if ACE_player can Open the medical menu - * - * Arguments: - * 0: Caller - * 1: Target - * - * Return Value: - * Can open - * - * Example: - * [player, cursorTarget] call ace_medical_menu_fnc_canOpenMenu - * - * Public: No - */ -#include "script_component.hpp" - -params ["_caller", "_target"]; - -(alive _caller) -&& {!isNull _target} -&& {((_caller distance _target) < GVAR(maxRange)) || {(vehicle _caller) == (vehicle _target)}} //for now, ignore range when in same vehicle -&& {(GVAR(allow) == 1) || {(GVAR(allow) == 2) && {(vehicle _caller != _caller) || {vehicle _target != _target}}}} -&& {(GVAR(useMenu) == 1) || {(GVAR(useMenu) == 2) && {(vehicle _caller != _caller) || {vehicle _target != _target}}}} diff --git a/addons/medical_menu/functions/fnc_collectActions.sqf b/addons/medical_menu/functions/fnc_collectActions.sqf deleted file mode 100644 index af6742188e..0000000000 --- a/addons/medical_menu/functions/fnc_collectActions.sqf +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Author: Glowbal - * Collect treatment actions from medical config - * - * Arguments: - * None - * - * Return Value: - * None - * - * Example: - * [] call ace_medical_menu_fnc_collectActions - * - * Public: No - */ -#include "script_component.hpp" - -private _configBasic = (configFile >> "ACE_Medical_Actions" >> "Basic"); -private _configAdvanced = (configFile >> "ACE_Medical_Actions" >> "Advanced"); - -private _fnc_compileActionsLevel = { - params ["_config"]; - private _actions = []; - - { - if (isClass _x) then { - private _displayName = getText (_x >> "displayName"); - private _category = getText (_x >> "category"); - private _condition = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,canTreatCached)), configName _x]; - private _statement = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,treatment)), configName _x]; - _actions pushBack [_displayName, _category, compile _condition, compile _statement]; - }; - nil - } count ("true" configClasses _config); - - _actions; -}; - -GVAR(actionsBasic) = [_configBasic] call _fnc_compileActionsLevel; -GVAR(actionsAdvanced) = [_configAdvanced] call _fnc_compileActionsLevel; - -//Manually add the drag actions, if dragging exists. -if (["ace_dragging"] call EFUNC(common,isModLoaded)) then { - private _condition = { - (ACE_player != GVAR(INTERACTION_TARGET)) && {[ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,canDrag)} - }; - private _statement = { - GVAR(pendingReopen) = false; //No medical_treatmentSuccess event after drag, so don't want this true - [ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,startDrag); - }; - GVAR(actionsBasic) pushBack [localize ELSTRING(dragging,Drag), "drag", _condition, _statement]; - GVAR(actionsAdvanced) pushBack [localize ELSTRING(dragging,Drag), "drag", _condition, _statement]; - - private _condition = { - (ACE_player != GVAR(INTERACTION_TARGET)) && {[ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,canCarry)} - }; - private _statement = { - GVAR(pendingReopen) = false; //No medical_treatmentSuccess event after drag, so don't want this true - [ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,startCarry); - }; - GVAR(actionsBasic) pushBack [localize ELSTRING(dragging,Carry), "drag", _condition, _statement]; - GVAR(actionsAdvanced) pushBack [localize ELSTRING(dragging,Carry), "drag", _condition, _statement]; -}; diff --git a/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf b/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf deleted file mode 100644 index 6fed994671..0000000000 --- a/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Author: Glowbal - * Grab available treatment options for given category - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: Category name - * - * Return Value: - * Available actions - * - * Exmaple: - * [ACE_player, poor_dude, "some category"] call ace_medical_menu_fnc_getTreatmentOptions - * - * Public: No - */ -#include "script_component.hpp" - -params ["_player", "_target", "_name"]; - -if (!([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith {[]}; - -private _actions = if (EGVAR(medical,level) == 2) then { - GVAR(actionsAdvanced); -} else { - GVAR(actionsBasic); -}; - -private _collectedActions = []; -private _bodyPart = EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart); -{ - _x params ["", "_currentCategory", "_currentCondition"]; - if (_name == _currentCategory && {call _currentCondition}) then { - _collectedActions pushBack _x; - }; - nil -} count _actions; - -_collectedActions; diff --git a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf deleted file mode 100644 index 97e5c19519..0000000000 --- a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Author: Glowbal - * Display the available treatment options in category - * - * Arguments: - * 0: Category name - * - * Return Value: - * None - * - * Example: - * ["some category"] call ace_medical_menu_fnc_handleUI_DisplayOptions - * - * Public: No - */ -#include "script_component.hpp" - -#define START_IDC 20 -#define END_IDC 27 -#define AMOUNT_OF_ENTRIES (count _entries) - -if (!hasInterface) exitWith{}; - -private ["_entries", "_display", "_newTarget", "_ctrl", "_code"]; - -params ["_name"]; - -disableSerialization; - -_display = uiNamespace getVariable QGVAR(medicalMenu); -if (isNil "_display") exitWith {}; // no valid dialog present - -if (_name isEqualTo "toggle") exitWith { - _newTarget = ACE_player; - //If we are on the player, and only if our old target is still valid, switch to it: - if ((GVAR(INTERACTION_TARGET) == ACE_player) && - {[ACE_player, GVAR(INTERACTION_TARGET_PREVIOUS), ["isNotInside"]] call EFUNC(common,canInteractWith)} && - {[ACE_player, GVAR(INTERACTION_TARGET_PREVIOUS)] call FUNC(canOpenMenu)}) then { - _newTarget = GVAR(INTERACTION_TARGET_PREVIOUS); - }; - - GVAR(INTERACTION_TARGET_PREVIOUS) = GVAR(INTERACTION_TARGET); - - closeDialog 0; - [{ - [_this select 0] call FUNC(openMenu); - }, [_newTarget], 0.1] call CBA_fnc_waitAndExecute; -}; - -// Clean the dropdown options list from all actions -for [{_x = START_IDC}, {_x <= END_IDC}, {_x = _x + 1}] do { - _ctrl = (_display displayCtrl (_x)); - _ctrl ctrlSetText ""; - _ctrl ctrlShow false; - _ctrl ctrlSetEventHandler ["ButtonClick",""]; - _ctrl ctrlSetTooltip ""; - _ctrl ctrlCommit 0; -}; - -GVAR(LatestDisplayOptionMenu) = _name; - -// The triage card has no options available -lbClear 212; -if (_name isEqualTo "triage") exitWith { - - ctrlEnable [212, true]; - private ["_log", "_triageCardTexts", "_message"]; - _log = GVAR(INTERACTION_TARGET) getVariable [QEGVAR(medical,triageCard), []]; - _triageCardTexts = []; - { - _x params ["_item", "_amount", "_time"]; - _message = _item; - if (isClass(configFile >> "CfgWeapons" >> _item)) then { - _message = getText(configFile >> "CfgWeapons" >> _item >> "DisplayName"); - } else { - if (isLocalized _message) then { - _message = localize _message; - }; - }; - _triageCardTexts pushBack format["%1x - %2 (%3m)", _amount, _message, round((CBA_missionTime - _time) / 60)]; - nil; - } count _log; - - if (count _triageCardTexts == 0) exitWith { - lbAdd [212,(localize ELSTRING(medical,TriageCard_NoEntry))]; - }; - { - lbAdd [212,_x]; - nil; - }count _triageCardTexts; -}; - -ctrlEnable [212, false]; - -_entries = [ACE_player, GVAR(INTERACTION_TARGET), _name] call FUNC(getTreatmentOptions); - -{ - //player sidechat format["TRIGGERED: %1",_x]; - if (_forEachIndex > END_IDC) exitWith {}; - _ctrl = (_display displayCtrl (START_IDC + _forEachIndex)); - if (!(_forEachIndex > AMOUNT_OF_ENTRIES)) then { - _ctrl ctrlSetText (_x select 0); - _code = format ["ace_medical_menu_pendingReopen = true; call %1;", (_x select 3)]; - _ctrl ctrlSetEventHandler ["ButtonClick", _code]; - _ctrl ctrlSetTooltip (_x select 0); // TODO implement - _ctrl ctrlShow true; - } else { - _ctrl ctrlSetText ""; - _ctrl ctrlSetEventHandler ["ButtonClick", ""]; - }; - _ctrl ctrlCommit 0; -} forEach _entries; diff --git a/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf b/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf deleted file mode 100644 index 946ee2d0ef..0000000000 --- a/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Author: Glowbal - * Handle the triage card display - * - * Arguments: - * None - * - * Return Value: - * None - * - * Example: - * [] call ace_medical_menu_fnc_handleUI_dropDownTriageCard - * - * Public: No - */ -#include "script_component.hpp" - -disableSerialization; - -private _display = uiNamespace getVariable QGVAR(medicalMenu); -private _pos = [0, 0, 0, 0]; -private _currentPos = ctrlPosition (_display displayCtrl 2002); -_currentPos params ["_currentPosX", "_currentPosY"]; -if (_currentPosX == 0 && _currentPosY == 0) then { - _pos = ctrlPosition (_display displayCtrl 2001); -}; - -for "_idc" from 2002 to 2006 step 1 do { - _pos set [1, (_pos select 1) + (_pos select 3)]; - private _ctrl = _display displayCtrl _idc; - _ctrl ctrlSetPosition _pos; - _ctrl ctrlCommit 0; -}; diff --git a/addons/medical_menu/functions/fnc_module.sqf b/addons/medical_menu/functions/fnc_module.sqf deleted file mode 100644 index 666440e208..0000000000 --- a/addons/medical_menu/functions/fnc_module.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Author: Glowbal - * Module for adjusting the medical menu settings - * - * Arguments: - * 0: The module logic - * 1: units - * 2: activated - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_logic", "", "_activated"]; - -if !(_activated) exitWith {}; - -[_logic, QGVAR(allow), "allow"] call EFUNC(common,readSettingFromModule); diff --git a/addons/medical_menu/functions/fnc_onMenuClose.sqf b/addons/medical_menu/functions/fnc_onMenuClose.sqf deleted file mode 100644 index 656336eb4e..0000000000 --- a/addons/medical_menu/functions/fnc_onMenuClose.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Author: joko // Jonas - * Handle medical menu closed - * - * Arguments: - * None - * - * Return Value: - * None - * - * Example: - * call ace_medical_menu_fnc_onMenuClosed - * - * Public: No - */ -#include "script_component.hpp" - -if (EGVAR(interact_menu,menuBackground)==1) then {[QGVAR(id), false] call EFUNC(common,blurScreen);}; -if (EGVAR(interact_menu,menuBackground)==2) then {(uiNamespace getVariable [QEGVAR(interact_menu,menuBackground), displayNull]) closeDisplay 0;}; - -[GVAR(MenuPFHID)] call CBA_fnc_removePerFrameHandler; -GVAR(MenuPFHID) = -1; diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf deleted file mode 100644 index 58cb9ff74e..0000000000 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Author: Glowbal - * Handle medical menu opened - * - * Arguments: - * 0: Medical Menu display - * - * Return Value: - * None - * - * Example: - * [medical_menu] call ace_medical_menu_fnc_onMenuOpen - * - * Public: No - */ -#include "script_component.hpp" -#define MAX_DISTANCE 10 - -params ["_display"]; - -if (isNil "_display") exitWith {}; - -if (EGVAR(interact_menu,menuBackground)==1) then {[QGVAR(id), true] call EFUNC(common,blurScreen);}; -if (EGVAR(interact_menu,menuBackground)==2) then {0 cutRsc[QEGVAR(interact_menu,menuBackground), "PLAIN", 1, false];}; - -if (isNil QGVAR(LatestDisplayOptionMenu)) then { - GVAR(LatestDisplayOptionMenu) = "triage"; -} else { - if (GVAR(LatestDisplayOptionMenu) == "toggle") then { - GVAR(LatestDisplayOptionMenu) = "triage"; - GVAR(INTERACTION_TARGET) = GVAR(INTERACTION_TARGET_PREVIOUS); - }; -}; - -private _target = GVAR(INTERACTION_TARGET); -if (isNil QGVAR(INTERACTION_TARGET_PREVIOUS)) then { - GVAR(INTERACTION_TARGET_PREVIOUS) = _target; -}; -[GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); - -disableSerialization; - -[_target, _display] call FUNC(updateUIInfo); - -(_display displayCtrl 11) ctrlSetTooltip localize LSTRING(VIEW_TRIAGE_CARD); -(_display displayCtrl 12) ctrlSetTooltip localize LSTRING(EXAMINE_PATIENT); -(_display displayCtrl 13) ctrlSetTooltip localize LSTRING(BANDAGE_FRACTURES); -(_display displayCtrl 14) ctrlSetTooltip localize LSTRING(MEDICATION); -(_display displayCtrl 15) ctrlSetTooltip localize LSTRING(AIRWAY_MANAGEMENT); -(_display displayCtrl 16) ctrlSetTooltip localize LSTRING(ADVANCED_TREATMENT); -(_display displayCtrl 17) ctrlSetTooltip localize LSTRING(DRAG_CARRY); -(_display displayCtrl 18) ctrlSetTooltip localize LSTRING(TOGGLE_SELF); - -(_display displayCtrl 301) ctrlSetTooltip localize LSTRING(SELECT_HEAD); -(_display displayCtrl 302) ctrlSetTooltip localize LSTRING(SELECT_TORSO); -(_display displayCtrl 303) ctrlSetTooltip localize LSTRING(SELECT_ARM_R); -(_display displayCtrl 304) ctrlSetTooltip localize LSTRING(SELECT_ARM_L); -(_display displayCtrl 305) ctrlSetTooltip localize LSTRING(SELECT_LEG_R); -(_display displayCtrl 306) ctrlSetTooltip localize LSTRING(SELECT_LEG_L); -(_display displayCtrl 2001) ctrlSetTooltip localize LSTRING(SELECT_TRIAGE_STATUS); - -(_display displayCtrl 1) ctrlSetText format ["%1", [_target] call EFUNC(common,getName)]; -setMousePosition [0.4, 0.4]; - -if (GVAR(MenuPFHID) != -1) exitWith {ERROR("PFID already running");}; - -GVAR(MenuPFHID) = [{ - - (_this select 0) params ["_display"]; - if (isNull GVAR(INTERACTION_TARGET)) then { - GVAR(INTERACTION_TARGET) = ACE_player; - }; - [GVAR(INTERACTION_TARGET), _display] call FUNC(updateUIInfo); - [GVAR(INTERACTION_TARGET)] call FUNC(updateIcons); - [GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); - - //Check that it's valid to stay open: - if !(([ACE_player, GVAR(INTERACTION_TARGET), ["isNotInside"]] call EFUNC(common,canInteractWith)) && {[ACE_player, GVAR(INTERACTION_TARGET)] call FUNC(canOpenMenu)}) then { - closeDialog 314412; - //If we failed because of distance check, show UI message: - if ((ACE_player distance GVAR(INTERACTION_TARGET)) > GVAR(maxRange)) then { - [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 2] call EFUNC(common,displayTextStructured); - }; - }; - -}, 0, [_display]] call CBA_fnc_addPerFrameHandler; - -["ace_medicalMenuOpened", [ACE_player, _target]] call CBA_fnc_localEvent; diff --git a/addons/medical_menu/functions/fnc_openMenu.sqf b/addons/medical_menu/functions/fnc_openMenu.sqf deleted file mode 100644 index e0de46dba8..0000000000 --- a/addons/medical_menu/functions/fnc_openMenu.sqf +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Author: Glowbal - * Open the medical menu for target - * - * Arguments: - * 0: Target - * - * Return Value: - * If action was taken - * - * Example: - * [some_player] call ace_medical_menu_fnc_openMenu - * - * Public: No - */ -#include "script_component.hpp" - -params ["_interactionTarget"]; - -if (dialog || {isNull _interactionTarget}) exitWith { - disableSerialization; - - private _display = uiNamespace getVariable QGVAR(medicalMenu); - if (!isNil "_display") then { - closeDialog 314412; - }; -}; - -GVAR(INTERACTION_TARGET) = _interactionTarget; - -createDialog QGVAR(medicalMenu); -GVAR(lastOpenedOn) = CBA_missionTime; - -true diff --git a/addons/medical_menu/functions/fnc_setTriageStatus.sqf b/addons/medical_menu/functions/fnc_setTriageStatus.sqf deleted file mode 100644 index 8a85eeb950..0000000000 --- a/addons/medical_menu/functions/fnc_setTriageStatus.sqf +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Author: Glowbal - * Set the triage status of object - * - * Arguments: - * 0: Target - * 1: Status - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -params ["_target", "_status"]; - -_target setVariable [QEGVAR(medical,triageLevel), _status, true]; diff --git a/addons/medical_menu/functions/fnc_updateActivityLog.sqf b/addons/medical_menu/functions/fnc_updateActivityLog.sqf deleted file mode 100644 index 7406e25f33..0000000000 --- a/addons/medical_menu/functions/fnc_updateActivityLog.sqf +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Author: Glowbal - * Update the activity log - * - * Arguments: - * 0: display - * 1: log collection - * - * Return Value: - * None - * - * Example: - * [some_display, log] call ace_medical_menu_fnc_updateActivityLog - * - * Public: No - */ -#include "script_component.hpp" - -params ["_display", "_logs"]; - -private _logCtrl = _display displayCtrl 214; -lbClear _logCtrl; - -{ - _x params ["_message", "_moment", "", "_arguments"]; - - if (isLocalized _message) then { - _message = localize _message; - }; - - { - if (_x isEqualType "" && {isLocalized _x}) then { - _arguments set [_foreachIndex, localize _x]; - }; - } forEach _arguments; - - _message = format ([_message] + _arguments); - _logCtrl lbAdd format ["%1 %2", _moment, _message]; - nil -} count _logs; diff --git a/addons/medical_menu/functions/fnc_updateBodyImage.sqf b/addons/medical_menu/functions/fnc_updateBodyImage.sqf deleted file mode 100644 index 1d83b54372..0000000000 --- a/addons/medical_menu/functions/fnc_updateBodyImage.sqf +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Author: Glowbal - * Update the body image on the menu - * - * Arguments: - * 0: selection bloodloss - * 1: damaged (array of bools) - * 2: display - * - * Return Value: - * None - * - * Example: - * [0.3, some_display] call ace_medical_menu_fnc_updateBodyImage - * - * Public: No - */ -#include "script_component.hpp" - -params ["_selectionBloodLoss", "_damaged", "_display"]; - -// Handle the body image coloring -private _availableSelections = [50, 51, 52, 53, 54, 55]; -{ - private _red = 1; - private _green = 1; - private _blue = 1; - - if (_x > 0) then { - if (_damaged select _forEachIndex) then { - _green = (0.9 - _x) max 0; - _blue = _green; - } else { - _green = (0.9 - _x) max 0; - _red = _green; - //_blue = _green; - }; - }; - - (_display displayCtrl (_availableSelections select _forEachIndex)) ctrlSetTextColor [_red, _green, _blue, 1.0]; -} forEach _selectionBloodLoss; diff --git a/addons/medical_menu/functions/fnc_updateIcons.sqf b/addons/medical_menu/functions/fnc_updateIcons.sqf deleted file mode 100644 index 37508bd2b0..0000000000 --- a/addons/medical_menu/functions/fnc_updateIcons.sqf +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Author: Glowbal - * Update the category icons - * - * Arguments: - * None - * - * Return Value: - * None - * - * Example: - * [] call ace_medical_menu_fnc_updateIcons - * - * Public: No - */ -#include "script_component.hpp" - -#define START_IDC 111 -#define END_IDC 118 - -disableSerialization; - -private _display = uiNamespace getVariable QGVAR(medicalMenu); -private _options = ["triage" , "examine", "bandage", "medication", "airway", "advanced", "drag", "toggle"]; - -for "_idc" from START_IDC to END_IDC step 1 do { - private _amount = [ACE_player, GVAR(INTERACTION_TARGET), _options select (_idc - START_IDC)] call FUNC(getTreatmentOptions); - if ((count _amount) > 0 || _idc == START_IDC || _idc == END_IDC) then { - (_display displayCtrl _idc) ctrlSettextColor [1, 1, 1, 1]; - } else { - (_display displayCtrl _idc) ctrlSettextColor [0.4, 0.4, 0.4, 1]; - }; -}; diff --git a/addons/medical_menu/functions/fnc_updateInformationLists.sqf b/addons/medical_menu/functions/fnc_updateInformationLists.sqf deleted file mode 100644 index 28818465bc..0000000000 --- a/addons/medical_menu/functions/fnc_updateInformationLists.sqf +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Author: Glowbal - * Update the treatment information list - * - * Arguments: - * 0: display - * 1: message collection - * 2: injury collection - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -params ["_display", "_genericMessages", "_allInjuryTexts"]; - -private _lbCtrl = _display displayCtrl 213; -lbClear _lbCtrl; -{ - _x params ["_add", "_color"]; - _lbCtrl lbAdd _add; - _lbCtrl lbSetColor [_forEachIndex, _color]; -} forEach _genericMessages; - -private _amountOfGeneric = count _genericMessages; -{ - _x params ["_add", "_color"]; - _lbCtrl lbAdd _add; - _lbCtrl lbSetColor [_forEachIndex + _amountOfGeneric, _color]; -} forEach _allInjuryTexts; - -if (_allInjuryTexts isEqualTo []) then { - _lbCtrl lbAdd localize ELSTRING(medical,NoInjuriesBodypart); -}; diff --git a/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf b/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf deleted file mode 100644 index 836ebafca2..0000000000 --- a/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Author: Glowbal - * Update the quick view log - * - * Arguments: - * 0: display - * 1: log collection - * - * Return Value: - * None - * - * Example: - * [some_display, log] call ace_medical_menu_fnc_updateQuickViewLog - * - * Public: No - */ -#include "script_component.hpp" - -params ["_display", "_logs"]; - -private _logCtrl = _display displayCtrl 215; -lbClear _logCtrl; - -{ - _x params ["_message", "_moment", "", "_arguments"]; - - { - if (_x isEqualType "" && {isLocalized _x}) then { - _arguments set [_foreachIndex, localize _x]; - }; - } forEach _arguments; - - _message = format ([([_message, localize _message] select (isLocalized _message))] + _arguments); - _logCtrl lbAdd format ["%1 %2", _moment, _message]; - nil -} count _logs; diff --git a/addons/medical_menu/functions/fnc_updateUIInfo.sqf b/addons/medical_menu/functions/fnc_updateUIInfo.sqf deleted file mode 100644 index a956cdde69..0000000000 --- a/addons/medical_menu/functions/fnc_updateUIInfo.sqf +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Author: Glowbal - * Update all UI information in the medical menu - * - * Arguments: - * 0: target - * 1: display - * - * Return Value: - * None - * - * Example: - * [some_player, some_display] call ace_medical_menu_fnc_updateUIInfo - * - * Public: No - */ -#include "script_component.hpp" - -params ["_target", "_display"]; - -private["_allInjuryTexts", "_bandagedwounds", "_damaged", "_genericMessages", "_logs", "_openWounds", "_part", "_partText", "_pointDamage", "_selectionBloodLoss", "_selectionN", "_severity", "_totalIvVolume", "_triageStatus"]; - -if (isNil "_display" || {isNull _display}) exitWith {ERROR("No display");}; - -_selectionN = GVAR(selectedBodyPart); -if (_selectionN < 0 || {_selectionN > 5}) exitWith {}; - -_genericMessages = []; -_partText = [ELSTRING(medical,Head), ELSTRING(medical,Torso), ELSTRING(medical,LeftArm) ,ELSTRING(medical,RightArm) ,ELSTRING(medical,LeftLeg), ELSTRING(medical,RightLeg)] select _selectionN; -_genericMessages pushBack [localize _partText, [1, 1, 1, 1]]; - -if (_target getVariable [QEGVAR(medical,isBleeding), false]) then { - _genericMessages pushBack [localize ELSTRING(medical,Status_Bleeding), [1, 0.1, 0.1, 1]]; -}; - -if (_target getVariable [QEGVAR(medical,hasLostBlood), 0] > 1) then { - _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood), [1, 0.1, 0.1, 1]]; -}; - -if (((_target getVariable [QEGVAR(medical,tourniquets), [0, 0, 0, 0, 0, 0]]) select _selectionN) > 0) then { - _genericMessages pushBack [localize ELSTRING(medical,Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; -}; - -if (_target getVariable [QEGVAR(medical,hasPain), false]) then { - _genericMessages pushBack [localize ELSTRING(medical,Status_Pain), [1, 1, 1, 1]]; -}; - -_totalIvVolume = 0; -{ - private "_value"; - _value = _target getVariable _x; - if (!isNil "_value") then { - _totalIvVolume = _totalIvVolume + (_target getVariable [_x, 0]); - }; -} count EGVAR(medical,IVBags); - -if (_totalIvVolume >= 1) then { - _genericMessages pushBack [format [localize ELSTRING(medical,receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; -}; - -_damaged = [false, false, false, false, false, false]; -_selectionBloodLoss = [0, 0, 0, 0, 0, 0]; - -_allInjuryTexts = []; -if ((EGVAR(medical,level) >= 2) && {([_target] call EFUNC(medical,hasMedicalEnabled))}) then { - _openWounds = _target getVariable [QEGVAR(medical,openWounds), []]; - private "_amountOf"; - { - _amountOf = _x select 3; - // Find how much this bodypart is bleeding - if (_amountOf > 0) then { - _damaged set [_x select 2, true]; - _selectionBloodLoss set [_x select 2, (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; - - if (_selectionN == (_x select 2)) then { - // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] - if (_amountOf >= 1) then { - // TODO localization - _allInjuryTexts pushBack [format["%2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, ceil _amountOf], [1,1,1,1]]; - } else { - // TODO localization - _allInjuryTexts pushBack [format["Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [1,1,1,1]]; - }; - }; - }; - } forEach _openWounds; - - _bandagedwounds = _target getVariable [QEGVAR(medical,bandagedWounds), []]; - { - _amountOf = _x select 3; - // Find how much this bodypart is bleeding - if !(_damaged select (_x select 2)) then { - _selectionBloodLoss set [_x select 2, (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; - }; - if (_selectionN == (_x select 2)) then { - // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] - if (_amountOf > 0) then { - if (_amountOf >= 1) then { - // TODO localization - _allInjuryTexts pushBack [format ["[B] %2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, ceil _amountOf], [0.88,0.7,0.65,1]]; - } else { - // TODO localization - _allInjuryTexts pushBack [format ["[B] Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [0.88,0.7,0.65,1]]; - }; - }; - }; - } forEach _bandagedwounds; -} else { - - // Add all bleeding from wounds on selection - _openWounds = _target getVariable [QEGVAR(medical,openWounds), []]; - private "_amountOf"; - { - _amountOf = _x select 3; - // Find how much this bodypart is bleeding - if (_amountOf > 0) then { - _damaged set [_x select 2, true]; - _selectionBloodLoss set [_x select 2, (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; - }; - } forEach _openWounds; - - _bandagedwounds = _target getVariable [QEGVAR(medical,bandagedWounds), []]; - { - _amountOf = _x select 3; - // Find how much this bodypart is bleeding - if !(_damaged select (_x select 2)) then { - _selectionBloodLoss set [_x select 2, (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; - }; - } forEach _bandagedwounds; - - private _bloodLossOnSelection = _selectionBloodLoss select _selectionN; - if (_bloodLossOnSelection > 0) then { - private _severity = switch (true) do { - case (_bloodLossOnSelection > 0.5): {localize ELSTRING(medical,HeavilyWounded)}; - case (_bloodLossOnSelection > 0.1): {localize ELSTRING(medical,LightlyWounded)}; - default {localize ELSTRING(medical,VeryLightlyWounded)}; - }; - private _part = localize ([ - ELSTRING(medical,Head), - ELSTRING(medical,Torso), - ELSTRING(medical,LeftArm), - ELSTRING(medical,RightArm), - ELSTRING(medical,LeftLeg), - ELSTRING(medical,RightLeg) - ] select _selectionN); - _allInjuryTexts pushBack [format ["%1 %2", _severity, toLower _part], [1,1,1,1]]; - }; -}; - -[_selectionBloodLoss, _damaged, _display] call FUNC(updateBodyImage); -[_display, _genericMessages, _allInjuryTexts] call FUNC(updateInformationLists); - -[_display, _target getVariable [QEGVAR(medical,logFile_activity_view), []]] call FUNC(updateActivityLog); -[_display, _target getVariable [QEGVAR(medical,logFile_quick_view), []]] call FUNC(updateQuickViewLog); - -private _triageStatus = [_target] call EFUNC(medical,getTriageStatus); -(_display displayCtrl 2000) ctrlSetText (_triageStatus select 0); -(_display displayCtrl 2000) ctrlSetBackgroundColor (_triageStatus select 2); diff --git a/addons/medical_menu/functions/script_component.hpp b/addons/medical_menu/functions/script_component.hpp index 8c2e419166..1c62a0077c 100644 --- a/addons/medical_menu/functions/script_component.hpp +++ b/addons/medical_menu/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\medical_menu\script_component.hpp" +#include "\z\ace\addons\medical_menu\script_component.hpp" \ No newline at end of file diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml deleted file mode 100644 index a5b75c00e2..0000000000 --- a/addons/medical_menu/stringtable.xml +++ /dev/null @@ -1,610 +0,0 @@ - - - - - Medical Menu - Sanitätsmenü - Menu medyczne - Menu médico - Медицинское меню - Menú médico - Zdravotnikcá nabídka - Menù Medico - Menu médical - - - Allow Medical Menu - Erlaube Sanitätsmenü - Akt. menu medyczne - Permitir menu médico - Разрешить мед. меню - Permitir menú médico - Povolit zdravotnickou nabídku - Consenti Menù Medico - Autoriser le menu médical - - - Allow clients to use the medical menu - Erlaube Clients das Sanitätsmenü zu verwenden - Zezwalaj graczom korzystać z menu medycznego - Permite que clientes utilizem o menu médico - Разрешает клиентам использовать медицинское меню - Permitir a los clientes utilizar el menú médico - Povolit klientům používat zdravotnickou nabídku - Consenti ai clients di usare il Menù Medico - Autoriser les clients à utiliser le menu médical - - - Use Medical menu - Verwende Sanitätsmenü - Użyj menu medycznego - Usar o menu médico - Использовать медицинское меню - Utiliza el menú médico - Použít zdravotnickou nabídku - Usa Menù Medico - Utiliser le menu médical - - - If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu - Wenn vom Server erlaubt, aktiviert diese Einstellung das Sanitätsmenü, welches durch Tastenkombination oder Interaktionsmenü aufgerufen werden kann. - Jeżeli zezwolone przez serwer, aktywuj menu medyczne poprzez skrót klawiszowy i menu interakcji. - Se permitido pelo servidor, ativa a opção de usar o menu médico por atalhos de teclas e menu de interação - Если разрешено сервером, включает опцию использования медицинского меню с помощью горячих главиш или меню взаимодействия - Si está permitido por el servidor, active la opción de utilizar el menú médico a través del menú de las teclas - Pokud je povoleno serverem, umožní použít zdravotnickou nabídku skrze kláv. zkratku a interakční menu - Se consentito dal server, abilita l'opzione di usare il Menù Medico attraverso hotkeys e menù interazione - Si autorisé par le serveur, active l'option d'utiliser le menu médical à travers les raccourcis clavier et le menu d'interaction. - - - Re-open Medical menu - Sanitätsmenü offen lassen - Otwieraj ponownie menu medyczne - Reabrir menu médico - Переоткрывать мед. меню - Reabrir menú médico - Znovu otevřít zdravotnickou nabídku - Ri-apri Menù Medico - Ré-ouvrir le menu médical - - - Re-open the medical menu after succesful treatment - Öffnet das Sanitätsmenü nach einer erfolgreichen Behandlung erneut - Otwórz ponownie menu medyczne po udanym zakończeniu leczenia - Reabre o menu médico depois de um tratamento bem sucedido - Переоткрывать медицинское меню после удачного лечения - Reabre el menú médico despues de un tratamiento con éxito - Znovu otevřít zdravotnickou nabídku po úspěšné léčbě - Ri-Apri il Menù Medico dopo un trattamento riuscito - Ré-ouvrir le menu médical après un traitement réussi - - - Open Medical Menu - Öffne Sanitätsmenü - Otwórz menu medyczne - Abrir menu médico - Открыть медицинское меню - Abrir menú médico - Otevřít zdravotnickou nabídku - Apri Menù Medico - Ouvir le menu médical - - - Medical Menu Settings - Sanitätsmenü Einstellungen - Ustawienia menu medycznego - Preferências do menu médico - Настройки медицинского меню - Ajustes del mení médico - Nastavení zdravotnické nabídky - Impostazioni Menù Medico - Réglages du menu médical - - - Configure the usage of the Medical Menu - Stelle die Verwendung des Sanitätsmenüs ein - Skonfiguruj opcje menu medycznego - Configura o uso do menu médico - Настройки использования медицинского меню - Configurar el uso del menú médico - Konfigurace využití zdravotnické nabídky - Configura l'uso del Menù Medico - Configurer l'utilisation du menu médical - - - EXAMINE & TREATMENT - Untersuchung & Behandlung - ОСМОТР И ЛЕЧЕНИЕ - EXAMINAR & TRATAMIENTO - EXAMINER & TRAITEMENTS - BADANIE & LECZENIE - EXAMINAR & TRATAMENTO - VYŠETŘENÍ & LÉČBA - ESAMINA & TRATTA - - - STATUS - STATUS - СОСТОЯНИЕ - ESTADO - ÉTAT - STATUS - ESTADO - STAV - STATO - - - OVERVIEW - ÜBERSICHT - ОБЩАЯ ИНФОРМАЦИЯ - DESCRIPCIÓN - APERÇU - OPIS - VISÃO GERAL - PŘEHLED - PANORAMICA - - - ACTIVITY LOG - AKTIVITÄTSVERLAUF - ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ - REGISTRO DE ACTIVIDAD - REGISTRE D'ACTIVITÉ - LOGI AKTYWNOŚCI - REGISTRO DE ATIVIDADE - PROTOKOL - LOG ATTIVITA' - - - QUICK VIEW - SCHNELLANSICHT - БЫСТРЫЙ ОСМОТР - VISTA RÁPIDA - VUE RAPIDE - SZYBKI PODGLĄD - VISÃO RÁPIDA - RYCHLÝ NÁHLED - VISTA RAPIDA - - - View triage Card - Zeige Triagekarte - Смотреть первичную карточку - Ver Triage - Voir Carte de Triage - Pokaż kartę segregacyjną - Ver cartão de triagem - Zkontrolovat štítek - Guarda Triage Card - - - Examine Patient - Untersuche Patient - Осмотреть пациента - Examinar Paciente - Examiner Patient - Zbadaj pacjenta - Examinar paciente - Zkontrolovat pacienta - Esamina Paziente - - - Bandage / Fractures - Bandagen / Brüche - Раны / переломы - Vendajes/Fracturas - Bandages / Fractures - Bandaże / Złamania - Bandagens / Fraturas - Bandáž / Zlomeniny - Bendaggi/Fratture - - - Medication - Medikamentation - Медикаменты - Medicación - Médications - Leki - Medicação - Léky - Medicazione - - - Airway Management - Дыхательные пути - Vías Aéreas - Gestion des voies respiratoires - Drogi oddechowe - Vias aéreas - Dýchací systém - Gestione Vie Respiratorie - Atemwegssicherung - - - Advanced Treatments - Erweiterte Behandlungen - Специальная медпомощь - Tratamientos Avanzados - Traitements Avancés - Zaawansowane zabiegi - Tratamentos avançados - Pokročilé ošetření - Trattamenti Avanzati - - - Drag/Carry - Ziehen/Tragen - Тащить/нести - Arrastrar/Cargar - Traîner/Porter - Ciągnij/Nieś - Arrastar/Carregar - Táhnout/Nést - Trascina/Trasporta - - - Toggle (Self) - Umschalter (Selbst) - Лечить себя/другого раненого - Basculer (soi) - Przełącz (na siebie) - Alternar - Alternar (Si mesmo) - Přepnout (na sebe) - Attiva (Te Stesso) - - - Select triage status - Setze Status auf der Triagekarte - Сортировка - Seleccionar estado de Triage - Selectioner l'état de triage - Wybierz priorytet - Selecionar estado de triagem - Vybrat prioritu - Seleziona stato Triage - - - Select Head - Wähle Kopf - Выбрать голову - Seleccionar Cabeza - Selectioner Tête - Wybierz głowę - Selecionar Cabeça - Vybrat Hlavu - Seleziona Testa - - - Select Torso - Wähle Torso - Выбрать торс - Seleccionar Torso - Selectioner Torse - Wybierz tors - Selecionar Torso - Vybrat Trup - Seleziona Torso - - - Select Left Arm - Wähle linken Arm - Выбрать левую руку - Seleccionar Brazo Izquierdo - Selectioner Bras Gauche - Wybierz lewą rękę - Selecionar Braço Esquerdo - Vybrat Levou ruku - Seleziona Braccio Sinistro - - - Select Right Arm - Wähle rechten Arm - Выбрать правую руку - Seleccionar Brazo Derecho - Selectioner Bras Droit - Wybierz prawą rękę - Selecionar Braço Direito - Vybrat Pravou ruku - Seleziona Braccio Destro - - - Select Left Leg - Wähle linkes Bein - Выбрать левую ногу - Seleccionar Pierna Izquierda - Selectioner Jambe Gauche - Wybierz lewą nogę - Selecionar Perna Esquerda - Vybrat Levou nohu - Seleziona Gamba Sinistra - - - Select Right Leg - Wähle rechtes Bein - Выбрать правую ногу - Seleccionar Pierna Derecha - Selectioner Jambe Droite - Wybierz prawą nogę - Selecionar Perna Direita - Vybrat Pravou nohu - Seleziona Gamba Destra - - - Head - Kopf - Голова - Cabeza - Tête - Głowa - Caebça - Hlava - Testa - - - Torso - Torso - Торс - Torse - Tors - Torso - Trup - Torso - Torso - - - Left Arm - Linker Arm - Левая рука - Brazo Izquierdo - Bras Gauche - Lewa ręka - Braço Esquerdo - Levá Ruka - Braccio Sinistro - - - Right Arm - Rechter Arm - Правая рука - Brazo Derecho - Bras Droit - Prawa ręka - Braço Direito - Pravá Ruka - Braccio Destro - - - Left Leg - Linkes Bein - Левая нога - Pierna Izquierda - Jambe Gauche - Lewa noga - Perna Esquerda - Levá Noha - Gamba Sinistra - - - Right Leg - Rechtes Bein - Правая нога - Pierna Derecha - Jambe Droite - Prawa noga - Perna Direita - Pravá Noha - Gamba Destra - - - Body Part: %1 - Körperteil: %1 - Часть тела: %1 - Parte del cuerpo: %1 - Partie du corps: %1 - Część ciała: %1 - Parte do corpo: %1 - Část těla: %1 - Parte del Corpo: %1 - - - Small - Klein - малого размера - Pequeña - Petite - małym - Pequeno - Malý - Piccolo - - - Medium - Mittel - среднего размера - Mediana - Moyenne - średnim - Médio - Střední - Medio - - - Large - Groß - большого размера - Grande - Grande - dużym - Grande - Velký - Grande - - - There are %2 %1 Open Wounds - Er hat %2 offene Wunden (%1) - %2 открытые раны %1 - Hay %2 Heridas Abiertas %1 - Il y a %2 %1 Blessure(s) Ouverte(s) - Widzisz otwarte rany w ilości %2 o %1 rozmiarze - Existem %2 ferimentos abertos %1 - Jsou zde %2 %1 otevřené rány - Ci sono %2 %1 Ferite Aperte - - - There is 1 %1 Open Wound - Er hat 1 offene Wunde (%1) - Открытая рана %1 - Hay 1 Herida Abierta %1 - Il y a 1 blessure ouverte %1 - Widzisz 1 otwartą ranę o %1 rozmiarze - Existe 1 %1 ferimento aberto - Je zde 1 %1 otevřená rána - C'è 1 %1 Ferita Aperta - - - There is a partial %1 Open wound - Er hat eine zum Teil offene Wunde (%1) - Частично открытая рана %1 - Hay una herida parcial abierta %1 - Il y a une Blessure Patiellement Ouverte %1 - Widzisz częściowo otwartą ranę o %1 rozmiarze - Existe um ferimento parcial aberto %1 - Je zde částečně %1 otevřená rána - C'è 1 parziale %1 Ferita Aperta - - - There are %2 %1 Bandaged Wounds - Er hat %2 verbundene Wunden (%1) - %2 перевязанные раны %1 - Hay %2 Heridas %1 Vendadas - Il y a %2 %1 Blessure(s) Bandée(s) - Widzisz %2 zabandażowanych ran o %1 rozmiarze - Existem %2 ferimentos %1 tratados - Jsou zde %2 %1 ovázané rány - Ci sono %2 %1 Ferite Bendate - - - There is 1 %1 Bandaged Wound - Er hat 1 verbundene Wunde (%1) - 1 перевязанная рана %1 - Hay 1 Herida Vendada %1 - Il y a 1 %1 Blessure Bandée - Widzisz 1 zabandażowaną ranę o %1 rozmiarze - Existe 1 ferimento %1 tratado - Je zde 1 %1 ovázaná rána - C'è 1 %1 Ferita Bendata - - - There is a partial %1 Bandaged wound - Er hat eine zum Teil verbundene Wunde (%1) - Частично перевязанная рана %1 - Hay una Herida parcial %1 Vendada - Il y a %1 Blessure Partielment Bandée - Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze - Existe um ferimento parcial tratado %1 - Je zde částěčně %1 ovázaná rána - C'è 1 parziale %1 Ferita Bendata - - - Normal breathing - Normale Atmung - Дыхание в норме - Respiración normal - Respiration normale - Normalny oddech - Respiração normal - Normální dýchání - Respirazione Normale - - - No breathing - Keine Atmung - Дыхания нет - No respira - Aucune respiration - Brak oddechu - Sem respiração - Nedýchá - Nessuna Respirazione - - - Difficult breathing - Schwere Atmung - Дыхание затруднено - Dificultad para respirar - Respiration difficile - Trudności z oddychaniem - Dificuldade para respirar - Potíže s dýcháním - Difficoltà Respiratorie - - - Almost no breathing - Beinahe keine Atmung - Дыхания почти нет - Casi sin respirar - Respiration faible - Prawie brak oddechu - Quase sem respiração - Téměř nedýchá - Quasi nessuna Respirazione - - - Bleeding - Blutung - Кровотечение - Sangrando - Saignement - Krwawienie zewnętrzne - Sangrando - Krvácí - Sanguinamento - - - in Pain - hat Schmerzen - Испытывает боль - Con Dolor - Souffre - W bólu - Com dor - v bolestech - in Dolore - - - Lost a lot of Blood - hat sehr viel Blut verloren - Большая кровопотеря - Mucha Sangre perdida - A Perdu Bcp de Sang - Stracił dużo krwi - Perdeu muito sangue - Ztratil hodně krve - Perso molto Sangue - - - Tourniquet [CAT] - Tourniquet [CAT] - Жгут - Torniquete [CAT] - Garrot [CAT] - Opaska uciskowa [CAT] - Torniquete [CAT] - Škrtidlo [CAT] - Laccio Emostatico [CAT] - - - Nasopharyngeal Tube [NPA] - Nasen-Rachen-Rohr - Назотрахеальная трубка - Torniquete [CAT] - Canule Naseaupharyngée [NPA] - Rurka nosowo-gardłowa [NPA] - Tubo nasofaríngeo [NPA] - Nasofaryngeální trubice [NPA] - Tubo Nasofaringeo [NPA] - - - \ No newline at end of file diff --git a/addons/medical_menu/ui/menu.hpp b/addons/medical_menu/ui/menu.hpp deleted file mode 100644 index 16c79e7c6a..0000000000 --- a/addons/medical_menu/ui/menu.hpp +++ /dev/null @@ -1,570 +0,0 @@ -#include "\z\ace\addons\common\define.hpp" - -class GVAR(medicalMenu) { - idd = 314412; - movingEnable = true; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(medicalMenu)), _this select 0)]; [_this select 0] call FUNC(onMenuOpen);); - onUnload = QUOTE([] call FUNC(onMenuClose)); - class controlsBackground { - class HeaderBackground: ACE_gui_backgroundBase { - idc = -1; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - text = "#(argb,8,8,3)color(0,0,0,0)"; - }; - class CenterBackground: HeaderBackground { - y = "2.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - h = "16 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - text = "#(argb,8,8,3)color(0,0,0,0.8)"; - colorText[] = {0, 0, 0, "(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; - colorBackground[] = {0,0,0,"(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; - }; - class BottomBackground: CenterBackground { - y = "(18.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))"; - h = "9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - }; - - class controls { - class HeaderName { - idc = 1; - type = CT_STATIC; - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - style = ST_LEFT + ST_SHADOW; - font = "RobotoCondensed"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - colorText[] = {0.95, 0.95, 0.95, 0.75}; - colorBackground[] = {"(profilenamespace getVariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getVariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getVariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getVariable ['GUI_BCG_RGB_A',0.9])"}; - text = ""; - }; - - class IconsBackGroundBar: ACE_gui_backgroundBase{ - idc = -1; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "2.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "3.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - text = QPATHTOF(data\background_img.paa); - colorText[] = {1, 1, 1, 0.0}; - }; - class CatagoryLeft: HeaderName { - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "2.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - style = ST_CENTER; - colorText[] = {1, 1, 1.0, 0.9}; - colorBackground[] = {0,0,0,0}; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; - text = CSTRING(EXAMINE_TREATMENT); - }; - class CatagoryCenter: CatagoryLeft { - x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = CSTRING(STATUS); - }; - class CatagoryRight: CatagoryCenter{ - x = "25.66 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = CSTRING(OVERVIEW); - }; - class Line: ACE_gui_backgroundBase { - idc = -1; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "3.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "37 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "0.03 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - text = "#(argb,8,8,3)color(1,1,1,0.5)"; - }; - - class iconImg1: ACE_gui_backgroundBase { - idc = 111; - x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.1)"; - colorBackground[] = {0,0,0,1}; - colorPicture[] = {1,1,1,1}; - colorText[] = {1,1,1,1}; - text = QPATHTOF(data\icons\triage_card_small.paa); - }; - class iconImg2: iconImg1 { - idc = 112; - x = "3 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QPATHTOF(data\icons\examine_patient_small.paa); - }; - class iconImg3: iconImg1 { - idc = 113; - x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QPATHTOF(data\icons\bandage_fracture_small.paa); - }; - class iconImg4: iconImg1 { - idc = 114; - x = "6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QPATHTOF(data\icons\medication_small.paa); - }; - class iconImg5: iconImg1 { - idc = 115; - x = "7.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QPATHTOF(data\icons\airway_management_small.paa); - }; - class iconImg6: iconImg1 { - idc = 116; - x = "9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QPATHTOF(data\icons\advanced_treatment_small.paa); - }; - class iconImg7: iconImg1 { - idc = 117; - x = "10.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QPATHTOF(data\icons\icon_carry.paa); - }; - class iconImg8: iconImg1 { - idc = 118; - x = "12 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QPATHTOF(data\icons\toggle_self_small.paa); - }; - - - class BtnIconLeft1: ACE_gui_buttonBase { - idc = 11; - x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)"; - action = QUOTE(['triage'] call FUNC(handleUI_DisplayOptions);); - }; - class BtnIconLeft2: BtnIconLeft1 { - idc = 12; - x = "3 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(['examine'] call FUNC(handleUI_DisplayOptions);); - }; - class BtnIconLeft3: BtnIconLeft1 { - idc = 13; - x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(['bandage'] call FUNC(handleUI_DisplayOptions);); - }; - class BtnIconLeft4: BtnIconLeft1 { - idc = 14; - x = "6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(['medication'] call FUNC(handleUI_DisplayOptions);); - }; - class BtnIconLeft5: BtnIconLeft1 { - idc = 15; - x = "7.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(['airway'] call FUNC(handleUI_DisplayOptions);); - }; - class BtnIconLeft6: BtnIconLeft1 { - idc = 16; - x = "9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(['advanced'] call FUNC(handleUI_DisplayOptions);); - }; - class BtnIconLeft7: BtnIconLeft1 { - idc = 17; - x = "10.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(['drag'] call FUNC(handleUI_DisplayOptions);); - }; - class BtnIconLeft8: BtnIconLeft1 { - idc = 18; - x = "12 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(['toggle'] call FUNC(handleUI_DisplayOptions);); - }; - - class TriageCardList: ACE_gui_listBoxBase { - idc = 212; - x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "12 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - rowHeight = 0.03; - colorBackground[] = {0, 0, 0, 0.2}; - colorText[] = {1,1, 1, 1.0}; - colorScrollbar[] = {0.95, 0.95, 0.95, 1}; - colorSelect[] = {0.95, 0.95, 0.95, 1}; - colorSelect2[] = {0.95, 0.95, 0.95, 1}; - colorSelectBackground[] = {0, 0, 0, 0.0}; - colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; - }; - - // Left side - class BtnMenu1: BtnIconLeft1 { - idc = 20; - y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "12 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - text = ""; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.9)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.8)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.5)"; - animTextureOver = "#(argb,8,8,3)color(1,1,1,1)"; - animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; - animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; - animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; - color[] = {1, 1, 1, 1}; - color2[] = {0,0,0, 1}; - colorBackgroundFocused[] = {1,1,1,1}; - colorBackground[] = {1,1,1,1}; - colorbackground2[] = {1,1,1,1}; - colorDisabled[] = {0.5,0.5,0.5,0.8}; - colorFocused[] = {0,0,0,1}; - periodFocus = 1; - periodOver = 1; - action = ""; - }; - class BtnMenu2: BtnMenu1 { - idc = 21; - y = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - text = ""; - }; - class BtnMenu3: BtnMenu1 { - idc = 22; - y = "7.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - text = ""; - }; - class BtnMenu4: BtnMenu1 { - idc = 23; - y = "8.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - text =""; - }; - class BtnMenu5: BtnMenu1 { - idc = 24; - y = "9.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - text = ""; - }; - class BtnMenu6: BtnMenu1 { - idc = 25; - y = "10.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - text = ""; - }; - class BtnMenu7: BtnMenu1 { - idc = 26; - y = "12 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - text = ""; - }; - class BtnMenu8: BtnMenu1 { - idc = 27; - y = "13.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - text = ""; - }; - // center - - class bodyImgBackground: ACE_gui_backgroundBase { - idc = -1; - x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "12.33 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; - colorBackground[] = {1,1,1,1}; - colorPicture[] = {1,1,1,1}; - colorText[] = {1,1,1,1}; - text = QPATHTOEF(medical,ui\body_background.paa); - }; - class bodyImgHead: bodyImgBackground { - idc = 50; - x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "12.33 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; - colorBackground[] = {1,1,1,1}; - colorPicture[] = {1,1,1,0.75}; - colorText[] = {1,1,1,0.75}; - text = QPATHTOEF(medical,ui\body_head.paa); - }; - - class bodyImgTorso: bodyImgHead { - idc = 51; - text = QPATHTOEF(medical,ui\body_torso.paa); - }; - class bodyImgArms_l: bodyImgHead { - idc = 52; - text = QPATHTOEF(medical,ui\body_arm_left.paa); - }; - class bodyImgArms_r: bodyImgHead { - idc = 53; - text = QPATHTOEF(medical,ui\body_arm_right.paa); - }; - class bodyImgLegs_l: bodyImgHead { - idc = 54; - text = QPATHTOEF(medical,ui\body_leg_left.paa); - }; - class bodyImgLegs_r: bodyImgHead { - idc = 55; - text = QPATHTOEF(medical,ui\body_leg_right.paa); - }; - - - class selectHead: ACE_gui_buttonBase { - idc = 301; - x = "18.8 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "3.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "1.4 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)"; - action = QUOTE(GVAR(selectedBodyPart) = 0;); - }; - class selectTorso : selectHead { - idc = 302; - x = "18.4 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "2.2 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "4.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - action = QUOTE(GVAR(selectedBodyPart) = 1;); - }; - class selectLeftArm: selectHead{ - idc = 303; - x = "17.4 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "5.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "4.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - action = QUOTE(GVAR(selectedBodyPart) = 3;); - }; - class selectRightArm: selectLeftArm{ - idc = 304; - x = "20.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(GVAR(selectedBodyPart) = 2;); - }; - class selectLeftLeg :selectHead { - idc = 305; - x = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "9.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - action = QUOTE(GVAR(selectedBodyPart) = 5;); - }; - class selectRightLeg :selectLeftLeg { - idc = 306; - x = "19.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(GVAR(selectedBodyPart) = 4;); - }; - - - class TriageTextBottom: HeaderName { - idc = 2000; - x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "16.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - style = ST_CENTER; - colorText[] = {1, 1, 1.0, 1}; - colorBackground[] = {0,0.0,0.0,0.7}; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - text = ""; - }; - - // Right side - class InjuryList: ACE_gui_listBoxBase { - idc = 213; - x = "25.66 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "5.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - rowHeight = 0.03; - colorBackground[] = {0, 0, 0, 0.2}; - colorText[] = {1,1, 1, 1.0}; - colorScrollbar[] = {0.95, 0.95, 0.95, 1}; - colorSelect[] = {0.95, 0.95, 0.95, 1}; - colorSelect2[] = {0.95, 0.95, 0.95, 1}; - colorSelectBackground[] = {0, 0, 0, 0.0}; - colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5}; - }; - // bottom - - class ActivityLogHeader: CatagoryLeft { - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "18.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - style = ST_CENTER; - colorText[] = {0.6, 0.7, 1.0, 1}; - colorBackground[] = {0,0,0,0}; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - text = CSTRING(ACTIVITY_LOG); - }; - class QuickViewHeader: ActivityLogHeader { - x = "19.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = CSTRING(QUICK_VIEW); - }; - class LineBottomHeaders: Line { - y = "19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - }; - class ActivityLog: InjuryList { - idc = 214; - //style = 16; - //type = 102; - //rows=1; - colorBackground[] = {0, 0, 0, 0}; - x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "(19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))"; - w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - //colorSelectBackground[] = {0, 0, 0, 0.0}; - //colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; - //columns[] = {0.0, 0.08}; - //canDrag=true; - //arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; - // arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; - drawSideArrows = 0; - //idcLeft = -1; - //idcRight = -1; - }; - - class QuikViewLog: InjuryList { - idc = 215; - //style = 16; - //type = 102; - //rows=1; - colorBackground[] = {0, 0, 0, 0}; - x = "21.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "(19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))"; - w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - colorSelectBackground[] = {0, 0, 0, 0.0}; - colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; - - //columns[] = {0.0, 0.08}; - //canDrag=true; - //arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; - // arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; - drawSideArrows = 0; - //idcLeft = -1; - //idcRight = -1; - }; - - class selectTriageStatus: ACE_gui_buttonBase { - idc = 2001; - x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "16.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - style = ST_CENTER; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)"; - animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)"; - action = QUOTE([] call FUNC(handleUI_dropDownTriageCard);); - }; - class selectTriageStatusNone: selectTriageStatus { - idc = 2002; - x = 0; - y = 0; - w = 0; - h = 0; - text = ECSTRING(Medical,Triage_Status_None); - style = ST_CENTER; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureOver = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)"; - action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),0)] call FUNC(setTriageStatus);); - }; - - class selectTriageStatusMinor: selectTriageStatus { - idc = 2003; - x = 0; - y = 0; - w = 0; - h = 0; - text = ECSTRING(Medical,Triage_Status_Minor); - style = ST_CENTER; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTextureOver = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),1)] call FUNC(setTriageStatus);); - }; - class selectTriageStatusDelayed: selectTriageStatus { - idc = 2004; - x = 0; - y = 0; - w = 0; - h = 0; - text = ECSTRING(Medical,Triage_Status_Delayed); - style = ST_CENTER; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTextureOver = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),2)] call FUNC(setTriageStatus);); - }; - class selectTriageStatusImmediate: selectTriageStatus { - idc = 2005; - x = 0; - y = 0; - w = 0; - h = 0; - text = ECSTRING(Medical,Triage_Status_Immediate); - style = ST_CENTER; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTextureOver = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),3)] call FUNC(setTriageStatus);); - }; - class selectTriageStatusDeceased: selectTriageStatus { - idc = 2006; - x = 0; - y = 0; - w = 0; - h = 0; - text = ECSTRING(Medical,Triage_Status_Deceased); - style = ST_CENTER; - size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureOver = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)"; - animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)"; - action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),4)] call FUNC(setTriageStatus);); - }; - }; -}; diff --git a/addons/medical_state/$PBOPREFIX$ b/addons/medical_state/$PBOPREFIX$ new file mode 100644 index 0000000000..dedf325216 --- /dev/null +++ b/addons/medical_state/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\medical_state \ No newline at end of file diff --git a/addons/medical_state/CfgEventHandlers.hpp b/addons/medical_state/CfgEventHandlers.hpp new file mode 100644 index 0000000000..93e3311cf2 --- /dev/null +++ b/addons/medical_state/CfgEventHandlers.hpp @@ -0,0 +1,11 @@ +class Extended_PreStart_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preStart)); + }; +}; + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/addons/medical_state/XEH_PREP.hpp b/addons/medical_state/XEH_PREP.hpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/addons/medical_state/XEH_preInit.sqf b/addons/medical_state/XEH_preInit.sqf new file mode 100644 index 0000000000..a7feade1c3 --- /dev/null +++ b/addons/medical_state/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +#include "XEH_PREP.hpp" + +ADDON = true; diff --git a/addons/medical_state/XEH_preStart.sqf b/addons/medical_state/XEH_preStart.sqf new file mode 100644 index 0000000000..022888575e --- /dev/null +++ b/addons/medical_state/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" diff --git a/addons/medical_state/config.cpp b/addons/medical_state/config.cpp new file mode 100644 index 0000000000..60cad71f28 --- /dev/null +++ b/addons/medical_state/config.cpp @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_medical"}; + author = ECSTRING(common,ACETeam); + authors[] = {""}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" diff --git a/addons/medical_state/functions/script_component.hpp b/addons/medical_state/functions/script_component.hpp new file mode 100644 index 0000000000..166fae0153 --- /dev/null +++ b/addons/medical_state/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\medical_state\script_component.hpp" \ No newline at end of file diff --git a/addons/medical_state/script_component.hpp b/addons/medical_state/script_component.hpp new file mode 100644 index 0000000000..b9d870c4fe --- /dev/null +++ b/addons/medical_state/script_component.hpp @@ -0,0 +1,18 @@ +#define COMPONENT medical_state +#define COMPONENT_BEAUTIFIED Medical State Machine +#include "\z\ace\addons\main\script_mod.hpp" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define CBA_DEBUG_SYNCHRONOUS +// #define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_MEDICAL_STATE + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_MEDICAL_STATE + #define DEBUG_SETTINGS DEBUG_SETTINGS_MEDICAL_STATE +#endif + +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/addons/medical_treatment/$PBOPREFIX$ b/addons/medical_treatment/$PBOPREFIX$ index 800ccd5792..b6c73c4043 100644 --- a/addons/medical_treatment/$PBOPREFIX$ +++ b/addons/medical_treatment/$PBOPREFIX$ @@ -1 +1 @@ -z\ace\addons\medical_treatment +z\ace\addons\medical_treatment \ No newline at end of file diff --git a/addons/medical_treatment/ACE_Medical_Actions.hpp b/addons/medical_treatment/ACE_Medical_Actions.hpp deleted file mode 100644 index bdfc36bcc8..0000000000 --- a/addons/medical_treatment/ACE_Medical_Actions.hpp +++ /dev/null @@ -1,805 +0,0 @@ - -class ACE_Head { - displayName = ECSTRING(medical,Head); - runOnHover = 1; - statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); - ACTION_CONDITION - modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - distance = MEDICAL_ACTION_DISTANCE; - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class CheckPulse: fieldDressing { - displayName = ECSTRING(medical,Actions_CheckPulse); - condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(treatment)); - EXCEPTIONS - icon = ""; - }; - class CheckBloodPressure: CheckPulse { - displayName = ECSTRING(medical,Actions_CheckBloodPressure); - condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(treatment)); - EXCEPTIONS - }; - class CheckResponse: CheckPulse { - displayName = ECSTRING(medical,Check_Response); - condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckResponse')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckResponse')] call DFUNC(treatment)); - EXCEPTIONS - }; - class Diagnose: CheckPulse { - displayName = ECSTRING(medical,Actions_Diagnose); - condition = QUOTE([ARR_4(_player, _target, 'head', 'Diagnose')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'head', 'Diagnose')] call DFUNC(treatment)); - EXCEPTIONS - }; -}; -class ACE_Torso { - displayName = ECSTRING(medical,Torso); - runOnHover = 1; - statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation)); - ACTION_CONDITION - modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - distance = MEDICAL_ACTION_DISTANCE; - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 1; - priority = 2; - enableInside = 1; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PlaceInBodyBag { - displayName = ECSTRING(medical,PlaceInBodyBag); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'body', 'BodyBag')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'BodyBag')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 1; - priority = 2; - enableInside = 1; - }; - class TriageCard { - displayName = ECSTRING(medical,Actions_TriageCard); - distance = 2.0; - condition = "true"; - statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard)); - EXCEPTIONS - showDisabled = 1; - priority = 2; - enableInside = 1; - icon = QPATHTOEF(medical,UI\icons\triageCard.paa); - }; - class Diagnose { - displayName = ECSTRING(medical,Actions_Diagnose); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'body', 'Diagnose')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'Diagnose')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 0; - priority = 2; - icon = ""; - }; - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 0; - priority = 2; - enableInside = 1; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class SurgicalKit: fieldDressing { - displayName = ECSTRING(medical,Use_SurgicalKit); - condition = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\surgicalKit.paa); - }; - class PersonalAidKit: fieldDressing { - displayName = ECSTRING(medical,Use_Aid_Kit); - condition = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(treatment)); - EXCEPTIONS - icon = ""; - }; - class CPR: fieldDressing { - displayName = ECSTRING(medical,Actions_CPR); - condition = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(treatment)); - EXCEPTIONS - icon = ""; - }; -}; -class ACE_ArmLeft { - displayName = ECSTRING(interaction,ArmLeft); - runOnHover = 1; - statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation)); - ACTION_CONDITION - modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - distance = MEDICAL_ACTION_DISTANCE; - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class Tourniquet: fieldDressing { - displayName = ECSTRING(medical,Actions_Tourniquet); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\tourniquet.paa); - }; - class Morphine: fieldDressing { - displayName = ECSTRING(medical,Inject_Morphine); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Adenosine: Morphine { - displayName = ECSTRING(medical,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 = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Atropine: Morphine { - displayName = ECSTRING(medical,Inject_Atropine); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Epinephrine: Morphine { - displayName = ECSTRING(medical,Inject_Epinephrine); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class BloodIV: fieldDressing { - displayName = ECSTRING(medical,Actions_Blood4_1000); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\iv.paa); - }; - class BloodIV_500: BloodIV { - displayName = ECSTRING(medical,Actions_Blood4_500); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class BloodIV_250: BloodIV { - displayName = ECSTRING(medical,Actions_Blood4_250); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV: BloodIV { - displayName = ECSTRING(medical,Actions_Plasma4_1000); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV_500: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_500); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV_250: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_250); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV: BloodIV { - displayName = ECSTRING(medical,Actions_Saline4_1000); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV_500: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_500); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV_250: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_250); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class CheckPulse: fieldDressing { - displayName = ECSTRING(medical,Actions_CheckPulse); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(treatment)); - EXCEPTIONS - icon = ""; - }; - class CheckBloodPressure: CheckPulse { - displayName = ECSTRING(medical,Actions_CheckBloodPressure); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(treatment)); - EXCEPTIONS - }; - class RemoveTourniquet: Tourniquet { - displayName = ECSTRING(medical,Actions_RemoveTourniquet); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(treatment)); - EXCEPTIONS - }; -}; -class ACE_ArmRight { - displayName = ECSTRING(interaction,ArmRight); - runOnHover = 1; - statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation)); - ACTION_CONDITION - modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - distance = MEDICAL_ACTION_DISTANCE; - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(treatment)); - EXCEPTIONS - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(treatment)); - EXCEPTIONS - }; - class Tourniquet: fieldDressing { - displayName = ECSTRING(medical,Actions_Tourniquet); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\tourniquet.paa); - }; - class Morphine: fieldDressing { - displayName = ECSTRING(medical,Inject_Morphine); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - - class Adenosine: Morphine { - displayName = ECSTRING(medical,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 = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Atropine: Morphine { - displayName = ECSTRING(medical,Inject_Atropine); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(treatment)); - EXCEPTIONS - }; - class Epinephrine: Morphine { - displayName = ECSTRING(medical,Inject_Epinephrine); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(treatment)); - EXCEPTIONS - }; - class BloodIV: fieldDressing { - displayName = ECSTRING(medical,Actions_Blood4_1000); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(treatment)); - EXCEPTIONS - icon =QPATHTOEF(medical,UI\icons\iv.paa); - }; - class BloodIV_500: BloodIV { - displayName = ECSTRING(medical,Actions_Blood4_500); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class BloodIV_250: BloodIV { - displayName = ECSTRING(medical,Actions_Blood4_250); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV: BloodIV { - displayName = ECSTRING(medical,Actions_Plasma4_1000); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV_500: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_500); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV_250: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_250); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV: BloodIV { - displayName = ECSTRING(medical,Actions_Saline4_1000); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV_500: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_500); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV_250: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_250); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class CheckPulse: fieldDressing { - displayName = ECSTRING(medical,Actions_CheckPulse); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(treatment)); - EXCEPTIONS - icon = ""; - }; - class CheckBloodPressure: CheckPulse { - displayName = ECSTRING(medical,Actions_CheckBloodPressure); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(treatment)); - EXCEPTIONS - }; - class RemoveTourniquet: Tourniquet { - displayName = ECSTRING(medical,Actions_RemoveTourniquet); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(treatment)); - EXCEPTIONS - }; - -}; -class ACE_LegLeft { - displayName = ECSTRING(interaction,LegLeft); - runOnHover = 1; - statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation)); - ACTION_CONDITION - modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - distance = MEDICAL_ACTION_DISTANCE; - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(treatment)); - EXCEPTIONS - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(treatment)); - EXCEPTIONS - }; - class Tourniquet: fieldDressing { - displayName = ECSTRING(medical,Actions_Tourniquet); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\tourniquet.paa); - }; - class Morphine: fieldDressing { - displayName = ECSTRING(medical,Inject_Morphine); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Adenosine: Morphine { - displayName = ECSTRING(medical,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 = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Atropine: Morphine { - displayName = ECSTRING(medical,Inject_Atropine); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Epinephrine: Morphine { - displayName = ECSTRING(medical,Inject_Epinephrine); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(treatment)); - EXCEPTIONS - }; - class BloodIV: fieldDressing { - displayName = ECSTRING(medical,Actions_Blood4_1000); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\iv.paa); - }; - class BloodIV_500: BloodIV { - displayName = ECSTRING(medical,Actions_Blood4_500); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class BloodIV_250: BloodIV { - displayName = ECSTRING(medical,Actions_Blood4_250); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV: BloodIV { - displayName = ECSTRING(medical,Actions_Plasma4_1000); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV_500: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_500); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV_250: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_250); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV: BloodIV { - displayName = ECSTRING(medical,Actions_Saline4_1000); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV_500: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_500); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV_250: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_250); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class RemoveTourniquet: Tourniquet { - displayName = ECSTRING(medical,Actions_RemoveTourniquet); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(treatment)); - EXCEPTIONS - }; -}; -class ACE_LegRight { - displayName = ECSTRING(interaction,LegRight); - runOnHover = 1; - statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation)); - ACTION_CONDITION - modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - distance = MEDICAL_ACTION_DISTANCE; - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment)); - EXCEPTIONS - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(treatment)); - EXCEPTIONS - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(treatment)); - EXCEPTIONS - }; - class Tourniquet: fieldDressing { - displayName = ECSTRING(medical,Actions_Tourniquet); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\tourniquet.paa); - }; - class Morphine: fieldDressing { - displayName = ECSTRING(medical,Inject_Morphine); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Adenosine: Morphine { - displayName = ECSTRING(medical,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 = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Atropine: Morphine { - displayName = ECSTRING(medical,Inject_Atropine); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Epinephrine: Morphine { - displayName = ECSTRING(medical,Inject_Epinephrine); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class BloodIV: fieldDressing { - displayName = ECSTRING(medical,Actions_Blood4_1000); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(treatment)); - EXCEPTIONS - icon = QPATHTOEF(medical,UI\icons\iv.paa); - }; - class BloodIV_500: BloodIV { - displayName = ECSTRING(medical,Actions_Blood4_500); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class BloodIV_250: BloodIV { - displayName = ECSTRING(medical,Actions_Blood4_250); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV: BloodIV { - displayName = ECSTRING(medical,Actions_Plasma4_1000); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV_500: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_500); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class PlasmaIV_250: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_250); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV: BloodIV { - displayName = ECSTRING(medical,Actions_Saline4_1000); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV_500: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_500); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(treatment)); - EXCEPTIONS - }; - class SalineIV_250: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_250); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(treatment)); - EXCEPTIONS - }; - class RemoveTourniquet: Tourniquet { - displayName = ECSTRING(medical,Actions_RemoveTourniquet); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment)); - EXCEPTIONS - }; -}; diff --git a/addons/medical_treatment/ACE_Medical_SelfActions.hpp b/addons/medical_treatment/ACE_Medical_SelfActions.hpp deleted file mode 100644 index 20e8b1e1ef..0000000000 --- a/addons/medical_treatment/ACE_Medical_SelfActions.hpp +++ /dev/null @@ -1,534 +0,0 @@ -class Medical { - displayName = ECSTRING(medical,Actions_Medical); - runOnHover = 1; - exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); - condition = "true"; - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - - class ACE_Head { - displayName = ECSTRING(medical,Head); - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); - modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction)); - condition = "true"; - runOnHover = 1; - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment)); - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment)); - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class CheckPulse: fieldDressing { - displayName = ECSTRING(medical,Actions_CheckPulse); - condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(treatment)); - icon = ""; - }; - class CheckBloodPressure: CheckPulse { - displayName = ECSTRING(medical,Actions_CheckBloodPressure); - condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(treatment)); - }; - }; - class ACE_Torso { - displayName = ECSTRING(medical,Torso); - distance = 5.0; - condition = "true"; - runOnHover = 1; - exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation)); - modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction)); - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment)); - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - - class TriageCard { - displayName = ECSTRING(medical,Actions_TriageCard); - distance = 2.0; - condition = "true"; - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard)); - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\triageCard.paa); - }; - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment)); - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - }; - class ACE_ArmLeft { - displayName = ECSTRING(interaction,ArmLeft); - runOnHover = 1; - exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation)); - modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction)); - condition = "true"; - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment)); - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment)); - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class Tourniquet: fieldDressing { - displayName = ECSTRING(medical,Actions_Tourniquet); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\tourniquet.paa); - }; - class Morphine: fieldDressing { - displayName = ECSTRING(medical,Inject_Morphine); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Adenosine: Morphine { - displayName = ECSTRING(medical,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 = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Atropine: Morphine { - displayName = ECSTRING(medical,Inject_Atropine); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Epinephrine: Morphine { - displayName = ECSTRING(medical,Inject_Epinephrine); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class CheckPulse: fieldDressing { - displayName = ECSTRING(medical,Actions_CheckPulse); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(treatment)); - icon = ""; - }; - class CheckBloodPressure: CheckPulse { - displayName = ECSTRING(medical,Actions_CheckBloodPressure); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(treatment)); - }; - class RemoveTourniquet: Tourniquet { - displayName = ECSTRING(medical,Actions_RemoveTourniquet); - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(treatment)); - }; - }; - class ACE_ArmRight { - displayName = ECSTRING(interaction,ArmRight); - runOnHover = 1; - exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation)); - modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction)); - condition = "true"; - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment)); - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment)); - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(treatment)); - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(treatment)); - }; - class Tourniquet: fieldDressing { - displayName = ECSTRING(medical,Actions_Tourniquet); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\tourniquet.paa); - }; - class Morphine: fieldDressing { - displayName = ECSTRING(medical,Inject_Morphine); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Adenosine: Morphine { - displayName = ECSTRING(medical,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 = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Atropine: Morphine { - displayName = ECSTRING(medical,Inject_Atropine); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(treatment)); - }; - class Epinephrine: Morphine { - displayName = ECSTRING(medical,Inject_Epinephrine); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(treatment)); - }; - class CheckPulse: fieldDressing { - displayName = ECSTRING(medical,Actions_CheckPulse); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(treatment)); - icon = ""; - }; - class CheckBloodPressure: CheckPulse { - displayName = ECSTRING(medical,Actions_CheckBloodPressure); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(treatment)); - }; - class RemoveTourniquet: Tourniquet { - displayName = ECSTRING(medical,Actions_RemoveTourniquet); - condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(treatment)); - }; - }; - class ACE_LegLeft { - displayName = ECSTRING(interaction,LegLeft); - runOnHover = 1; - exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation)); - modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction)); - condition = "true"; - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment)); - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment)); - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(treatment)); - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(treatment)); - }; - class Tourniquet: fieldDressing { - displayName = ECSTRING(medical,Actions_Tourniquet); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\tourniquet.paa); - }; - class Morphine: fieldDressing { - displayName = ECSTRING(medical,Inject_Morphine); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Adenosine: Morphine { - displayName = ECSTRING(medical,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 = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Atropine: Morphine { - displayName = ECSTRING(medical,Inject_Atropine); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Epinephrine: Morphine { - displayName = ECSTRING(medical,Inject_Epinephrine); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(treatment)); - }; - class RemoveTourniquet: Tourniquet { - displayName = ECSTRING(medical,Actions_RemoveTourniquet); - condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(treatment)); - }; - }; - class ACE_LegRight { - displayName = ECSTRING(interaction,LegRight); - runOnHover = 1; - exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation)); - modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction)); - condition = "true"; - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - - class Bandage { - displayName = ECSTRING(medical,Bandage); - distance = 2.0; - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment)); - showDisabled = 1; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - - - // Advanced medical - class FieldDressing { - displayName = ECSTRING(medical,Actions_FieldDressing); - distance = 5.0; - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment)); - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\bandage.paa); - }; - class PackingBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_PackingBandage); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\packingBandage.paa); - }; - class ElasticBandage: fieldDressing { - displayName = ECSTRING(medical,Actions_ElasticBandage); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(treatment)); - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,Actions_QuikClot); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(treatment)); - }; - class Tourniquet: fieldDressing { - displayName = ECSTRING(medical,Actions_Tourniquet); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\tourniquet.paa); - }; - class Morphine: fieldDressing { - displayName = ECSTRING(medical,Inject_Morphine); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment)); - icon = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Adenosine: Morphine { - displayName = ECSTRING(medical,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 = QPATHTOEF(medical,UI\icons\autoInjector.paa); - }; - class Atropine: Morphine { - displayName = ECSTRING(medical,Inject_Atropine); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(treatment)); - }; - class Epinephrine: Morphine { - displayName = ECSTRING(medical,Inject_Epinephrine); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(treatment)); - }; - class RemoveTourniquet: Tourniquet { - displayName = ECSTRING(medical,Actions_RemoveTourniquet); - condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment)); - }; - }; -}; diff --git a/addons/medical_treatment/ACE_Medical_Treatments.hpp b/addons/medical_treatment/ACE_Medical_Treatments.hpp deleted file mode 100644 index d8eac1779a..0000000000 --- a/addons/medical_treatment/ACE_Medical_Treatments.hpp +++ /dev/null @@ -1,1065 +0,0 @@ - -class ACE_Medical_Actions { - class Basic { - class Bandage { - displayName = ECSTRING(medical,Bandage); - displayNameProgress = ECSTRING(medical,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(treatmentAdvanced_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 = ECSTRING(medical,Inject_Morphine); - displayNameProgress = ECSTRING(medical,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 = ECSTRING(medical,Inject_Epinephrine); - displayNameProgress = ECSTRING(medical,Injecting_Epinephrine); - allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; - allowSelfTreatment = 1; - category = "medication"; - requiredMedic = QEGVAR(medical,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 = ECSTRING(medical,Transfuse_Blood); - displayNameProgress = ECSTRING(medical,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)); - callbackSuccess = QUOTE(DFUNC(treatmentIV)); - 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 = ECSTRING(medical,PlaceInBodyBag); - displayNameProgress = ECSTRING(medical,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 = ECSTRING(medical,Actions_Diagnose); - displayNameProgress = ECSTRING(medical,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 = ECSTRING(medical,Actions_CPR); - displayNameProgress = ECSTRING(medical,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) && EGVAR(medical,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 = ECSTRING(medical,Actions_FieldDressing); - displayNameProgress = ECSTRING(medical,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 = ECSTRING(medical,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 = ECSTRING(medical,Actions_ElasticBandage); - items[] = {"ACE_elasticBandage"}; - }; - class QuikClot: fieldDressing { - displayName = ECSTRING(medical,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 = ECSTRING(medical,Apply_Tourniquet); - displayNameProgress = ECSTRING(medical,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 EFUNC(medical,hasTourniquetAppliedTo))); - litter[] = {}; - }; - class Morphine: fieldDressing { - displayName = ECSTRING(medical,Inject_Morphine); - displayNameProgress = ECSTRING(medical,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 Adenosine: Morphine { - displayName = ECSTRING(medical,Inject_Adenosine); - displayNameProgress = ECSTRING(medical,Injecting_Adenosine); - items[] = {"ACE_adenosine"}; - litter[] = { {"All", "", {"ACE_MedicalLitter_adenosine"}} }; - }; - class Atropine: Morphine { - displayName = ECSTRING(medical,Inject_Atropine); - displayNameProgress = ECSTRING(medical,Injecting_Atropine); - items[] = {"ACE_atropine"}; - litter[] = { {"All", "", {"ACE_MedicalLitter_atropine"}} }; - }; - class Epinephrine: Morphine { - displayName = ECSTRING(medical,Inject_Epinephrine); - displayNameProgress = ECSTRING(medical,Injecting_Epinephrine); - items[] = {"ACE_epinephrine"}; - litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} }; - }; - class BloodIV: fieldDressing { - displayName = ECSTRING(medical,Actions_Blood4_1000); - displayNameProgress = ECSTRING(medical,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 = ECSTRING(medical,Actions_Blood4_500); - items[] = {"ACE_bloodIV_500"}; - }; - class BloodIV_250: BloodIV { - displayName = ECSTRING(medical,Actions_Blood4_250); - items[] = {"ACE_bloodIV_250"}; - }; - class PlasmaIV: BloodIV { - displayName = ECSTRING(medical,Actions_Plasma4_1000); - displayNameProgress = ECSTRING(medical,Transfusing_Plasma); - items[] = {"ACE_plasmaIV"}; - animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; - }; - class PlasmaIV_500: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_500); - items[] = {"ACE_plasmaIV_500"}; - }; - class PlasmaIV_250: PlasmaIV { - displayName = ECSTRING(medical,Actions_Plasma4_250); - items[] = {"ACE_plasmaIV_250"}; - }; - class SalineIV: BloodIV { - displayName = ECSTRING(medical,Actions_Saline4_1000); - displayNameProgress = ECSTRING(medical,Transfusing_Saline); - items[] = {"ACE_salineIV"}; - animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; - }; - class SalineIV_500: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_500); - items[] = {"ACE_salineIV_500"}; - }; - class SalineIV_250: SalineIV { - displayName = ECSTRING(medical,Actions_Saline4_250); - items[] = {"ACE_salineIV_250"}; - }; - class SurgicalKit: fieldDressing { - displayName = ECSTRING(medical,Use_SurgicalKit); - displayNameProgress = ECSTRING(medical,Stitching); - category = "advanced"; - items[] = {"ACE_surgicalKit"}; - treatmentLocations[] = {QEGVAR(medical,useLocation_SurgicalKit)}; - allowSelfTreatment = 0; - requiredMedic = QEGVAR(medical,medicSetting_SurgicalKit); - patientStateCondition = QEGVAR(medical,useCondition_SurgicalKit); - treatmentTime = "(count ((_this select 1) getVariable ['ACE_Medical_bandagedWounds', []]) * 5)"; - callbackSuccess = ""; - callbackProgress = QUOTE(DFUNC(treatmentAdvanced_surgicalKit_onProgress)); - itemConsumed = QEGVAR(medical,consumeItem_SurgicalKit); - animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; - litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"} }}; - }; - class PersonalAidKit: fieldDressing { - displayName = ECSTRING(medical,Use_Aid_Kit); - displayNameProgress = ECSTRING(medical,TreatmentAction); - category = "advanced"; - items[] = {"ACE_personalAidKit"}; - treatmentLocations[] = {QEGVAR(medical,useLocation_PAK)}; - allowSelfTreatment = 0; - requiredMedic = QEGVAR(medical,medicSetting_PAK); - patientStateCondition = QEGVAR(medical,useCondition_PAK); - treatmentTime = QUOTE((_this select 1) call FUNC(treatmentAdvanced_fullHealTreatmentTime)); - callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_fullHeal)); - itemConsumed = QEGVAR(medical,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 = ECSTRING(medical,Actions_CheckPulse); - displayNameProgress = ECSTRING(medical,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 = ECSTRING(medical,Actions_CheckBloodPressure); - callbackSuccess = QUOTE(DFUNC(actionCheckBloodPressure)); - displayNameProgress = ECSTRING(medical,Check_Bloodpressure_Content); - }; - class CheckResponse: CheckPulse { - displayName = ECSTRING(medical,Check_Response); - callbackSuccess = QUOTE(DFUNC(actionCheckResponse)); - displayNameProgress = ECSTRING(medical,Check_Response_Content); - allowSelfTreatment = 0; - }; - class RemoveTourniquet: Tourniquet { - displayName = ECSTRING(medical,Actions_RemoveTourniquet); - items[] = {}; - treatmentTime = 2.5; - callbackSuccess = QUOTE(DFUNC(actionRemoveTourniquet)); - condition = QUOTE([ARR_2(_this select 1, _this select 2)] call EFUNC(medical,hasTourniquetAppliedTo)); - displayNameProgress = ECSTRING(medical,RemovingTourniquet); - litter[] = {}; - }; - class CPR: fieldDressing { - displayName = ECSTRING(medical,Actions_CPR); - displayNameProgress = ECSTRING(medical,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 = ECSTRING(medical,PlaceInBodyBag); - displayNameProgress = ECSTRING(medical,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_Treatment { - 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 Bandage { // basic bandage - 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 Avulsions: Abrasion { - effectiveness = 1; - reopeningChance = 0.5; - reopeningMinDelay = 120; - reopeningMaxDelay = 200; - }; - class AvulsionsMinor: Avulsions { - effectiveness = 1; - }; - class AvulsionsMedium: Avulsions { - effectiveness = 0.9; - }; - class AvulsionsLarge: Avulsions { - effectiveness = 0.75; - }; - - 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.2; - reopeningMinDelay = 20; - reopeningMaxDelay = 1000; - }; - class CrushWoundMinor: CrushWound { - effectiveness = 1; - reopeningChance = 0.2; - }; - class CrushWoundMedium: CrushWound { - effectiveness = 0.7; - reopeningChance = 0.3; - }; - class CrushWoundLarge: CrushWound { - 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 Avulsions: Abrasion { - effectiveness = 1; - reopeningChance = 0.7; - reopeningMinDelay = 1000; - reopeningMaxDelay = 1600; - }; - class AvulsionsMinor: Avulsions { - effectiveness = 1; - }; - class AvulsionsMedium: Avulsions { - effectiveness = 0.9; - }; - class AvulsionsLarge: Avulsions { - effectiveness = 0.75; - }; - - 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.5; - reopeningMinDelay = 600; - reopeningMaxDelay = 1000; - }; - class CrushWoundMinor: CrushWound { - effectiveness = 1; - reopeningChance = 0.6; - }; - class CrushWoundMedium: CrushWound { - effectiveness = 0.7; - reopeningChance = 0.7; - }; - class CrushWoundLarge: CrushWound { - 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 = 43; - }; - class AbrasionMedium: Abrasion { - effectiveness = 3; - reopeningChance = 0.9; - }; - class AbrasionLarge: Abrasion { - effectiveness = 2.5; - reopeningChance = 1; - }; - - class Avulsions: Abrasion { - effectiveness = 2; - reopeningChance = 0.7; - reopeningMinDelay = 100; - reopeningMaxDelay = 160; - }; - class AvulsionsMinor: Avulsions { - effectiveness = 2; - }; - class AvulsionsMedium: Avulsions { - effectiveness = 1.4; - }; - class AvulsionsLarge: Avulsions { - effectiveness = 1; - }; - - class Contusion: Abrasion { - effectiveness = 2; - reopeningChance = 0; - reopeningMinDelay = 0; - reopeningMaxDelay = 0; - }; - class ContusionMinor: Contusion {}; - class ContusionMedium: Contusion {}; - class ContusionLarge: Contusion {}; - - class CrushWound: Abrasion { - effectiveness = 2; - reopeningChance = 0.5; - reopeningMinDelay = 60; - reopeningMaxDelay = 100; - }; - class CrushWoundMinor: CrushWound { - effectiveness = 2; - reopeningChance = 0.6; - }; - class CrushWoundMedium: CrushWound { - effectiveness = 1.7; - reopeningChance = 0.7; - }; - class CrushWoundLarge: CrushWound { - 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 = 5; - }; - - class Avulsions: Abrasion { - effectiveness = 0.7; - reopeningChance = 0.2; - reopeningMinDelay = 1000; - reopeningMaxDelay = 1600; - }; - class AvulsionsMinor: Avulsions { - effectiveness = 0.7; - }; - class AvulsionsMedium: Avulsions { - effectiveness = 0.65; - }; - class AvulsionsLarge: Avulsions { - effectiveness = 0.5; - }; - - 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.5; - reopeningMinDelay = 600; - reopeningMaxDelay = 1000; - }; - class CrushWoundMinor: CrushWound { - effectiveness = 0.6; - reopeningChance = 0.3; - }; - class CrushWoundMedium: CrushWound { - effectiveness = 0.5; - }; - class CrushWoundLarge: CrushWound { - effectiveness = 0.4; - }; - - class Cut: Abrasion { - effectiveness = 2; - reopeningChance = 0.2; - reopeningMinDelay = 700; - reopeningMaxDelay = 1000; - }; - class CutMinor: Cut { - effectiveness = 2; - reopeningChance = 0.3; - }; - 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, 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, 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[] = {-2, -5, 15}; - hrIncreaseNormal[] = {-10, -15, 20}; - hrIncreaseHigh[] = {-5, -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; - }; - }; -}; diff --git a/addons/medical_treatment/ACE_Settings.hpp b/addons/medical_treatment/ACE_Settings.hpp deleted file mode 100644 index 40ed2475c3..0000000000 --- a/addons/medical_treatment/ACE_Settings.hpp +++ /dev/null @@ -1,2 +0,0 @@ -class ACE_Settings { -}; diff --git a/addons/medical_treatment/CfgActions.hpp b/addons/medical_treatment/CfgActions.hpp deleted file mode 100644 index ccaac6f75b..0000000000 --- a/addons/medical_treatment/CfgActions.hpp +++ /dev/null @@ -1,6 +0,0 @@ -class CfgActions { - class None; - class Heal: None { - show = 0; - }; -}; \ No newline at end of file diff --git a/addons/medical_treatment/CfgEventHandlers.hpp b/addons/medical_treatment/CfgEventHandlers.hpp index becf395052..93e3311cf2 100644 --- a/addons/medical_treatment/CfgEventHandlers.hpp +++ b/addons/medical_treatment/CfgEventHandlers.hpp @@ -1,4 +1,3 @@ - class Extended_PreStart_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_preStart)); @@ -10,9 +9,3 @@ class Extended_PreInit_EventHandlers { init = QUOTE(call COMPILE_FILE(XEH_preInit)); }; }; - -class Extended_PostInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_postInit)); - }; -}; diff --git a/addons/medical_treatment/CfgVehicles.hpp b/addons/medical_treatment/CfgVehicles.hpp deleted file mode 100644 index bad0ee288c..0000000000 --- a/addons/medical_treatment/CfgVehicles.hpp +++ /dev/null @@ -1,58 +0,0 @@ - -#define MEDICAL_ACTION_DISTANCE 1.75 - -class CBA_Extended_EventHandlers; - -class CfgVehicles { - class Man; - class CAManBase: Man { - class ACE_SelfActions { - #include "ACE_Medical_SelfActions.hpp" - }; - - class ACE_Actions { - // Include actions in body parts for treatment while in the open - #define EXCEPTIONS exceptions[] = {}; - #define ACTION_CONDITION condition = QUOTE(EGVAR(medical,menuTypeStyle) == 0); - #include "ACE_Medical_Actions.hpp" - - // Create a consolidates medical menu for treatment while boarded - class ACE_MainActions { - class Medical { - displayName = ECSTRING(medical,Actions_Medical); - runOnHover = 1; - exceptions[] = {"isNotInside"}; - condition = QUOTE((vehicle _target != _target && vehicle _target == vehicle _player) || EGVAR(medical,menuTypeStyle)== 1); - statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - - #undef EXCEPTIONS - #undef ACTION_CONDITION - #define EXCEPTIONS exceptions[] = {"isNotInside"}; - #define ACTION_CONDITION condition = "true"; - #include "ACE_Medical_Actions.hpp" - }; - class GVAR(loadPatient) { - displayName = ECSTRING(medical,LoadPatient); - distance = 5; - condition = QUOTE(_target getVariable[ARR_2(QUOTE(QUOTE(ACE_isUnconscious)),false)] && vehicle _target == _target); - statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionLoadUnit)); - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - exceptions[] = {"isNotDragging", "isNotCarrying"}; - }; - class GVAR(UnLoadPatient) { - displayName = ECSTRING(medical,UnloadPatient); - distance = 5; - condition = QUOTE(_target getVariable[ARR_2(QUOTE(QUOTE(ACE_isUnconscious)),false)] && vehicle _target != _target); - statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionUnloadUnit)); - showDisabled = 0; - priority = 2; - icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); - exceptions[] = {"isNotDragging", "isNotCarrying", "isNotInside"}; - }; - }; - }; - }; -}; diff --git a/addons/medical_treatment/README.md b/addons/medical_treatment/README.md deleted file mode 100644 index 4534fd329f..0000000000 --- a/addons/medical_treatment/README.md +++ /dev/null @@ -1,12 +0,0 @@ -ace_medical_treatment -=============== - -Provides a basic and advanced medical system. - - -## Maintainers - -The people responsible for merging changes to this component or answering potential questions. - -- [Glowbal](https://github.com/Glowbal) -- [KoffeinFlummi](https://github.com/KoffeinFlummi) diff --git a/addons/medical_treatment/XEH_PREP.hpp b/addons/medical_treatment/XEH_PREP.hpp index 485e9f5c06..e69de29bb2 100644 --- a/addons/medical_treatment/XEH_PREP.hpp +++ b/addons/medical_treatment/XEH_PREP.hpp @@ -1,52 +0,0 @@ -PREP(actionCheckBloodPressure); -PREP(actionCheckBloodPressureLocal); -PREP(actionCheckPulse); -PREP(actionCheckPulseLocal); -PREP(actionCheckResponse); -PREP(actionDiagnose); -PREP(actionLoadUnit); -PREP(actionPlaceInBodyBag); -PREP(actionRemoveTourniquet); -PREP(actionUnloadUnit); -PREP(addToLog); -PREP(addToTriageCard); -PREP(addUnloadPatientActions); -PREP(canAccessMedicalEquipment); -PREP(canTreat); -PREP(canTreatCached); -PREP(displayPatientInformation); -PREP(displayTriageCard); -PREP(dropDownTriageCard); -PREP(getTriageStatus); -PREP(handleBandageOpening); -PREP(hasItem); -PREP(hasItems); -PREP(isBeingCarried); -PREP(isBeingDragged); -PREP(medicationEffectLoop); -PREP(modifyMedicalAction); -PREP(onMedicationUsage); -PREP(treatment); -PREP(treatmentAdvanced_CPR); -PREP(treatmentAdvanced_CPRLocal); -PREP(treatmentAdvanced_bandage); -PREP(treatmentAdvanced_bandageLocal); -PREP(treatmentAdvanced_fullHeal); -PREP(treatmentAdvanced_fullHealLocal); -PREP(treatmentAdvanced_fullHealTreatmentTime); -PREP(treatmentAdvanced_medication); -PREP(treatmentAdvanced_medicationLocal); -PREP(treatmentAdvanced_surgicalKit_onProgress); -PREP(treatmentBasic_bloodbag); -PREP(treatmentBasic_bloodbagLocal); -PREP(treatmentBasic_epipen); -PREP(treatmentBasic_morphine); -PREP(treatmentBasic_morphineLocal); -PREP(treatmentIV); -PREP(treatmentIVLocal); -PREP(treatmentTourniquet); -PREP(treatmentTourniquetLocal); -PREP(treatment_failure); -PREP(treatment_success); -PREP(useItem); -PREP(useItems); diff --git a/addons/medical_treatment/XEH_postInit.sqf b/addons/medical_treatment/XEH_postInit.sqf deleted file mode 100644 index 3c8d1244fe..0000000000 --- a/addons/medical_treatment/XEH_postInit.sqf +++ /dev/null @@ -1,23 +0,0 @@ -// ACE Medical System Visual Loop - -#include "script_component.hpp" - -["ace_interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call CBA_fnc_addEventHandler; - -//Treatment EventHandlers: -[QGVAR(actionCheckBloodPressureLocal), DFUNC(actionCheckBloodPressureLocal)] call CBA_fnc_addEventHandler; -[QGVAR(actionCheckPulseLocal), DFUNC(actionCheckPulseLocal)] call CBA_fnc_addEventHandler; -[QGVAR(addToMedicalLog), DFUNC(addToLog)] call CBA_fnc_addEventHandler; -[QGVAR(addToTriageCard), DFUNC(addToTriageCard)] call CBA_fnc_addEventHandler; -[QGVAR(treatmentAdvanced_bandageLocal), DFUNC(treatmentAdvanced_bandageLocal)] call CBA_fnc_addEventHandler; -[QGVAR(treatmentAdvanced_CPRLocal), DFUNC(treatmentAdvanced_CPRLocal)] call CBA_fnc_addEventHandler; -[QGVAR(treatmentAdvanced_fullHealLocal), DFUNC(treatmentAdvanced_fullHealLocal)] call CBA_fnc_addEventHandler; -[QGVAR(treatmentAdvanced_medicationLocal), DFUNC(treatmentAdvanced_medicationLocal)] call CBA_fnc_addEventHandler; -[QGVAR(treatmentBasic_bloodbagLocal), DFUNC(treatmentBasic_bloodbagLocal)] call CBA_fnc_addEventHandler; -[QGVAR(treatmentBasic_morphineLocal), DFUNC(treatmentBasic_morphineLocal)] call CBA_fnc_addEventHandler; -[QGVAR(treatmentIVLocal), DFUNC(treatmentIVLocal)] call CBA_fnc_addEventHandler; -[QGVAR(treatmentTourniquetLocal), DFUNC(treatmentTourniquetLocal)] call CBA_fnc_addEventHandler; -[QGVAR(actionPlaceInBodyBag), FUNC(actionPlaceInBodyBag)] call CBA_fnc_addEventHandler; - -//Handle Deleting Bodies on Server: -if (isServer) then {["ace_placedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; diff --git a/addons/medical_treatment/XEH_respawn.sqf b/addons/medical_treatment/XEH_respawn.sqf deleted file mode 100644 index 1d1c34d6c7..0000000000 --- a/addons/medical_treatment/XEH_respawn.sqf +++ /dev/null @@ -1,17 +0,0 @@ -#include "script_component.hpp" - -params ["_unit"]; - -// reset all variables. @todo GROUP respawn? -[_unit] call FUNC(init); - -// Reset captive status for respawning unit -if (!(_unit getVariable ["ACE_isUnconscious", false])) then { - [_unit, "setCaptive", "ace_unconscious", false] call EFUNC(common,statusEffect_set); -}; - -// Remove maximum unconsciousness time handler -_maxUnconHandle = _unit getVariable [QGVAR(maxUnconTimeHandle), -1]; -if (_maxUnconHandle > 0) then { - [_maxUnconHandle] call CBA_fnc_removePerFrameHandler; -}; diff --git a/addons/medical_treatment/config.cpp b/addons/medical_treatment/config.cpp index 26365d7215..60cad71f28 100644 --- a/addons/medical_treatment/config.cpp +++ b/addons/medical_treatment/config.cpp @@ -2,42 +2,16 @@ class CfgPatches { class ADDON { + name = COMPONENT_NAME; units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_medical"}; author = ECSTRING(common,ACETeam); - authors[] = {"Glowbal", "KoffeinFlummi"}; + authors[] = {""}; url = ECSTRING(main,URL); VERSION_CONFIG; }; }; -#include "CfgActions.hpp" #include "CfgEventHandlers.hpp" -#include "CfgVehicles.hpp" -#include "ACE_Medical_Treatments.hpp" -#include "ACE_Settings.hpp" - -// TODO validate and check -class ACE_newEvents { - medical_treatmentSuccess = "ace_treatmentSucceded"; - Medical_onItemAddedToTriageCard = "ace_triageCardItemAdded"; - medical_onLogEntryAdded = "ace_medicalLogEntryAdded"; - placedInBodyBag = "ace_placedInBodyBag"; - - actionPlaceInBodyBag = QGVAR(actionPlaceInBodyBag); - treatmentTourniquetLocal = QGVAR(treatmentTourniquetLocal); - treatmentIVLocal = QGVAR(treatmentIVLocal); - treatmentBasic_morphineLocal = QGVAR(treatmentBasic_morphineLocal); - treatmentBasic_bloodbagLocal = QGVAR(treatmentBasic_bloodbagLocal); - treatmentAdvanced_medicationLocal = QGVAR(treatmentAdvanced_medicationLocal); - treatmentAdvanced_fullHealLocal = QGVAR(treatmentAdvanced_fullHealLocal); - treatmentAdvanced_CPRLocal = QGVAR(treatmentAdvanced_CPRLocal); - treatmentAdvanced_bandageLocal = QGVAR(treatmentAdvanced_bandageLocal); - - addToTriageCard = QGVAR(addToTriageCard); - addToMedicalLog = QGVAR(addToMedicalLog); - actionCheckPulseLocal = QGVAR(actionCheckPulseLocal); - actionCheckBloodPressureLocal = QGVAR(actionCheckBloodPressureLocal); -}; diff --git a/addons/medical_treatment/functions/fnc_actionCheckBloodPressure.sqf b/addons/medical_treatment/functions/fnc_actionCheckBloodPressure.sqf deleted file mode 100644 index 9e66eda263..0000000000 --- a/addons/medical_treatment/functions/fnc_actionCheckBloodPressure.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* -* Author: Glowbal -* Action for checking the blood pressure of the patient -* -* Arguments: -* 0: The medic -* 1: The patient -* -* Return Value: -* None -* -* Public: No -*/ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName"]; -if (local _target) then { - [QGVAR(actionCheckBloodPressureLocal), [_caller, _target, _selectionName]] call CBA_fnc_localEvent; -} else { - [QGVAR(actionCheckBloodPressureLocal), [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; -}; diff --git a/addons/medical_treatment/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical_treatment/functions/fnc_actionCheckBloodPressureLocal.sqf deleted file mode 100644 index d952a0dd84..0000000000 --- a/addons/medical_treatment/functions/fnc_actionCheckBloodPressureLocal.sqf +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Author: Glowbal - * Local callback for checking the blood pressure of a patient - * - * Arguments: - * 0: The medic - * 1: The patient - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName"]; - -private _bloodPressure = if (!alive _target) then { - [0,0] -} else { - [_target] call EFUNC(medical,getBloodPressure) -}; -_bloodPressure params [ "_bloodPressureLow", "_bloodPressureHigh"]; -private _output = ""; -private _logOutPut = ""; -if ([_caller] call EFUNC(medical,isMedic)) then { - _output = ELSTRING(medical,Check_Bloodpressure_Output_1); - _logOutPut = format["%1/%2",round(_bloodPressureHigh),round(_bloodPressureLow)]; -} else { - if (_bloodPressureHigh > 20) then { - _output = ELSTRING(medical,Check_Bloodpressure_Output_2); - _logOutPut = ELSTRING(medical,Check_Bloodpressure_Low); - if (_bloodPressureHigh > 100) then { - _output = ELSTRING(medical,Check_Bloodpressure_Output_3); - _logOutPut = ELSTRING(medical,Check_Bloodpressure_Normal); - if (_bloodPressureHigh > 160) then { - _output = ELSTRING(medical,Check_Bloodpressure_Output_4); - _logOutPut = ELSTRING(medical,Check_Bloodpressure_High); - }; - - }; - } else { - if (random(10) > 3) then { - _output = ELSTRING(medical,Check_Bloodpressure_Output_5); - _logOutPut = ELSTRING(medical,Check_Bloodpressure_NoBloodpressure); - } else { - _output = ELSTRING(medical,Check_Bloodpressure_Output_6); - //Fail to find pressure, no logoutput - }; - }; -}; - -if (_selectionName in ["hand_l","hand_r"] && {[_unit, _selectionName] call EFUNC(medical,hasTourniquetAppliedTo)}) then { - _output = ELSTRING(medical,Check_Bloodpressure_Output_6); - _logOutPut = ""; -}; - -[QEGVAR(common,displayTextStructured), [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller], [_caller]] call CBA_fnc_targetEvent; - -if (_logOutPut != "") then { - [_target,"activity", ELSTRING(medical,Check_Bloodpressure_Log), [[_caller, false, true] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); - [_target,"quick_view", ELSTRING(medical,Check_Bloodpressure_Log), [[_caller, false, true] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); -}; diff --git a/addons/medical_treatment/functions/fnc_actionCheckPulse.sqf b/addons/medical_treatment/functions/fnc_actionCheckPulse.sqf deleted file mode 100644 index 39f196a0a5..0000000000 --- a/addons/medical_treatment/functions/fnc_actionCheckPulse.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* -* Author: Glowbal -* Action for checking the pulse or heart rate of the patient -* -* Arguments: -* 0: The medic -* 1: The patient -* -* Return Value: -* None -* -* Public: No -*/ - -#include "script_component.hpp" - -params ["_caller","_target", "_selectionName"]; -if (local _target) then { - [QGVAR(actionCheckPulseLocal), [_caller, _target, _selectionName]] call CBA_fnc_localEvent; -} else { - [QGVAR(actionCheckPulseLocal), [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; -}; diff --git a/addons/medical_treatment/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical_treatment/functions/fnc_actionCheckPulseLocal.sqf deleted file mode 100644 index 9a05bd30a6..0000000000 --- a/addons/medical_treatment/functions/fnc_actionCheckPulseLocal.sqf +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Author: Glowbal - * Local callback for checking the pulse of a patient - * - * Arguments: - * 0: The medic - * 1: The patient - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_caller", "_unit", "_selectionName"]; - -private _heartRate = _unit getVariable [QEGVAR(medical,heartRate), 80]; -if (!alive _unit) then { - _heartRate = 0; -}; -private _heartRateOutput = ELSTRING(medical,Check_Pulse_Output_5); -private _logOutPut = ELSTRING(medical,Check_Pulse_None); - -if (_heartRate > 1.0) then { - if ([_caller] call EFUNC(medical,isMedic)) then { - _heartRateOutput = ELSTRING(medical,Check_Pulse_Output_1); - _logOutPut = format["%1",round(_heartRate)]; - } else { - // non medical personel will only find a pulse/HR - _heartRateOutput = ELSTRING(medical,Check_Pulse_Output_2); - _logOutPut = ELSTRING(medical,Check_Pulse_Weak); - if (_heartRate > 60) then { - if (_heartRate > 100) then { - _heartRateOutput = ELSTRING(medical,Check_Pulse_Output_3); - _logOutPut = ELSTRING(medical,Check_Pulse_Strong); - } else { - _heartRateOutput = ELSTRING(medical,Check_Pulse_Output_4); - _logOutPut = ELSTRING(medical,Check_Pulse_Normal); - }; - }; - }; -}; - -if (_selectionName in ["hand_l","hand_r"] && {[_unit, _selectionName] call EFUNC(medical,hasTourniquetAppliedTo)}) then { - _heartRateOutput = ELSTRING(medical,Check_Pulse_Output_5); - _logOutPut = ELSTRING(medical,Check_Pulse_None); -}; - -[QEGVAR(common,displayTextStructured), [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; - -if (_logOutPut != "") then { - [_unit,"activity", ELSTRING(medical,Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); - [_unit,"quick_view", ELSTRING(medical,Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); -}; diff --git a/addons/medical_treatment/functions/fnc_actionCheckResponse.sqf b/addons/medical_treatment/functions/fnc_actionCheckResponse.sqf deleted file mode 100644 index 9cd4b572dd..0000000000 --- a/addons/medical_treatment/functions/fnc_actionCheckResponse.sqf +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Author: Glowbal - * Action for checking the response status of the patient - * - * Arguments: - * 0: The medic - * 1: The patient - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_caller", "_target"]; - -private _output = [ELSTRING(medical,Check_Response_Unresponsive), ELSTRING(medical,Check_Response_Responsive)] select ([_target] call EFUNC(common,isAwake)); - -[QEGVAR(common,displayTextStructured), [[_output, [_target] call EFUNC(common,getName)], 2, _caller], [_caller]] call CBA_fnc_targetEvent; - -[_target ,"activity", _output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target, "quick_view", _output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); diff --git a/addons/medical_treatment/functions/fnc_actionDiagnose.sqf b/addons/medical_treatment/functions/fnc_actionDiagnose.sqf deleted file mode 100644 index 22ab98b490..0000000000 --- a/addons/medical_treatment/functions/fnc_actionDiagnose.sqf +++ /dev/null @@ -1,46 +0,0 @@ -/* -* Author: Glowbal -* Action for diagnosing in basic medical -* -* Arguments: -* 0: The medic -* 1: The patient -* -* Return Value: -* None -* -* Public: No -*/ - -#include "script_component.hpp" - -private "_genericMessages"; -params ["_caller", "_target"]; - -private _genericMessages = [ELSTRING(medical,diagnoseMessage), [_target] call EFUNC(common,getName)]; - -if (alive _target) then { - _genericMessages pushBack ELSTRING(medical,diagnoseAlive); -} else { - _genericMessages pushBack ELSTRING(medical,diagnoseDead); -}; - -if (_target getVariable[QEGVAR(medical,hasLostBlood), 0] > 0) then { - if (_target getVariable[QEGVAR(medical,hasLostBlood), 0] > 1) then { - _genericMessages pushBack ELSTRING(medical,lostBloodALot); - } else { - _genericMessages pushBack ELSTRING(medical,lostBlood); - }; -} else { - _genericMessages pushBack ELSTRING(medical,noBloodloss); -}; - -if (alive _target) then { - if (_target getVariable[QEGVAR(medical,hasPain), false]) then { - _genericMessages pushBack ELSTRING(medical,inPain); - } else { - _genericMessages pushBack ELSTRING(medical,noPain); - }; -}; - -[QEGVAR(common,displayTextStructured), [_genericMessages, 3.0, _caller], [_caller]] call CBA_fnc_targetEvent; diff --git a/addons/medical_treatment/functions/fnc_actionLoadUnit.sqf b/addons/medical_treatment/functions/fnc_actionLoadUnit.sqf deleted file mode 100644 index 1fc6149d8c..0000000000 --- a/addons/medical_treatment/functions/fnc_actionLoadUnit.sqf +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Author: Glowbal - * Action for loading an unconscious or dead unit in the nearest vechile - * - * Arguments: - * 0: The medic - * 1: The patient - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -private "_vehicle"; -params ["_caller", "_target"]; - -if ([_target] call EFUNC(common,isAwake)) exitWith { - [QEGVAR(common,displayTextStructured), [[ELSTRING(medical,CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; -}; -if ([_target] call FUNC(isBeingCarried)) then { - [_caller, _target] call EFUNC(dragging,dropObject_carry); -}; -if ([_target] call FUNC(isBeingDragged)) then { - [_caller, _target] call EFUNC(dragging,dropObject); -}; - -_vehicle = [_caller, _target] call EFUNC(common,loadPerson); diff --git a/addons/medical_treatment/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical_treatment/functions/fnc_actionPlaceInBodyBag.sqf deleted file mode 100644 index c878a27ae8..0000000000 --- a/addons/medical_treatment/functions/fnc_actionPlaceInBodyBag.sqf +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Author: Glowbal - * Replace a (dead) body by a body bag - * - * Arguments: - * 0: The actor - * 1: The patient - * - * Return Value: - * body bag (will return objNull when run where target is not local) - * - * Example: - * [player, cursorTarget] call ace_medical_fnc_actionPlaceInBodyBag - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_caller", "_target"]; -TRACE_2("params",_caller,_target); - -if (!local _target) exitWith { - TRACE_1("running where local",local _target); - [QGVAR(actionPlaceInBodyBag), [_caller, _target], [_target]] call CBA_fnc_targetEvent; - objNull -}; - -if (alive _target) then { - TRACE_1("manually killing with setDead",_target); - [_target, true] call EFUNC(medical,setDead); -}; - -private _position = (getPosASL _target) vectorAdd [0, 0, 0.2]; - -private _headPos = _target modelToWorldVisual (_target selectionPosition "head"); -private _spinePos = _target modelToWorldVisual (_target selectionPosition "Spine3"); -private _dirVect = _headPos vectorFromTo _spinePos; -private _direction = _dirVect call CBA_fnc_vectDir; - -//move the body away now, so it won't physX the bodyBag object (this setPos seems to need to be called where object is local) -_target setPosASL [-5000, -5000, 0]; - -private _bodyBag = createVehicle ["ACE_bodyBagObject", _position, [], 0, ""]; - -// prevent body bag from flipping -_bodyBag setPosASL _position; -_bodyBag setDir _direction; - -["ace_placedInBodyBag", [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server - -_bodyBag diff --git a/addons/medical_treatment/functions/fnc_actionRemoveTourniquet.sqf b/addons/medical_treatment/functions/fnc_actionRemoveTourniquet.sqf deleted file mode 100644 index 0a905a6c54..0000000000 --- a/addons/medical_treatment/functions/fnc_actionRemoveTourniquet.sqf +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Author: Glowbal - * Action for removing the tourniquet on specified selection - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: SelectionName - * - * Return Value: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName"]; -TRACE_3("params",_caller,_target,_selectionName); - -// grab the required data -private _part = [_selectionName] call EFUNC(medical,selectionNameToNumber); -private _tourniquets = _target getVariable [QEGVAR(medical,tourniquets), [0,0,0,0,0,0]]; - -// Check if there is a tourniquet on this bodypart -if ((_tourniquets select _part) == 0) exitWith { - [QEGVAR(common,displayTextStructured), [ELSTRING(medical,noTourniquetOnBodyPart), 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; -}; - -// Removing the tourniquet -_tourniquets set [_part, 0]; -_target setVariable [QEGVAR(medical,tourniquets), _tourniquets, true]; - -// Adding the tourniquet item to the caller -_caller addItem "ACE_tourniquet"; - -//Handle all injected medications now that blood is flowing: -private _delayedMedications = _target getVariable [QGVAR(occludedMedications), []]; -private _updatedArray = false; -TRACE_2("meds",_part,_delayedMedications); -{ - _x params ["", "", "_medPartNum"]; - if (_part == _medPartNum) then { - TRACE_1("delayed medication call after tourniquet removeal",_x); - [QGVAR(treatmentAdvanced_medicationLocal), _x, [_target]] call CBA_fnc_targetEvent; - _delayedMedications set [_forEachIndex, -1]; - _updatedArray = true; - }; -} forEach _delayedMedications; - -if (_updatedArray) then { - _delayedMedications = _delayedMedications - [-1]; - _target setVariable [QGVAR(occludedMedications), _delayedMedications, true]; -}; diff --git a/addons/medical_treatment/functions/fnc_actionUnloadUnit.sqf b/addons/medical_treatment/functions/fnc_actionUnloadUnit.sqf deleted file mode 100644 index 75fe76bce9..0000000000 --- a/addons/medical_treatment/functions/fnc_actionUnloadUnit.sqf +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Author: Glowbal - * Action for unloading an unconscious or dead unit from a vechile - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: Drag after unload (default: false) - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_caller", "_target", ["_drag", false]]; - -// cannot unload a unit not in a vehicle. -if (vehicle _target == _target) exitWith {}; -if (([_target] call EFUNC(common,isAwake))) exitWith {}; - -["ace_unloadPersonEvent", [_target, vehicle _target, _caller], _target] call CBA_fnc_targetEvent; diff --git a/addons/medical_treatment/functions/fnc_addToLog.sqf b/addons/medical_treatment/functions/fnc_addToLog.sqf deleted file mode 100644 index 894a61b2ef..0000000000 --- a/addons/medical_treatment/functions/fnc_addToLog.sqf +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Author: Glowbal - * Add an entry to the specified log - * - * Arguments: - * 0: The patient - * 1: The log type - * 2: The message - * 3: The arguments for localization - * - * Return Value: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_unit", "_type", "_message", "_arguments"]; - -if (!local _unit) exitWith { - [QGVAR(addToMedicalLog), _this, _unit] call CBA_fnc_targetEvent; -}; - -date params ["", "", "", "_hour", "_minute"]; - -private _moment = format [ (["%1:%2", "%1:0%2"] select (_minute < 10)), _hour, _minute]; -private _logVarName = format[QEGVAR(medical,logFile_%1), _type]; - -private _log = _unit getVariable [_logVarName, []]; -if (count _log >= 8) then { - private _newLog = []; - { - // ensure the first element will not be added - if (_forEachIndex > 0) then { - _newLog pushBack _x; - }; - } forEach _log; - _log = _newLog; -}; -_log pushBack [_message, _moment, _type, _arguments]; - -_unit setVariable [_logVarName, _log, true]; -["ace_medicalLogEntryAdded", [_unit, _type, _message, _arguments]] call CBA_fnc_localEvent; - -private _logs = _unit getVariable [QEGVAR(medical,allLogs), []]; -if !(_logVarName in _logs) then { - _logs pushBack _logVarName; - _unit setVariable [QEGVAR(medical,allLogs), _logs, true]; -}; diff --git a/addons/medical_treatment/functions/fnc_addToTriageCard.sqf b/addons/medical_treatment/functions/fnc_addToTriageCard.sqf deleted file mode 100644 index ddbbee7d38..0000000000 --- a/addons/medical_treatment/functions/fnc_addToTriageCard.sqf +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Author: Glowbal - * Add an entry to the triage card - * - * Arguments: - * 0: The patient - * 1: The new item classname - * - * Return Value: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_unit", "_newItem"]; - -if (!local _unit) exitWith { - [QGVAR(addToTriageCard), _this, _unit] call CBA_fnc_targetEvent; -}; - -private _log = _unit getVariable [QEGVAR(medical,triageCard), []]; -private _inList = false; -private _amount = 1; -{ - if ((_x select 0) == _newItem) exitWith { - private _info = _log select _forEachIndex; - _info set [1,(_info select 1) + 1]; - _info set [2, CBA_missionTime]; - _log set [_forEachIndex, _info]; - - _amount = (_info select 1); - _inList = true; - }; -} forEach _log; - -if (!_inList) then { - _log pushBack [_newItem, 1, CBA_missionTime]; -}; - -_unit setVariable [QEGVAR(medical,triageCard), _log, true]; -["ace_triageCardItemAdded", [_unit, _newItem, _amount]] call CBA_fnc_localEvent; diff --git a/addons/medical_treatment/functions/fnc_addUnloadPatientActions.sqf b/addons/medical_treatment/functions/fnc_addUnloadPatientActions.sqf deleted file mode 100644 index 2725365bc1..0000000000 --- a/addons/medical_treatment/functions/fnc_addUnloadPatientActions.sqf +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Author: esteldunedain - * Create one unload action per unconscious passenger - * - * Argument: - * 0: Vehicle - * 1: Player - * 3: Parameters - * - * Return value: - * Children actions - * - * Public: No - */ -#include "script_component.hpp" -params ["_vehicle", "_player", "_parameters"]; - -private _actions = []; - -{ - private _unit = _x; - if (_unit != _player && {(alive _unit) && {_unit getVariable ["ACE_isUnconscious", false]}}) then { - _actions pushBack - [ - [ - str(_unit), - [_unit, true] call EFUNC(common,getName), - "", - {[_player, (_this select 2) select 0] call FUNC(actionUnloadUnit);}, - {true}, - {}, - [_unit] - ] call EFUNC(interact_menu,createAction), - [], - _unit - ]; - }; -} forEach crew _vehicle; - -_actions diff --git a/addons/medical_treatment/functions/fnc_canTreat.sqf b/addons/medical_treatment/functions/fnc_canTreat.sqf index 61a4626534..1c78eb1e43 100644 --- a/addons/medical_treatment/functions/fnc_canTreat.sqf +++ b/addons/medical_treatment/functions/fnc_canTreat.sqf @@ -23,7 +23,7 @@ params ["_caller", "_target", "_selectionName", "_className"]; if !(_target isKindOf "CAManBase") exitWith { false }; -private _config = (ConfigFile >> "ACE_Medical_Actions" >> (["Basic", "Advanced"] select (EGVAR(medical,level)>=2)) >> _className); +private _config = (ConfigFile >> "ACE_Medical_Actions" >> (["Basic", "Advanced"] select (GVAR(level)>=2)) >> _className); if !(isClass _config) exitwith {false}; @@ -39,7 +39,7 @@ private _medicRequired = if (isNumber (_config >> "requiredMedic")) then { }; 0; }; -if !([_caller, _medicRequired] call EFUNC(medical,isMedic)) exitwith { false }; +if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith { false }; private _items = getArray (_config >> "items"); if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith { false }; @@ -68,13 +68,13 @@ private _patientStateCondition = if (isText(_config >> "patientStateCondition")) } else { getNumber(_config >> "patientStateCondition") }; -if (_patientStateCondition == 1 && {!([_target] call EFUNC(medical,isInStableCondition))}) exitwith {false}; +if (_patientStateCondition == 1 && {!([_target] call FUNC(isInStableCondition))}) exitwith {false}; private _locations = getArray (_config >> "treatmentLocations"); if ("All" in _locations) exitwith { true }; -private _medFacility = {([_caller] call EFUNC(medical,isInMedicalFacility)) || ([_target] call EFUNC(medical,isInMedicalFacility))}; -private _medVeh = {([_caller] call EFUNC(medical,isInMedicalVehicle)) || ([_target] call EFUNC(medical,isInMedicalVehicle))}; +private _medFacility = {([_caller] call FUNC(isInMedicalFacility)) || ([_target] call FUNC(isInMedicalFacility))}; +private _medVeh = {([_caller] call FUNC(isInMedicalVehicle)) || ([_target] call FUNC(isInMedicalVehicle))}; { if (_x == "field") exitwith {_return = true;}; diff --git a/addons/medical_treatment/functions/fnc_displayPatientInformation.sqf b/addons/medical_treatment/functions/fnc_displayPatientInformation.sqf deleted file mode 100644 index 58224ac5b9..0000000000 --- a/addons/medical_treatment/functions/fnc_displayPatientInformation.sqf +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Author: Glowbal - * Displays the patient information for given unit. - * - * Arguments: - * 0: The Unit - * 1: Show (default: true) - * 2: Selection (default: 0) - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" -#define MAX_DISTANCE 10 - -// Exit for basic medical -if (EGVAR(medical,level) < 2) exitWith {}; - -params ["_target", ["_show", true], ["_selectionN", 0]]; - -GVAR(currentSelectedSelectionN) = [0, _selectionN] select (IS_SCALAR(_selectionN)); -GVAR(displayPatientInformationTarget) = [ObjNull, _target] select _show; - -if (_show) then { - ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutRsc [QGVAR(DisplayInformation),"PLAIN"]; - - [{ - private ["_target", "_display", "_alphaLevel", "_damaged", "_availableSelections", "_openWounds", "_selectionBloodLoss", "_red", "_green", "_blue", "_alphaLevel", "_allInjuryTexts", "_lbCtrl", "_genericMessages"]; - params ["_args", "_idPFH"]; - _args params ["_target", "_selectionN"]; - - if (GVAR(displayPatientInformationTarget) != _target || GVAR(currentSelectedSelectionN) != _selectionN) exitwith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - if (ACE_player distance _target > MAX_DISTANCE) exitwith { - ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; - [_idPFH] call CBA_fnc_removePerFrameHandler; - [QEGVAR(common,displayTextStructured), [[ELSTRING(medical,DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player], [ACE_player]] call CBA_fnc_targetEvent; - }; - - disableSerialization; - private _display = uiNamespace getVariable QGVAR(DisplayInformation); - if (isnil "_display") exitwith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - - private _allInjuryTexts = []; - private _genericMessages = []; - - private _partText = [ELSTRING(medical,Head), ELSTRING(medical,Torso), ELSTRING(medical,LeftArm) ,ELSTRING(medical,RightArm) ,ELSTRING(medical,LeftLeg), ELSTRING(medical,RightLeg)] select _selectionN; - _genericMessages pushback [localize _partText, [1, 1, 1, 1]]; - - if (_target getVariable[QEGVAR(medical,isBleeding), false]) then { - _genericMessages pushback [localize ELSTRING(medical,Status_Bleeding), [1, 0.1, 0.1, 1]]; - }; - if (_target getVariable[QEGVAR(medical,hasLostBlood), 0] > 1) then { - _genericMessages pushback [localize ELSTRING(medical,Status_Lost_Blood), [1, 0.1, 0.1, 1]]; - }; - - if (((_target getVariable [QEGVAR(medical,tourniquets), [0,0,0,0,0,0]]) select _selectionN) > 0) then { - _genericMessages pushback [localize ELSTRING(medical,Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; - }; - if (_target getVariable[QEGVAR(medical,hasPain), false]) then { - _genericMessages pushback [localize ELSTRING(medical,Status_Pain), [1, 1, 1, 1]]; - }; - - private _totalIvVolume = 0; - { - private _value = _target getVariable _x; - if !(isnil "_value") then { - _totalIvVolume = _totalIvVolume + (_target getVariable [_x, 0]); - }; - } foreach EGVAR(medical,IVBags); - - if (_totalIvVolume >= 1) then { - _genericMessages pushback [format[localize ELSTRING(medical,receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; - }; - - private _damaged = [false, false, false, false, false, false]; - private _selectionBloodLoss = [0,0,0,0,0,0]; - - private _openWounds = _target getVariable [QEGVAR(medical,openWounds), []]; - { - _x params ["", "_x1", "_selectionX", "_amountOf", "_x4"]; - // Find how much this bodypart is bleeding - if (_amountOf > 0) then { - _damaged set [_selectionX, true]; - _selectionBloodLoss set [_selectionX, (_selectionBloodLoss select _selectionX) + (20 * (_x4 * _amountOf))]; - - if (_selectionN == _selectionX) then { - // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] - if (_amountOf >= 1) then { - // TODO localization - _allInjuryTexts pushback [format["%2x %1", (EGVAR(medical,AllWoundInjuryTypes) select _x1) select 6, ceil _amountOf], [1,1,1,1]]; - } else { - // TODO localization - _allInjuryTexts pushback [format["Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select _x1) select 6], [1,1,1,1]]; - }; - }; - }; - } foreach _openWounds; - - private _bandagedwounds = _target getVariable [QEGVAR(medical,bandagedWounds), []]; - { - _x params ["", "", "_selectionX", "_amountOf", "_x4"]; - // Find how much this bodypart is bleeding - if !(_damaged select _selectionX) then { - _selectionBloodLoss set [_selectionX, (_selectionBloodLoss select _selectionX) + (20 * (_x4 * _amountOf))]; - }; - if (_selectionN == _selectionX) then { - // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] - if (_amountOf > 0) then { - if (_amountOf >= 1) then { - // TODO localization - _allInjuryTexts pushback [format["[B] %2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, ceil _amountOf], [0.88,0.7,0.65,1]]; - } else { - // TODO localization - _allInjuryTexts pushback [format["[B] Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [0.88,0.7,0.65,1]]; - }; - }; - }; - } foreach _bandagedwounds; - - // Handle the body image coloring - private _availableSelections = [50,51,52,53,54,55]; - { - private _total = _x; - private _red = 1; - private _green = 1; - private _blue = 1; - - if (_total > 0) then { - if (_damaged select _forEachIndex) then { - _green = (0.9 - _total) max 0; - _blue = _green; - } else { - _green = (0.9 - _total) max 0; - _red = _green; - //_blue = _green; - }; - }; - (_display displayCtrl (_availableSelections select _foreachIndex)) ctrlSetTextColor [_red, _green, _blue, 1.0]; - } foreach _selectionBloodLoss; - - private _lbCtrl = (_display displayCtrl 200); - lbClear _lbCtrl; - { - _x params ["_add", "_color"]; - _lbCtrl lbAdd _add; - _lbCtrl lbSetColor [_foreachIndex, _color]; - } foreach _genericMessages; - - private _amountOfGeneric = count _genericMessages; - { - _x params ["_add", "_color"]; - _lbCtrl lbAdd _add; - _lbCtrl lbSetColor [_foreachIndex + _amountOfGeneric, _color]; - } foreach _allInjuryTexts; - if (count _allInjuryTexts == 0) then { - _lbCtrl lbAdd (localize ELSTRING(medical,NoInjuriesBodypart)); - }; - - private _logCtrl = (_display displayCtrl 302); - lbClear _logCtrl; - - private _logs = _target getVariable [QGVAR(logFile_Activity), []]; - { - _x params ["_message", "_moment", "_type", "_arguments"]; - if (isLocalized _message) then { - _message = localize _message; - }; - - { - if (_x isEqualType "" && {isLocalized _x}) then { - _arguments set [_foreachIndex, localize _x]; - }; - } foreach _arguments; - _message = format([_message] + _arguments); - _logCtrl lbAdd format["%1 %2", _moment, _message]; - } foreach _logs; - - private _triageStatus = [_target] call FUNC(getTriageStatus); - (_display displayCtrl 303) ctrlSetText (_triageStatus select 0); - (_display displayCtrl 303) ctrlSetBackgroundColor (_triageStatus select 2); - - }, 0, [_target, GVAR(currentSelectedSelectionN)]] call CBA_fnc_addPerFrameHandler; - -} else { - ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; -}; diff --git a/addons/medical_treatment/functions/fnc_displayTriageCard.sqf b/addons/medical_treatment/functions/fnc_displayTriageCard.sqf deleted file mode 100644 index a8d2643b3e..0000000000 --- a/addons/medical_treatment/functions/fnc_displayTriageCard.sqf +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Author: Glowbal - * Display triage card for a unit - * - * Arguments: - * 0: The unit - * 1: Show (default: true) - * - * Return Value: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_target", ["_show", true]]; - -GVAR(TriageCardTarget) = if (_show) then {_target} else {ObjNull}; - -if (_show) then { - //("ACE_MedicalTriageCard" call BIS_fnc_rscLayer) cutRsc [QGVAR(triageCard),"PLAIN"]; - createDialog QGVAR(triageCard); - - [{ - params ["_args", "_idPFH"]; - _args params ["_target"]; - if (GVAR(TriageCardTarget) != _target) exitWith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - - disableSerialization; - private _display = uiNamespace getVariable QGVAR(triageCard); - if (isNil "_display") exitWith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - - private _triageCardTexts = []; - - // TODO fill the lb with the appropiate information for the patient - private _lbCtrl = (_display displayCtrl 200); - lbClear _lbCtrl; - - private _log = _target getVariable [QGVAR(triageCard), []]; - { - _x params ["_item", "_amount"]; - private _message = _item; - if (isClass(configFile >> "CfgWeapons" >> _item)) then { - _message = getText(configFile >> "CfgWeapons" >> _item >> "DisplayName"); - } else { - if (isLocalized _message) then { - _message = localize _message; - }; - }; - _triageCardTexts pushBack format["%1x - %2", _amount, _message]; - } forEach _log; - - if (count _triageCardTexts == 0) then { - _lbCtrl lbAdd (localize ELSTRING(medical,TriageCard_NoEntry)); - }; - { - _lbCtrl lbAdd _x; - } forEach _triageCardTexts; - - private _triageStatus = [_target] call FUNC(getTriageStatus); - _triageStatus params ["_text", "", "_color"]; - - (_display displayCtrl 2000) ctrlSetText _text; - (_display displayCtrl 2000) ctrlSetBackgroundColor _color; - - }, 0, [_target]] call CBA_fnc_addPerFrameHandler; - -} else { - //("ACE_MedicalTriageCard" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; - closeDialog 7010; -}; diff --git a/addons/medical_treatment/functions/fnc_dropDownTriageCard.sqf b/addons/medical_treatment/functions/fnc_dropDownTriageCard.sqf deleted file mode 100644 index c499283446..0000000000 --- a/addons/medical_treatment/functions/fnc_dropDownTriageCard.sqf +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Author: Glowbal - * Display triage card for a unit - * - * Arguments: - * 0: Show - * - * Return Value: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_show"]; - -disableSerialization; -private _display = uiNamespace getVariable QGVAR(triageCard); -if (isNil "_display") exitWith {}; - -private _pos = [0,0,0,0]; -if (_show) then { - _pos = ctrlPosition (_display displayCtrl 2001); -}; -for "_idc" from 2002 to 2006 step 1 do { - _pos set [1, (_pos select 1) + (_pos select 3)]; - private _ctrl = (_display displayCtrl _idc); - _ctrl ctrlSetPosition _pos; - _ctrl ctrlCommit 0; -}; diff --git a/addons/medical_treatment/functions/fnc_getTriageStatus.sqf b/addons/medical_treatment/functions/fnc_getTriageStatus.sqf deleted file mode 100644 index f0fdb5e9ac..0000000000 --- a/addons/medical_treatment/functions/fnc_getTriageStatus.sqf +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Author: Glowbal - * Get the triage status and information from a unit - * - * Arguments: - * 0: The unit - * - * Return Value: - * 0: Name - * 1: Status ID - * 2: Color > - * - * Public: Yes - */ - -#include "script_component.hpp" - -private ["_unit","_return","_status"]; -params ["_unit"]; -_status = _unit getVariable [QEGVAR(medical,triageLevel), -1]; -_return = switch (_status) do { - case 1: {[localize ELSTRING(medical,Triage_Status_Minor), 1, [0, 0.5, 0, 0.9]]}; - case 2: {[localize ELSTRING(medical,Triage_Status_Delayed), 2, [0.7, 0.5, 0, 0.9]]}; - case 3: {[localize ELSTRING(medical,Triage_Status_Immediate), 3, [0.4, 0.07, 0.07, 0.9]]}; - case 4: {[localize ELSTRING(medical,Triage_Status_Deceased), 4, [0, 0, 0, 0.9]]}; - default {[localize ELSTRING(medical,Triage_Status_None), 0, [0, 0, 0, 0.9]]}; -}; -_return diff --git a/addons/medical_treatment/functions/fnc_handleBandageOpening.sqf b/addons/medical_treatment/functions/fnc_handleBandageOpening.sqf deleted file mode 100644 index e13bdf1ea9..0000000000 --- a/addons/medical_treatment/functions/fnc_handleBandageOpening.sqf +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Author: Glowbal - * Handles the bandage of a patient. - * - * Arguments: - * 0: The target - * 1: The impact - * 2: Selection part number - * 3: Injury index - * 4: Injury - * 5: Used Bandage type - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -private ["_className", "_reopeningChance", "_reopeningMinDelay", "_reopeningMaxDelay", "_config", "_woundTreatmentConfig", "_bandagedWounds", "_exist", "_injuryId", "_existingInjury", "_delay", "_openWounds", "_selectedInjury", "_bandagedInjury"]; -params ["_target", "_impact", "_part", "_injuryIndex", "_injury", "_bandage"]; - -private _classID = _injury select 1; -private _className = EGVAR(medical,woundClassNames) select _classID; - -// default, just in case.. -private _reopeningChance = 0.1; -private _reopeningMinDelay = 120; -private _reopeningMaxDelay = 200; - -// Get the default values for the used bandage -private _config = (ConfigFile >> "ace_medical_treatment" >> "Bandaging"); -if (isClass (_config >> _bandage)) then { - _config = (_config >> _bandage); - _reopeningChance = getNumber (_config >> "reopeningChance"); - _reopeningMinDelay = getNumber (_config >> "reopeningMinDelay"); - _reopeningMaxDelay = getNumber (_config >> "reopeningMaxDelay") max _reopeningMinDelay; -} else { - ACE_LOGWARNING_2("No config for bandage [%1] config base [%2]", _bandage, _config); -}; - -if (isClass (_config >> _className)) then { - private _woundTreatmentConfig = (_config >> _className); - if (isNumber (_woundTreatmentConfig >> "reopeningChance")) then { - _reopeningChance = getNumber (_woundTreatmentConfig >> "reopeningChance"); - }; - if (isNumber (_woundTreatmentConfig >> "reopeningMinDelay")) then { - _reopeningMinDelay = getNumber (_woundTreatmentConfig >> "reopeningMinDelay"); - }; - if (isNumber (_woundTreatmentConfig >> "reopeningMaxDelay")) then { - _reopeningMaxDelay = getNumber (_woundTreatmentConfig >> "reopeningMaxDelay") max _reopeningMinDelay; - }; -} else { - ACE_LOGWARNING_2("No config for wound type [%1] config base [%2]", _className, _config); -}; -TRACE_5("configs",_bandage,_className,_reopeningChance,_reopeningMinDelay,_reopeningMaxDelay); - -private _bandagedWounds = _target getVariable [QEGVAR(medical,bandagedWounds), []]; -private _injuryType = _injury select 1; -private _exist = false; -private _bandagedInjury = []; -{ - if ((_x select 1) == _injuryType && (_x select 2) == (_injury select 2)) exitwith { - _exist = true; - _existingInjury = _x; - _existingInjury set [3, (_existingInjury select 3) + _impact]; - _bandagedWounds set [_foreachIndex, _existingInjury]; - - _bandagedInjury = _existingInjury; - }; -} foreach _bandagedWounds; - -if !(_exist) then { - // [ID, classID, bodypart, percentage treated, bloodloss rate] - _bandagedInjury = [_injury select 0, _injury select 1, _injury select 2, _impact, _injury select 4]; - _bandagedWounds pushback _bandagedInjury; -}; - -_target setVariable [QEGVAR(medical,bandagedWounds), _bandagedWounds, true]; - -TRACE_1("",_reopeningChance); -// Check if we are ever going to reopen this -if (random(1) <= _reopeningChance) then { - _delay = _reopeningMinDelay + random(_reopeningMaxDelay - _reopeningMinDelay); - TRACE_1("Will open",_delay); - [{ - params ["_target", "_impact", "_part", "_injuryIndex", "_injury"]; - TRACE_5("params",_target,_impact,_part,_injuryIndex,_injury); - - //if (alive _target) then { - private _openWounds = _target getVariable [QEGVAR(medical,openWounds), []]; - if ((count _openWounds) - 1 < _injuryIndex) exitwith {}; - private _selectedInjury = _openWounds select _injuryIndex; - if (_selectedInjury select 1 == _injury select 1 && (_selectedInjury select 2) == (_injury select 2)) then { // matching the IDs - - private _bandagedWounds = _target getVariable [QEGVAR(medical,bandagedWounds), []]; - private _exist = false; - private _injuryId = _injury select 1; - { - if ((_x select 1) == _injuryId && (_x select 2) == (_injury select 2)) exitwith { - _exist = true; - _existingInjury = _x; - _existingInjury set [3, ((_existingInjury select 3) - _impact) max 0]; - _bandagedWounds set [_foreachIndex, _existingInjury]; - }; - } foreach _bandagedWounds; - - if (_exist) then { - TRACE_2("Reopening Wound",_bandagedWounds,_openWounds); - _selectedInjury set [3, (_selectedInjury select 3) + _impact]; - _openWounds set [_injuryIndex, _selectedInjury]; - _target setVariable [QEGVAR(medical,bandagedWounds), _bandagedWounds, true]; - _target setVariable [QEGVAR(medical,openWounds), _openWounds, true]; - }; - }; - // Otherwise something went wrong, we we don't reopen them.. - //}; - }, [_target, _impact, _part, _injuryIndex, +_injury], _delay] call CBA_fnc_waitAndExecute; -}; diff --git a/addons/medical_treatment/functions/fnc_hasItem.sqf b/addons/medical_treatment/functions/fnc_hasItem.sqf deleted file mode 100644 index 49951bb485..0000000000 --- a/addons/medical_treatment/functions/fnc_hasItem.sqf +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Author: Glowbal - * Check if the item is present between the patient and the medic - * - * Arguments: - * 0: Medic - * 1: Patient - * 2: Item - * - * ReturnValue: - * - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_medic", "_patient", "_item"]; - -if (isNil QEGVAR(medical,setting_allowSharedEquipment)) then { - EGVAR(medical,setting_allowSharedEquipment) = true; -}; -if (EGVAR(medical,setting_allowSharedEquipment) && {[_patient, _item] call EFUNC(common,hasItem)}) exitWith { - true -}; - -if ([_medic, _item] call EFUNC(common,hasItem)) exitWith { - true -}; - -private _return = false; -if ((vehicle _medic != _medic) && {[vehicle _medic] call FUNC(isMedicalVehicle)}) then { - private _crew = crew vehicle _medic; - { - if ([_medic, _x] call FUNC(canAccessMedicalEquipment) && {([_x, _item] call EFUNC(common,hasItem))}) exitWith { - _return = true; - }; - } forEach _crew; -}; - -_return diff --git a/addons/medical_treatment/functions/fnc_hasItems.sqf b/addons/medical_treatment/functions/fnc_hasItems.sqf deleted file mode 100644 index d3e79c0a54..0000000000 --- a/addons/medical_treatment/functions/fnc_hasItems.sqf +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Author: Glowbal - * Check if all items are present between the patient and the medic. - * - * Arguments: - * 0: Medic - * 1: Patient - * 2: Items > - * - * ReturnValue: - * Has the items - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_medic", "_patient", "_items"]; - -private _return = true; -{ - // - if (_x isEqualType [] && {({[_medic, _patient, _x] call FUNC(hasItem)}count _x == 0)}) exitwith { - _return = false; - }; - if (_x isEqualType "" && {!([_medic, _patient, _x] call FUNC(hasItem))}) exitwith { - _return = false; - }; -}foreach _items; - -_return diff --git a/addons/medical_treatment/functions/fnc_isBeingCarried.sqf b/addons/medical_treatment/functions/fnc_isBeingCarried.sqf deleted file mode 100644 index b47c5e475f..0000000000 --- a/addons/medical_treatment/functions/fnc_isBeingCarried.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: PabstMirror - * Returns if a target is being carried. (from ace_dragging) - * - * Arguments: - * 0: Target Unit - * - * Return Value: - * Is being carried - * - * Example: - * [bob] call ace_medical_fnc_isBeingCarried - * - * Public: No - */ -#include "script_component.hpp" - -params ["_target"]; - -private "_owner"; - -_owner = _target getVariable [QEGVAR(common,owner), objNull]; - -if (isNull _owner) exitWith {false}; - -(_owner getVariable [QEGVAR(dragging,carriedObject), objNull]) == _target diff --git a/addons/medical_treatment/functions/fnc_isBeingDragged.sqf b/addons/medical_treatment/functions/fnc_isBeingDragged.sqf deleted file mode 100644 index 929b48ccb7..0000000000 --- a/addons/medical_treatment/functions/fnc_isBeingDragged.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: PabstMirror - * Returns if a target is being dragged. (from ace_dragging) - * - * Arguments: - * 0: Target Unit - * - * Return Value: - * Is being dragged - * - * Example: - * [bob] call ace_medical_fnc_isBeingDragged - * - * Public: No - */ -#include "script_component.hpp" - -params ["_target"]; - -private "_owner"; - -_owner = _target getVariable [QEGVAR(common,owner), objNull]; - -if (isNull _owner) exitWith {false}; - -(_owner getVariable [QEGVAR(dragging,draggedObject), objNull]) == _target diff --git a/addons/medical_treatment/functions/fnc_medicationEffectLoop.sqf b/addons/medical_treatment/functions/fnc_medicationEffectLoop.sqf deleted file mode 100644 index f7cdfdad07..0000000000 --- a/addons/medical_treatment/functions/fnc_medicationEffectLoop.sqf +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Author: Glowbal, esteldunedain - * Medication effect loop for an injection. - * - * Arguments: - * 0: Unit - * 1: Name of the Variable that is affected - * 2: Proportion of the effect applied - * 3: Rate at which the effect is applied - * 4: Viscosity adjustment rate - * 5: Pain reduction rate - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit", "_variableName", "_amountDecreased","_decreaseRate", "_viscosityAdjustmentRate", "_painReduceRate"]; - -// If the unit died the loop is finished -if (!alive _unit) exitWith {}; - -// If locality changed finish the local loop -if (!local _unit) exitWith {}; - -// Apply medicinal effect -private _usedMeds = (_unit getVariable [_variableName, 0]) - _decreaseRate; -_unit setVariable [_variableName, _usedMeds]; - -// Restore the viscosity while the medication is leaving the system -_unit setVariable [QEGVAR(medical,peripheralResistance), ((_unit getVariable [QEGVAR(medical,peripheralResistance), 100]) - _viscosityAdjustmentRate) max 0]; -_unit setVariable [QEGVAR(medical,painSuppress), ((_unit getVariable [QEGVAR(medical,painSuppress), 0]) - _painReduceRate) max 0]; - -// Exit if the medication has finished it's effect -_amountDecreased = _amountDecreased + _decreaseRate; -if (_amountDecreased >= 1 || (_usedMeds <= 0) || !alive _unit) exitWith {}; - -// Schedule the loop to be executed again 1 sec later -[DFUNC(medicationEffectLoop), [_unit, _variableName, _amountDecreased, _decreaseRate, _viscosityAdjustmentRate, _painReduceRate], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical_treatment/functions/fnc_modifyMedicalAction.sqf b/addons/medical_treatment/functions/fnc_modifyMedicalAction.sqf deleted file mode 100644 index 6017ed9122..0000000000 --- a/addons/medical_treatment/functions/fnc_modifyMedicalAction.sqf +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Author: esteldunedain - * Modify the visuals of a medical action point. - * On Basic medical: modify the icon color based on damage on that body part. - * - * Arguments: - * 0: The Patient Unit - * 1: The Diagnosing Unit - * 2: Selection Number - * 3: The action to modify - * - * ReturnValue: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_target", "_player", "_partNumber", "_actionData"]; - -private _bloodLossOnSelection = 0; -// Add all bleeding from wounds on selection -{ - _x params ["", "", "_selectionX", "_amountOf", "_percentageOpen"]; - if (_selectionX == _partNumber) then { - _bloodLossOnSelection = _bloodLossOnSelection + (_amountOf * _percentageOpen); - }; -} forEach (_target getvariable [QEGVAR(medical,openWounds), []]); - -if (_bloodLossOnSelection >=1 ) then { - _actionData set [2, QPATHTOEF(medical,UI\icons\medical_crossRed.paa)]; -} else { - if (_bloodLossOnSelection > 0 ) then { - _actionData set [2, QPATHTOEF(medical,UI\icons\medical_crossYellow.paa)]; - }; -}; diff --git a/addons/medical_treatment/functions/fnc_onMedicationUsage.sqf b/addons/medical_treatment/functions/fnc_onMedicationUsage.sqf deleted file mode 100644 index 5683eb7486..0000000000 --- a/addons/medical_treatment/functions/fnc_onMedicationUsage.sqf +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Author: Glowbal - * Handles the medication given to a patient. - * - * Arguments: - * 0: The patient - * 1: Medication Treatment classname - * 2: The medication treatment variablename - * 3: Max dosage - * 4: The time in the system - * 5: Incompatable medication > - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_target", "_className", "_variable", "_maxDosage", "_timeInSystem", "_incompatabileMeds", "_viscosityChange", "_painReduce"]; -TRACE_8("params",_target,_className,_variable,_maxDosage,_timeInSystem,_incompatabileMeds,_viscosityChange,_painReduce); - -private _foundEntry = false; -private _allUsedMedication = _target getVariable [QEGVAR(medical,allUsedMedication), []]; -{ - _x params ["_variableX", "_allMedsFromClassname"]; - if (_variableX== _variable) exitWith { - if !(_className in _allMedsFromClassname) then { - _allMedsFromClassname pushBack _className; - _x set [1, _allMedsFromClassname]; - _allUsedMedication set [_forEachIndex, _x]; - _target setVariable [QEGVAR(medical,allUsedMedication), _allUsedMedication]; - }; - _foundEntry = true; - }; -} forEach _allUsedMedication; - -if (!_foundEntry) then { - _allUsedMedication pushBack [_variable, [_className]]; - _target setVariable [QEGVAR(medical,allUsedMedication), _allUsedMedication]; -}; - - -private _usedMeds = _target getVariable [_variable, 0]; -if (_usedMeds >= floor (_maxDosage + round(random(2))) && _maxDosage >= 1 && GVAR(enableOverdosing)) then { - [_target] call EFUNC(medical,setDead); -}; - -private _hasOverDosed = 0; -{ - _x params ["_med", "_limit"]; - { - _x params ["", "_classNamesUsed"]; - if ({_x == _med} count _classNamesUsed > _limit) then { - _hasOverDosed = _hasOverDosed + 1; - }; - } forEach _allUsedMedication; -} forEach _incompatabileMeds; - -if (_hasOverDosed > 0 && GVAR(enableOverdosing)) then { - private _medicationConfig = (configFile >> "ace_medical_treatment" >> "Medication"); - private _onOverDose = getText (_medicationConfig >> "onOverDose"); - if (isClass (_medicationConfig >> _className)) then { - _medicationConfig = (_medicationConfig >> _className); - if (isText (_medicationConfig >> "onOverDose")) then { _onOverDose = getText (_medicationConfig >> "onOverDose"); }; - }; - if (isNil _onOverDose) then { - _onOverDose = compile _onOverDose; - } else { - _onOverDose = missionNamespace getVariable _onOverDose; - }; - [_target, _className] call _onOverDose; -}; - -private _decreaseAmount = 1 / _timeInSystem; -private _viscosityAdjustment = _viscosityChange / _timeInSystem; - -// Run the loop that computes the effect of the medication over time -[_target, _variable, 0, _decreaseAmount, _viscosityAdjustment, _painReduce / _timeInSystem] call FUNC(medicationEffectLoop); diff --git a/addons/medical_treatment/functions/fnc_treatment.sqf b/addons/medical_treatment/functions/fnc_treatment.sqf index 2c411d0491..453d074f98 100644 --- a/addons/medical_treatment/functions/fnc_treatment.sqf +++ b/addons/medical_treatment/functions/fnc_treatment.sqf @@ -26,7 +26,7 @@ if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exit if !(_target isKindOf "CAManBase") exitWith {false}; private _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className); -if (EGVAR(medical,level) >= 2) then { +if (GVAR(level) >= 2) then { _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className); }; @@ -45,7 +45,7 @@ private _medicRequired = if (isNumber (_config >> "requiredMedic")) then { 0; }; -if !([_caller, _medicRequired] call EFUNC(medical,isMedic)) exitwith {false}; +if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false}; private _allowedSelections = getArray (_config >> "allowedSelections"); if !("All" in _allowedSelections || {(_selectionName in _allowedSelections)}) exitwith {false}; @@ -77,7 +77,7 @@ private _patientStateCondition = if (isText(_config >> "patientStateCondition")) } else { getNumber(_config >> "patientStateCondition") }; -if (_patientStateCondition == 1 && {!([_target] call EFUNC(medical,isInStableCondition))}) exitwith {false}; +if (_patientStateCondition == 1 && {!([_target] call FUNC(isInStableCondition))}) exitwith {false}; // Check allowed locations private _locations = getArray (_config >> "treatmentLocations"); @@ -85,8 +85,8 @@ private _locations = getArray (_config >> "treatmentLocations"); if ("All" in _locations) then { _return = true; } else { - private _medFacility = {([_caller] call EFUNC(medical,isInMedicalFacility)) || ([_target] call EFUNC(medical,isInMedicalFacility))}; - private _medVeh = {([_caller] call EFUNC(medical,isInMedicalVehicle)) || ([_target] call EFUNC(medical,isInMedicalVehicle))}; + private _medFacility = {([_caller] call FUNC(isInMedicalFacility)) || ([_target] call FUNC(isInMedicalFacility))}; + private _medVeh = {([_caller] call FUNC(isInMedicalVehicle)) || ([_target] call FUNC(isInMedicalVehicle))}; { if (_x == "field") exitwith {_return = true;}; diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_CPR.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_CPR.sqf deleted file mode 100644 index a634aa55a5..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_CPR.sqf +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Author: Glowbal - * Callback for the CPR treatment action on success. - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: SelectionName - * 3: Treatment classname - * - * Return Value: - * Succesful treatment started - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName", "_className", "_items"]; - -if (alive _target && {(_target getVariable [QEGVAR(medical,inCardiacArrest), false] || _target getVariable [QEGVAR(medical,inReviveState), false])}) then { - [_target, "activity_view", ELSTRING(medical,Activity_cpr), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); - - if (local _target) then { - [QGVAR(treatmentAdvanced_CPRLocal), [_caller, _target]] call CBA_fnc_localEvent; - } else { - [QGVAR(treatmentAdvanced_CPRLocal), [_caller, _target], _target] call CBA_fnc_targetEvent; - }; -}; -true; diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_CPRLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_CPRLocal.sqf deleted file mode 100644 index 4e9ce5929f..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_CPRLocal.sqf +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Author: Glowbal - * local Callback for the CPR treatment action on success. - * - * Arguments: - * 0: The medic - * 1: The patient - * - * Return Value: - * Succesful treatment started - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_caller","_target"]; - -if (_target getVariable [QEGVAR(medical,inReviveState), false]) then { - private _reviveStartTime = _target getVariable [QEGVAR(medical,reviveStartTime),0]; - if (_reviveStartTime > 0) then { - _target setVariable [QEGVAR(medical,reviveStartTime), (_reviveStartTime + random(20)) min CBA_missionTime]; - }; -}; - -if (EGVAR(medical,level) > 1 && {(random 1) >= 0.6}) then { - _target setVariable [QEGVAR(medical,inCardiacArrest), nil,true]; - _target setVariable [QEGVAR(medical,heartRate), 40]; - _target setVariable [QEGVAR(medical,bloodPressure), [50,70]]; -}; - -[_target, "activity", ELSTRING(medical,Activity_CPR), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target, "activity_view", ELSTRING(medical,Activity_CPR), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message - -true; diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_bandage.sqf deleted file mode 100644 index d0bf3ef2fe..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_bandage.sqf +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Author: Glowbal - * IV Treatment callback - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: SelectionName - * 3: Treatment classname - * 4: Item - * 5: specific Spot (default: -1) - * - * Return Value: - * Succesful treatment started - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName", "_className", "_items", "", ["_specificSpot", -1]]; - -[_target, "activity", ELSTRING(medical,Activity_bandagedPatient), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target, "activity_view", ELSTRING(medical,Activity_bandagedPatient), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message - -if (local _target) then { - [QGVAR(treatmentAdvanced_bandageLocal), [_target, _className, _selectionName, _specificSpot]] call CBA_fnc_localEvent; -} else { - [QGVAR(treatmentAdvanced_bandageLocal), [_target, _className, _selectionName, _specificSpot], _target] call CBA_fnc_targetEvent; -}; - -/* { - if (_x != "") then { - [_target, _x] call FUNC(addToTriageCard); - }; -}forEach _items;*/ - -true; diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_bandageLocal.sqf deleted file mode 100644 index 7b879134cb..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_bandageLocal.sqf +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Author: Glowbal - * Handles the bandage of a patient. - * - * Arguments: - * 0: The patient - * 1: Treatment classname - * - * - * Return Value: - * Succesful treatment started - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_target", "_bandage", "_selectionName", ["_specificClass", -1]]; - -// Ensure it is a valid bodypart -private _part = [_selectionName] call EFUNC(medical,selectionNameToNumber); -if (_part < 0) exitWith {false}; - -// Get the open wounds for this unit -private _openWounds = _target getVariable [QEGVAR(medical,openWounds), []]; -if (count _openWounds == 0) exitWith {false}; // nothing to do here! - -// Get the default effectiveness for the used bandage -private _config = (configFile >> "ace_medical_treatment" >> "Bandaging"); -private _effectiveness = getNumber (_config >> "effectiveness"); -if (isClass (_config >> _bandage)) then { - systemchat "using class: " + _bandage; - _config = (_config >> _bandage); - if (isNumber (_config >> "effectiveness")) then { _effectiveness = getNumber (_config >> "effectiveness");}; -} else { - systemChat format["No bandage avialable"]; -}; - -// Figure out which injury for this bodypart is the best choice to bandage -// TODO also use up the remainder on left over injuries -private _mostEffectiveSpot = 0; -private _effectivenessFound = -1; -private _mostEffectiveInjury = _openWounds select 0; -private _exit = false; -{ - _x params ["", "_classID", "_partX"]; - TRACE_2("OPENWOUND: ", _target, _x); - // Only parse injuries that are for the selected bodypart. - if (_partX == _part) then { - private _woundEffectiveness = _effectiveness; - - // Select the classname from the wound classname storage - private _className = EGVAR(medical,woundClassNames) select _classID; - - // Check if this wound type has attributes specified for the used bandage - if (isClass (_config >> _className)) then { - // Collect the effectiveness from the used bandage for this wound type - private _woundTreatmentConfig = (_config >> _className); - if (isNumber (_woundTreatmentConfig >> "effectiveness")) then { - _woundEffectiveness = getNumber (_woundTreatmentConfig >> "effectiveness"); - }; - } else { - ACE_LOGWARNING_2("No config for wound type [%1] config base [%2]", _className, _config); - }; - - TRACE_2("Wound classes: ", _specificClass, _classID); - if (_specificClass == _classID) exitWith { - _effectivenessFound = _woundEffectiveness; - _mostEffectiveSpot = _forEachIndex; - _mostEffectiveInjury = _x; - _exit = true; - }; - - // Check if this is the currently most effective found. - if (_woundEffectiveness * ((_x select 4) * (_x select 3)) > _effectivenessFound * ((_mostEffectiveInjury select 4) * (_mostEffectiveInjury select 3))) then { - _effectivenessFound = _woundEffectiveness; - _mostEffectiveSpot = _forEachIndex; - _mostEffectiveInjury = _x; - }; - }; - if (_exit) exitWith {}; -} forEach _openWounds; - -if (_effectivenessFound == -1) exitWith {}; // Seems everything is patched up on this body part already.. - - -// TODO refactor this part -// Find the impact this bandage has and reduce the amount this injury is present -private _impact = if ((_mostEffectiveInjury select 3) >= _effectivenessFound) then {_effectivenessFound} else { (_mostEffectiveInjury select 3) }; -_mostEffectiveInjury set [ 3, ((_mostEffectiveInjury select 3) - _impact) max 0]; -_openWounds set [_mostEffectiveSpot, _mostEffectiveInjury]; - -_target setVariable [QEGVAR(medical,openWounds), _openWounds, true]; - -// Handle the reopening of bandaged wounds -if (_impact > 0 && {EGVAR(medical,level) >= 2} && {EGVAR(medical,enableAdvancedWounds)}) then { - [_target, _impact, _part, _mostEffectiveSpot, _mostEffectiveInjury, _bandage] call FUNC(handleBandageOpening); -}; - -// If all wounds to a body part have been bandaged, reset damage to that body part to zero -// so that the body part functions normally and blood is removed from the uniform. -// Arma combines left and right arms into a single body part (HitHands), same with left and right legs (HitLegs). -// Arms are actually hands. -if (EGVAR(medical,healHitPointAfterAdvBandage) || {EGVAR(medical,level) < 2}) then { - // Get the list of the wounds the target is currently suffering from. - private _currentWounds = _target getVariable [QEGVAR(medical,openWounds), []]; - - // Tally of unbandaged wounds to each body part. - private _headWounds = 0; - private _bodyWounds = 0; - private _legsWounds = 0; - private _armWounds = 0; - - // Loop through all current wounds and add up the number of unbandaged wounds on each body part. - { - _x params ["", "", "_bodyPart", "_numOpenWounds", "_bloodLoss"]; - - // Use switch/case for early termination if wounded limb is found before all six are checked. - // Number of wounds multiplied by blood loss will return zero for a fully - // bandaged body part, not incrementing the wound counter; or it will return - // some other number which will increment the wound counter. - switch (_bodyPart) do { - // Head - case 0: { - _headWounds = _headWounds + (_numOpenWounds * _bloodLoss); - }; - - // Body - case 1: { - _bodyWounds = _bodyWounds + (_numOpenWounds * _bloodLoss); - }; - - // Left Arm - case 2: { - _armWounds = _armWounds + (_numOpenWounds * _bloodLoss); - }; - - // Right Arm - case 3: { - _armWounds = _armWounds + (_numOpenWounds * _bloodLoss); - }; - - // Left Leg - case 4: { - _legsWounds = _legsWounds + (_numOpenWounds * _bloodLoss); - }; - - // Right Leg - case 5: { - _legsWounds = _legsWounds + (_numOpenWounds * _bloodLoss); - }; - }; - } forEach _currentWounds; - - // Any body part that has no wounds is healed to full health - if (_headWounds == 0) then { - _target setHitPointDamage ["hitHead", 0.0]; - }; - - if (_bodyWounds == 0) then { - _target setHitPointDamage ["hitBody", 0.0]; - }; - - if (_armWounds == 0) then { - _target setHitPointDamage ["hitHands", 0.0]; - }; - - if (_legsWounds == 0) then { - _target setHitPointDamage ["hitLegs", 0.0]; - }; -}; - -true; diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_fullHeal.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_fullHeal.sqf deleted file mode 100644 index 18bd0468d2..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_fullHeal.sqf +++ /dev/null @@ -1,21 +0,0 @@ -/** - * fn_heal.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName", "_className", "_items"]; - -if (local _target) then { - [QGVAR(treatmentAdvanced_fullHealLocal), [_caller, _target]] call CBA_fnc_localEvent; -} else { - [QGVAR(treatmentAdvanced_fullHealLocal), [_caller, _target], _target] call CBA_fnc_targetEvent; -}; - -true; diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_fullHealLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_fullHealLocal.sqf deleted file mode 100644 index 2f60d47470..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_fullHealLocal.sqf +++ /dev/null @@ -1,72 +0,0 @@ -/** - * fn_healLocal.sqf - * @Descr: N/A - * @Author: Glowbal - * - * @Arguments: [] - * @Return: - * @PublicAPI: false - */ - -#include "script_component.hpp" - -params ["_caller", "_target"]; - -if (alive _target) exitWith { - - _target setVariable [QEGVAR(medical,pain), 0, true]; - _target setVariable [QEGVAR(medical,morphine), 0, true]; - _target setVariable [QEGVAR(medical,bloodVolume), 100, true]; - - // tourniquets - _target setVariable [QEGVAR(medical,tourniquets), [0,0,0,0,0,0], true]; - - // wounds and injuries - _target setVariable [QEGVAR(medical,openWounds), [], true]; - _target setVariable [QEGVAR(medical,bandagedWounds), [], true]; - _target setVariable [QEGVAR(medical,internalWounds), [], true]; - - // vitals - _target setVariable [QEGVAR(medical,heartRate), 80]; - _target setVariable [QEGVAR(medical,heartRateAdjustments), []]; - _target setVariable [QEGVAR(medical,bloodPressure), [80, 120]]; - _target setVariable [QEGVAR(medical,peripheralResistance), 100]; - - // fractures - _target setVariable [QEGVAR(medical,fractures), []]; - - // IVs - _target setVariable [QEGVAR(medical,salineIVVolume), 0]; - _target setVariable [QEGVAR(medical,plasmaIVVolume), 0]; - _target setVariable [QEGVAR(medical,bloodIVVolume), 0]; - - // damage storage - _target setVariable [QEGVAR(medical,bodyPartStatus), [0,0,0,0,0,0], true]; - - // airway - _target setVariable [QEGVAR(medical,airwayStatus), 100, true]; - _target setVariable [QEGVAR(medical,airwayOccluded), false, true]; - _target setVariable [QEGVAR(medical,airwayCollapsed), false, true]; - - // generic medical admin - _target setVariable [QEGVAR(medical,addedToUnitLoop), false, true]; - _target setVariable [QEGVAR(medical,inCardiacArrest), false, true]; - _target setVariable [QEGVAR(medical,inReviveState), false, true]; - _target setVariable ["ACE_isUnconscious", false, true]; - _target setVariable [QEGVAR(medical,hasLostBlood), 0, true]; - _target setVariable [QEGVAR(medical,isBleeding), false, true]; - _target setVariable [QEGVAR(medical,hasPain), false, true]; - _target setVariable [QEGVAR(medical,painSuppress), 0, true]; - - // medication - private _allUsedMedication = _target getVariable [QEGVAR(medical,allUsedMedication), []]; - { - _target setVariable [_x select 0, nil]; - } forEach _allUsedMedication; - - // Resetting damage - _target setDamage 0; - - [_target, "activity", ELSTRING(medical,Activity_fullHeal), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); - [_target, "activity_view", ELSTRING(medical,Activity_fullHeal), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message -}; diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_fullHealTreatmentTime.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_fullHealTreatmentTime.sqf deleted file mode 100644 index 9e55a5c9db..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_fullHealTreatmentTime.sqf +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Author: Ruthberg - * Calculates the personal aid kit treatment time based on amount of damage to heal - * - * Arguments: - * unit - * - * Return Value: - * treatment time - * - * Example: - * [_target] call ace_medical_fnc_treatmentAdvanced_fullHealTreatmentTime - * - * Public: No - */ -#include "script_component.hpp" - -private _totalDamage = 0; - -{ - _totalDamage = _totalDamage + _x; -} forEach (_this getVariable [QEGVAR(medical,bodyPartStatus), []]); - -(10 max (_totalDamage * 10) min 120) diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_medication.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_medication.sqf deleted file mode 100644 index b9b236f1dc..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_medication.sqf +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Author: Glowbal - * IV Treatment callback - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: SelectionName - * 3: Treatment classname - * 4: Items Used - * - * Return Value: - * Succesful treatment started - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName", "_className", "_items"]; -TRACE_5("params",_caller,_target,_selectionName,_className,_items); - -private _part = [_selectionName] call EFUNC(medical,selectionNameToNumber); - -[QGVAR(treatmentAdvanced_medicationLocal), [_target, _className, _part], [_target]] call CBA_fnc_targetEvent; - -{ - if (_x != "") then { - [_target, _x] call FUNC(addToTriageCard); - [_target, "activity", ELSTRING(medical,Activity_usedItem), [[_caller, false, true] call EFUNC(common,getName), getText (configFile >> "CfgWeapons" >> _x >> "displayName")]] call FUNC(addToLog); - [_target, "activity_view", ELSTRING(medical,Activity_usedItem), [[_caller, false, true] call EFUNC(common,getName), getText (configFile >> "CfgWeapons" >> _x >> "displayName")]] call FUNC(addToLog); - }; -} forEach _items; - - -true; diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_medicationLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_medicationLocal.sqf deleted file mode 100644 index 85b5505544..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_medicationLocal.sqf +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Author: Glowbal - * Handles the medication given to a patient. - * - * Arguments: - * 0: The patient - * 1: Treatment classname - * 2: Injection Site Part Number - * - * Return Value: - * Succesful treatment started - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_target", "_className", "_partNumber"]; -TRACE_3("params",_target,_className,_partNumber); - -private _tourniquets = _target getVariable [QEGVAR(medical,tourniquets), [0,0,0,0,0,0]]; -if ((_tourniquets select _partNumber) > 0) exitWith { - TRACE_1("unit has tourniquets blocking blood flow on injection site",_tourniquets); - private _delayedMedications = _target getVariable [QGVAR(occludedMedications), []]; - _delayedMedications pushBack _this; - _target setVariable [QGVAR(occludedMedications), _delayedMedications, true]; - true -}; - -// We have added a new dose of this medication to our system, so let's increase it -private _varName = format[QGVAR(%1_inSystem), _className]; -private _currentInSystem = _target getVariable [_varName, 0]; -_target setVariable [_varName, _currentInSystem + 1]; - -// Find the proper attributes for the used medication -private _medicationConfig = (configFile >> "ace_medical_treatment" >> "Medication"); -private _painReduce = getNumber (_medicationConfig >> "painReduce"); -private _hrIncreaseLow = getArray (_medicationConfig >> "hrIncreaseLow"); -private _hrIncreaseNorm = getArray (_medicationConfig >> "hrIncreaseNormal"); -private _hrIncreaseHigh = getArray (_medicationConfig >> "hrIncreaseHigh"); -private _timeInSystem = getNumber (_medicationConfig >> "timeInSystem"); -private _maxDose = getNumber (_medicationConfig >> "maxDose"); -private _viscosityChange = getNumber (_medicationConfig >> "viscosityChange"); -private _hrCallback = getText (_medicationConfig >> "hrCallback"); - -private _inCompatableMedication = []; -if (isClass (_medicationConfig >> _className)) then { - _medicationConfig = (_medicationConfig >> _className); - if (isNumber (_medicationConfig >> "painReduce")) then { _painReduce = getNumber (_medicationConfig >> "painReduce");}; - if (isArray (_medicationConfig >> "hrIncreaseLow")) then { _hrIncreaseLow = getArray (_medicationConfig >> "hrIncreaseLow"); }; - if (isArray (_medicationConfig >> "hrIncreaseNormal")) then { _hrIncreaseNorm = getArray (_medicationConfig >> "hrIncreaseNormal"); }; - if (isArray (_medicationConfig >> "hrIncreaseHigh")) then { _hrIncreaseHigh = getArray (_medicationConfig >> "hrIncreaseHigh"); }; - if (isNumber (_medicationConfig >> "timeInSystem")) then { _timeInSystem = getNumber (_medicationConfig >> "timeInSystem"); }; - if (isNumber (_medicationConfig >> "maxDose")) then { _maxDose = getNumber (_medicationConfig >> "maxDose"); }; - if (isArray (_medicationConfig >> "inCompatableMedication")) then { _inCompatableMedication = getArray (_medicationConfig >> "inCompatableMedication"); }; - if (isNumber (_medicationConfig >> "viscosityChange")) then { _viscosityChange = getNumber (_medicationConfig >> "viscosityChange"); }; - if (isText (_medicationConfig >> "hrCallback")) then { _hrCallback = getText (_medicationConfig >> "hrCallback"); }; -}; -if (isNil _hrCallback) then { - _hrCallback = compile _hrCallback; -} else { - _hrCallback = missionNamespace getVariable _hrCallback; -}; -if (!(_hrCallback isEqualType {})) then {_hrCallback = {TRACE_1("callback was NOT code",_hrCallback)};}; - -// Adjust the heart rate based upon config entry -private _heartRate = _target getVariable [QEGVAR(medical,heartRate), 70]; -if (alive _target) then { - if (_heartRate > 0) then { - if (_heartRate <= 45) then { - [_target, ((_hrIncreaseLow select 0) + random ((_hrIncreaseLow select 1) - (_hrIncreaseLow select 0))), (_hrIncreaseLow select 2), _hrCallback] call FUNC(addHeartRateAdjustment); - } else { - if (_heartRate > 120) then { - [_target, ((_hrIncreaseHigh select 0) + random ((_hrIncreaseHigh select 1) - (_hrIncreaseHigh select 0))), (_hrIncreaseHigh select 2), _hrCallback] call FUNC(addHeartRateAdjustment); - } else { - [_target, ((_hrIncreaseNorm select 0) + random ((_hrIncreaseNorm select 1) - (_hrIncreaseNorm select 0))), (_hrIncreaseNorm select 2), _hrCallback] call FUNC(addHeartRateAdjustment); - }; - }; - }; -}; - -if (_painReduce > 0) then { - // Reduce pain - private _painSuppress = _target getVariable [QEGVAR(medical,painSuppress), 0]; - _target setVariable [QEGVAR(medical,painSuppress), (_painSuppress + _painReduce) max 0]; - if (!GVAR(painIsOnlySuppressed)) then { - _pain = _target getVariable [QEGVAR(medical,pain), 0]; - _target setVariable [QEGVAR(medical,pain), (_pain - _painReduce) max 0, true]; - }; -}; - -private _resistance = _target getVariable [QEGVAR(medical,peripheralResistance), 100]; -_target setVariable [QEGVAR(medical,peripheralResistance), (_resistance + _viscosityChange) max 0]; - -// Call back to ensure that the medication is decreased over time -[_target, _classname, _varName, _maxDose, _timeInSystem, _inCompatableMedication, _viscosityChange, _painReduce] call FUNC(onMedicationUsage); - -true diff --git a/addons/medical_treatment/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf b/addons/medical_treatment/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf deleted file mode 100644 index 94702ee9c3..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Author: BaerMitUmlaut - * Handles treatment via surgical kit per frame - * - * Arguments: - * 0: Arguments - * 0: Caller - * 1: Target - * 1: Elapsed Time - * 2: Total Time - * - * Return Value: - * Succesful treatment started - * - * Public: No - */ -#include "script_component.hpp" - - -private "_bandagedWounds"; -params ["_args", "_elapsedTime", "_totalTime"]; -_args params ["_caller", "_target"]; - -_bandagedWounds = _target getVariable [QEGVAR(medical,bandagedWounds), []]; - -//In case two people stitch up one patient and the last wound has already been closed we can stop already -if (count _bandagedWounds == 0) exitWith { false }; - -//Has enough time elapsed that we can close another wound? -if ((_totalTime - _elapsedTime) <= (((count _bandagedWounds) - 1) * 5)) then { - _bandagedWounds deleteAt 0; - _target setVariable [QEGVAR(medical,bandagedWounds), _bandagedWounds, true]; -}; - -true diff --git a/addons/medical_treatment/functions/fnc_treatmentBasic_bloodbag.sqf b/addons/medical_treatment/functions/fnc_treatmentBasic_bloodbag.sqf deleted file mode 100644 index 6989ac14b8..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentBasic_bloodbag.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Author: KoffeinFlummi - * Callback when the bloodbag treatment is complete - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: Selection Name - * 3: Treatment classname - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_treatmentClassname"]; - -if (local _target) then { - [QGVAR(treatmentBasic_bloodbagLocal), [_target, _treatmentClassname]] call CBA_fnc_localEvent; -} else { - [QGVAR(treatmentBasic_bloodbagLocal), [_target, _treatmentClassname], _target] call CBA_fnc_targetEvent; -}; diff --git a/addons/medical_treatment/functions/fnc_treatmentBasic_bloodbagLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentBasic_bloodbagLocal.sqf deleted file mode 100644 index 144e386f3a..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentBasic_bloodbagLocal.sqf +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Author: KoffeinFlummi - * Local callback when the bloodbag treatment is complete - * - * Arguments: - * 0: The patient - * 1: Treatment Classname - * - * Return Value: - * nil - * - * Public: No - */ - -#include "script_component.hpp" -#define BLOODBAGHEAL 70 - -params ["_target", "_treatmentClassname"]; - -private _bloodAdded = switch (true) do { - case (_treatmentClassname == "BloodIV_250"): {0.25 * BLOODBAGHEAL}; - case (_treatmentClassname == "BloodIV_500"): {0.5 * BLOODBAGHEAL}; - default {BLOODBAGHEAL}; -}; - -private _blood = ((_target getVariable [QEGVAR(medical,bloodVolume), 100]) + _bloodAdded) min 100; -_target setVariable [QEGVAR(medical,bloodVolume), _blood, true]; diff --git a/addons/medical_treatment/functions/fnc_treatmentBasic_epipen.sqf b/addons/medical_treatment/functions/fnc_treatmentBasic_epipen.sqf deleted file mode 100644 index 1c75beb10d..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentBasic_epipen.sqf +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Author: KoffeinFlummi - * Callback when the epipen treatment is complete - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: Selection Name - * 3: Treatment classname - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -params ["_caller", "_target","_className"]; - -[_target, false] call FUNC(setUnconscious); - -if (_target getVariable [QEGVAR(medical,inReviveState), false]) then { - _target setVariable [QEGVAR(medical,inReviveState), nil, true]; -}; diff --git a/addons/medical_treatment/functions/fnc_treatmentBasic_morphine.sqf b/addons/medical_treatment/functions/fnc_treatmentBasic_morphine.sqf deleted file mode 100644 index f704a67042..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentBasic_morphine.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: KoffeinFlummi - * Callback when the morphine treatment is complete - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: Selection Name - * 3: Treatment classname - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" -#define MORPHINEHEAL 0.4 - -params ["_caller", "_target"]; - -if (local _target) then { - [QGVAR(treatmentBasic_morphineLocal), [_target]] call CBA_fnc_localEvent; -} else { - [QGVAR(treatmentBasic_morphineLocal), [_target], _target] call CBA_fnc_targetEvent; -}; diff --git a/addons/medical_treatment/functions/fnc_treatmentBasic_morphineLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentBasic_morphineLocal.sqf deleted file mode 100644 index 89429d4247..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentBasic_morphineLocal.sqf +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Author: KoffeinFlummi - * Local callback when the morphine treatment is complete - * - * Arguments: - * 0: The medic - * 1: The patient - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" -#define MORPHINEHEAL 0.4 - -params ["_target"]; - -// reduce pain, pain sensitivity -private _morphine = ((_target getVariable [QEGVAR(medical,morphine), 0]) + MORPHINEHEAL) min 1; -_target setVariable [QEGVAR(medical,morphine), _morphine, true]; - -private _pain = ((_target getVariable [QEGVAR(medical,pain), 0]) - MORPHINEHEAL) max 0; -_target setVariable [QEGVAR(medical,pain), _pain, true]; - -// @todo overdose diff --git a/addons/medical_treatment/functions/fnc_treatmentIV.sqf b/addons/medical_treatment/functions/fnc_treatmentIV.sqf deleted file mode 100644 index 2378f2bfca..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentIV.sqf +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Author: Glowbal - * Patient IV Treatment callback - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: SelectionName - * 3: Treatment classname - * - * Return Value: - * Succesful treatment started - * - * Public: Yes - */ - -#include "script_component.hpp" - -private "_removeItem"; -params ["_caller", "_target", "_selectionName", "_className", "_items"]; - -if (count _items == 0) exitWith {false}; - -_removeItem = _items select 0; -if (local _target) then { - [QGVAR(treatmentIVLocal), [_target, _className]] call CBA_fnc_localEvent; -} else { - [QGVAR(treatmentIVLocal), [_target, _className], _target] call CBA_fnc_targetEvent; -}; - -[_target, _removeItem] call FUNC(addToTriageCard); -[_target, "activity", ELSTRING(medical,Activity_gaveIV), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target, "activity_view", ELSTRING(medical,Activity_gaveIV), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message - -true diff --git a/addons/medical_treatment/functions/fnc_treatmentIVLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentIVLocal.sqf deleted file mode 100644 index e00200b33e..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentIVLocal.sqf +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Author: Glowbal - * IV Treatment local callback - * - * Arguments: - * 0: The medic - * 1: Treatment classname - * - * - * Return Value: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_target", "_treatmentClassname"]; - -private _bloodVolume = _target getVariable [QEGVAR(medical,bloodVolume), 100]; -if (_bloodVolume >= 100) exitWith {}; - -// Find the proper attributes for the used IV -private _config = (configFile >> "ace_medical_treatment" >> "IV"); -private _volumeAdded = getNumber (_config >> "volume"); -private _typeOf = getText (_config >> "type"); - -if (isClass (_config >> _treatmentClassname)) then { - _config = (_config >> _treatmentClassname); - if (isNumber (_config >> "volume")) then { _volumeAdded = getNumber (_config >> "volume");}; - if (isText (_config >> "type")) then { _typeOf = getText (_config >> "type"); }; -} else { - ERROR("IV Treatment Classname not found"); -}; - -private _varName = format["ACE_Medical_IVVolume_%1",_typeOf]; -_target setVariable [_varName, (_target getVariable [_varName, 0]) + _volumeAdded, true]; - -if !(_varName in EGVAR(medical,IVBags)) then { - EGVAR(medical,IVBags) pushBack _varName; - publicVariable QEGVAR(medical,IVBags) -}; diff --git a/addons/medical_treatment/functions/fnc_treatmentTourniquet.sqf b/addons/medical_treatment/functions/fnc_treatmentTourniquet.sqf deleted file mode 100644 index 89b94375c4..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentTourniquet.sqf +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Author: Glowbal - * Apply a tourniquet to the patient - * - * Arguments: - * 0: The medic - * 1: The patient - * 2: SelectionName - * 3: Treatment classname - * - * - * Return Value: - * Succesful treatment started - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_caller", "_target", "_selectionName", "_className", "_items"]; - -if (count _items == 0) exitWith {false}; - -private _part = [_selectionName] call EFUNC(medical,selectionNameToNumber); -if (_part == 0 || _part == 1) exitWith { - // [QEGVAR(common,displayTextStructured), ["You cannot apply a CAT on this body part!"], [_caller]] call CBA_fnc_targetEvent; - false; -}; - -private _tourniquets = _target getVariable [QEGVAR(medical,tourniquets), [0,0,0,0,0,0]]; -if ((_tourniquets select _part) > 0) exitWith { - _output = "There is already a tourniquet on this body part!"; // TODO localization - [QEGVAR(common,displayTextStructured), [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; - false; -}; - -private _removeItem = _items select 0; -if (local _target) then { - [QGVAR(treatmentTourniquetLocal), [_target, _removeItem, _selectionName]] call CBA_fnc_localEvent; -} else { - [QGVAR(treatmentTourniquetLocal), [_target, _removeItem, _selectionName], _target] call CBA_fnc_targetEvent; -}; - -[_target, _removeItem] call FUNC(addToTriageCard); -[_target, "activity", ELSTRING(medical,Activity_appliedTourniquet), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target, "activity_view", ELSTRING(medical,Activity_appliedTourniquet), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message - -true diff --git a/addons/medical_treatment/functions/fnc_treatmentTourniquetLocal.sqf b/addons/medical_treatment/functions/fnc_treatmentTourniquetLocal.sqf deleted file mode 100644 index cf886b292a..0000000000 --- a/addons/medical_treatment/functions/fnc_treatmentTourniquetLocal.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: Glowbal - * Apply a tourniquet to the patient, local callback. - * - * Arguments: - * 0: The patient - * 1: Item used classname - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -params ["_target", "_tourniquetItem", "_selectionName"]; - -//If we're not already tracking vitals, start: -[_target] call EFUNC(medical,addVitalLoop); - -private _part = [_selectionName] call EFUNC(medical,selectionNameToNumber); - -// Place a tourniquet on the bodypart -private _tourniquets = _target getVariable [QEGVAR(medical,tourniquets), [0,0,0,0,0,0]]; -_tourniquets set [_part, CBA_missionTime]; -_target setVariable [QEGVAR(medical,tourniquets), _tourniquets, true]; diff --git a/addons/medical_treatment/functions/fnc_treatment_failure.sqf b/addons/medical_treatment/functions/fnc_treatment_failure.sqf index 4756b438c6..d81c576feb 100644 --- a/addons/medical_treatment/functions/fnc_treatment_failure.sqf +++ b/addons/medical_treatment/functions/fnc_treatment_failure.sqf @@ -58,7 +58,7 @@ if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") // Record specific callback private _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className); -if (EGVAR(medical,level) >= 2) then { +if (GVAR(level) >= 2) then { _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className); }; diff --git a/addons/medical_treatment/functions/fnc_treatment_success.sqf b/addons/medical_treatment/functions/fnc_treatment_success.sqf index 48dcb69f4e..eb52d20e3c 100644 --- a/addons/medical_treatment/functions/fnc_treatment_success.sqf +++ b/addons/medical_treatment/functions/fnc_treatment_success.sqf @@ -53,7 +53,7 @@ if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") // Record specific callback private _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className); -if (EGVAR(medical,level) >= 2) then { +if (GVAR(level) >= 2) then { _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className); }; @@ -67,10 +67,10 @@ if (!(_callback isEqualType {})) then {_callback = {TRACE_1("callback was NOT co //Get current blood loose on limb (for "bloody" litter) private _bloodLossOnSelection = 0; -private _partNumber = ([_selectionName] call EFUNC(medical,selectionNameToNumber)) max 0; +private _partNumber = ([_selectionName] call FUNC(selectionNameToNumber)) max 0; // Add all bleeding from wounds on selection -private _openWounds = _target getvariable [QEGVAR(medical,openWounds), []]; +private _openWounds = _target getvariable [QGVAR(openWounds), []]; { _x params ["", "", "_selectionX", "_amountOf", "_percentageOpen"]; if (_selectionX == _partNumber) then { @@ -84,8 +84,8 @@ _args pushBack _bloodLossOnSelection; _args call FUNC(createLitter); //If we're not already tracking vitals, start: -if (!(_target getVariable [QEGVAR(medical,addedToUnitLoop),false])) then { - [_target] call EFUNC(medical,addVitalLoop); +if (!(_target getVariable [QGVAR(addedToUnitLoop),false])) then { + [_target] call FUNC(addVitalLoop); }; -["ace_treatmentSuccess", [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; +["ace_treatmentSucceded", [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; diff --git a/addons/medical_treatment/functions/fnc_useItem.sqf b/addons/medical_treatment/functions/fnc_useItem.sqf deleted file mode 100644 index 9f00d530d8..0000000000 --- a/addons/medical_treatment/functions/fnc_useItem.sqf +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Author: Glowbal - * Use Equipment if any is available. Priority: 1) Medic, 2) Patient. If in vehicle: 3) Crew - * - * Arguments: - * 0: Medic - * 1: Patient - * 2: Item - * - * ReturnValue: - * 0: success - * 1: Unit - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_medic", "_patient", "_item"]; - -if (isNil QEGVAR(medical,setting_allowSharedEquipment)) then { - EGVAR(medical,setting_allowSharedEquipment)= true; -}; - -if (EGVAR(medical,setting_allowSharedEquipment) && {[_patient, _item] call EFUNC(common,hasItem)}) exitWith { - if (local _patient) then { - ["ace_useItem", [_patient, _item]] call CBA_fnc_localEvent; - } else { - ["ace_useItem", [_patient, _item], _patient] call CBA_fnc_targetEvent; - }; - [true, _patient]; -}; - -if ([_medic, _item] call EFUNC(common,hasItem)) exitWith { - if (local _medic) then { - ["ace_useItem", [_medic, _item]] call CBA_fnc_localEvent; - } else { - ["ace_useItem", [_medic, _item], _medic] call CBA_fnc_targetEvent; - }; - [true, _medic]; -}; - -private _return = [false, objNull]; -if ([vehicle _medic] call FUNC(isMedicalVehicle) && {vehicle _medic != _medic}) then { - private _crew = crew vehicle _medic; - { - if ([_medic, _x] call FUNC(canAccessMedicalEquipment) && {([_x, _item] call EFUNC(common,hasItem))}) exitWith { - _return = [true, _x]; - if (local _x) then { - ["ace_useItem", [_x, _item]] call CBA_fnc_localEvent; - } else { - ["ace_useItem", [_x, _item], _x] call CBA_fnc_targetEvent; - }; - }; - } forEach _crew; -}; - -_return diff --git a/addons/medical_treatment/functions/fnc_useItems.sqf b/addons/medical_treatment/functions/fnc_useItems.sqf deleted file mode 100644 index aac7b0623a..0000000000 --- a/addons/medical_treatment/functions/fnc_useItems.sqf +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Author: Glowbal - * Use Equipment items if any is available. Priority: 1) Medic, 2) Patient. If in vehicle: 3) Crew - * - * Arguments: - * 0: Medic - * 1: Patient - * 2: Items > - * - * ReturnValue: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_medic", "_patient", "_items"]; - -private _itemsUsedBy = []; -{ - // handle a one of type use item - if (_x isEqualType []) then { - { - private _itemUsedInfo = [_medic, _patient, _x] call FUNC(useItem); - if (_itemUsedInfo select 0) exitWith { _itemsUsedBy pushBack [(_itemUsedInfo select 1), _x]}; - } forEach _x; - }; - - // handle required item - if (_x isEqualType "") then { - private _itemUsedInfo = [_medic, _patient, _x] call FUNC(useItem); - if (_itemUsedInfo select 0) exitWith { _itemsUsedBy pushBack [(_itemUsedInfo select 1), _x]}; - }; -} forEach _items; - -[count _items == count _itemsUsedBy, _itemsUsedBy]; diff --git a/addons/medical_treatment/functions/script_component.hpp b/addons/medical_treatment/functions/script_component.hpp index 83dfa4371b..86227531f9 100644 --- a/addons/medical_treatment/functions/script_component.hpp +++ b/addons/medical_treatment/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\medical_treatment\script_component.hpp" +#include "\z\ace\addons\medical_treatment\script_component.hpp" \ No newline at end of file diff --git a/addons/medical_treatment/script_component.hpp b/addons/medical_treatment/script_component.hpp index dc1a378e48..10d353b8b6 100644 --- a/addons/medical_treatment/script_component.hpp +++ b/addons/medical_treatment/script_component.hpp @@ -1,4 +1,5 @@ #define COMPONENT medical_treatment +#define COMPONENT_BEAUTIFIED Medical Treatment #include "\z\ace\addons\main\script_mod.hpp" // #define DEBUG_MODE_FULL @@ -15,5 +16,3 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" - -#define USE_WOUND_EVENT_SYNC false diff --git a/addons/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml deleted file mode 100644 index 789a83cd99..0000000000 --- a/addons/medical_treatment/stringtable.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/addons/medical_ui/$PBOPREFIX$ b/addons/medical_ui/$PBOPREFIX$ new file mode 100644 index 0000000000..09011c6951 --- /dev/null +++ b/addons/medical_ui/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\medical_ui \ No newline at end of file diff --git a/addons/medical_ui/CfgEventHandlers.hpp b/addons/medical_ui/CfgEventHandlers.hpp new file mode 100644 index 0000000000..93e3311cf2 --- /dev/null +++ b/addons/medical_ui/CfgEventHandlers.hpp @@ -0,0 +1,11 @@ +class Extended_PreStart_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preStart)); + }; +}; + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/addons/medical_ui/XEH_PREP.hpp b/addons/medical_ui/XEH_PREP.hpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/addons/medical_ui/XEH_preInit.sqf b/addons/medical_ui/XEH_preInit.sqf new file mode 100644 index 0000000000..a7feade1c3 --- /dev/null +++ b/addons/medical_ui/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +#include "XEH_PREP.hpp" + +ADDON = true; diff --git a/addons/medical_ui/XEH_preStart.sqf b/addons/medical_ui/XEH_preStart.sqf new file mode 100644 index 0000000000..022888575e --- /dev/null +++ b/addons/medical_ui/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" diff --git a/addons/medical_ui/config.cpp b/addons/medical_ui/config.cpp new file mode 100644 index 0000000000..60cad71f28 --- /dev/null +++ b/addons/medical_ui/config.cpp @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_medical"}; + author = ECSTRING(common,ACETeam); + authors[] = {""}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" diff --git a/addons/medical_ui/functions/script_component.hpp b/addons/medical_ui/functions/script_component.hpp new file mode 100644 index 0000000000..3559b1f415 --- /dev/null +++ b/addons/medical_ui/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\medical_ui\script_component.hpp" \ No newline at end of file diff --git a/addons/medical_ui/script_component.hpp b/addons/medical_ui/script_component.hpp new file mode 100644 index 0000000000..66ffe0f889 --- /dev/null +++ b/addons/medical_ui/script_component.hpp @@ -0,0 +1,18 @@ +#define COMPONENT medical_ui +#define COMPONENT_BEAUTIFIED Medical UI +#include "\z\ace\addons\main\script_mod.hpp" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define CBA_DEBUG_SYNCHRONOUS +// #define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_MEDICAL_UI + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_MEDICAL_UI + #define DEBUG_SETTINGS DEBUG_SETTINGS_MEDICAL_UI +#endif + +#include "\z\ace\addons\main\script_macros.hpp"