Merge pull request #85 from KoffeinFlummi/cse_medical_port

PORT: CSE Medical
This commit is contained in:
Glowbal 2015-01-27 17:06:22 +01:00
commit c57cf88965
287 changed files with 9982 additions and 258 deletions

View File

@ -43,3 +43,19 @@ class Extended_Respawn_EventHandlers {
};
};
};
class Extended_Killed_EventHandlers {
class CAManBase {
class GVAR(dropObject) {
Killed = QUOTE(if (local (_this select 0)) then {[ARR_2(_this select 0, ObjNull)] call FUNC(carryObj)};);
};
};
};
class Extended_GetIn_EventHandlers {
class CAManBase {
class GVAR(dropObject) {
GetIn = QUOTE(if (local (_this select 0)) then {[ARR_2(_this select 0, ObjNull)] call FUNC(carryObj)};);
};
};
};

View File

@ -131,21 +131,6 @@ GVAR(OldPlayerTurret) = [ACE_player] call FUNC(getTurretIndex);
}, 0, []] call cba_fnc_addPerFrameHandler;
[QGVAR(reviveCounter_f), 0, false, QGVAR(ADDON)] call FUNC(defineVariable);
[QGVAR(inReviveState), false, true, QGVAR(ADDON)] call FUNC(defineVariable);
[QGVAR(isDead),false,true,QUOTE(ADDON)] call FUNC(defineVariable);
[QGVAR(isDeadPlayer), false, true, QUOTE(ADDON)] call FUNC(defineVariable);
[QGVAR(StateArrested),false,true,QUOTE(ADDON)] call FUNC(defineVariable);
["ACE_isUnconscious",false,true,QUOTE(ADDON)] call FUNC(defineVariable);
[QGVAR(ENABLE_REVIVE_SETDEAD_F),0,false,QUOTE(ADDON)] call FUNC(defineVariable);
[QGVAR(carriedBy),objNull,false,QUOTE(ADDON)] call FUNC(defineVariable);
if (isNil QGVAR(ENABLE_REVIVE_F)) then {
GVAR(ENABLE_REVIVE_F) = 0;
};
[
{((_this select 0) getvariable [QGVAR(inReviveState), false])}
] call EFUNC(common,registerUnconsciousCondition);
[QGVAR(carriedObj),objNull,false,QUOTE(ADDON)] call FUNC(defineVariable);

View File

@ -78,7 +78,6 @@ PREP(isAutoWind);
PREP(isEngineer);
PREP(isEOD);
PREP(isInBuilding);
PREP(isMedic);
PREP(isPlayer);
PREP(isTurnedOut);
PREP(letterToCode);
@ -212,11 +211,10 @@ PREP(getCanInteract);
PREP(canInteract);
PREP(resetAllDefaults_f);
PREP(broadcastSound3D_f);
PREP(setDead);
PREP(isAwake);
PREP(setProne);
PREP(raiseScriptedEvent_f);
PREP(setDisableUserInputStatus);
PREP(dropWeapon_f);
@ -224,7 +222,6 @@ PREP(inWater_f);
PREP(setVolume_f);
PREP(closeAllDialogs_f);
PREP(disableAI_f);
PREP(moduleBasicRevive);
PREP(switchToGroupSide_f);
PREP(getFirstObjectIntersection);
PREP(getFirstTerrainIntersection);
@ -240,22 +237,18 @@ PREP(getCarriedObj);
PREP(getCarriedBy);
PREP(beingCarried);
PREP(setCarriedBy);
PREP(setUnconsciousState);
PREP(isUnconscious);
PREP(getUnconsciousCondition);
PREP(registerUnconsciousCondition);
PREP(setCaptiveSwitch);
PREP(moveToTempGroup);
PREP(canGoUnconsciousState);
PREP(setWeaponsCorrectUnconscious);
PREP(limitMovementSpeed);
PREP(setArrestState);
PREP(isArrested);
PREP(loadPerson_F);
PREP(loadPersonLocal_F);
PREP(makeCopyOfBody_F);
PREP(unloadPerson_F);
PREP(cleanUpCopyOfBody_F);
ADDON = true;

View File

@ -5,7 +5,7 @@ class CfgPatches {
units[] = {"ACE_Box_Misc"};
weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_main", "ace_gui"};
requiredAddons[] = {"ace_main"};
author[] = {"KoffeinFlummi"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;

View File

@ -36,12 +36,9 @@ if (((typeName _to) == "OBJECT" && (isNull ([_unit] call FUNC(getCarriedObj))))
_to attachTo [_unit,(_this select 2)];
[format["fnc_carryObj - UNIT: %1 TO %2 - attachTo offset: %3",_unit,_to,(_this select 2)],2] call FUNC(debug);
};
} else {
[format["fnc_carryObj - UNIT: %1 TO %2 - Script expects external handling of attachTo Command. Exiting",_unit,_to],2] call FUNC(debug);
};
[[_unit, _to, _fallDown],"carryObject"] call FUNC(raiseScriptedEvent_f);
["carryObject", [_unit], [_unit, _to, _fallDown]] call EFUNC(common,targetEvent);
// ["carryObject", [_unit, _to, _fallDown]] call ace_common_fnc_localEvent;
};
} else {
if (!isNull ([_unit] call FUNC(getCarriedObj))) then {
@ -59,13 +56,14 @@ if (((typeName _to) == "OBJECT" && (isNull ([_unit] call FUNC(getCarriedObj))))
_positionUnit set [2, ((getPosASL _unit) select 2) + 0.1];
_carriedObj setPosASL _positionUnit;
};
[[_unit, _carriedObj],"carryObjectDropped"] call FUNC(raiseScriptedEvent_f);
[[_unit] call FUNC(getCarriedObj), objNull] call FUNC(setCarriedBy);
_unit setvariable [QGVAR(carriedObj),_to,true];
_return = true;
[[_unit, _to, _fallDown],"carryObject"] call FUNC(raiseScriptedEvent_f);
["carryObjectDropped", [_unit], [_unit, _to, _fallDown]] call EFUNC(common,targetEvent);
// ["carryObjectDropped", [_unit, _to, _fallDown]] call ace_common_fnc_localEvent;
};
};
} else {

View File

@ -16,21 +16,26 @@ private ["_msg", "_level", "_prefix", "_defaultLoglevel","_defaultLogDisplayLeve
_msg = _this select 0;
_level = if (count _this > 1) then {_this select 1} else { 2 };
if (typeName _level != "NUMBER") then {
_level = 2;
};
_defaultLoglevel = if (isNil QGVAR(LOGLEVEL)) then {
DEFAULT_LOGGING_LEVEL;
} else {
GVAR(LOGLEVEL);
};
if (_defaultLoglevel < 0) exitwith {
false
};
_defaultLogDisplayLevel = if (isnil QGVAR(LOGDISPLAY_LEVEL)) then {
DEFAULT_TEXT_DISPLAY;
} else {
GVAR(LOGDISPLAY_LEVEL);
};
if (_defaultLoglevel < 0) exitwith {
false
};
if (_level <= _defaultLoglevel) then {
_prefix = switch (_level) do {
@ -42,7 +47,7 @@ if (_level <= _defaultLoglevel) then {
};
_message = format["[%1] %2",_prefix,_msg];
if (_level >= _defaultLogDisplayLevel) then {
if (_level <= _defaultLogDisplayLevel) then {
systemChat _message;
};
diag_log _message;

View File

@ -37,4 +37,3 @@ GVAR(OBJECT_VARIABLES_STORAGE) pushback [_name,_value,_defaultGlobal,_catagory,_
missionNamespace setvariable [QGVAR(OBJECT_VARIABLES_STORAGE_) + _name, [_name,_value,_defaultGlobal,_catagory,_code, _persistent]];
[[_name,_value,_defaultGlobal,_catagory,_code, _persistent],"variableDefined"] call FUNC(raiseScriptedEvent_f);

View File

@ -43,7 +43,7 @@ if (_unit getVariable ["ACE_isUnconscious", false] && {!_force}) exitWith {
};
// don't go unconscious if the unit isn't unconscious
if (_animation == "Unconscious" && {!(_unit getVariable ["ACE_isUnconscious", false])}) exitWith {};
if (_animation == "Unconscious" && {!((_unit getVariable ["ACE_isUnconscious", false]) || (_unit getVariable ["ACE_isDead", false]))}) exitWith {};
// switchMove "" no longer works in dev 1.37
if (_animation == "") then {

View File

@ -12,4 +12,4 @@
private ["_unit","_return"];
_unit = _this select 0;
(!([_unit] call FUNC(isUnconscious))) && alive _unit && !(_unit getvariable [QGVAR(isDead),false]);
(!(_unit getvariable ["ACE_isUnconscious",false]) && alive _unit && !(_unit getvariable ["ACE_isDead",false]));

View File

@ -1,18 +0,0 @@
/*
* Author: KoffeinFlummi
*
* Checks if a unit is a medic.
*
* Arguments:
* 0: unit to be checked (object)
*
* Return Value:
* Bool: is unit medic?
*/
#include "script_component.hpp"
private ["_unit"];
_unit = _this select 0;
_unit getVariable ["ACE_isMedic", (getNumber(configFile >> "CfgVehicles" >> typeOf _unit >> "attendant") == 1)]

View File

@ -1,64 +0,0 @@
/**
* fn_raiseScriptedEvent_f.sqf
* @Descr: Execute a custom defined eventhandler.
* @Author: Glowbal
*
* @Arguments: [arguments ANY, handle STRING (The name of the eventhandler)]
* @Return: ARRAY Array containing the results of the called eventhandlers.
* @PublicAPI: true
*/
#include "script_component.hpp"
private ["_arguments","_handle","_ehCfg","_eventHandlerCollection","_eventHandlerName","_cfg","_code","_classType", "_return"];
_arguments = _this select 0;
_handle = _this select 1;
// TODO figure out how we want to handle custom eventhandlers
_eventHandlerName = (QGVAR(f_custom_eventhandlers_) + _handle);
_eventHandlerCollection = missionNamespace getvariable _eventHandlerName;
if (isnil "_eventHandlerCollection") then {
_eventHandlerCollection = [];
[format["caching Custom Eventhandler: %1",_handle]] call FUNC(debug);
_cfg = (ConfigFile >> "ACE_Eventhandlers" >> "CustomEventHandlers" >> _handle);
if (isClass _cfg) then {
_numberOfEH = count _cfg;
for "_EHiterator" from 0 to (_numberOfEH -1) /* step +1 */ do {
//for [{_EHiterator=0}, {(_EHiterator< _numberOfEH)}, {_EHiterator=_EHiterator+1}] do {
_ehCfg = _cfg select _EHiterator;
if (isClass _ehCfg) then {
_classType = (ConfigName _ehCfg);
_code = (compile getText(_ehCfg >> "onCall"));
_eventHandlerCollection pushback [_classType, _code];
true;
};
};
};
_cfg = (MissionConfigFile >> "ACE_Eventhandlers" >> "CustomEventHandlers" >> _handle);
if (isClass _cfg) then {
_numberOfEH = count _cfg;
for "_EHiterator" from 0 to (_numberOfEH -1) /* step +1 */ do {
//for [{_EHiterator=0}, {(_EHiterator< _numberOfEH)}, {_EHiterator=_EHiterator+1}] do {
_ehCfg = _cfg select _EHiterator;
if (isClass _ehCfg) then {
_classType = (ConfigName _ehCfg);
_code = (compile getText(_ehCfg >> "onCall"));
_eventHandlerCollection pushback [_classType, _code];
true;
};
};
};
missionNamespace setvariable [_eventHandlerName, _eventHandlerCollection];
[format["Custom Eventhandler: %1 cache: %2",_handle, _eventHandlerCollection]] call FUNC(debug);
};
_return = [];
{
_return pushback (_arguments call (_x select 1));
}foreach _eventHandlerCollection;
_return

View File

@ -13,13 +13,15 @@
private ["_unit","_oldUnit","_sets"];
_unit = _this select 0;
_unit setvariable [QGVAR(isDead),nil,true];
_unit setvariable ["ACE_isDead",nil,true];
_unit setvariable ["ACE_isUnconscious", nil, true];
if (isPlayer _unit) then {
[true] call FUNC(setVolume_f);
[false] call FUNC(disableKeyInput_f);
[false] call EFUNC(GUI,effectBlackOut);
if (["ace_medical"] call FUNC(isModLoader_f)) then {
[false] call EFUNC(medical,effectBlackOut);
};
if !(isnil QGVAR(DISABLE_USER_INPUT_COLLECTION_F)) then {
// clear all disable user input
@ -35,4 +37,3 @@ if (isPlayer _unit) then {
};
}foreach ([_unit] call FUNC(getAllDefinedSetVariables));
[[_unit],"resetToDefaults"] call FUNC(raiseScriptedEvent_f);

View File

@ -42,4 +42,3 @@ if (_setArrest) then {
};
};
[[_unit, _setArrest],"setArrestState"] call FUNC(raiseScriptedEvent_f);

View File

@ -44,5 +44,3 @@ if (_setVolume) then {
player setVariable ["acre_sys_core_isDisabled", true, true];
};
[[_setVolume],"setVolume"] call FUNC(raiseScriptedEvent_f);

View File

@ -62,5 +62,3 @@ if (_switch) then {
reverse _previousGroupsList; // we have to reverse again, to ensure the list is in the right order.
_unit setvariable [QGVAR(previousGroupSwitchTo_F), _previousGroupsList, true];
};
[[_unit, _switch, _id, _side],"switchToGroupSide"] call FUNC(raiseScriptedEvent_f);

View File

@ -176,76 +176,4 @@ class RscTitles {
};
};
class GVAR(ScreenEffectsBlack) {
duration = 10e10;
idd = 1111;
movingenable = 0;
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QUOTE(GVAR(ScreenEffectsBlack))), _this select 0)]);
class controlsBackground {
class blackScreen: ACE_gui_backgroundBase {
text = QUOTE(PATHTOF(data\black_out.paa));
colorText[] = {0.0, 0.0, 0.0, 0.0};
idc = 11112;
x = safezoneX;
y = safezoneY;
w = safezoneW;
h = safezoneH;
};
};
};
class GVAR(ScreenEffectsBleeding) {
duration = 1;
idd = 1111;
movingenable = 0;
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QUOTE(GVAR(ScreenEffectsBleeding))), _this select 0)]);
class controlsBackground {
class bleedingScreen: ACE_gui_backgroundBase {
text = QUOTE(PATHTOF(data\bleeding.paa));
colorText[] = {0.9, 0.2, 0.2, 0.6};
idc = 11113;
x = safezoneX;
y = safezoneY;
w = safezoneW;
h = safezoneH;
};
};
};
class GVAR(ScreenEffectsHit) {
duration = 1.1;
idd = 1111;
movingenable = 0;
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QUOTE(GVAR(ScreenEffectsHit))), _this select 0)]);
class controlsBackground {
class effectHit: ACE_gui_backgroundBase {
text = QUOTE(PATHTOF(data\hit.paa));
colorText[] = {0.7, 0.2, 0.2, 0.4};
idc = 11113;
x = safezoneX;
y = safezoneY;
w = safezoneW;
h = safezoneH;
};
};
};
class GVAR(ScreenEffectsPain) {
duration = 1;
idd = 1111;
movingenable = 0;
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QUOTE(GVAR(ScreenEffectsPain))), _this select 0)]);
class controlsBackground {
class painScreen: ACE_gui_backgroundBase {
text = QUOTE(PATHTOF(data\painScreen.paa));
colorText[] = {1, 1, 1, 0.5};
idc = 11115;
x = safezoneX;
y = safezoneY;
w = safezoneW;
h = safezoneH;
};
};
};
};

View File

@ -17,9 +17,6 @@ PREP(displayInformation);
PREP(displayMessage);
PREP(blurScreen);
PREP(displayIcon);
PREP(effectPain);
PREP(effectBleeding);
PREP(effectBlackOut);
PREP(sendHintTo);
PREP(sendMessageTo);
PREP(sendDisplayInformationTo);

View File

@ -0,0 +1 @@
z\ace\Addons\medical

View File

@ -0,0 +1,35 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preInit));
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_postInit));
};
};
class Extended_Killed_Eventhandlers {
class CaManBase {
class ADDON {
Killed = QUOTE(_this call FUNC(eh_killed));
};
};
};
class Extended_Local_Eventhandlers {
class CaManBase {
class ADDON {
Local = QUOTE(_this call FUNC(eh_local));
};
};
};
class Extended_Init_Eventhandlers {
class CaManBase {
class ADDON {
init = QUOTE(_this call FUNC(onInitForUnit););
};
};
};

View File

@ -0,0 +1,7 @@
class CfgFactionClasses
{
class NO_CATEGORY;
class ACE_medical: NO_CATEGORY {
displayName = "ACE Medical";
};
};

View File

@ -0,0 +1,38 @@
class CfgHints
{
class Combat_Space_Enhancement
{
displayName = "Combat Space Enhancement";
class ACE_Module
{
displayName = "Combat Medical System";
displayNameShort = "Combat Medical System";
description = "Combat Medical System is an advanced medical system for players and AI.";
tip = "";
arguments[] = {};
image = "";
noImage = true;
};
class Assessment
{
displayName = "Patient Assessment";
displayNameShort = "Patient Assessment";
description = "It is essential when treating a casualty that you fully assess each of the areas of the casualty to determine not only the injuries but the priority of each in severity. <br> You cna assess a patient by clicking on the Assessment ICON <br> Use Check Pulse, check Blood Pressure and Check Response to get an overview.";
tip = "Medics will get a faster and more accurate result when assessing patients.";
arguments[] = {};
image = "";
noImage = true;
};
class Bleeding
{
displayName = "Bandaging a wound";
displayNameShort = "Bandaging a wound";
description = "For casualties the first priority is to stop the bleeding. You will want to bandage the largest wounds first, before attending to the smaller ones. <br>You can apply a tourniquet on the limbs to stem the bleeding faster, but remember to remove it!";
tip = "Select a wound in the injury list to bandage that one first!";
arguments[] = {};
image = "";
noImage = true;
};
};
};

View File

@ -0,0 +1,45 @@
class CfgSounds
{
class GVAR(heartbeat_fast_1)
{
name = QGVAR(heartbeat_fast_1);
sound[] = {QUOTE(PATHTOF(sounds\heart_beats\fast_1.wav)),"db-1",1};
titles[] = {};
};
class GVAR(heartbeat_fast_2)
{
name = QGVAR(heartbeat_fast_2);
sound[] = {QUOTE(PATHTOF(sounds\heart_beats\fast_2.wav)),"db-1",1};
titles[] = {};
};
class GVAR(heartbeat_fast_3)
{
name = QGVAR(heartbeat_fast_3);
sound[] = {QUOTE(PATHTOF(sounds\heart_beats\fast_3.wav)),"db-1",1};
titles[] = {};
};
class GVAR(heartbeat_norm_1)
{
name = QGVAR(heartbeat_norm_1);
sound[] = {QUOTE(PATHTOF(sounds\heart_beats\norm_1.wav)),"db-1",1};
titles[] = {};
};
class GVAR(heartbeat_norm_2)
{
name = QGVAR(heartbeat_norm_2);
sound[] = {QUOTE(PATHTOF(sounds\heart_beats\norm_2.wav)),"db-1",1};
titles[] = {};
};
class GVAR(heartbeat_slow_1)
{
name = QGVAR(heartbeat_slow_1);
sound[] = {QUOTE(PATHTOF(sounds\heart_beats\slow_1.wav)),"db-1",1};
titles[] = {};
};
class GVAR(heartbeat_slow_2)
{
name = QGVAR(heartbeat_slow_2);
sound[] = {QUOTE(PATHTOF(sounds\heart_beats\slow_2.wav)),"db-1",1};
titles[] = {};
};
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,317 @@
class CfgWeapons {
class ItemCore;
class InventoryItem_Base_F;
class ACE_bandage_basic: ItemCore
{
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_BANDAGE_BASIC_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\field_dressing.paa));
model = QUOTE(PATHTOF(equipment\bandages\fielddressing.p3d));
descriptionShort = $STR_ACE_MAG_BANDAGE_BASIC_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_BANDAGE_BASIC_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=0.5;
type=201;
};
};
class ACE_packing_bandage: ItemCore
{
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_PACKING_BANDAGE_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\packing_bandage.paa));
model = QUOTE(PATHTOF(equipment\bandages\packingbandage.p3d));
descriptionShort = $STR_ACE_MAG_PACKING_BANDAGE_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_PACKING_BANDAGE_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_bandageElastic: ItemCore {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_BANDAGE_ELASTIC_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\bandageElastic.paa));
model = "\A3\Structures_F_EPA\Items\Medical\Bandage_F.p3d";
descriptionShort = $STR_ACE_MAG_BANDAGE_ELASTIC_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_BANDAGE_ELASTIC_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_tourniquet: ItemCore
{
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_TOURNIQUET_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\tourniquet.paa));
model = QUOTE(PATHTOF(equipment\Tourniquet.p3d));
descriptionShort = $STR_ACE_MAG_TOURNIQUET_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_TOURNIQUET_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_splint: ItemCore
{
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_SPLINT_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\splint.paa));
descriptionUse = $STR_ACE_MAG_SPLINT_DESC_USE;
descriptionShort = $STR_ACE_MAG_SPLINT_DESC_SHORT;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_morphine: ItemCore
{
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_MORPHINE_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\morphine.paa));
model = QUOTE(PATHTOF(equipment\Morphinpen.p3d));
descriptionShort = $STR_ACE_MAG_MORPHINE_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_MORPHINE_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_atropine: ItemCore {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_ATROPINE_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\atropine.paa));
model = QUOTE(PATHTOF(equipment\Atropin-pen.p3d));
descriptionShort = $STR_ACE_MAG_ATROPINE_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_ATROPINE_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_epinephrine: ItemCore {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_EPINEPHRINE_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\epinephrine.paa));
model = QUOTE(PATHTOF(equipment\Epipen.p3d));
descriptionShort = $STR_ACE_MAG_EPINEPHRINE_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_EPINEPHRINE_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_plasma_iv: ItemCore {
scope = 2;
value = 1;
count = 1;
displayName = $STR_ACE_MAG_PLASMA_IV;
picture = QUOTE(PATHTOF(equipment\img\plasma_iv.paa));
descriptionShort = $STR_ACE_MAG_PLASMA_IV_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_PLASMA_IV_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_plasma_iv_500: ACE_plasma_iv {
displayName = $STR_ACE_MAG_PLASMA_IV_500;
};
class ACE_plasma_iv_250: ACE_plasma_iv_500 {
displayName = $STR_ACE_MAG_PLASMA_IV_250;
};
class ACE_blood_iv: ItemCore {
scope = 2;
value = 1;
count = 1;
model = "\A3\Structures_F_EPA\Items\Medical\BloodBag_F.p3d";
displayName = $STR_ACE_MAG_BLOOD_IV;
picture = QUOTE(PATHTOF(equipment\img\bloodbag.paa));
descriptionShort = $STR_ACE_MAG_BLOOD_IV_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_BLOOD_IV_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_blood_iv_500: ACE_blood_iv {
displayName = $STR_ACE_MAG_BLOOD_IV_500;
};
class ACE_blood_iv_250: ACE_blood_iv_500 {
displayName = $STR_ACE_MAG_BLOOD_IV_250;
};
class ACE_saline_iv: ItemCore {
scope = 2;
value = 1;
count = 1;
displayName = $STR_ACE_MAG_SALINE_IV;
picture = QUOTE(PATHTOF(equipment\img\saline_iv.paa));
descriptionShort = $STR_ACE_MAG_SALINE_IV_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_SALINE_IV_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_saline_iv_500: ACE_saline_iv {
displayName = $STR_ACE_MAG_SALINE_IV_500;
};
class ACE_saline_iv_250: ACE_saline_iv_500 {
displayName = $STR_ACE_MAG_SALINE_IV_250;
};
class ACE_quikclot: ItemCore {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_QUIKCLOT_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\quickclot.paa));
descriptionShort = $STR_ACE_MAG_QUIKCLOT_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_QUIKCLOT_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_nasopharyngeal_tube: ItemCore {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_NPA_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\nasopharyngeal_tube.paa));
descriptionUse = $STR_ACE_MAG_NPA_DESC_USE;
descriptionShort = $STR_ACE_MAG_NPA_DESC_SHORT;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_opa: ItemCore {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_OPA_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\nasopharyngeal_tube.paa));
descriptionShort = $STR_ACE_MAG_OPA_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_OPA_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_liquidSkin: ItemCore {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_LIQUID_SKIN_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\liquidSkin.paa));
model = QUOTE(PATHTOF(equipment\skinliquid.p3d));
descriptionShort = $STR_ACE_MAG_LIQUID_SKIN_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_LIQUID_SKIN_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_chestseal: ItemCore {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_CHEST_SEAL_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\chestseal.paa));
descriptionShort = $STR_ACE_MAG_CHEST_SEAL_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_CHEST_SEAL_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=1;
type=201;
};
};
class ACE_personal_aid_kit: ItemCore {
scope = 2;
value = 1;
count = 1;
type = 16;
displayName = $STR_ACE_MAG_AID_KIT_DISPLAY;
picture = QUOTE(PATHTOF(equipment\img\personal_aid_kit.paa));
model = QUOTE(PATHTOF(equipment\Personal-aidkits\MTP.p3d));
descriptionShort = $STR_ACE_MAG_AID_KIT_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_AID_KIT_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass=2;
type=201;
};
};
class ACE_surgical_kit: ItemCore
{
scope=2;
displayName= $STR_ACE_MAG_SURGICALKIT_DISPLAY;
model = QUOTE(PATHTOF(equipment\surgical_kit.p3d));
picture = QUOTE(PATHTOF(equipment\img\surgical_kit.paa));
descriptionShort = $STR_ACE_MAG_SURGICALKIT_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_SURGICALKIT_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass= 5;
type=201;
};
};
class ACE_itemBodyBag: ItemCore
{
scope=2;
displayName= $STR_ACE_MAG_BODYBAG_DISPLAY;
model = QUOTE(PATHTOF(equipment\bodybagItem.p3d));
picture = QUOTE(PATHTOF(equipment\img\bodybag.paa));
descriptionShort = $STR_ACE_MAG_BODYBAG_DESC_SHORT;
descriptionUse = $STR_ACE_MAG_BODYBAG_DESC_USE;
class ItemInfo: InventoryItem_Base_F
{
mass= 15;
type=201;
};
};
};

View File

@ -0,0 +1,245 @@
/**
* XEH_postInit.sqf
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
#include "script_component.hpp"
#include "variable_defines.sqf"
GVAR(injuredUnitCollection) = [];
[{
{
if (!alive _x || !local _x) then {
GVAR(injuredUnitCollection) set [ _forEachIndex, ObjNull];
} else {
[_x] call FUNC(handleUnitVitals);
private "_pain";
_pain = _X getvariable [QGVAR(amountOfPain), 0];
if (_pain > 5 && (random(1) > 0.5)) then {
_x setvariable [QGVAR(amountOfPain), _pain + 0.002];
};
if (_pain > 45) then {
if (random(1) > 0.6) then {
[_X] call FUNC(setUnconsciousState);
};
//[_X] call FUNC(playInjuredSound);
};
};
}foreach GVAR(injuredUnitCollection);
GVAR(injuredUnitCollection) = GVAR(injuredUnitCollection) - [ObjNull];
}, 1, [] ] call CBA_fnc_addPerFrameHandler;
[
{(([_this select 0,QGVAR(bloodVolume)] call EFUNC(common,getDefinedVariable)) < 65)},
{(([_this select 0,QGVAR(amountOfPain)] call EFUNC(common,getDefinedVariable)) > 48)},
{(((_this select 0) call FUNC(getBloodLoss)) > 0.25)},
{((_this select 0) getvariable ["ACE_inReviveState", false])}
] call FUNC(registerUnconsciousCondition);
call FUNC(handleDisplayEffects);
// Assigning all eventhandlers
["Medical_treatmentCompleted", FUNC(onTreatmentCompleted)] call ace_common_fnc_addEventHandler;
["onStartMovingUnit", FUNC(onStartMovingUnit)] call ace_common_fnc_addEventHandler;
["onUnconscious", FUNC(onUnconscious)] call ace_common_fnc_addEventHandler;
["carryObjectDropped", FUNC(onCarryObjectDropped)] call ace_common_fnc_addEventHandler;
if (isNil QGVAR(ENABLE_REVIVE_F)) then {
GVAR(ENABLE_REVIVE_F) = 0;
};
// Keybindings
GVAR(keyPressed) = false;
["ACE3",
localize "STR_ACE_OPEN_CMS_MENU_DESC",
{ if (!GVAR(keyPressed)) then {
GVAR(keyPressed) = true;
GVAR(timeMenuOpened) = time;
[] call FUNC(openMenu);
true;
} else {
false;
};
},
[ 0, [false, false, false]],
false,
"keydown"] call cba_fnc_registerKeybind;
["ACE3",
localize "STR_ACE_OPEN_CMS_MENU_DESC",
{
GVAR(keyPressed) = false;
if (time - GVAR(timeMenuOpened) >= (0.25*accTime)) then {
disableSerialization;
_display = uiNamespace getVariable QGVAR(medicalMenu);
if (!isnil "_display") then {
closeDialog 314412;
};
};
false;
},
[ 0, [false, false, false]],
false,
"keyUp"] call cba_fnc_registerKeybind;
// Adding the treatment options for all available medical equipment.
// Advanced Treatment options
ADD_TREATMENT_ADVANCED("STR_ACE_ACTION_BLOODIV_1000ml","STR_ACE_ACTION_BLOODIV_1000ML_TOOLTIP",'ACE_blood_iv');
ADD_TREATMENT_ADVANCED("STR_ACE_ACTION_BLOODIV_500ml","STR_ACE_ACTION_BLOODIV_500ML_TOOLTIP",'ACE_blood_iv_500');
ADD_TREATMENT_ADVANCED("STR_ACE_ACTION_BLOODIV_250ml","STR_ACE_ACTION_BLOODIV_250ML_TOOLTIP",'ACE_blood_iv_250');
ADD_TREATMENT_ADVANCED("STR_ACE_ACTION_PLASMAIV_1000ml","STR_ACE_ACTION_PLASMAIV_1000ML_TOOLTIP",'ACE_plasma_iv');
ADD_TREATMENT_ADVANCED("STR_ACE_ACTION_PLASMAIV_500ml","STR_ACE_ACTION_PLASMAIV_500ML_TOOLTIP",'ACE_plasma_iv_500');
ADD_TREATMENT_ADVANCED("STR_ACE_ACTION_PLASMAIV_250ml","STR_ACE_ACTION_PLASMAIV_250ML_TOOLTIP",'ACE_plasma_iv_250');
ADD_TREATMENT_ADVANCED("STR_ACE_ACTION_SALINEIV_1000ml","STR_ACE_ACTION_SALINEIV_1000ML_TOOLTIP",'ACE_saline_iv');
ADD_TREATMENT_ADVANCED("STR_ACE_ACTION_SALINEIV_500ml","STR_ACE_ACTION_SALINEIV_500ML_TOOLTIP",'ACE_saline_iv_500');
ADD_TREATMENT_ADVANCED("STR_ACE_ACTION_SALINEIV_250ml","STR_ACE_ACTION_SALINEIV_250ML_TOOLTIP",'ACE_saline_iv_250');
["STR_ACE_ACTION_PERSONAL_AID_KIT","STR_ACE_ACTION_PERSONAL_AID_KIT_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
if !([_this select 0,_this select 1, 'ACE_personal_aid_kit'] call FUNC(hasEquipment)) exitwith {
false;
};
_inMedFacility = ([_caller] call FUNC(inMedicalFacility));
_hasOpenWounds = ([_target] call FUNC(hasOpenWounds));
if ((GVAR(setting_aidKitRestrictions) == 0 && _inMedFacility) ||
(GVAR(setting_aidKitRestrictions) == 1 && _inMedFacility && (!_hasOpenWounds)) ||
(GVAR(setting_aidKitRestrictions) == 2) ||
(GVAR(setting_aidKitRestrictions) == 3 && (!_hasOpenWounds))) exitwith {
((GVAR(setting_aidKitMedicsOnly) && [_caller] call FUNC(isMedic) || !GVAR(setting_aidKitMedicsOnly)));
};
false;
},TREATMENT_ADVANCED('ACE_personal_aid_kit'),'advanced'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_PERFORM_CPR","STR_ACE_ACTION_PERFORM_CPR_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
(!(_caller getvariable[QGVAR(isProvidingCPR), false]) && ((_target getvariable [QGVAR(inCardiacArrest),false]) || !([_target] call EFUNC(common,isAwake))))
},TREATMENT_ADVANCED('ACE_CPR'),'advanced'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_STOP_CPR","STR_ACE_ACTION_STOP_CPR_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
(_caller getvariable[QGVAR(isProvidingCPR), false])
},{((_this select 0) setvariable[QGVAR(isProvidingCPR), nil, true])},'advanced'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_STITCHING","STR_ACE_ACTION_STITCHING_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
((GVAR(setting_allowStitching) == 0 && [_Caller] call FUNC(isMedic)) || GVAR(setting_allowStitching) == 1)
},TREATMENT_ADVANCED('ACE_surgical_kit'),'advanced'] call FUNC(addTreatmentOption);
// Airway Management
["STR_ACE_ACTION_APPLY_NPA","STR_ACE_ACTION_APPLY_NPA_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
if !([_this select 0,_this select 1, 'ACE_nasopharyngeal_tube'] call FUNC(hasEquipment)) exitwith {
false;
};
(!([_target, QGVAR(airwayTreated)] call EFUNC(common,getDefinedVariable)) && !([_target] call EFUNC(common,isAwake)))
},TREATMENT_AIRWAY('ACE_nasopharyngeal_tube'),'advanced'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_REMOVE_NPA","STR_ACE_ACTION_REMOVE_NPA_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
([_target, QGVAR(airwayTreated)] call EFUNC(common,getDefinedVariable));
}, {GVAR(INTERACTION_TARGET) setvariable [QGVAR(airwayTreated), nil, true]; (_this select 0) addItem 'ACE_nasopharyngeal_tube';},'airway'] call FUNC(addTreatmentOption);
// Bandaging
ADD_TREATMENT_BANDAGE("STR_ACE_ACTION_BANDAGE_BASIC","STR_ACE_ACTION_BANDAGE_BASIC_TOOLTIP",'ACE_bandage_basic');
ADD_TREATMENT_BANDAGE("STR_ACE_ACTION_QUIKCLOT","STR_ACE_ACTION_QUIKCLOT_TOOLTIP",'ACE_quikclot');
ADD_TREATMENT_BANDAGE("STR_ACE_ACTION_BANDAGE_ELASTIC","STR_ACE_ACTION_BANDAGE_ELASTIC_TOOLTIP",'ACE_bandageElastic');
ADD_TREATMENT_BANDAGE("STR_ACE_ACTION_PACKING_BANDAGE","STR_ACE_ACTION_PACKING_BANDAGE_TOOLTIP",'ACE_packing_bandage');
["STR_ACE_ACTION_REMOVE_TOURNIQUET","STR_ACE_ACTION_REMOVE_TOURNIQUET_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
([_target, call FUNC(getSelectedBodyPart)] call FUNC(hasTourniquetAppliedTo));
},{[_this select 0,_this select 1,call FUNC(getSelectedBodyPart)] call FUNC(actionRemoveTourniquet)},'bandage'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_APPLY_TOURNIQUET","STR_ACE_ACTION_APPLY_TOURNIQUET_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
(!([_target, call FUNC(getSelectedBodyPart)] call FUNC(hasTourniquetAppliedTo)) && ([_caller,_target,'ACE_tourniquet'] call FUNC(hasEquipment)));
},TREATMENT_BANDAGE('ACE_tourniquet'),'bandage'] call FUNC(addTreatmentOption);
// Medication
ADD_TREATMENT_MEDICATION("STR_ACE_ACTION_MORPHINE","STR_ACE_ACTION_MORPHINE_TOOLTIP",'ACE_morphine');
ADD_TREATMENT_MEDICATION("STR_ACE_ACTION_ATROPINE","STR_ACE_ACTION_ATROPINE_TOOLTIP",'ACE_atropine');
ADD_TREATMENT_MEDICATION("STR_ACE_ACTION_EPINEPHRINE","STR_ACE_ACTION_EPINEPHRINE_TOOLTIP",'ACE_epinephrine');
// Examine
["STR_ACE_ACTION_CHECK_PULSE","STR_ACE_ACTION_CHECK_PULSE_TOOLTIP",{
true;
},{[_this select 0,_this select 1] call FUNC(actionCheckPulse)},'examine'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_CHECK_BP","STR_ACE_ACTION_CHECK_BP_TOOLTIP",{
true;
},{[_this select 0,_this select 1] call FUNC(actionCheckBloodPressure);},'examine'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_CHECK_RESPONSE","STR_ACE_ACTION_CHECK_RESPONSE_TOOLTIP",{
true;
},{[_this select 0,_this select 1] call FUNC(actionCheckResponse)},'examine'] call FUNC(addTreatmentOption);
// Drag/Movement
["STR_ACE_ACTION_DRAG_PATIENT","STR_ACE_ACTION_DRAG_PATIENT_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
(isNull ([_caller] call EFUNC(common,getCarriedObj)) && isNull ([_target] call EFUNC(common,getCarriedObj)) && (_caller != _target) && (vehicle _target == _target));
}, {[_this select 0,_this select 1] call FUNC(actionDragUnit)},'drag'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_CARRY_PATIENT","STR_ACE_ACTION_CARRY_PATIENT_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
(isNull ([_caller] call EFUNC(common,getCarriedObj)) && isNull ([_target] call EFUNC(common,getCarriedObj)) && (_caller != _target) && (vehicle _target == _target));
}, {[_this select 0,_this select 1] call FUNC(actionCarryUnit)},'drag'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_BODYBAG","STR_ACE_ACTION_BODYBAG_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
(isNull ([_caller] call EFUNC(common,getCarriedObj)) && isNull ([_target] call EFUNC(common,getCarriedObj)) && (_caller != _target) && (vehicle _target == _target) && ([_caller, _target] call FUNC(canPutInBodyBag)));
}, {[_this select 0,_this select 1] call FUNC(actionPlaceInBodyBag)},'drag'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_DROP_PATIENT","STR_ACE_ACTION_DROP_PATIENT_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
(!(isNull ([_caller] call EFUNC(common,getCarriedObj))) && ([_caller] call FUNC(isMovingUnit)));
}, {[_this select 0,_this select 1] call FUNC(actionDropUnit)},'drag'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_LOAD_PATIENT","STR_ACE_ACTION_LOAD_PATIENT_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
((vehicle _target == _target));
}, {[_this select 0,_this select 1] call FUNC(actionLoadUnit)},'drag'] call FUNC(addTreatmentOption);
["STR_ACE_ACTION_UNLOAD_PATIENT","STR_ACE_ACTION_UNLOAD_PATIENT_TOOLTIP",{
_caller = _this select 0;
_target = _this select 1;
((vehicle _target != _target));
}, {[_this select 0,_this select 1] call FUNC(actionUnloadUnit)},'drag'] call FUNC(addTreatmentOption);

View File

@ -0,0 +1,169 @@
/**
* XEH_preInit);
* @Descr: N/A
* @Author: Glowbal
*
* @Arguments: []
* @Return:
* @PublicAPI: false
*/
#include "script_component.hpp"
PREP(actionCarryUnit);
PREP(ActioncheckBloodPressure);
PREP(ActionCheckBloodPressureLocal);
PREP(ActionCheckPulse);
PREP(actionCheckPulseLocal);
PREP(actionCheckResponse);
PREP(actionDragUnit);
PREP(actionDropUnit);
PREP(actionLoadUnit);
PREP(actionPlaceInBodyBag);
PREP(actionRemoveTourniquet);
PREP(actionUnloadUnit);
PREP(addActivityToLog);
PREP(addHeartRateAdjustment);
PREP(addOpenWounds);
PREP(addToInjuredCollection);
PREP(addToQuickViewLog);
PREP(addToTriageList);
PREP(addTreatmentOption);
PREP(canAccessMedicalEquipment);
PREP(canPutInBodyBag);
PREP(determineIfFatal);
PREP(determineIfUnconscious);
PREP(fromNumberToBodyPart);
PREP(effectPain);
PREP(effectBleeding);
PREP(effectBlackOut);
PREP(getActivityLog);
PREP(getBloodLoss);
PREP(getBloodPressure);
PREP(getBloodVolumeChange);
PREP(getBodyPartNumber);
PREP(getCardiacOutput);
PREP(getCurrentSelectedInjuryData);
PREP(getHeartRateChange);
PREP(getNewDamageBodyPart);
PREP(getQuickViewLog);
PREP(getSelectedBodyPart);
PREP(getTreatmentOptions);
PREP(getTriageList);
PREP(getTriageStatus);
PREP(getTypeOfDamage);
// Handling events & actions
PREP(handleBandageOpening);
PREP(handleDamage);
PREP(handleDisplayEffects);
PREP(handleHeal);
PREP(handleReactionHit);
PREP(handleTreatment);
PREP(handleTreatment_Action_AdvancedLocal);
PREP(handleTreatment_Action_AirwayLocal);
PREP(handleTreatment_Action_BandageLocal);
PREP(handleTreatment_Action_CPR);
PREP(handleTreatment_Action_CPRLocal);
PREP(handleTreatment_Action_fullHeal);
PREP(handleTreatment_Action_fullHealLocal);
PREP(handleTreatment_Action_MedicationLocal);
PREP(handleTreatment_Action_Stitching);
PREP(handleTreatment_Action_tourniquet);
PREP(handleTreatment_Action_tourniquetLocal);
PREP(handleTreatment_Category_Advanced);
PREP(handleTreatment_Category_Airway);
PREP(handleTreatment_Category_Bandaging);
PREP(handleTreatment_Category_Medication);
PREP(handleUI_DisplayOptions);
PREP(handleUI_dropDownTriageCard);
PREP(handleUnitVitals);
PREP(handleDropUnit);
PREP(hasEquipment);
PREP(hasMedicalEnabled);
PREP(hasOpenWounds);
PREP(hasTourniquetAppliedTo);
PREP(increasePain);
PREP(initalizeModuleCMS);
PREP(inMedicalFacility);
PREP(isMedic);
PREP(isMedicalVehicle);
PREP(isSetTreatmentMutex);
PREP(isMovingUnit);
PREP(moduleAssignMedicalEquipment);
PREP(moduleAssignMedicalFacility);
PREP(moduleAssignMedicalVehicle);
PREP(moduleAssignMedicRoles);
PREP(moduleDamageSettings);
PREP(onInitForUnit);
PREP(onInjury_assignAirwayStatus);
PREP(onInjury_assignFractures);
PREP(onInjury_assignOpenWounds);
PREP(onKilled);
PREP(onLocal);
PREP(onMenuOpen);
PREP(onTreatmentCompleted);
PREP(onUnconscious);
PREP(onStartMovingUnit);
PREP(onCarryObjectDropped);
PREP(onDamage);
PREP(openMenu);
PREP(playInjuredSound);
PREP(setCardiacArrest);
PREP(setDamageBodyPart);
PREP(setDead);
PREP(setMedicRole);
PREP(setTriageStatus);
PREP(treatmentMutex);
PREP(updateActivityLog);
PREP(updateBodyImg);
PREP(updateIcons);
PREP(updateUIInfo);
PREP(useEquipment);
PREP(cacheHandledamageCall);
PREP(checkDamage);
PREP(setUnconsciousState);
PREP(isUnconscious);
PREP(getUnconsciousCondition);
PREP(registerUnconsciousCondition);
PREP(cleanUpCopyOfBody_F);
PREP(makeCopyOfBody_F);
PREP(canGoUnconsciousState);
PREP(setDead);
PREP(moduleBasicRevive);
PREP(setWeaponsCorrectUnconscious);
PREP(setCaptiveSwitch);
// initalize all module parameters.
GVAR(setting_allowInstantDead) = true;
GVAR(setting_AdvancedLevel) = 0;
GVAR(setting_advancedWoundsSetting) = false;
GVAR(setting_advancedMedicRoles) = false;
GVAR(setting_medicalDifficulty) = 1;
GVAR(setting_enableBandagingAid) = true;
GVAR(setting_allowAIFullHeal) = false;
GVAR(setting_enableForUnits) = 1;
GVAR(setting_allowAirwayInjuries) = false;
GVAR(setting_aidKitRestrictions) = 0;
GVAR(setting_removeAidKitOnUse) = true;
GVAR(setting_aidKitMedicsOnly) = false;
GVAR(setting_bandageWaitingTime) = 5;
GVAR(setting_allowVehicleCrashInjuries) = true;
GVAR(setting_allowStitching) = 0;
ADDON = true;

31
addons/medical/config.cpp Normal file
View File

@ -0,0 +1,31 @@
#include "script_component.hpp"
class CfgPatches
{
class ADDON
{
units[] = {"ACE_medical_supply_crate_cms", "ACE_bandage_basicItem","ACE_packing_bandageItem","ACE_bandageElasticItem","ACE_tourniquetItem","ACE_splintItem","ACE_morphineItem","ACE_atropineItem","ACE_epinephrineItem","ACE_plasma_ivItem","ACE_plasma_iv_500Item","ACE_plasma_iv250Item","ACE_blood_ivItem","ACE_blood_iv_500Item","ACE_blood_iv_250Item","ACE_saline_ivItem","ACE_saline_iv_500Item","ACE_saline_iv_250Item","ACE_quikclotItem","ACE_nasopharyngeal_tubeItem","ACE_opaItem","ACE_liquidSkinItem","ACE_chestsealItem","ACE_personal_aid_kitItem"};
weapons[] = {"ACE_surgical_kit"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_gui","ACE_common"};
version = VERSION;
author[] = {$STR_ACE_Common_ACETeam, "Glowbal"};
authorUrl = "http://csemod.com";
};
};
class CfgAddons {
class PreloadAddons {
class ADDON {
list[] = {QUOTE(ADDON)};
};
};
};
#include "CfgEventHandlers.hpp"
#include "CfgFactionClasses.hpp"
#include "CfgWeapons.hpp"
#include "CfgSounds.hpp"
#include "CfgVehicles.hpp"
#include "ui\define.hpp"
#include "ui\menu.hpp"
#include "ui\RscTitles.hpp"

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.

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.

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.

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.

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.

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.

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.

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

@ -0,0 +1,32 @@
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.30000001,0.30000001,0.30000001,0};
specularPower=100;
PixelShaderID="NormalMapSpecularDIMap";
VertexShaderID="NormalMap";
class Stage1
{
texture="z\ace\addons\medical\equipment\Personal-aidkits\data\Personalaidkit_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="z\ace\addons\medical\equipment\Personal-aidkits\data\Personalaidkit_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,0};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,32 @@
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.30000001,0.30000001,0.30000001,0};
specularPower=57.799999;
PixelShaderID="NormalMapSpecularDIMap";
VertexShaderID="NormalMap";
class Stage1
{
texture="z\ace\addons\medical\equipment\bandages\fielddressing_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="z\ace\addons\medical\equipment\bandages\fielddressing_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,0};
};
};

Binary file not shown.

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