Strip medical component (#6442)

* Move litter to `treatment`
* Move eden object attributes to `treatment`
* Move treatment items to `treatment`
* Move bodybag handling to `treatment`
* Move state conditions to `statemachine`
* Move radio addon handling to `feedback`
* Move medical macros to `engine`
* Move medical extension to `damage`
* Fix texture and material paths after move
* Remove duplicate medical menu config
* Remove old faction class
* Remove a bunch of old code
This commit is contained in:
SilentSpike 2018-07-18 19:13:25 +01:00 committed by GitHub
parent 68ff7575eb
commit 4466f9e785
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
174 changed files with 4021 additions and 5023 deletions

View File

@ -15,19 +15,3 @@ class Extended_PostInit_EventHandlers {
init = QUOTE(call COMPILE_FILE(XEH_postInit)); init = QUOTE(call COMPILE_FILE(XEH_postInit));
}; };
}; };
class Extended_Init_EventHandlers {
class CAManBase {
class ADDON {
init = QUOTE(call FUNC(install));
};
};
};
class Extended_Respawn_EventHandlers {
class CAManBase {
class ADDON {
respawn = QUOTE(call FUNC(handleRespawn));
};
};
};

View File

@ -1,6 +0,0 @@
class CfgFactionClasses {
class NO_CATEGORY;
class ADDON: NO_CATEGORY {
displayName = CSTRING(Category_DisplayName);
};
};

View File

@ -1,6 +1,3 @@
class CBA_Extended_EventHandlers;
class CfgVehicles { class CfgVehicles {
class Logic; class Logic;
class Module_F: Logic { class Module_F: Logic {
@ -12,12 +9,10 @@ class CfgVehicles {
scope = 1; scope = 1;
displayName = CSTRING(MedicalSettings_Module_DisplayName); displayName = CSTRING(MedicalSettings_Module_DisplayName);
icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical"; category = "ACE";
function = QUOTE(DFUNC(moduleMedicalSettings)); function = QFUNC(moduleMedicalSettings);
functionPriority = 1; functionPriority = 1;
isGlobal = 1; isGlobal = 1;
isSingular = 1;
isTriggerActivated = 0;
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
class Arguments { class Arguments {
@ -470,322 +465,4 @@ class CfgVehicles {
}; };
}; };
}; };
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,ace_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;
hiddenSelections[] = {"camo"};
hiddenSelectionsTextures[] = {QPATHTOEF(apl,data\bodybag_co.paa)};
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_medKitItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = CSTRING(Med_Kit_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
MACRO_ADDITEM(ACE_medKit,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 ThingX;
class ReammoBox_F: ThingX {
class ACE_Actions;
};
class NATO_Box_Base: ReammoBox_F {
class ACE_Actions: ACE_Actions {
class ACE_MainActions;
};
};
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 AnimationSources {
class Cover {
source = "user";
animPeriod = 1.5;
initPhase = 0;
minValue = 0;
maxValue = 1;
};
};
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
selection = "cover_action";
class ACE_OpenLid {
displayName = CSTRING(openLid);
condition = QUOTE(alive _target && {_target animationPhase 'Cover' < 0.5});
statement = QUOTE(_target animate ARR_2(['Cover',1]));
showDisabled = 0;
priority = -1;
};
class ACE_CloseLid {
displayName = CSTRING(closeLid);
condition = QUOTE(alive _target && {_target animationPhase 'Cover' >= 0.5});
statement = QUOTE(_target animate ARR_2(['Cover',0]));
showDisabled = 0;
priority = -1;
};
};
};
};
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_medKit,20);
MACRO_ADDITEM(ACE_personalAidKit,3);
MACRO_ADDITEM(ACE_surgicalKit,2);
MACRO_ADDITEM(ACE_bodyBag,5);
};
};
}; };

View File

@ -1,20 +1,6 @@
PREP(addDamageToUnit); PREP(addDamageToUnit);
PREP(addStateHandler);
PREP(adjustPainLevel); PREP(adjustPainLevel);
PREP(bodyCleanupLoop);
PREP(conditionCardiacArrestTimer);
PREP(conditionExecutionDeath);
PREP(dev_watchMedicalStats); PREP(dev_watchMedicalStats);
PREP(displayTriageCard);
PREP(getUnitState); PREP(getUnitState);
PREP(handleIncapacitation);
PREP(handleInit);
PREP(handleKilled);
PREP(handleLocal);
PREP(handleRespawn);
PREP(install);
PREP(moduleAssignMedicalVehicle);
PREP(moduleAssignMedicRoles);
PREP(moduleMedicalSettings); PREP(moduleMedicalSettings);
PREP(serverRemoveBody); PREP(setUnconscious);
PREP(setUnconsciousStatemachine);

View File

@ -1,27 +1,6 @@
#define DEBUG_MODE_FULL #define DEBUG_MODE_FULL
#include "script_component.hpp" #include "script_component.hpp"
//Handle Deleting Bodies and creating litter on Server:
if (isServer) then {
["ace_placedInBodyBag", FUNC(serverRemoveBody)] 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;
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
[missionNamespace, "ACE_setCustomAimCoef", QUOTE(ADDON), { [missionNamespace, "ACE_setCustomAimCoef", QUOTE(ADDON), {

View File

@ -6,9 +6,6 @@ PREP_RECOMPILE_START;
#include "XEH_PREP.hpp" #include "XEH_PREP.hpp"
PREP_RECOMPILE_END; PREP_RECOMPILE_END;
GVAR(HITPOINTS) = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"];
GVAR(SELECTIONS) = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"];
/* /*
[ [
QGVAR(advancedBandages), QGVAR(advancedBandages),

View File

@ -15,12 +15,5 @@ class CfgPatches {
}; };
#include "ACE_Settings.hpp" #include "ACE_Settings.hpp"
#include "CfgEden.hpp"
#include "CfgEventHandlers.hpp" #include "CfgEventHandlers.hpp"
#include "CfgFactionClasses.hpp"
#include "CfgVehicles.hpp" #include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
class ACE_Extensions {
extensions[] += {"ace_medical"};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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";
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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};
};
};

Binary file not shown.

View File

@ -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};
};
};

Binary file not shown.

View File

@ -1,26 +0,0 @@
/*
* Author: Glowbal
* [Description]
*
* Arguments:
* 0: Argument Name <TYPE>
*
* Return Value:
* Return Name <TYPE>
*
* Example:
* ["example"] call ace_[module]_fnc_[functionName]
*
* Public: [Yes/No]
*/
#include "script_component.hpp"
params ["_unit", "_stateMachine"];
if (_unit in GVAR(monitoredUnitsList)) exitWith {}; // already monitored
private _defaultState = _stateMachine getVariable "cba_stateMachine_initialState"; // "Default"
if (!isNil "_defaultState") then {
systemChat format["Assigned default state to: %1. Total monitored: %2", _unit, GVAR(monitoredUnitsList)];
_unit setVariable[QGVAR(state), [-1, _defaultState]];
GVAR(monitoredUnitsList) pushBack _unit;
};

View File

@ -75,7 +75,7 @@
{ {
private _tPartNum = _forEachIndex; private _tPartNum = _forEachIndex;
if (_x != 0) then { if (_x != 0) then {
_return pushBack format ["%1 [Time On: %2]", GVAR(SELECTIONS) select _tPartNum, (CBA_missionTime - _x) toFixed 1]; _return pushBack format ["%1 [Time On: %2]", ALL_SELECTIONS select _tPartNum, (CBA_missionTime - _x) toFixed 1];
}; };
{ {
_x params ["", "_medClassname", "_medPartNum"]; _x params ["", "_medClassname", "_medPartNum"];
@ -91,7 +91,7 @@
private _wounds = _unit getVariable [QEGVAR(medical,openWounds), []]; private _wounds = _unit getVariable [QEGVAR(medical,openWounds), []];
{ {
_x params ["", "_xClassID", "_xBodyPartN", "_xAmountOf", "_xBleeding", "_xDamage", "_xCategory"]; _x params ["", "_xClassID", "_xBodyPartN", "_xAmountOf", "_xBleeding", "_xDamage", "_xCategory"];
_return pushBack format ["%1: [%2-%3] [x%4] [Bld: %5] [Dmg: %6]", GVAR(SELECTIONS) select _xBodyPartN, _xClassID, _xCategory, _xAmountOf toFixed 1, _xBleeding toFixed 4, _xDamage toFixed 2]; _return pushBack format ["%1: [%2-%3] [x%4] [Bld: %5] [Dmg: %6]", ALL_SELECTIONS select _xBodyPartN, _xClassID, _xCategory, _xAmountOf toFixed 1, _xBleeding toFixed 4, _xDamage toFixed 2];
} forEach _wounds; } forEach _wounds;
@ -100,7 +100,7 @@
private _ivBags = _unit getVariable [QEGVAR(medical,ivBags), []]; private _ivBags = _unit getVariable [QEGVAR(medical,ivBags), []];
{ {
_x params ["_xVolumeAdded", "_xType", "_xBodyPartN"]; _x params ["_xVolumeAdded", "_xType", "_xBodyPartN"];
_return pushBack format ["%1: %2 [%3 ml]", GVAR(SELECTIONS) select _xBodyPartN, _xType, _xVolumeAdded]; _return pushBack format ["%1: %2 [%3 ml]", ALL_SELECTIONS select _xBodyPartN, _xType, _xVolumeAdded];
} forEach _ivBags; } forEach _ivBags;
// Footer: // Footer:

View File

@ -1,30 +0,0 @@
/*
* Author: KoffeinFlummi
* Called when a unit is initialized via XEH_init
*
* Arguments:
* 0: The Unit <OBJECT>
*
* Return Value:
* None
*
* Example:
* [bob] call ACE_medical_fnc_handleInit
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit"];
_unit setVariable [
QGVAR(HandleDamageEHID),
_unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}]
];
if (local _unit) then {
if (!EGVAR(common,settingsInitFinished)) exitWith {
EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(init), [_unit]];
};
[_unit] call FUNC(init);
};

View File

@ -1,25 +0,0 @@
/*
* Author: Glowbal
* Called when a unit is killed
*
* Arguments:
* 0: The Unit <OBJECT>
*
* Return Value:
* None
*
* Example:
* [bob] call ACE_medical_fnc_handleKilled
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit"];
if (!local _unit) exitWith {};
_unit setVariable [VAR_PAIN, 0, true];
_unit setVariable [VAR_HEART_RATE, 0, true];
_unit setVariable [VAR_BLOOD_PRESS, [0, 0], true];

View File

@ -1,29 +0,0 @@
/*
* Author: Glowbal
* Called when a unit switched locality
*
* Arguments:
* 0: The Unit <OBJECT>
* 1: Is local <BOOL>
*
* Return Value:
* None
*
* Example:
* [bob, true] call ACE_medical_fnc_handleLocal
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit", "_local"];
if (_local) then {
if (IS_UNCONSCIOUS(_unit) && {count (_unit getVariable [QGVAR(unconsciousArguments), []]) >= 6}) then {
private _arguments = (_unit getVariable [QGVAR(unconsciousArguments), []]);
_arguments set [2, CBA_missionTime];
_unit setVariable [QGVAR(unconsciousArguments), nil, true];
};
};

View File

@ -1,32 +0,0 @@
/*
* Author: KoffeinFlummi
* Called when a unit is Respawned
*
* Arguments:
* 0: The Unit <OBJECT>
*
* Return Value:
* None
*
* Example:
* [bob] call ACE_medical_fnc_handleRespawn
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit"];
// reset all variables. @todo GROUP respawn?
[_unit] call FUNC(init);
// Reset captive status for respawning unit
if !IS_UNCONSCIOUS(_unit) 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;
};

View File

@ -1,10 +0,0 @@
#include "script_component.hpp"
params ["_unit"];
if (local _unit) then {
if (!EGVAR(common,settingsInitFinished)) exitWith {
EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(init), [_unit]];
};
[_unit] call FUNC(init);
};

View File

@ -1,28 +0,0 @@
/*
* Author: Glowbal
* Assign a medical role to a unit.
*
* Arguments:
* 0: The module logic <OBJECT>
* 1: Synchronized units <ARRAY>
* 2: Activated <BOOL>
*
* Return Value:
* None
*
* Example:
* [LOGIC, [bob, kevin], true] call ACE_medical_fnc_moduleAssignMedicRoles
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];
if (!isNull _logic) then {
private _list = _logic getVariable ["EnableList", ""];
private _setting = _logic getVariable ["role", 0];
[_list, QGVAR(medicClass), _setting, true] call EFUNC(common,assignObjectsInList);
[synchronizedObjects _logic, QGVAR(medicClass), _setting, true] call EFUNC(common,assignObjectsInList);
};

View File

@ -1,28 +0,0 @@
/*
* Author: Glowbal
* Assign vehicle as a medical vehicle.
*
* Arguments:
* 0: The module logic <OBJECT>
* 1: Synchronized units <ARRAY>
* 2: Activated <BOOL>
*
* Return Value:
* None
*
* Example:
* [LOGIC, [bob, kevin], true] call ACE_medical_fnc_moduleAssignMedicalVehicle
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];
if (!isNull _logic) then {
private _list = _logic getVariable ["EnableList", ""];
private _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);
};

View File

@ -15,4 +15,4 @@
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical\script_macros_medical.hpp" #include "\z\ace\addons\medical_engine\script_macros_medical.hpp"

File diff suppressed because it is too large Load Diff

View File

@ -1,570 +0,0 @@
#include "\z\ace\addons\common\define.hpp"
class GVAR(medicalMenu) {
idd = 314412;
movingEnable = true;
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QQGVAR(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 = QPATHTOF(ui\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 = QPATHTOF(ui\ui\body_head.paa);
};
class bodyImgTorso: bodyImgHead {
idc = 51;
text = QPATHTOF(ui\ui\body_torso.paa);
};
class bodyImgArms_l: bodyImgHead {
idc = 52;
text = QPATHTOF(ui\ui\body_arm_left.paa);
};
class bodyImgArms_r: bodyImgHead {
idc = 53;
text = QPATHTOF(ui\ui\body_arm_right.paa);
};
class bodyImgLegs_l: bodyImgHead {
idc = 54;
text = QPATHTOF(ui\ui\body_leg_left.paa);
};
class bodyImgLegs_r: bodyImgHead {
idc = 55;
text = QPATHTOF(ui\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););
};
};
};

View File

@ -15,4 +15,4 @@
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical\script_macros_medical.hpp" #include "\z\ace\addons\medical_engine\script_macros_medical.hpp"

View File

@ -15,7 +15,6 @@
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical\script_macros_medical.hpp"
#define MAX_BLOOD_OBJECTS 500 #define MAX_BLOOD_OBJECTS 500
#define BLOOD_OBJECT_LIFETIME 900 #define BLOOD_OBJECT_LIFETIME 900

View File

@ -1,5 +1,5 @@
PREP(getTypeOfDamage); PREP(getTypeOfDamage);
PREP(handleIncapacitation);
PREP(parseConfigForInjuries); PREP(parseConfigForInjuries);
PREP(woundsHandler); PREP(woundsHandler);
PREP(woundsHandlerSQF); PREP(woundsHandlerSQF);

View File

@ -26,8 +26,6 @@ if ("ace_medical" callExtension "version" != "") then {
private _typeOfDamage = _ammo call FUNC(getTypeOfDamage); private _typeOfDamage = _ammo call FUNC(getTypeOfDamage);
[_unit, _woundedHitPoint, _receivedDamage, _typeOfDamage] call FUNC(woundsHandlerActive); [_unit, _woundedHitPoint, _receivedDamage, _typeOfDamage] call FUNC(woundsHandlerActive);
// [_unit, EGVAR(medical,STATE_MACHINE)] call EFUNC(medical,addStateHandler);
}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler;
ADDON = true; ADDON = true;

View File

@ -15,5 +15,8 @@ class CfgPatches {
}; };
#include "ACE_Medical_Injuries.hpp" #include "ACE_Medical_Injuries.hpp"
#include "CfgEventHandlers.hpp" #include "CfgEventHandlers.hpp"
class ACE_Extensions {
extensions[] += {"ace_medical"};
};

View File

@ -15,7 +15,7 @@
params ["_unit"]; params ["_unit"];
private _painLevel = GET_PAIN_PERCEIVED(_unit); private _painLevel = GET_PAIN_PERCEIVED(_unit);
private _bodyPartDamage = _unit getVariable [QGVAR(bodyPartDamage), [0,0,0,0,0,0]]; private _bodyPartDamage = _unit getVariable [QEGVAR(medical,bodyPartDamage), [0,0,0,0,0,0]];
_bodyPartDamage params ["_headDamage", "_bodyDamage", "_leftArmDamage", "_rightArmDamage", "_leftLegDamage", "_rightLegDamage"]; _bodyPartDamage params ["_headDamage", "_bodyDamage", "_leftArmDamage", "_rightArmDamage", "_leftLegDamage", "_rightLegDamage"];
@ -25,12 +25,12 @@ _bodyPartDamage params ["_headDamage", "_bodyDamage", "_leftArmDamage", "_rightA
if (_bodyPartN == 1 && {_damage < PENETRATION_THRESHOLD}) then { if (_bodyPartN == 1 && {_damage < PENETRATION_THRESHOLD}) then {
_bodyDamage = _bodyDamage - (_amountOf * _damage); _bodyDamage = _bodyDamage - (_amountOf * _damage);
}; };
} forEach (_unit getVariable [QGVAR(openWounds), []]); } forEach (_unit getVariable [QEGVAR(medical,openWounds), []]);
private _damageThreshold = if (isPlayer _unit) then { private _damageThreshold = if (isPlayer _unit) then {
GVAR(playerDamageThreshold) EGVAR(medical,playerDamageThreshold)
} else { } else {
GVAR(AIDamageThreshold) EGVAR(medical,AIDamageThreshold)
}; };
if ((_headDamage > _damageThreshold / 2) || {_bodyDamage > _damageThreshold} || {(_painLevel >= PAIN_UNCONSCIOUS) && {random 1 < 0.1}}) then { if ((_headDamage > _damageThreshold / 2) || {_bodyDamage > _damageThreshold} || {(_painLevel >= PAIN_UNCONSCIOUS) && {random 1 < 0.1}}) then {

View File

@ -116,7 +116,7 @@ _bodyPartVisParams call EFUNC(medical_engine,updateBodyPartVisuals);
[_unit, "hit", PAIN_TO_SCREAM(_painLevel)] call EFUNC(medical_engine,playInjuredSound); [_unit, "hit", PAIN_TO_SCREAM(_painLevel)] call EFUNC(medical_engine,playInjuredSound);
if (_critialDamage || {_painLevel > PAIN_UNCONSCIOUS}) then { if (_critialDamage || {_painLevel > PAIN_UNCONSCIOUS}) then {
[_unit] call EFUNC(medical,handleIncapacitation); [_unit] call FUNC(handleIncapacitation);
}; };
TRACE_5("exit",_unit,_painLevel,GET_PAIN(_unit),_unit getVariable QEGVAR(medical,openWounds),_woundsCreated); TRACE_5("exit",_unit,_painLevel,GET_PAIN(_unit),_unit getVariable QEGVAR(medical,openWounds),_woundsCreated);

View File

@ -174,7 +174,7 @@ _bodyPartVisParams call EFUNC(medical_engine,updateBodyPartVisuals);
[_unit, "hit", PAIN_TO_SCREAM(_painLevel)] call EFUNC(medical_engine,playInjuredSound); [_unit, "hit", PAIN_TO_SCREAM(_painLevel)] call EFUNC(medical_engine,playInjuredSound);
if (_critialDamage || {_painLevel > PAIN_UNCONSCIOUS}) then { if (_critialDamage || {_painLevel > PAIN_UNCONSCIOUS}) then {
[_unit] call EFUNC(medical,handleIncapacitation); [_unit] call FUNC(handleIncapacitation);
}; };
TRACE_5("exit",_unit,_painLevel,GET_PAIN(_unit),_unit getVariable QEGVAR(medical,openWounds),_woundsCreated); TRACE_5("exit",_unit,_painLevel,GET_PAIN(_unit),_unit getVariable QEGVAR(medical,openWounds),_woundsCreated);

View File

@ -15,4 +15,4 @@
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical\script_macros_medical.hpp" #include "\z\ace\addons\medical_engine\script_macros_medical.hpp"

View File

@ -15,8 +15,8 @@
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical\script_macros_medical.hpp" #include "\z\ace\addons\medical_engine\script_macros_medical.hpp"
#include "\z\ace\addons\medical\script_macros_config.hpp" #include "\z\ace\addons\medical_engine\script_macros_config.hpp"
#define EMPTY_SOUND {"A3\Sounds_F\dummysound.wss",1,1} #define EMPTY_SOUND {"A3\Sounds_F\dummysound.wss",1,1}
#define NAMESPACE_NULL locationNull #define NAMESPACE_NULL locationNull

View File

@ -1,7 +1,7 @@
/* /*
Usage: Usage:
#include "\z\ace\addons\medical\script_macros_config.hpp" #include "\z\ace\addons\medical_engine\script_macros_config.hpp"
class CfgVehicles { class CfgVehicles {
class My_AwesomeUnit_base; class My_AwesomeUnit_base;

View File

@ -1,5 +1,7 @@
#define ALL_BODY_PARTS ["head", "body", "leftarm", "rightarm", "leftleg", "rightleg"] #define ALL_BODY_PARTS ["head", "body", "leftarm", "rightarm", "leftleg", "rightleg"]
#define ALL_SELECTIONS ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]
#define ALL_HITPOINTS ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]
#define MEDICAL_ACTION_DISTANCE 1.75 #define MEDICAL_ACTION_DISTANCE 1.75

View File

@ -10,6 +10,13 @@ GVAR(heartBeatEffectRunning) = false;
["ace_unconscious", { ["ace_unconscious", {
params ["_unit", "_unconscious"]; params ["_unit", "_unconscious"];
if (local _unit) then {
_unit setVariable ["tf_voiceVolume", [1, 0] select _unconscious, true];
_unit setVariable ["tf_unable_to_use_radio", _unconscious, true];
_unit setVariable ["acre_sys_core_isDisabled", _unconscious, true];
};
if (_unit != ACE_player) exitWith {}; if (_unit != ACE_player) exitWith {};
[_unconscious, 1] call FUNC(effectUnconscious); [_unconscious, 1] call FUNC(effectUnconscious);

View File

@ -15,7 +15,7 @@
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical\script_macros_medical.hpp" #include "\z\ace\addons\medical_engine\script_macros_medical.hpp"
#define FX_PAIN_FADE_IN 0.3 #define FX_PAIN_FADE_IN 0.3
#define FX_PAIN_FADE_OUT 0.7 #define FX_PAIN_FADE_OUT 0.7

View File

@ -45,7 +45,7 @@ class CfgVehicles {
class CAManBase: Man { class CAManBase: Man {
class ACE_SelfActions { class ACE_SelfActions {
class Medical { class Medical {
displayName = ECSTRING(medical,Actions_Medical); displayName = CSTRING(Actions_Medical);
runOnHover = 1; runOnHover = 1;
exceptions[] = {"isNotInside", "isNotSitting"}; exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target,1,0)] call FUNC(displayPatientInformation)); statement = QUOTE([ARR_3(_target,1,0)] call FUNC(displayPatientInformation));
@ -80,7 +80,7 @@ class CfgVehicles {
icon = QPATHTOF(ui\ui\icons\medical_cross.paa); icon = QPATHTOF(ui\ui\icons\medical_cross.paa);
}; };
class ACE_Medical_Radial { class ACE_Medical_Radial {
displayName = ECSTRING(medical,Actions_Medical); displayName = CSTRING(Actions_Medical);
runOnHover = 1; runOnHover = 1;
exceptions[] = {"isNotInside", "isNotSitting"}; exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target,1,0)] call FUNC(displayPatientInformation)); statement = QUOTE([ARR_3(_target,1,0)] call FUNC(displayPatientInformation));
@ -91,7 +91,7 @@ class CfgVehicles {
#undef ACTION_CONDITION #undef ACTION_CONDITION
}; };
class ACE_Medical_loadPatient { class ACE_Medical_loadPatient {
displayName = ECSTRING(medical,LoadPatient); displayName = CSTRING(LoadPatient);
condition = "(_target getVariable ['ACE_isUnconscious', false]) && {alive _target} && {vehicle _target == _target}"; condition = "(_target getVariable ['ACE_isUnconscious', false]) && {alive _target} && {vehicle _target == _target}";
statement = QUOTE([ARR_2(_player, _target)] call EFUNC(medical_treatment,actionLoadUnit)); statement = QUOTE([ARR_2(_player, _target)] call EFUNC(medical_treatment,actionLoadUnit));
icon = QPATHTOF(ui\ui\icons\medical_cross.paa); icon = QPATHTOF(ui\ui\icons\medical_cross.paa);
@ -99,7 +99,7 @@ class CfgVehicles {
insertChildren = QUOTE(call DEFUNC(medical_treatment,addLoadPatientActions)); insertChildren = QUOTE(call DEFUNC(medical_treatment,addLoadPatientActions));
}; };
class ACE_Medical_UnLoadPatient { class ACE_Medical_UnLoadPatient {
displayName = ECSTRING(medical,UnloadPatient); displayName = CSTRING(UnloadPatient);
condition = "(_target getVariable ['ACE_isUnconscious', false]) && {vehicle _target != _target} && {vehicle _player == _player}"; condition = "(_target getVariable ['ACE_isUnconscious', false]) && {vehicle _target != _target} && {vehicle _player == _player}";
statement = QUOTE([ARR_2(_player, _target)] call EFUNC(medical_treatment,actionUnloadUnit)); statement = QUOTE([ARR_2(_player, _target)] call EFUNC(medical_treatment,actionUnloadUnit));
icon = QPATHTOF(ui\ui\icons\medical_cross.paa); icon = QPATHTOF(ui\ui\icons\medical_cross.paa);

View File

@ -2,6 +2,7 @@ PREP(canOpenMenu);
PREP(collectActions); PREP(collectActions);
PREP(collectActions3D); PREP(collectActions3D);
PREP(displayPatientInformation); PREP(displayPatientInformation);
PREP(displayTriageCard);
PREP(getTreatmentOptions); PREP(getTreatmentOptions);
PREP(handleUI_DisplayOptions); PREP(handleUI_DisplayOptions);
PREP(handleUI_dropDownTriageCard); PREP(handleUI_dropDownTriageCard);

View File

@ -22,7 +22,7 @@ params ["_player", "_target", "_name"];
if (!([ACE_player, _target, ["isNotInside", "isNotSwimming"]] call EFUNC(common,canInteractWith))) exitWith {[]}; if (!([ACE_player, _target, ["isNotInside", "isNotSwimming"]] call EFUNC(common,canInteractWith))) exitWith {[]};
private _collectedActions = []; private _collectedActions = [];
private _bodyPart = EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart); private _bodyPart = ALL_SELECTIONS select GVAR(selectedBodyPart);
{ {
_x params ["", "_currentCategory", "_currentCondition"]; _x params ["", "_currentCategory", "_currentCondition"];
if (_name == _currentCategory && {call _currentCondition}) then { if (_name == _currentCategory && {call _currentCondition}) then {

View File

@ -15,4 +15,4 @@
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical\script_macros_medical.hpp" #include "\z\ace\addons\medical_engine\script_macros_medical.hpp"

View File

@ -16,6 +16,54 @@
<Chinesesimp>医疗选单</Chinesesimp> <Chinesesimp>医疗选单</Chinesesimp>
<Chinese>醫療選單</Chinese> <Chinese>醫療選單</Chinese>
</Key> </Key>
<Key ID="STR_ACE_Medical_GUI_Actions_Medical">
<English>Medical</English>
<Czech>Lékařské</Czech>
<French>Médical</French>
<German>Sanitäter</German>
<Italian>Medico</Italian>
<Polish>Medyczne</Polish>
<Portuguese>Médico</Portuguese>
<Russian>Медик</Russian>
<Spanish>Médico</Spanish>
<Hungarian>Orvosi</Hungarian>
<Japanese>治療</Japanese>
<Korean>치료</Korean>
<Chinesesimp>医疗</Chinesesimp>
<Chinese>醫療</Chinese>
</Key>
<Key ID="STR_ACE_Medical_GUI_UnloadPatient">
<English>Unload patient</English>
<Spanish>Descargar al paciente</Spanish>
<Russian>Выгрузить пациента</Russian>
<German>Patient ausladen</German>
<Polish>Wyładuj pacjenta</Polish>
<French>Le patient débarque</French>
<Hungarian>Sebesült kihúzása</Hungarian>
<Italian>Scarica il paziente</Italian>
<Portuguese>Descarregar Paciente</Portuguese>
<Czech>Vyložit pacienta</Czech>
<Japanese>患者を降ろす</Japanese>
<Korean>환자 내리기</Korean>
<Chinesesimp>将伤者背出</Chinesesimp>
<Chinese>將傷者背出</Chinese>
</Key>
<Key ID="STR_ACE_Medical_GUI_LoadPatient">
<English>Load patient</English>
<Spanish>Cargar al paciente en</Spanish>
<Russian>Погрузить пациента</Russian>
<German>Patient einladen</German>
<Polish>Załaduj pacjenta</Polish>
<French>Embarquer le patient</French>
<Hungarian>Sebesült berakása</Hungarian>
<Italian>Carica il paziente</Italian>
<Portuguese>Carregar Paciente Em</Portuguese>
<Czech>Naložit pacienta</Czech>
<Japanese>患者を載せる</Japanese>
<Korean>환자 싣기</Korean>
<Chinesesimp>将伤者放入</Chinesesimp>
<Chinese>將傷者放入</Chinese>
</Key>
<Key ID="STR_ACE_Medical_GUI_allow"> <Key ID="STR_ACE_Medical_GUI_allow">
<English>Allow Medical Menu</English> <English>Allow Medical Menu</English>
<German>Erlaube Sanitätsmenü</German> <German>Erlaube Sanitätsmenü</German>

View File

@ -44,7 +44,7 @@ class ACE_Medical_StateMachine {
}; };
class Unconscious { class Unconscious {
onState = QFUNC(handleStateUnconscious); onState = QFUNC(handleStateUnconscious);
onStateEntered = QUOTE([ARR_2(_this,(true))] call EFUNC(medical,setUnconsciousStatemachine)); onStateEntered = QUOTE([ARR_2(_this,(true))] call EFUNC(medical_status,setUnconsciousStatemachine));
class DeathAI { class DeathAI {
targetState = "Dead"; targetState = "Dead";
condition = QUOTE(!isPlayer _this && {EGVAR(medical,unconsciousConditionAI)}); condition = QUOTE(!isPlayer _this && {EGVAR(medical,unconsciousConditionAI)});
@ -53,7 +53,7 @@ class ACE_Medical_StateMachine {
targetState = "Injured"; targetState = "Injured";
condition = QEFUNC(medical_status,hasStableVitals); condition = QEFUNC(medical_status,hasStableVitals);
events[] = {QEGVAR(medical,WakeUp)}; events[] = {QEGVAR(medical,WakeUp)};
onTransition = QUOTE([ARR_2(_this,(false))] call EFUNC(medical,setUnconsciousStatemachine)); onTransition = QUOTE([ARR_2(_this,(false))] call EFUNC(medical_status,setUnconsciousStatemachine));
}; };
class FatalTransitions { class FatalTransitions {
targetState = "CardiacArrest"; targetState = "CardiacArrest";
@ -94,7 +94,7 @@ class ACE_Medical_StateMachine {
}; };
class Timeout { class Timeout {
targetState = "Dead"; targetState = "Dead";
condition = QEFUNC(medical,conditionCardiacArrestTimer); condition = QFUNC(conditionCardiacArrestTimer);
}; };
class Reanimation { class Reanimation {
targetState = "Unconscious"; targetState = "Unconscious";
@ -102,7 +102,7 @@ class ACE_Medical_StateMachine {
}; };
class Execution { class Execution {
targetState = "Dead"; targetState = "Dead";
condition = QEFUNC(medical,conditionExecutionDeath); condition = QFUNC(conditionExecutionDeath);
events[] = {QEGVAR(medical,FatalInjury)}; events[] = {QEGVAR(medical,FatalInjury)};
}; };
}; };

View File

@ -1,3 +1,5 @@
PREP(conditionCardiacArrestTimer);
PREP(conditionExecutionDeath);
PREP(enteredStateCardiacArrest); PREP(enteredStateCardiacArrest);
PREP(enteredStateFatalInjury); PREP(enteredStateFatalInjury);
PREP(handleStateDefault); PREP(handleStateDefault);

View File

@ -1,2 +1 @@
#include "script_component.hpp" #include "script_component.hpp"

View File

@ -15,4 +15,4 @@
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical\script_macros_medical.hpp" #include "\z\ace\addons\medical_engine\script_macros_medical.hpp"

View File

@ -10,4 +10,4 @@ PREP(isBeingDragged);
PREP(isInStableCondition); PREP(isInStableCondition);
PREP(setCardiacArrest); PREP(setCardiacArrest);
PREP(setDead); PREP(setDead);
PREP(setUnconscious); PREP(setUnconsciousStatemachine);

View File

@ -26,4 +26,4 @@ _unit setVariable [VAR_HEART_RATE, 0, true];
["ace_cardiacArrestEntered", [_unit]] call CBA_fnc_localEvent; ["ace_cardiacArrestEntered", [_unit]] call CBA_fnc_localEvent;
[_unit, true] call EFUNC(medical,setUnconsciousStatemachine); [_unit, true] call FUNC(setUnconsciousStatemachine);

View File

@ -15,4 +15,4 @@
#endif #endif
#include "\z\ace\addons\main\script_macros.hpp" #include "\z\ace\addons\main\script_macros.hpp"
#include "\z\ace\addons\medical\script_macros_medical.hpp" #include "\z\ace\addons\medical_engine\script_macros_medical.hpp"

View File

@ -2,8 +2,8 @@
class GVAR(Actions) { class GVAR(Actions) {
// --- bandages // --- bandages
class BasicBandage { class BasicBandage {
displayName = ECSTRING(medical,Bandage); displayName = CSTRING(Bandage);
displayNameProgress = ECSTRING(medical,Bandaging); displayNameProgress = CSTRING(Bandaging);
category = "bandage"; category = "bandage";
treatmentLocations[] = {"All"}; treatmentLocations[] = {"All"};
allowedSelections[] = {"All"}; allowedSelections[] = {"All"};
@ -31,7 +31,7 @@ class GVAR(Actions) {
}; };
}; };
class FieldDressing: BasicBandage { class FieldDressing: BasicBandage {
displayName = ECSTRING(medical,Actions_FieldDressing); displayName = CSTRING(Actions_FieldDressing);
items[] = {"ACE_fieldDressing"}; items[] = {"ACE_fieldDressing"};
condition = QEGVAR(medical,advancedBandages); condition = QEGVAR(medical,advancedBandages);
litter[] = { litter[] = {
@ -40,7 +40,7 @@ class GVAR(Actions) {
}; };
}; };
class PackingBandage: BasicBandage { class PackingBandage: BasicBandage {
displayName = ECSTRING(medical,Actions_PackingBandage); displayName = CSTRING(Actions_PackingBandage);
items[] = {"ACE_packingBandage"}; items[] = {"ACE_packingBandage"};
condition = QEGVAR(medical,advancedBandages); condition = QEGVAR(medical,advancedBandages);
litter[] = { litter[] = {
@ -50,7 +50,7 @@ class GVAR(Actions) {
}; };
}; };
class ElasticBandage: BasicBandage { class ElasticBandage: BasicBandage {
displayName = ECSTRING(medical,Actions_ElasticBandage); displayName = CSTRING(Actions_ElasticBandage);
items[] = {"ACE_elasticBandage"}; items[] = {"ACE_elasticBandage"};
condition = QEGVAR(medical,advancedBandages); condition = QEGVAR(medical,advancedBandages);
litter[] = { litter[] = {
@ -59,7 +59,7 @@ class GVAR(Actions) {
}; };
}; };
class QuikClot: BasicBandage { class QuikClot: BasicBandage {
displayName = ECSTRING(medical,Actions_QuikClot); displayName = CSTRING(Actions_QuikClot);
items[] = {"ACE_quikclot"}; items[] = {"ACE_quikclot"};
condition = QEGVAR(medical,advancedBandages); condition = QEGVAR(medical,advancedBandages);
litter[] = { litter[] = {
@ -71,8 +71,8 @@ class GVAR(Actions) {
// --- tourniquet // --- tourniquet
class Tourniquet: BasicBandage { class Tourniquet: BasicBandage {
displayName = ECSTRING(medical,Apply_Tourniquet); displayName = CSTRING(Apply_Tourniquet);
displayNameProgress = ECSTRING(medical,Applying_Tourniquet); displayNameProgress = CSTRING(Applying_Tourniquet);
allowedSelections[] = {"LeftArm", "RightArm", "LeftLeg", "RightLeg"}; allowedSelections[] = {"LeftArm", "RightArm", "LeftLeg", "RightLeg"};
items[] = {"ACE_tourniquet"}; items[] = {"ACE_tourniquet"};
treatmentTime = 7; treatmentTime = 7;
@ -81,8 +81,8 @@ class GVAR(Actions) {
litter[] = {}; litter[] = {};
}; };
class RemoveTourniquet: Tourniquet { class RemoveTourniquet: Tourniquet {
displayName = ECSTRING(medical,Actions_RemoveTourniquet); displayName = CSTRING(Actions_RemoveTourniquet);
displayNameProgress = ECSTRING(medical,RemovingTourniquet); displayNameProgress = CSTRING(RemovingTourniquet);
items[] = {}; items[] = {};
callbackSuccess = QFUNC(treatmentTourniquetRemove); callbackSuccess = QFUNC(treatmentTourniquetRemove);
condition = QUOTE([ARR_2(_target,_bodyPart)] call FUNC(hasTourniquetAppliedTo)); condition = QUOTE([ARR_2(_target,_bodyPart)] call FUNC(hasTourniquetAppliedTo));
@ -90,8 +90,8 @@ class GVAR(Actions) {
// --- syringes // --- syringes
class Morphine: FieldDressing { class Morphine: FieldDressing {
displayName = ECSTRING(medical,Inject_Morphine); displayName = CSTRING(Inject_Morphine);
displayNameProgress = ECSTRING(medical,Injecting_Morphine); displayNameProgress = CSTRING(Injecting_Morphine);
allowedSelections[] = {"LeftArm", "RightArm", "LeftLeg", "RightLeg"}; allowedSelections[] = {"LeftArm", "RightArm", "LeftLeg", "RightLeg"};
category = "medication"; category = "medication";
items[] = {"ACE_morphine"}; items[] = {"ACE_morphine"};
@ -103,22 +103,22 @@ class GVAR(Actions) {
sounds[] = {{QPATHTO_R(sounds\Inject.ogg),1,1,50}}; sounds[] = {{QPATHTO_R(sounds\Inject.ogg),1,1,50}};
}; };
class Adenosine: Morphine { class Adenosine: Morphine {
displayName = ECSTRING(medical,Inject_Adenosine); displayName = CSTRING(Inject_Adenosine);
displayNameProgress = ECSTRING(medical,Injecting_Adenosine); displayNameProgress = CSTRING(Injecting_Adenosine);
condition = QEGVAR(medical,advancedMedication); condition = QEGVAR(medical,advancedMedication);
items[] = {"ACE_adenosine"}; items[] = {"ACE_adenosine"};
litter[] = { {"All", "", {"ACE_MedicalLitter_adenosine"}} }; litter[] = { {"All", "", {"ACE_MedicalLitter_adenosine"}} };
}; };
class Atropine: Morphine { class Atropine: Morphine {
displayName = ECSTRING(medical,Inject_Atropine); displayName = CSTRING(Inject_Atropine);
displayNameProgress = ECSTRING(medical,Injecting_Atropine); displayNameProgress = CSTRING(Injecting_Atropine);
condition = QEGVAR(medical,advancedMedication); condition = QEGVAR(medical,advancedMedication);
items[] = {"ACE_atropine"}; items[] = {"ACE_atropine"};
litter[] = { {"All", "", {"ACE_MedicalLitter_atropine"}} }; litter[] = { {"All", "", {"ACE_MedicalLitter_atropine"}} };
}; };
class Epinephrine: Morphine { class Epinephrine: Morphine {
displayName = ECSTRING(medical,Inject_Epinephrine); displayName = CSTRING(Inject_Epinephrine);
displayNameProgress = ECSTRING(medical,Injecting_Epinephrine); displayNameProgress = CSTRING(Injecting_Epinephrine);
requiredMedic = QEGVAR(medical,medicSetting_Epi); requiredMedic = QEGVAR(medical,medicSetting_Epi);
items[] = {"ACE_epinephrine"}; items[] = {"ACE_epinephrine"};
litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} }; litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} };
@ -127,8 +127,8 @@ class GVAR(Actions) {
// --- iv bags // --- iv bags
class BloodIV: BasicBandage { class BloodIV: BasicBandage {
displayName = ECSTRING(medical,Actions_Blood4_1000); displayName = CSTRING(Actions_Blood4_1000);
displayNameProgress = ECSTRING(medical,Transfusing_Blood); displayNameProgress = CSTRING(Transfusing_Blood);
allowedSelections[] = {"LeftArm", "RightArm", "LeftLeg", "RightLeg"}; allowedSelections[] = {"LeftArm", "RightArm", "LeftLeg", "RightLeg"};
allowSelfTreatment = QEGVAR(medical,allowSelfIV); allowSelfTreatment = QEGVAR(medical,allowSelfIV);
category = "advanced"; category = "advanced";
@ -141,46 +141,46 @@ class GVAR(Actions) {
litter[] = {}; litter[] = {};
}; };
class BloodIV_500: BloodIV { class BloodIV_500: BloodIV {
displayName = ECSTRING(medical,Actions_Blood4_500); displayName = CSTRING(Actions_Blood4_500);
items[] = {"ACE_bloodIV_500"}; items[] = {"ACE_bloodIV_500"};
}; };
class BloodIV_250: BloodIV { class BloodIV_250: BloodIV {
displayName = ECSTRING(medical,Actions_Blood4_250); displayName = CSTRING(Actions_Blood4_250);
items[] = {"ACE_bloodIV_250"}; items[] = {"ACE_bloodIV_250"};
}; };
class PlasmaIV: BloodIV { class PlasmaIV: BloodIV {
displayName = ECSTRING(medical,Actions_Plasma4_1000); displayName = CSTRING(Actions_Plasma4_1000);
displayNameProgress = ECSTRING(medical,Transfusing_Plasma); displayNameProgress = CSTRING(Transfusing_Plasma);
items[] = {"ACE_plasmaIV"}; items[] = {"ACE_plasmaIV"};
animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; animationCaller = "AinvPknlMstpSnonWnonDnon_medic1";
}; };
class PlasmaIV_500: PlasmaIV { class PlasmaIV_500: PlasmaIV {
displayName = ECSTRING(medical,Actions_Plasma4_500); displayName = CSTRING(Actions_Plasma4_500);
items[] = {"ACE_plasmaIV_500"}; items[] = {"ACE_plasmaIV_500"};
}; };
class PlasmaIV_250: PlasmaIV { class PlasmaIV_250: PlasmaIV {
displayName = ECSTRING(medical,Actions_Plasma4_250); displayName = CSTRING(Actions_Plasma4_250);
items[] = {"ACE_plasmaIV_250"}; items[] = {"ACE_plasmaIV_250"};
}; };
class SalineIV: BloodIV { class SalineIV: BloodIV {
displayName = ECSTRING(medical,Actions_Saline4_1000); displayName = CSTRING(Actions_Saline4_1000);
displayNameProgress = ECSTRING(medical,Transfusing_Saline); displayNameProgress = CSTRING(Transfusing_Saline);
items[] = {"ACE_salineIV"}; items[] = {"ACE_salineIV"};
animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; animationCaller = "AinvPknlMstpSnonWnonDnon_medic1";
}; };
class SalineIV_500: SalineIV { class SalineIV_500: SalineIV {
displayName = ECSTRING(medical,Actions_Saline4_500); displayName = CSTRING(Actions_Saline4_500);
items[] = {"ACE_salineIV_500"}; items[] = {"ACE_salineIV_500"};
}; };
class SalineIV_250: SalineIV { class SalineIV_250: SalineIV {
displayName = ECSTRING(medical,Actions_Saline4_250); displayName = CSTRING(Actions_Saline4_250);
items[] = {"ACE_salineIV_250"}; items[] = {"ACE_salineIV_250"};
}; };
// --- diagnose // --- diagnose
class Diagnose: BasicBandage { class Diagnose: BasicBandage {
displayName = ECSTRING(medical,Actions_Diagnose); displayName = CSTRING(Actions_Diagnose);
displayNameProgress = ECSTRING(medical,Actions_Diagnosing); displayNameProgress = CSTRING(Actions_Diagnosing);
category = "examine"; category = "examine";
treatmentLocations[] = {"All"}; treatmentLocations[] = {"All"};
allowedSelections[] = {"Head", "Body"}; allowedSelections[] = {"Head", "Body"};
@ -197,8 +197,8 @@ class GVAR(Actions) {
litter[] = {}; litter[] = {};
}; };
class CheckPulse: Diagnose { class CheckPulse: Diagnose {
displayName = ECSTRING(medical,Actions_CheckPulse); displayName = CSTRING(Actions_CheckPulse);
displayNameProgress = ECSTRING(medical,Check_Pulse_Content); displayNameProgress = CSTRING(Check_Pulse_Content);
allowedSelections[] = {"All"}; allowedSelections[] = {"All"};
condition = QEGVAR(medical,advancedDiagnose); condition = QEGVAR(medical,advancedDiagnose);
callbackSuccess = QFUNC(actionCheckPulse); callbackSuccess = QFUNC(actionCheckPulse);
@ -206,14 +206,14 @@ class GVAR(Actions) {
animationCallerSelfProne = ""; animationCallerSelfProne = "";
}; };
class CheckBloodPressure: CheckPulse { class CheckBloodPressure: CheckPulse {
displayName = ECSTRING(medical,Actions_CheckBloodPressure); displayName = CSTRING(Actions_CheckBloodPressure);
displayNameProgress = ECSTRING(medical,Check_Bloodpressure_Content); displayNameProgress = CSTRING(Check_Bloodpressure_Content);
allowedSelections[] = {"LeftArm", "RightArm", "LeftLeg", "RightLeg"}; allowedSelections[] = {"LeftArm", "RightArm", "LeftLeg", "RightLeg"};
callbackSuccess = QFUNC(actionCheckBloodPressure); callbackSuccess = QFUNC(actionCheckBloodPressure);
}; };
class CheckResponse: CheckPulse { class CheckResponse: CheckPulse {
displayName = ECSTRING(medical,Check_Response); displayName = CSTRING(Check_Response);
displayNameProgress = ECSTRING(medical,Check_Response_Content); displayNameProgress = CSTRING(Check_Response_Content);
allowedSelections[] = {"Head"}; allowedSelections[] = {"Head"};
allowSelfTreatment = 0; allowSelfTreatment = 0;
callbackSuccess = QFUNC(actionCheckResponse); callbackSuccess = QFUNC(actionCheckResponse);
@ -221,8 +221,8 @@ class GVAR(Actions) {
// --- misc // --- misc
class BodyBag: BasicBandage { class BodyBag: BasicBandage {
displayName = ECSTRING(medical,PlaceInBodyBag); displayName = CSTRING(PlaceInBodyBag);
displayNameProgress = ECSTRING(medical,PlacingInBodyBag); displayNameProgress = CSTRING(PlacingInBodyBag);
category = "advanced"; category = "advanced";
treatmentLocations[] = {"All"}; treatmentLocations[] = {"All"};
allowSelfTreatment = 0; allowSelfTreatment = 0;
@ -239,8 +239,8 @@ class GVAR(Actions) {
litter[] = {}; litter[] = {};
}; };
class CPR: BasicBandage { class CPR: BasicBandage {
displayName = ECSTRING(medical,Actions_CPR); displayName = CSTRING(Actions_CPR);
displayNameProgress = ECSTRING(medical,Actions_PerformingCPR); displayNameProgress = CSTRING(Actions_PerformingCPR);
category = "advanced"; category = "advanced";
treatmentLocations[] = {"All"}; treatmentLocations[] = {"All"};
allowedSelections[] = {"Body"}; allowedSelections[] = {"Body"};
@ -264,8 +264,8 @@ class GVAR(Actions) {
}; };
class SurgicalKit: FieldDressing { class SurgicalKit: FieldDressing {
displayName = ECSTRING(medical,Use_SurgicalKit); displayName = CSTRING(Use_SurgicalKit);
displayNameProgress = ECSTRING(medical,Stitching); displayNameProgress = CSTRING(Stitching);
category = "advanced"; category = "advanced";
items[] = {"ACE_surgicalKit"}; items[] = {"ACE_surgicalKit"};
treatmentLocations[] = {QEGVAR(medical,useLocation_SurgicalKit)}; treatmentLocations[] = {QEGVAR(medical,useLocation_SurgicalKit)};
@ -279,8 +279,8 @@ class GVAR(Actions) {
litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"} }}; litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"} }};
}; };
class PersonalAidKit: BasicBandage { class PersonalAidKit: BasicBandage {
displayName = ECSTRING(medical,Use_Aid_Kit); displayName = CSTRING(Use_Aid_Kit);
displayNameProgress = ECSTRING(medical,TreatmentAction); displayNameProgress = CSTRING(TreatmentAction);
category = "advanced"; category = "advanced";
condition = QUOTE(_target call EFUNC(medical_status,isInStableCondition)); condition = QUOTE(_target call EFUNC(medical_status,isInStableCondition));
items[] = {"ACE_personalAidKit"}; items[] = {"ACE_personalAidKit"};
@ -302,7 +302,7 @@ class GVAR(Actions) {
}; };
}; };
class MedKit: PersonalAidKit { class MedKit: PersonalAidKit {
displayName = ECSTRING(medical,Use_Med_Kit); displayName = CSTRING(Use_Med_Kit);
items[] = {"ACE_medKit"}; items[] = {"ACE_medKit"};
treatmentLocations[] = {QEGVAR(medical,useLocation_MedKit)}; treatmentLocations[] = {QEGVAR(medical,useLocation_MedKit)};
requiredMedic = QEGVAR(medical,medicSetting_MedKit); requiredMedic = QEGVAR(medical,medicSetting_MedKit);

View File

@ -35,7 +35,7 @@ class Cfg3DEN {
control = QGVAR(isMedicControl); control = QGVAR(isMedicControl);
displayName = CSTRING(AssignMedicRoles_role_DisplayName); displayName = CSTRING(AssignMedicRoles_role_DisplayName);
tooltip = CSTRING(Attributes_isMedic_Description); tooltip = CSTRING(Attributes_isMedic_Description);
expression = QUOTE(if (_value > -1) then {_this setVariable [ARR_3(QUOTE(QGVAR(medicClass)),_value, true)];};); expression = QUOTE(if (_value > -1) then {_this setVariable [ARR_3(QQEGVAR(medical,medicClass),_value,true)];};);
typeName = "NUMBER"; typeName = "NUMBER";
condition = "objectBrain"; condition = "objectBrain";
defaultValue = "-1"; defaultValue = "-1";
@ -46,7 +46,7 @@ class Cfg3DEN {
control = "CheckboxNumber"; control = "CheckboxNumber";
displayName = CSTRING(AssignMedicVehicle_enabled_DisplayName); displayName = CSTRING(AssignMedicVehicle_enabled_DisplayName);
tooltip = CSTRING(Attributes_isMedicalVehicle_Description); tooltip = CSTRING(Attributes_isMedicalVehicle_Description);
expression = QUOTE(_this setVariable [ARR_3(QUOTE(QGVAR(medicClass)),_value, true)];); expression = QUOTE(_this setVariable [ARR_3(QQEGVAR(medical,medicClass),_value,true)];);
typeName = "NUMBER"; typeName = "NUMBER";
condition = "objectVehicle"; condition = "objectVehicle";
defaultValue = 0; defaultValue = 0;
@ -57,7 +57,7 @@ class Cfg3DEN {
control = "Checkbox"; control = "Checkbox";
displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName); displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName);
tooltip = CSTRING(AssignMedicalFacility_enabled_Description); tooltip = CSTRING(AssignMedicalFacility_enabled_Description);
expression = QUOTE(_this setVariable [ARR_3(QUOTE(QGVAR(isMedicalFacility)),_value, true)];); expression = QUOTE(_this setVariable [ARR_3(QQEQGVAR(medical,isMedicalFacility),_value,true)];);
typeName = "BOOL"; typeName = "BOOL";
condition = "(1 - objectBrain) * (1 - objectVehicle)"; condition = "(1 - objectBrain) * (1 - objectVehicle)";
defaultValue = "false"; defaultValue = "false";

View File

@ -0,0 +1,325 @@
class CBA_Extended_EventHandlers;
class CfgVehicles {
// Bodybag vehicle
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,ace_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;
hiddenSelections[] = {"camo"};
hiddenSelectionsTextures[] = {QPATHTOEF(apl,data\bodybag_co.paa)};
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);
};
// Treatment items
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_medKitItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = CSTRING(Med_Kit_Display);
author = ECSTRING(common,ACETeam);
vehicleClass = "Items";
class TransportItems {
MACRO_ADDITEM(ACE_medKit,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);
};
};
// Medical supply crates
class ThingX;
class ReammoBox_F: ThingX {
class ACE_Actions;
};
class NATO_Box_Base: ReammoBox_F {
class ACE_Actions: ACE_Actions {
class ACE_MainActions;
};
};
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 AnimationSources {
class Cover {
source = "user";
animPeriod = 1.5;
initPhase = 0;
minValue = 0;
maxValue = 1;
};
};
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
selection = "cover_action";
class ACE_OpenLid {
displayName = CSTRING(openLid);
condition = QUOTE(alive _target && {_target animationPhase 'Cover' < 0.5});
statement = QUOTE(_target animate ARR_2(['Cover',1]));
showDisabled = 0;
priority = -1;
};
class ACE_CloseLid {
displayName = CSTRING(closeLid);
condition = QUOTE(alive _target && {_target animationPhase 'Cover' >= 0.5});
statement = QUOTE(_target animate ARR_2(['Cover',0]));
showDisabled = 0;
priority = -1;
};
};
};
};
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_medKit,20);
MACRO_ADDITEM(ACE_personalAidKit,3);
MACRO_ADDITEM(ACE_surgicalKit,2);
MACRO_ADDITEM(ACE_bodyBag,5);
};
};
};

View File

@ -41,6 +41,7 @@ PREP(treatmentTourniquetRemove);
// misc // misc
PREP(addToLog); PREP(addToLog);
PREP(addToTriageCard); PREP(addToTriageCard);
PREP(bodyCleanupLoop);
PREP(calculateBlood); PREP(calculateBlood);
PREP(canAccessMedicalEquipment); PREP(canAccessMedicalEquipment);
PREP(dropDownTriageCard); PREP(dropDownTriageCard);
@ -54,6 +55,7 @@ PREP(isInMedicalVehicle);
PREP(isMedic); PREP(isMedic);
PREP(isMedicalVehicle); PREP(isMedicalVehicle);
PREP(onMedicationUsage); PREP(onMedicationUsage);
PREP(serverRemoveBody);
// items // items
PREP(checkItems); PREP(checkItems);

View File

@ -3,9 +3,10 @@
[QEGVAR(medical,initialized), FUNC(checkItems)] call CBA_fnc_addEventHandler; [QEGVAR(medical,initialized), FUNC(checkItems)] call CBA_fnc_addEventHandler;
["loadout", FUNC(checkItems)] call CBA_fnc_addPlayerEventHandler; ["loadout", FUNC(checkItems)] call CBA_fnc_addPlayerEventHandler;
// Handle bodybags and litter on server
if (isServer) then { if (isServer) then {
[QGVAR(createLitterServer), FUNC(litterHandleCreate)] call CBA_fnc_addEventHandler; [QGVAR(createLitterServer), FUNC(litterHandleCreate)] call CBA_fnc_addEventHandler;
["ace_placedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;
}; };
// treatment events // treatment events

View File

@ -14,7 +14,10 @@ class CfgPatches {
}; };
}; };
#include "CfgEventHandlers.hpp"
#include "ACE_Medical_Treatment.hpp" #include "ACE_Medical_Treatment.hpp"
#include "ACE_Medical_Treatment_Actions.hpp" #include "ACE_Medical_Treatment_Actions.hpp"
#include "ACE_Settings.hpp" #include "ACE_Settings.hpp"
#include "CfgEden.hpp"
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"

View File

@ -14,7 +14,7 @@ PixelShaderID = "Super";
VertexShaderID = "Super"; VertexShaderID = "Super";
class Stage1 class Stage1
{ {
texture = "z\ace\addons\medical\data\IVBag_nohq.paa"; texture = "z\ace\addons\medical_treatment\data\IVBag_nohq.paa";
uvSource = "tex"; uvSource = "tex";
class uvTransform class uvTransform
{ {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More