manual merge

This commit is contained in:
commy2 2019-05-03 17:18:32 +02:00
commit 58ece34149
702 changed files with 21764 additions and 18640 deletions

View File

@ -40,7 +40,9 @@ Aleksey EpMAK Yermakov <epmak777@gmail.com>
Alganthe <alganthe@live.fr>
Andrea "AtixNeon" Verano <veranoandrea88@gmail.com>
Anthariel <Contact@storm-simulation.com>
Arcanum417 <lubos.len@gmail.com>
Anton
Arcanum417 <lubos.len@gmail.com>
Arkhir <wonsz666@gmail.com >
Asgar Serran <piechottaf@web.de>
BaerMitUmlaut
@ -127,6 +129,7 @@ Raspu86
Riccardo Petricca <petriccarcc@gmail.com>
Robert Boklahánics <bokirobi@gmail.com>
ruPaladin <happyworm24@rambler.ru>
Rutger "RedBery" Meijering <c.redbery@gmail.com>
simon84 <badguy360th@gmail.com>
Skengman2
Sniperwolf572 <tenga6@gmail.com>
@ -144,4 +147,5 @@ voiper
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
Winter <simon@agius-muscat.net>
xrufix
Zakant <Zakant@gmx.de>
zGuba

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,24 @@
#include "script_component.hpp"
if (!hasInterface) exitWith {};
[missionNamespace, "ACE_setCustomAimCoef", QUOTE(ADDON), {
private _unit = ACE_player;
private _fatigue = _unit getVariable [QGVAR(aimFatigue), 0];
switch (stance _unit) do {
case ("CROUCH"): {
1.0 + _fatigue ^ 2 * 0.1
};
case ("PRONE"): {
1.0 + _fatigue ^ 2 * 2.0
};
default {
1.5 + _fatigue ^ 2 * 3.0
};
};
}] call EFUNC(common,arithmeticSetSource);
["ace_settingsInitialized", {
if (!GVAR(enabled)) exitWith {};
@ -30,7 +48,7 @@ if (!hasInterface) exitWith {};
linearConversion [0, 1, (_this getVariable [QEGVAR(medical,pain), 0]), 1, 1.1, true];
}] call FUNC(addDutyFactor);
[QEGVAR(medical,bloodVolume), { // 100->1.0, 90->1.1, 80->1.2
linearConversion [100, 0, (_this getVariable [QEGVAR(medical,bloodVolume), 100]), 1, 2, true];
linearConversion [6, 0, (_this getVariable [QEGVAR(medical,bloodVolume), 100]), 1, 2, true];
}] call FUNC(addDutyFactor);
};
if (["ACE_Dragging"] call EFUNC(common,isModLoaded)) then {

View File

@ -88,14 +88,7 @@ if (_overexhausted) then {
};
};
switch (stance _unit) do {
case ("CROUCH"): {
[_unit, QUOTE(ADDON), (1.0 + _fatigue ^ 2 * 0.1) * GVAR(swayFactor)] call EFUNC(common,setAimCoef);
};
case ("PRONE"): {
[_unit, QUOTE(ADDON), (1.0 + _fatigue ^ 2 * 2.0) * GVAR(swayFactor)] call EFUNC(common,setAimCoef);
};
default {
[_unit, QUOTE(ADDON), (1.5 + _fatigue ^ 2 * 3.0) * GVAR(swayFactor)] call EFUNC(common,setAimCoef);
};
};
_unit setVariable [QGVAR(aimFatigue), _fatigue];
private _aimCoef = [missionNamespace, "ACE_setCustomAimCoef", "max"] call EFUNC(common,arithmeticGetResult);
_unit setCustomAimCoef _aimCoef;

View File

@ -13,7 +13,7 @@ class Display3DEN {
};
class aceArsenal: virtualArsenal {
text = "ACE Arsenal";
action = QUOTE(call FUNC(open3DEN));
action = QUOTE(call DFUNC(open3DEN));
};
};
};
@ -21,12 +21,12 @@ class Display3DEN {
class MenuStrip: ctrlMenuStrip {
class Items {
class Tools {
items[] += {"ACE_arsenal_portVALoadouts"};
items[] += {QGVAR(portVALoadouts)};
};
class ACE_arsenal_portVALoadouts {
class GVAR(portVALoadouts) {
text = CSTRING(portLoadoutsText);
picture = QPATHTOEF(common,data\logo_ace3_ca.paa);
action = "call ace_arsenal_fnc_portVALoadouts;";
action = QUOTE(call DFUNC(portVALoadouts););
};
};
};

View File

@ -60,4 +60,15 @@ GVAR(modList) = ["","curator","kart","heli","mark","expansion","expansionpremium
call FUNC(compileStats);
// compatibility with CBA scripted 2d optics framework
[QGVAR(displayOpened), {
"cba_optics_arsenalOpened" call CBA_fnc_localEvent;
"cba_disposable_arsenalOpened" call CBA_fnc_localEvent;
}] call CBA_fnc_addEventHandler;
[QGVAR(displayClosed), {
"cba_optics_arsenalClosed" call CBA_fnc_localEvent;
"cba_disposable_arsenalClosed" call CBA_fnc_localEvent;
}] call CBA_fnc_addEventHandler;
ADDON = true;

View File

@ -1,6 +1,6 @@
#include "script_component.hpp"
#include "..\defines.hpp"
#include "\A3\ui_f\hpp\defineDIKCodes.inc"
#include "\a3\ui_f\hpp\defineDIKCodes.inc"
/*
* Author: Alganthe
* Handles keyboard inputs in arsenal.

View File

@ -211,7 +211,7 @@ for "_dataIndex" from 0 to 9 do {
};
case 9: {
for "_subIndex" from 0 to 4 do {
for "_subIndex" from 0 to 5 do {
private _item = (_loadout select _dataIndex) select _subIndex;
if (_item != "") then {

View File

@ -290,7 +290,7 @@ class CfgAmmo {
ACE_barrelLengths[]={508.0, 609.6, 660.4};
};
class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball {
airFriction=-0.00055262;
airFriction=-0.00053638;
caliber=2.0;
hit=19;
typicalSpeed=853;

View File

@ -107,14 +107,14 @@ class CfgMagazineWells {
"ACE_30Rnd_65x47_Scenar_mag",
"ACE_20Rnd_65x47_Scenar_mag"
};
};
};
class CBA_338LM_AI { //338 Lapua Magnum Accuracy International
ADDON[] = {
"ACE_10Rnd_338_300gr_HPBT_Mag",
"ACE_10Rnd_338_API526_Mag"
};
};
};
class CBA_408CT_Inter {
ADDON[] = {
@ -122,13 +122,13 @@ class CfgMagazineWells {
};
};
class CBA_50BMG_M107 {
class CBA_50BMG_M107 {
ADDON[] = {
"ACE_5Rnd_127x99_Mag",
"ACE_5Rnd_127x99_API_Mag",
"ACE_5Rnd_127x99_AMAX_Mag"
};
};
};
class CBA_9x19_P226 { // SIG P226
ADDON[] = {
@ -161,30 +161,5 @@ class CfgMagazineWells {
"ACE_10Rnd_762x54_Tracer_mag"
};
};
class CBA_762x54R_Mosin {
ADDON[] = {
"ACE_10Rnd_762x54_Tracer_mag"
};
};
class CBA_762x54R_SVT {
ADDON[] = {
"ACE_10Rnd_762x54_Tracer_mag"
};
};
class CBA_762x54R_DPM {
ADDON[] = {
"ACE_10Rnd_762x54_Tracer_mag"
};
};
class CBA_762x54R_DT {
ADDON[] = {
"ACE_10Rnd_762x54_Tracer_mag"
};
};
class CBA_762x54R_Maxim {
ADDON[] = {
"ACE_10Rnd_762x54_Tracer_mag"
};
};
};

View File

@ -28,8 +28,6 @@ class CfgWeapons {
// MX
class arifle_MX_Base_F: Rifle_Base_F {
magazineWell[] = {"CBA_65x39_MX", "CBA_65x39_MX_XL"};
class Single: Mode_SemiAuto {
dispersion = MOA_TO_RAD(0.90);
};

View File

@ -1,7 +1,6 @@
PREP(addLoadCaptiveActions);
PREP(canApplyHandcuffs);
PREP(canEscortCaptive);
PREP(canFriskPerson);
PREP(canLoadCaptive);
PREP(canRemoveHandcuffs);
PREP(canStopEscorting);
@ -9,7 +8,6 @@ PREP(canSurrender);
PREP(canUnloadCaptive);
PREP(doApplyHandcuffs);
PREP(doEscortCaptive);
PREP(doFriskPerson);
PREP(doLoadCaptive);
PREP(doRemoveHandcuffs);
PREP(doUnloadCaptive);

View File

@ -1,5 +1,5 @@
#include "script_component.hpp"
#include "\a3\editor_f\Data\Scripts\dikCodes.h"
#include "\a3\ui_f\hpp\defineDIKCodes.inc"
["ace_settingsInitialized", {
// Hold on a little bit longer to ensure anims will work

View File

@ -6,7 +6,7 @@ class CfgPatches {
units[] = {QGVAR(ModuleSettings), QGVAR(ModuleSurrender), QGVAR(ModuleHandcuffed)};
weapons[] = {"ACE_CableTie"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Interaction"};
requiredAddons[] = {"ace_interaction"};
author = ECSTRING(common,ACETeam);
authors[] = {"commy2", "KoffeinFlummi"};
url = ECSTRING(main,URL);

View File

@ -1,24 +0,0 @@
#include "script_component.hpp"
/*
* Author: bux578
* Checks the conditions for being able to frisk a unit
*
* Arguments:
* 0: caller (player) <OBJECT>
* 1: target <OBJECT>
*
* Return Value:
* The return value <BOOL>
*
* Example:
* [player, bob] call ACE_captives_fnc_canFriskPerson
*
* Public: No
*/
params ["_unit", "_target"];
_target getVariable [QGVAR(isHandcuffed), false]
|| {_target getVariable [QGVAR(isSurrendering), false]}
|| {_target getVariable ["ACE_isSearchable", false]}
|| {_target getVariable ["ACE_isUnconscious", false]}

View File

@ -1,67 +0,0 @@
#include "script_component.hpp"
/*
* Author: bux578
* Open the select menu with the "personal" items of a frisked unit. It only shows "handgunWeapon", "uniformItems", "vestItems", "backpackItems" and "assignedItems" because every other item is visible on the character
*
* Arguments:
* 0: player unit <OBJECT>
* 1: unit <OBJECT>
*
* Return Value:
* None
*
* Example:
* [player, bob] call ACE_captives_fnc_doFristPerson;
*
* Public: No
*/
params ["_player", "_unit"];
private _weapon = currentWeapon _player;
if (_weapon == primaryWeapon _player && {_weapon != ""}) then {
[_player, "AmovPercMstpSlowWrflDnon", 0] call EFUNC(common,doAnimation);
};
private _listedItemClasses = [];
private _actions = [localize LSTRING(FriskMenuHeader), ""] call ACE_Interaction_fnc_prepareSelectMenu;
private _allGear = [];
if ((handgunWeapon _unit) != "") then {
_allGear pushBack (handgunWeapon _unit);
};
if (count (uniformItems _unit) > 0) then {
_allGear = _allGear + (uniformItems _unit);
};
if (count (vestItems _unit) > 0) then {
_allGear = _allGear + (vestItems _unit);
};
if (count (backpackItems _unit) > 0) then {
_allGear = _allGear + (backpackItems _unit);
};
if (count (assignedItems _unit) > 0) then {
_allGear = _allGear + (assignedItems _unit);
};
// Handgun
// Uniform Items
// Vest Items
// Backpack Items
// Assigned Items
{
if (!(_x in _listedItemClasses)) then {
private _item = configFile >> "CfgMagazines" >> _x;
if (isNil "_item" || str _item == "") then { //str _item ?
_item = configFile >> "CfgWeapons" >> _x;
};
_actions = [_actions, getText(_item >> "displayName"), getText(_item >> "picture"), _x] call ACE_Interaction_fnc_addSelectableItem;
_listedItemClasses pushBack _x;
};
} forEach (_allGear);
[_actions, {call ACE_Interaction_fnc_hideMenu;}, {call ACE_Interaction_fnc_hideMenu;}] call ACE_Interaction_fnc_openSelectMenu;
// don't need an "Ok" Button
ctrlShow [8860, false];

View File

@ -155,38 +155,6 @@
<Chinese>束線帶可以綁住俘虜</Chinese>
<Chinesesimp>束线带可以绑住俘虏</Chinesesimp>
</Key>
<Key ID="STR_ACE_Captives_FriskMenuHeader">
<English>Inventory of frisked person</English>
<German>Inventar der durchsuchten Person</German>
<French>Inventaire de la personne fouillé</French>
<Spanish>Inventario de la persona cacheada</Spanish>
<Hungarian>Motozott személy felszerelése</Hungarian>
<Czech>Inventář prohledávané osoby</Czech>
<Polish>Ekwipunek rewidowanej osoby</Polish>
<Russian>Инвентарь обысканного человека</Russian>
<Portuguese>Inventário da pessoa revistada</Portuguese>
<Italian>Inventario della persona perquisita</Italian>
<Japanese>捕虜の持ち物を確認する</Japanese>
<Korean>검문당한 사람의 소지품</Korean>
<Chinese>搜身選單</Chinese>
<Chinesesimp>搜身选单</Chinesesimp>
</Key>
<Key ID="STR_ACE_Captives_FriskPerson">
<English>Frisk person</English>
<German>Person durchsuchen</German>
<French>Fouiller la personne</French>
<Spanish>Cachear</Spanish>
<Czech>Prohledávaná osoba</Czech>
<Polish>Rewiduj osobę</Polish>
<Hungarian>Motozás</Hungarian>
<Russian>Обыскать человека</Russian>
<Portuguese>Revistar</Portuguese>
<Italian>Perquisisci la persona</Italian>
<Japanese>捕虜の持ち物</Japanese>
<Korean>검문당한사람</Korean>
<Chinese>搜身</Chinese>
<Chinesesimp>搜身</Chinesesimp>
</Key>
<Key ID="STR_ACE_Captives_StartSurrendering">
<English>Surrender</English>
<French>Se rendre</French>

View File

@ -1,4 +1,6 @@
class ACE_Settings {
//IGNORE_STRING_WARNING(STR_ACE_Common_SettingName);
//IGNORE_STRING_WARNING(STR_ACE_Common_SettingDescription);
/*
* class GVAR(sampleSetting) {
* value = 1; // Value

View File

@ -56,6 +56,8 @@ PREP(fixFloating);
PREP(fixLoweredRifleAnimation);
PREP(fixPosition);
PREP(getAllDefinedSetVariables);
PREP(getAwakeAnim);
PREP(getCountOfItem);
PREP(getDeathAnim);
PREP(getDefaultAnim);
PREP(getDefinedVariable);

View File

@ -39,6 +39,11 @@
_object allowSprint (_set == 0);
}] call CBA_fnc_addEventHandler;
[QGVAR(setAnimSpeedCoef), {
params ["_object", "_set"];
_object setAnimSpeedCoef _set;
}] call CBA_fnc_addEventHandler;
[QGVAR(setCaptive), {
params ["_object", "_set"];
TRACE_2("setCaptive EH",_object,_set);
@ -83,6 +88,11 @@
_vehicle engineOn false;
}] call CBA_fnc_addEventHandler;
[QGVAR(setMass), {
params ["_object", "_mass"];
_object setMass _mass;
}] call CBA_fnc_addEventHandler;
//Add a fix for BIS's zeus remoteControl module not reseting variables on DC when RC a unit
//This variable is used for isPlayer checks
if (isServer) then {

View File

@ -113,7 +113,7 @@ private _settings = configProperties [configFile >> "ACE_Settings", "(isClass _x
_output pushBack "";
_output pushBack format ["["];
_output pushBack format [" QGVAR(%1), ""%2"",", _gvarName, _cbaSettingType];
_output pushBack format [" [LSTRING(), LSTRING()], // %1, %2", _localizedName, _localizedDescription];
_output pushBack format [" [LSTRING(), LSTRING()], // %1, %2", _localizedName, _localizedDescription]; //IGNORE_STRING_WARNING(str_ace_common_);
_output pushBack format [" ""%1"", // %2", ["localize LSTRING()", _category] select _uncat, _category];
_output pushBack format [" %1, // %2", _cbaValueInfo, _cbaValueInfoHint];
_output pushBack format [" %1, // isGlobal", _cbaIsGlobal];

View File

@ -70,7 +70,7 @@ if (!(_oldCompats isEqualTo [])) then {
// check dlls
///////////////
if (toLower (productVersion select 6) in ["linux", "osx"]) then {
INFO_2("Operating system does not support DLL file format");
INFO("Operating system does not support DLL file format");
} else {
{
private _versionEx = _x callExtension "version";

View File

@ -10,7 +10,6 @@
* 0 = PlayMove
* 1 = PlayMoveNow
* 2 = SwitchMove (no transitional animation, doesn't overwrite priority 1)
* 3: Force overwritting unconscious (default: false) <BOOL>
*
* Return Value:
* None
@ -21,14 +20,8 @@
* Public: Yes
*/
params ["_unit", "_animation", ["_priority", 0], ["_force", false]];
TRACE_4("params",_unit,_animation,_priority,_force);
// don't overwrite more important animations
if (_unit getVariable ["ACE_isUnconscious", false] && {(_animation != "Unconscious")} && {!_force}) exitWith {};
// don't go unconscious if the unit isn't unconscious
if (_animation == "Unconscious" && {!((_unit getVariable ["ACE_isUnconscious", false]) || (_unit getVariable ["ACE_isDead", false]))}) exitWith {};
params ["_unit", "_animation", ["_priority", 0]];
TRACE_3("params",_unit,_animation,_priority);
// switchMove "" no longer works in dev 1.37
if (_animation == "") then {
@ -43,7 +36,7 @@ switch (_priority) do {
if (_unit == vehicle _unit) then {
[QGVAR(playMove), [_unit, _animation], _unit] call CBA_fnc_targetEvent;
} else {
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles.
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have local effects when executed on remote machines inside vehicles.
[QGVAR(playMove), [_unit, _animation]] call CBA_fnc_globalEvent;
};
};
@ -51,7 +44,7 @@ switch (_priority) do {
if (_unit == vehicle _unit) then {
[QGVAR(playMoveNow), [_unit, _animation], _unit] call CBA_fnc_targetEvent;
} else {
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles.
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have local effects when executed on remote machines inside vehicles.
[QGVAR(playMoveNow), [_unit, _animation]] call CBA_fnc_globalEvent;
};
};
@ -60,7 +53,7 @@ switch (_priority) do {
if (_unit == vehicle _unit) then {
[QGVAR(playMoveNow), [_unit, _animation], _unit] call CBA_fnc_targetEvent;
} else {
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles.
// Execute on all machines. PlayMove and PlayMoveNow are bugged: They have local effects when executed on remote machines inside vehicles.
[QGVAR(playMoveNow), [_unit, _animation]] call CBA_fnc_globalEvent;
};

View File

@ -0,0 +1,49 @@
#include "script_component.hpp"
/*
* Author: commy2
* Report awake animation of unit inside vehicle.
*
* Arguments:
* 0: The unit <OBJECT>
*
* ReturnValue:
* The animtaion <STRING>
*
* Example:
* player call ace_common_fnc_getAwakeAnim
*
* Public: no
*/
params ["_unit"];
private _vehicle = vehicle _unit;
// --- on foot
if (_vehicle isEqualTo _unit) exitWith {""};
// --- driver
private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
if (_unit == driver _vehicle) exitWith {
getText (configFile >> "CfgMovesBasic" >> "ManActions" >> getText (_config >> "driverAction")) // return
};
// --- turret
private _turret = _unit call CBA_fnc_turretPath;
if !(_turret isEqualTo []) exitWith {
private _turretConfig = [_vehicle, _turret] call CBA_fnc_getTurret;
getText (configFile >> "CfgMovesBasic" >> "ManActions" >> getText (_turretConfig >> "gunnerAction")) // return
};
// --- cargo
private _cargoIndex = _vehicle getCargoIndex _unit;
if (_cargoIndex != -1) exitWith {
getText (configFile >> "CfgMovesBasic" >> "ManActions" >> getArray (_config >> "cargoAction") select _cargoIndex) // return
};
// --- default
""

View File

@ -0,0 +1,31 @@
#include "script_component.hpp"
/*
* Author: Dedmen
* Return how many items of type _itemType the player has in his containers (Uniform, Vest, Backpack)
* Doesn't count assignedItems, weapons, weapon attachments, magazines in weapons
*
* Arguments:
* 0: Unit <OBJECT>
* 1: Classname of item (Case-Sensitive) <STRING>
*
* Return Value:
* Item Count <NUMBER>
*
* Example:
* [bob, "FirstAidKit"] call ace_common_fnc_getCountOfItem
*
* Public: Yes
*/
params ["_unit", "_itemType"];
private _countItemsInContainer = {
(getItemCargo _this) params ["_itemTypes", "_itemCounts"];
private _index = _itemTypes find _itemType;
_itemCounts param [_index, 0]
};
((uniformContainer _unit) call _countItemsInContainer) +
((vestContainer _unit) call _countItemsInContainer) +
((backpackContainer _unit) call _countItemsInContainer)

View File

@ -17,4 +17,4 @@
params ["_unit"];
!(_unit getVariable ["ACE_isUnconscious", false]) && alive _unit && !(_unit getVariable ["ACE_isDead", false]) // return
alive _unit && {!(_unit getVariable ["ACE_isUnconscious", false])}

View File

@ -5,7 +5,7 @@
* Use this in INIT and RESPAWN eh scripts, because ACE_player isn't reset yet.
*
* Arguments:
* NONE.
* None
*
* Return Value:
* Player controlled unit <OBJECT>

View File

@ -1,7 +1,7 @@
#include "script_component.hpp"
/*
* Author: dedmen
* Adds the local unit event handlers.
* Adds the local unit event handlers.
* Access with function `ace_common_fnc_getLocalUnits` or array `ace_common_localUnits`
*
* Arguments:
@ -15,6 +15,8 @@
*
* Public: No
*/
// Ignore UAV/Drone AI
#define IGNORE_BASE_UAVPILOTS "B_UAV_AI", "O_UAV_AI", "UAV_AI_base_F"
GVAR(localUnits) = [];
@ -27,7 +29,7 @@ GVAR(localUnits) = [];
if (!alive _unit) exitWith {};
GVAR(localUnits) pushBack _unit;
};
}] call CBA_fnc_addClassEventHandler;
}, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler;
["CAManBase", "respawn", {
params ["_unit"];
@ -37,7 +39,7 @@ GVAR(localUnits) = [];
if (!alive _unit) exitWith {};
GVAR(localUnits) pushBack _unit;
};
}] call CBA_fnc_addClassEventHandler;
}, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler;
["CAManBase", "local", {
params ["_unit", "_local"];
@ -49,7 +51,7 @@ GVAR(localUnits) = [];
} else {
GVAR(localUnits) deleteAt (GVAR(localUnits) find _unit);
};
}] call CBA_fnc_addClassEventHandler;
}, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler;
["CAManBase", "deleted", {
params ["_unit"];
@ -64,7 +66,7 @@ GVAR(localUnits) = [];
};
}, [_unit]] call CBA_fnc_execNextFrame;
};
}] call CBA_fnc_addClassEventHandler;
}, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler;
["CAManBase", "killed", {
params ["_unit"];
@ -73,4 +75,4 @@ GVAR(localUnits) = [];
if (local _unit) then {
GVAR(localUnits) deleteAt (GVAR(localUnits) find _unit);
};
}] call CBA_fnc_addClassEventHandler;
}, true, [IGNORE_BASE_UAVPILOTS]] call CBA_fnc_addClassEventHandler;

View File

@ -38,32 +38,51 @@ if (count _emptyPos != 3) exitwith {
unassignVehicle _unit;
[_unit] orderGetIn false;
TRACE_1("Ejecting", alive _unit);
private _resetUncon = false;
if (lifeState _unit == "INCAPACITATED") then {
_resetUncon = true;
_unit setUnconscious false;
TRACE_1("pausing setUnconscious",_unit);
};
TRACE_1("Ejecting", alive _unit);
_unit action ["Eject", vehicle _unit];
[{
params ["_unit", "_emptyPos"];
params ["_unit", "_emptyPos", "_resetUncon"];
if ((vehicle _unit) != _unit) then {
WARNING_2("Failed to unload in time [%1 - %2]",_unit, vehicle _unit);
};
_unit setPosASL AGLToASL _emptyPos;
if !([_unit] call FUNC(isAwake)) then {
TRACE_1("Check if isAwake", [_unit] call FUNC(isAwake));
if (driver _unit == _unit) then {
private _anim = [_unit] call FUNC(getDeathAnim);
[_unit, _anim, 1, true] call FUNC(doAnimation);
[{
params ["_unit", "_anim"];
if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then {
[_unit, _anim, 2, true] call FUNC(doAnimation);
};
}, [_unit, _anim], 0.5] call CBA_fnc_waitAndExecute;
};
if (_resetUncon) then {
TRACE_1("resuming setUnconscious",_unit);
// This should reset the unit to an Unconscious animation
// Also has the hilarious effect of violently ragdolling the guy
_unit setUnconscious true;
};
}, [_unit, _emptyPos], 0.5] call CBA_fnc_waitAndExecute;
// ToDo [medical-rewrite]: verify we can remove the following commented code
// if !([_unit] call FUNC(isAwake)) then {
// TRACE_1("Check if isAwake", [_unit] call FUNC(isAwake));
// if (driver _unit == _unit) then {
// private _anim = [_unit] call FUNC(getDeathAnim);
// [_unit, _anim, 1, true] call FUNC(doAnimation);
// [{
// params ["_unit", "_anim"];
// if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then {
// [_unit, _anim, 2, true] call FUNC(doAnimation);
// };
// }, [_unit, _anim], 0.5] call CBA_fnc_waitAndExecute;
// };
// };
}, [_unit, _emptyPos, _resetUncon], 0.5] call CBA_fnc_waitAndExecute;
[_unit, false, GROUP_SWITCH_ID, side group _unit] call FUNC(switchToGroupSide);

View File

@ -4,13 +4,14 @@
private _aceWhitelist = missionNamespace getVariable ["ACE_Version_Whitelist", []];
private _files = CBA_common_addons select {
(_x select [0,3] != "a3_") &&
{_x select [0,4] != "ace_"} &&
{_x select [0,4] != "ace_"} &&
{!((toLower _x) in _aceWhitelist)}
};
private _versions = [];
{
private _version = parseNumber getText (configFile >> "CfgPatches" >> _x >> "version");
getText (configFile >> "CfgPatches" >> _x >> "version") splitString "." params [["_major", "0"], ["_minor", "0"]];
private _version = parseNumber _major + parseNumber _minor/100;
_versions set [_forEachIndex, _version];
} forEach _files;

View File

@ -26,6 +26,20 @@
<Korean>ACE-Team</Korean>
<Chinese>ACE-製作團隊</Chinese>
<Chinesesimp>ACE-制作团队</Chinesesimp>
</Key>
<Key ID="STR_ACE_Common_Advanced">
<English>Advanced</English>
<Russian>Усложненный</Russian>
<Polish>Zaawansowany</Polish>
<Spanish>Avanzado</Spanish>
<German>Erweitert</German>
<Czech>Pokročilé</Czech>
<Portuguese>Avançada</Portuguese>
<French>Avancée</French>
<Hungarian>Fejlett</Hungarian>
<Italian>Avanzato</Italian>
<Japanese>アドバンスド</Japanese>
<Korean>고급</Korean>
</Key>
<Key ID="STR_ACE_Common_Save">
<English>Save</English>
@ -395,6 +409,20 @@
<Korean>알 수 없음</Korean>
<Chinese>未知的</Chinese>
<Chinesesimp>未知的</Chinesesimp>
</Key>
<Key ID="STR_ACE_Common_Normal">
<English>Normal</English>
<German>Normal</German>
<Italian>Normale</Italian>
<Russian>Нормальное</Russian>
<French>Normale</French>
<Polish>Normalne</Polish>
<Spanish>Normal</Spanish>
<Hungarian>Normális</Hungarian>
<Czech>Normální</Czech>
<Portuguese>Normal</Portuguese>
<Japanese>通常</Japanese>
<Korean>보통</Korean>
</Key>
<Key ID="STR_ACE_Common_NoVoice">
<English>No Voice</English>
@ -969,6 +997,51 @@
<Korean>활성화</Korean>
<Chinese>啟用</Chinese>
<Chinesesimp>启用</Chinesesimp>
</Key>
<Key ID="STR_ACE_Common_Always">
<English>Always</English>
</Key>
<Key ID="STR_ACE_Common_Anywhere">
<English>Anywhere</English>
<Russian>Где угодно</Russian>
<Polish>Wszędzie</Polish>
<Spanish>Donde sea</Spanish>
<German>Überall</German>
<Czech>Kdekoliv</Czech>
<Portuguese>Qualquer lugar</Portuguese>
<French>PArtout</French>
<Hungarian>Akárhol</Hungarian>
<Italian>Ovunque</Italian>
<Japanese>どこでも</Japanese>
<Korean>어디서나</Korean>
</Key>
<Key ID="STR_ACE_Common_Basic">
<English>Basic</English>
<Russian>Базовый</Russian>
<Polish>Podstawowy</Polish>
<Spanish>Básico</Spanish>
<German>Standard</German>
<Czech>Základní</Czech>
<Portuguese>Básica</Portuguese>
<French>Basique</French>
<Hungarian>Alap</Hungarian>
<Italian>Basico</Italian>
<Japanese>ベーシック</Japanese>
<Korean>기본</Korean>
</Key>
<Key ID="STR_ACE_Common_Vehicle">
<English>Medical vehicles</English>
<Russian>В медицинском транспорте</Russian>
<Polish>Pojazdy medyczne</Polish>
<Spanish>Vehiculos médicos</Spanish>
<German>Sanitätsfahrzeuge</German>
<Czech>Zdravotnická vozidla</Czech>
<Portuguese>Veículos médcos</Portuguese>
<French>Dans les véhicules médicals</French>
<Hungarian>Orvosi járművek</Hungarian>
<Italian>Veicoli medici</Italian>
<Japanese>医療車両のみ</Japanese>
<Korean>의료차량</Korean>
</Key>
<Key ID="STR_ACE_Common_Yes">
<English>Yes</English>
@ -1002,6 +1075,12 @@
<Chinese></Chinese>
<Chinesesimp></Chinesesimp>
</Key>
<Key ID="STR_ACE_Common_Confirm">
<English>Confirm</English>
</Key>
<Key ID="STR_ACE_Common_Never">
<English>Never</English>
</Key>
<Key ID="STR_ACE_Common_VehiclesOnly">
<English>Vehicles only</English>
<German>Nur Fahrzeuge</German>

View File

@ -1,40 +1,18 @@
class ACE_Settings {
class GVAR(enable) {
category = CSTRING(displayName);
displayName = CSTRING(enable_name);
description = CSTRING(enable_tooltip);
value = 0;
typeName = "BOOL";
movedToSqf = 1;
};
class GVAR(enableAmmobox) {
category = CSTRING(displayName);
displayName = CSTRING(enableBoxCookoff_name);
description = CSTRING(enableBoxCookoff_tooltip);
value = 1;
typeName = "BOOL";
movedToSQF = 1;
};
class GVAR(enableAmmoCookoff) { // For CBA Setting Switch: we can eliminate and just use (ammoCookoffDuration == 0)
category = CSTRING(displayName);
displayName = CSTRING(enableAmmoCookoff_name);
description = CSTRING(enableAmmoCookoff_tooltip);
value = 1;
typeName = "BOOL";
movedToSQF = 1;
};
class GVAR(ammoCookoffDuration) {
category = CSTRING(displayName);
displayName = CSTRING(ammoCookoffDuration_name);
description = CSTRING(ammoCookoffDuration_tooltip);
value = 1;
typeName = "SCALAR";
sliderSettings[] = {0, 5, 1, 1};
movedToSQF = 1;
};
class GVAR(probabilityCoef) {
category = CSTRING(displayName);
displayName = CSTRING(probabilityCoef_name);
description = CSTRING(probabilityCoef_tooltip);
value = 1;
typeName = "SCALAR";
sliderSettings[] = {0, 5, 1, 1};
movedToSQF = 1;
};
};

View File

@ -7,8 +7,8 @@ class Cfg3DEN {
class GVAR(enable) {
property = QGVAR(enable);
control = "Checkbox";
displayName = CSTRING(enable_name);
tooltip = CSTRING(enable_tooltip);
displayName = CSTRING(enable_hd_name);
tooltip = CSTRING(enable_hd_tooltip);
expression = QUOTE(if !(_value) then {_this setVariable [ARR_3('%s',_value,true)];};);
typeName = "BOOL";
condition = "objectVehicle";

View File

@ -6,4 +6,6 @@ PREP_RECOMPILE_START;
#include "XEH_PREP.hpp"
PREP_RECOMPILE_END;
#include "initSettings.sqf"
ADDON = true;

View File

@ -0,0 +1,51 @@
// CBA Settings [ADDON: ace_cookoff]:
[
QGVAR(enable), "CHECKBOX",
[LSTRING(enable_hd_name), LSTRING(enable_hd_tooltip)],
LSTRING(category_displayName),
false, // default value
true, // isGlobal
{[QGVAR(enable), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
] call CBA_settings_fnc_init;
[
QGVAR(enableAmmobox), "CHECKBOX",
[LSTRING(enableBoxCookoff_name), LSTRING(enableBoxCookoff_tooltip)],
LSTRING(category_displayName),
true, // default value
true, // isGlobal
{[QGVAR(enableAmmobox), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
] call CBA_settings_fnc_init;
[
QGVAR(enableAmmoCookoff), "CHECKBOX",
[LSTRING(enableAmmoCookoff_name), LSTRING(enableAmmoCookoff_tooltip)],
LSTRING(category_displayName),
true, // default value
true, // isGlobal
{[QGVAR(enableAmmoCookoff), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
] call CBA_settings_fnc_init;
[
QGVAR(ammoCookoffDuration), "SLIDER",
[LSTRING(ammoCookoffDuration_name), LSTRING(ammoCookoffDuration_tooltip)],
LSTRING(category_displayName),
[0,5,1,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
true, // isGlobal
{[QGVAR(ammoCookoffDuration), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
] call CBA_settings_fnc_init;
[
QGVAR(probabilityCoef), "SLIDER",
[LSTRING(probabilityCoef_name), LSTRING(probabilityCoef_tooltip)],
LSTRING(category_displayName),
[0,5,1,1], // [min, max, default value, trailing decimals (-1 for whole numbers only)]
true, // isGlobal
{[QGVAR(probabilityCoef), _this] call EFUNC(common,cbaSettings_settingChanged)},
true // Needs mission restart
] call CBA_settings_fnc_init;

View File

@ -1,42 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="CookOff">
<Key ID="STR_ACE_CookOff_displayName">
<English>Cook off</English>
<Italian>Esplosione</Italian>
<Chinese>殉爆效果</Chinese>
<Chinesesimp>殉爆效果</Chinesesimp>
<Japanese>誘爆</Japanese>
<Korean>쿡오프</Korean>
<German>Durchzündung</German>
<French>Cook off</French>
<Polish>Samozapłon</Polish>
<Key ID="STR_ACE_CookOff_category_displayName">
<English>ACE Cook off</English>
<Italian>ACE Esplosione</Italian>
<Chinese>ACE 殉爆效果</Chinese>
<Chinesesimp>ACE 殉爆效果</Chinesesimp>
<Japanese>ACE 誘爆</Japanese>
<Korean>ACE 쿡오프</Korean>
<German>ACE Durchzündung</German>
<French>ACE Cook off</French>
<Polish>ACE Samozapłon</Polish>
</Key>
<Key ID="STR_ACE_CookOff_enable_name">
<English>Enable cook off</English>
<German>Durchzündung ermöglichen</German>
<Czech>Povolit explozi munice</Czech>
<Russian>Включить воспламенение</Russian>
<Japanese>誘爆を有効化</Japanese>
<Korean>쿡오프 현상 활성화</Korean>
<Polish>Aktywuj efekty samozapłonu amunicji</Polish>
<French>Activer le cook off</French>
<Italian>Abilita Esplosione</Italian>
<Chinese>開啟殉爆效果</Chinese>
<Chinesesimp>开启殉爆效果</Chinesesimp>
<Key ID="STR_ACE_CookOff_enable_hd_name">
<English>Damage handling and turret effects</English>
</Key>
<Key ID="STR_ACE_CookOff_enable_tooltip">
<English>Enables cook off and related vehicle destruction effects.</English>
<German>Ermöglicht Durchzündung und zugehörige Fahrzeug-Zerstörungseffekte.</German>
<Czech>Povolí explozi munice a její následné ničivé efekty.</Czech>
<Russian>Включает воспламенение и сопутствующие эффекты повреждения техники.</Russian>
<Japanese>誘爆を有効化し、車両が誘爆によって破壊されていきます。</Japanese>
<Korean>쿡오프 현상을 활성화 하고 관련된 차량에 폭발 이펙트를 적용합니다.</Korean>
<Polish>Aktywuje efekt samozapłonu amunicji na zniszczonych pojazdach.</Polish>
<French>Active le cook-off (autocombustion des munitions) et les effets de destruction liés.</French>
<Italian>Abilita l'esplosione e i relativi effetti di distruzione del veicolo.</Italian>
<Chinese>開啟此功能後,將使有關載具在損毀時有殉爆的效果</Chinese>
<Chinesesimp>开启此功能后,将使有关载具在损毁时有殉爆的效果。</Chinesesimp>
<Key ID="STR_ACE_CookOff_enable_hd_tooltip">
<English>Changes damage handling for cook off and turret explosion effects</English>
</Key>
<Key ID="STR_ACE_CookOff_generic_turret_wreck">
<English>Wreck (Turret)</English>

View File

@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {"ACE_DebugPotato"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Interaction"};
requiredAddons[] = {"ace_interaction"};
author = ECSTRING(common,ACETeam);
authors[] = {"PabstMirror"};
url = ECSTRING(main,URL);

View File

@ -171,7 +171,7 @@ class CfgVehicles {
GVAR(canDrag) = 1;
GVAR(dragPosition[]) = {0,1.2,0};
GVAR(dragDirection) = 0;
GVAR(dragDirection) = 270;
};
class MetalCase_01_base_F: Items_base_F {
class EventHandlers {
@ -213,7 +213,7 @@ class CfgVehicles {
};
GVAR(canCarry) = 1;
GVAR(carryPosition[]) = {0,1,1};
GVAR(carryDirection) = 270;
GVAR(carryDirection) = 0;
GVAR(canDrag) = 1;
GVAR(dragPosition[]) = {0,1.4,0};

View File

@ -30,8 +30,7 @@ if (isNil "ACE_maxWeightCarry") then {
//@todo Captivity?
//Add Keybind:
["ACE3 Common", QGVAR(drag), (localize LSTRING(DragKeybind)),
{
["ACE3 Common", QGVAR(drag), (localize LSTRING(DragKeybind)), {
if (!alive ACE_player) exitWith {false};
if !([ACE_player, objNull, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith {false};
@ -51,7 +50,6 @@ if (isNil "ACE_maxWeightCarry") then {
[ACE_player, _cursor] call FUNC(startDrag);
false
},
{false},
[-1, [false, false, false]]] call CBA_fnc_addKeybind; // UNBOUND
}, {
false
}, [-1, [false, false, false]]] call CBA_fnc_addKeybind; // UNBOUND

View File

@ -24,7 +24,7 @@
#endif
params ["_args", "_idPFH"];
_args params ["_unit","_target", "_startTime"];
_args params ["_unit", "_target", "_startTime"];
if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith {
TRACE_2("carry false",_unit,_target);
@ -35,7 +35,7 @@ if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith {
if (!alive _target || {_unit distance _target > 10}) then {
TRACE_2("dead/distance",_unit,_target);
if ((_unit distance _target > 10) && {(CBA_missionTime - _startTime) < 1}) exitWith {
//attachTo seems to have some kind of network delay and target can return an odd position durring the first few frames,
//attachTo seems to have some kind of network delay and target can return an odd position during the first few frames,
//so wait a full second to exit if out of range (this is critical as we would otherwise detach and set it's pos to weird pos)
TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,CBA_missionTime);
};

View File

@ -24,7 +24,7 @@
#endif
params ["_args", "_idPFH"];
_args params ["_unit","_target", "_startTime"];
_args params ["_unit", "_target", "_startTime"];
if !(_unit getVariable [QGVAR(isDragging), false]) exitWith {
TRACE_2("drag false",_unit,_target);
@ -35,7 +35,7 @@ if !(_unit getVariable [QGVAR(isDragging), false]) exitWith {
if (!alive _target || {_unit distance _target > 10}) then {
TRACE_2("dead/distance",_unit,_target);
if ((_unit distance _target > 10) && {(CBA_missionTime - _startTime) < 1}) exitWith {
//attachTo seems to have some kind of network delay and target can return an odd position durring the first few frames,
//attachTo seems to have some kind of network delay and target can return an odd position during the first few frames,
//so wait a full second to exit if out of range (this is critical as we would otherwise detach and set it's pos to weird pos)
TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,CBA_missionTime);
};

View File

@ -76,3 +76,10 @@ if (_unit getVariable ["ACE_isUnconscious", false]) then {
if (_target getVariable [QGVAR(isUAV), false]) then {
createVehicleCrew _target;
};
// reset mass
private _mass = _target getVariable [QGVAR(originalMass), 0];
if (_mass != 0) then {
[QEGVAR(common,setMass), [_target, _mass], _target] call CBA_fnc_targetEvent;
};

View File

@ -17,7 +17,7 @@
*/
params ["_unit", "_target"];
TRACE_2("params",_unit,_target);
TRACE_1("params",_this);
// remove drop action
[_unit, "DefaultAction", _unit getVariable [QGVAR(ReleaseActionID), -1]] call EFUNC(common,removeActionEventHandler);
@ -76,3 +76,10 @@ if !(_target isKindOf "CAManBase") then {
if (_target getVariable [QGVAR(isUAV), false]) then {
createVehicleCrew _target;
};
// reset mass
private _mass = _target getVariable [QGVAR(originalMass), 0];
if (_mass != 0) then {
[QEGVAR(common,setMass), [_target, _mass], _target] call CBA_fnc_targetEvent;
};

View File

@ -29,10 +29,9 @@ if (_player getVariable [QGVAR(isDragging), false]) then {
};
// handle waking up dragged unit
//if (_unit == _draggedObject) then {
// [_player, _draggedObject] call FUNC(dropObject);
//};
if (_unit == _draggedObject) then {
[_player, _draggedObject] call FUNC(dropObject);
};
};
if (_player getVariable [QGVAR(isCarrying), false]) then {
@ -45,8 +44,7 @@ if (_player getVariable [QGVAR(isCarrying), false]) then {
};
// handle waking up dragged unit
//if (_unit == _carriedObject) then {
// [_player, _carriedObject] call FUNC(dropObject_carry);
//};
if (_unit == _carriedObject) then {
[_player, _carriedObject] call FUNC(dropObject_carry);
};
};

View File

@ -73,3 +73,11 @@ _unit setVariable [QGVAR(isCarrying), true, true];
_unit setVariable [QGVAR(carriedObject), _target, true];
[FUNC(startCarryPFH), 0.2, [_unit, _target, _timer]] call CBA_fnc_addPerFrameHandler;
// disable collisions by setting the physx mass to almost zero
private _mass = getMass _target;
if (_mass > 1) then {
_target setVariable [QGVAR(originalMass), _mass, true];
[QEGVAR(common,setMass), [_target, 1e-12], _target] call CBA_fnc_targetEvent;
};

View File

@ -61,3 +61,11 @@ if (_target isKindOf "CAManBase") then {
_unit setVariable [QGVAR(isDragging), true, true];
[FUNC(startDragPFH), 0.2, [_unit, _target, CBA_missionTime + 5]] call CBA_fnc_addPerFrameHandler;
// disable collisions by setting the physx mass to almost zero
private _mass = getMass _target;
if (_mass > 1) then {
_target setVariable [QGVAR(originalMass), _mass, true];
[QEGVAR(common,setMass), [_target, 1e-12], _target] call CBA_fnc_targetEvent;
};

View File

@ -15,6 +15,9 @@
* Public: No
*/
#define TIMER_VALUE_MIN_CUSTOM (missionNamespace getVariable [QGVAR(customTimerMin), TIMER_VALUE_MIN])
#define TIMER_VALUE_MAX_CUSTOM (missionNamespace getVariable [QGVAR(customTimerMax), TIMER_VALUE_MAX])
params ["_explosive"];
TRACE_1("Opening timer UI",_explosive);
@ -23,6 +26,9 @@ private _display = uiNamespace getVariable [QGVAR(timerDisplay), displayNull];
// Update slider speed to 1s
(_display displayCtrl IDC_TIMER_SLIDER) sliderSetSpeed [1, 1];
(_display displayCtrl IDC_TIMER_SLIDER) sliderSetRange [TIMER_VALUE_MIN_CUSTOM, TIMER_VALUE_MAX_CUSTOM];
(_display displayCtrl IDC_TIMER_SLIDER) sliderSetPosition (TIMER_VALUE_DEFAULT max TIMER_VALUE_MIN_CUSTOM min TIMER_VALUE_MAX_CUSTOM);
// Add confirm button action
GVAR(explosive) = _explosive;
@ -52,7 +58,7 @@ _display displayAddEventHandler ["MouseZChanged", {
if (cba_events_control) then {_change = _change * 10};
private _slider = _display displayCtrl IDC_TIMER_SLIDER;
private _value = (sliderPosition _slider + _change) max TIMER_VALUE_MIN min TIMER_VALUE_MAX;
private _value = (sliderPosition _slider + _change) max TIMER_VALUE_MIN_CUSTOM min TIMER_VALUE_MAX_CUSTOM;
_slider sliderSetPosition _value;
}];

View File

@ -75,8 +75,13 @@ class CfgVehicles {
};
class ACE_cutRopes {
displayName = CSTRING(Interaction_cutRopes);
condition = [_target] call FUNC(canCutRopes);
statement = [_target] call FUNC(cutRopes);
condition = QUOTE(true);
statement = "";
class confirmCutRopes {
displayName = ECSTRING(common,confirm);
condition = QUOTE([_target] call FUNC(canCutRopes));
statement = QUOTE([_target] call FUNC(cutRopes));
};
};
class ACE_fastRope {
displayName = CSTRING(Interaction_fastRope);
@ -202,7 +207,7 @@ class CfgVehicles {
GVAR(enabled) = 2;
GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"};
GVAR(friesType) = "ACE_friesAnchorBar";
GVAR(friesAttachmentPoint)[] = {0.065, 2.2, -0.15};
GVAR(friesAttachmentPoint)[] = {0.035, 2.2, -0.15};
GVAR(onPrepare) = QFUNC(onPrepareCommon);
GVAR(onCut) = QFUNC(onCutCommon);
EQUIP_FRIES_ATTRIBUTE;

View File

@ -4,7 +4,6 @@ PREP(canDeployRopes);
PREP(canFastRope);
PREP(canPrepareFRIES);
PREP(canStowFRIES);
PREP(checkVehicleThread);
PREP(cutRopes);
PREP(deployAI);
PREP(deployRopes);
@ -18,3 +17,4 @@ PREP(onPrepareCommon);
PREP(onRopeBreak);
PREP(prepareFRIES);
PREP(stowFRIES);
PREP(unequipFRIES);

View File

@ -1,24 +0,0 @@
#include "script_component.hpp"
/*
* Author: BaerMitUmlaut
* Checks if the given helicopter still exits, and if not, destroys the FRIES.
*
* Arguments:
* 0: The helicopter <OBJECT>
* 1: The helicopter's FRIES <OBJECT>
*
* Return Value:
* None
*
* Example:
* [_vehicle, _fries] call ace_fastroping_fnc_checkVehicleThread
*
* Public: No
*/
params ["_vehicle", "_fries"];
if (isNull _vehicle) then {
deleteVehicle _fries;
} else {
[FUNC(checkVehicleThread), _this, 5] call CBA_fnc_waitAndExecute;
};

View File

@ -12,7 +12,7 @@
* Example:
* [_vehicle] call ace_fastroping_fnc_equipFRIES
*
* Public: No
* Public: Yes
*/
params ["_vehicle"];
@ -24,15 +24,8 @@ if !(isNumber (_config >> QGVAR(enabled))) then {
private _fries = (getText (_config >> QGVAR(friesType))) createVehicle [0, 0, 0];
_fries attachTo [_vehicle, (getArray (_config >> QGVAR(friesAttachmentPoint)))];
_vehicle setVariable [QGVAR(FRIES), _fries, true];
_vehicle addEventHandler ["Killed", {
params ["_vehicle"];
deleteVehicle (_vehicle getVariable [QGVAR(FRIES), objNull]);
_vehicle setVariable [QGVAR(FRIES), nil, true];
if !((_vehicle getVariable [QGVAR(deployedRopes), []] isEqualTo [])) then {
[_vehicle] call FUNC(cutRopes);
};
}];
[FUNC(checkVehicleThread), [_vehicle, _fries], 5] call CBA_fnc_waitAndExecute;
_vehicle addEventHandler ["Killed", FUNC(unequipFRIES)];
_vehicle addEventHandler ["Deleted", FUNC(unequipFRIES)];
};
};

View File

@ -0,0 +1,24 @@
#include "script_component.hpp"
/*
* Author: BaerMitUmlaut
* Removes FRIES from helicopter.
*
* Arguments:
* 0: The helicopter <OBJECT>
*
* Return Value:
* None
*
* Example:
* [_vehicle] call ace_fastroping_fnc_unequipFRIES
*
* Public: Yes
*/
params ["_vehicle"];
deleteVehicle (_vehicle getVariable [QGVAR(FRIES), objNull]);
_vehicle setVariable [QGVAR(FRIES), nil, true];
if !((_vehicle getVariable [QGVAR(deployedRopes), []] isEqualTo [])) then {
[_vehicle] call FUNC(cutRopes);
};

View File

@ -15,13 +15,9 @@ if (!hasInterface) exitWith {};
};
}] call CBA_fnc_addEventHandler;
// Register fire event handler
["ace_firedPlayerVehicle", DFUNC(firedEH)] call CBA_fnc_addEventHandler;
["ace_firedPlayerVehicleNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler;
// Register event for global updates
[QGVAR(forceUpdate), {[ACE_player] call FUNC(onForceUpdate)}] call CBA_fnc_addEventHandler;
#ifdef DEBUG_MODE_FULL
call compile preprocessFileLineNumbers QPATHTOF(functions\dev_debugConfigs.sqf);
call compile preprocessFileLineNumbers QPATHTOF(dev\test_debugConfigs.sqf);
#endif

View File

@ -21,6 +21,13 @@ params ["_vehicle"];
private _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _x] call EFUNC(common,getTurretConfigPath);
if (getNumber (_turretConfig >> QGVAR(Enabled)) == 1) then {
if (missionNamespace getVariable [QGVAR(needToAddFiredEH), true]) then {
["ace_firedPlayerVehicle", LINKFUNC(firedEH)] call CBA_fnc_addEventHandler;
["ace_firedPlayerVehicleNonLocal", LINKFUNC(firedEH)] call CBA_fnc_addEventHandler;
GVAR(needToAddFiredEH) = false;
TRACE_1("Registered fired event handlers for all vehicles",GVAR(needToAddFiredEH));
};
_vehicle setVariable [format ["%1_%2", QGVAR(Distance), _x], 0, true];
_vehicle setVariable [format ["%1_%2", QGVAR(Magazines), _x], [], true];
_vehicle setVariable [format ["%1_%2", QGVAR(Elevation), _x], [], true];

View File

@ -72,7 +72,7 @@ private _gBlackOut = MAXVIRTUALG / _classCoef + MAXVIRTUALG / _suitCoef - MAXVIR
// Unconsciousness
if ((_average > _gBlackOut) and {isClass (configFile >> "CfgPatches" >> "ACE_Medical") and {!(ACE_player getVariable ["ACE_isUnconscious", false])}}) then {
[ACE_player, true, (10 + floor(random 5))] call EFUNC(medical,setUnconscious);
[ACE_player, true, (10 + floor(random 5)), true] call EFUNC(medical,setUnconscious);
};
GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[10,10,0,0,0,0.1,0.5]];

View File

@ -0,0 +1,4 @@
class CfgMagazineWells {
class GVAR(K) {};
class GVAR(N) {};
};

View File

@ -6,7 +6,7 @@ class CfgWeapons {
EGVAR(laser,canSelect) = 1; // can ace_laser lock (allows switching laser code)
EGVAR(laser,showHud) = 1; // show attack profile / lock on hud
magazines[] = {"6Rnd_ACE_Hellfire_AGM114K", "PylonMissile_1Rnd_ACE_Hellfire_AGM114K", "PylonRack_1Rnd_ACE_Hellfire_AGM114K", "PylonRack_3Rnd_ACE_Hellfire_AGM114K", "PylonRack_4Rnd_ACE_Hellfire_AGM114K"};
magazineWell[] += {QGVAR(K)};
autoFire = 0;
canLock = 0;
weaponLockSystem = 0;
@ -14,7 +14,7 @@ class CfgWeapons {
lockedTargetSound[] = {"",0,1};
soundFly[] = {"A3\Sounds_F\weapons\Rockets\rocket_fly_1",1,1.1,700};
nameSound = "MissileLauncher";
sounds[] = {"StandardSound"};
sounds[] = {"StandardSound"};
class StandardSound {
begin1[] = {"A3\Sounds_F\weapons\Rockets\missile_1",1.12202,1.3,1000};
soundBegin[] = {"begin1",1};
@ -27,5 +27,6 @@ class CfgWeapons {
class GVAR(launcher_N): GVAR(launcher) {
displayName = "AGM-114N Hellfire II";
magazines[] = {"6Rnd_ACE_Hellfire_AGM114N", "PylonMissile_1Rnd_ACE_Hellfire_AGM114N", "PylonRack_1Rnd_ACE_Hellfire_AGM114N", "PylonRack_3Rnd_ACE_Hellfire_AGM114N", "PylonRack_4Rnd_ACE_Hellfire_AGM114N"};
magazineWell[] += {QGVAR(N)};
};
};

View File

@ -18,5 +18,6 @@ class CfgPatches {
#include "CfgAmmo.hpp"
#include "CfgEventHandlers.hpp"
#include "CfgMagazines.hpp"
#include "CfgMagazineWells.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"

View File

@ -36,11 +36,6 @@ if (_unit == ACE_player) then {
addCamShake [3, 5, _damage + random 10];
};
// play scream sound
if (!isNil QEFUNC(medical,playInjuredSound)) then {
[_unit,_damage] call EFUNC(medical,playInjuredSound);
};
private _vehicle = vehicle _unit;
// handle static weapons

View File

@ -67,7 +67,7 @@ class RscACE_SelectAnItem {
text = "";
};
class itemList: RscListBox {
onMouseButtonDblClick = "_this call ACE_Interaction_fnc_onSelectMenuDblClick";
onMouseButtonDblClick = QUOTE(_this call DFUNC(onSelectMenuDblClick));
idc = 8866;
x = X_OFFSET + 0.005;
w = 0.59;
@ -106,7 +106,7 @@ class RscACE_SelectAnItem {
y = 0.605;
style = 2;
text = CSTRING(Back);
action = "call ACE_Interaction_fnc_hideMenu;"; //'Default' call ACE_Interaction_fnc_openMenu; 'Default' call ACE_Interaction_fnc_openMenuSelf;
action = QUOTE(call DFUNC(hideMenu);); //'Default' call DFUNC(openMenu); 'Default' call DFUNC(openMenuSelf);
colorBackground[] = {0,0,0,0};
colorBackgroundDisabled[] = {0,0,0,0};
colorBackgroundActive[] = {1,1,1,0.2};
@ -120,7 +120,7 @@ class RscACE_SelectAnItem {
w = 0.15;
style = 2;
text = CSTRING(MakeSelection);
action = "call ACE_Interaction_fnc_hideMenu;";
action = QUOTE(call DFUNC(hideMenu););
colorBackground[] = {0,0,0,0};
colorBackgroundDisabled[] = {0,0,0,0};
colorBackgroundActive[] = {1,1,1,0.2};

View File

@ -19,11 +19,12 @@
params ["_player", "_target", "_weapon"];
if (!GVAR(enableMagazinePassing)) exitWith {false};
if (_weapon isEqualTo "") exitWith {false};
if (((vehicle _target) != _target) && {(vehicle _target) != (vehicle _player)}) exitWith {false};
private _compatibleMags = getArray (configfile >> "CfgWeapons" >> _weapon >> "magazines");
{
private _compatibleMags = [_weapon] call CBA_fnc_compatibleMagazines;
(magazinesAmmoFull _player) findIf {
_x params ["_className", "", "_loaded"];
if ((_className in _compatibleMags) && {!_loaded} && {_target canAdd _className}) exitWith {true};
false
} foreach (magazinesAmmoFull _player);
(_className in _compatibleMags) && {!_loaded} && {_target canAdd _className}
} > -1

View File

@ -56,7 +56,7 @@ if (_cameraPosASL select 2 >= 0) then {
_pos set [2, (_pos select 2) min _dz];
};
TRACE_4("",_bb,_bbX,_relPos,_pos,_cameraPosASL);
TRACE_5("",_bb,_bbX,_relPos,_pos,_cameraPosASL);
_pos
///////////////////

View File

@ -59,5 +59,5 @@ if (_cameraPosASL select 2 >= 0) then {
_pos set [2, (_pos select 2) min _dz];
};
TRACE_4("",_bb,_bbX,_relPos,_pos,_cameraPosASL);
TRACE_5("",_bb,_bbX,_relPos,_pos,_cameraPosASL);
_pos

View File

@ -12,21 +12,24 @@
* None
*
* Example:
* [_player, _target, "arifle_MX_F"] call ace_interaction_fnc_magToPassazine
* [_player, _target, "arifle_MX_F"] call ace_interaction_fnc_passMagazine
*
* Public: No
*/
params ["_player", "_target", "_weapon"];
private _compatibleMags = getArray (configfile >> "CfgWeapons" >> _weapon >> "magazines");
private _filteredMags = magazinesAmmoFull _player select {(_x select 0) in _compatibleMags && {!(_x select 2)}};
private _compatibleMags = [_weapon] call CBA_fnc_compatibleMagazines;
private _filteredMags = magazinesAmmoFull _player select {
_x params ["_className", "", "_loaded"];
(_className in _compatibleMags) && {!_loaded} && {_target canAdd _className}
};
//select magazine with most ammo
private _magToPass = _filteredMags select 0;
private _magToPassIndex = 0;
{
_x params ["_className", "_ammoCount"];
if ((_ammoCount > (_magToPass select 1)) && (_target canAdd _className)) then {
if (_ammoCount > (_magToPass select 1)) then {
_magToPass = _x;
_magToPassIndex = _forEachIndex;
};

View File

@ -114,6 +114,7 @@ GVAR(vehicleLightColor) = [1,1,1,0];
switch (true) do {
case (_vehicle isKindOf "Tank");
case (_vehicle isKindOf "Wheeled_APC"): { {true} };
case (_vehicle isKindOf "ParachuteBase"): { {false} };
case (_vehicle isKindOf "Helicopter");
case (_vehicle isKindOf "Plane"): { {(driver _vehicle == _unit) || {gunner _vehicle == _unit}} };
default { {false} };

View File

@ -25,7 +25,7 @@ if ((_button == 0) && {GVAR(freedrawing) || _ctrlKey}) exitWith {
if (GVAR(freedrawing) && {_dir == 0}) then {
GVAR(freedrawing) = false;
GVAR(drawPosEnd) = _control ctrlMapScreenToWorld [_screenPosX, _screenPosY];
TRACE_1("Ending Line",GVAR(freedrawing),GVAR(drawPosEnd));
TRACE_2("Ending Line",GVAR(freedrawing),GVAR(drawPosEnd));
[{
if (allMapMarkers isEqualTo []) exitWith {};
private _markerName = allMapMarkers select (count allMapMarkers - 1);

View File

@ -18,7 +18,7 @@
*/
params ["_allMapMarkers", "_allMapMarkersProperties"];
TRACE_3("params",_allMapMarkers,_allMapMarkersProperties);
TRACE_2("params",_allMapMarkers,_allMapMarkersProperties);
{
private _index = _allMapMarkers find _x;

View File

@ -1 +1 @@
z\ace\addons\medical
z\ace\addons\medical

View File

@ -1,789 +0,0 @@
class ACE_Head {
displayName = CSTRING(Head);
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\bandage.paa);
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\bandage.paa);
};
class CheckPulse: fieldDressing {
displayName = CSTRING(Actions_CheckPulse);
condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(treatment));
EXCEPTIONS
icon = "";
};
class CheckBloodPressure: CheckPulse {
displayName = CSTRING(Actions_CheckBloodPressure);
condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(treatment));
EXCEPTIONS
};
class CheckResponse: CheckPulse {
displayName = CSTRING(Check_Response);
condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckResponse')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckResponse')] call DFUNC(treatment));
EXCEPTIONS
};
class Diagnose: CheckPulse {
displayName = CSTRING(Actions_Diagnose);
condition = QUOTE([ARR_4(_player, _target, 'head', 'Diagnose')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'head', 'Diagnose')] call DFUNC(treatment));
EXCEPTIONS
};
};
class ACE_Torso {
displayName = CSTRING(Torso);
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 1;
enableInside = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PlaceInBodyBag {
displayName = CSTRING(PlaceInBodyBag);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'BodyBag')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'BodyBag')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 1;
enableInside = 1;
};
class TriageCard {
displayName = CSTRING(Actions_TriageCard);
distance = 2.0;
condition = "true";
statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard));
EXCEPTIONS
showDisabled = 1;
enableInside = 1;
icon = QPATHTOF(UI\icons\triageCard.paa);
};
class Diagnose {
displayName = CSTRING(Actions_Diagnose);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Diagnose')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'Diagnose')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 0;
icon = "";
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 0;
enableInside = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\bandage.paa);
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\bandage.paa);
};
class SurgicalKit: fieldDressing {
displayName = CSTRING(Use_SurgicalKit);
condition = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\surgicalKit.paa);
};
class PersonalAidKit: fieldDressing {
displayName = CSTRING(Use_Aid_Kit);
condition = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'PersonalAidKit')] call DFUNC(treatment));
EXCEPTIONS
icon = "";
};
class CPR: fieldDressing {
displayName = CSTRING(Actions_CPR);
condition = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'body', 'CPR')] call DFUNC(treatment));
EXCEPTIONS
icon = "";
};
};
class ACE_ArmLeft {
displayName = ECSTRING(interaction,ArmLeft);
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation));
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\bandage.paa);
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\bandage.paa);
};
class Tourniquet: fieldDressing {
displayName = CSTRING(Actions_Tourniquet);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\tourniquet.paa);
};
class Morphine: fieldDressing {
displayName = CSTRING(Inject_Morphine);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Adenosine);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class BloodIV: fieldDressing {
displayName = CSTRING(Actions_Blood4_1000);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = CSTRING(Actions_Blood4_500);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class BloodIV_250: BloodIV {
displayName = CSTRING(Actions_Blood4_250);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV: BloodIV {
displayName = CSTRING(Actions_Plasma4_1000);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV_500: PlasmaIV {
displayName = CSTRING(Actions_Plasma4_500);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV_250: PlasmaIV {
displayName = CSTRING(Actions_Plasma4_250);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV: BloodIV {
displayName = CSTRING(Actions_Saline4_1000);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV_500: SalineIV {
displayName = CSTRING(Actions_Saline4_500);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV_250: SalineIV {
displayName = CSTRING(Actions_Saline4_250);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class CheckPulse: fieldDressing {
displayName = CSTRING(Actions_CheckPulse);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(treatment));
EXCEPTIONS
icon = "";
};
class CheckBloodPressure: CheckPulse {
displayName = CSTRING(Actions_CheckBloodPressure);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(treatment));
EXCEPTIONS
};
class RemoveTourniquet: Tourniquet {
displayName = CSTRING(Actions_RemoveTourniquet);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(treatment));
EXCEPTIONS
};
};
class ACE_ArmRight {
displayName = ECSTRING(interaction,ArmRight);
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation));
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(treatment));
EXCEPTIONS
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(treatment));
EXCEPTIONS
};
class Tourniquet: fieldDressing {
displayName = CSTRING(Actions_Tourniquet);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\tourniquet.paa);
};
class Morphine: fieldDressing {
displayName = CSTRING(Inject_Morphine);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Adenosine);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(treatment));
EXCEPTIONS
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(treatment));
EXCEPTIONS
};
class BloodIV: fieldDressing {
displayName = CSTRING(Actions_Blood4_1000);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = CSTRING(Actions_Blood4_500);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class BloodIV_250: BloodIV {
displayName = CSTRING(Actions_Blood4_250);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV: BloodIV {
displayName = CSTRING(Actions_Plasma4_1000);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV_500: PlasmaIV {
displayName = CSTRING(Actions_Plasma4_500);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV_250: PlasmaIV {
displayName = CSTRING(Actions_Plasma4_250);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV: BloodIV {
displayName = CSTRING(Actions_Saline4_1000);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV_500: SalineIV {
displayName = CSTRING(Actions_Saline4_500);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV_250: SalineIV {
displayName = CSTRING(Actions_Saline4_250);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class CheckPulse: fieldDressing {
displayName = CSTRING(Actions_CheckPulse);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(treatment));
EXCEPTIONS
icon = "";
};
class CheckBloodPressure: CheckPulse {
displayName = CSTRING(Actions_CheckBloodPressure);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(treatment));
EXCEPTIONS
};
class RemoveTourniquet: Tourniquet {
displayName = CSTRING(Actions_RemoveTourniquet);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(treatment));
EXCEPTIONS
};
};
class ACE_LegLeft {
displayName = ECSTRING(interaction,LegLeft);
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation));
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(treatment));
EXCEPTIONS
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(treatment));
EXCEPTIONS
};
class Tourniquet: fieldDressing {
displayName = CSTRING(Actions_Tourniquet);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\tourniquet.paa);
};
class Morphine: fieldDressing {
displayName = CSTRING(Inject_Morphine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Adenosine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(treatment));
EXCEPTIONS
};
class BloodIV: fieldDressing {
displayName = CSTRING(Actions_Blood4_1000);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = CSTRING(Actions_Blood4_500);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class BloodIV_250: BloodIV {
displayName = CSTRING(Actions_Blood4_250);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV: BloodIV {
displayName = CSTRING(Actions_Plasma4_1000);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV_500: PlasmaIV {
displayName = CSTRING(Actions_Plasma4_500);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV_250: PlasmaIV {
displayName = CSTRING(Actions_Plasma4_250);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV: BloodIV {
displayName = CSTRING(Actions_Saline4_1000);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV_500: SalineIV {
displayName = CSTRING(Actions_Saline4_500);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV_250: SalineIV {
displayName = CSTRING(Actions_Saline4_250);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class RemoveTourniquet: Tourniquet {
displayName = CSTRING(Actions_RemoveTourniquet);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(treatment));
EXCEPTIONS
};
};
class ACE_LegRight {
displayName = ECSTRING(interaction,LegRight);
runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation));
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment));
EXCEPTIONS
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(treatment));
EXCEPTIONS
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(treatment));
EXCEPTIONS
};
class Tourniquet: fieldDressing {
displayName = CSTRING(Actions_Tourniquet);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\tourniquet.paa);
};
class Morphine: fieldDressing {
displayName = CSTRING(Inject_Morphine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Adenosine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(treatment));
EXCEPTIONS
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(treatment));
EXCEPTIONS
};
class BloodIV: fieldDressing {
displayName = CSTRING(Actions_Blood4_1000);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(treatment));
EXCEPTIONS
icon = QPATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = CSTRING(Actions_Blood4_500);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class BloodIV_250: BloodIV {
displayName = CSTRING(Actions_Blood4_250);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV: BloodIV {
displayName = CSTRING(Actions_Plasma4_1000);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV_500: PlasmaIV {
displayName = CSTRING(Actions_Plasma4_500);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class PlasmaIV_250: PlasmaIV {
displayName = CSTRING(Actions_Plasma4_250);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV: BloodIV {
displayName = CSTRING(Actions_Saline4_1000);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV_500: SalineIV {
displayName = CSTRING(Actions_Saline4_500);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(treatment));
EXCEPTIONS
};
class SalineIV_250: SalineIV {
displayName = CSTRING(Actions_Saline4_250);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(treatment));
EXCEPTIONS
};
class RemoveTourniquet: Tourniquet {
displayName = CSTRING(Actions_RemoveTourniquet);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment));
EXCEPTIONS
};
};

View File

@ -1,520 +0,0 @@
class Medical {
displayName = CSTRING(Actions_Medical);
runOnHover = 1;
exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
condition = QUOTE(GVAR(menuTypeStyleSelf));
icon = QPATHTOF(UI\icons\medical_cross.paa);
class ACE_Head {
displayName = CSTRING(Head);
icon = QPATHTOF(UI\icons\medical_cross.paa);
exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";
runOnHover = 1;
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\bandage.paa);
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\bandage.paa);
};
class CheckPulse: fieldDressing {
displayName = CSTRING(Actions_CheckPulse);
condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(treatment));
icon = "";
};
class CheckBloodPressure: CheckPulse {
displayName = CSTRING(Actions_CheckBloodPressure);
condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(treatment));
};
};
class ACE_Torso {
displayName = CSTRING(Torso);
distance = 5.0;
condition = "true";
runOnHover = 1;
exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction));
showDisabled = 1;
icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class TriageCard {
displayName = CSTRING(Actions_TriageCard);
distance = 2.0;
condition = "true";
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard));
showDisabled = 1;
icon = QPATHTOF(UI\icons\triageCard.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\bandage.paa);
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\bandage.paa);
};
};
class ACE_ArmLeft {
displayName = ECSTRING(interaction,ArmLeft);
runOnHover = 1;
exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";
icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\bandage.paa);
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\bandage.paa);
};
class Tourniquet: fieldDressing {
displayName = CSTRING(Actions_Tourniquet);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\tourniquet.paa);
};
class Morphine: fieldDressing {
displayName = CSTRING(Inject_Morphine);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Adenosine);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class CheckPulse: fieldDressing {
displayName = CSTRING(Actions_CheckPulse);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(treatment));
icon = "";
};
class CheckBloodPressure: CheckPulse {
displayName = CSTRING(Actions_CheckBloodPressure);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(treatment));
};
class RemoveTourniquet: Tourniquet {
displayName = CSTRING(Actions_RemoveTourniquet);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(treatment));
};
};
class ACE_ArmRight {
displayName = ECSTRING(interaction,ArmRight);
runOnHover = 1;
exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";
icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(treatment));
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(treatment));
};
class Tourniquet: fieldDressing {
displayName = CSTRING(Actions_Tourniquet);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\tourniquet.paa);
};
class Morphine: fieldDressing {
displayName = CSTRING(Inject_Morphine);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Adenosine);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(treatment));
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(treatment));
};
class CheckPulse: fieldDressing {
displayName = CSTRING(Actions_CheckPulse);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(treatment));
icon = "";
};
class CheckBloodPressure: CheckPulse {
displayName = CSTRING(Actions_CheckBloodPressure);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(treatment));
};
class RemoveTourniquet: Tourniquet {
displayName = CSTRING(Actions_RemoveTourniquet);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(treatment));
};
};
class ACE_LegLeft {
displayName = ECSTRING(interaction,LegLeft);
runOnHover = 1;
exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";
icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(treatment));
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(treatment));
};
class Tourniquet: fieldDressing {
displayName = CSTRING(Actions_Tourniquet);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\tourniquet.paa);
};
class Morphine: fieldDressing {
displayName = CSTRING(Inject_Morphine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Adenosine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(treatment));
};
class RemoveTourniquet: Tourniquet {
displayName = CSTRING(Actions_RemoveTourniquet);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(treatment));
};
};
class ACE_LegRight {
displayName = ECSTRING(interaction,LegRight);
runOnHover = 1;
exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction));
condition = "true";
icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
distance = 2.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
displayName = CSTRING(Actions_FieldDressing);
distance = 5.0;
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
icon = QPATHTOF(UI\icons\bandage.paa);
};
class PackingBandage: fieldDressing {
displayName = CSTRING(Actions_PackingBandage);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(treatment));
};
class QuikClot: fieldDressing {
displayName = CSTRING(Actions_QuikClot);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(treatment));
};
class Tourniquet: fieldDressing {
displayName = CSTRING(Actions_Tourniquet);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\tourniquet.paa);
};
class Morphine: fieldDressing {
displayName = CSTRING(Inject_Morphine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Adenosine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(treatment));
icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(treatment));
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(treatment));
};
class RemoveTourniquet: Tourniquet {
displayName = CSTRING(Actions_RemoveTourniquet);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside", "isNotSwimming"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment));
};
};
};

File diff suppressed because it is too large Load Diff

View File

@ -1,329 +1,24 @@
class ACE_Settings {
class GVAR(level) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_level_DisplayName);
description = CSTRING(MedicalSettings_level_Description);
value = 1;
typeName = "SCALAR";
values[] = {"Disabled", "Basic", "Advanced"};
};
class GVAR(medicSetting) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_medicSetting_DisplayName);
description = CSTRING(MedicalSettings_medicSetting_Description);
value = 1;
typeName = "SCALAR";
values[] = {"Disabled", "Normal", "Advanced"};
};
class GVAR(increaseTrainingInLocations) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_increaseTrainingInLocations_DisplayName);
description = CSTRING(MedicalSettings_increaseTrainingInLocations_Description);
value = 0;
typeName = "BOOL";
};
/* @todo
class GVAR(enableFor) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName);
description = CSTRING(AdvancedMedicalSettings_enableFor_Description);
value = 0;
displayName = CSTRING(MedicalSettings_enableFor_DisplayName);
description = CSTRING(MedicalSettings_enableFor_Description);
value = 1;
typeName = "SCALAR";
values[] = {"Players only", "Players and AI"};
};
class GVAR(enableOverdosing) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_enableOverdosing_DisplayName);
description = CSTRING(MedicalSettings_enableOverdosing_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(bleedingCoefficient) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_bleedingCoefficient_DisplayName);
description = CSTRING(MedicalSettings_bleedingCoefficient_Description);
typeName = "SCALAR";
value = 1;
sliderSettings[] = {0, 25, 1, 1};
};
class GVAR(painCoefficient) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_painCoefficient_DisplayName);
description = CSTRING(MedicalSettings_painCoefficient_Description);
typeName = "SCALAR";
value = 1;
sliderSettings[] = {0, 25, 1, 1};
};
class GVAR(enableAdvancedWounds) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_DisplayName);
description = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_Description);
typeName = "BOOL";
value = 0;
};
*/
/* @todo
class GVAR(enableVehicleCrashes) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_DisplayName);
description = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_Description);
displayName = CSTRING(MedicalSettings_enableVehicleCrashes_DisplayName);
description = CSTRING(MedicalSettings_enableVehicleCrashes_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(enableScreams) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_enableScreams_DisplayName);
description = CSTRING(MedicalSettings_enableScreams_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(playerDamageThreshold) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_playerDamageThreshold_DisplayName);
description = CSTRING(MedicalSettings_playerDamageThreshold_Description);
typeName = "SCALAR";
value = 1;
sliderSettings[] = {0, 25, 1, 1};
};
class GVAR(AIDamageThreshold) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_AIDamageThreshold_DisplayName);
description = CSTRING(MedicalSettings_AIDamageThreshold_Description);
typeName = "SCALAR";
value = 1;
sliderSettings[] = {0, 25, 1, 1};
};
class GVAR(enableUnconsciousnessAI) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_enableUnconsciousnessAI_DisplayName);
description = CSTRING(MedicalSettings_enableUnconsciousnessAI_Description);
value = 1;
typeName = "SCALAR";
values[] = {"Disabled", "50/50", "Enabled"};
};
class GVAR(remoteControlledAI) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_remoteControlledAI_DisplayName);
description = CSTRING(MedicalSettings_remoteControlledAI_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(preventInstaDeath) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_preventInstaDeath_DisplayName);
description = CSTRING(MedicalSettings_preventInstaDeath_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(enableRevive) {
category = CSTRING(Category_Medical);
displayName = CSTRING(ReviveSettings_enableRevive_DisplayName);
description = CSTRING(ReviveSettings_enableRevive_Description);
typeName = "SCALAR";
value = 0;
values[] = {"Disabled", "Players only", "Players and AI"};
};
class GVAR(maxReviveTime) {
category = CSTRING(Category_Medical);
displayName = CSTRING(ReviveSettings_maxReviveTime_DisplayName);
description = CSTRING(ReviveSettings_maxReviveTime_Description);
typeName = "SCALAR";
value = 120;
sliderSettings[] = {0, 3600, 120, 0};
};
class GVAR(amountOfReviveLives) {
category = CSTRING(Category_Medical);
displayName = CSTRING(ReviveSettings_amountOfReviveLives_DisplayName);
description = CSTRING(ReviveSettings_amountOfReviveLives_Description);
typeName = "SCALAR";
value = -1;
sliderSettings[] = {-1, 25, -1, -1};
};
/*
class GVAR(allowDeadBodyMovement) {
category = CSTRING(Category_Medical);
typeName = "BOOL";
value = 0;
};
*/
class GVAR(allowLitterCreation) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_allowLitterCreation_DisplayName);
description = CSTRING(MedicalSettings_allowLitterCreation_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(litterSimulationDetail) {
category = CSTRING(Category_Medical);
displayName = CSTRING(litterSimulationDetail);
description = CSTRING(litterSimulationDetail_Desc);
typeName = "SCALAR";
value = 3;
values[] = {"Off", "Low", "Medium", "High", "Ultra"};
_values[] = { 0, 50, 100, 1000, 5000 };
};
class GVAR(litterCleanUpDelay) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_litterCleanUpDelay_DisplayName);
description = CSTRING(MedicalSettings_litterCleanUpDelay_Description);
typeName = "SCALAR";
value = 0;
sliderSettings[] = {-1, 3600, 0, 0};
};
class GVAR(medicSetting_basicEpi) {
category = CSTRING(Category_Medical);
displayName = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_DisplayName);
description = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_Description);
typeName = "SCALAR";
value = 1;
values[] = {"Anyone", "Medics only", "Doctors only"};
};
class GVAR(medicSetting_PAK) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_DisplayName);
description = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_Description);
typeName = "SCALAR";
value = 1;
values[] = {"Anyone", "Medics only", "Doctors only"};
};
class GVAR(medicSetting_SurgicalKit) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_Description);
typeName = "SCALAR";
value = 1;
values[] = {"Anyone", "Medics only", "Doctors only"};
};
class GVAR(consumeItem_PAK) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName);
description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description);
typeName = "SCALAR";
value = 0;
values[] = {"No", "Yes"};
};
class GVAR(consumeItem_SurgicalKit) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_Description);
typeName = "SCALAR";
value = 0;
values[] = {"No", "Yes"};
};
class GVAR(useLocation_basicEpi) {
category = CSTRING(Category_Medical);
displayName = CSTRING(BasicMedicalSettings_useLocation_basicEpi_DisplayName);
description = CSTRING(BasicMedicalSettings_useLocation_basicEpi_Description);
typeName = "SCALAR";
value = 0;
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
};
class GVAR(useLocation_PAK) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description);
typeName = "SCALAR";
value = 3;
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
};
class GVAR(useLocation_SurgicalKit) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description);
typeName = "SCALAR";
value = 2;
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
};
class GVAR(useCondition_PAK) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description);
typeName = "SCALAR";
value = 0;
values[] = {"Anytime", "Stable"};
};
class GVAR(useCondition_SurgicalKit) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description);
typeName = "SCALAR";
value = 0;
values[] = {"Anytime", "Stable"};
};
class GVAR(keepLocalSettingsSynced) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_keepLocalSettingsSynced_DisplayName);
description = CSTRING(MedicalSettings_keepLocalSettingsSynced_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(healHitPointAfterAdvBandage) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName);
description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(painIsOnlySuppressed) {
category = CSTRING(Category_Medical);
displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName);
description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(painEffectType) {
category = CSTRING(Category_Medical);
displayName = CSTRING(painEffectType);
typeName = "SCALAR";
value = 0;
values[] = {CSTRING(painEffect_Flash), CSTRING(painEffect_Chroma)};
isClientSettable = 1;
};
class GVAR(allowUnconsciousAnimationOnTreatment) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_allowUnconsciousAnimationOnTreatment_DisplayName);
description = CSTRING(MedicalSettings_allowUnconsciousAnimationOnTreatment_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(moveUnitsFromGroupOnUnconscious) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_moveUnitsFromGroupOnUnconscious_DisplayName);
description = CSTRING(MedicalSettings_moveUnitsFromGroupOnUnconscious_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(menuTypeStyle) {
category = CSTRING(Category_Medical);
displayName = CSTRING(menuTypeDisplay);
description = CSTRING(menuTypeDescription);
typeName = "SCALAR";
value = 0;
values[] = {CSTRING(useSelection), CSTRING(useRadial), ECSTRING(common,Disabled)};
isClientSettable = 1;
};
class GVAR(menuTypeStyleSelf) {
category = CSTRING(Category_Medical);
displayName = CSTRING(menuTypeStyleSelf_displayName);
description = CSTRING(menuTypeStyleSelf_description);
typeName = "BOOL";
value = 1;
isClientSettable = 1;
};
class GVAR(delayUnconCaptive) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_delayUnconCaptive_DisplayName);
description = CSTRING(MedicalSettings_delayUnconCaptive_Description);
typeName = "SCALAR";
value = 3;
sliderSettings[] = {0, 30, 3, 0};
};
class GVAR(convertItems) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_convertItems_DisplayName);
description = CSTRING(MedicalSettings_convertItems_Description);
typeName = "SCALAR";
value = 0;
values[] = {ECSTRING(common,Enabled), CSTRING(MedicalSettings_convertItems_remove), ECSTRING(common,Disabled)};
class GVAR(spontaneousWakeUpChance) {
movedToSQF = 1;
};
};

View File

@ -1,6 +0,0 @@
class CfgActions {
class None;
class Heal: None {
show = 0;
};
};

View File

@ -1,4 +1,3 @@
class Extended_PreStart_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preStart));

View File

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

View File

@ -1,956 +1,7 @@
#define MEDICAL_ACTION_DISTANCE 1.75
class CBA_Extended_EventHandlers;
class CfgVehicles {
class Logic;
class Module_F: Logic {
class ArgumentsBaseUnits {
};
};
class ACE_Module;
class ACE_moduleMedicalSettings: ACE_Module {
// Left as dumb logic so that old missions don't error about missing vehicle
class ACE_moduleMedicalSettings: Logic {
scope = 1;
displayName = CSTRING(MedicalSettings_Module_DisplayName);
icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QUOTE(DFUNC(moduleMedicalSettings));
functionPriority = 1;
isGlobal = 1;
isSingular = 1;
isTriggerActivated = 0;
author = ECSTRING(common,ACETeam);
class Arguments {
class level {
displayName = CSTRING(MedicalSettings_level_DisplayName);
description = CSTRING(MedicalSettings_level_Description);
typeName = "NUMBER";
class values {
class normal {
name = CSTRING(MedicalSettings_basic);
value = 1;
default = 1;
};
class full {
name = CSTRING(MedicalSettings_advanced);
value = 2;
};
};
};
class medicSetting {
displayName = CSTRING(MedicalSettings_medicSetting_DisplayName);
description = CSTRING(MedicalSettings_medicSetting_Description);
typeName = "NUMBER";
class values {
class disable {
name = CSTRING(MedicalSettings_medicSetting_disable);
value = 0;
};
class normal {
name = CSTRING(MedicalSettings_basic);
value = 1;
default = 1;
};
class full {
name = CSTRING(MedicalSettings_advanced);
value = 2;
};
};
};
class increaseTrainingInLocations {
displayName = CSTRING(MedicalSettings_increaseTrainingInLocations_DisplayName);
description = CSTRING(MedicalSettings_increaseTrainingInLocations_Description);
typeName = "BOOL";
defaultValue = 0;
};
class allowLitterCreation {
displayName = CSTRING(MedicalSettings_allowLitterCreation_DisplayName);
description = CSTRING(MedicalSettings_allowLitterCreation_Description);
typeName = "BOOL";
defaultValue = 1;
};
class litterCleanUpDelay {
displayName = CSTRING(MedicalSettings_litterCleanUpDelay_DisplayName);
description = CSTRING(MedicalSettings_litterCleanUpDelay_Description);
typeName = "NUMBER";
defaultValue = 1800;
};
class enableScreams {
displayName = CSTRING(MedicalSettings_enableScreams_DisplayName);
description = CSTRING(MedicalSettings_enableScreams_Description);
typeName = "BOOL";
defaultValue = 1;
};
class playerDamageThreshold {
displayName = CSTRING(MedicalSettings_playerDamageThreshold_DisplayName);
description = CSTRING(MedicalSettings_playerDamageThreshold_Description);
typeName = "NUMBER";
defaultValue = 1;
};
class AIDamageThreshold {
displayName = CSTRING(MedicalSettings_AIDamageThreshold_DisplayName);
description = CSTRING(MedicalSettings_AIDamageThreshold_Description);
typeName = "NUMBER";
defaultValue = 1;
};
class enableUnconsciousnessAI {
displayName = CSTRING(MedicalSettings_enableUnconsciousnessAI_DisplayName);
description = CSTRING(MedicalSettings_enableUnconsciousnessAI_Description);
typeName = "NUMBER";
class values {
class disable {
name = ECSTRING(common,Disabled);
value = 0;
};
class normal {
name = "50/50";
value = 1;
default = 1;
};
class full {
name = ECSTRING(common,Enabled);
value = 2;
};
};
};
class remoteControlledAI {
displayName = CSTRING(MedicalSettings_remoteControlledAI_DisplayName);
description = CSTRING(MedicalSettings_remoteControlledAI_Description);
typeName = "BOOL";
defaultValue = 1;
};
class preventInstaDeath {
displayName = CSTRING(MedicalSettings_preventInstaDeath_DisplayName);
description = CSTRING(MedicalSettings_preventInstaDeath_Description);
typeName = "BOOL";
defaultValue = 0;
};
class bleedingCoefficient {
displayName = CSTRING(MedicalSettings_bleedingCoefficient_DisplayName);
description = CSTRING(MedicalSettings_bleedingCoefficient_Description);
typeName = "NUMBER";
defaultValue = 1;
};
class painCoefficient {
displayName = CSTRING(MedicalSettings_painCoefficient_DisplayName);
description = CSTRING(MedicalSettings_painCoefficient_Description);
typeName = "NUMBER";
defaultValue = 1;
};
class keepLocalSettingsSynced {
displayName = CSTRING(MedicalSettings_keepLocalSettingsSynced_DisplayName);
description = CSTRING(MedicalSettings_keepLocalSettingsSynced_Description);
typeName = "BOOL";
defaultValue = 1;
};
};
class ModuleDescription {
description = CSTRING(MedicalSettings_Module_Description);
sync[] = {};
};
};
class ACE_moduleBasicMedicalSettings: ACE_Module {
scope = 1;
displayName = CSTRING(BasicMedicalSettings_Module_DisplayName);
icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QFUNC(moduleBasicMedicalSettings);
functionPriority = 10;
isGlobal = 2;
isSingular = 1;
isTriggerActivated = 0;
isDisposable = 0;
author = ECSTRING(common,ACETeam);
class Arguments {
class medicSetting_basicEpi {
displayName = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_DisplayName);
description = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_Description);
typeName = "NUMBER";
class values {
class anyone { name = CSTRING(AdvancedMedicalSettings_anyone); value = 0; };
class Medic { name = CSTRING(AdvancedMedicalSettings_Medic); value = 1; default = 1; };
class Special { name = CSTRING(AdvancedMedicalSettings_Special); value = 2; };
};
};
class useLocation_basicEpi {
displayName = CSTRING(BasicMedicalSettings_useLocation_basicEpi_DisplayName);
description = CSTRING(BasicMedicalSettings_useLocation_basicEpi_Description);
typeName = "NUMBER";
class values {
class anywhere { name = CSTRING(AdvancedMedicalSettings_anywhere); value = 0; default = 1; };
class vehicle { name = CSTRING(AdvancedMedicalSettings_vehicle); value = 1; };
class facility { name = CSTRING(AdvancedMedicalSettings_facility); value = 2; };
class vehicleAndFacility { name = CSTRING(AdvancedMedicalSettings_vehicleAndFacility); value = 3; };
class disabled { name = ECSTRING(common,Disabled); value = 4;};
};
};
};
class ModuleDescription {
description = CSTRING(BasicMedicalSettings_Module_Description);
sync[] = {};
};
};
class ACE_moduleAdvancedMedicalSettings: ACE_Module {
scope = 1;
displayName = CSTRING(AdvancedMedicalSettings_Module_DisplayName);
icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QFUNC(moduleAdvancedMedicalSettings);
functionPriority = 10;
isGlobal = 2;
isSingular = 1;
isTriggerActivated = 0;
isDisposable = 0;
author = ECSTRING(common,ACETeam);
class Arguments {
class enableFor {
displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName);
description = CSTRING(AdvancedMedicalSettings_enableFor_Description);
typeName = "NUMBER";
class values {
class playableUnits {
name = CSTRING(playeronly);
value = 0;
default = 1;
};
class playableUnitsAndAI {
name = CSTRING(playersandai);
value = 1;
};
};
};
class enableAdvancedWounds {
displayName = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_DisplayName);
description = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_Description);
typeName = "BOOL";
defaultValue = 0;
};
class enableVehicleCrashes {
displayName = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_DisplayName);
description = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_Description);
typeName = "BOOL";
defaultValue = 1;
};
class medicSetting_PAK {
displayName = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_DisplayName);
description = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_Description);
typeName = "NUMBER";
class values {
class anyone { name = CSTRING(AdvancedMedicalSettings_anyone); value = 0; };
class Medic { name = CSTRING(AdvancedMedicalSettings_Medic); value = 1; default = 1; };
class Special { name = CSTRING(AdvancedMedicalSettings_Special); value = 2; };
};
};
class consumeItem_PAK {
displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName);
description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description);
typeName = "NUMBER";
class values {
class keep { name = ECSTRING(common,No); value = 0; };
class remove { name = ECSTRING(common,Yes); value = 1; default = 1; };
};
};
class useCondition_PAK {
displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description);
typeName = "NUMBER";
class values {
class AnyTime { name = CSTRING(AnyTime); value = 0; };
class Stable { name = CSTRING(Stable); value = 1; default = 1; };
};
};
class useLocation_PAK {
displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description);
typeName = "NUMBER";
class values {
class anywhere { name = CSTRING(AdvancedMedicalSettings_anywhere); value = 0; };
class vehicle { name = CSTRING(AdvancedMedicalSettings_vehicle); value = 1; };
class facility { name = CSTRING(AdvancedMedicalSettings_facility); value = 2; };
class vehicleAndFacility { name = CSTRING(AdvancedMedicalSettings_vehicleAndFacility); value = 3; default = 1; };
class disabled { name = ECSTRING(common,Disabled); value = 4;};
};
};
class medicSetting_SurgicalKit: medicSetting_PAK {
displayName = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_Description);
};
class consumeItem_SurgicalKit: consumeItem_PAK {
displayName = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_Description);
};
class useLocation_SurgicalKit: useLocation_PAK {
displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description);
};
class useCondition_SurgicalKit: useCondition_PAK {
displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description);
class values {
class AnyTime { name = CSTRING(AnyTime); value = 0; default = 1; };
class Stable { name = CSTRING(Stable); value = 1; };
};
};
class healHitPointAfterAdvBandage {
displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName);
description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description);
typeName = "BOOL";
defaultValue = 0;
};
class painIsOnlySuppressed {
displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName);
description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description);
typeName = "BOOL";
defaultValue = 1;
};
};
class ModuleDescription {
description = CSTRING(AdvancedMedicalSettings_Module_Description);
sync[] = {};
};
};
class ACE_moduleReviveSettings: ACE_Module {
scope = 1;
displayName = CSTRING(ReviveSettings_Module_DisplayName);
icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QUOTE(DFUNC(moduleReviveSettings));
functionPriority = 1;
isGlobal = 1;
isSingular = 1;
isTriggerActivated = 0;
author = ECSTRING(common,ACETeam);
class Arguments {
class enableRevive {
displayName = CSTRING(ReviveSettings_enableRevive_DisplayName);
description = CSTRING(ReviveSettings_enableRevive_Description);
typeName = "NUMBER";
defaultValue = 0;
class values {
class disable { name = ECSTRING(common,Disabled); value = 0; default = 1;};
class playerOnly { name = CSTRING(playeronly); value = 1; };
class playerAndAI { name = CSTRING(playersandai); value = 2; };
};
};
class maxReviveTime {
displayName = CSTRING(ReviveSettings_maxReviveTime_DisplayName);
description = CSTRING(ReviveSettings_maxReviveTime_Description);
typeName = "NUMBER";
defaultValue = 120;
};
class amountOfReviveLives {
displayName = CSTRING(ReviveSettings_amountOfReviveLives_DisplayName);
description = CSTRING(ReviveSettings_amountOfReviveLives_Description);
typeName = "NUMBER";
defaultValue = -1;
};
};
class ModuleDescription {
description = CSTRING(ReviveSettings_Module_Description);
sync[] = {};
};
};
class ACE_moduleAssignMedicRoles: Module_F {
scope = 1;
displayName = CSTRING(AssignMedicRoles_Module_DisplayName);
icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QFUNC(moduleAssignMedicRoles);
functionPriority = 10;
isGlobal = 2;
isTriggerActivated = 0;
isDisposable = 0;
author = ECSTRING(common,ACETeam);
class Arguments {
class EnableList {
displayName = CSTRING(AssignMedicRoles_EnableList_DisplayName);
description = CSTRING(AssignMedicRoles_EnableList_Description);
defaultValue = "";
typeName = "STRING";
};
class role {
displayName = CSTRING(AssignMedicRoles_role_DisplayName);
description = CSTRING(AssignMedicRoles_role_Description);
typeName = "NUMBER";
class values {
class none {
name = CSTRING(AssignMedicRoles_role_none);
value = 0;
};
class medic {
name = CSTRING(AssignMedicRoles_role_medic);
value = 1;
default = 1;
};
class doctor {
name = CSTRING(AssignMedicRoles_role_doctor);
value = 2;
};
};
};
};
class ModuleDescription {
description = CSTRING(AssignMedicRoles_Module_Description);
sync[] = {};
};
};
class ACE_moduleAssignMedicVehicle: Module_F {
scope = 1;
displayName = CSTRING(AssignMedicVehicle_Module_DisplayName);
icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QFUNC(moduleAssignMedicalVehicle);
functionPriority = 10;
isGlobal = 2;
isTriggerActivated = 0;
isDisposable = 0;
author = ECSTRING(common,ACETeam);
class Arguments {
class EnableList {
displayName = CSTRING(AssignMedicVehicle_EnableList_DisplayName);
description = CSTRING(AssignMedicVehicle_EnableList_Description);
defaultValue = "";
typeName = "STRING";
};
class enabled {
displayName = CSTRING(AssignMedicVehicle_enabled_DisplayName);
description = CSTRING(AssignMedicVehicle_enabled_Description);
typeName = "NUMBER";
class values {
class none {
name = ECSTRING(common,No);
value = 0;
};
class medic {
name = ECSTRING(common,Yes);
value = 1;
default = 1;
};
};
};
};
class ModuleDescription {
description = CSTRING(AssignMedicVehicle_Module_Description);
sync[] = {};
};
};
class ACE_moduleAssignMedicalFacility: Module_F {
scope = 1;
displayName = CSTRING(AssignMedicalFacility_Module_DisplayName);
icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QFUNC(moduleAssignMedicalFacility);
functionPriority = 10;
isGlobal = 2;
isTriggerActivated = 0;
isDisposable = 0;
author = ECSTRING(common,ACETeam);
class Arguments {
class enabled {
displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName);
description = CSTRING(AssignMedicalFacility_enabled_Description);
typeName = "BOOL";
};
};
class ModuleDescription {
description = CSTRING(AssignMedicalFacility_Module_Description);
sync[] = {};
};
};
#define ARM_LEG_ARMOR_DEFAULT 1
#define ARM_LEG_ARMOR_BETTER 1
#define ARM_LEG_ARMOR_CSAT 1
#define ADD_ACE_HITPOINTS(ARM_ARMOR,LEG_ARMOR) \
class HitLeftArm { \
armor = ARM_ARMOR; \
material = -1; \
name = "hand_l"; \
passThrough = 1; \
radius = 0.08; \
explosionShielding = 1; \
visual = "injury_hands"; \
minimalHit = 0.01; \
}; \
class HitRightArm: HitLeftArm { \
name = "hand_r"; \
}; \
class HitLeftLeg { \
armor = LEG_ARMOR; \
material = -1; \
name = "leg_l"; \
passThrough = 1; \
radius = 0.1; \
explosionShielding = 1; \
visual = "injury_legs"; \
minimalHit = 0.01; \
}; \
class HitRightLeg: HitLeftLeg { \
name = "leg_r"; \
};
class Man;
class CAManBase: Man {
class HitPoints {
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_DEFAULT,ARM_LEG_ARMOR_DEFAULT)
};
class ACE_SelfActions {
#include "ACE_Medical_SelfActions.hpp"
};
class ACE_Actions {
// Include actions in body parts for treatment while in the open
#define EXCEPTIONS exceptions[] = {"isNotSwimming"};
#define ACTION_CONDITION condition = QUOTE(GVAR(menuTypeStyle) == 0);
#include "ACE_Medical_Actions.hpp"
// Create a consolidates medical menu for treatment while boarded
class ACE_MainActions {
class Medical {
displayName = CSTRING(Actions_Medical);
runOnHover = 1;
exceptions[] = {"isNotInside"};
condition = QUOTE((vehicle _target != _target && vehicle _target == vehicle _player) || GVAR(menuTypeStyle) == 1);
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
icon = QPATHTOF(UI\icons\medical_cross.paa);
#undef EXCEPTIONS
#undef ACTION_CONDITION
#define EXCEPTIONS exceptions[] = {"isNotInside", "isNotSwimming"};
#define ACTION_CONDITION condition = "true";
#include "ACE_Medical_Actions.hpp"
};
class GVAR(loadPatient) {
displayName = CSTRING(LoadPatient);
distance = 5;
condition = QUOTE(_target getVariable [ARR_2(QUOTE(QUOTE(ACE_isUnconscious)), false)] && {alive _target} && {vehicle _target == _target});
statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionLoadUnit));
showDisabled = 0;
icon = QPATHTOF(UI\icons\medical_cross.paa);
exceptions[] = {"isNotDragging", "isNotCarrying", "isNotSwimming"};
insertChildren = QUOTE(call DFUNC(addLoadPatientActions));
};
class GVAR(UnLoadPatient) {
displayName = CSTRING(UnloadPatient);
distance = 5;
condition = QUOTE(_target getVariable [ARR_2(QUOTE(QUOTE(ACE_isUnconscious)), false)] && {alive _target} && {vehicle _target != _target} && {vehicle _player == _player});
statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionUnloadUnit));
showDisabled = 0;
icon = QPATHTOF(UI\icons\medical_cross.paa);
exceptions[] = {"isNotDragging", "isNotCarrying", "isNotInside", "isNotSwimming"};
};
};
};
};
class SoldierWB: CAManBase {};
class SoldierEB: CAManBase {};
class SoldierGB: CAManBase {};
class B_Soldier_base_F: SoldierWB {};
class B_Soldier_04_f: B_Soldier_base_F {
class HitPoints {
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER)
};
};
class B_Soldier_05_f: B_Soldier_base_F {
class HitPoints {
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER)
};
};
class I_Soldier_base_F: SoldierGB {};
class I_Soldier_03_F: I_Soldier_base_F {
class HitPoints {
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER)
};
};
class I_Soldier_04_F: I_Soldier_base_F {
class HitPoints {
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_BETTER,ARM_LEG_ARMOR_BETTER)
};
};
class O_Soldier_base_F: SoldierEB {
class HitPoints {
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER)
};
};
class O_Soldier_diver_base_F: O_Soldier_base_F {
class HitPoints {
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER)
};
};
class O_Soldier_02_F: O_Soldier_base_F {
class HitPoints {
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER)
};
};
class O_officer_F: O_Soldier_base_F {
class HitPoints {
ADD_ACE_HITPOINTS(ARM_LEG_ARMOR_CSAT,ARM_LEG_ARMOR_BETTER)
};
};
//These VR guys already have limb hitpoints that we should be able to use
//Note: the selections are a little weird, eg: class leg_l {name = "leg_l";};
// class B_Soldier_VR_F: B_Soldier_base_F { {
// class HitPoints {
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
// };
// };
// class O_Soldier_VR_F: O_Soldier_base_F { {
// class HitPoints {
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
// };
// };
// class I_Soldier_VR_F: I_Soldier_base_F { {
// class HitPoints {
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
// };
// };
// class C_Soldier_VR_F: C_man_1 {
// class HitPoints {
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
// };
// };
// class O_Protagonist_VR_F: O_Soldier_base_F {
// class HitPoints {
//Has class hand_l, hand_r, leg_l, leg_r Hitpoints already
// };
// };
class MapBoard_altis_F;
class ACE_bodyBagObject: MapBoard_altis_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
scope = 1;
scopeCurator = 2;
side = -1;
model = QPATHTOEF(apl,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_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 = "ElTyranos";
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;
};
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;
};
};
};
};
class ACE_medicalSupplyCrate_advanced: ACE_medicalSupplyCrate {
displayName = CSTRING(medicalSupplyCrate_advanced);
class TransportItems {
MACRO_ADDITEM(ACE_fieldDressing,25);
MACRO_ADDITEM(ACE_packingBandage,25);
MACRO_ADDITEM(ACE_elasticBandage,25);
MACRO_ADDITEM(ACE_tourniquet,15);
MACRO_ADDITEM(ACE_morphine,15);
MACRO_ADDITEM(ACE_adenosine,15);
MACRO_ADDITEM(ACE_atropine,15);
MACRO_ADDITEM(ACE_epinephrine,15);
MACRO_ADDITEM(ACE_plasmaIV,7);
MACRO_ADDITEM(ACE_plasmaIV_500,7);
MACRO_ADDITEM(ACE_plasmaIV_250,7);
MACRO_ADDITEM(ACE_salineIV,7);
MACRO_ADDITEM(ACE_salineIV_500,7);
MACRO_ADDITEM(ACE_salineIV_250,7);
MACRO_ADDITEM(ACE_bloodIV,7);
MACRO_ADDITEM(ACE_bloodIV_500,7);
MACRO_ADDITEM(ACE_bloodIV_250,7);
MACRO_ADDITEM(ACE_quikClot,20);
MACRO_ADDITEM(ACE_personalAidKit,3);
MACRO_ADDITEM(ACE_surgicalKit,2);
MACRO_ADDITEM(ACE_bodyBag,5);
};
};
};

View File

@ -1,119 +1,3 @@
PREP(actionCheckBloodPressure);
PREP(actionCheckBloodPressureLocal);
PREP(actionCheckPulse);
PREP(actionCheckPulseLocal);
PREP(actionCheckResponse);
PREP(actionDiagnose);
PREP(actionPlaceInBodyBag);
PREP(actionRemoveTourniquet);
PREP(actionLoadUnit);
PREP(actionUnloadUnit);
PREP(addDamageToUnit);
PREP(addHeartRateAdjustment);
PREP(addLoadPatientActions);
PREP(addToLog);
PREP(addToTriageCard);
PREP(addUnconsciousCondition);
PREP(addUnloadPatientActions);
PREP(addVitalLoop);
PREP(adjustPainLevel);
PREP(bodyCleanupLoop);
PREP(canAccessMedicalEquipment);
PREP(canTreat);
PREP(canTreatCached);
PREP(determineIfFatal);
PREP(getBloodLoss);
PREP(getBloodPressure);
PREP(getBloodVolumeChange);
PREP(getCardiacOutput);
PREP(getTypeOfDamage);
PREP(getHeartRateChange);
PREP(getTriageStatus);
PREP(getUnconsciousCondition);
PREP(handleDamage);
PREP(handleDamage_advanced);
PREP(handleDamage_advancedSetDamage);
PREP(handleDamage_airway);
PREP(handleDamage_caching);
PREP(handleDamage_fractures);
PREP(handleDamage_internalInjuries);
PREP(handleDamage_wounds);
PREP(handleDamage_woundsOld);
PREP(handleInit);
PREP(handleKilled);
PREP(handleLocal);
PREP(handleRespawn);
PREP(handleUnitVitals);
PREP(handleBandageOpening);
PREP(hasItem);
PREP(hasItems);
PREP(hasMedicalEnabled);
PREP(hasTourniquetAppliedTo);
PREP(init);
PREP(isBeingCarried);
PREP(isBeingDragged);
PREP(isInMedicalFacility);
PREP(isInMedicalVehicle);
PREP(isMedic);
PREP(isMedicalVehicle);
PREP(isInStableCondition);
PREP(itemCheck);
PREP(medicationEffectLoop);
PREP(modifyMedicalAction);
PREP(onMedicationUsage);
PREP(parseConfigForInjuries);
PREP(playInjuredSound);
PREP(reviveStateLoop);
PREP(selectionNameToNumber);
PREP(serverRemoveBody);
PREP(setCardiacArrest);
PREP(setDead);
PREP(setHitPointDamage);
PREP(setStructuralDamage);
PREP(setUnconscious);
PREP(showBloodEffect);
PREP(translateSelections);
PREP(treatment);
PREP(treatment_failure);
PREP(treatment_success);
PREP(treatmentAdvanced_bandage);
PREP(treatmentAdvanced_bandageLocal);
PREP(treatmentAdvanced_CPR);
PREP(treatmentAdvanced_CPRLocal);
PREP(treatmentAdvanced_fullHeal);
PREP(treatmentAdvanced_fullHealLocal);
PREP(treatmentAdvanced_fullHealTreatmentTime);
PREP(treatmentAdvanced_medication);
PREP(treatmentAdvanced_medicationLocal);
PREP(treatmentAdvanced_surgicalKit_onProgress);
PREP(treatmentBasic_bloodbag);
PREP(treatmentBasic_bloodbagLocal);
PREP(treatmentBasic_epipen);
PREP(treatmentBasic_morphine);
PREP(treatmentBasic_morphineLocal);
PREP(treatmentIV);
PREP(treatmentIVLocal);
PREP(treatmentTourniquet);
PREP(treatmentTourniquetLocal);
PREP(useItem);
PREP(useItems);
PREP(vitalLoop);
PREP(displayPatientInformation);
PREP(displayTriageCard);
PREP(dropDownTriageCard);
PREP(moduleMedicalSettings);
PREP(moduleBasicMedicalSettings);
PREP(moduleAdvancedMedicalSettings);
PREP(moduleReviveSettings);
PREP(moduleAssignMedicRoles);
PREP(moduleAssignMedicalVehicle);
PREP(moduleAssignMedicalFacility);
PREP(copyDeadBody);
PREP(unconsciousPFH);
PREP(updateTourniquets);
// Networked litter
PREP(createLitter);
PREP(handleCreateLitter);
PREP(litterCleanupLoop);

View File

@ -1,313 +1,17 @@
// ACE Medical System Visual Loop
// #define DEBUG_MODE_FULL
#include "script_component.hpp"
GVAR(heartBeatSounds_Fast) = ["ACE_heartbeat_fast_1", "ACE_heartbeat_fast_2", "ACE_heartbeat_fast_3"];
GVAR(heartBeatSounds_Normal) = ["ACE_heartbeat_norm_1", "ACE_heartbeat_norm_2"];
GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"];
[QEGVAR(medical,setUnconscious), LINKFUNC(setUnconscious)] call CBA_fnc_addEventHandler;
["ace_interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call CBA_fnc_addEventHandler;
if (!hasInterface) exitWith {};
//Treatment EventHandlers:
[QGVAR(actionCheckBloodPressureLocal), DFUNC(actionCheckBloodPressureLocal)] call CBA_fnc_addEventHandler;
[QGVAR(actionCheckPulseLocal), DFUNC(actionCheckPulseLocal)] call CBA_fnc_addEventHandler;
[QGVAR(addVitalLoop), DFUNC(addVitalLoop)] call CBA_fnc_addEventHandler;
[QGVAR(addToMedicalLog), DFUNC(addToLog)] call CBA_fnc_addEventHandler;
[QGVAR(addToTriageCard), DFUNC(addToTriageCard)] call CBA_fnc_addEventHandler;
[QGVAR(setDead), DFUNC(setDead)] call CBA_fnc_addEventHandler;
[QGVAR(setHitPointDamage), DFUNC(setHitPointDamage)] call CBA_fnc_addEventHandler;
[QGVAR(setUnconscious), DFUNC(setUnconscious)] call CBA_fnc_addEventHandler;
[QGVAR(treatmentAdvanced_bandageLocal), DFUNC(treatmentAdvanced_bandageLocal)] call CBA_fnc_addEventHandler;
[QGVAR(treatmentAdvanced_CPRLocal), DFUNC(treatmentAdvanced_CPRLocal)] call CBA_fnc_addEventHandler;
[QGVAR(treatmentAdvanced_fullHealLocal), DFUNC(treatmentAdvanced_fullHealLocal)] call CBA_fnc_addEventHandler;
[QGVAR(treatmentAdvanced_medicationLocal), DFUNC(treatmentAdvanced_medicationLocal)] call CBA_fnc_addEventHandler;
[QGVAR(treatmentBasic_bloodbagLocal), DFUNC(treatmentBasic_bloodbagLocal)] call CBA_fnc_addEventHandler;
[QGVAR(treatmentBasic_morphineLocal), DFUNC(treatmentBasic_morphineLocal)] call CBA_fnc_addEventHandler;
[QGVAR(treatmentIVLocal), DFUNC(treatmentIVLocal)] call CBA_fnc_addEventHandler;
[QGVAR(treatmentTourniquetLocal), DFUNC(treatmentTourniquetLocal)] call CBA_fnc_addEventHandler;
[QGVAR(actionPlaceInBodyBag), FUNC(actionPlaceInBodyBag)] call CBA_fnc_addEventHandler;
[missionNamespace, "ACE_setCustomAimCoef", QUOTE(ADDON), {
private _pain = GET_PAIN_PERCEIVED(ACE_player);
//Handle Deleting Bodies and creating litter on Server:
if (isServer) then {
["ace_placedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;
[QGVAR(createLitterServer), FUNC(handleCreateLitter)] call CBA_fnc_addEventHandler;
addMissionEventHandler ["BuildingChanged", {
if (isNil QGVAR(allCreatedLitter)) exitWith {};
params ["_buildingOld", "_buildingNew", "_isRuin"];
TRACE_3("BuildingChanged",_buildingOld,_buildingNew,_isRuin);
private _radius = sizeOf typeOf _buildingOld / 2;
TRACE_1("",_radius);
{
_x params ["", "_objects"];
if (({(_x distance2d _buildingOld) < _radius && {getPos _x select 2 > 0.1}} count _objects) > 0) then {
GVAR(allCreatedLitter) deleteAt (GVAR(allCreatedLitter) find _x);
{ TRACE_1("deleting",_x); deleteVehicle _x } forEach _objects;
};
} forEach (+GVAR(allCreatedLitter));
}];
};
linearConversion [0, 1, _pain, 1, 5, true];
}] call EFUNC(common,arithmeticSetSource);
["ace_unconscious", {
params ["_unit", "_status"];
if (local _unit) then {
if (_status) then {
_unit setVariable ["tf_voiceVolume", 0, true];
_unit setVariable ["tf_unable_to_use_radio", true, true];
_unit setVariable ["acre_sys_core_isDisabled", true, true];
} else {
_unit setVariable ["tf_voiceVolume", 1, true];
_unit setVariable ["tf_unable_to_use_radio", false, true];
_unit setVariable ["acre_sys_core_isDisabled", false, true];
};
};
}] call CBA_fnc_addEventHandler;
// Initialize all effects
if (hasInterface) then {
_fnc_createEffect = {
params ["_type", "_layer", "_default"];
private _effect = ppEffectCreate [_type, _layer];
_effect ppEffectForceInNVG true;
_effect ppEffectAdjust _default;
_effect ppEffectCommit 0;
_effect
};
GVAR(effectUnconsciousCC) = [
"ColorCorrections",
4201,
[1,1,0, [0,0,0,1], [0,0,0,0], [1,1,1,1], [0.4,0.4,0,0,0,0.1,0.3]]
] call _fnc_createEffect;
GVAR(effectUnconsciousRB) = [
"RadialBlur",
4202,
[0.01,0.01,0,0]
] call _fnc_createEffect;
GVAR(effectBlindingCC) = [
"ColorCorrections",
4203,
[1,1,0, [1,1,1,0], [0,0,0,1], [0,0,0,0]]
] call _fnc_createEffect;
GVAR(effectBloodVolumeCC) = [
"ColorCorrections",
4204,
[1,1,0, [0,0,0,0], [1,1,1,1], [0.2,0.2,0.2,0]]
] call _fnc_createEffect;
GVAR(effectPainCA) = [
"chromAberration",
4205,
[0, 0, false]
] call _fnc_createEffect;
GVAR(effectPainCC) = [
"ColorCorrections",
4206,
[1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1.3,1.3,0,0,0,0.2,2]]
] call _fnc_createEffect;
// Initialize Other Variables
GVAR(effectBlind) = false;
GVAR(effectTimeBlood) = CBA_missionTime;
// MAIN EFFECTS LOOP
[{
// Zeus interface is open or player is dead; disable everything
if (!(isNull curatorCamera) or !(alive ACE_player)) exitWith {
GVAR(effectUnconsciousCC) ppEffectEnable false;
GVAR(effectUnconsciousRB) ppEffectEnable false;
GVAR(effectBlindingCC) ppEffectEnable false;
GVAR(effectBloodVolumeCC) ppEffectEnable false;
GVAR(effectPainCA) ppEffectEnable false;
GVAR(effectPainCC) ppEffectEnable false;
["unconscious", false] call EFUNC(common,setDisableUserInputStatus);
};
// Unconsciousness effect
if (ACE_player getVariable ["ACE_isUnconscious", false]) then {
GVAR(effectUnconsciousCC) ppEffectEnable true;
GVAR(effectUnconsciousRB) ppEffectEnable true;
GVAR(effectBlind) = true;
["unconscious", true] call EFUNC(common,setDisableUserInputStatus);
} else {
GVAR(effectUnconsciousCC) ppEffectEnable false;
GVAR(effectUnconsciousRB) ppEffectEnable false;
["unconscious", false] call EFUNC(common,setDisableUserInputStatus);
if (GVAR(effectBlind)) then {
_strength = 0.78 * (call EFUNC(common,ambientBrightness));
GVAR(effectBlindingCC) ppEffectEnable true;
GVAR(effectBlindingCC) ppEffectAdjust [1,1,_strength, [1,1,1,0], [0,0,0,1], [0,0,0,0]];
GVAR(effectBlindingCC) ppEffectCommit 0;
[{
GVAR(effectBlindingCC) ppEffectAdjust [1,1,0, [1,1,1,0], [0,0,0,1], [0,0,0,0]];
GVAR(effectBlindingCC) ppEffectCommit ((_this select 0) * 2);
}, [_strength], 0.01, 0] call CBA_fnc_waitAndExecute;
[{
GVAR(effectBlindingCC) ppEffectEnable false;
}, [], (_strength * 2) + 0.5, 0] call CBA_fnc_waitAndExecute;
GVAR(effectBlind) = false;
};
};
private _bleeding = [ACE_player] call FUNC(getBloodLoss);
// Bleeding Indicator
if (_bleeding > 0 and GVAR(effectTimeBlood) + 3.5 < CBA_missionTime) then {
GVAR(effectTimeBlood) = CBA_missionTime;
[600 * _bleeding] call FUNC(showBloodEffect);
};
// Blood Volume Effect
private _blood = if (GVAR(level) < 2) then {
(ACE_player getVariable [QGVAR(bloodVolume), 100]) / 100;
} else {
(((ACE_player getVariable [QGVAR(bloodVolume), 100]) - 60) max 0) / 40;
};
if (_blood > 0.99) then {
GVAR(effectBloodVolumeCC) ppEffectEnable false;
} else {
GVAR(effectBloodVolumeCC) ppEffectEnable true;
GVAR(effectBloodVolumeCC) ppEffectAdjust [1,1,0, [0,0,0,0], [1,1,1,_blood], [0.2,0.2,0.2,0]];
GVAR(effectBloodVolumeCC) ppEffectCommit 0;
};
}, 0.5, []] call CBA_fnc_addPerFrameHandler;
GVAR(lastHeartBeat) = CBA_missionTime;
GVAR(lastHeartBeatSound) = CBA_missionTime;
// HEARTRATE BASED EFFECTS
[{
private _heartRate = ACE_player getVariable [QGVAR(heartRate), 70];
private _pain = ACE_player getVariable [QGVAR(pain), 0];
if (GVAR(level) == 1) then {
_heartRate = 60 + 40 * _pain;
};
if (_heartRate <= 0) exitWith {};
private _interval = 60 / (_heartRate min 40);
if ((ACE_player getVariable ["ACE_isUnconscious", false])) then {
if (GVAR(painEffectType) == 1) then {
GVAR(effectPainCA) ppEffectEnable false;
} else {
GVAR(effectPainCC) ppEffectEnable false;
};
} else {
if ((CBA_missionTime > GVAR(lastHeartBeat) + _interval)) then {
GVAR(lastHeartBeat) = CBA_missionTime;
// Pain effect, no pain effect in zeus camera
if (isNull curatorCamera) then {
private _strength = ((_pain - (ACE_player getVariable [QGVAR(painSuppress), 0])) max 0) min 1;
_strength = _strength * (ACE_player getVariable [QGVAR(painCoefficient), GVAR(painCoefficient)]);
if (GVAR(painEffectType) == 1) then {
GVAR(effectPainCC) ppEffectEnable false;
if (_pain > (ACE_player getVariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then {
_strength = _strength * 0.15;
GVAR(effectPainCA) ppEffectEnable true;
GVAR(effectPainCA) ppEffectAdjust [_strength, _strength, false];
GVAR(effectPainCA) ppEffectCommit 0.01;
[{
GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false];
GVAR(effectPainCA) ppEffectCommit (_this select 1);
}, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call CBA_fnc_waitAndExecute;
[{
GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false];
GVAR(effectPainCA) ppEffectCommit 0.01;
}, [_strength * 0.7], _interval * 0.3, 0] call CBA_fnc_waitAndExecute;
[{
GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false];
GVAR(effectPainCA) ppEffectCommit (_this select 1);
}, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call CBA_fnc_waitAndExecute;
} else {
GVAR(effectPainCA) ppEffectEnable false;
};
} else {
GVAR(effectPainCA) ppEffectEnable false;
if (_pain > (ACE_player getVariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then {
_strength = _strength * 0.9;
GVAR(effectPainCC) ppEffectEnable true;
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - _strength,1 - _strength,0,0,0,0.2,2]];
GVAR(effectPainCC) ppEffectCommit 0.01;
[{
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]];
GVAR(effectPainCC) ppEffectCommit (_this select 1);
}, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call CBA_fnc_waitAndExecute;
[{
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]];
GVAR(effectPainCC) ppEffectCommit 0.01;
}, [_strength * 0.7], _interval * 0.3, 0] call CBA_fnc_waitAndExecute;
[{
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]];
GVAR(effectPainCC) ppEffectCommit (_this select 1);
}, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call CBA_fnc_waitAndExecute;
} else {
GVAR(effectPainCC) ppEffectEnable false;
};
};
};
};
};
if (GVAR(level) >= 2 && {_heartRate > 0}) then {
private _minTime = 60 / _heartRate;
if (CBA_missionTime - GVAR(lastHeartBeatSound) > _minTime) then {
GVAR(lastHeartBeatSound) = CBA_missionTime;
// Heart rate sound effect
if (_heartRate < 60) then {
private _sound = GVAR(heartBeatSounds_Normal) select (random((count GVAR(heartBeatSounds_Normal)) -1));
playSound _sound;
} else {
if (_heartRate > 150) then {
playSound "ACE_heartbeat_fast_2";
};
};
};
};
}, 0, []] call CBA_fnc_addPerFrameHandler;
};
["ace_settingsInitialized", {
[
{(((_this select 0) getVariable [QGVAR(bloodVolume), 100]) < 65)},
{(((_this select 0) getVariable [QGVAR(pain), 0]) - ((_this select 0) getVariable [QGVAR(painSuppress), 0])) > 0.9},
{(([_this select 0] call FUNC(getBloodLoss)) > 0.25)},
{((_this select 0) getVariable [QGVAR(inReviveState), false])},
{((_this select 0) getVariable [QGVAR(inCardiacArrest), false])},
{((_this select 0) getVariable ["ACE_isDead", false])}
] call FUNC(addUnconsciousCondition);
}] call CBA_fnc_addEventHandler;
// Prevent all types of interaction while unconscious
// @todo: probably remove this when CBA keybind hold key works properly
["isNotUnconscious", {!((_this select 0) getVariable ["ACE_isUnconscious", false])}] call EFUNC(common,addCanInteractWithCondition);
// Item Event Handler
["loadout", FUNC(itemCheck)] call CBA_fnc_addPlayerEventHandler;
if (hasInterface) then {
["ace_playerJIP", {
INFO("JIP Medical init for player.");
[player] call FUNC(init);
}] call CBA_fnc_addEventHandler;
};
if (["ACE_Arsenal"] call EFUNC(common,isModLoaded)) then {
[QEGVAR(arsenal,displayOpened), {
EGVAR(arsenal,virtualItems) set [17, (EGVAR(arsenal,virtualItems) select 17) - ["FirstAidKit", "Medikit"]];
}] call CBA_fnc_addEventHandler;
};
#ifdef DEBUG_MODE_FULL
call compile preprocessFileLineNumbers QPATHTOF(dev\watchVariable.sqf);
call compile preprocessFileLineNumbers QPATHTOF(dev\debugDisplay.sqf);
#endif

View File

@ -6,57 +6,12 @@ PREP_RECOMPILE_START;
#include "XEH_PREP.hpp"
PREP_RECOMPILE_END;
GVAR(injuredUnitCollection) = [];
private _versionEx = "ace_medical" callExtension "version";
DFUNC(handleDamage_assignWounds) = if (_versionEx == "") then {
DFUNC(handleDamage_woundsOld)
} else {
DFUNC(handleDamage_wounds)
};
call FUNC(parseConfigForInjuries);
GVAR(HITPOINTS) = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"];
GVAR(SELECTIONS) = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"];
//Hack for #3168 (units in static weapons do not take any damage):
//doing a manual pre-load with a small distance seems to fix the LOD problems with handle damage not returning full results
GVAR(fixedStatics) = [];
private _fixStatic = {
params ["_vehicle"];
private _vehType = typeOf _vehicle;
TRACE_2("",_vehicle,_vehType);
if (!(_vehType in GVAR(fixedStatics))) then {
GVAR(fixedStatics) pushBack _vehType;
TRACE_1("starting preload",_vehType);
[{
1 preloadObject (_this select 0);
}, {
TRACE_1("preload done",_this);
}, [_vehType]] call CBA_fnc_waitUntilAndExecute;
};
};
["StaticWeapon", "init", _fixStatic] call CBA_fnc_addClassEventHandler;
["Car", "init", _fixStatic] call CBA_fnc_addClassEventHandler;
["CAManBase", "Init", FUNC(handleInit)] call CBA_fnc_addClassEventHandler;
["CAManBase", "Respawn", FUNC(handleRespawn)] call CBA_fnc_addClassEventHandler;
["CAManBase", "Killed", FUNC(handleKilled)] call CBA_fnc_addClassEventHandler;
["CAManBase", "Local", FUNC(handleLocal)] call CBA_fnc_addClassEventHandler;
addMissionEventHandler ["Loaded",{
{
TRACE_1("starting preload (save load)",_x);
[{
1 preloadObject (_this select 0);
}, {
TRACE_1("preload done",_this);
}, [_x]] call CBA_fnc_waitUntilAndExecute;
} forEach GVAR(fixedStatics);
// Reload configs into extension (handle full game restart)
call FUNC(parseConfigForInjuries);
}];
#include "initSettings.sqf"
// Add warning for old functions that were technically public, Remove at 3.14.0
{
missionNamespace setVariable [_x, compileFinal format ['diag_log text "ACE Medical WARNING: Formerly public function [%1] has no effect in medical rewrite."; nil', _x]];
} forEach ["ace_medical_fnc_actionPlaceInBodyBag","ace_medical_fnc_actionRemoveTourniquet","ace_medical_fnc_addHeartRateAdjustment","ace_medical_fnc_addToLog","ace_medical_fnc_addToTriageCard
","ace_medical_fnc_addUnconsciousCondition","ace_medical_fnc_addVitalLoop","ace_medical_fnc_canAccessMedicalEquipment","ace_medical_fnc_canTreat","ace_medical_fnc_displayTriageCard","ace_medical_fnc_dropDownTriageCard","ace_medical_fnc_getTriageStatus","ace_medical_fnc_getUnconsciousCondition","ace_medical_fnc_hasItem","ace_medical_fnc_hasItems","ace_medical_fnc_hasTourniquetAppliedTo","ace_medical_fnc_isInMedicalFacility","ace_medical_fnc_isInMedicalVehicle","ace_medical_fnc_isMedic","ace_medical_fnc_isMedicalVehicle","ace_medical_fnc_itemCheck","ace_medical_fnc_selectionNameToNumber","ace_medical_fnc_setCardiacArrest","ace_medical_fnc_setDead","ace_medical_fnc_setHitPointDamage","ace_medical_fnc_showBloodEffect","ace_medical_fnc_treatment","ace_medical_fnc_treatmentAdvanced_bandage","ace_medical_fnc_treatmentAdvanced_CPR","ace_medical_fnc_treatmentAdvanced_CPRLocal","ace_medical_fnc_treatmentAdvanced_medication","ace_medical_fnc_treatmentAdvanced_medicationLocal","ace_medical_fnc_treatmentIV","ace_medical_fnc_treatmentIVLocal","ace_medical_fnc_unconsciousPFH","ace_medical_fnc_useItem","ace_medical_fnc_useItems"];
ADDON = true;

View File

@ -3,58 +3,17 @@
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {"ACE_medicalSupplyCrate", "ACE_medicalSupplyCrate_advanced", "ACE_fieldDressingItem", "ACE_packingBandageItem", "ACE_elasticBandageItem", "ACE_tourniquetItem", "ACE_morphineItem", "ACE_atropineItem", "ACE_epinephrineItem", "ACE_plasmaIVItem", "ACE_bloodIVItem", "ACE_salineIVItem", "ACE_quikclotItem", "ACE_personalAidKitItem", "ACE_surgicalKitItem", "ACE_bodyBagItem", "ACE_bodyBagObject"};
weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"};
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction", "ace_apl"};
requiredAddons[] = {"ace_medical_engine"};
author = ECSTRING(common,ACETeam);
authors[] = {"Glowbal", "KoffeinFlummi"};
authors[] = {"Glowbal", "KoffeinFlummi","Arcanum417"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgActions.hpp"
#include "CfgEventHandlers.hpp"
#include "CfgFactionClasses.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
#include "CfgSounds.hpp"
#include "CfgEden.hpp"
#include "ACE_Medical_Treatments.hpp"
#include "ACE_Settings.hpp"
#include "ui\CfgInGameUI.hpp"
#include "ui\RscTitles.hpp"
#include "ui\triagecard.hpp"
class ACE_newEvents {
medical_onUnconscious = "ace_unconscious";
medical_treatmentSuccess = "ace_treatmentSucceded";
medical_onSetDead = "ace_killed";
Medical_onEnteredCardiacArrest = "ace_cardiacArrestEntered";
Medical_onItemAddedToTriageCard = "ace_triageCardItemAdded";
medical_onLogEntryAdded = "ace_medicalLogEntryAdded";
Medical_onHeartRateAdjustmentAdded = "ace_heartRateAdjustmentAdded";
placedInBodyBag = "ace_placedInBodyBag";
actionPlaceInBodyBag = QGVAR(actionPlaceInBodyBag);
treatmentTourniquetLocal = QGVAR(treatmentTourniquetLocal);
treatmentIVLocal = QGVAR(treatmentIVLocal);
treatmentBasic_morphineLocal = QGVAR(treatmentBasic_morphineLocal);
treatmentBasic_bloodbagLocal = QGVAR(treatmentBasic_bloodbagLocal);
treatmentAdvanced_medicationLocal = QGVAR(treatmentAdvanced_medicationLocal);
treatmentAdvanced_fullHealLocal = QGVAR(treatmentAdvanced_fullHealLocal);
treatmentAdvanced_CPRLocal = QGVAR(treatmentAdvanced_CPRLocal);
treatmentAdvanced_bandageLocal = QGVAR(treatmentAdvanced_bandageLocal);
setUnconscious = QGVAR(setUnconscious);
setHitPointDamage = QGVAR(setHitPointDamage);
setDead = QGVAR(setDead);
addToTriageCard = QGVAR(addToTriageCard);
addToMedicalLog = QGVAR(addToMedicalLog);
actionCheckPulseLocal = QGVAR(actionCheckPulseLocal);
actionCheckBloodPressureLocal = QGVAR(actionCheckBloodPressureLocal);
addVitalLoop = QGVAR(addVitalLoop);
};
class ACE_Extensions {
extensions[] += {"ace_medical"};
};
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.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.

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