diff --git a/.editorconfig b/.editorconfig
index 0deca3d2ab..5822f71d1d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -10,4 +10,3 @@ trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
-
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 8eb5664cf5..b8aae89b77 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -24,6 +24,6 @@ ACE2, AGM and CSE had a lot of features implemented or planned. All of them are
Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite.
## Requesting a feature
-In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/414). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
+In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/3594). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
diff --git a/.travis.yml b/.travis.yml
index 1d2a49e2e6..3828300d7f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,6 +12,7 @@ before_script:
fi
script:
- python3 tools/sqf_validator.py
+- python3 tools/config_style_checker.py
- if [ -n "${GH_TOKEN}" ] && [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
python3 tools/deploy.py;
fi
diff --git a/AUTHORS.txt b/AUTHORS.txt
index c79206137c..42923c77e5 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -75,6 +75,7 @@ Gianmarco Varriale (TeamNuke)
GieNkoV
GitHawk
gpgpgpgp
+Grey-Soldierman
Grzegorz
Hamburger SV
Harakhti
@@ -111,6 +112,7 @@ Sniperwolf572
System98
SzwedzikPL
Tachi
+Tessa Elieff
Toaster
Tonic
Tourorist
@@ -119,4 +121,3 @@ voiper
VyMajoris(W-Cephei)
Winter
zGuba
-Grey-Soldierman
diff --git a/LICENSE b/LICENSE
index 037f1df2f3..f748d222de 100644
--- a/LICENSE
+++ b/LICENSE
@@ -26,6 +26,8 @@ Some folders of this project may contain a separate LICENSE file. Should
that be the case, everything in that folder and all subfolders is subject
to that license instead.
+ - ARMA PUBLIC LICENSE (\addons\apl)
+ - CreativeCommons Attributions 3.0 (\addons\fastroping\data\sounds)
============================================================================
Full GNU General Public License Text
diff --git a/README.md b/README.md
index 3de005ce29..37b5f2a626 100644
--- a/README.md
+++ b/README.md
@@ -3,12 +3,15 @@
-
-
+
+
+
+
+
diff --git a/addons/advanced_ballistics/ACE_Settings.hpp b/addons/advanced_ballistics/ACE_Settings.hpp
index d88a9b1148..9815cc8491 100644
--- a/addons/advanced_ballistics/ACE_Settings.hpp
+++ b/addons/advanced_ballistics/ACE_Settings.hpp
@@ -1,29 +1,34 @@
class ACE_Settings {
class GVAR(enabled) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(enabled_DisplayName);
description = CSTRING(enabled_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(simulateForSnipers) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(simulateForSnipers_DisplayName);
description = CSTRING(simulateForSnipers_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(simulateForGroupMembers) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(simulateForGroupMembers_DisplayName);
description = CSTRING(simulateForGroupMembers_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(simulateForEveryone) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(simulateForEveryone_DisplayName);
description = CSTRING(simulateForEveryone_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(disabledInFullAutoMode) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(disabledInFullAutoMod_DisplayName);
description = CSTRING(disabledInFullAutoMod_Description);
typeName = "BOOL";
@@ -31,6 +36,7 @@ class ACE_Settings {
};
/* // TODO: We currently do not have firedEHs on vehicles
class GVAR(vehicleGunnerEnabled) {
+ category = CSTRING(DisplayName);
displayName = "Enabled For Vehicle Gunners";
description = "Enables advanced ballistics for vehicle gunners";
typeName = "BOOL";
@@ -38,30 +44,35 @@ class ACE_Settings {
};
*/
class GVAR(ammoTemperatureEnabled) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
description = CSTRING(ammoTemperatureEnabled_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(barrelLengthInfluenceEnabled) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
description = CSTRING(barrelLengthInfluenceEnabled_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(bulletTraceEnabled) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(bulletTraceEnabled_DisplayName);
description = CSTRING(bulletTraceEnabled_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(simulationInterval) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(simulationInterval_DisplayName);
description = CSTRING(simulationInterval_Description);
typeName = "SCALAR";
value = 0.0;
};
class GVAR(simulationRadius) {
+ category = CSTRING(DisplayName);
displayName = CSTRING(simulationRadius_DisplayName);
description = CSTRING(simulationRadius_Description);
typeName = "SCALAR";
diff --git a/addons/advanced_ballistics/CfgVehicles.hpp b/addons/advanced_ballistics/CfgVehicles.hpp
index 27ccb2377b..804a6e9236 100644
--- a/addons/advanced_ballistics/CfgVehicles.hpp
+++ b/addons/advanced_ballistics/CfgVehicles.hpp
@@ -3,7 +3,7 @@ class CfgVehicles {
class GVAR(ModuleSettings): ACE_Module {
scope = 2;
displayName = CSTRING(DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Wind_ca.paa);
category = "ACE";
function = QUOTE(DFUNC(initModuleSettings));
functionPriority = 1;
diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf
index a541d30ce8..7263970fb1 100644
--- a/addons/advanced_ballistics/XEH_postInit.sqf
+++ b/addons/advanced_ballistics/XEH_postInit.sqf
@@ -5,7 +5,7 @@
GVAR(currentbulletID) = -1;
GVAR(Protractor) = false;
-GVAR(ProtractorStart) = ACE_time;
+GVAR(ProtractorStart) = CBA_missionTime;
GVAR(allBullets) = [];
GVAR(currentGrid) = 0;
@@ -21,7 +21,6 @@ if (!GVAR(extensionAvailable)) exitWith {
};
};
*/
-[] call FUNC(initializeTerrainExtension);
if (!hasInterface) exitWith {};
@@ -29,10 +28,28 @@ if (!hasInterface) exitWith {};
//If not enabled, dont't add PFEH
if (!GVAR(enabled)) exitWith {};
+ //Run the terrain processor
+ [] call FUNC(initializeTerrainExtension);
+
// Register fire event handler
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
+ //Add warnings for missing compat PBOs (only if AB is on)
+ {
+ _x params ["_modPBO", "_compatPBO"];
+ if ((isClass (configFile >> "CfgPatches" >> _modPBO)) && {!isClass (configFile >> "CfgPatches" >> _compatPBO)}) then {
+ ACE_LOGWARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO);
+ };
+ } forEach [
+ ["RH_acc","ace_compat_rh_acc"],
+ ["RH_de_cfg","ace_compat_rh_de"],
+ ["RH_m4_cfg","ace_compat_rh_m4"],
+ ["RH_PDW","ace_compat_rh_pdw"],
+ ["RKSL_PMII","ace_compat_rksl_pm_ii"],
+ ["iansky_opt","ace_compat_sma3_iansky"],
+ ["R3F_Armes","ace_compat_r3f"]
+ ];
}] call EFUNC(common,addEventHandler);
#ifdef DEBUG_MODE_FULL
diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp
index 3f974b18df..692a9391a0 100644
--- a/addons/advanced_ballistics/config.cpp
+++ b/addons/advanced_ballistics/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_ballistics", "ace_weather"};
- author[] = {"Ruthberg"};
- authorUrl = "https://github.com/ulteq";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Ruthberg"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf b/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf
index 5ad6cb111e..62663c843b 100644
--- a/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf
+++ b/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf
@@ -43,13 +43,13 @@ GVAR(Protractor) = true;
__ctrl1 ctrlSetScale 1;
__ctrl1 ctrlCommit 0;
- __ctrl1 ctrlSetText QUOTE(PATHTOF(UI\protractor.paa));
+ __ctrl1 ctrlSetText QPATHTOF(UI\protractor.paa);
__ctrl1 ctrlSetTextColor [1, 1, 1, 1];
__ctrl2 ctrlSetScale 1;
- __ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY + 0.001 - 0.0012 * (-58 max (asin((ACE_player weaponDirection currentWeapon ACE_player) select 2)) min 58), 0.2, 0.2 * 4/3];
+ __ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY - 0.001 - 0.1074 * (-0.86 max ((ACE_player weaponDirection currentWeapon ACE_player) select 2) min 0.86), 0.2, 0.2 * 4/3];
__ctrl2 ctrlCommit 0;
- __ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));
+ __ctrl2 ctrlSetText QPATHTOF(UI\protractor_marker.paa);
__ctrl2 ctrlSetTextColor [1, 1, 1, 1];
}, 0.1, []] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf b/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf
index fc8dc1b8a2..6bc6e234ae 100644
--- a/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf
+++ b/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf
@@ -12,7 +12,7 @@
*/
#include "script_component.hpp"
-private _aceTimeSecond = floor ACE_time;
+private _aceTimeSecond = floor CBA_missionTime;
{
private ["_bulletVelocity", "_bulletPosition", "_bulletSpeed"];
@@ -31,7 +31,7 @@ private _aceTimeSecond = floor ACE_time;
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.65],[0,0,0,0.2]],[1,0],0,0,"","",""];
};
- call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, _aceTimeSecond, ACE_time - _aceTimeSecond]);
+ call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, _aceTimeSecond, CBA_missionTime - _aceTimeSecond]);
};
nil
} count +GVAR(allBullets);
diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf
index 9646f065d4..7085224771 100644
--- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf
+++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf
@@ -88,7 +88,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then {
_bulletTraceVisible = false;
if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then {
- if (currentWeapon ACE_player in ["ACE_Vector", "Binocular", "Rangefinder", "Laserdesignator"]) then {
+ if (currentWeapon ACE_player == binocular ACE_player) then {
_bulletTraceVisible = true;
} else {
if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then {
@@ -110,8 +110,8 @@ if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) th
GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
-_aceTimeSecond = floor ACE_time;
-"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _projectile, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, _aceTimeSecond, ACE_time - _aceTimeSecond];
+_aceTimeSecond = floor CBA_missionTime;
+"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _projectile, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, _aceTimeSecond, CBA_missionTime - _aceTimeSecond];
GVAR(allBullets) pushBack [_projectile, _caliber, _bulletTraceVisible, GVAR(currentbulletID)];
diff --git a/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf b/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf
index 02468d0349..9fed872a6b 100644
--- a/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf
+++ b/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf
@@ -18,13 +18,13 @@ if (!GVAR(extensionAvailable)) exitWith {};
private ["_initStartTime", "_mapSize", "_mapGrids", "_gridCells", "_x", "_y", "_gridCenter", "_gridHeight", "_gridNumObjects", "_gridSurfaceIsWater"];
-_initStartTime = ACE_time;
+_initStartTime = CBA_missionTime;
_mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize");
if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith {
#ifdef DEBUG_MODE_FULL
systemChat "AdvancedBallistics: Terrain already initialized";
- #endIf
+ #endif
};
_mapGrids = ceil(_mapSize / 50) + 1;
@@ -38,7 +38,7 @@ GVAR(currentGrid) = 0;
if (GVAR(currentGrid) >= _gridCells) exitWith {
#ifdef DEBUG_MODE_FULL
- systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(ACE_time - _initStartTime)];
+ systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(CBA_missionTime - _initStartTime)];
#endif
[_idPFH] call CBA_fnc_removePerFrameHandler;
};
diff --git a/addons/ai/config.cpp b/addons/ai/config.cpp
index fdcb6afe9d..504c8b6e3c 100644
--- a/addons/ai/config.cpp
+++ b/addons/ai/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"KoffeinFlummi","commy2"};
- authorUrl = "https://github.com/KoffeinFlummi/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"KoffeinFlummi","commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/aircraft/CfgAmmo.hpp b/addons/aircraft/CfgAmmo.hpp
index 8aa5d3173e..2c3701b8e0 100644
--- a/addons/aircraft/CfgAmmo.hpp
+++ b/addons/aircraft/CfgAmmo.hpp
@@ -11,7 +11,7 @@ class CfgAmmo {
explosive = 1.8;
tracersEvery = 3;
tracerEndTime = 3.5;
-
+
CraterEffects = "ExploAmmoCrater";
explosionEffects = "ExploAmmoExplosion";
model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
diff --git a/addons/aircraft/Heli_Attack_01_base_F.hpp b/addons/aircraft/Heli_Attack_01_base_F.hpp
index 26a4605910..a6868033e6 100644
--- a/addons/aircraft/Heli_Attack_01_base_F.hpp
+++ b/addons/aircraft/Heli_Attack_01_base_F.hpp
@@ -860,12 +860,12 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
helmetDown[] = {0,-0.07,0};
};
};
-
+
class Turrets: Turrets {
class MainTurret: MainTurret {
weapons[] = {"ACE_gatling_20mm_Comanche","missiles_DAGR","missiles_ASRAAM", "ACE_AIR_SAFETY"};
magazines[] = {"ACE_500Rnd_20mm_shells_Comanche","4Rnd_AAA_missiles","24Rnd_PG_missiles"};
-
+
outGunnerMayFire = 1;
commanding = -1;
primaryGunner = 1;
@@ -888,13 +888,13 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
minTurn = -120;
maxTurn = 120;
initTurn = 0;
-
+
class OpticsIn
{
delete Narrow;
delete Medium;
delete Wide;
-
+
class ACE_WideUnstabilized {
opticsDisplayName = "W NS";
initAngleX = 0;
@@ -994,4 +994,4 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
weapon = "ACE_gatling_20mm_Comanche";
};
};
-};
\ No newline at end of file
+};
diff --git a/addons/aircraft/RscInGameUI.hpp b/addons/aircraft/RscInGameUI.hpp
index 620d895d9e..6411085b24 100644
--- a/addons/aircraft/RscInGameUI.hpp
+++ b/addons/aircraft/RscInGameUI.hpp
@@ -145,7 +145,7 @@ class RscInGameUI
sizeEx = "0.038*SafezoneH";
shadow = 0;
font = "EtelkaMonospacePro";
- text = PATHTOF(data\Helo_LaserON.paa);
+ text = QPATHTOF(data\Helo_LaserON.paa);
x = "20.45 * (0.01875 * SafezoneH)";
y = "14.1 * (0.025 * SafezoneH)";
w = "12.5 * (0.01875 * SafezoneH)";
@@ -335,7 +335,7 @@ class RscInGameUI
shadow = 0;
align = "right";
font = "EtelkaMonospacePro";
- text = PATHTOF(data\Helo_LaserON.paa);
+ text = QPATHTOF(data\Helo_LaserON.paa);
x = "20.45 * (0.01875 * SafezoneH)";
y = "14.1 * (0.025 * SafezoneH)";
w = "12.5 * (0.01875 * SafezoneH)";
diff --git a/addons/aircraft/config.cpp b/addons/aircraft/config.cpp
index 2ce2d0dc10..f989749383 100644
--- a/addons/aircraft/config.cpp
+++ b/addons/aircraft/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"};
- authorUrl = "https://github.com/KoffeinFlummi/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/aircraft/flightmodel_thunderbolt.hpp b/addons/aircraft/flightmodel_thunderbolt.hpp
index fa99f40424..2446e166bc 100644
--- a/addons/aircraft/flightmodel_thunderbolt.hpp
+++ b/addons/aircraft/flightmodel_thunderbolt.hpp
@@ -20,4 +20,3 @@ envelope[] = {0,0,0.75,2.4,3.6,3.8,3.7,3.2,2.2,1.7,0.9};
thrustCoef[] = {1,1.2,1.3,1.25,1.06,1.01,1,0.92,0.75,0.65,0.5,0.25,0};
acceleration = 265;
landingSpeed = 220;
-gunAimDown = 0.087266463;
diff --git a/addons/apl/config.cpp b/addons/apl/config.cpp
index 089f4bffe0..3a4743f1ac 100644
--- a/addons/apl/config.cpp
+++ b/addons/apl/config.cpp
@@ -6,8 +6,8 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_main"};
- author[] = {"Bohemia Interactive"};
- authorUrl = "http://ace3mod.com";
+ author = "Bohemia Interactive";
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/atragmx/CfgVehicles.hpp b/addons/atragmx/CfgVehicles.hpp
index cc4a7880fe..6e8a136a03 100644
--- a/addons/atragmx/CfgVehicles.hpp
+++ b/addons/atragmx/CfgVehicles.hpp
@@ -9,7 +9,7 @@ class CfgVehicles {
statement = QUOTE(call FUNC(create_dialog));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\ATRAG_Icon.paa);
+ icon = QPATHTOF(UI\ATRAG_Icon.paa);
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};
diff --git a/addons/atragmx/CfgWeapons.hpp b/addons/atragmx/CfgWeapons.hpp
index 42d1e56ae2..af5e1a9955 100644
--- a/addons/atragmx/CfgWeapons.hpp
+++ b/addons/atragmx/CfgWeapons.hpp
@@ -8,8 +8,8 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(Name);
descriptionShort = CSTRING(Description);
- model = PATHTOF(data\tdsrecon.p3d);
- picture = PATHTOF(UI\ATRAG_Icon.paa);
+ model = QPATHTOF(data\tdsrecon.p3d);
+ picture = QPATHTOF(UI\ATRAG_Icon.paa);
icon = "iconObject_circle";
mapSize = 0.034;
diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 97dad6e7b6..625cd68deb 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -230,7 +230,7 @@ class ATragMX_Display {
idc=-1;
x=0.55*safezoneW+safezoneX+0.315;
};
-
+
class TEXT_GUN_FRAME: ATragMX_RscText {
idc=1001;
style=64;
@@ -610,7 +610,7 @@ class ATragMX_Display {
x=0.550*safezoneW+safezoneX+0.27;
text="4";
action=QUOTE(call FUNC(toggle_solution_setup));
- };
+ };
class TEXT_CALCULATE: TEXT_SCOPE_UNIT {
idc=3000;
style=ST_RIGHT;
@@ -1059,7 +1059,7 @@ class ATragMX_Display {
text="Cancel";
action=QUOTE(false call FUNC(show_add_new_gun); true call FUNC(show_gun_list));
};
-
+
class TEXT_GUN_AMMO_DATA_BORE_HEIGHT: TEXT_BORE_HEIGHT {
idc=12000;
w=0.22;
@@ -1147,7 +1147,7 @@ class ATragMX_Display {
class TEXT_GUN_AMMO_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
idc=12011;
};
-
+
class TEXT_ATMO_ENV_DATA_DEFAULT: TEXT_LEAD {
idc=13000;
w=0.08;
@@ -1231,7 +1231,7 @@ class ATragMX_Display {
y=0.265*safezoneH+safezoneY+0.29;
text="Calc Method";
};
-
+
class TEXT_TARGET_DATA_LATITUDE: TEXT_BORE_HEIGHT {
idc=14000;
w=0.22;
@@ -1379,7 +1379,7 @@ class ATragMX_Display {
class TEXT_TARGET_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
idc=14011;
};
-
+
class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
idc=15000;
style=64;
@@ -1469,4 +1469,4 @@ class ATragMX_Display {
action=QUOTE(0 call FUNC(toggle_solution_setup));
};
};
-};
\ No newline at end of file
+};
diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf
index 4b61a28551..8d4907523b 100644
--- a/addons/atragmx/XEH_postInit.sqf
+++ b/addons/atragmx/XEH_postInit.sqf
@@ -7,41 +7,41 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
} else {
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
-
+
["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
-
+
["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
-
+
[".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
-
+
["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
-
+
[".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
[".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
[".338LM API526" , 895, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ],
-
+
[".300WM Mk248 Mod 0", 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"],
[".300WM Mk248 Mod 1", 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
[".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
-
+
["7.62x54mmR" , 800, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
-
+
["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"],
["7.62x51mm M118LR" , 780, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
["7.62x51mm Mk319" , 910, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
["7.62x51mm M993" , 930, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"],
["7.62x51mm Subsonic", 320, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
-
+
["6.5x39mm" , 800, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
["6.5x47mm Lapua" , 800, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
["6.5mm Creedmor" , 840, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"],
-
+
["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ],
["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ]];
-
+
[] call FUNC(clear_user_data);
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
};
diff --git a/addons/atragmx/config.cpp b/addons/atragmx/config.cpp
index 3abe32ba34..db1b85b761 100644
--- a/addons/atragmx/config.cpp
+++ b/addons/atragmx/config.cpp
@@ -6,7 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_ATragMX"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_common", "ACE_weather"};
- author = "Ruthberg";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Ruthberg"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
@@ -14,4 +16,4 @@ class CfgPatches {
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
-#include "RscTitles.hpp"
\ No newline at end of file
+#include "RscTitles.hpp"
diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf
index 869ce8d098..e71658f490 100644
--- a/addons/atragmx/functions/fnc_calculate_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_solution.sqf
@@ -42,31 +42,14 @@
* Public: No
*/
#include "script_component.hpp"
-
-private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire"];
-_scopeBaseAngle = _this select 0;
-_bulletMass = _this select 1;
-_boreHeight = _this select 2;
-_airFriction = _this select 3;
-_muzzleVelocity = _this select 4;
-_temperature = _this select 5;
-_barometricPressure = _this select 6;
-_relativeHumidity = _this select 7;
-_simSteps = _this select 8;
-_windSpeed1 = (_this select 9) select 0;
-_windSpeed2 = (_this select 9) select 1;
-_windDirection = _this select 10;
-_inclinationAngle = _this select 11;
-_targetSpeed = _this select 12;
-_targetRange = _this select 13;
-_bc = _this select 14;
-_dragModel = _this select 15;
-_atmosphereModel = _this select 16;
-_storeRangeCardData = _this select 17;
-_stabilityFactor = _this select 18;
-_twistDirection = _this select 19;
-_latitude = _this select 20;
-_directionOfFire = _this select 21;
+params [
+ "_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity",
+ "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed",
+ "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel",
+ "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude",
+ "_directionOfFire"
+];
+_windSpeed params ["_windSpeed1", "_windSpeed2"];
private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
_bulletPos = [0, 0, 0];
@@ -133,7 +116,7 @@ _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity];
while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_bulletSpeed = vectorMagnitude _bulletVelocity;
-
+
_speedTotal = _speedTotal + _bulletSpeed;
_stepsTotal = _stepsTotal + 1;
_speedAverage = (_speedTotal / _stepsTotal);
@@ -142,7 +125,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_trueSpeed = vectorMagnitude _trueVelocity;
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
- _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
+ private _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
} else {
([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation))
@@ -173,7 +156,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
};
_kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
_kineticEnergy = _kineticEnergy * 0.737562149;
-
+
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
// Coriolis
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
@@ -190,7 +173,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
_windage1 = _windage1 + _spinDrift;
_windage2 = _windage2 + _spinDrift;
};
-
+
GVAR(rangeCardData) set [_n, [_range, _elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy]];
_n = _n + 1;
};
diff --git a/addons/atragmx/functions/fnc_change_gun.sqf b/addons/atragmx/functions/fnc_change_gun.sqf
index 7c5abac47e..8fe89dc4fe 100644
--- a/addons/atragmx/functions/fnc_change_gun.sqf
+++ b/addons/atragmx/functions/fnc_change_gun.sqf
@@ -17,10 +17,7 @@
*/
#include "script_component.hpp"
-private ["_gunID", "_restoreMemory", "_updateDisplay"];
-_gunID = _this select 0;
-_restoreMemory = _this select 1;
-_updateDisplay = _this select 2;
+params ["_gunID", "_restoreMemory", "_updateDisplay"];
if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {};
diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf
index 07b93eb2da..a9912ccd34 100644
--- a/addons/atragmx/functions/fnc_create_dialog.sqf
+++ b/addons/atragmx/functions/fnc_create_dialog.sqf
@@ -39,7 +39,7 @@ if (GVAR(showRangeCard)) then {
};
GVAR(showRangeCardSetup) call FUNC(show_range_card_setup);
GVAR(showSolutionSetup) call FUNC(show_solution_setup);
-GVAR(showTargetData) call FUNC(show_target_data);
+GVAR(showTargetData) call FUNC(show_target_data);
GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
@@ -56,7 +56,7 @@ GVAR(DialogPFH) = [{
if (!GVAR(active)) exitWith {
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
- __ctrlBackground ctrlSetText format [QUOTE(PATHTOF(UI\ATRAG_%1.paa)), ["N", "D"] select (call EFUNC(common,ambientBrightness))];
+ __ctrlBackground ctrlSetText format [QPATHTOF(UI\ATRAG_%1.paa), ["N", "D"] select (call EFUNC(common,ambientBrightness))];
}, 60, []] call CBA_fnc_addPerFrameHandler;
true
diff --git a/addons/atragmx/functions/fnc_show_gun_list.sqf b/addons/atragmx/functions/fnc_show_gun_list.sqf
index 5e1cdfa453..a3c45a977d 100644
--- a/addons/atragmx/functions/fnc_show_gun_list.sqf
+++ b/addons/atragmx/functions/fnc_show_gun_list.sqf
@@ -21,6 +21,5 @@ GVAR(showGunList) = _this;
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 6002);
-
lbSetCurSel [6000, GVAR(currentGun)];
};
diff --git a/addons/atragmx/functions/fnc_show_range_card_setup.sqf b/addons/atragmx/functions/fnc_show_range_card_setup.sqf
index 3d44c14b53..b3457793b9 100644
--- a/addons/atragmx/functions/fnc_show_range_card_setup.sqf
+++ b/addons/atragmx/functions/fnc_show_range_card_setup.sqf
@@ -21,7 +21,7 @@ GVAR(showRangeCardSetup) = _this;
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 10006);
-
+
ctrlSetText [10003, Str(Round(GVAR(rangeCardStartRange)))];
ctrlSetText [10004, Str(Round(GVAR(rangeCardEndRange)))];
ctrlSetText [10005, Str(Round(GVAR(rangeCardIncrement)))];
diff --git a/addons/atragmx/functions/fnc_show_target_range_assist.sqf b/addons/atragmx/functions/fnc_show_target_range_assist.sqf
index 4f46932a0b..ec61edd1f4 100644
--- a/addons/atragmx/functions/fnc_show_target_range_assist.sqf
+++ b/addons/atragmx/functions/fnc_show_target_range_assist.sqf
@@ -21,7 +21,6 @@ GVAR(showTargetRangeAssist) = _this;
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 7018);
-
ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
ctrlSetText [7013, Str(parseNumber(ctrlText 340))];
@@ -30,4 +29,4 @@ if (_this) then {
} else {
ctrlSetText [7016, "Meters"];
};
-};
\ No newline at end of file
+};
diff --git a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
index 2e66b5ea7b..b3cf1b4393 100644
--- a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
+++ b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
@@ -21,7 +21,7 @@ GVAR(showTargetSpeedAssist) = _this;
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 8012);
-
+
ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
if (GVAR(currentUnit) == 1) then {
@@ -29,7 +29,7 @@ if (_this) then {
} else {
ctrlSetText [8008, "Meters"];
};
-
+
if (GVAR(currentUnit) == 2) then {
ctrlSetText [8011, "m/s"];
} else {
diff --git a/addons/atragmx/functions/fnc_sord.sqf b/addons/atragmx/functions/fnc_sord.sqf
index a433153c0e..b342072018 100644
--- a/addons/atragmx/functions/fnc_sord.sqf
+++ b/addons/atragmx/functions/fnc_sord.sqf
@@ -17,10 +17,7 @@
*/
#include "script_component.hpp"
-private ["_slopeDistance", "_azimuth", "_inclination"];
-_slopeDistance = _this select 0;
-_azimuth = _this select 1;
-_inclination = _this select 2;
+params ["_slopeDistance", "_azimuth", "_inclination"];
GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];
GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)];
diff --git a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf
index 0f42f9637c..692de386af 100644
--- a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf
+++ b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf
@@ -21,26 +21,26 @@ if !(ctrlVisible 9000) then {
true call FUNC(show_target_speed_assist_timer);
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 9002);
-
+
[{
private ["_args", "_startTime"];
_args = _this select 0;
_startTime = _args select 0;
-
+
if (!(GVAR(speedAssistTimer))) exitWith {
GVAR(speedAssistTimer) = true;
-
- ctrlSetText [8006, Str(Round((ACE_time - _startTime) * 10) / 10)];
+
+ ctrlSetText [8006, Str(Round((CBA_missionTime - _startTime) * 10) / 10)];
[] call FUNC(calculate_target_speed_assist);
false call FUNC(show_target_speed_assist_timer);
true call FUNC(show_target_speed_assist);
-
+
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
-
- ctrlSetText [9001, Str(Round((ACE_time - _startTime) * 10) / 10)];
-
- }, 0.1, [ACE_time]] call CBA_fnc_addPerFrameHandler;
+
+ ctrlSetText [9001, Str(Round((CBA_missionTime - _startTime) * 10) / 10)];
+
+ }, 0.1, [CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
};
diff --git a/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf b/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf
index ce761c2216..87e973c7c0 100644
--- a/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf
+++ b/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf
@@ -18,7 +18,7 @@
if (ctrlVisible 13000) then {
false call FUNC(show_atmo_env_data);
true call FUNC(show_main_page);
-
+
if (_this == 1) then {
call FUNC(calculate_target_solution);
};
diff --git a/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf b/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf
index 0fd4b913b8..f3eb814da7 100644
--- a/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf
+++ b/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf
@@ -18,7 +18,7 @@
if (ctrlVisible 12000) then {
false call FUNC(show_gun_ammo_data);
true call FUNC(show_main_page);
-
+
if (_this == 1) then {
call FUNC(update_zero_range);
call FUNC(calculate_target_solution);
diff --git a/addons/atragmx/functions/fnc_toggle_gun_list.sqf b/addons/atragmx/functions/fnc_toggle_gun_list.sqf
index 1cc1f9338b..e5dbf54bd5 100644
--- a/addons/atragmx/functions/fnc_toggle_gun_list.sqf
+++ b/addons/atragmx/functions/fnc_toggle_gun_list.sqf
@@ -18,7 +18,7 @@
if (ctrlVisible 6000) then {
false call FUNC(show_gun_list);
true call FUNC(show_main_page);
-
+
if (_this) then {
[lbCurSel 6000, true, true] call FUNC(change_gun);
};
diff --git a/addons/atragmx/functions/fnc_toggle_range_card.sqf b/addons/atragmx/functions/fnc_toggle_range_card.sqf
index 059bc7e40b..7d8b7a0239 100644
--- a/addons/atragmx/functions/fnc_toggle_range_card.sqf
+++ b/addons/atragmx/functions/fnc_toggle_range_card.sqf
@@ -21,9 +21,9 @@ if (ctrlVisible 5006) then {
} else {
false call FUNC(show_main_page);
true call FUNC(show_range_card);
-
+
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 5001);
-
+
[] call FUNC(calculate_range_card);
[] call FUNC(update_range_card);
};
diff --git a/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf b/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf
index 738a154d17..96c31459b2 100644
--- a/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf
+++ b/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf
@@ -18,12 +18,12 @@
if (ctrlVisible 10000) then {
false call FUNC(show_range_card_setup);
true call FUNC(show_range_card);
-
+
if (_this == 1) then {
GVAR(rangeCardStartRange) = 0 max Round(parseNumber(ctrlText 10003)) min 3000;
GVAR(rangeCardEndRange) = 0 max Round(parseNumber(ctrlText 10004)) min 3000;
GVAR(rangeCardIncrement) = 1 max Round(parseNumber(ctrlText 10005)) min 3000;
-
+
[] call FUNC(calculate_range_card);
[] call FUNC(update_range_card);
};
diff --git a/addons/atragmx/functions/fnc_toggle_solution_setup.sqf b/addons/atragmx/functions/fnc_toggle_solution_setup.sqf
index 0e9f702383..5372b205d0 100644
--- a/addons/atragmx/functions/fnc_toggle_solution_setup.sqf
+++ b/addons/atragmx/functions/fnc_toggle_solution_setup.sqf
@@ -18,7 +18,7 @@
if (ctrlVisible 15000) then {
false call FUNC(show_solution_setup);
true call FUNC(show_main_page);
-
+
if (_this == 1) then {
GVAR(currentScopeClickUnit) = GVAR(currentScopeClickUnitTemp);
GVAR(currentScopeClickNumber) = GVAR(currentScopeClickNumberTemp);
@@ -30,9 +30,9 @@ if (ctrlVisible 15000) then {
} else {
true call FUNC(show_solution_setup);
false call FUNC(show_main_page);
-
+
GVAR(currentScopeClickUnitTemp) = GVAR(currentScopeClickUnit);
GVAR(currentScopeClickNumberTemp) = GVAR(currentScopeClickNumber);
-
+
[] call FUNC(update_solution_setup);
};
diff --git a/addons/atragmx/functions/fnc_toggle_target_data.sqf b/addons/atragmx/functions/fnc_toggle_target_data.sqf
index 90fefbf37e..2cfa2f8df5 100644
--- a/addons/atragmx/functions/fnc_toggle_target_data.sqf
+++ b/addons/atragmx/functions/fnc_toggle_target_data.sqf
@@ -18,7 +18,7 @@
if (ctrlVisible 14000) then {
false call FUNC(show_target_data);
true call FUNC(show_main_page);
-
+
if (_this == 1) then {
call FUNC(calculate_target_solution);
};
diff --git a/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf b/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf
index d13ef4fb2e..83d2daa95f 100644
--- a/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf
+++ b/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf
@@ -18,7 +18,7 @@
if (ctrlVisible 7000) then {
false call FUNC(show_target_range_assist);
true call FUNC(show_main_page);
-
+
if (_this == 1) then {
ctrlSetText [320, Str(parseNumber(ctrlText 7012))];
ctrlSetText [140040, Str(parseNumber(ctrlText 7012))];
diff --git a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf
index 5b88a6cfce..4d1680d195 100644
--- a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf
+++ b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf
@@ -18,7 +18,7 @@
if (ctrlVisible 8000) then {
false call FUNC(show_target_speed_assist);
true call FUNC(show_main_page);
-
+
if (_this == 1) then {
[] call FUNC(calculate_target_speed_assist);
private ["_targetSpeed"];
diff --git a/addons/atragmx/functions/fnc_update_range_card.sqf b/addons/atragmx/functions/fnc_update_range_card.sqf
index d084754959..e8c910ca74 100644
--- a/addons/atragmx/functions/fnc_update_range_card.sqf
+++ b/addons/atragmx/functions/fnc_update_range_card.sqf
@@ -43,7 +43,7 @@ _speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound);
_TOF = _x select 4;
_velocity = _x select 5;
_kineticEnergy = _x select 6;
-
+
switch (GVAR(currentScopeUnit)) do {
case 0: {
_elevation = _elevation / 3.38;
@@ -63,25 +63,25 @@ _speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound);
};
_clickNumber = GVAR(workingMemory) select 8;
_clickInterval = _clickSize / _clickNumber;
-
+
_elevation = Round(_elevation / _clickInterval);
_windage1 = Round(_windage1 / _clickInterval);
_windage2 = Round(_windage2 / _clickInterval);
};
};
-
+
_elevationOutput = Str(Round(_elevation * 100) / 100);
_windageOutput = Str(Round(_windage1 * 100) / 100);
-
+
_rangeOutput = Str(_range);
if (_velocity < _speedOfSound) then {
_rangeOutput = _rangeOutput + "*";
};
-
+
if (GVAR(currentUnit) == 1) then {
_velocity = _velocity * 3.2808399;
};
-
+
switch (GVAR(rangeCardCurrentColumn)) do {
case 0: {
if (GVAR(showWind2)) then {
@@ -100,6 +100,6 @@ _speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound);
_lastColumnOutput = Str(Round(_TOF * 100) / 100);
}
};
-
+
lnbAddRow [5007, [_rangeOutput, _elevationOutput, _windageOutput, _lastColumnOutput]];
} forEach GVAR(rangeCardData);
diff --git a/addons/atragmx/functions/fnc_update_result.sqf b/addons/atragmx/functions/fnc_update_result.sqf
index bb708efaab..2b6ca29e23 100644
--- a/addons/atragmx/functions/fnc_update_result.sqf
+++ b/addons/atragmx/functions/fnc_update_result.sqf
@@ -33,24 +33,24 @@ switch (GVAR(currentScopeUnit)) do {
case 0: {
_elevationAbs = _elevationAbs / 3.38;
_windageAbs = _windageAbs / 3.38;
-
+
_wind2 = _wind2 / 3.38;
-
+
_elevationRel = _elevationRel / 3.38;
_windageRel = _windageRel / 3.38;
-
+
_elevationCur = _elevationCur / 3.38;
_windageCur = _windageCur / 3.38;
};
case 2: {
_elevationAbs = _elevationAbs * 1.047;
_windageAbs = _windageAbs * 1.047;
-
+
_wind2 = _wind2 / 1.047;
-
+
_elevationRel = _elevationRel * 1.047;
_windageRel = _windageRel * 1.047;
-
+
_elevationCur = _elevationCur * 1.047;
_windageCur = _windageCur * 1.047;
};
@@ -62,15 +62,15 @@ switch (GVAR(currentScopeUnit)) do {
};
_clickNumber = GVAR(workingMemory) select 8;
_clickInterval = _clickSize / _clickNumber;
-
+
_elevationAbs = Round(_elevationAbs / _clickInterval);
_windageAbs = Round(_windageAbs / _clickInterval);
-
+
_wind2 = Round(_wind2 / _clickInterval);
-
+
_elevationRel = Round(_elevationRel / _clickInterval);
_windageRel = Round(_windageRel / _clickInterval);
-
+
_elevationCur = Round(_elevationCur / _clickInterval);
_windageCur = Round(_windageCur / _clickInterval);
};
@@ -166,4 +166,4 @@ if (GVAR(showWind2)) then {
} else {
ctrlSetText [420, "0.0"];
};
-};
\ No newline at end of file
+};
diff --git a/addons/atragmx/initKeybinds.sqf b/addons/atragmx/initKeybinds.sqf
index 51d2338292..94704e8132 100644
--- a/addons/atragmx/initKeybinds.sqf
+++ b/addons/atragmx/initKeybinds.sqf
@@ -33,4 +33,4 @@ _closeCode = {
closeDialog 0;
};
};
-[(localize LSTRING(Name)), QUOTE(PATHTOF(UI\ATRAG_Icon.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew);
+[(localize LSTRING(Name)), QPATHTOF(UI\ATRAG_Icon.paa), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew);
diff --git a/addons/atragmx/stringtable.xml b/addons/atragmx/stringtable.xml
index a8e23ffbda..3790fb1f2d 100644
--- a/addons/atragmx/stringtable.xml
+++ b/addons/atragmx/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/attach/CfgMagazines.hpp b/addons/attach/CfgMagazines.hpp
index f85cac82b4..7ba8cebbc5 100644
--- a/addons/attach/CfgMagazines.hpp
+++ b/addons/attach/CfgMagazines.hpp
@@ -3,17 +3,17 @@ class CfgMagazines {
class CA_Magazine;
class B_IR_Grenade: CA_Magazine {
ACE_Attachable = "B_IRStrobe";
- model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d));
+ model = QPATHTOF(data\ace_IRStrobe.p3d);
};
class O_IR_Grenade: B_IR_Grenade {
ACE_Attachable = "O_IRStrobe";
- model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d));
+ model = QPATHTOF(data\ace_IRStrobe.p3d);
};
class I_IR_Grenade: B_IR_Grenade {
ACE_Attachable = "I_IRStrobe";
- model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d));
+ model = QPATHTOF(data\ace_IRStrobe.p3d);
};
class SmokeShell;
diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp
index e462c0cefa..1e0c0f3e71 100644
--- a/addons/attach/CfgVehicles.hpp
+++ b/addons/attach/CfgVehicles.hpp
@@ -9,7 +9,7 @@
exceptions[] = {}; \
showDisabled = 0; \
priority = 0; \
- icon = PATHTOF(UI\attach_ca.paa); \
+ icon = QPATHTOF(UI\attach_ca.paa); \
distance = 4.5; \
}; \
class GVAR(DetachVehicle) { \
@@ -19,7 +19,7 @@
exceptions[] = {}; \
showDisabled = 0; \
priority = 0.1; \
- icon = PATHTOF(UI\detach_ca.paa); \
+ icon = QPATHTOF(UI\detach_ca.paa); \
distance = 4.5; \
}; \
}; \
@@ -60,7 +60,7 @@ class CfgVehicles {
exceptions[] = {"isNotDragging"};
showDisabled = 0;
priority = 5;
- icon = PATHTOF(UI\attach_ca.paa);
+ icon = QPATHTOF(UI\attach_ca.paa);
};
class GVAR(Detach) {
displayName = CSTRING(Detach);
@@ -69,7 +69,7 @@ class CfgVehicles {
exceptions[] = {"isNotDragging"};
showDisabled = 0;
priority = 5;
- icon = PATHTOF(UI\detach_ca.paa);
+ icon = QPATHTOF(UI\detach_ca.paa);
};
};
};
diff --git a/addons/attach/CfgWeapons.hpp b/addons/attach/CfgWeapons.hpp
index dfea64678d..cc50b3be5e 100644
--- a/addons/attach/CfgWeapons.hpp
+++ b/addons/attach/CfgWeapons.hpp
@@ -8,8 +8,8 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(IrStrobe_Name);
descriptionShort = CSTRING(IrStrobe_Description);
- model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d));
- picture = PATHTOF(UI\irstrobe_item.paa);
+ model = QPATHTOF(data\ace_IRStrobe.p3d);
+ picture = QPATHTOF(UI\irstrobe_item.paa);
class ItemInfo: InventoryItem_Base_F {
mass = 1;
diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp
index 0ecc37788a..4c06adc3eb 100644
--- a/addons/attach/config.cpp
+++ b/addons/attach/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_IR_Strobe_Item"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"KoffeinFlummi","eRazeri","esteldunedain"};
- authorUrl = "https://github.com/KoffeinFlummi/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"KoffeinFlummi","eRazeri","esteldunedain"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf
index 305c3c0960..cf80e74b1c 100644
--- a/addons/attach/functions/fnc_attach.sqf
+++ b/addons/attach/functions/fnc_attach.sqf
@@ -40,7 +40,7 @@ _onAtachText = format [localize LSTRING(Item_Attached), _onAtachText];
if (_unit == _attachToVehicle) then { //Self Attachment
_attachedItem = _itemVehClass createVehicle [0,0,0];
- _attachedItem attachTo [_unit, [-0.05, 0, 0.12], "rightshoulder"];
+ _attachedItem attachTo [_unit, [0.05, -0.09, 0.1], "leftshoulder"];
if (!_silentScripted) then {
_unit removeItem _itemClassname; // Remove item
[_onAtachText] call EFUNC(common,displayTextStructured);
@@ -51,7 +51,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment
[_unit, "forceWalk", "ACE_Attach", true] call EFUNC(common,statusEffect_set);
- [{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame);
+ [{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call CBA_fnc_execNextFrame;
_unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)];
_actionID = _unit addAction [format ["%1 ", localize LSTRING(CancelAction)], {GVAR(placeAction) = PLACE_CANCEL}];
diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf
index 05c625b374..0cf5c78082 100644
--- a/addons/attach/functions/fnc_detach.sqf
+++ b/addons/attach/functions/fnc_detach.sqf
@@ -57,7 +57,7 @@ if (toLower _itemName in ["b_ir_grenade", "o_ir_grenade", "i_ir_grenade"]) then
detach _attachedObject;
_attachedObject setPos ((getPos _unit) vectorAdd [0, 0, -1000]);
// Delete attached item after 0.5 seconds
- [{deleteVehicle (_this select 0)}, [_attachedObject], 2] call EFUNC(common,waitAndExecute);
+ [{deleteVehicle (_this select 0)}, [_attachedObject], 2] call CBA_fnc_waitAndExecute;
} else {
// Delete attached item
deleteVehicle _attachedObject;
diff --git a/addons/attach/functions/fnc_getChildrenAttachActions.sqf b/addons/attach/functions/fnc_getChildrenAttachActions.sqf
index aeb75c00d4..9f811197e0 100644
--- a/addons/attach/functions/fnc_getChildrenAttachActions.sqf
+++ b/addons/attach/functions/fnc_getChildrenAttachActions.sqf
@@ -31,7 +31,7 @@ _actions = [];
if (getText (_item >> "ACE_Attachable") != "") then {
_displayName = getText(_item >> "displayName");
_picture = getText(_item >> "picture");
- _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
+ _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call CBA_fnc_execNextFrame}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
_actions pushBack [_action, [], _target];
};
};
@@ -44,7 +44,7 @@ _actions = [];
if (getText (_item >> "ACE_Attachable") != "") then {
_displayName = getText(_item >> "displayName");
_picture = getText(_item >> "picture");
- _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
+ _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call CBA_fnc_execNextFrame}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction);
_actions pushBack [_action, [], _target];
};
};
diff --git a/addons/attach/functions/fnc_handleGetIn.sqf b/addons/attach/functions/fnc_handleGetIn.sqf
index d9f469eee2..dd173c4125 100644
--- a/addons/attach/functions/fnc_handleGetIn.sqf
+++ b/addons/attach/functions/fnc_handleGetIn.sqf
@@ -36,7 +36,7 @@ if (!isNull _xObject) then {
params ["_detachedLight"];
TRACE_1("delayed delete",_detachedLight);
deleteVehicle _detachedLight;
- }, [_xObject], 2] call EFUNC(common,waitAndExecute);
+ }, [_xObject], 2] call CBA_fnc_waitAndExecute;
(_attachedList select 0) set [0, objNull];
};
diff --git a/addons/attach/functions/fnc_handleKilled.sqf b/addons/attach/functions/fnc_handleKilled.sqf
index 06c5473c88..69ab31122b 100644
--- a/addons/attach/functions/fnc_handleKilled.sqf
+++ b/addons/attach/functions/fnc_handleKilled.sqf
@@ -32,7 +32,7 @@ if ((count _attachedList) == 0) exitWith {};
//If it's a vehicle, also delete the attached
if (!(_deadUnit isKindOf "CAManBase")) then {
_xObject setPos ((getPos _deadUnit) vectorAdd [0, 0, -1000]);
- [{deleteVehicle (_this select 0)}, [_xObject], 2] call EFUNC(common,waitAndExecute);
+ [{deleteVehicle (_this select 0)}, [_xObject], 2] call CBA_fnc_waitAndExecute;
};
} forEach _attachedList;
diff --git a/addons/backpacks/config.cpp b/addons/backpacks/config.cpp
index ddc7639921..278e3ac452 100644
--- a/addons/backpacks/config.cpp
+++ b/addons/backpacks/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"bux","commy2"};
- authorUrl = "https://github.com/commy2/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"bux","commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/ballistics/CfgMagazines.hpp b/addons/ballistics/CfgMagazines.hpp
index e368381333..931a6c2309 100644
--- a/addons/ballistics/CfgMagazines.hpp
+++ b/addons/ballistics/CfgMagazines.hpp
@@ -83,7 +83,7 @@ class CfgMagazines {
descriptionShort = CSTRING(30Rnd_556x45_mag_Tracer_DimDescription);
picture = "\A3\weapons_f\data\ui\m_20stanag_red_ca.paa";
};
-
+
class 20Rnd_762x51_Mag: CA_Magazine {
initSpeed = 833;
};
@@ -121,7 +121,7 @@ class CfgMagazines {
descriptionShort = CSTRING(20Rnd_762x51_mag_SDDescription);
initSpeed = 325;
};
-
+
class ACE_10Rnd_762x51_M118LR_Mag: 10Rnd_762x51_Mag {
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M118LR";
@@ -247,7 +247,7 @@ class CfgMagazines {
descriptionShort = CSTRING(10Rnd_338_API526_Mag_Description);
initSpeed = 880;
};
-
+
class 5Rnd_127x108_Mag;
class ACE_5Rnd_127x99_Mag: 5Rnd_127x108_Mag {
author = ECSTRING(common,ACETeam);
@@ -273,8 +273,8 @@ class CfgMagazines {
descriptionShort = CSTRING(5Rnd_127x99_AMAX_Mag_Description);
initSpeed = 860;
};
-
-
+
+
class 30Rnd_9x21_Mag: CA_Magazine {
initSpeed = 450;
};
@@ -286,27 +286,27 @@ class CfgMagazines {
descriptionShort = CSTRING(30Rnd_9x19_mag_Description);
initSpeed = 370;
};
-
+
class 11Rnd_45ACP_Mag: CA_Magazine {
initSpeed = 250;
};
-
+
class 6Rnd_45ACP_Cylinder : 11Rnd_45ACP_Mag {
initSpeed = 250;
};
-
+
class 30Rnd_45ACP_Mag_SMG_01: 30Rnd_9x21_Mag {
initSpeed = 250;
};
-
+
class 9Rnd_45ACP_Mag: 30Rnd_45ACP_Mag_SMG_01 {
initSpeed = 250;
};
-
+
class 30Rnd_45ACP_Mag_SMG_01_Tracer_Green: 30Rnd_45ACP_Mag_SMG_01 {
initSpeed = 250;
};
-
+
class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag {
initSpeed = 450;
};
@@ -318,7 +318,7 @@ class CfgMagazines {
descriptionShort = CSTRING(16Rnd_9x19_mag_Description);
initSpeed = 370;
};
-
+
class 10Rnd_762x54_Mag: 10Rnd_762x51_Mag {
initSpeed = 800;
};
@@ -331,15 +331,15 @@ class CfgMagazines {
initSpeed = 800;
tracersEvery = 1;
};
-
+
class 150Rnd_762x54_Box: 150Rnd_762x51_Box {
initSpeed = 750;
};
-
+
class 150Rnd_93x64_Mag: CA_Magazine {
initSpeed = 860;
};
-
+
class 10Rnd_127x54_Mag: CA_Magazine {
initSpeed = 300;
};
diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp
index 3f6835bbba..1cd705f63f 100644
--- a/addons/ballistics/CfgWeapons.hpp
+++ b/addons/ballistics/CfgWeapons.hpp
@@ -15,81 +15,81 @@ class CfgWeapons {
class Rifle_Base_F;
class Rifle_Long_Base_F;
class MuzzleSlot;
-
+
/* Long Rifles */
-
+
class GM6_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
-
+
class LRR_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00020; // radians. Equal to 0.70 MOA.
};
};
-
+
class DMR_06_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
-
+
class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
-
+
class DMR_05_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
-
+
class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
-
+
class DMR_04_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
-
+
class DMR_03_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00032; // radians. Equal to 1.10 MOA.
};
-
+
class FullAuto: Mode_FullAuto {
dispersion = 0.00032; // radians. Equal to 1.10 MOA.
};
};
-
+
class DMR_02_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.000262; // radians. Equal to 0.90 MOA.
};
};
-
+
class DMR_01_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.0004; // radians. Equal to 1.375 MOA.
};
};
-
+
class EBR_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
-
+
class FullAuto: Mode_FullAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
};
};
-
+
/* MX */
-
+
class arifle_MX_Base_F: Rifle_Base_F {};
class arifle_MX_SW_F: arifle_MX_Base_F {
magazines[] = {
@@ -158,7 +158,7 @@ class CfgWeapons {
class Burst: Mode_Burst {
dispersion = 0.0008727; // radians. Equal to 3 MOA.
};
-
+
class FullAuto: Mode_FullAuto {
dispersion = 0.0008727; // radians. Equal to 3 MOA.
};
@@ -285,6 +285,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
+ "30Rnd_556x45_Stanag_red",
+ "30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@@ -305,6 +307,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
+ "30Rnd_556x45_Stanag_red",
+ "30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@@ -320,6 +324,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
+ "30Rnd_556x45_Stanag_red",
+ "30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@@ -335,6 +341,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
+ "30Rnd_556x45_Stanag_red",
+ "30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@@ -356,6 +364,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
+ "30Rnd_556x45_Stanag_red",
+ "30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@@ -371,6 +381,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
+ "30Rnd_556x45_Stanag_red",
+ "30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@@ -386,6 +398,8 @@ class CfgWeapons {
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
+ "30Rnd_556x45_Stanag_red",
+ "30Rnd_556x45_Stanag_green",
"ACE_30Rnd_556x45_Stanag_M995_AP_mag",
"ACE_30Rnd_556x45_Stanag_Mk262_mag",
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
@@ -511,7 +525,7 @@ class CfgWeapons {
ACE_barrelTwist=234.95;
ACE_barrelLength=609.6;
};
-
+
class HMG_127 : LMG_RCWS {
};
class HMG_01: HMG_127 {
@@ -521,7 +535,7 @@ class CfgWeapons {
ACE_barrelTwist=304.8;
ACE_barrelLength=1143.0;
};
-
+
/* Silencers */
class ItemCore;
diff --git a/addons/ballistics/config.cpp b/addons/ballistics/config.cpp
index 768ba63e02..59c29f0a7f 100644
--- a/addons/ballistics/config.cpp
+++ b/addons/ballistics/config.cpp
@@ -6,7 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"commy2","Ruthberg"};
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2","Ruthberg"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/ballistics/scripts/initTargetWall.sqf b/addons/ballistics/scripts/initTargetWall.sqf
index d9b16eec10..0ce3950de1 100644
--- a/addons/ballistics/scripts/initTargetWall.sqf
+++ b/addons/ballistics/scripts/initTargetWall.sqf
@@ -11,5 +11,5 @@ if (local _wall) then {
_paper attachTo [_wall, [0,-0.02,0.6]];
_paper setDir getDir _wall;
- _paper setObjectTextureGlobal [0, QUOTE(PATHTOF(textures\target_ca.paa))];
+ _paper setObjectTextureGlobal [0, QPATHTOF(textures\target_ca.paa)];
};
diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml
index 39bbac1726..b51303fa6d 100644
--- a/addons/ballistics/stringtable.xml
+++ b/addons/ballistics/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp
index a8215c0cdc..2afa1cfea4 100644
--- a/addons/captives/CfgVehicles.hpp
+++ b/addons/captives/CfgVehicles.hpp
@@ -10,7 +10,7 @@ class CfgVehicles {
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs));
exceptions[] = {};
- icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
+ icon = QPATHTOF(UI\handcuff_ca.paa);
};
class ACE_MainActions {
@@ -21,7 +21,7 @@ class CfgVehicles {
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs));
exceptions[] = {};
- icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
+ icon = QPATHTOF(UI\handcuff_ca.paa);
};
class ACE_EscortCaptive {
displayName = CSTRING(EscortCaptive);
@@ -30,7 +30,7 @@ class CfgVehicles {
statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive));
exceptions[] = {};
showDisabled = 0;
- icon = QUOTE(PATHTOF(UI\captive_ca.paa));
+ icon = QPATHTOF(UI\captive_ca.paa);
priority = 2.3;
};
class ACE_StopEscorting {
@@ -40,7 +40,7 @@ class CfgVehicles {
statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive));
exceptions[] = {"isNotEscorting"};
showDisabled = 0;
- icon = QUOTE(PATHTOF(UI\captive_ca.paa));
+ icon = QPATHTOF(UI\captive_ca.paa);
priority = 2.3;
};
class ACE_LoadCaptive {
@@ -50,7 +50,7 @@ class CfgVehicles {
statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive));
exceptions[] = {"isNotEscorting"};
showDisabled = 0;
- icon = QUOTE(PATHTOF(UI\captive_ca.paa));
+ icon = QPATHTOF(UI\captive_ca.paa);
priority = 2.2;
};
class GVAR(UnloadCaptive) {
@@ -79,7 +79,7 @@ class CfgVehicles {
exceptions[] = {};
showDisabled = 0;
priority = 0;
- icon = QUOTE(PATHTOF(UI\Surrender_ca.paa));
+ icon = QPATHTOF(UI\Surrender_ca.paa);
};
class ACE_StopSurrenderingSelf {
displayName = CSTRING(StopSurrendering);
@@ -88,7 +88,7 @@ class CfgVehicles {
exceptions[] = {"isNotSurrendering"};
showDisabled = 0;
priority = 0;
- icon = QUOTE(PATHTOF(UI\Surrender_ca.paa));
+ icon = QPATHTOF(UI\Surrender_ca.paa);
};
};
};
@@ -154,7 +154,7 @@ class CfgVehicles {
scope = 2; //show in editor
isGlobal = 0; //run on server
isTriggerActivated = 1; //Wait for triggers
- icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa);
functionPriority = 0;
class Arguments {};
class ModuleDescription: ModuleDescription {
@@ -170,7 +170,7 @@ class CfgVehicles {
scope = 2; //show in editor
isGlobal = 0; //run on server
isTriggerActivated = 1; //Wait for triggers
- icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Handcuffed_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Make_Unit_Handcuffed_ca.paa);
functionPriority = 0;
class Arguments {};
class ModuleDescription: ModuleDescription {
@@ -186,7 +186,7 @@ class CfgVehicles {
displayName = CSTRING(ModuleSettings_DisplayName);
function = QFUNC(moduleSettings);
scope = 2;
- icon = QUOTE(PATHTOF(UI\Icon_Module_settings_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_settings_ca.paa);
isGlobal = 1;
isSingular = 1;
class Arguments {
diff --git a/addons/captives/CfgWeapons.hpp b/addons/captives/CfgWeapons.hpp
index 7092962519..1b65a0a4bf 100644
--- a/addons/captives/CfgWeapons.hpp
+++ b/addons/captives/CfgWeapons.hpp
@@ -5,8 +5,8 @@ class CfgWeapons {
class ACE_CableTie: ACE_ItemCore {
displayName = CSTRING(CableTie);
descriptionShort = CSTRING(CableTieDescription);
- model = QUOTE(PATHTOF(models\ace_cabletie.p3d));
- picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa));
+ model = QPATHTOF(models\ace_cabletie.p3d);
+ picture = QPATHTOF(UI\ace_cabletie_ca.paa);
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 1;
diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf
index 5aada0950f..567a107697 100644
--- a/addons/captives/XEH_postInit.sqf
+++ b/addons/captives/XEH_postInit.sqf
@@ -4,7 +4,7 @@
// Hold on a little bit longer to ensure anims will work
[{
GVAR(captivityEnabled) = true;
- }, [], 0.05] call EFUNC(common,waitAndExecute);
+ }, [], 0.05] call CBA_fnc_waitAndExecute;
}] call EFUNC(common,addEventHandler);
//Handles when someone starts escorting and then disconnects, leaving the captive attached
diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp
index c87408b341..a73b604fb2 100644
--- a/addons/captives/config.cpp
+++ b/addons/captives/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_CableTie"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Interaction"};
- author[] = {"commy2", "KoffeinFlummi"};
- authorUrl = "https://github.com/commy2/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2", "KoffeinFlummi"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf
index 484151853b..e0d3ae8fa6 100644
--- a/addons/captives/functions/fnc_doEscortCaptive.sqf
+++ b/addons/captives/functions/fnc_doEscortCaptive.sqf
@@ -37,7 +37,7 @@ if (_state) then {
[{
params ["_args", "_pfID"];
_args params ["_unit", "_target", "_actionID"];
-
+
if (_unit getVariable [QGVAR(isEscorting), false]) then {
if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then {
_unit setVariable [QGVAR(isEscorting), false, true];
diff --git a/addons/captives/functions/fnc_moduleHandcuffed.sqf b/addons/captives/functions/fnc_moduleHandcuffed.sqf
index dcb59ff2a1..9d3079262a 100644
--- a/addons/captives/functions/fnc_moduleHandcuffed.sqf
+++ b/addons/captives/functions/fnc_moduleHandcuffed.sqf
@@ -32,7 +32,7 @@ if (!isServer) exitWith {};
TRACE_2("event",_x,local _x);
["SetHandcuffed", [_x], [_x, true]] call EFUNC(common,targetEvent);
} forEach _units;
-}, [_units], 0.05] call EFUNC(common,waitAndExecute);
+}, [_units], 0.05] call CBA_fnc_waitAndExecute;
if (!isNull _logic) then {
deleteVehicle _logic;
diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf
index 29659b351e..a15d2e4165 100644
--- a/addons/captives/functions/fnc_moduleSurrender.sqf
+++ b/addons/captives/functions/fnc_moduleSurrender.sqf
@@ -32,7 +32,7 @@ if (!isServer) exitWith {};
TRACE_2("event",_x,local _x);
["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
} forEach _units;
-}, [_units], 0.05] call EFUNC(common,waitAndExecute);
+}, [_units], 0.05] call CBA_fnc_waitAndExecute;
if (!isNull _logic) then {
deleteVehicle _logic;
diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf
index d4f84730e6..58291d0689 100644
--- a/addons/captives/functions/fnc_setHandcuffed.sqf
+++ b/addons/captives/functions/fnc_setHandcuffed.sqf
@@ -27,7 +27,7 @@ if !(missionNamespace getVariable [QGVAR(captivityEnabled), false]) exitWith {
// It's to soon to call this function, delay it
if (EGVAR(common,settingsInitFinished)) then {
// Settings are already initialized, but the small wait isn't over
- [DFUNC(setHandCuffed), _this, 0.05] call EFUNC(common,waitAndExecute);
+ [DFUNC(setHandCuffed), _this, 0.05] call CBA_fnc_waitAndExecute;
} else {
// Settings are not initialized yet
[DFUNC(setHandCuffed), _this] call EFUNC(common,runAfterSettingsInit);
@@ -98,7 +98,7 @@ if (_state) then {
TRACE_2("Adding animChangedEH",_unit,_animChangedEHID);
_unit setVariable [QGVAR(handcuffAnimEHID), _animChangedEHID];
- }, [_unit], 0.01] call EFUNC(common,waitAndExecute);
+ }, [_unit], 0.01] call CBA_fnc_waitAndExecute;
} else {
_unit setVariable [QGVAR(isHandcuffed), false, true];
[_unit, "setCaptive", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set);
diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf
index ffc3c35081..6fc4c7b9ab 100644
--- a/addons/captives/functions/fnc_setSurrendered.sqf
+++ b/addons/captives/functions/fnc_setSurrendered.sqf
@@ -27,7 +27,7 @@ if !(missionNamespace getVariable [QGVAR(captivityEnabled), false]) exitWith {
// It's to soon to call this function, delay it
if (EGVAR(common,settingsInitFinished)) then {
// Settings are already initialized, but the small wait isn't over
- [DFUNC(setSurrendered), _this, 0.05] call EFUNC(common,waitAndExecute);
+ [DFUNC(setSurrendered), _this, 0.05] call CBA_fnc_waitAndExecute;
} else {
// Settings are not initialized yet
[DFUNC(setSurrendered), _this] call EFUNC(common,runAfterSettingsInit);
@@ -73,7 +73,7 @@ if (_state) then {
}];
_unit setVariable [QGVAR(surrenderAnimEHID), _animChangedEHID];
};
- }, [_unit], 0.01] call EFUNC(common,waitAndExecute);
+ }, [_unit], 0.01] call CBA_fnc_waitAndExecute;
} else {
_unit setVariable [QGVAR(isSurrendering), false, true];
[_unit, "setCaptive", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set);
@@ -103,7 +103,7 @@ if (_state) then {
params ["_args", "_pfID"];
_args params ["_unit", "_maxTime"];
//If waited long enough or they re-surrendered or they are unconscious, exit loop
- if ((ACE_time > _maxTime) || {_unit getVariable [QGVAR(isSurrendering), false]} || {_unit getVariable ["ACE_isUnconscious", false]}) exitWith {
+ if ((CBA_missionTime > _maxTime) || {_unit getVariable [QGVAR(isSurrendering), false]} || {_unit getVariable ["ACE_isUnconscious", false]}) exitWith {
[_pfID] call CBA_fnc_removePerFrameHandler;
};
//Only break animation if they are actualy the "hands up" animation (because we are using switchmove there won't be an transition)
@@ -112,7 +112,7 @@ if (_state) then {
//Break out of hands up animation loop
[_unit, "ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation);
};
- }, 0, [_unit, (ACE_time + 20)]] call CBA_fnc_addPerFrameHandler;
+ }, 0, [_unit, (CBA_missionTime + 20)]] call CBA_fnc_addPerFrameHandler;
};
};
diff --git a/addons/cargo/CfgEventHandlers.hpp b/addons/cargo/CfgEventHandlers.hpp
index 3f784e7ab4..ff4a88693e 100644
--- a/addons/cargo/CfgEventHandlers.hpp
+++ b/addons/cargo/CfgEventHandlers.hpp
@@ -27,27 +27,7 @@ class Extended_Killed_EventHandlers {
//Need initPost or we have problems with setVariable with 'ACE_Cargo'
class Extended_InitPost_EventHandlers {
- class StaticWeapon {
- class ADDON {
- init = QUOTE(_this call DFUNC(initObject));
- };
- };
- class ReammoBox_F {
- class ADDON {
- init = QUOTE(_this call DFUNC(initObject));
- };
- };
- class Cargo_base_F {
- class ADDON {
- init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
- };
- };
- class CargoNet_01_box_F {
- class ADDON {
- init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
- };
- };
- class Land_CargoBox_V1_F {
+ class ThingX {
class ADDON {
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
};
@@ -57,27 +37,17 @@ class Extended_InitPost_EventHandlers {
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
};
};
- class RoadCone_F {
+ class PlasticCase_01_base_F {
class ADDON {
init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle));
};
};
- class Car {
+ class LandVehicle {
class ADDON {
init = QUOTE(_this call DFUNC(initVehicle));
};
};
- class Tank {
- class ADDON {
- init = QUOTE(_this call DFUNC(initVehicle));
- };
- };
- class Helicopter {
- class ADDON {
- init = QUOTE(_this call DFUNC(initVehicle));
- };
- };
- class Plane {
+ class Air {
class ADDON {
init = QUOTE(_this call DFUNC(initVehicle));
};
@@ -87,16 +57,6 @@ class Extended_InitPost_EventHandlers {
init = QUOTE(_this call DFUNC(initVehicle));
};
};
- class ACE_RepairItem_Base {
- class ADDON {
- init = QUOTE(_this call DFUNC(initObject));
- };
- };
- class ACE_bodyBagObject {
- class ADDON {
- init = QUOTE(_this call DFUNC(initObject));
- };
- };
class ACE_ConcertinaWireCoil {
class ADDON {
init = QUOTE(_this call DFUNC(initObject));
diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp
index e1750d8aad..43412b7b72 100644
--- a/addons/cargo/CfgVehicles.hpp
+++ b/addons/cargo/CfgVehicles.hpp
@@ -10,7 +10,7 @@ class CfgVehicles {
class ACE_moduleCargoSettings: ACE_Module {
scope = 2;
displayName = CSTRING(SettingsModule_DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_Cargo_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Cargo_ca.paa);
category = "ACE_Logistics";
function = QFUNC(moduleSettings);
functionPriority = 1;
@@ -36,7 +36,7 @@ class CfgVehicles {
class GVAR(makeLoadable): ACE_Module {
scope = 2;
displayName = CSTRING(makeLoadable_displayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_makeLoadable_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_makeLoadable_ca.paa);
category = "ACE_Logistics";
function = QFUNC(moduleMakeLoadable);
isGlobal = 1;
@@ -194,12 +194,69 @@ class CfgVehicles {
GVAR(hasCargo) = 1;
};
- class Heli_Transport_02_base_F;
- class I_Heli_Transport_02_F: Heli_Transport_02_base_F {
+ class Helicopter_Base_H;
+ class Heli_Light_01_base_F: Helicopter_Base_H {
+ GVAR(space) = 0;
+ GVAR(hasCargo) = 0;
+ };
+
+ class Heli_Light_02_base_F: Helicopter_Base_H {
+ GVAR(space) = 4;
+ };
+
+ class Helicopter_Base_F;
+ class Heli_light_03_base_F: Helicopter_Base_F {
+ GVAR(space) = 4;
+ };
+
+ class Heli_Transport_01_base_F: Helicopter_Base_H {
+ GVAR(space) = 8;
+ };
+
+ class Heli_Transport_02_base_F: Helicopter_Base_H {
+ GVAR(space) = 20;
+ };
+
+ class Heli_Transport_03_base_F: Helicopter_Base_H {
+ GVAR(space) = 40;
+ };
+
+ class Heli_Transport_04_base_F: Helicopter_Base_H {
+ GVAR(space) = 0;
+ GVAR(hasCargo) = 0;
+ };
+
+ class O_Heli_Transport_04_box_F: Heli_Transport_04_base_F {
GVAR(space) = 20;
GVAR(hasCargo) = 1;
};
+ class O_Heli_Transport_04_repair_F: Heli_Transport_04_base_F {
+ GVAR(space) = 12;
+ GVAR(hasCargo) = 1;
+ };
+
+ class O_Heli_Transport_04_ammo_F: Heli_Transport_04_base_F {
+ GVAR(space) = 8;
+ GVAR(hasCargo) = 1;
+ };
+
+ class O_Heli_Transport_04_fuel_F: Heli_Transport_04_base_F {};
+
+ class O_Heli_Transport_04_medevac_F: Heli_Transport_04_base_F {
+ GVAR(space) = 8;
+ GVAR(hasCargo) = 1;
+ };
+
+ class Heli_Attack_01_base_F: Helicopter_Base_F {
+ GVAR(space) = 0;
+ GVAR(hasCargo) = 0;
+ };
+
+ class Heli_Attack_02_base_F: Helicopter_Base_F {
+ GVAR(space) = 4;
+ };
+
// jets
class Plane: Air {
GVAR(space) = 0;
@@ -207,7 +264,6 @@ class CfgVehicles {
};
// autonomus
- class Helicopter_Base_F;
class UAV_01_base_F: Helicopter_Base_F {
GVAR(space) = 0;
GVAR(hasCargo) = 0;
@@ -248,6 +304,26 @@ class CfgVehicles {
GVAR(canLoad) = 1;
};
+ // Taru pods
+ class Pod_Heli_Transport_04_base_F;
+ class Land_Pod_Heli_Transport_04_ammo_F: Pod_Heli_Transport_04_base_F {
+ GVAR(space) = 8;
+ GVAR(hasCargo) = 1;
+ };
+ class Land_Pod_Heli_Transport_04_box_F: Pod_Heli_Transport_04_base_F {
+ GVAR(space) = 20;
+ GVAR(hasCargo) = 1;
+ };
+ class Land_Pod_Heli_Transport_04_repair_F: Pod_Heli_Transport_04_base_F {
+ GVAR(space) = 12;
+ GVAR(hasCargo) = 1;
+ };
+ class Pod_Heli_Transport_04_crewed_base_F;
+ class Land_Pod_Heli_Transport_04_medevac_F: Pod_Heli_Transport_04_crewed_base_F {
+ GVAR(space) = 8;
+ GVAR(hasCargo) = 1;
+ };
+
class StaticMortar;
class Mortar_01_base_F: StaticMortar {
GVAR(size) = 2; // 1 = small, 2 = large
@@ -256,6 +332,7 @@ class CfgVehicles {
// Ammo boxes
class ThingX;
+ class Items_base_F;
class ReammoBox_F: ThingX {
GVAR(size) = 2; // 1 = small, 2 = large
GVAR(canLoad) = 1;
@@ -278,6 +355,23 @@ class CfgVehicles {
class Slingload_01_Base_F: Slingload_base_F { //Huron 20ft containers
GVAR(canLoad) = 0;
};
+
+ //Plastic and metal case
+ class PlasticCase_01_base_F: Items_base_F {
+ GVAR(size) = 1; // 1 = small, 2 = large
+ GVAR(canLoad) = 1;
+ };
+ class Land_PlasticCase_01_large_F: PlasticCase_01_base_F {
+ GVAR(size) = 2; // 1 = small, 2 = large
+ };
+ class MetalCase_01_base_F: Items_base_F {
+ GVAR(size) = 1; // 1 = small, 2 = large
+ GVAR(canLoad) = 1;
+ };
+ class Land_MetalCase_01_large_F: MetalCase_01_base_F {
+ GVAR(size) = 2; // 1 = small, 2 = large
+ };
+
// objects
class RoadCone_F: ThingX {
GVAR(size) = 1;
diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp
index 1aefa49616..860eff0d99 100644
--- a/addons/cargo/config.cpp
+++ b/addons/cargo/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"commy2", "Glowbal"};
- authorUrl = "https://ace3mod.com/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2", "Glowbal"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/cargo/functions/fnc_initObject.sqf b/addons/cargo/functions/fnc_initObject.sqf
index dc8db802e5..f740d0e371 100644
--- a/addons/cargo/functions/fnc_initObject.sqf
+++ b/addons/cargo/functions/fnc_initObject.sqf
@@ -39,7 +39,7 @@ private _statement = {
[_player, _target] call FUNC(startLoadIn);
};
private _text = localize LSTRING(loadObject);
-private _icon = QUOTE(PATHTOF(UI\Icon_load.paa));
+private _icon = QPATHTOF(UI\Icon_load.paa);
private _action = [QGVAR(load), _text, _icon, _statement, _condition] call EFUNC(interact_menu,createAction);
[_type, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToClass);
diff --git a/addons/cargo/functions/fnc_initVehicle.sqf b/addons/cargo/functions/fnc_initVehicle.sqf
index c0b312146b..7e19b0acd0 100644
--- a/addons/cargo/functions/fnc_initVehicle.sqf
+++ b/addons/cargo/functions/fnc_initVehicle.sqf
@@ -20,6 +20,8 @@ TRACE_1("params", _vehicle);
private _type = typeOf _vehicle;
+if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
+
if (isServer) then {
{
if (isClass _x) then {
@@ -38,7 +40,6 @@ if (_type in GVAR(initializedVehicleClasses)) exitWith {};
GVAR(initializedVehicleClasses) pushBack _type;
if (!hasInterface) exitWith {};
-if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
TRACE_1("Adding unload cargo action to class", _type);
diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml
index 57daacd207..6a4cf5acfb 100644
--- a/addons/cargo/stringtable.xml
+++ b/addons/cargo/stringtable.xml
@@ -175,6 +175,8 @@
Rendi oggetto caricabile
Hacer objeto cargable
Rendre l'objet chargeable
+ Vytvořit objekt nakladatelným
+ Fazer objeto carregável
Sets the synced object as loadable by the cargo system.
@@ -183,6 +185,8 @@
Imposta l'oggetto sincronizzato come caricabile dal sistema cargo
Sincronizar un objecto para hacerlo cargable.
Rend l'objet synchronisé comme chargeable par le système de cargaison.
+ Nastaví synchronizované objekty nakladatelnými za pomocí Nákladního systému.
+ Seta o objeto sincronizado como carregável
Object's Size
@@ -191,6 +195,8 @@
Dimensioni dell'oggetto
Tamaño del objeto
Taille de l'objet
+ Velikost objektu
+ Tamanho do objeto
-
+
\ No newline at end of file
diff --git a/addons/common/ACE_Settings.hpp b/addons/common/ACE_Settings.hpp
index d6226fd0ab..2d8a5d7a27 100644
--- a/addons/common/ACE_Settings.hpp
+++ b/addons/common/ACE_Settings.hpp
@@ -49,7 +49,7 @@ class ACE_Settings {
description = CSTRING(SettingFeedbackIconsDesc);
values[] = {ECSTRING(optionsmenu,Hide), ECSTRING(optionsmenu,TopRightDown), ECSTRING(optionsmenu,TopRightLeft), ECSTRING(optionsmenu,TopLeftDown), ECSTRING(optionsmenu,TopLeftRight)};
};
- class GVAR(SettingProgressBarLocation) {
+ class GVAR(settingProgressBarLocation) {
value = 0;
typeName = "SCALAR";
force = 0;
diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp
index 2c4f3922bc..beb07e35e7 100644
--- a/addons/common/CfgEventHandlers.hpp
+++ b/addons/common/CfgEventHandlers.hpp
@@ -33,7 +33,7 @@ class Extended_InitPost_EventHandlers {
};
class CAManBase {
class GVAR(setName) {
- init = QUOTE(if (local (_this select 0)) then {_this call FUNC(setName)};);
+ init = QUOTE(if (local (_this select 0)) then {[ARR_2(FUNC(setName),_this)] call CBA_fnc_execNextFrame};);
};
class GVAR(muteUnit) {
init = QUOTE(_this call FUNC(muteUnitHandleInitPost));
@@ -76,3 +76,9 @@ class Extended_FiredBIS_EventHandlers {
ADDON = QUOTE(_this call FUNC(firedEH));
};
};
+
+class Extended_Engine_EventHandlers {
+ class All {
+ ADDON = QUOTE(_this call FUNC(handleEngine));
+ };
+};
diff --git a/addons/common/CfgUnitInsignia.hpp b/addons/common/CfgUnitInsignia.hpp
index c1cd541e9c..337baa4235 100644
--- a/addons/common/CfgUnitInsignia.hpp
+++ b/addons/common/CfgUnitInsignia.hpp
@@ -3,13 +3,13 @@ class CfgUnitInsignia {
class ACE_insignia_logo {
displayName = "ACE3";
author = CSTRING(ACETeam);
- texture = PATHTOF(data\Insignia_ace3logo_ca.paa);
+ texture = QPATHTOF(data\Insignia_ace3logo_ca.paa);
textureVehicle = "";
};
class ACE_insignia_banana {
displayName = "ABE3";
author = CSTRING(ACETeam);
- texture = PATHTOF(data\insignia_banana_ca.paa);
+ texture = QPATHTOF(data\insignia_banana_ca.paa);
textureVehicle = "";
};
};
diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp
index de1f7f7cf4..1e958027be 100644
--- a/addons/common/CfgVehicles.hpp
+++ b/addons/common/CfgVehicles.hpp
@@ -36,7 +36,7 @@ class CfgVehicles {
scope = 2;
isGlobal = 1;
isSingular = 1;
- icon = QUOTE(PATHTOF(UI\Icon_Module_CheckPBO_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_CheckPBO_ca.paa);
class Arguments {
class Action {
displayName = CSTRING(CheckPBO_Action_DisplayName);
@@ -82,7 +82,7 @@ class CfgVehicles {
displayName = CSTRING(LSDVehicles_DisplayName);
function = "ACE_Common_fnc_moduleLSDVehicles";
scope = 2;
- icon = QUOTE(PATHTOF(UI\Icon_Module_LSD_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_LSD_ca.paa);
isGlobal = 1;
class Arguments {};
class ModuleDescription: ModuleDescription {
@@ -132,7 +132,7 @@ class CfgVehicles {
class ACE_Headbug_Fix: Bicycle {
scope = 1;
side = 3;
- model = PATHTOF(data\ACE_HeadBanger.p3d);
+ model = QPATHTOF(data\ACE_HeadBanger.p3d);
//model = QPATHTO_M(ACE_HeadBanger.p3d);
author = CSTRING(ACETeam);
displayName = " ";
diff --git a/addons/common/CfgWeapons.hpp b/addons/common/CfgWeapons.hpp
index 22075e2903..488d4210c4 100644
--- a/addons/common/CfgWeapons.hpp
+++ b/addons/common/CfgWeapons.hpp
@@ -34,8 +34,8 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(bananaDisplayName);
descriptionShort = CSTRING(bananaDescr);
- model = PATHTOF(data\banana.p3d);
- picture = PATHTOF(data\icon_banana_ca.paa);
+ model = QPATHTOF(data\banana.p3d);
+ picture = QPATHTOF(data\icon_banana_ca.paa);
icon = "iconObject_circle";
mapSize = 0.034;
class ItemInfo: InventoryItem_Base_F {
diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp
index 327a9814d1..32bc0b698f 100644
--- a/addons/common/RscInfoType.hpp
+++ b/addons/common/RscInfoType.hpp
@@ -15,7 +15,7 @@ class RscInGameUI {
class RscUnitInfoTank: RscUnitInfo {
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Vehicle')])] call FUNC(localEvent););
};
-
+
class RscUnitInfoAirNoWeapon: RscUnitInfo {
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call FUNC(localEvent););
};
@@ -111,4 +111,8 @@ class RscInGameUI {
class RscStaminaBar {
onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStaminaBar"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgStaminaBar)),_this select 0)]);
};
+
+ class RscStanceInfo {
+ onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStanceInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Stance')])] call FUNC(localEvent););
+ };
};
diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp
index 0b125af1aa..857a754f6a 100644
--- a/addons/common/XEH_PREP.hpp
+++ b/addons/common/XEH_PREP.hpp
@@ -24,6 +24,7 @@ PREP(debugModule);
PREP(defineVariable);
PREP(deviceKeyFindValidIndex);
PREP(deviceKeyRegisterNew);
+PREP(deprecateComponent);
PREP(disableAI);
PREP(disableUserInput);
PREP(displayIcon);
@@ -87,6 +88,7 @@ PREP(getWindDirection);
PREP(getZoom);
PREP(goKneeling);
PREP(hadamardProduct);
+PREP(handleEngine);
PREP(handleModifierKey);
PREP(handleModifierKeyUp);
PREP(handleScrollWheel);
@@ -276,5 +278,3 @@ PREP(hashListCreateHash);
PREP(hashListSelect);
PREP(hashListSet);
PREP(hashListPush);
-
-PREP(timePFH);
diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index 8eeed526f5..5a85452b1b 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -3,47 +3,6 @@
// #define DEBUG_MODE_FULL
#include "script_component.hpp"
-
-//////////////////////////////////////////////////
-// PFHs
-//////////////////////////////////////////////////
-
-//Singe PFEH to handle execNextFrame, waitAndExec and waitUntilAndExec:
-[{
- BEGIN_COUNTER(waitAndExec);
-
- //Handle the waitAndExec array:
- while {!(GVAR(waitAndExecArray) isEqualTo []) && {GVAR(waitAndExecArray) select 0 select 0 <= ACE_Time}} do {
- private _entry = GVAR(waitAndExecArray) deleteAt 0;
- (_entry select 2) call (_entry select 1);
- };
-
- //Handle the execNextFrame array:
- {
- (_x select 0) call (_x select 1);
- false
- } count GVAR(nextFrameBufferA);
-
- //Swap double-buffer:
- GVAR(nextFrameBufferA) = GVAR(nextFrameBufferB);
- GVAR(nextFrameBufferB) = [];
- GVAR(nextFrameNo) = diag_frameno + 1;
-
- //Handle the waitUntilAndExec array:
- {
- // if condition is satisifed call statement
- if ((_x select 2) call (_x select 0)) then {
- // make sure to delete the correct handle when multiple conditions are met in one frame
- GVAR(waitUntilAndExecArray) deleteAt (GVAR(waitUntilAndExecArray) find _x);
- (_x select 2) call (_x select 1);
- };
- nil
- } count +GVAR(waitUntilAndExecArray);
-
- END_COUNTER(waitAndExec);
-}, 0, []] call CBA_fnc_addPerFrameHandler;
-
-
//////////////////////////////////////////////////
// Get Map Data
//////////////////////////////////////////////////
@@ -64,6 +23,7 @@
["blockSprint", false, []] call FUNC(statusEffect_addType);
["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), QEGVAR(medical,unconscious)]] call FUNC(statusEffect_addType);
["blockDamage", false, ["fixCollision"]] call FUNC(statusEffect_addType);
+["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType);
["forceWalk", {
params ["_object", "_set"];
@@ -90,6 +50,11 @@
_object allowDamage (_set == 0);
};
}] call FUNC(addEventHandler);
+["blockEngine", {
+ params ["_vehicle", "_set"];
+ _vehicle setVariable [QGVAR(blockEngine), _set > 0, true];
+ _vehicle engineOn false;
+}] call FUNC(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
@@ -133,6 +98,7 @@ if (isServer) then {
["fixFloating", FUNC(fixFloating)] call FUNC(addEventhandler);
["fixPosition", FUNC(fixPosition)] call FUNC(addEventhandler);
+["loadPersonEvent", FUNC(loadPersonLocal)] call FUNC(addEventhandler);
["unloadPersonEvent", FUNC(unloadPersonLocal)] call FUNC(addEventhandler);
["lockVehicle", {
@@ -146,6 +112,7 @@ if (isServer) then {
["setDir", {(_this select 0) setDir (_this select 1)}] call FUNC(addEventhandler);
["setFuel", {(_this select 0) setFuel (_this select 1)}] call FUNC(addEventhandler);
+["engineOn", {(_this select 0) engineOn (_this select 1)}] call FUNC(addEventhandler);
["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler);
["selectLeader", {(_this select 0) selectLeader (_this select 1)}] call FUNC(addEventHandler);
["setVelocity", {(_this select 0) setVelocity (_this select 1)}] call FUNC(addEventHandler);
@@ -155,9 +122,17 @@ if (isServer) then {
["setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call FUNC(addEventHandler);
["setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call FUNC(addEventHandler);
+// Request framework
+[QGVAR(requestCallback), FUNC(requestCallback)] call FUNC(addEventHandler);
+[QGVAR(receiveRequest), FUNC(receiveRequest)] call FUNC(addEventHandler);
+
+[QGVAR(systemChatGlobal), {systemChat _this}] call FUNC(addEventHandler);
+
if (isServer) then {
["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler);
["enableSimulationGlobal", {(_this select 0) enableSimulationGlobal (_this select 1)}] call FUNC(addEventHandler);
+ ["setOwner", {(_this select 0) setOwner (_this select 1)}] call FUNC(addEventHandler);
+ [QGVAR(serverLog), FUNC(serverLog)] call FUNC(addEventHandler);
};
@@ -325,19 +300,14 @@ enableCamShake true;
GVAR(OldPlayerVehicle) = vehicle objNull;
GVAR(OldPlayerTurret) = [objNull] call FUNC(getTurretIndex);
GVAR(OldPlayerWeapon) = currentWeapon objNull;
-GVAR(OldPlayerInventory) = [objNull] call FUNC(getAllGear);
+GVAR(OldPlayerInventory) = [];
+GVAR(OldPlayerInventoryNoAmmo) = [];
GVAR(OldPlayerVisionMode) = currentVisionMode objNull;
GVAR(OldCameraView) = "";
GVAR(OldVisibleMap) = false;
GVAR(OldInventoryDisplayIsOpen) = nil; //@todo check this
GVAR(OldIsCamera) = false;
-// clean up playerChanged eventhandler from preinit and put it in the same PFH as the other events to reduce overhead and guarantee advantageous execution order
-if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
- [GVAR(PreInit_playerChanged_PFHID)] call CBA_fnc_removePerFrameHandler;
- GVAR(PreInit_playerChanged_PFHID) = nil;
-};
-
// PFH to raise varios events
[{
BEGIN_COUNTER(stateChecker);
@@ -379,11 +349,36 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
};
// "playerInventoryChanged" event
- _data = [ACE_player] call FUNC(getAllGear);
+ _data = getUnitLoadout ACE_player;
if !(_data isEqualTo GVAR(OldPlayerInventory)) then {
// Raise ACE event locally
GVAR(OldPlayerInventory) = _data;
- ["playerInventoryChanged", [ACE_player, _data]] call FUNC(localEvent);
+
+ // we don't want to trigger this just because your ammo counter decreased.
+ _data = + GVAR(OldPlayerInventory);
+
+ private _weaponInfo = _data param [0, []];
+ if !(_weaponInfo isEqualTo []) then {
+ _weaponInfo set [4, primaryWeaponMagazine ACE_player];
+ _weaponInfo deleteAt 5;
+ };
+
+ _weaponInfo = _data param [1, []];
+ if !(_weaponInfo isEqualTo []) then {
+ _weaponInfo set [4, secondaryWeaponMagazine ACE_player];
+ _weaponInfo deleteAt 5;
+ };
+
+ _weaponInfo = _data param [2, []];
+ if !(_weaponInfo isEqualTo []) then {
+ _weaponInfo set [4, handgunMagazine ACE_player];
+ _weaponInfo deleteAt 5;
+ };
+
+ if !(_data isEqualTo GVAR(OldPlayerInventoryNoAmmo)) then {
+ GVAR(OldPlayerInventoryNoAmmo) = _data;
+ ["playerInventoryChanged", [ACE_player, [ACE_player, false] call FUNC(getAllGear)]] call FUNC(localEvent);
+ };
};
// "playerVisionModeChanged" event
diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf
index 20b3692b9f..0c2922ea64 100644
--- a/addons/common/XEH_preInit.sqf
+++ b/addons/common/XEH_preInit.sqf
@@ -23,13 +23,6 @@ DFUNC(selectWeaponMode) = {
GVAR(syncedEvents) = HASH_CREATE;
GVAR(showHudHash) = [] call FUNC(hashCreate);
-//GVARS for execNextFrame and waitAndExec and waitUntilAndExecute
-GVAR(waitAndExecArray) = [];
-GVAR(nextFrameNo) = diag_frameno;
-GVAR(nextFrameBufferA) = [];
-GVAR(nextFrameBufferB) = [];
-GVAR(waitUntilAndExecArray) = [];
-
GVAR(settingsInitFinished) = false;
GVAR(runAtSettingsInitialized) = [];
@@ -46,44 +39,15 @@ if (isServer) then {
GVAR(statusEffect_Names) = [];
GVAR(statusEffect_isGlobal) = [];
+GVAR(setHearingCapabilityMap) = [];
+
//////////////////////////////////////////////////
-// Set up PlayerChanged eventhandler for pre init
+// Set up PlayerChanged eventhandler for pre init (EH is installed in postInit)
//////////////////////////////////////////////////
ACE_player = objNull;
uiNamespace setVariable ["ACE_player", objNull];
-// @todo check if this can be removed
-if (hasInterface) then {
- // PFH to update the ACE_player variable
- GVAR(PreInit_playerChanged_PFHID) = [{
- if !(ACE_player isEqualTo (call FUNC(player))) then {
- private _oldPlayer = ACE_player;
-
- ACE_player = call FUNC(player);
- uiNamespace setVariable ["ACE_player", ACE_player];
-
- // Raise ACE event
- ["playerChanged", [ACE_player, _oldPlayer]] call FUNC(localEvent);
- };
- }, 0, []] call CBA_fnc_addPerFrameHandler;
-};
-
-
-//////////////////////////////////////////////////
-// Time handling
-//////////////////////////////////////////////////
-
-ACE_time = diag_tickTime;
-ACE_realTime = diag_tickTime;
-ACE_virtualTime = diag_tickTime;
-ACE_diagTime = diag_tickTime;
-ACE_gameTime = time;
-ACE_pausedTime = 0;
-ACE_virtualPausedTime = 0;
-
-[FUNC(timePFH), 0, []] call CBA_fnc_addPerFrameHandler;
-
// Init toHex
[0] call FUNC(toHex);
diff --git a/addons/common/config.cpp b/addons/common/config.cpp
index cbe5c5df6a..2cf6dd4ec9 100644
--- a/addons/common/config.cpp
+++ b/addons/common/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_main","ace_modules"};
- author[] = {"KoffeinFlummi"};
- authorUrl = "https://github.com/KoffeinFlummi/";
+ author = CSTRING(ACETeam);
+ authors[] = {"KoffeinFlummi"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG_COMMON;
};
};
diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
index 605af2fa85..9d6c062ac2 100644
--- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
+++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
@@ -23,7 +23,7 @@ if (isServer) then {
params ["_eventName", "_client"];
if (!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith {
- ACE_LOGERROR("Request for synced event - key not found.");
+ ACE_LOGERROR_1("Request for synced event - key [%1] not found.", _eventName);
false
};
diff --git a/addons/common/functions/fnc__handleSyncedEvent.sqf b/addons/common/functions/fnc__handleSyncedEvent.sqf
index f8fe21d760..c65ccad8b0 100644
--- a/addons/common/functions/fnc__handleSyncedEvent.sqf
+++ b/addons/common/functions/fnc__handleSyncedEvent.sqf
@@ -17,7 +17,7 @@
params ["_name", "_args", "_ttl"];
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
- ACE_LOGERROR("Synced event key not found.");
+ ACE_LOGERROR_1("Synced event key [%1] not found (_handleSyncedEvent).", _name);
false
};
@@ -29,7 +29,7 @@ if (isServer) then {
_internalData = HASH_GET(GVAR(syncedEvents),_name);
_internalData params ["", "_eventLog"];
- _eventLog pushBack [ACE_diagTime, _args, _ttl];
+ _eventLog pushBack [diag_tickTime, _args, _ttl];
};
};
diff --git a/addons/common/functions/fnc_addSyncedEventHandler.sqf b/addons/common/functions/fnc_addSyncedEventHandler.sqf
index 0964e419bc..126bb6a957 100644
--- a/addons/common/functions/fnc_addSyncedEventHandler.sqf
+++ b/addons/common/functions/fnc_addSyncedEventHandler.sqf
@@ -10,6 +10,9 @@
* Return Value:
* Boolean of success
*
+ * Example:
+ * ["myEvent", {_this call x}, 0] call ace_common_fnc_addSyncedEventHandler
+ *
* Public: Yes
*/
#include "script_component.hpp"
@@ -17,7 +20,7 @@
params ["_name", "_handler", ["_ttl", 0]];
if (HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
- ACE_LOGERROR("Duplicate synced event creation.");
+ ACE_LOGERROR_1("Duplicate synced event [%1] creation.",_name);
false
};
diff --git a/addons/common/functions/fnc_assignedItemFix.sqf b/addons/common/functions/fnc_assignedItemFix.sqf
index d93409ce7c..18dd6b4e0c 100644
--- a/addons/common/functions/fnc_assignedItemFix.sqf
+++ b/addons/common/functions/fnc_assignedItemFix.sqf
@@ -29,39 +29,17 @@ GVAR(AssignedItemsShownItems) = [
];
["playerInventoryChanged", {
- params ["_unit", "_assignedItems"];
+ params ["_unit"];
- _assignedItems = _assignedItems select 17;
+ private _assignedItems = getUnitLoadout _unit param [9, ["","","","","",""]]; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"]
- GVAR(AssignedItemsShownItems) = [true, true, true, true, true];
-
- {
- if !(_x in GVAR(AssignedItems)) then {
- GVAR(AssignedItems) pushBack _x;
- GVAR(AssignedItemsInfo) pushBack toLower getText (configFile >> "CfgWeapons" >> _x >> "ACE_hideItemType");
- };
-
- switch (GVAR(AssignedItemsInfo) select (GVAR(AssignedItems) find _x)) do {
- case ("map"): {
- GVAR(AssignedItemsShownItems) set [0, false];
- };
- case ("compass"): {
- GVAR(AssignedItemsShownItems) set [1, false];
- };
- case ("watch"): {
- GVAR(AssignedItemsShownItems) set [2, false];
- };
- case ("radio"): {
- GVAR(AssignedItemsShownItems) set [3, false];
- };
- case ("gps"): {
- GVAR(AssignedItemsShownItems) set [4, false];
- };
- };
- false
- } count _assignedItems;
-
- //systemChat str GVAR(AssignedItemsShownItems);
+ GVAR(AssignedItemsShownItems) = [
+ !((_assignedItems select 0) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 0 >> "ACE_hideItemType") != "map"},
+ !((_assignedItems select 3) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 3 >> "ACE_hideItemType") != "compass"},
+ !((_assignedItems select 4) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 4 >> "ACE_hideItemType") != "watch"},
+ !((_assignedItems select 2) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 2 >> "ACE_hideItemType") != "radio"},
+ !((_assignedItems select 1) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 1 >> "ACE_hideItemType") != "gps"}
+ ];
GVAR(AssignedItemsShownItems) params ["_showMap", "_showCompass", "_showWatch", "_showRadio", "_showGPS"];
diff --git a/addons/common/functions/fnc_binocularMagazine.sqf b/addons/common/functions/fnc_binocularMagazine.sqf
index b5f4f0558e..aacac7c142 100644
--- a/addons/common/functions/fnc_binocularMagazine.sqf
+++ b/addons/common/functions/fnc_binocularMagazine.sqf
@@ -15,18 +15,6 @@
*/
#include "script_component.hpp"
-params [["_unit", objNull, [objNull]]];
+ACE_DEPRECATED("ace_common_fnc_binocularMagazine","3.8.0","CBA_fnc_binocularMagazine");
-private _binocular = binocular _unit;
-
-scopeName "main";
-
-{
- if ((_x select 0) isEqualTo _binocular) then {
- // note: if there is no magazine, _x(4,0) will be nil, which skips the breakOut.
- (_x select 4 select 0) breakOut "main";
- };
- false
-} count weaponsitems _unit;
-
-""
+_this call CBA_fnc_binocularMagazine
diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf
index 2c7cdd4b27..6160dfd090 100644
--- a/addons/common/functions/fnc_cachedCall.sqf
+++ b/addons/common/functions/fnc_cachedCall.sqf
@@ -19,8 +19,8 @@
params ["_params", "_function", "_namespace", "_uid", "_duration", "_event"];
-if ((_namespace getVariable [_uid, [-99999]]) select 0 < ACE_diagTime) then {
- _namespace setVariable [_uid, [ACE_diagTime + _duration, _params call _function]];
+if ((_namespace getVariable [_uid, [-99999]]) select 0 < diag_tickTime) then {
+ _namespace setVariable [_uid, [diag_tickTime + _duration, _params call _function]];
// Does the cache needs to be cleared on an event?
if (!isNil "_event") then {
diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf
index f447d126af..1e6eac7887 100644
--- a/addons/common/functions/fnc_checkPBOs.sqf
+++ b/addons/common/functions/fnc_checkPBOs.sqf
@@ -61,7 +61,8 @@ if (!isServer) then {
_error = _error + "Newer version; ";
};
- //[_error, "{systemChat _this}"] call FUNC(execRemoteFnc);
+ //[QGVAR(systemChatGlobal), _error] call FUNC(globalEvent);
+
ACE_LOGERROR(_error);
if (_mode < 2) then {
@@ -79,7 +80,7 @@ if (!isServer) then {
params ["_rscLayer"];
TRACE_2("Hiding Error message after 10 seconds",time,_rscLayer);
_rscLayer cutFadeOut 0.2;
- }, [_rscLayer], 10] call FUNC(waitAndExecute);
+ }, [_rscLayer], 10] call CBA_fnc_waitAndExecute;
};
};
@@ -89,7 +90,7 @@ if (!isServer) then {
TRACE_2("Player is alive, showing msg and exiting",time,_text);
_text = composeText [parseText format ["%1 ", _text]];
["[ACE] ERROR", _text, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
- }, [_text]] call FUNC(waitUntilAndExecute);
+ }, [_text]] call CBA_fnc_waitUntilAndExecute;
};
};
diff --git a/addons/common/functions/fnc_codeToString.sqf b/addons/common/functions/fnc_codeToString.sqf
index b2817cd2b8..b4fe37db35 100644
--- a/addons/common/functions/fnc_codeToString.sqf
+++ b/addons/common/functions/fnc_codeToString.sqf
@@ -12,12 +12,11 @@
*/
#include "script_component.hpp"
-params ["_function"];
+params ["_code"];
+if (_code isEqualType "") exitWith {_code};
-if (_function isEqualType "") exitWith {_function};
+_code = str(_code);
+_code = _code select [1, count _code - 2];
-_function = toArray str _function;
-_function deleteAt 0;
-_function deleteAt (count _function - 1);
+_code
-toString _function // return
diff --git a/addons/common/functions/fnc_deprecateComponent.sqf b/addons/common/functions/fnc_deprecateComponent.sqf
new file mode 100644
index 0000000000..21905e8e4e
--- /dev/null
+++ b/addons/common/functions/fnc_deprecateComponent.sqf
@@ -0,0 +1,63 @@
+/*
+ * Author: Glowbal
+ * Mark a component as deprecated and switches it to a new component if that is available
+ *
+ * Arguments:
+ * 0: Component
+ * 1: New component
+ * 2: Version when the compent will be removed
+ *
+ * Return Value:
+ * Replaced by new component
+ *
+ * Public: No
+ *
+ * Example:
+ * [["ace_sitting", "ace_sitting_enabled"], ["acex_sitting", "acex_sitting_enabled"], "3.7.0"] call ace_common_fnc_deprecateComponent;
+ */
+#include "script_component.hpp"
+
+params ["_oldComponent", "_newComponent", "_version"];
+
+_oldComponent params ["_oldComponentName", "_oldSettingName"];
+_newComponent params ["_newComponentName", "_newSettingName"];
+
+private _isReplacementAvailable = isClass (configFile >> "CfgPatches" >> _newComponentName);
+private _isDeprecatedLoaded = missionNamespace getvariable [_oldSettingName, false];
+private _isReplacementLoaded = missionNamespace getvariable [_newSettingName, false];
+
+if (_isDeprecatedLoaded && {_isReplacementAvailable} && {!_isReplacementLoaded}) then {
+ [_newSettingName, true, true, true] call FUNC(setSetting);
+};
+
+if (_isDeprecatedLoaded && {!_isReplacementLoaded}) then {
+ private _componentVersion = getText (configFile >> "CfgPatches" >> _oldComponentName >> "version");
+ ((_componentVersion splitString ".") apply {parseNumber _x}) params ["_componentMajor", "_componentMinor", "_componentPatch"];
+ ((_version splitString ".") apply {parseNumber _x}) params ["_major", "_minor", "_patch"];
+
+ switch (true) do {
+ case (_componentMajor >= _major && {_componentMinor >= _minor} && {_componentPatch >= _patch}): { // Removed from this version
+ private _message = format[
+ "Component %1 is deprecated. It has been replaced by %2. The component %1 is no longer usable on this version. ", _oldComponentName, _newComponentName, _version];
+ systemChat format["ACE [ERROR] - %1", _message];
+ ACE_LOGERROR(_message);
+ };
+ case (_componentMajor >= _major && {_componentMinor >= _minor-1}): { // Removed the next this version
+ private _message = format[
+ "Component %1 is deprecated. It is replaced by %2. Please disable %1 and make use of %2. "
+ + "The component (%1) will no longer be available from version %3 and later.", _oldComponentName, _newComponentName, _version];
+ systemChat format["ACE [WARNING] - %1", _message];
+ ACE_LOGWARNING(_message);
+ };
+ case (_componentMajor == _major && {_componentMinor >= _minor - 2}): { // we are in a version leading up to removal
+ private _message = format[
+ "Component %1 is deprecated. It is replaced by %2. Please disable %1 and make use of %2. "
+ + "The component (%1) will no longer be available from version %3 and later.", _oldComponentName, _newComponentName, _version];
+ ACE_LOGWARNING(_message);
+ };
+ default {
+ };
+ };
+};
+
+_isReplacementAvailable;
diff --git a/addons/common/functions/fnc_deviceKeyRegisterNew.sqf b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf
index 416eef2c77..ce012fc3aa 100644
--- a/addons/common/functions/fnc_deviceKeyRegisterNew.sqf
+++ b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf
@@ -13,7 +13,7 @@
* None
*
* Example:
- * [(localize "STR_ACE_microdagr_itemName"), QUOTE(PATHTOF(images\microDAGR_item.paa)), _conditionCode, _toggleCode, _closeCode] call ace_common_fnc_deviceKeyRegisterNew
+ * [(localize "STR_ACE_microdagr_itemName"), QPATHTOF(images\microDAGR_item.paa), _conditionCode, _toggleCode, _closeCode] call ace_common_fnc_deviceKeyRegisterNew
*
* Public: No
*/
diff --git a/addons/common/functions/fnc_displayIcon.sqf b/addons/common/functions/fnc_displayIcon.sqf
index c51b3bd454..e4f824791a 100644
--- a/addons/common/functions/fnc_displayIcon.sqf
+++ b/addons/common/functions/fnc_displayIcon.sqf
@@ -14,7 +14,7 @@
* None
*
* Example:
- * ["myID", true, QUOTE(PATHTOF(data\icon_group.paa)), [1,1,1,1], 0] call ace_gui_fnc_displayIcon;
+ * ["myID", true, QPATHTOF(data\icon_group.paa), [1,1,1,1], 0] call ace_gui_fnc_displayIcon;
*
* Public: Yes
*/
@@ -89,11 +89,11 @@ private _refresh = {
if (_show) then {
if ({_x select 0 == _iconId} count _list == 0) then {
- _list pushBack [_iconId, _icon, _color, ACE_time];
+ _list pushBack [_iconId, _icon, _color, CBA_missionTime];
} else {
{
if (_x select 0 == _iconId) exitWith {
- _list set [_forEachIndex, [_iconId, _icon, _color, ACE_time]];
+ _list set [_forEachIndex, [_iconId, _icon, _color, CBA_missionTime]];
};
} forEach _list;
};
@@ -104,7 +104,7 @@ if (_show) then {
if (_timeAlive >= 0) then {
[{
[_this select 0, false, "", [0,0,0], 0] call FUNC(displayIcon);
- }, [_iconId], _timeAlive, _timeAlive] call FUNC(waitAndExecute);
+ }, [_iconId], _timeAlive, _timeAlive] call CBA_fnc_waitAndExecute;
};
} else {
diff --git a/addons/common/functions/fnc_displayText.sqf b/addons/common/functions/fnc_displayText.sqf
index 3c68327535..ee22f6949a 100644
--- a/addons/common/functions/fnc_displayText.sqf
+++ b/addons/common/functions/fnc_displayText.sqf
@@ -25,7 +25,7 @@ if !(typeName _text in ["STRING", "TEXT"]) then {_text = str _text};
GVAR(lastHint) params ["_lastHintTime", "_lastHintPriority"];
-private _time = ACE_time;
+private _time = CBA_missionTime;
if (_time > _lastHintTime + _delay || {_priority >= _lastHintPriority}) then {
hintSilent _text;
@@ -33,5 +33,5 @@ if (_time > _lastHintTime + _delay || {_priority >= _lastHintPriority}) then {
GVAR(lastHint) set [0, _time];
GVAR(lastHint) set [1, _priority];
- [{if ((_this select 0) == GVAR(lastHint) select 0) then {hintSilent ""};}, [_time], _delay, 0] call FUNC(waitAndExecute);
+ [{if ((_this select 0) == GVAR(lastHint) select 0) then {hintSilent ""};}, [_time], _delay, 0] call CBA_fnc_waitAndExecute;
};
diff --git a/addons/common/functions/fnc_displayTextPicture.sqf b/addons/common/functions/fnc_displayTextPicture.sqf
index a0bcb47e11..9ddbf96164 100644
--- a/addons/common/functions/fnc_displayTextPicture.sqf
+++ b/addons/common/functions/fnc_displayTextPicture.sqf
@@ -5,17 +5,22 @@
* Arguments:
* 0: Text
* 1: Image
- * 2: Image color (default: [0, 0, 0, 0])
- * 3: Target Unit. Will only display if target is the player controlled object (default: ACE_player)
+ * 2: Image color (default: [1, 1, 1])
+ * 3: Target Unit. Will only display if target is the player controlled object (default: ACE_player)
+ * 4: Size (default: 2)
*
* Return Value:
* None
*
+ * Example:
+ * ["text", "image", [1, 1, 1], ACE_player, 2] call ace_common_fnc_displayTextPicture
+ * ["text", "image", nil, nil, 3] call ace_common_fnc_displayTextPicture
+ *
* Public: Yes
*/
#include "script_component.hpp"
-params ["_text", "_image", ["_imageColor", [1,1,1]], ["_target", ACE_player]];
+params [["_text", ""], ["_image", "", [""]], ["_imageColor", [1,1,1], [[]]], ["_target", ACE_player, [objNull]], ["_size", 2, [0]]];
if (_target != ACE_player) exitWith {};
@@ -39,6 +44,6 @@ if (typeName _text != "TEXT") then {
_text = parseText format ["%1 ", _text];
};
-_text = composeText [parseText format [" ", _image, _imageColor call BIS_fnc_colorRGBtoHTML], lineBreak, _text];
+_text = composeText [parseText format [" ", _image, _imageColor call BIS_fnc_colorRGBtoHTML], lineBreak, _text];
-[_text, 2] call FUNC(displayTextStructured);
+[_text, _size] call FUNC(displayTextStructured);
diff --git a/addons/common/functions/fnc_displayTextStructured.sqf b/addons/common/functions/fnc_displayTextStructured.sqf
index 9fff7bb056..e952fce9a4 100644
--- a/addons/common/functions/fnc_displayTextStructured.sqf
+++ b/addons/common/functions/fnc_displayTextStructured.sqf
@@ -4,17 +4,20 @@
*
* Arguments:
* 0: Text
- * 1: Size of the textbox (default: 1.5)
- * 2: Target Unit. Will only display if target is the player controlled object (default: ACE_player)
+ * 1: Size of the textbox (default: 1.5)
+ * 2: Target Unit. Will only display if target is the player controlled object (default: ACE_player)
*
* Return Value:
* None
*
+ * Example:
+ *
+ *
* Public: Yes
*/
#include "script_component.hpp"
-params ["_text", ["_size", 1.5], ["_target", ACE_player]];
+params [["_text", ""], ["_size", 1.5, [0]], ["_target", ACE_player, [objNull]]];
if (_target != ACE_player) exitWith {};
diff --git a/addons/common/functions/fnc_dumpPerformanceCounters.sqf b/addons/common/functions/fnc_dumpPerformanceCounters.sqf
index bdc4588b05..afb71b423a 100644
--- a/addons/common/functions/fnc_dumpPerformanceCounters.sqf
+++ b/addons/common/functions/fnc_dumpPerformanceCounters.sqf
@@ -21,7 +21,7 @@ if (!isNil "ACE_PFH_COUNTER") then {
private _isActive = ["ACTIVE", "REMOVED"] select isNil {CBA_common_PFHhandles select (_pfh select 0)};
- diag_log text format ["Registered PFH: id=%1 [%2, delay %3], %4:%5", _pfh select 0, _isActive, _parameters select 1, _pfh select 1, _pfh select 2];
+ diag_log text format ["Registered PFH: id=%1 [%2, delay %3], %4:%5", _pfh select 0, _isActive, _parameters select 1, _pfh select 1, _pfh select 2];
false
} count ACE_PFH_COUNTER;
};
@@ -42,7 +42,7 @@ diag_log text format ["-------------------------------------------"];
if (_iter > 2) then {
_count = _count + 1;
private _delta = (_x select 1) - (_x select 0);
-
+
_total = _total + _delta;
};
@@ -54,7 +54,7 @@ diag_log text format ["-------------------------------------------"];
_averageResult = (_total / _count) * 1000;
// dump results
- diag_log text format ["%1: Average: %2s / %3 = %4ms", _counterEntry select 0, _total, _count, _averageResult];
+ diag_log text format ["%1: Average: %2s / %3 = %4ms", _counterEntry select 0, _total, _count, _averageResult];
} else {
diag_log text format ["%1: No results", _counterEntry select 0];
};
@@ -68,7 +68,7 @@ diag_log text format["-------------------------------------------"];
{
private _delay = _x select 2;
//if(_delay > 0) then { _delay = _delay / 1000; };
-
+
diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)];
} forEach ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER;
diff --git a/addons/common/functions/fnc_execNextFrame.sqf b/addons/common/functions/fnc_execNextFrame.sqf
index 7b3f034c6d..c1c4b81592 100644
--- a/addons/common/functions/fnc_execNextFrame.sqf
+++ b/addons/common/functions/fnc_execNextFrame.sqf
@@ -13,10 +13,6 @@
*/
#include "script_component.hpp"
-params ["_func", "_params"];
+ACE_DEPRECATED("ace_common_fnc_execNextFrame","3.8.0","CBA_fnc_execNextFrame");
-if (diag_frameno != GVAR(nextFrameNo)) then {
- GVAR(nextFrameBufferA) pushBack [_params, _func];
-} else {
- GVAR(nextFrameBufferB) pushBack [_params, _func];
-};
+_this call CBA_fnc_execNextFrame;
diff --git a/addons/common/functions/fnc_findUnloadPosition.sqf b/addons/common/functions/fnc_findUnloadPosition.sqf
index f7155fd87b..c3b0dc3f34 100644
--- a/addons/common/functions/fnc_findUnloadPosition.sqf
+++ b/addons/common/functions/fnc_findUnloadPosition.sqf
@@ -92,6 +92,15 @@ while {_rangeToCheck < _maxDistance} do {
private _point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.1];
private _point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, (_radiusOfItem + 0.5)];
private _testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL];
+ if (((count _testIntersections) == 1) && {isNull ((_testIntersections select 0) select 2)}) then {
+ private _hitGroundASL = (_testIntersections select 0) select 0;
+ private _hitHeightOffset = ((AGLtoASL _roundAGL) select 2) - (_hitGroundASL select 2);
+ private _hit2dOffset = _roundAGL distance2D _hitGroundASL;
+ private _slope = _hitHeightOffset atan2 _hit2dOffset;
+ if (_slope < 25) then { //Ignore ground hit if slope is reasonable
+ _testIntersections = [];
+ };
+ };
if (!(_testIntersections isEqualTo [])) exitWith {
TRACE_2("collision low/high",_roundAGL,_testIntersections);
_roundPointIsValid = false;
diff --git a/addons/common/functions/fnc_fixCollision.sqf b/addons/common/functions/fnc_fixCollision.sqf
index c0cf7b93e7..3b3b16a9f9 100644
--- a/addons/common/functions/fnc_fixCollision.sqf
+++ b/addons/common/functions/fnc_fixCollision.sqf
@@ -19,4 +19,4 @@ if (!local _this) exitWith {};
[_this, "blockDamage", "fixCollision", true] call FUNC(statusEffect_set);
// re-allow damage after 2 seconds
-[{[_this, "blockDamage", "fixCollision", false] call FUNC(statusEffect_set);}, _this, 2] call EFUNC(common,waitAndExecute);
+[{[_this, "blockDamage", "fixCollision", false] call FUNC(statusEffect_set);}, _this, 2] call CBA_fnc_waitAndExecute;
diff --git a/addons/common/functions/fnc_getAllGear.sqf b/addons/common/functions/fnc_getAllGear.sqf
index 715966b176..de6ea62dff 100644
--- a/addons/common/functions/fnc_getAllGear.sqf
+++ b/addons/common/functions/fnc_getAllGear.sqf
@@ -33,7 +33,11 @@
*/
#include "script_component.hpp"
-params ["_unit"];
+params ["_unit", ["_showDeprecated", true]];
+
+if (_showDeprecated) then {
+ ACE_DEPRECATED("ace_common_fnc_getAllGear","3.7.0","getUnitLoadout");
+};
if (isNull _unit) exitWith {[
"",
@@ -60,5 +64,5 @@ if (isNull _unit) exitWith {[
handgunWeapon _unit, handgunItems _unit, handgunMagazine _unit,
assignedItems _unit,
binocular _unit,
- [_unit] call FUNC(binocularMagazine)
+ [_unit] call CBA_fnc_binocularMagazine
]
diff --git a/addons/common/functions/fnc_getConfigType.sqf b/addons/common/functions/fnc_getConfigType.sqf
index 1496cfa2b9..34aaa03172 100644
--- a/addons/common/functions/fnc_getConfigType.sqf
+++ b/addons/common/functions/fnc_getConfigType.sqf
@@ -12,12 +12,6 @@
*/
#include "script_component.hpp"
-params ["_item"];
+ACE_DEPRECATED("ace_common_fnc_getConfigType","3.8.0","CBA_fnc_getItemConfig");
-if (isClass (configFile >> "CfgWeapons" >> _item)) exitWith {"CfgWeapons"};
-
-if (isClass (configFile >> "CfgMagazines" >> _item)) exitWith {"CfgMagazines"};
-
-if (isClass (configFile >> "CfgGlasses" >> _item)) exitWith {"CfgGlasses"};
-
-""
+configName (configHierarchy (_item call CBA_fnc_getItemConfig) param [1, configNull])
diff --git a/addons/common/functions/fnc_getConfigTypeObject.sqf b/addons/common/functions/fnc_getConfigTypeObject.sqf
index 6186ad6bff..92a6d43a42 100644
--- a/addons/common/functions/fnc_getConfigTypeObject.sqf
+++ b/addons/common/functions/fnc_getConfigTypeObject.sqf
@@ -12,10 +12,6 @@
*/
#include "script_component.hpp"
-params ["_object"];
+ACE_DEPRECATED("ace_common_fnc_getConfigTypeObject","3.8.0","CBA_fnc_getObjectConfig");
-if (isClass (configFile >> "CfgVehicles" >> _object)) exitWith {"CfgVehicles"};
-
-if (isClass (configFile >> "CfgAmmo" >> _object)) exitWith {"CfgAmmo"};
-
-""
+configName (configHierarchy (_item call CBA_fnc_getObjectConfig) param [1, configNull])
diff --git a/addons/common/functions/fnc_getItemType.sqf b/addons/common/functions/fnc_getItemType.sqf
index d3eb511949..eb5015e20a 100644
--- a/addons/common/functions/fnc_getItemType.sqf
+++ b/addons/common/functions/fnc_getItemType.sqf
@@ -15,9 +15,11 @@
params ["_item"];
-private _cfgType = [_item] call FUNC(getConfigType);
+private _config = _item call CBA_fnc_getItemConfig;
-if (_cfgType == "") exitWith {["", ""]};
+if (isNull _config) exitWith {["", ""]};
+
+private _cfgType = configName ((configHierarchy _config) param [1, configNull]);
if (_cfgType == "CfgGlasses") exitWith {["item", "glasses"]};
diff --git a/addons/common/functions/fnc_getMGRSdata.sqf b/addons/common/functions/fnc_getMGRSdata.sqf
index ee6d1e11dc..44fc204638 100644
--- a/addons/common/functions/fnc_getMGRSdata.sqf
+++ b/addons/common/functions/fnc_getMGRSdata.sqf
@@ -22,27 +22,81 @@ private _long = getNumber (configFile >> "CfgWorlds" >> _map >> "longitude");
private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude");
private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset");
-if (_map in ["Chernarus", "Bootcamp_ACR", "Woodland_ACR", "utes"]) then { _lat = 50; _altitude = 0; };
-if (_map in ["Altis", "Stratis"]) then { _lat = 40; _altitude = 0; };
-if (_map in ["Takistan", "Zargabad", "Mountains_ACR"]) then { _lat = 35; _altitude = 2000; };
-if (_map in ["Shapur_BAF", "ProvingGrounds_PMC"]) then { _lat = 35; _altitude = 100; };
+_map = toLower _map;
+if (_map in ["abbottabad"]) then { _lat = 34; _altitude = 1256; }; //Abbottabad elevation 1256m (Wikipedia)
+if (_map in ["abramia"]) then { _lat = 60; _altitude = 0; };
+if (_map in ["af_kandahar_province"]) then { _lat = 42; _altitude = 0; };
+if (_map in ["altis"]) then { _lat = 40; _altitude = 0; };
+if (_map in ["angel"]) then { _lat = 38; _altitude = 0; };
+if (_map in ["anim_helvantis_v2"]) then { _lat = 50; _altitude = 0; };
+if (_map in ["australia"]) then { _lat = -25; _altitude = 0; };
+if (_map in ["bootcamp_acr"]) then { _lat = 50; _altitude = 0; };
+if (_map in ["bornholm"]) then { _lat = 55; _altitude = 0; };
+if (_map in ["bozcaada"]) then { _lat = 40; _altitude = 0; };
+if (_map in ["caribou"]) then { _lat = 68; _altitude = 0; };
+if (_map in ["catalina"]) then { _lat = 33; _altitude = 0; };
+if (_map in ["chernarus", "chernarus_summer", "chernarus_winter"]) then { _lat = 50; _altitude = 0; };
+if (_map in ["chernobylzone", "chernobylzonea2"]) then { _lat = 51; _altitude = 0; };
+if (_map in ["clafghan"]) then { _lat = 34; _altitude = 640; };
+if (_map in ["dakrong"]) then { _lat = 17; _altitude = 0; }; //Unsung Mod
+if (_map in ["desert_e"]) then { _lat = 40; _altitude = 800; };
+if (_map in ["dya"]) then { _lat = 34; _altitude = 110; }; //Diyala Iraq - default elevationOffset
+if (_map in ["esseker"]) then { _lat = 43; _altitude = 2000; };
+if (_map in ["evergreen"]) then { _lat = 41; _altitude = 0; }; //Burgazada, Turkey - default elevationOffset
if (_map in ["fallujah"]) then { _lat = 33; _altitude = 0; };
-if (_map in ["fata", "Abbottabad"]) then { _lat = 30; _altitude = 1000; };
-if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; };
-if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; };
-if (_map in ["Bornholm"]) then { _lat = 55; _altitude = 0; };
-if (_map in ["Imrali"]) then { _lat = 40; _altitude = 0; };
-if (_map in ["Caribou"]) then { _lat = 68; _altitude = 0; };
-if (_map in ["Namalsk"]) then { _lat = 65; _altitude = 0; };
-if (_map in ["MCN_Aliabad"]) then { _lat = 36; _altitude = 0; };
-if (_map in ["Clafghan"]) then { _lat = 34; _altitude = 640; };
-if (_map in ["Sangin", "hellskitchen"]) then { _lat = 32; _altitude = 0; };
-if (_map in ["Sara"]) then { _lat = 40; _altitude = 0; };
+if (_map in ["fata"]) then { _lat = 33; _altitude = 1347; };
+if (_map in ["gorgona"]) then { _lat = 43; _altitude = 0; };
+if (_map in ["hellskitchen", "hellskitchens"]) then { _lat = 32; _altitude = 900; }; //Sangin summer, Sangin winter - Sangin elevation 888m (Wikipedia)
+if (_map in ["hindukush"]) then { _lat = 36; _altitude = 0; };
+if (_map in ["imrali", "imralispring"]) then { _lat = 40; _altitude = 0; };
+if (_map in ["intro"]) then { _lat = 40; _altitude = 0; };
+if (_map in ["isladuala3"]) then { _lat = -19; _altitude = 0; };
+if (_map in ["jacobi"]) then { _lat = 34; _altitude = 2000; }; //default elevationOffset
+if (_map in ["kapaulio"]) then { _lat = 0; _altitude = 0; };
+if (_map in ["kerama"]) then { _lat = 26; _altitude = 0; }; //Kerama Islands, Japan - default elevationOffset
+if (_map in ["kholm"]) then { _lat = 36; _altitude = 0; };
+if (_map in ["koplic"]) then { _lat = 42; _altitude = 0; };
+if (_map in ["kunduz"]) then { _lat = 37; _altitude = 0; };
+if (_map in ["lingor", "lingor3"]) then { _lat = -4; _altitude = 0; };
+if (_map in ["lost", "lostw"]) then { _lat = 60; _altitude = 0; };
+if (_map in ["mcn_aliabad"]) then { _lat = 36; _altitude = 0; };
+if (_map in ["malvinas"]) then { _lat = -52; _altitude = 0; };
+if (_map in ["namalsk"]) then { _lat = 65; _altitude = 0; };
+if (_map in ["mef_alaska"]) then { _lat = 60; _altitude = 5; };
+if (_map in ["mountains_acr"]) then { _lat = 35; _altitude = 2000; };
+if (_map in ["napf", "napfwinter"]) then { _lat = 47; _altitude = 0; };
+if (_map in ["panthera3"]) then { _lat = 46; _altitude = 0; };
+if (_map in ["pianosa_aut"]) then { _lat = 43; _altitude = 0; }; //Pianosa, Italy - default elevationOffset
+if (_map in ["pja305"]) then { _lat = 0; _altitude = 0; }; //G.O.S N'Ziwasogo
+if (_map in ["pja306"]) then { _lat = 35; _altitude = 0; }; //G.O.S Kalu Khan
+if (_map in ["pja307"]) then { _lat = 17; _altitude = 0; }; //F.S.F Daryah
+if (_map in ["pja308"]) then { _lat = 36; _altitude = 0; }; //G.O.S Gunkizli
+if (_map in ["pja310"]) then { _lat = 36; _altitude = 0; }; //G.O.S Al Rayak
+if (_map in ["pja312"]) then { _lat = 16; _altitude = 0; }; //G.O.S Song Bin Tanh
+if (_map in ["porquerolles"]) then { _lat = 43; _altitude = 0; };
+if (_map in ["porto"]) then { _lat = 40; _altitude = 0; };
+if (_map in ["provinggrounds_pmc"]) then { _lat = 35; _altitude = 100; };
if (_map in ["reshmaan"]) then { _lat = 35; _altitude = 2000; };
-if (_map in ["Thirsk"]) then { _lat = 65; _altitude = 0; };
-if (_map in ["lingor"]) then { _lat = -4; _altitude = 0; };
-if (_map in ["Panthera3"]) then { _lat = 46; _altitude = 0; };
-if (_map in ["Kunduz"]) then { _lat = 37; _altitude = 400; };
+if (_map in ["sara", "sara_dbe1"]) then { _lat = 40; _altitude = 0; };
+if (_map in ["saralite"]) then { _lat = 40; _altitude = 0; };
+if (_map in ["sb3"]) then { _lat = 53; _altitude = 25; }; //TrpUebPl Einfelde Nord (Munster North Training Area, Germany) - default elevationOffset
+if (_map in ["shapur_baf"]) then { _lat = 35; _altitude = 100; };
+if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; };
+if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; };
+if (_map in ["stratis"]) then { _lat = 40; _altitude = 0; };
+if (_map in ["sugarlake"]) then { _lat = 29; _altitude = 0; };
+if (_map in ["takistan"]) then { _lat = 35; _altitude = 2000; };
+if (_map in ["thirsk"]) then { _lat = 65; _altitude = 0; };
+if (_map in ["tilos"]) then { _lat = 36; _altitude = 0; };
+if (_map in ["utes"]) then { _lat = 50; _altitude = 0; };
+if (_map in ["vt5"]) then { _lat = 61; _altitude = 100; }; //Vt5, Suomi Finland - default elevationOffset
+if (_map in ["wake"]) then { _lat = 19; _altitude = 0; };
+if (_map in ["waziristan"]) then { _lat = 33; _altitude = 0; };
+if (_map in ["wintermap"]) then { _lat = 61; _altitude = 0; }; //Nordkvingo - default elevationOffset
+if (_map in ["wintertown", "wintertowna3"]) then { _lat = 39; _altitude = 600; }; //U.S. state Kansas mean elevation 610m (Wikipedia)
+if (_map in ["woodland_acr"]) then { _lat = 50; _altitude = 0; };
+if (_map in ["xcam_prototype"]) then { _lat = 35; _altitude = 0; };
+if (_map in ["zargabad"]) then { _lat = 35; _altitude = 2000; };
private _UTM = [_long,_lat] call BIS_fnc_posDegToUTM;
private _easting = _UTM select 0;
diff --git a/addons/common/functions/fnc_getTurretCommander.sqf b/addons/common/functions/fnc_getTurretCommander.sqf
index e73795e148..3e7f09215f 100644
--- a/addons/common/functions/fnc_getTurretCommander.sqf
+++ b/addons/common/functions/fnc_getTurretCommander.sqf
@@ -14,19 +14,4 @@
params [["_vehicle", objNull, [objNull]]];
-private _turrets = allTurrets [_vehicle, true];
-
-private _turret = [];
-
-{
- private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
-
- _config = [_config, _x] call FUNC(getTurretConfigPath);
-
- if (getNumber (_config >> "primaryObserver") == 1) exitWith {
- _turret = _x;
- };
- false
-} count _turrets;
-
-_turret
+fullCrew [_vehicle, "commander", true] apply {_x select 3} param [0, []] // return
diff --git a/addons/common/functions/fnc_getTurretCopilot.sqf b/addons/common/functions/fnc_getTurretCopilot.sqf
index 6161f5c4cc..49002cc40e 100644
--- a/addons/common/functions/fnc_getTurretCopilot.sqf
+++ b/addons/common/functions/fnc_getTurretCopilot.sqf
@@ -14,19 +14,6 @@
params [["_vehicle", objNull, [objNull]]];
-private _turrets = allTurrets [_vehicle, true];
-
-private _turret = [];
-
-{
- private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
-
- _config = [_config, _x] call FUNC(getTurretConfigPath);
-
- if (getNumber (_config >> "isCopilot") == 1 && {getNumber (_config >> "primaryGunner") != 1} && {getNumber (_config >> "primaryObserver") != 1}) exitWith {
- _turret = _x;
- };
- false
-} count _turrets;
-
-_turret
+fullCrew [_vehicle, "turret", true] apply {_x select 3} select {
+ getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") == 1
+} param [0, []] // return
diff --git a/addons/common/functions/fnc_getTurretGunner.sqf b/addons/common/functions/fnc_getTurretGunner.sqf
index 6f59798cc6..4a26e2c03d 100644
--- a/addons/common/functions/fnc_getTurretGunner.sqf
+++ b/addons/common/functions/fnc_getTurretGunner.sqf
@@ -14,19 +14,4 @@
params [["_vehicle", objNull, [objNull]]];
-private _turrets = allTurrets [_vehicle, true];
-
-private _turret = [];
-
-{
- private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
-
- _config = [_config, _x] call FUNC(getTurretConfigPath);
-
- if (getNumber (_config >> "primaryGunner") == 1) exitWith {
- _turret = _x;
- };
- false
-} count _turrets;
-
-_turret
+fullCrew [_vehicle, "gunner", true] apply {_x select 3} param [0, []] // return
diff --git a/addons/common/functions/fnc_getTurrets.sqf b/addons/common/functions/fnc_getTurrets.sqf
index 229f3ab1f7..0479580764 100644
--- a/addons/common/functions/fnc_getTurrets.sqf
+++ b/addons/common/functions/fnc_getTurrets.sqf
@@ -8,12 +8,14 @@
* Return Value:
* Turret Indecies
*
- * Public: Yes
+ * Public: No
*
* Note: It's advised to use allTurrets [_vehicle, true] instead whenever possible
*/
#include "script_component.hpp"
+ACE_DEPRECATED("ace_common_fnc_getTurrets","3.7.0","allTurrets [_vehicle, true]");
+
params ["_type"];
private _varName = format [QGVAR(CachedTurrets_%1), _type];
diff --git a/addons/common/functions/fnc_getTurretsFFV.sqf b/addons/common/functions/fnc_getTurretsFFV.sqf
index 8c471824cf..5c36e20197 100644
--- a/addons/common/functions/fnc_getTurretsFFV.sqf
+++ b/addons/common/functions/fnc_getTurretsFFV.sqf
@@ -14,19 +14,4 @@
params [["_vehicle", objNull, [objNull]]];
-private _turrets = allTurrets [_vehicle, true];
-
-private _turret = [];
-
-{
- private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
-
- _config = [_config, _x] call FUNC(getTurretConfigPath);
-
- if (getNumber (_config >> "isPersonTurret") == 1) then {
- _turret pushBack _x;
- };
- false
-} count _turrets;
-
-_turret
+fullCrew [_vehicle, "turret", true] select {_x select 4} apply {_x select 3} // return
diff --git a/addons/common/functions/fnc_getTurretsOther.sqf b/addons/common/functions/fnc_getTurretsOther.sqf
index 408a5529d5..ef2a1278dc 100644
--- a/addons/common/functions/fnc_getTurretsOther.sqf
+++ b/addons/common/functions/fnc_getTurretsOther.sqf
@@ -14,24 +14,6 @@
params [["_vehicle", objNull, [objNull]]];
-private _turrets = allTurrets [_vehicle, true];
-
-private _turret = [];
-
-{
- private _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
-
- _config = [_config, _x] call FUNC(getTurretConfigPath);
-
- if (
- getNumber (_config >> "isCopilot") != 1
- && {getNumber (_config >> "primaryGunner") != 1}
- && {getNumber (_config >> "primaryObserver") != 1}
- && {getNumber (_config >> "isPersonTurret") != 1}
- ) then {
- _turret pushBack _x;
- };
- false
-} count _turrets;
-
-_turret
+fullCrew [_vehicle, "turret", true] select {!(_x select 4)} apply {_x select 3} select {
+ getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") != 1
+} // return
diff --git a/addons/common/functions/fnc_getWeaponMuzzles.sqf b/addons/common/functions/fnc_getWeaponMuzzles.sqf
index d75a01f2e3..e252d879f9 100644
--- a/addons/common/functions/fnc_getWeaponMuzzles.sqf
+++ b/addons/common/functions/fnc_getWeaponMuzzles.sqf
@@ -18,7 +18,7 @@ private _muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles")
{
if (_x == "this") then {
- _muzzles set [_forEachIndex, _weapon];
+ _muzzles set [_forEachIndex, configName (configFile >> "CfgWeapons" >> _weapon)];
};
} forEach _muzzles;
diff --git a/addons/common/functions/fnc_getWeaponState.sqf b/addons/common/functions/fnc_getWeaponState.sqf
index e7b7bb80ec..73e5897236 100644
--- a/addons/common/functions/fnc_getWeaponState.sqf
+++ b/addons/common/functions/fnc_getWeaponState.sqf
@@ -4,7 +4,7 @@
*
* Arguments:
* 0: unit
- * 1: weapon
+ * 1: weapon (optional, default: units current weapon)
*
* Return Value:
* 0: Attachements
@@ -16,21 +16,19 @@
*/
#include "script_component.hpp"
-params ["_unit", "_weapon"];
+params [["_unit", objNull, [objNull]], ["_weapon", nil, [""]]];
+
+if (isNil "_weapon") then {
+ _weapon = currentWeapon _unit;
+};
+
+private _attachments = [_unit weaponAccessories _weapon] param [0, ["","","",""]];
private _muzzles = _weapon call FUNC(getWeaponMuzzles);
-private _weaponInfo = [["","","",""], primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit] select ((["", primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] find _weapon) max 0);
-
// get loaded magazines and ammo
-private _magazines = [];
-private _ammo = [];
-
-{
- _magazines pushBack "";
- _ammo pushBack 0;
- false
-} count _muzzles;
+private _magazines = _muzzles apply {""};
+private _ammo = _muzzles apply {0};
{
if (_x select 2) then {
@@ -44,6 +42,4 @@ private _ammo = [];
false
} count magazinesAmmoFull _unit;
-_weaponInfo append [_muzzles, _magazines, _ammo];
-
-_weaponInfo
+[_attachments, _muzzles, _magazines, _ammo];
diff --git a/addons/common/functions/fnc_goKneeling.sqf b/addons/common/functions/fnc_goKneeling.sqf
index 4ee502f929..9e7aed708a 100644
--- a/addons/common/functions/fnc_goKneeling.sqf
+++ b/addons/common/functions/fnc_goKneeling.sqf
@@ -1,6 +1,6 @@
/*
* Author: commy2
- * Move unit to kneeling position.
+ * Move unit to kneeling position (only if not yet prone).
*
* Arguments:
* 0: Unit
@@ -14,7 +14,8 @@
params ["_unit"];
-if (stance _unit == "PRONE") exitWith {};
+// Animation changes even inside vehicle post-1.60
+if (stance _unit == "PRONE" || {vehicle ACE_player != ACE_player}) exitWith {};
[
_unit,
diff --git a/addons/common/functions/fnc_handleEngine.sqf b/addons/common/functions/fnc_handleEngine.sqf
new file mode 100644
index 0000000000..829ad5bb49
--- /dev/null
+++ b/addons/common/functions/fnc_handleEngine.sqf
@@ -0,0 +1,19 @@
+/*
+ * Author: BaerMitUmlaut
+ * Blocks turning on the vehicles engine if set by the status effect handler.
+ *
+ * Arguments:
+ * 0: Vehicle
+ * 1: Engine state
+ *
+ * Return Value:
+ * None
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+params ["_vehicle", "_engineOn"];
+
+if (local _vehicle && {_engineOn} && {_vehicle getVariable [QGVAR(blockEngine), false]}) then {
+ _vehicle engineOn false;
+};
diff --git a/addons/common/functions/fnc_hashHasKey.sqf b/addons/common/functions/fnc_hashHasKey.sqf
index b2978f9cc4..97998c1298 100644
--- a/addons/common/functions/fnc_hashHasKey.sqf
+++ b/addons/common/functions/fnc_hashHasKey.sqf
@@ -12,7 +12,7 @@
*/
#include "script_component.hpp"
-// diag_log text format["%1 HASH HAS KEY: %2", ACE_diagTime, _this];
+// diag_log text format["%1 HASH HAS KEY: %2", diag_tickTime, _this];
params ["_hash", "_key"];
diff --git a/addons/common/functions/fnc_hashSet.sqf b/addons/common/functions/fnc_hashSet.sqf
index 10e2881c10..0890578857 100644
--- a/addons/common/functions/fnc_hashSet.sqf
+++ b/addons/common/functions/fnc_hashSet.sqf
@@ -12,7 +12,7 @@
*/
#include "script_component.hpp"
-// diag_log text format["%1 HASH SET: %2", ACE_diagTime, _this];
+// diag_log text format["%1 HASH SET: %2", diag_tickTime, _this];
params ["_hash", "_key", "_val"];
diff --git a/addons/common/functions/fnc_loadPerson.sqf b/addons/common/functions/fnc_loadPerson.sqf
index 3071ffbd47..6c728134d1 100644
--- a/addons/common/functions/fnc_loadPerson.sqf
+++ b/addons/common/functions/fnc_loadPerson.sqf
@@ -21,33 +21,18 @@ private _vehicle = objNull;
if (!([_caller, _unit, ["isNotDragging", "isNotCarrying"]] call FUNC(canInteractWith)) || {_caller == _unit}) exitWith {_vehicle};
-private _loadcar = nearestObject [_unit, "Car"];
+private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F"], 10];
-if (_unit distance _loadcar <= 10) then {
- _vehicle = _loadcar;
-} else {
- private _loadair = nearestObject [_unit, "Air"];
-
- if (_unit distance _loadair <= 10) then {
- _vehicle = _loadair;
- } else {
- private _loadtank = nearestObject [_unit, "Tank"];
-
- if (_unit distance _loadtank <= 10) then {
- _vehicle = _loadtank;
- } else {
- private _loadboat = nearestObject [_unit, "Ship_F"];
-
- if (_unit distance _loadboat <= 10) then {
- _vehicle = _loadboat;
- };
- };
+{
+ TRACE_1("",_x);
+ if ((_x emptyPositions "cargo" > 0) || {_x emptyPositions "gunner" > 0}) exitWith {
+ _vehicle = _x;
};
-};
+} forEach _nearVehicles;
if (!isNull _vehicle) then {
[_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide);
- [[_unit, _vehicle, _caller], QFUNC(loadPersonLocal), _unit, false] call FUNC(execRemoteFnc);
+ ["loadPersonEvent", _unit, [_unit, _vehicle, _caller]] call FUNC(objectEvent);
};
_vehicle
diff --git a/addons/common/functions/fnc_onAnswerRequest.sqf b/addons/common/functions/fnc_onAnswerRequest.sqf
index d88969b059..e462a4bbf8 100644
--- a/addons/common/functions/fnc_onAnswerRequest.sqf
+++ b/addons/common/functions/fnc_onAnswerRequest.sqf
@@ -20,7 +20,7 @@ if (!isNil "_info") then {
_info params ["_caller", "_target", "_requestID", "_requestMessage", "_callBack"];
private _replyParams = [_info, _accepted];
- [_replyParams, QFUNC(requestCallback), _caller, false] call FUNC(execRemoteFnc);
+ [QGVAR(requestCallback), _caller, _replyParams] call FUNC(objectEvent);
_unit setVariable [_id, nil];
};
diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf
index e842590f35..d8503f5223 100644
--- a/addons/common/functions/fnc_progressBar.sqf
+++ b/addons/common/functions/fnc_progressBar.sqf
@@ -34,7 +34,7 @@ createDialog QGVAR(ProgressBar_Dialog);
//Adjust position based on user setting:
private _ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle));
-_ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
+_ctrlPos set [1, ((0 + 29 * GVAR(settingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlSetPosition _ctrlPos;
(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlCommit 0;
@@ -46,7 +46,7 @@ _ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW /
[{
(_this select 0) params ["_args", "_onFinish", "_onFail", "_condition", "_player", "_startTime", "_totalTime", "_exceptions"];
- private _elapsedTime = ACE_time - _startTime;
+ private _elapsedTime = CBA_missionTime - _startTime;
private _errorCode = -1;
// this does not check: target fell unconscious, target died, target moved inside vehicle / left vehicle, target moved outside of players range, target moves at all.
@@ -97,4 +97,4 @@ _ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW /
//Update Progress Bar (ratio of elepased:total)
(uiNamespace getVariable QGVAR(ctrlProgressBar)) progressSetPosition (_elapsedTime / _totalTime);
};
-}, 0, [_args, _onFinish, _onFail, _condition, _player, ACE_time, _totalTime, _exceptions]] call CBA_fnc_addPerFrameHandler;
+}, 0, [_args, _onFinish, _onFail, _condition, _player, CBA_missionTime, _totalTime, _exceptions]] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/common/functions/fnc_receiveRequest.sqf b/addons/common/functions/fnc_receiveRequest.sqf
index 75f684f5dd..1bb48428df 100644
--- a/addons/common/functions/fnc_receiveRequest.sqf
+++ b/addons/common/functions/fnc_receiveRequest.sqf
@@ -45,7 +45,7 @@ GVAR(RECIEVE_REQUEST_ADD_ACTION_DECLINE) = _target addAction ["Decline", compile
GVAR(RECIEVE_REQUEST_ID_KEY_BINDING) = _requestID;
-GVAR(RECIEVE_REQUEST_TIME_OUT_SCRIPT) = [ACE_time, _target, _requestID] spawn { // @todo
+GVAR(RECIEVE_REQUEST_TIME_OUT_SCRIPT) = [CBA_missionTime, _target, _requestID] spawn { // @todo
params ["_time", "_target", "_requestID"];
_time = _time + 40;
@@ -55,7 +55,7 @@ GVAR(RECIEVE_REQUEST_TIME_OUT_SCRIPT) = [ACE_time, _target, _requestID] spawn {
waitUntil {
_id = _target getVariable _requestID;
- (ACE_time > _time || isNil "_id")
+ (CBA_missionTime > _time || isNil "_id")
};
_target setVariable [_requestID, nil];
diff --git a/addons/common/functions/fnc_removeBinocularMagazine.sqf b/addons/common/functions/fnc_removeBinocularMagazine.sqf
index 487295ccc3..4f1e0fcdd6 100644
--- a/addons/common/functions/fnc_removeBinocularMagazine.sqf
+++ b/addons/common/functions/fnc_removeBinocularMagazine.sqf
@@ -15,13 +15,6 @@
*/
#include "script_component.hpp"
-params [["_unit", objNull, [objNull]]];
+ACE_DEPRECATED("ace_common_fnc_removeBinocularMagazine","3.8.0","CBA_fnc_removeBinocularMagazine");
-private _binocular = binocular _unit;
-private _selectBinocular = currentWeapon _unit == _binocular;
-
-_unit addWeapon _binocular;
-
-if (_selectBinocular) then {
- _unit selectWeapon _binocular;
-};
+_this call CBA_fnc_removeBinocularMagazine
diff --git a/addons/common/functions/fnc_removeSyncedEventHandler.sqf b/addons/common/functions/fnc_removeSyncedEventHandler.sqf
index 126bf0b70f..23803acdd1 100644
--- a/addons/common/functions/fnc_removeSyncedEventHandler.sqf
+++ b/addons/common/functions/fnc_removeSyncedEventHandler.sqf
@@ -15,7 +15,7 @@
params ["_name"];
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
- ACE_LOGERROR("Synced event key not found.");
+ ACE_LOGERROR_1("Synced event key [%1] not found (removeSyncedEventHandler).", _name);
false
};
diff --git a/addons/common/functions/fnc_sendRequest.sqf b/addons/common/functions/fnc_sendRequest.sqf
index c8d2ef7e2b..6df60cf24d 100644
--- a/addons/common/functions/fnc_sendRequest.sqf
+++ b/addons/common/functions/fnc_sendRequest.sqf
@@ -20,7 +20,7 @@ params ["_caller", "_target", "_requestID", "_requestMessage", "_callBack"];
if (isPlayer _target) then {
// Pass request on to target locality for player accept/decline.
- [[_caller, _target, _requestID, _requestMessage, _callBack], QFUNC(receiveRequest), _target, false] call FUNC(execRemoteFnc);
+ [QGVAR(receiveRequest), _target, [_caller, _target, _requestID, _requestMessage, _callBack]] call FUNC(objectEvent);
} else {
// accept it, since it's an AI.
[_caller, _target, true] call compile _callBack;
diff --git a/addons/common/functions/fnc_serverLog.sqf b/addons/common/functions/fnc_serverLog.sqf
index 2525f81c95..ca4ba69f5d 100644
--- a/addons/common/functions/fnc_serverLog.sqf
+++ b/addons/common/functions/fnc_serverLog.sqf
@@ -20,5 +20,5 @@ params [["_msg", "", [""]]];
if (isServer) then {
diag_log text _msg;
} else {
- [_this, QFUNC(serverLog), 1] call FUNC(execRemoteFnc);
+ [QGVAR(serverLog), _this] call FUNC(serverEvent);
};
diff --git a/addons/common/functions/fnc_setAllGear.sqf b/addons/common/functions/fnc_setAllGear.sqf
index 152eb4fd60..6334991796 100644
--- a/addons/common/functions/fnc_setAllGear.sqf
+++ b/addons/common/functions/fnc_setAllGear.sqf
@@ -18,6 +18,8 @@
*/
#include "script_component.hpp"
+ACE_DEPRECATED("ace_common_fnc_setAllGear","3.7.0","setUnitLoadout");
+
params ["_unit", "_allGear", ["_clearAttachments", false], ["_clearBackpack", false]];
if (!local _unit) exitWith {
diff --git a/addons/common/functions/fnc_setHearingCapability.sqf b/addons/common/functions/fnc_setHearingCapability.sqf
index 7bd375a58b..5b1e7a5a3a 100644
--- a/addons/common/functions/fnc_setHearingCapability.sqf
+++ b/addons/common/functions/fnc_setHearingCapability.sqf
@@ -5,48 +5,44 @@
* Arguments:
* 0: id
* 1: settings
- * 2: add (default: true)
+ * 2: add [true] OR remove [false] (default: true)
*
* Return Value:
* None
*
- * Public: Yes
+ * Example:
+ * ["earwax", 0.5, true] call ace_common_fnc_setHearingCapability
*
- * Note: uses player
+ * Public: Yes
*/
#include "script_component.hpp"
-params ["_id", "_settings", ["_add", true]];
-
-private _map = missionNamespace getVariable [QGVAR(setHearingCapabilityMap),[]];
+params ["_id", "_setting", ["_add", true]];
private _exists = false;
-
-{
- if (_id == _x select 0) exitWith {
- _exists = true;
- if (_add) then {
- _x set [1, _settings];
- } else {
- _map set [_forEachIndex, 0];
- _map = _map - [0];
- };
- };
-} forEach _map;
-
-if (!_exists && _add) then {
- _map pushBack [_id, _settings];
-};
-
-missionNamespace setVariable [QGVAR(setHearingCapabilityMap), _map];
-
-// find lowest volume
private _lowestVolume = 1;
-{
- _lowestVolume = (_x select 1) min _lowestVolume;
- false
-} count _map;
+GVAR(setHearingCapabilityMap) = GVAR(setHearingCapabilityMap) select {
+ _x params ["_xID", "_xSetting"];
+ if (_id == _xID) then {
+ _exists = true;
+ if (_add) then {
+ _x set [1, _setting];
+ _lowestVolume = _lowestVolume min _setting;
+ true
+ } else {
+ false
+ };
+ } else {
+ _lowestVolume = _lowestVolume min _xSetting;
+ true
+ };
+};
+
+if (!_exists && _add) then {
+ _lowestVolume = _lowestVolume min _setting;
+ GVAR(setHearingCapabilityMap) pushBack [_id, _setting];
+};
// in game sounds
0 fadeSound _lowestVolume;
@@ -54,5 +50,5 @@ private _lowestVolume = 1;
0 fadeMusic _lowestVolume;
// Set Radio mod variables.
-player setVariable ["tf_globalVolume", _lowestVolume];
+ACE_player setVariable ["tf_globalVolume", _lowestVolume];
if (!isNil "acre_api_fnc_setGlobalVolume") then { [_lowestVolume^0.33] call acre_api_fnc_setGlobalVolume; };
diff --git a/addons/common/functions/fnc_setName.sqf b/addons/common/functions/fnc_setName.sqf
index b9ecbdc3a6..1b2b515ec2 100644
--- a/addons/common/functions/fnc_setName.sqf
+++ b/addons/common/functions/fnc_setName.sqf
@@ -19,13 +19,7 @@ if (isNull _unit || {!alive _unit}) exitWith {};
if (_unit isKindOf "CAManBase") then {
private _sanitizedName = [name _unit, true] call FUNC(sanitizeString);
private _rawName = [name _unit, false] call FUNC(sanitizeString);
-
- //Debug Testing Code (with html tags):
- // private _sanitizedName = ["Name", true] call FUNC(sanitizeString);
- // private _rawName = ["Name", false] call FUNC(sanitizeString);
-
- //if (_name != _unit getVariable ["ACE_Name", ""]) then {
+
_unit setVariable ["ACE_Name", _sanitizedName, true];
_unit setVariable ["ACE_NameRaw", _rawName, true];
- //};
};
diff --git a/addons/common/functions/fnc_setVariablePublic.sqf b/addons/common/functions/fnc_setVariablePublic.sqf
index bf6b35a862..1cfba0a422 100644
--- a/addons/common/functions/fnc_setVariablePublic.sqf
+++ b/addons/common/functions/fnc_setVariablePublic.sqf
@@ -50,4 +50,4 @@ TRACE_2("Starting Embargo", _varName, _delay);
if (!(_value isEqualTo _curValue)) then {
_this call FUNC(setVariablePublic);
};
-}, _this, _delay] call FUNC(waitAndExecute);
+}, _this, _delay] call CBA_fnc_waitAndExecute;
diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf
index 4ed8107330..c752d1eba2 100644
--- a/addons/common/functions/fnc_syncedEvent.sqf
+++ b/addons/common/functions/fnc_syncedEvent.sqf
@@ -17,7 +17,7 @@
params ["_name", "_args", ["_ttl", 0]];
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
- ACE_LOGERROR("Synced event key not found.");
+ ACE_LOGERROR_1("Synced event key [%1] not found (syncedEvent).", _name);
false
};
diff --git a/addons/common/functions/fnc_syncedEventPFH.sqf b/addons/common/functions/fnc_syncedEventPFH.sqf
index 62df8f10a7..d5a2623cd8 100644
--- a/addons/common/functions/fnc_syncedEventPFH.sqf
+++ b/addons/common/functions/fnc_syncedEventPFH.sqf
@@ -34,7 +34,7 @@ if (!isServer) exitWith {false};
if (_globalEventTTL isEqualType {}) then {
_ttlReturn = [_eventTime, _eventEntry] call _globalEventTTL;
} else {
- _ttlReturn = call {_globalEventTTL < 1 || {ACE_diagTime < (_eventEntry select 0) + _globalEventTTL}};
+ _ttlReturn = call {_globalEventTTL < 1 || {diag_tickTime < (_eventEntry select 0) + _globalEventTTL}};
};
if (_ttlReturn) then {
@@ -44,7 +44,7 @@ if (!isServer) exitWith {false};
if (_eventTTL isEqualType {}) then {
_ttlReturn = [_eventTime, _eventEntry] call _eventTTL;
} else {
- _ttlReturn = call {_eventTTL < 1 || {ACE_diagTime < _time + _eventTTL}};
+ _ttlReturn = call {_eventTTL < 1 || {diag_tickTime < _time + _eventTTL}};
};
};
diff --git a/addons/common/functions/fnc_throttledPublicVariable.sqf b/addons/common/functions/fnc_throttledPublicVariable.sqf
index 67cfc50f9a..3aaa3c8f47 100644
--- a/addons/common/functions/fnc_throttledPublicVariable.sqf
+++ b/addons/common/functions/fnc_throttledPublicVariable.sqf
@@ -25,7 +25,7 @@ if (isNil QGVAR(publishSchedId)) then {
GVAR(publishNextTime) = 1e7;
GVAR(publishSchedId) = [{
- if (ACE_diagTime > GVAR(publishNextTime)) then {
+ if (diag_tickTime > GVAR(publishNextTime)) then {
{
_x params [_unit, _varName];
_unit setVariable [_varName, _unit getVariable _varName, true];
@@ -41,8 +41,8 @@ if (isNil QGVAR(publishSchedId)) then {
// If the variable is not on the list
if (GVAR(publishVarNames) find [_unit, _varName] == -1) exitWith {
GVAR(publishVarNames) pushBack [_unit, _varName];
- GVAR(publishNextTime) = GVAR(publishNextTime) min (ACE_diagTime + _maxDelay);
+ GVAR(publishNextTime) = GVAR(publishNextTime) min (diag_tickTime + _maxDelay);
};
// If the variable is on the list
-GVAR(publishNextTime) = GVAR(publishNextTime) min (ACE_diagTime + _maxDelay);
+GVAR(publishNextTime) = GVAR(publishNextTime) min (diag_tickTime + _maxDelay);
diff --git a/addons/common/functions/fnc_timePFH.sqf b/addons/common/functions/fnc_timePFH.sqf
deleted file mode 100644
index e5366d331e..0000000000
--- a/addons/common/functions/fnc_timePFH.sqf
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Author: jaynus
- * PFEH to set all Ace Time Variables
- *
- * Arguments:
- * None
- *
- * Return Value:
- * None
- *
- * Public: No
- */
-#include "script_component.hpp"
-
-BEGIN_COUNTER(timePFH);
-
-private _lastTickTime = ACE_diagTime;
-private _lastGameTime = ACE_gameTime;
-
-ACE_gameTime = time;
-ACE_diagTime = diag_tickTime;
-
-private _delta = ACE_diagTime - _lastTickTime;
-
-if (ACE_gameTime <= _lastGameTime) then {
- TRACE_1("paused",_delta);
- ACE_paused = true;
- // Game is paused or not running
- ACE_pausedTime = ACE_pausedTime + _delta;
- ACE_virtualPausedTime = ACE_pausedTime + (_delta * accTime);
-} else {
- TRACE_1("live",_delta);
- ACE_paused = false;
- // Time is updating
- ACE_realTime = ACE_realTime + _delta;
- ACE_virtualTime = ACE_virtualTime + (_delta * accTime);
- ACE_time = ACE_virtualTime;
-};
-
-END_COUNTER(timePFH);
diff --git a/addons/common/functions/fnc_unloadPerson.sqf b/addons/common/functions/fnc_unloadPerson.sqf
index 72816f2c3f..b4c57457af 100644
--- a/addons/common/functions/fnc_unloadPerson.sqf
+++ b/addons/common/functions/fnc_unloadPerson.sqf
@@ -15,7 +15,7 @@
*/
#include "script_component.hpp"
-#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson))
+#define GROUP_SWITCH_ID QFUNC(loadPerson)
params ["_unit"];
diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf
index ff5813434a..741accb689 100644
--- a/addons/common/functions/fnc_unloadPersonLocal.sqf
+++ b/addons/common/functions/fnc_unloadPersonLocal.sqf
@@ -14,7 +14,7 @@
*/
#include "script_component.hpp"
-#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson))
+#define GROUP_SWITCH_ID QFUNC(loadPerson)
params ["_unit", "_vehicle", ["_unloader", objNull]];
TRACE_3("params",_unit,_vehicle,_unloader);
@@ -58,10 +58,10 @@ _unit action ["Eject", vehicle _unit];
if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then {
[_unit, _anim, 2, true] call FUNC(doAnimation);
};
- }, [_unit, _anim], 0.5] call FUNC(waitAndExecute);
+ }, [_unit, _anim], 0.5] call CBA_fnc_waitAndExecute;
};
};
-}, [_unit, _emptyPos], 0.5] call FUNC(waitAndExecute);
+}, [_unit, _emptyPos], 0.5] call CBA_fnc_waitAndExecute;
[_unit, false, GROUP_SWITCH_ID, side group _unit] call FUNC(switchToGroupSide);
diff --git a/addons/common/functions/fnc_waitAndExecute.sqf b/addons/common/functions/fnc_waitAndExecute.sqf
index 6f282ba656..1ac0d3f54d 100644
--- a/addons/common/functions/fnc_waitAndExecute.sqf
+++ b/addons/common/functions/fnc_waitAndExecute.sqf
@@ -17,7 +17,6 @@
*/
#include "script_component.hpp"
-params ["_func", "_params", "_delay"];
+ACE_DEPRECATED("ace_common_fnc_waitAndExecute","3.8.0","CBA_fnc_waitAndExecute");
-GVAR(waitAndExecArray) pushBack [ACE_time + _delay, _func, _params];
-GVAR(waitAndExecArray) sort true;
+_this call CBA_fnc_waitAndExecute;
diff --git a/addons/common/functions/fnc_waitUntilAndExecute.sqf b/addons/common/functions/fnc_waitUntilAndExecute.sqf
index bbc6c540fe..76f3d22ce1 100644
--- a/addons/common/functions/fnc_waitUntilAndExecute.sqf
+++ b/addons/common/functions/fnc_waitUntilAndExecute.sqf
@@ -17,7 +17,8 @@
*/
#include "script_component.hpp"
-TRACE_1("Adding",_this);
+ACE_DEPRECATED("ace_common_fnc_waitUntilAndExecute","3.8.0","CBA_fnc_waitUntilAndExecute");
+
+_this call CBA_fnc_waitUntilAndExecute;
-GVAR(waitUntilAndExecArray) pushBack _this;
nil
diff --git a/addons/common/init_versionTooltip.sqf b/addons/common/init_versionTooltip.sqf
index 7aef3f4786..ce0d005a14 100644
--- a/addons/common/init_versionTooltip.sqf
+++ b/addons/common/init_versionTooltip.sqf
@@ -30,7 +30,7 @@ _display setVariable [QGVAR(versionTooltip), [_display] spawn {
_ctrl ctrlCommit 0;
// pls ignore
- _ctrl ctrlSetText QUOTE(PATHTOF(data\icon_banana_ca.paa));
+ _ctrl ctrlSetText QPATHTOF(data\icon_banana_ca.paa);
// animate with random speed
_position set [1, 1 - safezoneY];
diff --git a/addons/common/scripts/checkVersionNumber.sqf b/addons/common/scripts/checkVersionNumber.sqf
index 07bd443a06..7b1fbca291 100644
--- a/addons/common/scripts/checkVersionNumber.sqf
+++ b/addons/common/scripts/checkVersionNumber.sqf
@@ -100,7 +100,7 @@ if (!isServer) then {
_error = _error call _fnc_cutComma;
diag_log text _error;
- [_error, "{systemChat _this}"] call FUNC(execRemoteFnc);
+ [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent);
};
_missingAddonServer = false;
@@ -117,7 +117,7 @@ if (!isServer) then {
_error = _error call _fnc_cutComma;
diag_log text _error;
- [_error, "{systemChat _this}"] call FUNC(execRemoteFnc);
+ [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent);
};
_oldVersionClient = false;
@@ -134,7 +134,7 @@ if (!isServer) then {
_error = _error call _fnc_cutComma;
diag_log text _error;
- [_error, "{systemChat _this}"] call FUNC(execRemoteFnc);
+ [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent);
};
_oldVersionServer = false;
@@ -151,7 +151,7 @@ if (!isServer) then {
_error = _error call _fnc_cutComma;
diag_log text _error;
- [_error, "{systemChat _this}"] call FUNC(execRemoteFnc);
+ [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent);
};
ACE_Version_ClientErrors = [_missingAddon, _missingAddonServer, _oldVersionClient, _oldVersionServer];
diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml
index 32a979653f..7521b65982 100644
--- a/addons/common/stringtable.xml
+++ b/addons/common/stringtable.xml
@@ -802,6 +802,8 @@
Non c'è spazio per scaricare
No hay espacio para descargar.
Pas de place pour décharger
+ Nedostatek místa k vyložení
+ Sem espaço para descarregar
\ No newline at end of file
diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp
index dd18c07209..d7f5d0d82a 100644
--- a/addons/concertina_wire/CfgVehicles.hpp
+++ b/addons/concertina_wire/CfgVehicles.hpp
@@ -10,7 +10,7 @@ class CfgVehicles {
scope = 1;
displayName = "";
- model = PATHTOF(data\ACE_ConcertinaWireNoGeo.p3d);
+ model = QPATHTOF(data\ACE_ConcertinaWireNoGeo.p3d);
destrType = "DestructTent";
accuracy = 0.3;
mapSize = 2.8;
@@ -75,7 +75,7 @@ class CfgVehicles {
class ACE_ConcertinaWire: ACE_ConcertinaWireNoGeo {
scope = 2;
displayName = $STR_ACE_CONCERTINA_WIRE;
- model = PATHTOF(data\ACE_ConcertinaWire.p3d);
+ model = QPATHTOF(data\ACE_ConcertinaWire.p3d);
EGVAR(logistics_wirecutter,isFence) = 1;
class ACE_Actions {
class ACE_MainActions {
@@ -86,12 +86,12 @@ class CfgVehicles {
selection = "";
displayName = "$STR_ACE_UNROLLWIRE";
distance = 5;
- condition = "true";
+ condition = "alive _target";
statement = QUOTE([ARR_2(_target,_player)] call FUNC(dismount));
showDisabled = 0;
exceptions[] = {};
priority = 5;
- icon = PATHTOF(UI\icon_sandbag_ca.paa);
+ icon = QPATHTOF(UI\icon_sandbag_ca.paa);
};
};
};
@@ -105,7 +105,7 @@ class CfgVehicles {
scope = 2;
displayName = $STR_ACE_CONCERTINA_WIRECOIL;
- model = PATHTOF(data\ACE_ConcertinaWireCoil.p3d);
+ model = QPATHTOF(data\ACE_ConcertinaWireCoil.p3d);
mapsize = 0.5;
animated = 0;
nameSound = "fence";
@@ -134,11 +134,11 @@ class CfgVehicles {
distance = 4;
condition = "true";
//wait a frame to handle "Do When releasing action menu key" option:
- statement = QUOTE([ARR_2({_this call FUNC(deploy)}, [ARR_2(_target,_player)])] call EFUNC(common,execNextFrame));
+ statement = QUOTE([ARR_2({_this call FUNC(deploy)}, [ARR_2(_target,_player)])] call CBA_fnc_execNextFrame);
showDisabled = 0;
exceptions[] = {};
priority = 5;
- icon = PATHTOF(UI\icon_sandbag_ca.paa);
+ icon = QPATHTOF(UI\icon_sandbag_ca.paa);
};
};
};
diff --git a/addons/concertina_wire/config.cpp b/addons/concertina_wire/config.cpp
index 06b7bf5d86..5333c83bb5 100644
--- a/addons/concertina_wire/config.cpp
+++ b/addons/concertina_wire/config.cpp
@@ -6,7 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_apl", "ace_interaction"};
- author[] = {"Rocko", "Ruthberg"};
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Rocko", "Ruthberg"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/concertina_wire/functions/fnc_dismount.sqf b/addons/concertina_wire/functions/fnc_dismount.sqf
index 6e8ae8f4f5..50429c054b 100644
--- a/addons/concertina_wire/functions/fnc_dismount.sqf
+++ b/addons/concertina_wire/functions/fnc_dismount.sqf
@@ -18,7 +18,7 @@
if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exitWith {
[{
_this call FUNC(dismount);
- }, _this] call EFUNC(common,execNextFrame);
+ }, _this] call CBA_fnc_execNextFrame;
};
params ["_wire", "_unit"];
diff --git a/addons/concertina_wire/functions/fnc_handleKilled.sqf b/addons/concertina_wire/functions/fnc_handleKilled.sqf
index ac59798d10..1af3f93151 100644
--- a/addons/concertina_wire/functions/fnc_handleKilled.sqf
+++ b/addons/concertina_wire/functions/fnc_handleKilled.sqf
@@ -14,13 +14,17 @@
*/
#include "script_component.hpp"
params ["_wire", "_killer"];
+TRACE_2("params",_wire,_killer);
private ["_distance", "_vehicle"];
if (isNull _killer) then {
_killer = _wire getVariable ["ace_concertina_wire_lastDamager", objNull];
if (isNull _killer) then {
- _killer = nearestObject [_wire, "car"];
+ private _midPoint = ((_wire selectionPosition "start") vectorAdd (_wire selectionPosition "deploy")) vectorMultiply 0.5;
+ {
+ if ((vectorMagnitude velocity _x) > 0) exitWith {_killer = _x};
+ } forEach (nearestObjects [(_wire modelToWorld _midPoint), ["Car"], 8]);
};
};
if (isNull _killer || {_killer == _wire} || {_killer == gunner (vehicle _killer)}) exitWith {};
diff --git a/addons/concertina_wire/functions/fnc_vehicleDamage.sqf b/addons/concertina_wire/functions/fnc_vehicleDamage.sqf
index dffa15b609..0bca28c3cf 100644
--- a/addons/concertina_wire/functions/fnc_vehicleDamage.sqf
+++ b/addons/concertina_wire/functions/fnc_vehicleDamage.sqf
@@ -114,7 +114,7 @@ if (_mode == 1) then {
_vDir = getDir _vehicle;
_vehicle setPosASL (_vPos vectorAdd [-0.35 * sin(_vDir), -0.35 * cos(_vDir), 0]);
// TODO: Needs to be placed in safe distance to wire, so we do not constantly re-spawn new wires
- }, [_vehicle, _wire], 0.1] call EFUNC(common,waitAndExecute);
+ }, [_vehicle, _wire], 0.1] call CBA_fnc_waitAndExecute;
};
//TODO: Create broken geoless wire (two version)
diff --git a/addons/dagr/CfgVehicles.hpp b/addons/dagr/CfgVehicles.hpp
index 7f0a7f6cff..89bfd8af4e 100644
--- a/addons/dagr/CfgVehicles.hpp
+++ b/addons/dagr/CfgVehicles.hpp
@@ -9,7 +9,7 @@ class CfgVehicles {
statement = QUOTE(call FUNC(menuInit));
showDisabled = 0;
priority = 0.1;
- icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa));
+ icon = QPATHTOF(UI\DAGR_Icon.paa);
exceptions[] = {"isNotInside", "isNotSitting"};
class GVAR(toggle) {
displayName = CSTRING(ToggleDAGR);
@@ -17,7 +17,7 @@ class CfgVehicles {
statement = QUOTE(call FUNC(toggleOverlay));
showDisabled = 0;
priority = 0.2;
- icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa));
+ icon = QPATHTOF(UI\DAGR_Icon.paa);
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};
diff --git a/addons/dagr/CfgWeapons.hpp b/addons/dagr/CfgWeapons.hpp
index 9fcd903cdd..b6601e094c 100644
--- a/addons/dagr/CfgWeapons.hpp
+++ b/addons/dagr/CfgWeapons.hpp
@@ -7,9 +7,9 @@ class CfgWeapons {
author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"};
scope = 2;
displayName = CSTRING(Name);
- model = QUOTE(PATHTOF(data\DAGR.p3d));
+ model = QPATHTOF(data\DAGR.p3d);
descriptionShort = CSTRING(Description);
- picture = PATHTOF(UI\DAGR_Icon.paa);
+ picture = QPATHTOF(UI\DAGR_Icon.paa);
icon = "iconObject_circle";
mapSize = 0.034;
class ItemInfo: InventoryItem_Base_F {
diff --git a/addons/dagr/Dialog.hpp b/addons/dagr/Dialog.hpp
index 17c065f830..52e3a8f683 100644
--- a/addons/dagr/Dialog.hpp
+++ b/addons/dagr/Dialog.hpp
@@ -76,349 +76,349 @@
class RscText;
class DAGR_Button {
- idc = -1;
- type = CT_BUTTON;
- style = ST_LEFT;
- font = "RobotoCondensed";
- sizeEx = 0.02;
- colorText[] = { 0, 1, 0, 1 };
- colorFocused[] = { 0, 0, 0, 0 }; // border color for focused state
- colorDisabled[] = { 0, 0, 0, 0 }; // text color for disabled state
- colorBackground[] = { 0, 0, 0, 0 };
- colorBackgroundDisabled[] = { 0, 0, 0, 0 }; // background color for disabled state
- colorBackgroundActive[] = { 0, 0, 0, 0 }; // background color for active state
- offsetX = 0;
- offsetY = 0;
- offsetPressedX = 0;
- offsetPressedY = 0;
- colorShadow[] = { 0, 0, 0, 0 };
- colorBorder[] = { 0, 0, 0, 0 };
- borderSize = 0;
- soundEnter[] = { "", 0, 1 }; // no sound
- soundPush[] = { "", 0, 1 };
- soundClick[] = { "", 0, 1 }; // no sound
- soundEscape[] = { "", 0, 1 }; // no sound
- x = 0.5;
- y = 0.5;
- w = 0.07;
- h = 0.05;
- text = "";
- action = "";
+ idc = -1;
+ type = CT_BUTTON;
+ style = ST_LEFT;
+ font = "RobotoCondensed";
+ sizeEx = 0.02;
+ colorText[] = { 0, 1, 0, 1 };
+ colorFocused[] = { 0, 0, 0, 0 }; // border color for focused state
+ colorDisabled[] = { 0, 0, 0, 0 }; // text color for disabled state
+ colorBackground[] = { 0, 0, 0, 0 };
+ colorBackgroundDisabled[] = { 0, 0, 0, 0 }; // background color for disabled state
+ colorBackgroundActive[] = { 0, 0, 0, 0 }; // background color for active state
+ offsetX = 0;
+ offsetY = 0;
+ offsetPressedX = 0;
+ offsetPressedY = 0;
+ colorShadow[] = { 0, 0, 0, 0 };
+ colorBorder[] = { 0, 0, 0, 0 };
+ borderSize = 0;
+ soundEnter[] = { "", 0, 1 }; // no sound
+ soundPush[] = { "", 0, 1 };
+ soundClick[] = { "", 0, 1 }; // no sound
+ soundEscape[] = { "", 0, 1 }; // no sound
+ x = 0.5;
+ y = 0.5;
+ w = 0.07;
+ h = 0.05;
+ text = "";
+ action = "";
};
class DAGR_Menu_Pic {
- type = 0;
- idc = -1;
- style = 48;
- x = 0;
- y = 0;
- w = 0.7;
- h = 1.4;
- text = "";
- colorBackground[] = {};
- colorText[] = {};
- font = "RobotoCondensed";
- sizeEx = 0.04;
- waitForLoad = 0;
+ type = 0;
+ idc = -1;
+ style = 48;
+ x = 0;
+ y = 0;
+ w = 0.7;
+ h = 1.4;
+ text = "";
+ colorBackground[] = {};
+ colorText[] = {};
+ font = "RobotoCondensed";
+ sizeEx = 0.04;
+ waitForLoad = 0;
};
class DAGR_Menu_Text {
- type = 0;
- idc = -1;
- style = 0x00;
- x = 0.5;
- y = 0.5;
- w = 0.15;
- h = 0.15;
- colorBackground[] = { 0, 0, 0, 0 };
- colorText[] = { 0.239, 0.216, 0.153, 1 };
- font = "RobotoCondensed";
- sizeEx = 0.03;
- waitForLoad = 0;
- text = "";
+ type = 0;
+ idc = -1;
+ style = 0x00;
+ x = 0.5;
+ y = 0.5;
+ w = 0.15;
+ h = 0.15;
+ colorBackground[] = { 0, 0, 0, 0 };
+ colorText[] = { 0.239, 0.216, 0.153, 1 };
+ font = "RobotoCondensed";
+ sizeEx = 0.03;
+ waitForLoad = 0;
+ text = "";
};
class DAGR_Menu {
- idd = 266860;
- movingEnable = false;
- duration = 100000;
- fadein = 0;
- fadeout = 0;
- name = "Dagr_Menu";
- onLoad = "uiNamespace setVariable ['DAGR_Menu', _this select 0]";
+ idd = 266860;
+ movingEnable = false;
+ duration = 100000;
+ fadein = 0;
+ fadeout = 0;
+ name = "Dagr_Menu";
+ onLoad = "uiNamespace setVariable ['DAGR_Menu', _this select 0]";
onUnload = QUOTE(GVAR(PWR) = true); // Simulate pressing the power button
- controls[] = {"DAGR_MENU_UI", "DAGR_PWR_Button", "DAGR_UP_Button", "DAGR_DOWN_Button", "DAGR_LEFT_Button", "DAGR_RIGHT_Button", "DAGR_NEXT_Button",
- "DAGR_SEL_Button", "DAGR_MENU_Button", "DAGR_F1_Button", "DAGR_F2_Button", "DAGR_F3_Button", "DAGR_F1_Text", "DAGR_F2_Text", "DAGR_F3_Text", "DAGR_MENU_OPTION0",
- "DAGR_MENU_OPTION1", "DAGR_MENU_OPTION2", "DAGR_MENU_OPTION3", "DAGR_MENU_OPTION4", "DAGR_MENU_SELECTION0", "DAGR_MENU_SELECTION1", "DAGR_MENU_SELECTION2",
- "DAGR_MENU_SELECTION3", "DAGR_MENU_SELECTION4", "DAGR_MENU_Main_Text", "DAGR_MENU_PSELECTION1", "DAGR_MENU_PSELECTION2", "DAGR_MENU_PSELECTION3",
- "DAGR_MENU_PSELECTION4", "DAGR_MENU_PSELECTION5", "DAGR_MENU_PSELECTION6","DAGR_MENU_PSELECTION7", "DAGR_MENU_PSELECTION8"};
+ controls[] = {"DAGR_MENU_UI", "DAGR_PWR_Button", "DAGR_UP_Button", "DAGR_DOWN_Button", "DAGR_LEFT_Button", "DAGR_RIGHT_Button", "DAGR_NEXT_Button",
+ "DAGR_SEL_Button", "DAGR_MENU_Button", "DAGR_F1_Button", "DAGR_F2_Button", "DAGR_F3_Button", "DAGR_F1_Text", "DAGR_F2_Text", "DAGR_F3_Text", "DAGR_MENU_OPTION0",
+ "DAGR_MENU_OPTION1", "DAGR_MENU_OPTION2", "DAGR_MENU_OPTION3", "DAGR_MENU_OPTION4", "DAGR_MENU_SELECTION0", "DAGR_MENU_SELECTION1", "DAGR_MENU_SELECTION2",
+ "DAGR_MENU_SELECTION3", "DAGR_MENU_SELECTION4", "DAGR_MENU_Main_Text", "DAGR_MENU_PSELECTION1", "DAGR_MENU_PSELECTION2", "DAGR_MENU_PSELECTION3",
+ "DAGR_MENU_PSELECTION4", "DAGR_MENU_PSELECTION5", "DAGR_MENU_PSELECTION6","DAGR_MENU_PSELECTION7", "DAGR_MENU_PSELECTION8"};
- class DAGR_MENU_UI : DAGR_Menu_Pic {
- idc = 266861;
- x = 0.175;
- y = -0.173;
- text = QUOTE(PATHTOF(UI\dagr_menu.paa));
- sizeEx = 0.1;
- };
+ class DAGR_MENU_UI : DAGR_Menu_Pic {
+ idc = 266861;
+ x = 0.175;
+ y = -0.173;
+ text = QPATHTOF(UI\dagr_menu.paa);
+ sizeEx = 0.1;
+ };
- class DAGR_PWR_Button : DAGR_Button {
- idc = 266863;
- action = QUOTE(GVAR(PWR) = true);
- x = 0.40;
- y = 0.65;
- };
+ class DAGR_PWR_Button : DAGR_Button {
+ idc = 266863;
+ action = QUOTE(GVAR(PWR) = true);
+ x = 0.40;
+ y = 0.65;
+ };
- class DAGR_UP_Button : DAGR_Button {
- idc = 266864;
- action = QUOTE(GVAR(UP) = true);
- x = 0.50;
- y = 0.675;
- };
+ class DAGR_UP_Button : DAGR_Button {
+ idc = 266864;
+ action = QUOTE(GVAR(UP) = true);
+ x = 0.50;
+ y = 0.675;
+ };
- class DAGR_DOWN_Button : DAGR_Button {
- idc = 266865;
- action = QUOTE(GVAR(DOWN) = true);
- x = 0.50;
- y = 0.81;
- };
+ class DAGR_DOWN_Button : DAGR_Button {
+ idc = 266865;
+ action = QUOTE(GVAR(DOWN) = true);
+ x = 0.50;
+ y = 0.81;
+ };
- class DAGR_LEFT_Button : DAGR_Button {
- idc = 266866;
- action = QUOTE(GVAR(LEFT) = true);
- x = 0.40;
- y = 0.735;
- w = 0.05;
- h = 0.07;
- };
+ class DAGR_LEFT_Button : DAGR_Button {
+ idc = 266866;
+ action = QUOTE(GVAR(LEFT) = true);
+ x = 0.40;
+ y = 0.735;
+ w = 0.05;
+ h = 0.07;
+ };
- class DAGR_RIGHT_Button : DAGR_Button {
- idc = 266867;
- action = QUOTE(GVAR(RIGHT) = true);
- x = 0.62;
- y = 0.735;
- w = 0.05;
- h = 0.07;
- };
+ class DAGR_RIGHT_Button : DAGR_Button {
+ idc = 266867;
+ action = QUOTE(GVAR(RIGHT) = true);
+ x = 0.62;
+ y = 0.735;
+ w = 0.05;
+ h = 0.07;
+ };
- class DAGR_NEXT_Button : DAGR_Button {
- idc = 266868;
- action = QUOTE(DAGR_NEXT = true);
- x = 0.60;
- y = 0.65;
- };
+ class DAGR_NEXT_Button : DAGR_Button {
+ idc = 266868;
+ action = QUOTE(DAGR_NEXT = true);
+ x = 0.60;
+ y = 0.65;
+ };
- class DAGR_SEL_Button : DAGR_Button {
- idc = 266869;
- action = QUOTE(GVAR(SEL) = true);
- x = 0.54;
- y = 0.735;
- w = 0.06;
- h = 0.06;
- };
+ class DAGR_SEL_Button : DAGR_Button {
+ idc = 266869;
+ action = QUOTE(GVAR(SEL) = true);
+ x = 0.54;
+ y = 0.735;
+ w = 0.06;
+ h = 0.06;
+ };
- class DAGR_MENU_Button : DAGR_Button {
- idc = 266870;
- action = QUOTE(GVAR(MENU_B) = true);
- x = 0.46;
- y = 0.735;
- w = 0.06;
- h = 0.06;
- };
+ class DAGR_MENU_Button : DAGR_Button {
+ idc = 266870;
+ action = QUOTE(GVAR(MENU_B) = true);
+ x = 0.46;
+ y = 0.735;
+ w = 0.06;
+ h = 0.06;
+ };
- class DAGR_F1_Button : DAGR_Button {
- idc = 266871;
- action = QUOTE(GVAR(F1) = true);
- x = 0.40;
- y = 0.575;
- };
+ class DAGR_F1_Button : DAGR_Button {
+ idc = 266871;
+ action = QUOTE(GVAR(F1) = true);
+ x = 0.40;
+ y = 0.575;
+ };
- class DAGR_F2_Button : DAGR_Button {
- idc = 266872;
- action = QUOTE(GVAR(F2) = true);
- x = 0.495;
- y = 0.575;
- };
+ class DAGR_F2_Button : DAGR_Button {
+ idc = 266872;
+ action = QUOTE(GVAR(F2) = true);
+ x = 0.495;
+ y = 0.575;
+ };
- class DAGR_F3_Button : DAGR_Button {
- idc = 266873;
- action = QUOTE(GVAR(F3) = true);
- x = 0.59;
- y = 0.575;
- };
+ class DAGR_F3_Button : DAGR_Button {
+ idc = 266873;
+ action = QUOTE(GVAR(F3) = true);
+ x = 0.59;
+ y = 0.575;
+ };
- class DAGR_F1_Text : DAGR_Menu_Text {
- idc = 266874;
- x = 0.388;
- y = 0.38;
- text = "";
- };
+ class DAGR_F1_Text : DAGR_Menu_Text {
+ idc = 266874;
+ x = 0.388;
+ y = 0.38;
+ text = "";
+ };
- class DAGR_F2_Text : DAGR_Menu_Text {
- idc = 266875;
- x = 0.506;
- y = 0.38;
- };
+ class DAGR_F2_Text : DAGR_Menu_Text {
+ idc = 266875;
+ x = 0.506;
+ y = 0.38;
+ };
- class DAGR_F3_Text : DAGR_Menu_Text {
- idc = 266876;
- x = 0.612;
- y = 0.38;
- };
+ class DAGR_F3_Text : DAGR_Menu_Text {
+ idc = 266876;
+ x = 0.612;
+ y = 0.38;
+ };
- class DAGR_MENU_OPTION0 : DAGR_Menu_Text {
- idc = 2668777;
- style = 0x02;
- sizeEx = 0.035;
- x = 0.43;
- y = 0.19;
- };
+ class DAGR_MENU_OPTION0 : DAGR_Menu_Text {
+ idc = 2668777;
+ style = 0x02;
+ sizeEx = 0.035;
+ x = 0.43;
+ y = 0.19;
+ };
- class DAGR_MENU_OPTION1 : DAGR_Menu_Text {
- idc = 2668778;
- style = 0x02;
- sizeEx = 0.035;
- x = 0.43;
- y = 0.225;
- };
+ class DAGR_MENU_OPTION1 : DAGR_Menu_Text {
+ idc = 2668778;
+ style = 0x02;
+ sizeEx = 0.035;
+ x = 0.43;
+ y = 0.225;
+ };
- class DAGR_MENU_OPTION2 : DAGR_Menu_Text {
- idc = 2668779;
- style = 0x02;
- sizeEx = 0.035;
- x = 0.43;
- y = 0.26;
- };
+ class DAGR_MENU_OPTION2 : DAGR_Menu_Text {
+ idc = 2668779;
+ style = 0x02;
+ sizeEx = 0.035;
+ x = 0.43;
+ y = 0.26;
+ };
- class DAGR_MENU_OPTION3 : DAGR_Menu_Text {
- idc = 2668780;
- style = 0x02;
- sizeEx = 0.035;
- x = 0.43;
- y = 0.295;
- };
+ class DAGR_MENU_OPTION3 : DAGR_Menu_Text {
+ idc = 2668780;
+ style = 0x02;
+ sizeEx = 0.035;
+ x = 0.43;
+ y = 0.295;
+ };
- class DAGR_MENU_OPTION4 : DAGR_Menu_Text {
- idc = 2668781;
- style = 0x02;
- sizeEx = 0.035;
- x = 0.43;
- y = 0.33;
- };
- class DAGR_MENU_SELECTION0 : DAGR_Menu_Pic {
- idc = 2668783;
- x = 0.42;
- y = 0.246;
- w = 0.17;
- h = 0.035;
- sizeEx = 0.05;
- };
+ class DAGR_MENU_OPTION4 : DAGR_Menu_Text {
+ idc = 2668781;
+ style = 0x02;
+ sizeEx = 0.035;
+ x = 0.43;
+ y = 0.33;
+ };
+ class DAGR_MENU_SELECTION0 : DAGR_Menu_Pic {
+ idc = 2668783;
+ x = 0.42;
+ y = 0.246;
+ w = 0.17;
+ h = 0.035;
+ sizeEx = 0.05;
+ };
- class DAGR_MENU_SELECTION1 : DAGR_Menu_Pic {
- idc = 2668784;
- x = 0.42;
- y = 0.281;
- w = 0.17;
- h = 0.035;
- sizeEx = 0.05;
- };
+ class DAGR_MENU_SELECTION1 : DAGR_Menu_Pic {
+ idc = 2668784;
+ x = 0.42;
+ y = 0.281;
+ w = 0.17;
+ h = 0.035;
+ sizeEx = 0.05;
+ };
- class DAGR_MENU_SELECTION2 : DAGR_Menu_Pic {
- idc = 2668785;
- x = 0.42;
- y = 0.316;
- w = 0.17;
- h = 0.035;
- sizeEx = 0.05;
- };
+ class DAGR_MENU_SELECTION2 : DAGR_Menu_Pic {
+ idc = 2668785;
+ x = 0.42;
+ y = 0.316;
+ w = 0.17;
+ h = 0.035;
+ sizeEx = 0.05;
+ };
- class DAGR_MENU_SELECTION3 : DAGR_Menu_Pic {
- idc = 2668786;
- x = 0.42;
- y = 0.351;
- w = 0.17;
- h = 0.035;
- sizeEx = 0.05;
- };
+ class DAGR_MENU_SELECTION3 : DAGR_Menu_Pic {
+ idc = 2668786;
+ x = 0.42;
+ y = 0.351;
+ w = 0.17;
+ h = 0.035;
+ sizeEx = 0.05;
+ };
- class DAGR_MENU_SELECTION4 : DAGR_Menu_Pic {
- idc = 2668787;
- x = 0.42;
- y = 0.386;
- w = 0.17;
- h = 0.035;
- sizeEx = 0.05;
- };
+ class DAGR_MENU_SELECTION4 : DAGR_Menu_Pic {
+ idc = 2668787;
+ x = 0.42;
+ y = 0.386;
+ w = 0.17;
+ h = 0.035;
+ sizeEx = 0.05;
+ };
- class DAGR_MENU_Main_Text : DAGR_Menu_Text {
- idc = 2668782;
- style = ST_CENTER;
- x = 0.38;
- y = 0.32;
- w = 0.25;
- h = 0.035;
- sizeEx = 0.04;
- };
+ class DAGR_MENU_Main_Text : DAGR_Menu_Text {
+ idc = 2668782;
+ style = ST_CENTER;
+ x = 0.38;
+ y = 0.32;
+ w = 0.25;
+ h = 0.035;
+ sizeEx = 0.04;
+ };
- class DAGR_MENU_PSELECTION1 : DAGR_Menu_Pic {
- idc = 2668788;
- x = 0.451;
- y = 0.352;
- w = 0.01;
- h = 0.003;
- };
+ class DAGR_MENU_PSELECTION1 : DAGR_Menu_Pic {
+ idc = 2668788;
+ x = 0.451;
+ y = 0.352;
+ w = 0.01;
+ h = 0.003;
+ };
- class DAGR_MENU_PSELECTION2 : DAGR_Menu_Pic {
- idc = 2668789;
- x = 0.465;
- y = 0.352;
- w = 0.01;
- h = 0.003;
- };
+ class DAGR_MENU_PSELECTION2 : DAGR_Menu_Pic {
+ idc = 2668789;
+ x = 0.465;
+ y = 0.352;
+ w = 0.01;
+ h = 0.003;
+ };
- class DAGR_MENU_PSELECTION3 : DAGR_Menu_Pic {
- idc = 2668790;
- x = 0.479;
- y = 0.352;
- w = 0.01;
- h = 0.003;
- };
+ class DAGR_MENU_PSELECTION3 : DAGR_Menu_Pic {
+ idc = 2668790;
+ x = 0.479;
+ y = 0.352;
+ w = 0.01;
+ h = 0.003;
+ };
- class DAGR_MENU_PSELECTION4 : DAGR_Menu_Pic {
- idc = 2668791;
- x = 0.493;
- y = 0.352;
- w = 0.01;
- h = 0.003;
- };
+ class DAGR_MENU_PSELECTION4 : DAGR_Menu_Pic {
+ idc = 2668791;
+ x = 0.493;
+ y = 0.352;
+ w = 0.01;
+ h = 0.003;
+ };
- class DAGR_MENU_PSELECTION5 : DAGR_Menu_Pic {
- idc = 2668792;
- x = 0.507;
- y = 0.352;
- w = 0.01;
- h = 0.003;
- };
+ class DAGR_MENU_PSELECTION5 : DAGR_Menu_Pic {
+ idc = 2668792;
+ x = 0.507;
+ y = 0.352;
+ w = 0.01;
+ h = 0.003;
+ };
- class DAGR_MENU_PSELECTION6 : DAGR_Menu_Pic {
- idc = 2668793;
- x = 0.521;
- y = 0.352;
- w = 0.01;
- h = 0.003;
- };
+ class DAGR_MENU_PSELECTION6 : DAGR_Menu_Pic {
+ idc = 2668793;
+ x = 0.521;
+ y = 0.352;
+ w = 0.01;
+ h = 0.003;
+ };
- class DAGR_MENU_PSELECTION7 : DAGR_Menu_Pic {
- idc = 2668794;
- x = 0.535;
- y = 0.352;
- w = 0.01;
- h = 0.003;
- };
+ class DAGR_MENU_PSELECTION7 : DAGR_Menu_Pic {
+ idc = 2668794;
+ x = 0.535;
+ y = 0.352;
+ w = 0.01;
+ h = 0.003;
+ };
- class DAGR_MENU_PSELECTION8 : DAGR_Menu_Pic {
- idc = 2668795;
- x = 0.549;
- y = 0.352;
- w = 0.01;
- h = 0.003;
- };
+ class DAGR_MENU_PSELECTION8 : DAGR_Menu_Pic {
+ idc = 2668795;
+ x = 0.549;
+ y = 0.352;
+ w = 0.01;
+ h = 0.003;
+ };
};
diff --git a/addons/dagr/RscTitles.hpp b/addons/dagr/RscTitles.hpp
index 9ab34ee86f..ab70517c9a 100644
--- a/addons/dagr/RscTitles.hpp
+++ b/addons/dagr/RscTitles.hpp
@@ -1,95 +1,95 @@
class RscTitles {
- class DAGR_Text {
- type = 0;
- idc = -1;
- style = 0x01;
- x = 0;
- y = 0;
- w = 0.15;
- h = 0.050;
- text = "";
- colorBackground[] = { 0, 0, 0, 0 };
- colorText[] = { 0.239, 0.216, 0.153, 1 };
- font = "RobotoCondensed";
- sizeEx = 0.04;
- waitForLoad = 0;
- };
- class DAGR_Pic {
- type = 0;
- idc = -1;
- style = 48;
- x = 0;
- y = 0;
- w = 0.50;
- h = 0.50;
- text = "";
- colorBackground[] = {};
- colorText[] = {};
- font = "RobotoCondensed";
- sizeEx = 0.02;
- waitForLoad = 0;
- };
+ class DAGR_Text {
+ type = 0;
+ idc = -1;
+ style = 0x01;
+ x = 0;
+ y = 0;
+ w = 0.15;
+ h = 0.050;
+ text = "";
+ colorBackground[] = { 0, 0, 0, 0 };
+ colorText[] = { 0.239, 0.216, 0.153, 1 };
+ font = "RobotoCondensed";
+ sizeEx = 0.04;
+ waitForLoad = 0;
+ };
+ class DAGR_Pic {
+ type = 0;
+ idc = -1;
+ style = 48;
+ x = 0;
+ y = 0;
+ w = 0.50;
+ h = 0.50;
+ text = "";
+ colorBackground[] = {};
+ colorText[] = {};
+ font = "RobotoCondensed";
+ sizeEx = 0.02;
+ waitForLoad = 0;
+ };
- class DAGR_Display {
- idd = 266850;
- movingEnable = false;
- duration = 100000;
- fadein = 0;
- fadeout = 0;
- name = "Dagr_Display";
- onLoad="uiNamespace setVariable ['DAGR_Display', _this select 0]";
- controls[] = {"DAGR_UI", "DAGR_Grid", "DAGR_Speed", "DAGR_Elevation", "DAGR_Heading", "DAGR_Time", "DAGR_WP", "DAGR_Bearing", "DAGR_DIST"};
+ class DAGR_Display {
+ idd = 266850;
+ movingEnable = false;
+ duration = 100000;
+ fadein = 0;
+ fadeout = 0;
+ name = "Dagr_Display";
+ onLoad="uiNamespace setVariable ['DAGR_Display', _this select 0]";
+ controls[] = {"DAGR_UI", "DAGR_Grid", "DAGR_Speed", "DAGR_Elevation", "DAGR_Heading", "DAGR_Time", "DAGR_WP", "DAGR_Bearing", "DAGR_DIST"};
- class DAGR_UI : DAGR_Pic {
- idc = 266856;
- x = "(SafeZoneW + SafeZoneX) - 0.45";
- y = "(SafeZoneH + SafeZoneY) - 0.47";
- };
+ class DAGR_UI : DAGR_Pic {
+ idc = 266856;
+ x = "(SafeZoneW + SafeZoneX) - 0.45";
+ y = "(SafeZoneH + SafeZoneY) - 0.47";
+ };
- class DAGR_Grid : DAGR_Text {
- idc = 266851;
- x = "(SafeZoneW + SafeZoneX) - 0.370";// 0.830
- y = "(SafeZoneH + SafeZoneY)- 0.250";// 0.845
- w = 0.25;
- h = 0.06;
- sizeEx = 0.07;
- };
- class DAGR_Speed : DAGR_Text {
- idc = 266852;
- x = "(SafeZoneW + SafeZoneX) - 0.388"; //0.812
- y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
- };
- class DAGR_Elevation : DAGR_Text {
- idc = 266853;
- x = "(SafeZoneW + SafeZoneX) - 0.270"; //0.930
- y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
- };
- class DAGR_Heading : DAGR_Text {
- idc = 266854;
- x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787
- y = "(SafeZoneH + SafeZoneY) - 0.1294"; //0.9656
- };
- class DAGR_Time : DAGR_Text {
- idc = 266855;
- x = "(SafeZoneW + SafeZoneX) - 0.275"; //0.925
- y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965
- };
+ class DAGR_Grid : DAGR_Text {
+ idc = 266851;
+ x = "(SafeZoneW + SafeZoneX) - 0.370";// 0.830
+ y = "(SafeZoneH + SafeZoneY)- 0.250";// 0.845
+ w = 0.25;
+ h = 0.06;
+ sizeEx = 0.07;
+ };
+ class DAGR_Speed : DAGR_Text {
+ idc = 266852;
+ x = "(SafeZoneW + SafeZoneX) - 0.388"; //0.812
+ y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
+ };
+ class DAGR_Elevation : DAGR_Text {
+ idc = 266853;
+ x = "(SafeZoneW + SafeZoneX) - 0.270"; //0.930
+ y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
+ };
+ class DAGR_Heading : DAGR_Text {
+ idc = 266854;
+ x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787
+ y = "(SafeZoneH + SafeZoneY) - 0.1294"; //0.9656
+ };
+ class DAGR_Time : DAGR_Text {
+ idc = 266855;
+ x = "(SafeZoneW + SafeZoneX) - 0.275"; //0.925
+ y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965
+ };
- class DAGR_WP : DAGR_Text {
- idc = 266857;
- x = "(SafeZoneW + SafeZoneX) - 0.235"; //0.965
- y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
- };
+ class DAGR_WP : DAGR_Text {
+ idc = 266857;
+ x = "(SafeZoneW + SafeZoneX) - 0.235"; //0.965
+ y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
+ };
- class DAGR_Bearing : DAGR_Text {
- idc = 266858;
- x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787
- y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
- };
- class DAGR_DIST : DAGR_Text {
- idc = 266859;
- x = "(SafeZoneW + SafeZoneX) - 0.265"; //0.935
- y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965
- };
- };
+ class DAGR_Bearing : DAGR_Text {
+ idc = 266858;
+ x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787
+ y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
+ };
+ class DAGR_DIST : DAGR_Text {
+ idc = 266859;
+ x = "(SafeZoneW + SafeZoneX) - 0.265"; //0.935
+ y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965
+ };
+ };
};
diff --git a/addons/dagr/config.cpp b/addons/dagr/config.cpp
index 9f46660aaa..1f440744f4 100644
--- a/addons/dagr/config.cpp
+++ b/addons/dagr/config.cpp
@@ -6,7 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_DAGR"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_weather"};
- author[] = {"Rosuto", "Ruthberg"};
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Rosuto", "Ruthberg"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/dagr/functions/fnc_menuInit.sqf b/addons/dagr/functions/fnc_menuInit.sqf
index e4fb341537..9bf36c393c 100644
--- a/addons/dagr/functions/fnc_menuInit.sqf
+++ b/addons/dagr/functions/fnc_menuInit.sqf
@@ -134,19 +134,19 @@ GVAR(menuRun) = true;
GVAR(vectorConnected) = false;
if (!GVAR(busy)) then {
GVAR(busy) = true;
- GVAR(busyTimer) = ACE_time;
+ GVAR(busyTimer) = CBA_missionTime;
};
(__dsp displayCtrl __mainText) ctrlSetText "Acquiring Data.";
- if (ACE_time - GVAR(busyTimer) > 0.5) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 0.5) then {
(__dsp displayCtrl __mainText) ctrlSetText "Acquiring Data..";
};
- if (ACE_time - GVAR(busyTimer) > 1.0) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1.0) then {
(__dsp displayCtrl __mainText) ctrlSetText "Acquiring Data...";
};
- if (ACE_time - GVAR(busyTimer) > 1.5) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1.5) then {
(__dsp displayCtrl __mainText) ctrlSetText "Position Acquired";
};
- if (ACE_time - GVAR(busyTimer) > 3.0) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 3.0) then {
GVAR(busy) = false;
};
};
@@ -156,7 +156,7 @@ GVAR(menuRun) = true;
if (!GVAR(busy)) then {
GVAR(showNoWaypointsFound) = true;
GVAR(busy) = true;
- GVAR(busyTimer) = ACE_time;
+ GVAR(busyTimer) = CBA_missionTime;
};
} else {
GVAR(menu) = "goto_wp"; GVAR(numSelections) = GVAR(numWaypoints); GVAR(selection) = 0;
@@ -168,7 +168,7 @@ GVAR(menuRun) = true;
};
};
if (GVAR(busy) && GVAR(showNoWaypointsFound)) then {
- if (ACE_time - GVAR(busyTimer) > 2) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 2) then {
GVAR(showNoWaypointsFound) = false;
GVAR(busy) = false;
};
@@ -179,7 +179,7 @@ GVAR(menuRun) = true;
(__dsp displayCtrl __Option2) ctrlSetText "WP LIST";
(__dsp displayCtrl __Option3) ctrlSetText "CONNECT TO";
(__dsp displayCtrl __Option4) ctrlSetText "OPTIONS";
- (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
+ (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa);
};
};
case "goto_wp": {
@@ -190,7 +190,7 @@ GVAR(menuRun) = true;
(__dsp displayCtrl __Option3) ctrlSetText GVAR(wpString3);
(__dsp displayCtrl __Option4) ctrlSetText GVAR(wpString4);
if (GVAR(numSelections) > 0) then {
- (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
+ (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa);
};
};
if (GVAR(SEL)) then {
@@ -206,21 +206,21 @@ GVAR(menuRun) = true;
if (!GVAR(busy)) then {
GVAR(showInfoUpdating) = true;
GVAR(busy) = true;
- GVAR(busyTimer) = ACE_time;
+ GVAR(busyTimer) = CBA_missionTime;
};
};
if (GVAR(busy) && GVAR(showInfoUpdating)) then {
(__dsp displayCtrl __mainText) ctrlSetText "Info Update.";
- if (ACE_time - GVAR(busyTimer) > 1) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1) then {
(__dsp displayCtrl __mainText) ctrlSetText "Info Update..";
};
- if (ACE_time - GVAR(busyTimer) > 1.2) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Info Update...";
};
- if (ACE_time - GVAR(busyTimer) > 1.4) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Info Updated";
};
- if (ACE_time - GVAR(busyTimer) > 2.9) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 2.9) then {
GVAR(showInfoUpdating) = false;
GVAR(busy) = false;
};
@@ -238,7 +238,7 @@ GVAR(menuRun) = true;
(__dsp displayCtrl __F2) ctrlSetText "Edit";
(__dsp displayCtrl __F3) ctrlSetText "Delete";
if (GVAR(numSelections) > 0) then {
- (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
+ (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa);
};
};
if (GVAR(F3) && GVAR(numWaypoints) > 0) then {
@@ -289,21 +289,21 @@ GVAR(menuRun) = true;
GVAR(numSelections) = GVAR(numWaypoints);
GVAR(showDeleting) = true;
GVAR(busy) = true;
- GVAR(busyTimer) = ACE_time;
+ GVAR(busyTimer) = CBA_missionTime;
};
};
if (GVAR(busy) && GVAR(showDeleting)) then {
(__dsp displayCtrl __mainText) ctrlSetText "Deleting.";
- if (ACE_time - GVAR(busyTimer) > 1) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1) then {
(__dsp displayCtrl __mainText) ctrlSetText "Deleting..";
};
- if (ACE_time - GVAR(busyTimer) > 1.2) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Deleting...";
};
- if (ACE_time - GVAR(busyTimer) > 1.4) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Waypoint Deleted";
};
- if (ACE_time - GVAR(busyTimer) > 2.9) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 2.9) then {
GVAR(showDeleting) = false;
GVAR(busy) = false;
};
@@ -313,7 +313,7 @@ GVAR(menuRun) = true;
if (!GVAR(busy)) then {
GVAR(showOutOfSpace) = true;
GVAR(busy) = true;
- GVAR(busyTimer) = ACE_time;
+ GVAR(busyTimer) = CBA_missionTime;
};
} else {
GVAR(digit1) = 0;
@@ -330,7 +330,7 @@ GVAR(menuRun) = true;
};
if (GVAR(busy) && GVAR(showOutOfSpace)) then {
(__dsp displayCtrl __mainText) ctrlSetText "Out of Space";
- if (ACE_time - GVAR(busyTimer) > 2.5) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 2.5) then {
GVAR(showOutOfSpace) = false;
GVAR(busy) = false;
};
@@ -399,7 +399,7 @@ GVAR(menuRun) = true;
(__dsp displayCtrl __F3) ctrlSetText "Cancel";
GVAR(output) = str GVAR(digit1) + str GVAR(digit2) + str GVAR(digit3) + str GVAR(digit4) + str GVAR(digit5) + str GVAR(digit6) + str GVAR(digit7) + str GVAR(digit8);
(__dsp displayCtrl __mainText) ctrlSetText GVAR(output);
- (__dsp displayCtrl __PSelection1 + GVAR(pointer)) ctrlSetText QUOTE(PATHTOF(UI\DAGR_PSelection.paa));
+ (__dsp displayCtrl __PSelection1 + GVAR(pointer)) ctrlSetText QPATHTOF(UI\DAGR_PSelection.paa);
};
if (GVAR(F1)) then {
if (!GVAR(busy)) then {
@@ -425,22 +425,22 @@ GVAR(menuRun) = true;
};
};
GVAR(busy) = true;
- GVAR(busyTimer) = ACE_time;
+ GVAR(busyTimer) = CBA_missionTime;
};
(__dsp displayCtrl __F1) ctrlSetText "";
(__dsp displayCtrl __F2) ctrlSetText "";
(__dsp displayCtrl __F3) ctrlSetText "";
(__dsp displayCtrl __mainText) ctrlSetText "Saving.";
- if (ACE_time - GVAR(busyTimer) > 1) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1) then {
(__dsp displayCtrl __mainText) ctrlSetText "Saving..";
};
- if (ACE_time - GVAR(busyTimer) > 1.2) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Saving...";
};
- if (ACE_time - GVAR(busyTimer) > 1.4) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 1.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Waypoint Saved";
};
- if (ACE_time - GVAR(busyTimer) > 2.9) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 2.9) then {
GVAR(edit) = false;
GVAR(add) = false;
GVAR(busy) = false;
@@ -464,7 +464,7 @@ GVAR(menuRun) = true;
if (GVAR(F3)) then {
if (!GVAR(busy)) then {
GVAR(busy) = true;
- GVAR(busyTimer) = ACE_time;
+ GVAR(busyTimer) = CBA_missionTime;
} else {
(__dsp displayCtrl __F1) ctrlSetText "Save";
(__dsp displayCtrl __F2) ctrlSetText "Vector";
@@ -472,7 +472,7 @@ GVAR(menuRun) = true;
GVAR(output) = str GVAR(digit1) + str GVAR(digit2) + str GVAR(digit3) + str GVAR(digit4) + str GVAR(digit5) + str GVAR(digit6) + str GVAR(digit7) + str GVAR(digit8);
(__dsp displayCtrl __mainText) ctrlSetText GVAR(output);
};
- if (ACE_time - GVAR(busyTimer) > 0.1) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 0.1) then {
GVAR(add) = false;
GVAR(edit) = false;
GVAR(busy) = false;
@@ -507,22 +507,22 @@ GVAR(menuRun) = true;
case "connect": {
if (!GVAR(busy)) then {
(__dsp displayCtrl __Option0) ctrlSetText "Vector 21";
- (__dsp displayCtrl __Selection0) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
+ (__dsp displayCtrl __Selection0) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa);
};
if (GVAR(SEL)) then {
if (!GVAR(busy)) then {
GVAR(busy) = true;
- GVAR(busyTimer) = ACE_time;
+ GVAR(busyTimer) = CBA_missionTime;
};
(__dsp displayCtrl __mainText) ctrlSetText "Connecting.";
- if (ACE_time - GVAR(busyTimer) > 0.2) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 0.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Connecting..";
};
- if (ACE_time - GVAR(busyTimer) > 0.4) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 0.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Connecting...";
};
- if (ACE_time - GVAR(busyTimer) > 0.6) then {
- if (ACE_player hasWeapon "ACE_Vector") then {
+ if (CBA_missionTime - GVAR(busyTimer) > 0.6) then {
+ if (({_x isKindOf ["ACE_Vector", configFile >> "CfgWeapons"]} count (weapons ACE_player)) > 0) then {
GVAR(displaySelection) = "VECTOR";
(__dsp displayCtrl __mainText) ctrlSetText "Vector Connected";
GVAR(vectorConnected) = true;
@@ -531,7 +531,7 @@ GVAR(menuRun) = true;
GVAR(vectorConnected) = false;
};
};
- if (ACE_time - GVAR(busyTimer) > 3.1) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 3.1) then {
GVAR(busy) = false;
if (GVAR(vectorConnected)) then {
GVAR(menu) = "main"; GVAR(numSelections) = 5;
@@ -542,7 +542,7 @@ GVAR(menuRun) = true;
case "options": {
(__dsp displayCtrl __Option0) ctrlSetText "Signal Delay";
(__dsp displayCtrl __Option1) ctrlSetText (if (GVAR(useDegrees)) then { "Direction: Deg" } else { "Direction: MIL" });
- (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
+ (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa);
if (GVAR(SEL)) then {
GVAR(vectorConnected) = false;
switch (GVAR(selection)) do {
@@ -556,19 +556,19 @@ GVAR(menuRun) = true;
GVAR(updateInterval) = GVAR(tmpUpdateRate);
if (!GVAR(busy)) then {
GVAR(busy) = true;
- GVAR(busyTimer) = ACE_time;
+ GVAR(busyTimer) = CBA_missionTime;
};
(__dsp displayCtrl __mainText) ctrlSetText "Updating.";
- if (ACE_time - GVAR(busyTimer) > 0.2) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 0.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Updating..";
};
- if (ACE_time - GVAR(busyTimer) > 0.4) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 0.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Updating...";
};
- if (ACE_time - GVAR(busyTimer) > 0.6) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 0.6) then {
(__dsp displayCtrl __mainText) ctrlSetText "Update Success";
};
- if (ACE_time - GVAR(busyTimer) > 2.1) then {
+ if (CBA_missionTime - GVAR(busyTimer) > 2.1) then {
GVAR(busy) = false;
GVAR(menu) = "options"; GVAR(numSelections) = 2;
};
diff --git a/addons/dagr/functions/fnc_outputData.sqf b/addons/dagr/functions/fnc_outputData.sqf
index 63350c71a3..a981514e54 100644
--- a/addons/dagr/functions/fnc_outputData.sqf
+++ b/addons/dagr/functions/fnc_outputData.sqf
@@ -25,7 +25,7 @@
#define __timeControl (__display displayCtrl 266855)
#define __background (__display displayCtrl 266856)
-__background ctrlSetText QUOTE(PATHTOF(UI\dagr_gps.paa));
+__background ctrlSetText QPATHTOF(UI\dagr_gps.paa);
if (GVAR(outputPFH) != -1) exitWith {};
diff --git a/addons/dagr/functions/fnc_outputVector.sqf b/addons/dagr/functions/fnc_outputVector.sqf
index ef93a53d8a..23996c46b4 100644
--- a/addons/dagr/functions/fnc_outputVector.sqf
+++ b/addons/dagr/functions/fnc_outputVector.sqf
@@ -27,7 +27,7 @@ private ["_xGrid", "_yGrid", "_dagrGrid", "_bearing", "_dagrDist", "_dagrElevati
#define __timeControl (__display displayCtrl 266855)
#define __background (__display displayCtrl 266856)
-__background ctrlSetText QUOTE(PATHTOF(UI\dagr_vector.paa));
+__background ctrlSetText QPATHTOF(UI\dagr_vector.paa);
if (GVAR(noVectorData)) exitWith {};
GVAR(LAZPOS) params ["_lazPosX", "_lazPosY", "_lazPosZ"];
diff --git a/addons/dagr/functions/fnc_outputWP.sqf b/addons/dagr/functions/fnc_outputWP.sqf
index 204a5ef556..2d1aee4d4e 100644
--- a/addons/dagr/functions/fnc_outputWP.sqf
+++ b/addons/dagr/functions/fnc_outputWP.sqf
@@ -25,7 +25,7 @@
#define __timeControl (__display displayCtrl 266859)
#define __background (__display displayCtrl 266856)
-__background ctrlSetText QUOTE(PATHTOF(UI\dagr_wp.paa));
+__background ctrlSetText QPATHTOF(UI\dagr_wp.paa);
if (GVAR(outputPFH) != -1) exitWith {};
diff --git a/addons/dagr/initKeybinds.sqf b/addons/dagr/initKeybinds.sqf
index 66bd08190e..74a522e87f 100644
--- a/addons/dagr/initKeybinds.sqf
+++ b/addons/dagr/initKeybinds.sqf
@@ -37,7 +37,7 @@ _conditonCode = {
_toggleCode = {
// Conditions: canInteract
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {};
-
+
// Statement
[] call FUNC(toggleOverlay);
if (!GVAR(run)) then {
@@ -56,4 +56,4 @@ _closeCode = {
closeDialog 0;
};
};
-["DAGR", QUOTE(PATHTOF(UI\DAGR_Icon.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew);
+["DAGR", QPATHTOF(UI\DAGR_Icon.paa), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew);
diff --git a/addons/difficulties/$PBOPREFIX$ b/addons/difficulties/$PBOPREFIX$
deleted file mode 100644
index 6280fc4731..0000000000
--- a/addons/difficulties/$PBOPREFIX$
+++ /dev/null
@@ -1 +0,0 @@
-z\ace\addons\difficulties
\ No newline at end of file
diff --git a/addons/difficulties/CfgDifficulties.hpp b/addons/difficulties/CfgDifficulties.hpp
deleted file mode 100644
index a65d31f1a5..0000000000
--- a/addons/difficulties/CfgDifficulties.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-
-class CfgDifficulties {
- class Mercenary {
- class Flags {
- armor[] = {0,0};
- friendlyTag[] = {0,0};
- enemyTag[] = {0,0};
- mineTag[] = {0,0};
- hud[] = {0,1};//{1,1};
- hudPerm[] = {0,0};
- hudWp[] = {0,0};
- hudWpPerm[] = {0,0};
- autoSpot[] = {0,1};
- map[] = {0,0};
- weaponCursor[] = {0,1};//{1,1};
- autoGuideAT[] = {0,0};
- clockIndicator[] = {0,0};
- 3rdPersonView[] = {0,0};
- autoAim[] = {0,0};
- unlimitedSaves[] = {0,0};
- deathMessages[] = {0,1};//{1,1};
- netStats[] = {0,1};//{1,1};
- vonID[] = {0,1};
- cameraShake[] = {1,0};
- hudGroupInfo[] = {0,0};
- extendetInfoType[] = {0,0};
- roughLanding[] = {0,0};
- windEnabled[] = {1,0};
- autoTrimEnabled[] = {0,0};
- stressDamageEnabled[] = {1,0};
- };
- };
-};
diff --git a/addons/difficulties/config.cpp b/addons/difficulties/config.cpp
deleted file mode 100644
index 34784706a0..0000000000
--- a/addons/difficulties/config.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-#include "script_component.hpp"
-
-class CfgPatches {
- class ADDON {
- units[] = {};
- weapons[] = {};
- requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_common"};
- author[] = {"commy2"};
- authorUrl = "https://github.com/commy2/";
- VERSION_CONFIG;
- };
-};
-
-#include "CfgDifficulties.hpp"
diff --git a/addons/difficulties/script_component.hpp b/addons/difficulties/script_component.hpp
deleted file mode 100644
index b6f387b02f..0000000000
--- a/addons/difficulties/script_component.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#define COMPONENT difficulties
-#include "\z\ace\addons\main\script_mod.hpp"
-
-// #define DEBUG_MODE_FULL
-// #define DISABLE_COMPILE_CACHE
-// #define CBA_DEBUG_SYNCHRONOUS
-// #define ENABLE_PERFORMANCE_COUNTERS
-
-#ifdef DEBUG_ENABLED_DIFFICULTIES
- #define DEBUG_MODE_FULL
-#endif
-
-#ifdef DEBUG_ENABLED_DIFFICULTIES
- #define DEBUG_SETTINGS DEBUG_ENABLED_DIFFICULTIES
-#endif
-
-#include "\z\ace\addons\main\script_macros.hpp"
\ No newline at end of file
diff --git a/addons/disarming/CfgVehicles.hpp b/addons/disarming/CfgVehicles.hpp
index b4a1a4c7dd..1d04bb157c 100644
--- a/addons/disarming/CfgVehicles.hpp
+++ b/addons/disarming/CfgVehicles.hpp
@@ -8,7 +8,7 @@ class CfgVehicles {
distance = 3.5;
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPlayerDisarmUnit));
statement = QUOTE([ARR_2(_player,_target)] call FUNC(openDisarmDialog));
- icon = PATHTOF(UI\disarm.paa);
+ icon = QPATHTOF(UI\disarm.paa);
exceptions[] = {};
};
};
diff --git a/addons/disarming/CfgWeapons.hpp b/addons/disarming/CfgWeapons.hpp
index 404ef4aa76..4e7122ba41 100644
--- a/addons/disarming/CfgWeapons.hpp
+++ b/addons/disarming/CfgWeapons.hpp
@@ -5,7 +5,7 @@ class CfgWeapons {
class ACE_DebugPotato: ACE_ItemCore {
displayName = "ACE Potato (debug)";
descriptionShort = "Glorious Potato If you see this in game it means someone fucked up";
- picture = QUOTE(PATHTOF(UI\potato_ca.paa));
+ picture = QPATHTOF(UI\potato_ca.paa);
scope = 1;
class ItemInfo: InventoryItem_Base_F {
mass = 1;
diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp
index 00f8204b09..6bf3397106 100644
--- a/addons/disarming/config.cpp
+++ b/addons/disarming/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_DebugPotato"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Interaction"};
- author[] = {"PabstMirror"};
- authorUrl = "https://github.com/PabstMirror/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"PabstMirror"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/disarming/functions/fnc_disarmDropItems.sqf b/addons/disarming/functions/fnc_disarmDropItems.sqf
index be2f932028..c9eb920084 100644
--- a/addons/disarming/functions/fnc_disarmDropItems.sqf
+++ b/addons/disarming/functions/fnc_disarmDropItems.sqf
@@ -67,7 +67,7 @@ if (isNull _holder) exitWith {
if (_holder getVariable [QGVAR(holderInUse), false]) exitWith {
[{
_this call FUNC(disarmDropItems);
- }, _this] call EFUNC(common,execNextFrame);
+ }, _this] call CBA_fnc_execNextFrame;
};
_holder setVariable [QGVAR(holderInUse), true];
@@ -177,7 +177,7 @@ if (_holderIsEmpty) then {
_needToRemoveVest = ((vest _target) != "") && {(vest _target) in _listOfItemsToRemove};
_needToRemoveUniform = ((uniform _target) != "") && {(uniform _target) in _listOfItemsToRemove};
- if ((ACE_time < _maxWaitTime) && {[_target] call FUNC(canBeDisarmed)} && {_needToRemoveWeapon || _needToRemoveMagazines || _needToRemoveBackpack}) then {
+ if ((CBA_missionTime < _maxWaitTime) && {[_target] call FUNC(canBeDisarmed)} && {_needToRemoveWeapon || _needToRemoveMagazines || _needToRemoveBackpack}) then {
//action drop weapons (keeps loaded magazine and attachements)
{
if (_x in _listOfItemsToRemove) then {
@@ -233,7 +233,7 @@ if (_holderIsEmpty) then {
clearItemCargoGlobal _holder;
};
//Verify we didn't timeout waiting on drop action
- if (ACE_time >= _maxWaitTime) exitWith {
+ if (CBA_missionTime >= _maxWaitTime) exitWith {
_holder setVariable [QGVAR(holderInUse), false];
[_caller, _target, "Debug: Drop Actions Timeout"] call FUNC(eventTargetFinish);
};
@@ -263,4 +263,4 @@ if (_holderIsEmpty) then {
[_caller, _target, ""] call FUNC(eventTargetFinish);
};
-}, 0.0, [_caller,_target, _listOfItemsToRemove, _holder, _holderIsEmpty, (ACE_time + TIME_MAX_WAIT), _doNotDropAmmo, _targetMagazinesEnd]] call CBA_fnc_addPerFrameHandler;
+}, 0.0, [_caller,_target, _listOfItemsToRemove, _holder, _holderIsEmpty, (CBA_missionTime + TIME_MAX_WAIT), _doNotDropAmmo, _targetMagazinesEnd]] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/disarming/functions/fnc_eventCallerFinish.sqf b/addons/disarming/functions/fnc_eventCallerFinish.sqf
index e1376f4052..bf1daee2f0 100644
--- a/addons/disarming/functions/fnc_eventCallerFinish.sqf
+++ b/addons/disarming/functions/fnc_eventCallerFinish.sqf
@@ -23,4 +23,4 @@ params ["_caller", "_target", "_errorMsg"];
if (_caller != ACE_player) exitWith {};
systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg];
-ACE_LOGINFO_2("%1 - eventCallerFinish: %2",ACE_time,_this);
+ACE_LOGINFO_2("%1 - eventCallerFinish: %2",CBA_missionTime,_this);
diff --git a/addons/disarming/functions/fnc_eventTargetFinish.sqf b/addons/disarming/functions/fnc_eventTargetFinish.sqf
index b7364a8f40..9af811adc7 100644
--- a/addons/disarming/functions/fnc_eventTargetFinish.sqf
+++ b/addons/disarming/functions/fnc_eventTargetFinish.sqf
@@ -22,6 +22,6 @@
params ["_caller", "_target", "_errorMsg"];
if (_errorMsg != "") then {
- ACE_LOGINFO_2("%1 - eventTargetFinish: %2",ACE_time,_this);
+ ACE_LOGINFO_2("%1 - eventTargetFinish: %2",CBA_missionTime,_this);
["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent);
};
diff --git a/addons/disarming/stringtable.xml b/addons/disarming/stringtable.xml
index 61eaf9af59..dfa030273a 100644
--- a/addons/disarming/stringtable.xml
+++ b/addons/disarming/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/disposable/CfgMagazines.hpp b/addons/disposable/CfgMagazines.hpp
index d26d5ecea2..d9ad0508db 100644
--- a/addons/disposable/CfgMagazines.hpp
+++ b/addons/disposable/CfgMagazines.hpp
@@ -5,7 +5,7 @@ class CfgMagazines {
scope = 1;
scopeArsenal = 1;
displayName = CSTRING(PreloadedMissileDummy);
- picture = PATHTOEF(common,UI\blank_CO.paa);
+ picture = QPATHTOEF(common,UI\blank_CO.paa);
weaponPoolAvailable = 0;
mass = 0;
};
diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp
index 0f256824d7..e240206938 100644
--- a/addons/disposable/config.cpp
+++ b/addons/disposable/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"commy2"};
- authorUrl = "https://github.com/commy2/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/disposable/stringtable.xml b/addons/disposable/stringtable.xml
index acdc79473c..ac2b76ee7f 100644
--- a/addons/disposable/stringtable.xml
+++ b/addons/disposable/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp
index ab73742ed3..ba4ff87186 100644
--- a/addons/dragging/CfgVehicles.hpp
+++ b/addons/dragging/CfgVehicles.hpp
@@ -19,12 +19,6 @@ class CfgVehicles {
GVAR(canDrag) = 0;
};
- //remove actions from Taru Pods
- class Pod_Heli_Transport_04_base_F: StaticWeapon {
- GVAR(canCarry) = 0;
- GVAR(canDrag) = 0;
- };
-
class StaticMortar;
class Mortar_01_base_F: StaticMortar {
GVAR(canCarry) = 1;
@@ -38,6 +32,7 @@ class CfgVehicles {
// ammo boxes
class ThingX;
+ class Items_base_F;
class ReammoBox_F: ThingX {
GVAR(canCarry) = 0;
GVAR(carryPosition)[] = {0,1,1};
@@ -52,6 +47,11 @@ class CfgVehicles {
GVAR(canCarry) = 0;
GVAR(canDrag) = 0;
};
+ //remove actions from Taru Pods
+ class Pod_Heli_Transport_04_base_F: Slingload_base_F {
+ GVAR(canCarry) = 0;
+ GVAR(canDrag) = 0;
+ };
class EAST_Box_Base: ReammoBox_F {
GVAR(canCarry) = 1;
@@ -90,6 +90,32 @@ class CfgVehicles {
GVAR(canDrag) = 0;
};
+ //Plastic and metal case
+ class PlasticCase_01_base_F: Items_base_F {
+ class EventHandlers {
+ class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
+ };
+ GVAR(canCarry) = 1;
+ GVAR(carryPosition[]) = {0,1,1};
+ GVAR(carryDirection) = 270;
+
+ GVAR(canDrag) = 1;
+ GVAR(dragPosition[]) = {0,1.2,0};
+ GVAR(dragDirection) = 0;
+ };
+ class MetalCase_01_base_F: Items_base_F {
+ class EventHandlers {
+ class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
+ };
+ GVAR(canCarry) = 1;
+ GVAR(carryPosition[]) = {0,1,1};
+ GVAR(carryDirection) = 270;
+
+ GVAR(canDrag) = 1;
+ GVAR(dragPosition[]) = {0,1.2,0};
+ GVAR(dragDirection) = 0;
+ };
+
// Barrier
class RoadCone_F: ThingX {
class EventHandlers {
diff --git a/addons/dragging/UI/icons/box_carry.paa b/addons/dragging/UI/icons/box_carry.paa
new file mode 100644
index 0000000000..5e9c83057c
Binary files /dev/null and b/addons/dragging/UI/icons/box_carry.paa differ
diff --git a/addons/dragging/UI/icons/box_drag.paa b/addons/dragging/UI/icons/box_drag.paa
new file mode 100644
index 0000000000..56ae3af83b
Binary files /dev/null and b/addons/dragging/UI/icons/box_drag.paa differ
diff --git a/addons/dragging/UI/icons/person_carry.paa b/addons/dragging/UI/icons/person_carry.paa
new file mode 100644
index 0000000000..30e8da32a9
Binary files /dev/null and b/addons/dragging/UI/icons/person_carry.paa differ
diff --git a/addons/dragging/UI/icons/person_drag.paa b/addons/dragging/UI/icons/person_drag.paa
new file mode 100644
index 0000000000..39dfac3546
Binary files /dev/null and b/addons/dragging/UI/icons/person_drag.paa differ
diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp
index 0c9cfb3c43..a3e87c5824 100644
--- a/addons/dragging/config.cpp
+++ b/addons/dragging/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"Garth 'L-H' de Wet", "commy2"};
- authorUrl = "https://github.com/commy2/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Garth 'L-H' de Wet", "commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf
index ec00693825..2624bbf05c 100644
--- a/addons/dragging/functions/fnc_carryObject.sqf
+++ b/addons/dragging/functions/fnc_carryObject.sqf
@@ -64,7 +64,7 @@ if (_target isKindOf "CAManBase") then {
};
// check everything
-[FUNC(carryObjectPFH), 0.5, [_unit, _target, ACE_time]] call CBA_fnc_addPerFrameHandler;
+[FUNC(carryObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
// reset current dragging height.
GVAR(currentHeightChange) = 0;
diff --git a/addons/dragging/functions/fnc_carryObjectPFH.sqf b/addons/dragging/functions/fnc_carryObjectPFH.sqf
index 948af15891..963921efa7 100644
--- a/addons/dragging/functions/fnc_carryObjectPFH.sqf
+++ b/addons/dragging/functions/fnc_carryObjectPFH.sqf
@@ -20,7 +20,7 @@
#include "script_component.hpp"
#ifdef DEBUG_ENABLED_DRAGGING
- systemChat format ["%1 carryObjectPFH running", ACE_time];
+ systemChat format ["%1 carryObjectPFH running", CBA_missionTime];
#endif
params ["_args", "_idPFH"];
@@ -34,10 +34,10 @@ if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith {
// drop if the crate is destroyed OR (target moved away from carrier (weapon disasembled))
if (!alive _target || {_unit distance _target > 10}) then {
TRACE_2("dead/distance",_unit,_target);
- if ((_unit distance _target > 10) && {(ACE_time - _startTime) < 1}) exitWith {
+ 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,
//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,ACE_time);
+ TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,CBA_missionTime);
};
[_unit, _target] call FUNC(dropObject_carry);
[_idPFH] call CBA_fnc_removePerFrameHandler;
diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf
index 3237ddbb07..751baccf06 100644
--- a/addons/dragging/functions/fnc_dragObject.sqf
+++ b/addons/dragging/functions/fnc_dragObject.sqf
@@ -53,7 +53,7 @@ _unit setVariable [QGVAR(ReleaseActionID), [
[localize LSTRING(Drop), ""] call EFUNC(interaction,showMouseHint);
// check everything
-[FUNC(dragObjectPFH), 0.5, [_unit, _target, ACE_time]] call CBA_fnc_addPerFrameHandler;
+[FUNC(dragObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
// reset current dragging height.
GVAR(currentHeightChange) = 0;
diff --git a/addons/dragging/functions/fnc_dragObjectPFH.sqf b/addons/dragging/functions/fnc_dragObjectPFH.sqf
index ab117e90fd..08aeba738b 100644
--- a/addons/dragging/functions/fnc_dragObjectPFH.sqf
+++ b/addons/dragging/functions/fnc_dragObjectPFH.sqf
@@ -20,7 +20,7 @@
#include "script_component.hpp"
#ifdef DEBUG_ENABLED_DRAGGING
- systemChat format ["%1 dragObjectPFH running", ACE_time];
+ systemChat format ["%1 dragObjectPFH running", CBA_missionTime];
#endif
params ["_args", "_idPFH"];
@@ -34,10 +34,10 @@ if !(_unit getVariable [QGVAR(isDragging), false]) exitWith {
// drop if the crate is destroyed OR (target moved away from carrier (weapon disasembled))
if (!alive _target || {_unit distance _target > 10}) then {
TRACE_2("dead/distance",_unit,_target);
- if ((_unit distance _target > 10) && {(ACE_time - _startTime) < 1}) exitWith {
+ 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,
//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,ACE_time);
+ TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,CBA_missionTime);
};
[_unit, _target] call FUNC(dropObject);
[_idPFH] call CBA_fnc_removePerFrameHandler;
diff --git a/addons/dragging/functions/fnc_setCarryable.sqf b/addons/dragging/functions/fnc_setCarryable.sqf
index 9e15e42446..0253c6ed4b 100644
--- a/addons/dragging/functions/fnc_setCarryable.sqf
+++ b/addons/dragging/functions/fnc_setCarryable.sqf
@@ -43,7 +43,9 @@ if (_type in _initializedClasses) exitWith {};
_initializedClasses pushBack _type;
GVAR(initializedClasses_carry) = _initializedClasses;
-private _carryAction = [QGVAR(carry), localize LSTRING(Carry), "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction);
+private _icon = [QUOTE(PATHTOF(UI\icons\box_carry.paa)), QUOTE(PATHTOF(UI\icons\person_carry.paa))] select (_object isKindOf "Man");
+
+private _carryAction = [QGVAR(carry), localize LSTRING(Carry), _icon, {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction);
private _dropAction = [QGVAR(drop_carry), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction);
[_type, 0, ["ACE_MainActions"], _carryAction] call EFUNC(interact_menu,addActionToClass);
diff --git a/addons/dragging/functions/fnc_setDraggable.sqf b/addons/dragging/functions/fnc_setDraggable.sqf
index 0adcb624d8..4c4d11ecf6 100644
--- a/addons/dragging/functions/fnc_setDraggable.sqf
+++ b/addons/dragging/functions/fnc_setDraggable.sqf
@@ -44,7 +44,9 @@ if (_type in _initializedClasses) exitWith {};
_initializedClasses pushBack _type;
GVAR(initializedClasses) = _initializedClasses;
-private _dragAction = [QGVAR(drag), localize LSTRING(Drag), "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction);
+private _icon = [QUOTE(PATHTOF(UI\icons\box_drag.paa)), QUOTE(PATHTOF(UI\icons\person_drag.paa))] select (_object isKindOf "Man");
+
+private _dragAction = [QGVAR(drag), localize LSTRING(Drag), _icon, {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction);
private _dropAction = [QGVAR(drop), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction);
[_type, 0, ["ACE_MainActions"], _dragAction] call EFUNC(interact_menu,addActionToClass);
diff --git a/addons/dragging/functions/fnc_startCarry.sqf b/addons/dragging/functions/fnc_startCarry.sqf
index fd528b0104..1890dbac1a 100644
--- a/addons/dragging/functions/fnc_startCarry.sqf
+++ b/addons/dragging/functions/fnc_startCarry.sqf
@@ -26,7 +26,7 @@ if (_weight > missionNamespace getVariable ["ACE_maxWeightCarry", 1E11]) exitWit
[localize LSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured);
};
-private _timer = ACE_time + 5;
+private _timer = CBA_missionTime + 5;
// handle objects vs persons
if (_target isKindOf "CAManBase") then {
@@ -46,7 +46,7 @@ if (_target isKindOf "CAManBase") then {
[_unit, "AcinPknlMstpSnonWnonDnon_AcinPercMrunSnonWnonDnon", 2, true] call EFUNC(common,doAnimation);
[_target, "AinjPfalMstpSnonWrflDnon_carried_Up", 2, true] call EFUNC(common,doAnimation);
- _timer = ACE_time + 15;
+ _timer = CBA_missionTime + 15;
} else {
diff --git a/addons/dragging/functions/fnc_startCarryPFH.sqf b/addons/dragging/functions/fnc_startCarryPFH.sqf
index 4d39672a9e..007469d960 100644
--- a/addons/dragging/functions/fnc_startCarryPFH.sqf
+++ b/addons/dragging/functions/fnc_startCarryPFH.sqf
@@ -20,7 +20,7 @@
#include "script_component.hpp"
#ifdef DEBUG_ENABLED_DRAGGING
- systemChat format ["%1 startCarryPFH running", ACE_time];
+ systemChat format ["%1 startCarryPFH running", CBA_missionTime];
#endif
params ["_args", "_idPFH"];
@@ -28,28 +28,28 @@ _args params ["_unit", "_target", "_timeOut"];
// handle aborting carry
if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith {
- TRACE_4("carry false",_unit,_target,_timeOut,ACE_time);
+ TRACE_4("carry false",_unit,_target,_timeOut,CBA_missionTime);
[_idPFH] call CBA_fnc_removePerFrameHandler;
};
// same as dragObjectPFH, checks if object is deleted or dead OR (target moved away from carrier (weapon disasembled))
if (!alive _target || {_unit distance _target > 10}) then {
- TRACE_4("dead/distance",_unit,_target,_timeOut,ACE_time);
+ TRACE_4("dead/distance",_unit,_target,_timeOut,CBA_missionTime);
[_unit, _target] call FUNC(dropObject);
[_idPFH] call CBA_fnc_removePerFrameHandler;
};
// handle persons vs objects
if (_target isKindOf "CAManBase") then {
- if (ACE_time > _timeOut) exitWith {
- TRACE_4("Start carry person",_unit,_target,_timeOut,ACE_time);
+ if (CBA_missionTime > _timeOut) exitWith {
+ TRACE_4("Start carry person",_unit,_target,_timeOut,CBA_missionTime);
[_unit, _target] call FUNC(carryObject);
[_idPFH] call CBA_fnc_removePerFrameHandler;
};
} else {
- if (ACE_time > _timeOut) exitWith {
- TRACE_4("timeout",_unit,_target,_timeOut,ACE_time);
+ if (CBA_missionTime > _timeOut) exitWith {
+ TRACE_4("timeout",_unit,_target,_timeOut,CBA_missionTime);
[_idPFH] call CBA_fnc_removePerFrameHandler;
// drop if in timeout
@@ -59,7 +59,7 @@ if (_target isKindOf "CAManBase") then {
// wait for the unit to stand up
if (stance _unit == "STAND") exitWith {
- TRACE_4("Start carry object",_unit,_target,_timeOut,ACE_time);
+ TRACE_4("Start carry object",_unit,_target,_timeOut,CBA_missionTime);
[_unit, _target] call FUNC(carryObject);
[_idPFH] call CBA_fnc_removePerFrameHandler;
diff --git a/addons/dragging/functions/fnc_startDrag.sqf b/addons/dragging/functions/fnc_startDrag.sqf
index 24a279e7a7..8c46fbe122 100644
--- a/addons/dragging/functions/fnc_startDrag.sqf
+++ b/addons/dragging/functions/fnc_startDrag.sqf
@@ -39,7 +39,7 @@ _unit selectWeapon primaryWeapon _unit;
[_unit, _target, true] call EFUNC(common,claim);
// can't play action that depends on weapon if it was added the same frame
-[{_this playActionNow "grabDrag";}, _unit] call EFUNC(common,execNextFrame);
+[{_this playActionNow "grabDrag";}, _unit] call CBA_fnc_execNextFrame;
// move a bit closer and adjust direction when trying to pick up a person
if (_target isKindOf "CAManBase") then {
@@ -52,4 +52,4 @@ if (_target isKindOf "CAManBase") then {
// prevents draging and carrying at the same time
_unit setVariable [QGVAR(isDragging), true, true];
-[FUNC(startDragPFH), 0.2, [_unit, _target, ACE_time + 5]] call CBA_fnc_addPerFrameHandler;
+[FUNC(startDragPFH), 0.2, [_unit, _target, CBA_missionTime + 5]] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/dragging/functions/fnc_startDragPFH.sqf b/addons/dragging/functions/fnc_startDragPFH.sqf
index cfa84fe279..c7843cfdc9 100644
--- a/addons/dragging/functions/fnc_startDragPFH.sqf
+++ b/addons/dragging/functions/fnc_startDragPFH.sqf
@@ -20,7 +20,7 @@
#include "script_component.hpp"
#ifdef DEBUG_ENABLED_DRAGGING
- systemChat format ["%1 startDragPFH running", ACE_time];
+ systemChat format ["%1 startDragPFH running", CBA_missionTime];
#endif
params ["_args", "_idPFH"];
@@ -28,20 +28,20 @@ _args params ["_unit", "_target", "_timeOut"];
// handle aborting drag
if !(_unit getVariable [QGVAR(isDragging), false]) exitWith {
- TRACE_4("drag false",_unit,_target,_timeOut,ACE_time);
+ TRACE_4("drag false",_unit,_target,_timeOut,CBA_missionTime);
[_idPFH] call CBA_fnc_removePerFrameHandler;
};
// same as dragObjectPFH, checks if object is deleted or dead OR (target moved away from carrier (weapon disasembled))
if (!alive _target || {_unit distance _target > 10}) then {
- TRACE_4("dead/distance",_unit,_target,_timeOut,ACE_time);
+ TRACE_4("dead/distance",_unit,_target,_timeOut,CBA_missionTime);
[_unit, _target] call FUNC(dropObject);
[_idPFH] call CBA_fnc_removePerFrameHandler;
};
-// timeout. Do nothing. Quit. ACE_time, because anim length is linked to ingame time.
-if (ACE_time > _timeOut) exitWith {
- TRACE_4("timeout",_unit,_target,_timeOut,ACE_time);
+// timeout. Do nothing. Quit. CBA_missionTime, because anim length is linked to ingame time.
+if (CBA_missionTime > _timeOut) exitWith {
+ TRACE_4("timeout",_unit,_target,_timeOut,CBA_missionTime);
[_idPFH] call CBA_fnc_removePerFrameHandler;
// drop if in timeout
@@ -51,7 +51,7 @@ if (ACE_time > _timeOut) exitWith {
// unit is ready to start dragging
if (animationState _unit in DRAG_ANIMATIONS) exitWith {
- TRACE_4("Start Dragging",_unit,_target,_timeOut,ACE_time);
+ TRACE_4("Start Dragging",_unit,_target,_timeOut,CBA_missionTime);
[_unit, _target] call FUNC(dragObject);
[_idPFH] call CBA_fnc_removePerFrameHandler;
diff --git a/addons/explosives/ACE_Settings.hpp b/addons/explosives/ACE_Settings.hpp
index ef6a723d5b..e103b6e018 100644
--- a/addons/explosives/ACE_Settings.hpp
+++ b/addons/explosives/ACE_Settings.hpp
@@ -1,13 +1,17 @@
class ACE_Settings {
- class GVAR(RequireSpecialist) {
+ class GVAR(requireSpecialist) {
+ displayName = CSTRING(RequireSpecialist_DisplayName);
+ description = CSTRING(RequireSpecialist_Description);
value = 0;
typeName = "BOOL";
};
- class GVAR(PunishNonSpecialists) {
+ class GVAR(punishNonSpecialists) {
+ displayName = CSTRING(PunishNonSpecialists_DisplayName);
+ description = CSTRING(PunishNonSpecialists_Description);
value = 1;
typeName = "BOOL";
};
- class GVAR(ExplodeOnDefuse) {
+ class GVAR(explodeOnDefuse) {
displayName = CSTRING(ExplodeOnDefuse_DisplayName);
description = CSTRING(ExplodeOnDefuse_Description);
value = 1;
diff --git a/addons/explosives/ACE_Triggers.hpp b/addons/explosives/ACE_Triggers.hpp
index 280906432f..145ae0804e 100644
--- a/addons/explosives/ACE_Triggers.hpp
+++ b/addons/explosives/ACE_Triggers.hpp
@@ -11,52 +11,52 @@ onSetup parameters:
class Command {
isAttachable = 1;
displayName = CSTRING(clacker_displayName);
- picture = PATHTOF(Data\UI\Clacker.paa);
+ picture = QPATHTOF(Data\UI\Clacker.paa);
onPlace = QUOTE(_this call FUNC(AddClacker);false);
requires[] = {"ACE_Clacker"};
};
class MK16_Transmitter: Command {
isAttachable = 1;
displayName = CSTRING(M152_displayName);
- picture = PATHTOF(Data\UI\MK16_Reciever_ca.paa);
+ picture = QPATHTOF(Data\UI\MK16_Reciever_ca.paa);
requires[] = {"ACE_M26_Clacker"};
};
class DeadManSwitch: Command {
isAttachable = 1;
displayName = CSTRING(DeadManSwitch_displayName);
- picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
+ picture = QPATHTOF(Data\UI\DeadmanSwitch.paa);
requires[] = {"ACE_DeadManSwitch"};
};
class Cellphone: Command {
isAttachable = 1;
displayName = CSTRING(cellphone_displayName);
- picture = PATHTOF(Data\UI\Cellphone_UI.paa);
+ picture = QPATHTOF(Data\UI\Cellphone_UI.paa);
onPlace = QUOTE(_this call FUNC(addCellphoneIED);false);
requires[] = {"ACE_Cellphone"};
};
class PressurePlate {
isAttachable = 0;
displayName = CSTRING(PressurePlate);
- picture = PATHTOF(Data\UI\PressurePlate.paa);
+ picture = QPATHTOF(Data\UI\PressurePlate.paa);
onPlace = QUOTE(false);
};
class IRSensor {
isAttachable = 0;
displayName = CSTRING(IRSensor);
- picture = PATHTOF(Data\UI\PressurePlate.paa);
+ picture = QPATHTOF(Data\UI\PressurePlate.paa);
onPlace = "false";
};
class Timer {
isAttachable = 1;
displayName = CSTRING(timerName);
- picture = PATHTOF(data\UI\Timer.paa);
+ picture = QPATHTOF(data\UI\Timer.paa);
onPlace = QUOTE([ARR_2(_this select 1,(_this select 3) select 0)] call FUNC(startTimer);false);
onSetup = QUOTE(_this call FUNC(openTimerSetUI);true);
};
class Tripwire {
isAttachable = 0;
displayName = CSTRING(TripWire);
- picture = PATHTOF(Data\UI\Tripwire.paa);
+ picture = QPATHTOF(Data\UI\Tripwire.paa);
onPlace = "false";
};
};
diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp
index b651903f59..a4e0d8dbd2 100644
--- a/addons/explosives/CfgModule.hpp
+++ b/addons/explosives/CfgModule.hpp
@@ -3,11 +3,11 @@ class ACE_ModuleExplosive: ACE_Module {
author = ECSTRING(common,ACETeam);
category = "ACE";
displayName = CSTRING(Module_DisplayName);
- function = QUOTE(FUNC(module));
+ function = QFUNC(module);
scope = 2;
isGlobal = 1;
isSingular = 1;
- icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa);
+ icon = QPATHTOF(UI\Icon_Module_Explosives_ca.paa);
class Arguments {
class RequireSpecialist {
displayName = CSTRING(RequireSpecialist_DisplayName);
diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp
index 5f81bde127..dcfb01c489 100644
--- a/addons/explosives/CfgVehicles.hpp
+++ b/addons/explosives/CfgVehicles.hpp
@@ -12,7 +12,7 @@ class CfgVehicles {
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
showDisabled = 1;
priority = 4;
- icon = PATHTOF(UI\Explosives_Menu_ca.paa);
+ icon = QPATHTOF(UI\Explosives_Menu_ca.paa);
insertChildren = QUOTE([_player] call FUNC(addTransmitterActions););
//Sub-menu items
class ACE_Place {
@@ -22,7 +22,7 @@ class CfgVehicles {
insertChildren = QUOTE([_player] call FUNC(addExplosiveActions););
exceptions[] = {"isNotSwimming"};
showDisabled = 1;
- icon = PATHTOF(UI\Place_Explosive_ca.paa);
+ icon = QPATHTOF(UI\Place_Explosive_ca.paa);
priority = 1;
};
class ACE_Cellphone {
@@ -31,7 +31,7 @@ class CfgVehicles {
statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';";
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
showDisabled = 0;
- icon = PATHTOF(Data\UI\Cellphone_UI.paa);
+ icon = QPATHTOF(Data\UI\Cellphone_UI.paa);
priority = 0.8;
};
};
@@ -44,32 +44,24 @@ class CfgVehicles {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
};
- author = "ACE";
+ author = ECSTRING(common,Author);
_generalMacro = "ACE_DefuseObject";
displayName = "ACE Defuse Helper";
- mapSize = 0.2;
- icon = "iconObject_1x2";
model = "\A3\Weapons_f\dummyweapon.p3d";
- scope = 2;
- scopeCurator = 1;
- vehicleClass = "Cargo";
+ scope = 1;
+
class ACE_Actions {
- class ACE_MainActions {
- selection = "";
+ class ACE_Defuse {
distance = 1;
- condition = "true";
- class ACE_Defuse {
- displayName = CSTRING(Defuse);
- condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse));
- statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse););
- exceptions[] = {"isNotSwimming"};
- showDisabled = 0;
- icon = PATHTOF(UI\Defuse_ca.paa);
- priority = 0.8;
- };
+ displayName = CSTRING(Defuse);
+ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse));
+ statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse););
+ exceptions[] = {"isNotSwimming"};
+ icon = QPATHTOF(UI\Defuse_ca.paa);
};
};
};
+
class ACE_Explosives_Place: Items_base_F {
class EventHandlers {
class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {};
@@ -81,8 +73,7 @@ class CfgVehicles {
mapSize = 0.2;
icon = "iconObject_1x2";
model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d";
- scope = 2;
- scopeCurator = 1;
+ scope = 1;
vehicleClass = "Cargo";
class ACE_Actions {
class ACE_MainActions {
@@ -98,7 +89,7 @@ class CfgVehicles {
showDisabled = 0;
exceptions[] = {"isNotSwimming"};
priority = 5;
- icon = QUOTE(PATHTOF(UI\Explosives_Menu_ca.paa));
+ icon = QPATHTOF(UI\Explosives_Menu_ca.paa);
};
class ACE_PickUp {
selection = "";
diff --git a/addons/explosives/CfgWeapons.hpp b/addons/explosives/CfgWeapons.hpp
index cd900b2da3..a3f3b32d4c 100644
--- a/addons/explosives/CfgWeapons.hpp
+++ b/addons/explosives/CfgWeapons.hpp
@@ -11,8 +11,8 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(clacker_displayName);
descriptionShort = CSTRING(clacker_description);
- picture = PATHTOF(Data\UI\Clacker.paa);
- model = QUOTE(PATHTOF(data\ace_m57.p3d));
+ picture = QPATHTOF(Data\UI\Clacker.paa);
+ model = QPATHTOF(data\ace_m57.p3d);
GVAR(Range) = 250;
GVAR(Detonator) = 1;
GVAR(triggerType) = "Command";
@@ -24,7 +24,7 @@ class CfgWeapons {
};
class ACE_M26_Clacker: ACE_Clacker {
displayName = CSTRING(M152_Clacker_displayName);
- picture = PATHTOF(Data\UI\MK26_Transmitter_ca.paa);
+ picture = QPATHTOF(Data\UI\MK26_Transmitter_ca.paa);
GVAR(Range) = 5000;
GVAR(triggerType) = "MK16_Transmitter";
};
@@ -32,7 +32,7 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(DefusalKit_displayName);
descriptionShort = CSTRING(DefusalKit_description);
- picture = PATHTOF(Data\UI\Pliers.paa);
+ picture = QPATHTOF(Data\UI\Pliers.paa);
model = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
class ItemInfo: ACE_ExplosiveItem {
@@ -44,7 +44,7 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(DeadManSwitch_displayName);
descriptionShort = CSTRING(DeadManSwitch_description);
- picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
+ picture = QPATHTOF(Data\UI\DeadmanSwitch.paa);
model = "\A3\weapons_F\ammo\mag_univ.p3d";
GVAR(Range) = 100;
GVAR(Detonator) = 1;
@@ -59,7 +59,7 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(cellphone_displayName);
descriptionShort = CSTRING(cellphone_description);
- picture = PATHTOF(Data\UI\Cellphone_UI.paa);
+ picture = QPATHTOF(Data\UI\Cellphone_UI.paa);
model = "\A3\weapons_F\ammo\mag_univ.p3d";
GVAR(Range) = 15000;
GVAR(Detonator) = 1;
diff --git a/addons/explosives/ExplosivesUI.hpp b/addons/explosives/ExplosivesUI.hpp
index 45582a8564..cf97794d8f 100644
--- a/addons/explosives/ExplosivesUI.hpp
+++ b/addons/explosives/ExplosivesUI.hpp
@@ -113,7 +113,7 @@ class Rsc_ACE_PhoneInterface {
class controls {
class RscPicture_1200: RscPicture {
idc = 1200;
- text = PATHTOF(Data\UI\Cellphone_Background.paa);
+ text = QPATHTOF(Data\UI\Cellphone_Background.paa);
x = 0.231875 * safezoneW + safezoneX;
y = 0.104 * safezoneH + safezoneY;
w = 0.195937 * safezoneW;
diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf
index 57cbecba75..f81cef5f79 100644
--- a/addons/explosives/XEH_postInit.sqf
+++ b/addons/explosives/XEH_postInit.sqf
@@ -17,6 +17,7 @@
//Event for setting explosive placement angle/pitch:
[QGVAR(place), {_this call FUNC(setPosition)}] call EFUNC(common,addEventHandler);
+[QGVAR(startDefuse), FUNC(startDefuse)] call EFUNC(common,addEventHandler);
//When getting knocked out in medical, trigger deadman explosives:
//Event is global, only run on server (ref: ace_medical_fnc_setUnconscious)
@@ -27,6 +28,18 @@ if (isServer) then {
TRACE_1("Knocked Out, Doing Deadman", _unit);
[_unit] call FUNC(onIncapacitated);
}] call EFUNC(common,addEventHandler);
+
+ ["clientRequestsOrientations", {
+ params ["_logic"];
+ TRACE_1("clientRequestsOrientations received:",_logic);
+ // Filter the array before sending it
+ GVAR(explosivesOrientations) = GVAR(explosivesOrientations) select {
+ _x params ["_explosive"];
+ (!isNull _explosive && {alive _explosive})
+ };
+ TRACE_1("serverSendsOrientations sent:",GVAR(explosivesOrientations));
+ ["serverSendsOrientations", _logic, [GVAR(explosivesOrientations)]] call EFUNC(common,targetEvent);
+ }] call EFUNC(common,addEventHandler);
};
if (!hasInterface) exitWith {};
@@ -38,19 +51,7 @@ GVAR(CurrentSpeedDial) = 0;
// In case we are a JIP client, ask the server for orientation of any previously
// placed mine.
-if (isServer) then {
- ["clientRequestsOrientations", {
- params ["_logic"];
- TRACE_1("clientRequestsOrientations received:",_logic);
- // Filter the array before sending it
- GVAR(explosivesOrientations) = GVAR(explosivesOrientations) select {
- _x params ["_explosive"];
- (!isNull _explosive && {alive _explosive})
- };
- TRACE_1("serverSendsOrientations sent:",GVAR(explosivesOrientations));
- ["serverSendsOrientations", _logic, [GVAR(explosivesOrientations)]] call EFUNC(common,targetEvent);
- }] call EFUNC(common,addEventHandler);
-} else {
+if (didJIP) then {
["serverSendsOrientations", {
params ["_explosivesOrientations"];
TRACE_1("serverSendsOrientations received:",_explosivesOrientations);
@@ -59,14 +60,12 @@ if (isServer) then {
TRACE_3("orientation set:",_explosive,_direction,_pitch);
[_explosive, _direction, _pitch] call FUNC(setPosition);
} forEach _explosivesOrientations;
- private _group = group GVAR(localLogic);
deleteVehicle GVAR(localLogic);
GVAR(localLogic) = nil;
- deleteGroup _group;
}] call EFUNC(common,addEventHandler);
// Create a logic to get the client ID
- GVAR(localLogic) = (createGroup sideLogic) createUnit ["Logic", [0,0,0], [], 0, "NONE"];
+ GVAR(localLogic) = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["Logic", [0,0,0], [], 0, "NONE"];
TRACE_1("clientRequestsOrientations sent:",GVAR(localLogic));
["clientRequestsOrientations", [GVAR(localLogic)]] call EFUNC(common,serverEvent);
};
diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp
index 3fc047fa6a..5eb92848c7 100644
--- a/addons/explosives/config.cpp
+++ b/addons/explosives/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_Clacker", "ACE_DefusalKit", "ACE_M26_Clacker", "ACE_DeadManSwitch", "ACE_Cellphone"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"Garth 'L-H' de Wet"};
- authorUrl = "http://garth.snakebiteink.co.za/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Garth 'L-H' de Wet"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/explosives/functions/fnc_addExplosiveActions.sqf b/addons/explosives/functions/fnc_addExplosiveActions.sqf
index e744af6bce..fc494a5fad 100644
--- a/addons/explosives/functions/fnc_addExplosiveActions.sqf
+++ b/addons/explosives/functions/fnc_addExplosiveActions.sqf
@@ -45,7 +45,7 @@ _children = [];
format ["Explosive_%1", _forEachIndex],
format [_name + " (%1)", _itemCount select _forEachIndex],
getText(_x >> "picture"),
- {[{_this call FUNC(setupExplosive)}, _this] call EFUNC(common,execNextFrame)},
+ {[{_this call FUNC(setupExplosive)}, _this] call CBA_fnc_execNextFrame},
{true},
{},
(configName _x)
diff --git a/addons/explosives/functions/fnc_detonateExplosive.sqf b/addons/explosives/functions/fnc_detonateExplosive.sqf
index a01f181635..b7f4893e52 100644
--- a/addons/explosives/functions/fnc_detonateExplosive.sqf
+++ b/addons/explosives/functions/fnc_detonateExplosive.sqf
@@ -49,6 +49,6 @@ if (getNumber (ConfigFile >> "CfgAmmo" >> typeOf (_item select 0) >> "TriggerWhe
if (!isNull _explosive) then {
_explosive setDamage 1;
};
-}, [_item select 0], (_item select 1)] call EFUNC(common,waitAndExecute);
+}, [_item select 0], (_item select 1)] call CBA_fnc_waitAndExecute;
_result
diff --git a/addons/explosives/functions/fnc_dialPhone.sqf b/addons/explosives/functions/fnc_dialPhone.sqf
index 44addcda9f..6bfeac8595 100644
--- a/addons/explosives/functions/fnc_dialPhone.sqf
+++ b/addons/explosives/functions/fnc_dialPhone.sqf
@@ -40,7 +40,7 @@ if (_unit == ace_player) then {
[{
playSound3D [QUOTE(PATHTO_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75];
(_this select 0) setVariable [QGVAR(Dialing), false, true];
- }, [_unit,_explosive select 0], 0.25 * (count _arr - 4)] call EFUNC(common,waitAndExecute);
+ }, [_unit,_explosive select 0], 0.25 * (count _arr - 4)] call CBA_fnc_waitAndExecute;
[_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2)] call FUNC(startTimer);
};
};
diff --git a/addons/explosives/functions/fnc_scriptedExplosive.sqf b/addons/explosives/functions/fnc_scriptedExplosive.sqf
index b4abb204b3..6a554ac09c 100644
--- a/addons/explosives/functions/fnc_scriptedExplosive.sqf
+++ b/addons/explosives/functions/fnc_scriptedExplosive.sqf
@@ -4,7 +4,7 @@
* detonate editor-placed explosives.
*
* Arguments:
- * 0: Explosives objects to detonate
+ * 0: Explosives objects to detonate
* 1: Fuze delay (for each explosive; use negative number for random time up to value)
*
* Return Value:
@@ -18,10 +18,13 @@
*/
#include "script_component.hpp"
-params ["_explosiveArr",["_fuzeTime",0]];
+params [["_explosiveArr", [], [[], objNull]], ["_fuzeTime", 0, [0]]];
+
+if (_explosiveArr isEqualType objNull) then {
+ _explosiveArr = [_explosiveArr];
+};
-private _detTime;
{
- _detTime = if (_fuzeTime < 0) then {random abs _fuzeTime} else {_fuzeTime};
+ private _detTime = if (_fuzeTime < 0) then {random abs _fuzeTime} else {_fuzeTime};
[objNull, -1, [_x, _detTime]] call FUNC(detonateExplosive);
} forEach _explosiveArr;
diff --git a/addons/explosives/functions/fnc_setSpeedDial.sqf b/addons/explosives/functions/fnc_setSpeedDial.sqf
index 9013c812cc..7e68c9016f 100644
--- a/addons/explosives/functions/fnc_setSpeedDial.sqf
+++ b/addons/explosives/functions/fnc_setSpeedDial.sqf
@@ -14,8 +14,7 @@
*
* Public: No
*/
- #include "script_component.hpp"
-
+#include "script_component.hpp"
private ["_speedDial", "_amount"];
_speedDial = ace_player getVariable [QGVAR(SpeedDial), []];
diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf
index 709ea688d5..6dd1094c6a 100644
--- a/addons/explosives/functions/fnc_setupExplosive.sqf
+++ b/addons/explosives/functions/fnc_setupExplosive.sqf
@@ -187,7 +187,7 @@ GVAR(TweakedAngle) = 0;
_unit removeMagazine _magClassname;
_unit playActionNow "PutDown";
_unit setVariable [QGVAR(PlantingExplosive), true];
- [{_this setVariable [QGVAR(PlantingExplosive), false]}, _unit, 1.5] call EFUNC(common,waitAndExecute);
+ [{_this setVariable [QGVAR(PlantingExplosive), false]}, _unit, 1.5] call CBA_fnc_waitAndExecute;
};
} else {
diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf
index 84d7274069..e9ba668e0e 100644
--- a/addons/explosives/functions/fnc_startDefuse.sqf
+++ b/addons/explosives/functions/fnc_startDefuse.sqf
@@ -44,7 +44,7 @@ if (STANCE _unit == "Prone") then {
if (ACE_player != _unit) then {
// If the unit is a player, call the function on the player.
if (isPlayer _unit) then {
- [[_unit, _target], QFUNC(startDefuse), _unit] call EFUNC(common,execRemoteFnc);
+ [QGVAR(startDefuse), _unit, [_unit, _target]] call EFUNC(common,objectEvent);
} else {
_unit playActionNow _actionToPlay;
_unit disableAI "MOVE";
@@ -56,7 +56,7 @@ if (ACE_player != _unit) then {
[_unit, _target] call FUNC(defuseExplosive);
_unit enableAI "MOVE";
_unit enableAI "TARGET";
- }, [_unit, _target], _defuseTime] call EFUNC(common,waitAndExecute);
+ }, [_unit, _target], _defuseTime] call CBA_fnc_waitAndExecute;
};
} else {
_unit playActionNow _actionToPlay;
diff --git a/addons/explosives/functions/fnc_startTimer.sqf b/addons/explosives/functions/fnc_startTimer.sqf
index ca219ed13c..1f529d9765 100644
--- a/addons/explosives/functions/fnc_startTimer.sqf
+++ b/addons/explosives/functions/fnc_startTimer.sqf
@@ -25,4 +25,4 @@ TRACE_2("params",_explosive,_delay);
if (!isNull _explosive) then {
[_explosive, -1, [_explosive, 0]] call FUNC(detonateExplosive);
};
-}, [_explosive], _delay] call EFUNC(common,waitAndExecute);
+}, [_explosive], _delay] call CBA_fnc_waitAndExecute;
diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml
index e3ba902a9b..65d19364de 100644
--- a/addons/explosives/stringtable.xml
+++ b/addons/explosives/stringtable.xml
@@ -46,6 +46,7 @@
Detonuj wszystkie
Detona Tutti
Tout mettre à feu
+ Detonar Tudo
Explosive code: %1
@@ -647,6 +648,9 @@
Mina M6 SLAM (atak od dołu)
Mina M6 SLAM (Ataque Inferior)
Mine M6 SLAM (par le bas)
+ Mina M6 SLAM (base)
+ M6 SLAM (Útok zespoda)
+ Mina M6 SLAM (Ataque Inferior)
M6 SLAM Mine (Side Attack)
@@ -661,6 +665,9 @@
Mina M6 SLAM (atak od boku)
Mina M6 SLAM (Ataque Lateral)
Mine M6 SLAM (de flanc)
+ STR_ACE_Explosives_Module_SLAMBottomAttack_DisplayName M6 SLAM Mine (Bottom Attack) Mine M6 SLAM (par le bas) M6-SLAM-Mine (Bodenangriff) Mina M6 SLAM (base) Mina M6 SLAM (atak od dołu) Mina M6 SLAM (Laterale)
+ M6 SLAM (Útok do strany)
+ Mina M6 SLAM (Ataque Lateral)
Large IED (Urban, Pressure Plate)
@@ -675,6 +682,9 @@
Duży IED (miejski, płyta naciskowa)
IED Grande (Urbano, Placa de presión)
Grand EEI (Urbain, plaque de pression)
+ IED grande (urbano, a pressione)
+ IED, Velké (Městské, Nášlapné)
+ IED Grande (Urbano, Placa de pressão)
Large IED (Dug-in, Pressure Plate)
@@ -689,6 +699,9 @@
Duży IED (zakopany, płyta naciskowa)
IED Grande (Enterrado, Placa de presión)
Grand EEI (Enterré, plaque de pression)
+ IED grande (interrato, a pressione)
+ IED, Velké (Zakopané, Nášlapné)
+ IED Grande (Enterrado, Placa de pressão)
Small IED (Urban, Pressure Plate)
@@ -703,6 +716,9 @@
Mały IED (miejski, płyta naciskowa)
IED Pequeño (Urbano, Placa de presión)
Petit EEI (Urbain, plaque de pression)
+ IED piccolo (urbano, a pressione)
+ IED, Malé (Městské, Nášlapné)
+ IED Pequeno(Urbano, Placa de pressão)
Small IED (Dug-in, Pressure Plate)
@@ -717,6 +733,9 @@
Mały IED (zakopany, płyta naciskowa)
IED Pequeño (Enterrado, Placa de presión)
Petit EEI (Enterré, plaque de pression)
+ IED piccolo (interrato, a pressione)
+ IED, Malé (Zakopané, Nášlapné)
+ IED Pequeno (Enterrado, Placa de pressão)
Connect to %1
@@ -731,4 +750,4 @@
Conectar à %1
-
+
\ No newline at end of file
diff --git a/addons/fastroping/$PBOPREFIX$ b/addons/fastroping/$PBOPREFIX$
index 352dc2c83a..c2389fdaf5 100644
--- a/addons/fastroping/$PBOPREFIX$
+++ b/addons/fastroping/$PBOPREFIX$
@@ -1 +1 @@
-z\ace\addons\fastroping
+z\ace\addons\fastroping
diff --git a/addons/fastroping/CfgMoves.hpp b/addons/fastroping/CfgMoves.hpp
index 94f3fe51f0..b978539432 100644
--- a/addons/fastroping/CfgMoves.hpp
+++ b/addons/fastroping/CfgMoves.hpp
@@ -9,7 +9,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
class States {
class Crew;
class ACE_FastRoping: Crew {
- file = QUOTE(PATHTOF(anim\fastroping.rtm));
+ file = QPATHTOF(anim\fastroping.rtm);
interpolateTo[] = {"Unconscious", 1};
disableWeapons = 1;
disableWeaponsLong = 1;
diff --git a/addons/fastroping/CfgSounds.hpp b/addons/fastroping/CfgSounds.hpp
new file mode 100644
index 0000000000..97479ecafb
--- /dev/null
+++ b/addons/fastroping/CfgSounds.hpp
@@ -0,0 +1,12 @@
+class CfgSounds {
+ class GVAR(Rope) {
+ name = "ACE_Fastroping_Rope";
+ sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_rope.ogg)), 10, 1.0};
+ titles[] = {};
+ };
+ class GVAR(Thud) {
+ name = "ACE_Fastroping_Thud";
+ sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_thud.ogg)), 10, 1.0};
+ titles[] = {};
+ };
+};
\ No newline at end of file
diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp
index 14804d3526..9d45264853 100644
--- a/addons/fastroping/CfgVehicles.hpp
+++ b/addons/fastroping/CfgVehicles.hpp
@@ -20,9 +20,9 @@ class CfgVehicles {
class ACE_moduleEquipFRIES: ACE_Module {
scope = 2;
displayName = CSTRING(Module_FRIES_DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_FRIES_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_FRIES_ca.paa);
category = "ACE";
- function = QUOTE(FUNC(moduleEquipFRIES));
+ function = QFUNC(moduleEquipFRIES);
functionPriority = 10;
isGlobal = 0;
isTriggerActivated = 0;
@@ -35,8 +35,8 @@ class CfgVehicles {
};
};
- class Helicopter;
- class Helicopter_Base_F: Helicopter {
+ class Air;
+ class Helicopter: Air {
class ACE_SelfActions {
class ACE_prepareFRIES {
displayName = CSTRING(Interaction_prepareFRIES);
@@ -68,14 +68,20 @@ class CfgVehicles {
};
};
};
+
+ class Helicopter_Base_F;
class ACE_friesBase: Helicopter_Base_F {
destrType = "";
class Turrets {};
+ class ACE_Actions {};
+ class ACE_SelfActions {};
+ EGVAR(cargo,hasCargo) = 0;
+ EGVAR(cargo,space) = 0;
};
class ACE_friesAnchorBar: ACE_friesBase {
author = "jokoho48";
scope = 1;
- model = QUOTE(PATHTOF(data\friesAnchorBar.p3d));
+ model = QPATHTOF(data\friesAnchorBar.p3d);
animated = 1;
class AnimationSources {
class extendHookRight {
@@ -93,7 +99,7 @@ class CfgVehicles {
class ACE_friesGantry: ACE_friesBase {
author = "jokoho48";
scope = 1;
- model = QUOTE(PATHTOF(data\friesGantry.p3d));
+ model = QPATHTOF(data\friesGantry.p3d);
animated = 1;
class AnimationSources {
class adjustWidth {
@@ -146,7 +152,7 @@ class CfgVehicles {
class GVAR(helper): Helicopter_Base_F {
author = "KoffeinFlummi";
scope = 1;
- model = PATHTOF(data\helper.p3d);
+ model = QPATHTOF(data\helper.p3d);
class ACE_Actions {};
class Turrets {};
};
@@ -203,7 +209,7 @@ class CfgVehicles {
GVAR(enabled) = 2;
GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"};
GVAR(friesType) = "ACE_friesGantryReverse";
- GVAR(friesAttachmentPoint)[] = {1.04, 2.5, -0.34};
+ GVAR(friesAttachmentPoint)[] = {-1.04, 2.5, -0.34};
EQUIP_FRIES_ATTRIBUTE;
};
class Heli_light_03_unarmed_base_F: Heli_light_03_base_F {
diff --git a/addons/fastroping/CfgWaypoints.hpp b/addons/fastroping/CfgWaypoints.hpp
index 4c4da2a7cb..f3303c28ff 100644
--- a/addons/fastroping/CfgWaypoints.hpp
+++ b/addons/fastroping/CfgWaypoints.hpp
@@ -4,8 +4,8 @@ class CfgWaypoints {
class Fastrope {
displayName = CSTRING(Waypoint_Fastrope);
displayNameDebug = "Fastrope";
- file = QUOTE(PATHTOF(functions\fnc_deployAIWaypoint.sqf));
- icon = QUOTE(PATHTOF(UI\Icon_Waypoint.paa));
+ file = QPATHTOF(functions\fnc_deployAIWaypoint.sqf);
+ icon = QPATHTOF(UI\Icon_Waypoint.paa);
};
};
};
diff --git a/addons/difficulties/README.md b/addons/fastroping/README.md
similarity index 53%
rename from addons/difficulties/README.md
rename to addons/fastroping/README.md
index 4aefb4570a..49fcf00960 100644
--- a/addons/difficulties/README.md
+++ b/addons/fastroping/README.md
@@ -1,12 +1,11 @@
-ace_difficulties
-================
-
-Changes the elite difficulty setting to more closely resemble Arma 2.
+ace_fastroping
+==========
+Introducing the ability to fastrope out of heliocopters.
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
+- [BaerMitUmlaut](https://github.com/BaerMitUmlaut)
- [KoffeinFlummi](https://github.com/KoffeinFlummi)
-- [commy2](https://github.com/commy2)
diff --git a/addons/fastroping/config.cpp b/addons/fastroping/config.cpp
index a74abeb3b8..c451a1b0dd 100644
--- a/addons/fastroping/config.cpp
+++ b/addons/fastroping/config.cpp
@@ -6,13 +6,15 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"KoffeinFlummi", "BaerMitUmlaut"};
- authorUrl = "";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"KoffeinFlummi", "BaerMitUmlaut"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
#include "CfgMoves.hpp"
+#include "CfgSounds.hpp"
#include "CfgVehicles.hpp"
#include "CfgWaypoints.hpp"
diff --git a/addons/fastroping/data/sounds/LICENSE.md b/addons/fastroping/data/sounds/LICENSE.md
new file mode 100644
index 0000000000..71835222cd
--- /dev/null
+++ b/addons/fastroping/data/sounds/LICENSE.md
@@ -0,0 +1,6 @@
+Source sounds are adapted and changed.
+
+**Fastroping_Rope (fastroping_rope.ogg):**
+"[Rub.aif](http://freesound.org/people/le_abbaye_Noirlac/sounds/129471/)" by [Tessa Elieff](http://freesound.org/people/le_abbaye_Noirlac/) is [CreativeCommons Attributions 3.0](http://creativecommons.org/licenses/by/3.0/)
+
+All other sounds from helenacm and Adam_N, both under Creative Commons 0 (no attribution required).
\ No newline at end of file
diff --git a/addons/fastroping/data/sounds/fastroping_rope.ogg b/addons/fastroping/data/sounds/fastroping_rope.ogg
new file mode 100644
index 0000000000..ec68da2960
Binary files /dev/null and b/addons/fastroping/data/sounds/fastroping_rope.ogg differ
diff --git a/addons/fastroping/data/sounds/fastroping_thud.ogg b/addons/fastroping/data/sounds/fastroping_thud.ogg
new file mode 100644
index 0000000000..40fd823fcf
Binary files /dev/null and b/addons/fastroping/data/sounds/fastroping_thud.ogg differ
diff --git a/addons/fastroping/functions/fnc_checkVehicleThread.sqf b/addons/fastroping/functions/fnc_checkVehicleThread.sqf
index 0cd0ca3234..38a2cad8c6 100644
--- a/addons/fastroping/functions/fnc_checkVehicleThread.sqf
+++ b/addons/fastroping/functions/fnc_checkVehicleThread.sqf
@@ -21,5 +21,5 @@ params ["_vehicle", "_fries"];
if (isNull _vehicle) then {
deleteVehicle _fries;
} else {
- [FUNC(checkVehicleThread), _this, 5] call EFUNC(common,waitAndExecute);
+ [FUNC(checkVehicleThread), _this, 5] call CBA_fnc_waitAndExecute;
};
diff --git a/addons/fastroping/functions/fnc_cutRopes.sqf b/addons/fastroping/functions/fnc_cutRopes.sqf
index 71fe682f7e..d619a24297 100644
--- a/addons/fastroping/functions/fnc_cutRopes.sqf
+++ b/addons/fastroping/functions/fnc_cutRopes.sqf
@@ -32,10 +32,11 @@ _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
};
};
- detach _dummy;
- deleteVehicle _ropeTop;
+ //Destroy rope
+ //Only delete the hook first so the rope falls down.
+ //Note: ropeDetach was used here before, but the command seems a bit broken.
deleteVehicle _hook;
- [{{deleteVehicle _x} count _this}, [_ropeBottom, _dummy], 60] call EFUNC(common,waitAndExecute);
+ [{{deleteVehicle _x} count _this}, [_ropeTop, _ropeBottom, _dummy], 60] call CBA_fnc_waitAndExecute;
} count _deployedRopes;
_vehicle setVariable [QGVAR(deployedRopes), [], true];
@@ -49,4 +50,4 @@ if (isText (_config >> QGVAR(onCut))) then {
[{
_this setVariable [QGVAR(deploymentStage), 0, true];
-}, _vehicle, _waitTime] call EFUNC(common,waitAndExecute);
+}, _vehicle, _waitTime] call CBA_fnc_waitAndExecute;
diff --git a/addons/fastroping/functions/fnc_deployAI.sqf b/addons/fastroping/functions/fnc_deployAI.sqf
index dd4bfe4e71..843f23cdb5 100644
--- a/addons/fastroping/functions/fnc_deployAI.sqf
+++ b/addons/fastroping/functions/fnc_deployAI.sqf
@@ -64,7 +64,7 @@ _deployTime = 0;
if (getText (_config >> QGVAR(onPrepare)) != "") then {
_deployTime = [_vehicle] call (missionNamespace getVariable (getText (_config >> QGVAR(onPrepare))));
};
-[{[_this] call FUNC(deployRopes)}, _vehicle, _deployTime] call EFUNC(common,waitAndExecute);
+[{[_this] call FUNC(deployRopes)}, _vehicle, _deployTime] call CBA_fnc_waitAndExecute;
driver _vehicle disableAI "MOVE";
DFUNC(deployAIRecursive) = {
@@ -80,8 +80,8 @@ DFUNC(deployAIRecursive) = {
params ["_vehicle"];
private _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
({!(_x select 5)} count (_deployedRopes)) > 0
- }, FUNC(deployAIRecursive), _this] call EFUNC(common,waitUntilAndExecute);
- }, [_vehicle, _unitsToDeploy], 1] call EFUNC(common,waitAndExecute);
+ }, FUNC(deployAIRecursive), _this] call CBA_fnc_waitUntilAndExecute;
+ }, [_vehicle, _unitsToDeploy], 1] call CBA_fnc_waitAndExecute;
} else {
[{
private _deployedRopes = _this getVariable [QGVAR(deployedRopes), []];
@@ -89,8 +89,8 @@ DFUNC(deployAIRecursive) = {
}, {
[_this] call FUNC(cutRopes);
driver _this enableAI "MOVE";
- }, _vehicle] call EFUNC(common,waitUntilAndExecute);
+ }, _vehicle] call CBA_fnc_waitUntilAndExecute;
};
};
-[FUNC(deployAIRecursive), [_vehicle, _unitsToDeploy], _deployTime + 4] call EFUNC(common,waitAndExecute);
+[FUNC(deployAIRecursive), [_vehicle, _unitsToDeploy], _deployTime + 4] call CBA_fnc_waitAndExecute;
diff --git a/addons/fastroping/functions/fnc_deployRopes.sqf b/addons/fastroping/functions/fnc_deployRopes.sqf
index af79dd2cfe..c944b2c3cb 100644
--- a/addons/fastroping/functions/fnc_deployRopes.sqf
+++ b/addons/fastroping/functions/fnc_deployRopes.sqf
@@ -35,14 +35,13 @@ _hookAttachment = _vehicle getVariable [QGVAR(FRIES), _vehicle];
_origin = getPosATL _hook;
- _dummy = createVehicle [QGVAR(helper), _origin, [], 0, "CAN_COLLIDE"];
+ _dummy = createVehicle [QGVAR(helper), _origin vectorAdd [0, 0, -1], [], 0, "CAN_COLLIDE"];
_dummy allowDamage false;
_dummy disableCollisionWith _vehicle;
- _dummy attachTo [_hook, [0, 0, 0]];
_ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5];
_ropeBottom = ropeCreate [_dummy, [0, 0, 0], 1];
- ropeUnwind [_ropeBottom, 30, 35, false];
+ ropeUnwind [_ropeBottom, 30, 34.5, false];
_ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}];
_ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}];
diff --git a/addons/fastroping/functions/fnc_equipFRIES.sqf b/addons/fastroping/functions/fnc_equipFRIES.sqf
index eaf603f938..6d714611be 100644
--- a/addons/fastroping/functions/fnc_equipFRIES.sqf
+++ b/addons/fastroping/functions/fnc_equipFRIES.sqf
@@ -35,6 +35,6 @@ if !(isNumber (_config >> QGVAR(enabled))) then {
[_vehicle] call FUNC(cutRopes);
};
}];
- [FUNC(checkVehicleThread), [_vehicle, _fries], 5] call EFUNC(common,waitAndExecute);
+ [FUNC(checkVehicleThread), [_vehicle, _fries], 5] call CBA_fnc_waitAndExecute;
};
};
diff --git a/addons/fastroping/functions/fnc_fastRope.sqf b/addons/fastroping/functions/fnc_fastRope.sqf
index bf2730efc7..e3bd21482f 100644
--- a/addons/fastroping/functions/fnc_fastRope.sqf
+++ b/addons/fastroping/functions/fnc_fastRope.sqf
@@ -35,6 +35,6 @@ _deployedRopes set [_usableRopeIndex, _usableRope];
_vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true];
//Start server PFH asap
-[QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex]] call EFUNC(common,serverEvent);
+[QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex, false]] call EFUNC(common,serverEvent);
moveOut _unit;
-[FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex]] call CBA_fnc_addPerFrameHandler;
+[FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex, diag_tickTime]] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf
index 6a4e810ff5..3a1e8d5707 100644
--- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf
+++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf
@@ -17,7 +17,7 @@
#include "script_component.hpp"
params ["_arguments", "_pfhHandle"];
-_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex"];
+_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex", "_timeToPlayRopeSound"];
_rope params ["_attachmentPoint", "_ropeTop", "_ropeBottom", "_dummy", "_hook", "_occupied"];
private ["_vectorUp", "_vectorDir", "_origin"];
@@ -26,16 +26,24 @@ if (vehicle _unit != _unit) exitWith {};
//Start fast roping
if (animationState _unit != "ACE_FastRoping") exitWith {
- detach _dummy;
_unit disableCollisionWith _dummy;
_unit attachTo [_dummy, [0, 0, -1.45]];
[_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation);
};
+
//End of fast rope
if (isNull attachedTo _unit) exitWith {
+ TRACE_1("exit pfeh",_unit);
[_unit, "", 2] call EFUNC(common,doAnimation);
_unit setVectorUp [0, 0, 1];
+ playSound QGVAR(Thud);
+
[_pfhHandle] call CBA_fnc_removePerFrameHandler;
};
+
+if (diag_tickTime > _timeToPlayRopeSound) then {
+ _arguments set [4, (_timeToPlayRopeSound + 1)];
+ playSound QGVAR(Rope);
+};
diff --git a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf
index 627ed959bc..2ebffe680e 100644
--- a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf
+++ b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf
@@ -17,7 +17,7 @@
#include "script_component.hpp"
params ["_arguments", "_pfhHandle"];
-_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex"];
+_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex", "_hasBeenAttached"];
_rope params ["_attachmentPoint", "_ropeTop", "_ropeBottom", "_dummy", "_hook", "_occupied"];
private ["_vectorUp", "_vectorDir", "_origin"];
@@ -25,7 +25,7 @@ private ["_vectorUp", "_vectorDir", "_origin"];
if (vehicle _unit != _unit) exitWith {};
//Start fast roping
-if (animationState _unit != "ACE_FastRoping") exitWith {
+if (getMass _dummy != 80) exitWith {
//Fix for twitchyness
_dummy setMass 80;
_dummy setCenterOfMass [0, 0, -2];
@@ -37,8 +37,15 @@ if (animationState _unit != "ACE_FastRoping") exitWith {
ropeUnwind [_ropeBottom, 6, 0.5];
};
-//Check if rope broke and unit is falling
-if (isNull attachedTo _unit) exitWith {
+//Check if the player has been attached to the rope yet
+if (!_hasBeenAttached && {!(isNull attachedTo _unit)}) then {
+ _hasBeenAttached = true;
+ _arguments set [4, true];
+};
+
+//Exit when the unit has been detached and is falling (rope broke, heli flew too fast, etc.)
+//Make sure this isn't executed before the unit is actually fastroping
+if (_hasBeenAttached && {isNull attachedTo _unit}) exitWith {
[_pfhHandle] call CBA_fnc_removePerFrameHandler;
};
@@ -54,14 +61,14 @@ if (((getPos _unit select 2) < 0.2) || {ropeLength _ropeTop == 34.5} || {vectorM
deleteVehicle _ropeBottom;
_origin = getPosASL _hook;
- _dummy attachTo [_hook, [0, 0, 0]];
+ _dummy setPosASL (_origin vectorAdd [0, 0, -1]);
//Restore original mass and center of mass
_dummy setMass 40;
_dummy setCenterOfMass [0.000143227,0.00105986,-0.246147];
_ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5];
- _ropeBottom = ropeCreate [_dummy, [0, 0, 0], 35];
+ _ropeBottom = ropeCreate [_dummy, [0, 0, 0], 34.5];
_ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}];
_ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}];
diff --git a/addons/fastroping/functions/fnc_onCutCommon.sqf b/addons/fastroping/functions/fnc_onCutCommon.sqf
index 404f94e9d8..004c176b65 100644
--- a/addons/fastroping/functions/fnc_onCutCommon.sqf
+++ b/addons/fastroping/functions/fnc_onCutCommon.sqf
@@ -30,7 +30,7 @@ if !(isNull _fries) then {
_this animate ["dvere1_posunZ", 0];
_this animate ["dvere2_posunZ", 0];
_this setVariable [QGVAR(doorsLocked), false, true];
- }, _vehicle, 2] call EFUNC(common,waitAndExecute);
+ }, _vehicle, 2] call CBA_fnc_waitAndExecute;
4
} else {
diff --git a/addons/fastroping/functions/fnc_onPrepareCommon.sqf b/addons/fastroping/functions/fnc_onPrepareCommon.sqf
index 5e8bf931bb..37eb6c7eb8 100644
--- a/addons/fastroping/functions/fnc_onPrepareCommon.sqf
+++ b/addons/fastroping/functions/fnc_onPrepareCommon.sqf
@@ -35,7 +35,7 @@ if !(isNull _fries) then {
[{
_this animate ["extendHookRight", 1];
_this animate ["extendHookLeft", 1];
- }, _fries, 2] call EFUNC(common,waitAndExecute);
+ }, _fries, 2] call CBA_fnc_waitAndExecute;
_waitTime = 4;
};
diff --git a/addons/fastroping/functions/fnc_prepareFRIES.sqf b/addons/fastroping/functions/fnc_prepareFRIES.sqf
index 4896259014..e4bce8458c 100644
--- a/addons/fastroping/functions/fnc_prepareFRIES.sqf
+++ b/addons/fastroping/functions/fnc_prepareFRIES.sqf
@@ -29,4 +29,4 @@ if (isText (_config >> QGVAR(onPrepare))) then {
[{
_this setVariable [QGVAR(deploymentStage), 2, true];
-}, _vehicle, _waitTime] call EFUNC(common,waitAndExecute);
+}, _vehicle, _waitTime] call CBA_fnc_waitAndExecute;
diff --git a/addons/fastroping/script_component.hpp b/addons/fastroping/script_component.hpp
index ccfa2c3e56..3770bfe0d4 100644
--- a/addons/fastroping/script_component.hpp
+++ b/addons/fastroping/script_component.hpp
@@ -1,6 +1,11 @@
#define COMPONENT fastroping
#include "\z\ace\addons\main\script_mod.hpp"
+// #define DEBUG_MODE_FULL
+// #define DISABLE_COMPILE_CACHE
+// #define CBA_DEBUG_SYNCHRONOUS
+// #define ENABLE_PERFORMANCE_COUNTERS
+
#ifdef DEBUG_ENABLED_FASTROPING
#define DEBUG_MODE_FULL
#endif
diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml
index f6c0f34826..6d64fc24f5 100644
--- a/addons/fastroping/stringtable.xml
+++ b/addons/fastroping/stringtable.xml
@@ -1,4 +1,4 @@
-
+
@@ -7,6 +7,9 @@
Wyposaż FRIES
Equiper le FRIES
Equipar FRIES
+ Equipaggia la FRIES
+ Vybavit FRIES
+ Equipar FRIES
Equips compatible helicopters with a Fast Rope Insertion Extraction System.
@@ -14,6 +17,9 @@
Wyposaża kompatybilne helikoptery w zestaw Fast Rope Insertion Extraction System.
Equipe les hélicoptères compatibles avec un Module Fast Rope Insertion Extraction System.
Equipar helicoptero compatible con un Sistema de Inserción Extracción Fast Rope.
+ Equipagga l'elicottero compatibile con il Fast Rope Insertion Exstraction System
+ Vybavit kompatibilní vrtulníky systémem Fast Rope Insertion Extraction (FRIES).
+ Equipa um helicóptero compatível com o Fast Rope Insertion Exctraction System.
Prepare fast roping system
@@ -21,6 +27,9 @@
Przygotuj system zjazdu na linach
Préparer le système de corde lisse
Preparar el sistema fast roping
+ Prepara le corde
+ Připravit systém slaňování
+ Prepara sistema de descida rápida
Deploy ropes
@@ -28,6 +37,9 @@
Wypuść liny
Déployer les cordes
Desplegar cuerdas
+ Srotola le corde
+ Připravit lana
+ Jogar cordas
Fast rope
@@ -35,6 +47,9 @@
Zjedź na linie
Descendre à la corde
Descender por la cuerda
+ Scendi sulla corda
+ SLANIT
+ Descida rápida
Cut ropes
@@ -42,6 +57,9 @@
Odetnij liny
Détacher les cordes
Cortar cuerdas
+ Taglia le corde
+ Odříznout lano
+ Cortar cordas
Equip helicopter with FRIES
@@ -49,6 +67,9 @@
Wyposaż helikopter w FRIES
Equiper l'hélicoptère avec le FRIED
Equipar helicoptero con FRIES
+ Equipaggia l'elicottero con FRIES
+ Vybavit vrtulník pomocí FRIES
+ Equipar helicóptero com FRIES
Equips the selected helicopter with a Fast Rope Insertion Extraction System
@@ -56,10 +77,15 @@
Wyposaża wybrany helikopter w zestaw Fast Rope Insertion Extraction System
Equipe l'hélicoptère sélectionné avec un Fast Rope Insertion Extraction System
Equipa el helicoptero seleccionado con un Sistema de Inserción Extracción Fast Rope
+ Equipaggia l'elicottero selezionato con il Fast Rope Insertion Extraction System
+ Vybavit vybraný vrtulník systémem Fast Rope Insertion Extraction (FRIES)
+ Equipa um helicóptero selecionado com um sistema de Fast Rope Insertion Extraction System
LET UNITS FAST ROPE
EINHEITEN ABSEILEN LASSEN
+ SCENDI DALLE CORDE
+ Equipa o helicóptero selecionado com o Fast Rope Insertion Extraction System
-
+
\ No newline at end of file
diff --git a/addons/fcs/ACE_UI.hpp b/addons/fcs/ACE_UI.hpp
new file mode 100644
index 0000000000..ca35779f36
--- /dev/null
+++ b/addons/fcs/ACE_UI.hpp
@@ -0,0 +1,7 @@
+class ACE_UI {
+ class gunnerZeroing {
+ class conditions {
+ ADDON = "false";
+ };
+ };
+};
diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp
index 12edf02ba3..a38cee5d7d 100644
--- a/addons/fcs/config.cpp
+++ b/addons/fcs/config.cpp
@@ -6,13 +6,15 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"KoffeinFlummi","BadGuy (simon84)","commy2"};
- authorUrl = "https://github.com/KoffeinFlummi/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"KoffeinFlummi","BadGuy (simon84)","commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
+#include "ACE_UI.hpp"
#include "CfgAmmo.hpp"
#include "CfgMagazines.hpp"
diff --git a/addons/fcs/functions/fnc_adjustRange.sqf b/addons/fcs/functions/fnc_adjustRange.sqf
index f6f543d35a..bed9389716 100644
--- a/addons/fcs/functions/fnc_adjustRange.sqf
+++ b/addons/fcs/functions/fnc_adjustRange.sqf
@@ -22,6 +22,7 @@ private _min = getNumber (_turretConfig >> QGVAR(MinDistance));
private _max = getNumber (_turretConfig >> QGVAR(MaxDistance));
private _distance = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], _min];
+TRACE_4("",_distance,_delta,_min,_max);
_distance = _distance + _delta;
_distance = _distance min _max;
diff --git a/addons/fcs/functions/fnc_calculateSolution.sqf b/addons/fcs/functions/fnc_calculateSolution.sqf
index 9908832824..6d489de006 100644
--- a/addons/fcs/functions/fnc_calculateSolution.sqf
+++ b/addons/fcs/functions/fnc_calculateSolution.sqf
@@ -15,6 +15,7 @@
*/
#include "script_component.hpp"
params ["_vehicle","_turret","_distance","_angleTarget"];
+TRACE_4("params",_vehicle,_turret,_distance,_angleTarget);
private _FCSMagazines = [];
private _FCSElevation = [];
diff --git a/addons/fcs/functions/fnc_canUseFCS.sqf b/addons/fcs/functions/fnc_canUseFCS.sqf
index 91b49554c2..3899584788 100644
--- a/addons/fcs/functions/fnc_canUseFCS.sqf
+++ b/addons/fcs/functions/fnc_canUseFCS.sqf
@@ -8,9 +8,13 @@
* Return Value:
* Boolean
*
+ * Example:
+ * [] call ace_fcs_fnc_canUseFCS
+ *
* Public: No
*/
#include "script_component.hpp"
getNumber ([configFile >> "CfgVehicles" >> typeOf vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex)] call EFUNC(common,getTurretConfigPath) >> QGVAR(Enabled)) == 1
-&& {cameraView == "GUNNER"} // return
+&& {cameraView == "GUNNER"}
+&& {!([ACE_player] call CBA_fnc_canUseWeapon)} //Not Turned Out
diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf
index a9f4975780..4c9b7d8b85 100644
--- a/addons/fcs/functions/fnc_firedEH.sqf
+++ b/addons/fcs/functions/fnc_firedEH.sqf
@@ -16,10 +16,11 @@
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
private _FCSMagazines = _vehicle getVariable [format ["%1_%2", QGVAR(Magazines), _turret], []];
-private _FCSElevation = _vehicle getVariable format ["%1_%2", QGVAR(Elevation), _turret];
if !(_magazine in _FCSMagazines) exitWith {};
+private _FCSElevation = _vehicle getVariable format ["%1_%2", QGVAR(Elevation), _turret];
+
// GET ELEVATION OFFSET OF CURRENT MAGAZINE
private _offset = 0;
diff --git a/addons/fcs/functions/fnc_keyDown.sqf b/addons/fcs/functions/fnc_keyDown.sqf
index e61baed136..3c4943badf 100644
--- a/addons/fcs/functions/fnc_keyDown.sqf
+++ b/addons/fcs/functions/fnc_keyDown.sqf
@@ -29,7 +29,7 @@ private _distance = [
if !(!GVAR(enabled) && FUNC(canUseFCS)) exitWith {};
GVAR(Enabled) = true;
-GVAR(time) = ACE_time;
+GVAR(time) = CBA_missionTime;
private _weaponDirection = _vehicle weaponDirection (_vehicle currentWeaponTurret _turret); // @todo doesn't work for sub turrets
diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf
index 919ac3a58e..a07f5d5d35 100644
--- a/addons/fcs/functions/fnc_keyUp.sqf
+++ b/addons/fcs/functions/fnc_keyUp.sqf
@@ -14,6 +14,7 @@
#include "script_component.hpp"
params ["_vehicle", "_turret", "_distance", ["_showHint", false], ["_playSound", true]];
+TRACE_5("params",_vehicle,_turret,_distance,_showHint,_playSound);
private _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call EFUNC(common,getTurretConfigPath);
@@ -23,6 +24,8 @@ if (isNil "_distance") then {
getNumber (_turretConfig >> QGVAR(MaxDistance)),
getNumber (_turretConfig >> QGVAR(MinDistance))
] call FUNC(getRange);
+} else {
+ ((uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]) displayCtrl 1713151) ctrlSetText ([_distance, 4, 0] call CBA_fnc_formatNumber);
};
// MOVING TARGETS
@@ -41,10 +44,10 @@ private _angleTarget = asin (_weaponDirection select 2);
private _movingAzimuth = 0;
-if (ACE_time - GVAR(time) > 1 && GVAR(time) != -1 && isNil {_this select 2}) then {
+if (CBA_missionTime - GVAR(time) > 1 && GVAR(time) != -1 && isNil {_this select 2}) then {
// calculate speed of target
private _posTarget = (getPosASL _vehicle) vectorAdd (_weaponDirection vectorMultiply _distance);
- private _velocityTarget = (_posTarget vectorDiff GVAR(position)) vectorMultiply (1 / (ACE_time - GVAR(time)));
+ private _velocityTarget = (_posTarget vectorDiff GVAR(position)) vectorMultiply (1 / (CBA_missionTime - GVAR(time)));
// estimate time to target
private _magazine = _vehicle currentMagazineTurret _turret;
diff --git a/addons/fcs/stringtable.xml b/addons/fcs/stringtable.xml
index 035d9d7a36..8750d2a4e3 100644
--- a/addons/fcs/stringtable.xml
+++ b/addons/fcs/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/finger/CfgVehicles.hpp b/addons/finger/CfgVehicles.hpp
index 74229968e4..8125e7f2f5 100644
--- a/addons/finger/CfgVehicles.hpp
+++ b/addons/finger/CfgVehicles.hpp
@@ -4,7 +4,7 @@ class CfgVehicles {
scope = 2;
category = "ACE";
displayName = CSTRING(moduleSettings_displayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_finger_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_finger_ca.paa);
function = QFUNC(moduleSettings);
isGlobal = 0;
isSingular = 1;
diff --git a/addons/finger/XEH_postInit.sqf b/addons/finger/XEH_postInit.sqf
index 394c0cfd3b..94a22d7224 100644
--- a/addons/finger/XEH_postInit.sqf
+++ b/addons/finger/XEH_postInit.sqf
@@ -11,7 +11,7 @@ GVAR(pfeh_id) = -1;
if (!GVAR(enabled)) exitWith {};
[QGVAR(fingered), {_this call FUNC(incomingFinger)}] call EFUNC(common,addEventHandler);
-
+
["ACE3 Common",
QGVAR(finger),
[(localize LSTRING(keyComb)), (localize LSTRING(keyComb_description))],
diff --git a/addons/finger/config.cpp b/addons/finger/config.cpp
index 2cc3be5ddd..fa953b4298 100644
--- a/addons/finger/config.cpp
+++ b/addons/finger/config.cpp
@@ -1,18 +1,19 @@
-#include "script_component.hpp"
-
-class CfgPatches {
- class ADDON {
- units[] = {QGVAR(moduleSettings)};
- weapons[] = {};
- requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_common"};
- author[] = {"Drill"};
- authorUrl = "https://github.com/TheDrill/";
- VERSION_CONFIG;
- };
-};
-
-
-#include "ACE_Settings.hpp"
-#include "CfgEventHandlers.hpp"
-#include "CfgVehicles.hpp"
+#include "script_component.hpp"
+
+class CfgPatches {
+ class ADDON {
+ units[] = {QGVAR(moduleSettings)};
+ weapons[] = {};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {"ace_common"};
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Drill"};
+ url = ECSTRING(main,URL);
+ VERSION_CONFIG;
+ };
+};
+
+
+#include "ACE_Settings.hpp"
+#include "CfgEventHandlers.hpp"
+#include "CfgVehicles.hpp"
diff --git a/addons/finger/functions/fnc_incomingFinger.sqf b/addons/finger/functions/fnc_incomingFinger.sqf
index 02c870a519..0b21bd4930 100644
--- a/addons/finger/functions/fnc_incomingFinger.sqf
+++ b/addons/finger/functions/fnc_incomingFinger.sqf
@@ -27,7 +27,7 @@ _fingerPos = if (_sourceUnit == ACE_player) then {
_fingerPosPrecise vectorAdd [random (2*FP_RANDOMIZATION_X) - FP_RANDOMIZATION_X, random (2*FP_RANDOMIZATION_X) - FP_RANDOMIZATION_X, random (2*FP_RANDOMIZATION_Y) - FP_RANDOMIZATION_Y]
};
-_data = [ACE_diagTime, _fingerPos, ([_sourceUnit, false, true] call EFUNC(common,getName))];
+_data = [diag_tickTime, _fingerPos, ([_sourceUnit, false, true] call EFUNC(common,getName))];
HASH_SET(GVAR(fingersHash), _sourceUnit, _data);
if (GVAR(pfeh_id) == -1) then {
diff --git a/addons/finger/functions/fnc_keyPress.sqf b/addons/finger/functions/fnc_keyPress.sqf
index 1ce83d62dc..f569331eb7 100644
--- a/addons/finger/functions/fnc_keyPress.sqf
+++ b/addons/finger/functions/fnc_keyPress.sqf
@@ -25,9 +25,9 @@ if ((ACE_player != vehicle ACE_player) && {!((vehicle ACE_player) isKindOf "Stat
//Check camera view (not in GUNNER)
if !(cameraView in ["INTERNAL", "EXTERNAL"]) exitWith {false};
//Exit if run recently (run every 1 seconds)
-if (ACE_diagTime < (GVAR(lastFPTime) + FP_ACTION_TIMEOUT)) exitWith {true};
+if (diag_tickTime < (GVAR(lastFPTime) + FP_ACTION_TIMEOUT)) exitWith {true};
-GVAR(lastFPTime) = ACE_diagTime;
+GVAR(lastFPTime) = diag_tickTime;
_fingerPosPrecise = positionCameraToWorld [0, 0, FP_DISTANCE];
_playerEyePos = eyePos ACE_player;
diff --git a/addons/finger/functions/fnc_perFrameEH.sqf b/addons/finger/functions/fnc_perFrameEH.sqf
index 61c8f077ab..41fb718146 100644
--- a/addons/finger/functions/fnc_perFrameEH.sqf
+++ b/addons/finger/functions/fnc_perFrameEH.sqf
@@ -31,7 +31,7 @@ _iconSize = BASE_SIZE * _fovCorrection;
{
_data = HASH_GET(GVAR(fingersHash), _x);
_data params ["_lastTime", "_pos", "_name"];
- _timeLeftToShow = _lastTime + FP_TIMEOUT - ACE_diagTime;
+ _timeLeftToShow = _lastTime + FP_TIMEOUT - diag_tickTime;
if (_timeLeftToShow <= 0) then {
HASH_REM(GVAR(fingersHash), _x);
} else {
@@ -41,7 +41,7 @@ _iconSize = BASE_SIZE * _fovCorrection;
_drawColor set [3, ((_drawColor select 3) * (_timeLeftToShow / 0.5))];
};
- drawIcon3D [QUOTE(PATHTOF(UI\fp_icon2.paa)), _drawColor, _pos, _iconSize, _iconSize, 0, _name, 1, 0.03, "RobotoCondensed"];
+ drawIcon3D [QPATHTOF(UI\fp_icon2.paa), _drawColor, _pos, _iconSize, _iconSize, 0, _name, 1, 0.03, "RobotoCondensed"];
};
} count (GVAR(fingersHash) select 0);
diff --git a/addons/flashlights/CfgWeapons.hpp b/addons/flashlights/CfgWeapons.hpp
index 09fe70d764..84edac6c85 100644
--- a/addons/flashlights/CfgWeapons.hpp
+++ b/addons/flashlights/CfgWeapons.hpp
@@ -17,8 +17,8 @@ class CfgWeapons {
class ACE_Flashlight_MX991: ACE_ItemCore {
displayName = CSTRING(MX991_DisplayName);
descriptionShort = CSTRING(MX991_Description);
- model = QUOTE(PATHTOF(data\MX_991.p3d));
- picture = PATHTOF(UI\mx991_ca.paa);
+ model = QPATHTOF(data\MX_991.p3d);
+ picture = QPATHTOF(UI\mx991_ca.paa);
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 1;
@@ -32,8 +32,8 @@ class CfgWeapons {
class ACE_Flashlight_KSF1: ACE_ItemCore {
displayName = CSTRING(KSF1_DisplayName);
descriptionShort = CSTRING(KSF1_Description);
- model = QUOTE(PATHTOF(data\KSF_1.p3d));
- picture = PATHTOF(UI\ksf1_ca.paa);
+ model = QPATHTOF(data\KSF_1.p3d);
+ picture = QPATHTOF(UI\ksf1_ca.paa);
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 1;
@@ -47,8 +47,8 @@ class CfgWeapons {
class ACE_Flashlight_XL50: ACE_ItemCore {
displayName = CSTRING(XL50_DisplayName);
descriptionShort = CSTRING(XL50_Description);
- model = QUOTE(PATHTOF(data\Maglight.p3d));
- picture = PATHTOF(UI\xl50_ca.paa);
+ model = QPATHTOF(data\Maglight.p3d);
+ picture = QPATHTOF(UI\xl50_ca.paa);
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 1;
diff --git a/addons/flashlights/config.cpp b/addons/flashlights/config.cpp
index b34c4b8000..08349be0a7 100644
--- a/addons/flashlights/config.cpp
+++ b/addons/flashlights/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_Flashlight_MX991", "ACE_Flashlight_KSF1", "ACE_Flashlight_XL50"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"voiper"};
- authorUrl = "https://github.com/voiperr/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"voiper"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/flashsuppressors/CfgWeapons.hpp b/addons/flashsuppressors/CfgWeapons.hpp
index ae957ba4b0..e807dc2ae9 100644
--- a/addons/flashsuppressors/CfgWeapons.hpp
+++ b/addons/flashsuppressors/CfgWeapons.hpp
@@ -29,32 +29,73 @@ class asdg_MuzzleSlot_45ACP_SMG: asdg_MuzzleSlot { // for .45ACP universal mount
ACE_muzzle_mzls_smg_01 = 1;
};
};
+class asdg_MuzzleSlot_762MG: asdg_MuzzleSlot { // for 7.62, 6.5 and 5.56 universal mount MG suppressors
+ class compatibleItems {
+ ACE_muzzle_mzls_B = 1;
+ };
+};
class MuzzleSlot;
class CfgWeapons {
-
- /* MX */
-
- class Rifle;
- class Rifle_Base_F: Rifle {
+ class Rifle_Base_F;
+
+ class Rifle_Long_Base_F: Rifle_Base_F {
class WeaponSlotsInfo;
};
- class arifle_MX_Base_F: Rifle_Base_F {
+ /* MX */
+ class arifle_MX_Base_F: Rifle_Base_F {
+ class WeaponSlotsInfo;
+ };
+
+ class arifle_MXC_F: arifle_MX_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
- class MuzzleSlot: MuzzleSlot {
- compatibleItems[] += {"ACE_muzzle_mzls_H"};
+ class MuzzleSlot: asdg_MuzzleSlot_762 {
+ class compatibleItems: compatibleItems {
+ ACE_muzzle_mzls_H = 1;
+ ACE_muzzle_mzls_B = 0;
+ };
+ };
+ };
+ };
+ class arifle_MX_F: arifle_MX_Base_F {
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ class MuzzleSlot: asdg_MuzzleSlot_762 {
+ class compatibleItems: compatibleItems {
+ ACE_muzzle_mzls_H = 1;
+ ACE_muzzle_mzls_B = 0;
+ };
+ };
+ };
+ };
+ class arifle_MX_GL_F: arifle_MX_Base_F {
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ class MuzzleSlot: asdg_MuzzleSlot_762 {
+ class compatibleItems: compatibleItems {
+ ACE_muzzle_mzls_H = 1;
+ ACE_muzzle_mzls_B = 0;
+ };
};
};
};
-
class arifle_MX_SW_F: arifle_MX_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
- class MuzzleSlot: MuzzleSlot {
- // Shit is broken again
- //compatibleItems[] += {"ACE_muzzle_mzls_H"};
- compatibleItems[] = {"muzzle_snds_H","muzzle_snds_H_SW","ACE_muzzle_mzls_H"};
+ class MuzzleSlot: asdg_MuzzleSlot_762MG {
+ class compatibleItems: compatibleItems {
+ ACE_muzzle_mzls_H = 1;
+ ACE_muzzle_mzls_B = 0;
+ };
+ };
+ };
+ };
+ class arifle_MXM_F: arifle_MX_Base_F {
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ class MuzzleSlot: asdg_MuzzleSlot_762 {
+ class compatibleItems: compatibleItems {
+ ACE_muzzle_mzls_H = 1;
+ ACE_muzzle_mzls_B = 0;
+ };
};
};
};
@@ -62,41 +103,49 @@ class CfgWeapons {
/* Katiba */
- class arifle_katiba_Base_F: Rifle_Base_F {
+ class arifle_Katiba_Base_F: Rifle_Base_F {
+ class WeaponSlotsInfo;
+ };
+ class arifle_Katiba_F: arifle_Katiba_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
- class MuzzleSlot: MuzzleSlot {
- compatibleItems[] += {"ACE_muzzle_mzls_H"};
+ class MuzzleSlot: asdg_MuzzleSlot_762 {
+ class compatibleItems: compatibleItems {
+ ACE_muzzle_mzls_H = 1;
+ ACE_muzzle_mzls_B = 0;
+ };
+ };
+ };
+ };
+ class arifle_Katiba_C_F: arifle_Katiba_Base_F {
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ class MuzzleSlot: asdg_MuzzleSlot_762 {
+ class compatibleItems: compatibleItems {
+ ACE_muzzle_mzls_H = 1;
+ ACE_muzzle_mzls_B = 0;
+ };
+ };
+ };
+ };
+ class arifle_Katiba_GL_F: arifle_Katiba_Base_F {
+ class WeaponSlotsInfo: WeaponSlotsInfo {
+ class MuzzleSlot: asdg_MuzzleSlot_762 {
+ class compatibleItems: compatibleItems {
+ ACE_muzzle_mzls_H = 1;
+ ACE_muzzle_mzls_B = 0;
+ };
};
};
};
/* Other */
-
- class Rifle_Long_Base_F: Rifle_Base_F {
- class WeaponSlotsInfo;
- };
-
- class DMR_01_base_F: Rifle_Long_Base_F {
- class WeaponSlotsInfo: WeaponSlotsInfo {
- class MuzzleSlot: MuzzleSlot {
- compatibleItems[] += {"ACE_muzzle_mzls_B"};
- };
- };
- };
-
class LMG_Mk200_F: Rifle_Long_Base_F {
class WeaponSlotsInfo: WeaponSlotsInfo {
- class MuzzleSlot: MuzzleSlot {
- compatibleItems[] += {"ACE_muzzle_mzls_H"};
- };
- };
- };
-
- class LMG_Zafir_F: Rifle_Long_Base_F {
- class WeaponSlotsInfo: WeaponSlotsInfo {
- class MuzzleSlot: MuzzleSlot {
- compatibleItems[] += {"ACE_muzzle_mzls_B"};
+ class MuzzleSlot: asdg_MuzzleSlot_762MG {
+ class compatibleItems: compatibleItems {
+ ACE_muzzle_mzls_H = 1;
+ ACE_muzzle_mzls_B = 0;
+ };
};
};
};
diff --git a/addons/flashsuppressors/config.cpp b/addons/flashsuppressors/config.cpp
index b8e0c1e120..378858d71c 100644
--- a/addons/flashsuppressors/config.cpp
+++ b/addons/flashsuppressors/config.cpp
@@ -14,8 +14,9 @@ class CfgPatches {
};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"commy2"};
- authorUrl = "https://github.com/commy2";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/flashsuppressors/stringtable.xml b/addons/flashsuppressors/stringtable.xml
index 5f6a0ebc86..f075f1aa34 100644
--- a/addons/flashsuppressors/stringtable.xml
+++ b/addons/flashsuppressors/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/fonts/CfgFontFamilies.hpp b/addons/fonts/CfgFontFamilies.hpp
index 963a35fa8e..80c8114624 100644
--- a/addons/fonts/CfgFontFamilies.hpp
+++ b/addons/fonts/CfgFontFamilies.hpp
@@ -2,38 +2,38 @@ class CfgFontFamilies
{
class PixelSplitterBold
{
- fonts[] = { PATHTOF(PixelSplitterBold\PixelSplitterBold6),
- PATHTOF(PixelSplitterBold\PixelSplitterBold7),
- PATHTOF(PixelSplitterBold\PixelSplitterBold8),
- PATHTOF(PixelSplitterBold\PixelSplitterBold9),
- PATHTOF(PixelSplitterBold\PixelSplitterBold10),
- PATHTOF(PixelSplitterBold\PixelSplitterBold11),
- PATHTOF(PixelSplitterBold\PixelSplitterBold12),
- PATHTOF(PixelSplitterBold\PixelSplitterBold13),
- PATHTOF(PixelSplitterBold\PixelSplitterBold14),
- PATHTOF(PixelSplitterBold\PixelSplitterBold15),
- PATHTOF(PixelSplitterBold\PixelSplitterBold16),
- PATHTOF(PixelSplitterBold\PixelSplitterBold17),
- PATHTOF(PixelSplitterBold\PixelSplitterBold18),
- PATHTOF(PixelSplitterBold\PixelSplitterBold19),
- PATHTOF(PixelSplitterBold\PixelSplitterBold20),
- PATHTOF(PixelSplitterBold\PixelSplitterBold21),
- PATHTOF(PixelSplitterBold\PixelSplitterBold22),
- PATHTOF(PixelSplitterBold\PixelSplitterBold23),
- PATHTOF(PixelSplitterBold\PixelSplitterBold24),
- PATHTOF(PixelSplitterBold\PixelSplitterBold25),
- PATHTOF(PixelSplitterBold\PixelSplitterBold26),
- PATHTOF(PixelSplitterBold\PixelSplitterBold27),
- PATHTOF(PixelSplitterBold\PixelSplitterBold28),
- PATHTOF(PixelSplitterBold\PixelSplitterBold29),
- PATHTOF(PixelSplitterBold\PixelSplitterBold30),
- PATHTOF(PixelSplitterBold\PixelSplitterBold31),
- PATHTOF(PixelSplitterBold\PixelSplitterBold34),
- PATHTOF(PixelSplitterBold\PixelSplitterBold35),
- PATHTOF(PixelSplitterBold\PixelSplitterBold37),
- PATHTOF(PixelSplitterBold\PixelSplitterBold46)
+ fonts[] = { QPATHTOF(PixelSplitterBold\PixelSplitterBold6),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold7),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold8),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold9),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold10),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold11),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold12),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold13),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold14),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold15),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold16),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold17),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold18),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold19),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold20),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold21),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold22),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold23),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold24),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold25),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold26),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold27),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold28),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold29),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold30),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold31),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold34),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold35),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold37),
+ QPATHTOF(PixelSplitterBold\PixelSplitterBold46)
};
spaceWidth = 0.5;
spacing = 0.065;
};
-};
\ No newline at end of file
+};
diff --git a/addons/fonts/config.cpp b/addons/fonts/config.cpp
index f37dba286c..dc6b4c705f 100644
--- a/addons/fonts/config.cpp
+++ b/addons/fonts/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_main"};
- author[] = {"jaynus"};
- authorUrl = "https://github.com/jaynus/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"jaynus"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/frag/ACE_Settings.hpp b/addons/frag/ACE_Settings.hpp
index 3e1c83839b..4dfa172bb3 100644
--- a/addons/frag/ACE_Settings.hpp
+++ b/addons/frag/ACE_Settings.hpp
@@ -1,19 +1,19 @@
class ACE_Settings {
- class GVAR(Enabled) {
+ class GVAR(enabled) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(EnableFrag);
description = CSTRING(EnableFrag_Desc);
typeName = "BOOL";
value = 1;
};
- class GVAR(SpallEnabled) {
+ class GVAR(spallEnabled) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(EnableSpall);
description = CSTRING(EnableSpall_Desc);
typeName = "BOOL";
value = 0;
};
- class GVAR(ReflectionsEnabled) {
+ class GVAR(reflectionsEnabled) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(EnableReflections);
description = CSTRING(EnableReflections_Desc);
@@ -27,7 +27,7 @@ class ACE_Settings {
typeName = "SCALAR";
value = 500;
};
- class GVAR(MaxTrackPerFrame) {
+ class GVAR(maxTrackPerFrame) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(MaxTrackPerFrame);
description = CSTRING(MaxTrackPerFrame_Desc);
@@ -35,7 +35,7 @@ class ACE_Settings {
value = 50;
};
- class GVAR(EnableDebugTrace) {
+ class GVAR(enableDebugTrace) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(EnableDebugTrace);
description = CSTRING(EnableDebugTrace_Desc);
diff --git a/addons/frag/CfgAmmo.hpp b/addons/frag/CfgAmmo.hpp
index 41734d2806..cd6cc64cfd 100644
--- a/addons/frag/CfgAmmo.hpp
+++ b/addons/frag/CfgAmmo.hpp
@@ -8,11 +8,11 @@ class CfgAmmo {
//class ace_arty_105mm_m1_m782_delay: ace_arty_105mm_m1_m782_prox {
// GVAR(skip) = 1;
//};
-
+
class Bo_GBU12_LGB;
class ACE_GBU12 : Bo_GBU12_LGB {
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
GVAR(metal) = 140000;
GVAR(charge) = 87000;
@@ -27,7 +27,7 @@ class CfgAmmo {
class Grenade;
class GrenadeHand: Grenade {
GVAR(enabled) = 1;
-
+
GVAR(skip) = 0;
GVAR(force) = 1;
// This is a good high-drag frag type for grenades.
@@ -52,7 +52,7 @@ class CfgAmmo {
class R_Hydra_HE: RocketBase {
// Source: http://fas.org/man/dod-101/sys/missile/hydra-70.htm
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
GVAR(metal) = 3850;
GVAR(charge) = 1040;
@@ -74,18 +74,19 @@ class CfgAmmo {
class BombCore;
class Bo_Mk82: BombCore {
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
GVAR(metal) = 140000;
GVAR(charge) = 87000;
GVAR(gurney_c) = 2320;
GVAR(gurney_k) = 1/2;
};
-
+
class G_40mm_HE: GrenadeBase {
// Source: http://www.inetres.com/gp/military/infantry/grenade/40mm_ammo.html#M441
GVAR(enabled) = 1;
-
+ GVAR(force) = 1;
+
GVAR(classes)[] = {"ACE_frag_tiny_HD"};
GVAR(metal) = 200;
GVAR(charge) = 32;
@@ -95,20 +96,21 @@ class CfgAmmo {
class G_40mm_HEDP: G_40mm_HE {
// Source: http://www.inetres.com/gp/military/infantry/grenade/40mm_ammo.html#M433
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_tiny_HD"};
GVAR(metal) = 200;
GVAR(charge) = 45;
GVAR(gurney_c) = 2830;
GVAR(gurney_k) = 1/2;
};
-
+
class ACE_G_40mm_HEDP: G_40mm_HEDP {
};
class ACE_G_40mm_HE: G_40mm_HE {
};
class ACE_G_40mm_Practice: ACE_G_40mm_HE {
GVAR(skip) = 1;
+ GVAR(force) = 0;
};
class ACE_G40mm_HE_VOG25P: G_40mm_HE {
GVAR(skip) = 0;
@@ -121,7 +123,7 @@ class CfgAmmo {
class Sh_155mm_AMOS: ShellBase {
// Source: http://www.globalsecurity.org/military/systems/munitions/m795.htm
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
GVAR(metal) = 36000;
GVAR(charge) = 9979;
@@ -131,7 +133,7 @@ class CfgAmmo {
class Sh_82mm_AMOS : Sh_155mm_AMOS {
// Source: http://www.arsenal-bg.com/defense_police/mortar_bombs_82mm.htm
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
GVAR(metal) = 3200;
GVAR(charge) = 420;
@@ -140,7 +142,7 @@ class CfgAmmo {
};
class ModuleOrdnanceMortar_F_Ammo: Sh_82mm_AMOS {
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
GVAR(metal) = 800;
GVAR(charge) = 4200;
@@ -149,7 +151,7 @@ class CfgAmmo {
};
class Sh_105mm_HEAT_MP : Sh_125mm_HEAT {
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
GVAR(metal) = 11400;
GVAR(charge) = 7100;
@@ -158,7 +160,7 @@ class CfgAmmo {
};
class Sh_120mm_HE : ShellBase {
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
GVAR(metal) = 23000;
GVAR(charge) = 3148;
@@ -167,7 +169,7 @@ class CfgAmmo {
};
class Sh_125mm_HE: Sh_120mm_HE {
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
GVAR(metal) = 16000;
GVAR(charge) = 3200;
@@ -176,7 +178,7 @@ class CfgAmmo {
};
class ModuleOrdnanceHowitzer_F_ammo: Sh_155mm_AMOS {
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"};
GVAR(metal) = 1950;
GVAR(charge) = 15800;
@@ -203,7 +205,7 @@ class CfgAmmo {
class Missile_AGM_02_F : MissileBase {
// Source: http://fas.org/man/dod-101/sys/smart/agm-65.htm
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
GVAR(metal) = 56250;
GVAR(charge) = 39000;
@@ -213,7 +215,7 @@ class CfgAmmo {
class M_Hellfire_AT: MissileBase {
// Source: http://www.designation-systems.net/dusrm/m-114.html
GVAR(enabled) = 1;
-
+
GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"};
GVAR(metal) = 8000;
GVAR(charge) = 2400;
@@ -471,6 +473,6 @@ class CfgAmmo {
class ACE_frag_spall_huge: ACE_frag_huge {
timeToLive = 0.3;
};
-
+
#include "CfgAmmoReflections.hpp"
};
diff --git a/addons/frag/XEH_PREP.hpp b/addons/frag/XEH_PREP.hpp
index 926cbaab0c..2fed1630f2 100644
--- a/addons/frag/XEH_PREP.hpp
+++ b/addons/frag/XEH_PREP.hpp
@@ -1,3 +1,4 @@
+PREP(dev_debugAmmo);
PREP(doSpall);
PREP(fired);
diff --git a/addons/frag/config.cpp b/addons/frag/config.cpp
index 16af88bfc4..1727570003 100644
--- a/addons/frag/config.cpp
+++ b/addons/frag/config.cpp
@@ -1,15 +1,17 @@
-#include "script_component.hpp"
-class CfgPatches {
- class ADDON {
- units[] = {};
- weapons[] = {};
- requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_common"};
- author[] = {"Nou"};
- VERSION_CONFIG;
- };
-};
-
-#include "CfgEventhandlers.hpp"
-#include "CfgAmmo.hpp"
-#include "ACE_Settings.hpp"
\ No newline at end of file
+#include "script_component.hpp"
+class CfgPatches {
+ class ADDON {
+ units[] = {};
+ weapons[] = {};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {"ace_common"};
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Nou"};
+ url = ECSTRING(main,URL);
+ VERSION_CONFIG;
+ };
+};
+
+#include "CfgEventhandlers.hpp"
+#include "CfgAmmo.hpp"
+#include "ACE_Settings.hpp"
diff --git a/addons/frag/functions/fnc_addTrack.sqf b/addons/frag/functions/fnc_addTrack.sqf
index 680dc31c37..922e37e719 100644
--- a/addons/frag/functions/fnc_addTrack.sqf
+++ b/addons/frag/functions/fnc_addTrack.sqf
@@ -20,4 +20,4 @@ _positions set[(count _positions), [(getPos _obj), _objSpd]];
_data = [_origin, typeOf _origin, typeOf _obj, _objSpd, _positions, _color];
GVAR(traces) set[_index, _data];
-[DFUNC(trackTrace), 0, [_obj, _index, ACE_time]] call CBA_fnc_addPerFrameHandler;
+[DFUNC(trackTrace), 0, [_obj, _index, CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/frag/functions/fnc_dev_debugAmmo.sqf b/addons/frag/functions/fnc_dev_debugAmmo.sqf
new file mode 100644
index 0000000000..1323639621
--- /dev/null
+++ b/addons/frag/functions/fnc_dev_debugAmmo.sqf
@@ -0,0 +1,62 @@
+#define DEBUG_MODE_FULL
+#include "script_component.hpp"
+
+params [["_debugMissing", true, [false]], ["_debugForce", false, [false]], ["_debugNonFrag", false, [false]]];
+
+diag_log text format ["~~~~~~~~~~~~~Start [%1]~~~~~~~~~~~~~", _this];
+
+private _allMagsConfigs = configProperties [configFile >> "CfgMagazines", "isClass _x", true];
+private _processedCfgAmmos = [];
+
+{
+ private _ammo = toLower getText (_x >> "ammo");
+ if ((_ammo != "") && {!(_ammo in _processedCfgAmmos)}) then {
+ _processedCfgAmmos pushBack _ammo;
+
+ //Ignore mines/bombs
+ if (_ammo isKindOf "TimeBombCore") exitWith {};
+
+ _ammoConfig = configFile >> "CfgAmmo" >> _ammo;
+
+ //Read configs and test if it would actually cause a frag, using same logic as FUNC(pfhRound)
+ private _skip = getNumber (_ammoConfig >> QGVAR(skip));
+ private _explosive = getNumber (_ammoConfig >> "explosive");
+ private _indirectRange = getNumber (_ammoConfig >> "indirectHitRange");
+ private _force = getNumber (_ammoConfig >> QGVAR(force));
+ private _fragPower = getNumber(_ammoConfig >> "indirecthit")*(sqrt((getNumber (_ammoConfig >> "indirectHitRange"))));
+
+ private _shouldAdd = (_skip == 0) && {(_force == 1) || {_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}}};
+
+ if (_shouldAdd) then {
+ if (_debugForce && {((getNumber(_ammoConfig >> "hit")) < 5) || {_fragPower < 10}}) then {
+ diag_log text format ["Ammo [%1] from Mag [%2] - Weak but will still frag!",_ammo,configName _x];
+ diag_log text format [" - _force=%1,_fragPower=%2",_force,_fragPower];
+ };
+
+ _warn = false;
+
+ _fragTypes = getArray (_ammoConfig >> "ACE_frag_CLASSES");
+ if(_fragTypes isEqualTo []) then {_warn = true;};
+ _c = getNumber(_ammoConfig >> "ACE_frag_CHARGE");
+ if(_c == 0) then {_warn = true;};
+ _m = getNumber(_ammoConfig >> "ACE_frag_METAL");
+ if(_m == 0) then {_warn = true;};
+ _k = getNumber(_ammoConfig >> "ACE_frag_GURNEY_K");
+ if(_k == 0) then {_warn = true;};
+ _gC = getNumber(_ammoConfig >> "ACE_frag_GURNEY_C");
+ if(_gC == 0) then { _warn = true;};
+
+ if(_debugMissing && _warn) then {
+ diag_log text format ["Ammo [%1] from Mag [%2] MISSING frag configs:",_ammo,configName _x];
+ diag_log text format [" - _c=%1,_m=%2,_k=%3,_gC=%4,_fragTypes=%5",_c,_m,_k,_gC,_fragTypes];
+ };
+ } else {
+ if (_debugNonFrag && {isArray (_ammoConfig >> "ACE_frag_CLASSES")}) then {
+ diag_log text format ["Ammo [%1] from Mag [%2] has frag configs but will NOT frag:",_ammo,configName _x];
+ diag_log text format ["- skip=%1,explosive=%2,indirectHitRange=%3,force=%4,fragPower=%5",_skip,_explosive,_indirectRange,_force,_fragPower];
+ };
+ };
+ };
+} forEach _allMagsConfigs;
+
+diag_log text format ["~~~~~~~~~~~~~End [%1-%2]~~~~~~~~~~~~~", count _allMagsConfigs, count _processedCfgAmmos];
diff --git a/addons/frag/functions/fnc_doReflections.sqf b/addons/frag/functions/fnc_doReflections.sqf
index 7702e34fd5..64d8ede26d 100644
--- a/addons/frag/functions/fnc_doReflections.sqf
+++ b/addons/frag/functions/fnc_doReflections.sqf
@@ -13,10 +13,6 @@ if(count _this > 2) then {
if(_depth <= 2) then {
_indirectHitRange = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHitRange");
_indirectHit = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHit");
-
-
-
-
_testParams = [_pos, [_indirectHitRange, _indirectHit], [], [], -4, _depth, 0];
[DFUNC(findReflections), 0, _testParams] call CBA_fnc_addPerFrameHandler;
};
diff --git a/addons/frag/functions/fnc_drawTraces.sqf b/addons/frag/functions/fnc_drawTraces.sqf
index ac95957ad4..494a2af727 100644
--- a/addons/frag/functions/fnc_drawTraces.sqf
+++ b/addons/frag/functions/fnc_drawTraces.sqf
@@ -18,12 +18,11 @@ private ["_color", "_index", "_lastPos", "_lastSpd", "_max", "_positions", "_sta
} else {
_data2 = _positions select (_index + ACE_TRACE_DRAW_INC);
};
-
+
_pos1 = _data1 select 0;
_pos2 = _data2 select 0;
_index = _index + ACE_TRACE_DRAW_INC;
-
-
+
drawLine3D [_pos1, _pos2, _color];
_lastPos = _pos2;
_lastSpd = _data1 select 1;
diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf
index 8c72ae8bac..64e82b6f83 100644
--- a/addons/frag/functions/fnc_frago.sqf
+++ b/addons/frag/functions/fnc_frago.sqf
@@ -9,7 +9,7 @@
if(!isServer) exitWith { };
BEGIN_COUNTER(frago);
-// _startTime = ACE_diagTime;
+// _startTime = diag_tickTime;
private ["_startTime", "_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed", "_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom", "_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_boundingBox", "_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir", "_currentCount", "_count", "_vecVar", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount", "_sectorSize", "_sectorOffset", "_i", "_randomDir", "_endTime", "_target"];
@@ -214,5 +214,5 @@ if(_isArmed && (count _objects) > 0) then {
// ACE_player sideChat format["total frags: %1", GVAR(TOTALFRAGS)];
// ACE_player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
// #endif
-// _endTime = ACE_diagTime;
+// _endTime = diag_tickTime;
END_COUNTER(frago);
\ No newline at end of file
diff --git a/addons/frag/functions/fnc_spallHP.sqf b/addons/frag/functions/fnc_spallHP.sqf
index 3756bb1416..09008c97cb 100644
--- a/addons/frag/functions/fnc_spallHP.sqf
+++ b/addons/frag/functions/fnc_spallHP.sqf
@@ -21,7 +21,7 @@ if ((_this select 0) <= (count GVAR(spallHPData))) then {
// diag_log text format["%1: %2", _forEachIndex, _x];
// } forEach _hp;
// } forEach (_this select 1);
- [DFUNC(doSpall), [_this, _forEachIndex]] call EFUNC(common,execNextFrame);
+ [DFUNC(doSpall), [_this, _forEachIndex]] call CBA_fnc_execNextFrame;
// player sideChat "WEEE";
} forEach (_this select 1);
};
diff --git a/addons/frag/functions/fnc_spallTrack.sqf b/addons/frag/functions/fnc_spallTrack.sqf
index afe4bc1931..3a02d2bd04 100644
--- a/addons/frag/functions/fnc_spallTrack.sqf
+++ b/addons/frag/functions/fnc_spallTrack.sqf
@@ -22,7 +22,7 @@ if (count _intersectsWith > 0) then {
if(!(_x in _foundObjects)) then {
// diag_log text format["Adding HP: %1", _x];
_index = (count GVAR(spallHPData));
- _hpId = _x addEventHandler ["hitPart", compile format["[%1, _this] call " + QUOTE(FUNC(spallHP)), _index]];
+ _hpId = _x addEventHandler ["hitPart", compile format["[%1, _this] call " + QFUNC(spallHP), _index]];
_foundObjects set[(count _foundObjects), _x];
_foundObjectHPIds set[(count _foundObjectHPIds), _hpId];
_data = [_hpId, _x, typeOf _round, _round, _curPos, _velocity, 0, _foundObjects, _foundObjectHPIds];
diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml
index 4191a405d3..c7afb23097 100644
--- a/addons/frag/stringtable.xml
+++ b/addons/frag/stringtable.xml
@@ -68,6 +68,7 @@
Druckwellensimulation
Activar simulación de reflexiones
Simulation de la réflection des explosions.
+ Simulação de reflexo de explosão
Enable the ACE Explosion Reflection Simulation
@@ -76,6 +77,7 @@
Aktiviere die ACE-Druckwellensimulation
Activa la simulación de reflexiones para las explosiones.
Activer la simulation de la réfléction des explosions ACE.
+ Ativa a simulação de reflexo de explosão do ACE
Maximum Projectiles Tracked
diff --git a/addons/gestures/ACE_Settings.hpp b/addons/gestures/ACE_Settings.hpp
index a9e77807c0..8ed8aedb6b 100644
--- a/addons/gestures/ACE_Settings.hpp
+++ b/addons/gestures/ACE_Settings.hpp
@@ -4,8 +4,8 @@ class ACE_Settings {
typeName = "SCALAR";
isClientSettable = 1;
category = ECSTRING(interact_menu,Category_InteractionMenu);
- displayName = CSTRING(showOnInteractionMenu_displayName);
- description = CSTRING(showOnInteractionMenu_description);
- values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(justKeybinds), CSTRING(keysAndInteractionMenu)};
+ displayName = CSTRING(ShowOnInteractionMenu_displayName);
+ description = CSTRING(ShowOnInteractionMenu_description);
+ values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(JustKeybinds), CSTRING(KeysAndInteractionMenu)};
};
};
diff --git a/addons/gestures/CfgVehicles.hpp b/addons/gestures/CfgVehicles.hpp
index d3c7b5ca21..2c099bcc45 100644
--- a/addons/gestures/CfgVehicles.hpp
+++ b/addons/gestures/CfgVehicles.hpp
@@ -9,134 +9,107 @@ class CfgVehicles {
statement = "";
showDisabled = 1;
priority = 3.5;
- icon = PATHTOF(UI\gestures_ca.paa);
+ icon = QPATHTOF(UI\gestures_ca.paa);
class GVAR(Advance) {
- displayName = CSTRING(BIgestureAdvance);
- condition = QUOTE(canStand _target);
+ displayName = CSTRING(Advance);
+ condition = QUOTE(true);
statement = QUOTE(_target playActionNow 'gestureAdvance';);
showDisabled = 1;
priority = 1.9;
};
class GVAR(Go) {
- displayName = CSTRING(BIgestureGo);
- condition = QUOTE(canStand _target);
+ displayName = CSTRING(Go);
+ condition = QUOTE(true);
statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2););
showDisabled = 1;
priority = 1.8;
};
class GVAR(Follow) {
- displayName = CSTRING(BIgestureFollow);
- condition = QUOTE(canStand _target);
+ displayName = CSTRING(Follow);
+ condition = QUOTE(true);
statement = QUOTE(_target playActionNow 'gestureFollow';);
showDisabled = 1;
priority = 1.7;
};
class GVAR(Up) {
- displayName = CSTRING(BIgestureUp);
- condition = QUOTE(canStand _target);
+ displayName = CSTRING(Up);
+ condition = QUOTE(true);
statement = QUOTE(_target playActionNow 'gestureUp';);
showDisabled = 1;
priority = 1.5;
};
class GVAR(CeaseFire) {
- displayName = CSTRING(BIgestureCeaseFire);
- condition = QUOTE(canStand _target);
+ displayName = CSTRING(CeaseFire);
+ condition = QUOTE(true);
statement = QUOTE(_target playActionNow 'gestureCeaseFire';);
showDisabled = 1;
priority = 1.3;
};
- class GVAR(Freeze) {
- displayName = CSTRING(BIgestureFreeze);
- condition = QUOTE(canStand _target);
- statement = QUOTE(_target playActionNow 'gestureFreeze';);
+ class GVAR(Stop) {
+ displayName = CSTRING(Stop);
+ condition = QUOTE(true);
+ statement = QUOTE(_target playActionNow 'gestureFreeze';); // BI animation - is actualls "stop" in all stances but prone
showDisabled = 1;
priority = 1.2;
};
class GVAR(Forward) {
- displayName = CSTRING(forward);
- condition = QUOTE(canStand _target && GVAR(ReloadMutex));
+ displayName = CSTRING(Forward);
+ condition = QUOTE(true);
statement = QUOTE(QUOTE(QGVAR(forward)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.9;
};
class GVAR(Regroup) {
- displayName = CSTRING(regroup);
- condition = QUOTE(canStand _target && GVAR(ReloadMutex));
+ displayName = CSTRING(Regroup);
+ condition = QUOTE(true);
statement = QUOTE(QUOTE(QGVAR(regroup)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.8;
};
- class GVAR(Stop) {
- displayName = CSTRING(stop);
- condition = QUOTE(canStand _target && GVAR(ReloadMutex));
- statement = QUOTE(QUOTE(QGVAR(stop)) call FUNC(playSignal));
+ class GVAR(Freeze) {
+ displayName = CSTRING(Freeze);
+ condition = QUOTE(true);
+ statement = QUOTE(QUOTE(QGVAR(freeze)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.7;
};
class GVAR(Cover) {
- displayName = CSTRING(cover);
- condition = QUOTE(canStand _target && GVAR(ReloadMutex));
+ displayName = CSTRING(Cover);
+ condition = QUOTE(true);
statement = QUOTE(QUOTE(QGVAR(cover)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.6;
};
class GVAR(Point) {
- displayName = CSTRING(point);
- condition = QUOTE(canStand _target && GVAR(ReloadMutex));
+ displayName = CSTRING(Point);
+ condition = QUOTE(true);
statement = QUOTE(QUOTE(QGVAR(point)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.5;
};
class GVAR(Engage) {
- displayName = CSTRING(engage);
- condition = QUOTE(canStand _target && GVAR(ReloadMutex));
+ displayName = CSTRING(Engage);
+ condition = QUOTE(true);
statement = QUOTE(QUOTE(QGVAR(engage)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.4;
};
class GVAR(Hold) {
- displayName = CSTRING(hold);
- condition = QUOTE(canStand _target && GVAR(ReloadMutex));
+ displayName = CSTRING(Hold);
+ condition = QUOTE(true);
statement = QUOTE(QUOTE(QGVAR(hold)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.3;
};
class GVAR(Warning) {
- displayName = CSTRING(warning);
- condition = QUOTE(canStand _target && GVAR(ReloadMutex));
+ displayName = CSTRING(Warning);
+ condition = QUOTE(true);
statement = QUOTE(QUOTE(QGVAR(warning)) call FUNC(playSignal));
showDisabled = 1;
priority = 1.2;
};
- /*
- class class GVAR(Yes) {
- displayName = ECSTRING(common,Yes);
- condition = QUOTE(canStand _target);
- statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2););
- showDisabled = 1;
- priority = 1.1;
- };
-
- class class GVAR(No) {
- displayName = ECSTRING(common,No);
- condition = QUOTE(canStand _target);
- statement = QUOTE(_target playActionNow 'gestureNo';);
- showDisabled = 1;
- priority = 1.0;
- };
-
- class class GVAR(Hi) {
- displayName = CSTRING(Hi);
- condition = QUOTE(canStand _target);
- statement = QUOTE(_target playActionNow ([ARR_3('gestureHi','gestureHiB','gestureHiC')] select floor random 3););
- showDisabled = 1;
- priority = 0.9;
- };
- */
-
};
-
};
};
};
diff --git a/addons/testmissions/README.md b/addons/gestures/README.md
similarity index 50%
rename from addons/testmissions/README.md
rename to addons/gestures/README.md
index e8737f0ab6..e224ff6d69 100644
--- a/addons/testmissions/README.md
+++ b/addons/gestures/README.md
@@ -1,11 +1,11 @@
-ace_testmissions
-===========
+ace_gestures
+========
-Provides test missions.
+Gestures system in interaction menu and keybinds.
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
-- None
+- [jokoho48](https://github.com/jokoho48)
diff --git a/addons/gestures/XEH_missionDisplayLoad.sqf b/addons/gestures/XEH_missionDisplayLoad.sqf
index 17ddf32557..856f361d3a 100644
--- a/addons/gestures/XEH_missionDisplayLoad.sqf
+++ b/addons/gestures/XEH_missionDisplayLoad.sqf
@@ -25,7 +25,7 @@ _display displayAddEventHandler ["KeyDown", {
};
TRACE_2("Reloading, blocking gestures",_weapon,_duration);
- [{GVAR(ReloadMutex) = true;}, [], _duration] call EFUNC(common,waitAndExecute);
+ [{GVAR(ReloadMutex) = true;}, [], _duration] call CBA_fnc_waitAndExecute;
};
};
false
diff --git a/addons/gestures/XEH_postInit.sqf b/addons/gestures/XEH_postInit.sqf
index 3b4a92164e..6d9e057e29 100644
--- a/addons/gestures/XEH_postInit.sqf
+++ b/addons/gestures/XEH_postInit.sqf
@@ -5,4 +5,45 @@ if (!hasInterface) exitWith {};
// reload mutex, you can't play signal while reloading
GVAR(ReloadMutex) = true;
-#include "key.sqf"
+// Add keybinds
+{
+ _x params ["_currentName", "_key", ["_vanillaKey", false] ];
+
+ // Don't add "ace_gestures_" prefix to BI gestures
+ private _signalName = if (_vanillaKey) then {
+ format ["BIgesture%1", _currentName];
+ } else {
+ format [QGVAR(%1), _currentName];
+ };
+
+ private _code = compile format [QUOTE('%1' call FUNC(playSignal)), _signalName];
+
+ TRACE_4("Adding KeyBind",_currentName,_signalName,_code,_key);
+
+ [
+ "ACE3 Gestures",
+ _currentName,
+ localize format [LSTRING(%1), _currentName],
+ _code,
+ {false},
+ [_key, [false, (_key != -1), false]],
+ false
+ ] call CBA_fnc_addKeybind;
+
+ false
+} count [
+ ["Freeze", 80], // Numpad 2
+ ["Cover", 81], // Numpad 3
+ ["Forward", 75], // Numpad 4
+ ["Regroup", 76], // Numpad 5
+ ["Engage", 77], // Numpad 6
+ ["Point", 71], // Numpad 7
+ ["Hold", 72], // Numpad 8
+ ["Warning", 73], // Numpad 9
+ ["Go", -1, true],
+ ["Advance", -1, true],
+ ["Follow", -1, true],
+ ["Up", -1, true],
+ ["Stop", -1, true],
+ ["CeaseFire", -1, true]
+];
diff --git a/addons/gestures/anim/ace_stop.rtm b/addons/gestures/anim/ace_freeze.rtm
similarity index 100%
rename from addons/gestures/anim/ace_stop.rtm
rename to addons/gestures/anim/ace_freeze.rtm
diff --git a/addons/gestures/anim/ace_stop_stand_lowered.rtm b/addons/gestures/anim/ace_freeze_stand_lowered.rtm
similarity index 100%
rename from addons/gestures/anim/ace_stop_stand_lowered.rtm
rename to addons/gestures/anim/ace_freeze_stand_lowered.rtm
diff --git a/addons/gestures/cfgMovesBasic.hpp b/addons/gestures/cfgMovesBasic.hpp
index a708787fd5..30e2d4d2dd 100644
--- a/addons/gestures/cfgMovesBasic.hpp
+++ b/addons/gestures/cfgMovesBasic.hpp
@@ -1,7 +1,7 @@
class CfgMovesBasic {
class ManActions {
GVAR(forward) = QGVAR(forward);
- GVAR(stop) = QGVAR(stop);
+ GVAR(freeze) = QGVAR(freeze);
GVAR(cover) = QGVAR(cover);
GVAR(regroup) = QGVAR(regroup);
GVAR(engage) = QGVAR(engage);
@@ -10,7 +10,7 @@ class CfgMovesBasic {
GVAR(warning) = QGVAR(warningS);
GVAR(forwardStandLowered) = QGVAR(forwardStandLowered);
- GVAR(stopStandLowered) = QGVAR(stopStandLowered);
+ GVAR(freezeStandLowered) = QGVAR(freezeStandLowered);
GVAR(coverStandLowered) = QGVAR(coverStandLowered);
GVAR(regroupStandLowered) = QGVAR(regroupStandLowered);
GVAR(engageStandLowered) = QGVAR(engageStandLowered);
@@ -22,7 +22,7 @@ class CfgMovesBasic {
class Actions {
class NoActions: ManActions {
GVAR(forward)[] = {QGVAR(forward), "Gesture"};
- GVAR(stop)[] = {QGVAR(stop), "Gesture"};
+ GVAR(freeze)[] = {QGVAR(freeze), "Gesture"};
GVAR(cover)[] = {QGVAR(cover), "Gesture"};
GVAR(regroup)[] = {QGVAR(regroup), "Gesture"};
GVAR(engage)[] = {QGVAR(engage), "Gesture"};
@@ -31,7 +31,7 @@ class CfgMovesBasic {
GVAR(warning)[] = {QGVAR(warning), "Gesture"};
GVAR(forwardStandLowered)[] = {QGVAR(forwardStandLowered), "Gesture"};
- GVAR(stopStandLowered)[] = {QGVAR(stopStandLowered), "Gesture"};
+ GVAR(freezeStandLowered)[] = {QGVAR(freezeStandLowered), "Gesture"};
GVAR(coverStandLowered)[] = {QGVAR(coverStandLowered), "Gesture"};
GVAR(regroupStandLowered)[] = {QGVAR(regroupStandLowered), "Gesture"};
GVAR(engageStandLowered)[] = {QGVAR(engageStandLowered), "Gesture"};
@@ -126,75 +126,75 @@ class CfgGesturesMale {
};
class GVAR(forward): GVAR(Base) {
- file = QUOTE(PATHTOF(anim\ace_forward.rtm));
+ file = QPATHTOF(anim\ace_forward.rtm);
speed = 1;
};
class GVAR(forwardStandLowered): GVAR(forward) {
- file = QUOTE(PATHTOF(anim\ace_forward_stand_lowered.rtm));
+ file = QPATHTOF(anim\ace_forward_stand_lowered.rtm);
};
- class GVAR(stop): GVAR(forward) {
- file = QUOTE(PATHTOF(anim\ace_stop.rtm));
+ class GVAR(freeze): GVAR(forward) {
+ file = QPATHTOF(anim\ace_freeze.rtm);
speed = 0.6;
};
- class GVAR(stopStandLowered): GVAR(stop) {
- file = QUOTE(PATHTOF(anim\ace_stop_stand_lowered.rtm));
+ class GVAR(freezeStandLowered): GVAR(freeze) {
+ file = QPATHTOF(anim\ace_freeze_stand_lowered.rtm);
};
class GVAR(cover): GVAR(forward) {
- file = QUOTE(PATHTOF(anim\ace_cover.rtm));
+ file = QPATHTOF(anim\ace_cover.rtm);
speed = 0.8;
};
class GVAR(coverStandLowered): GVAR(cover) {
- file = QUOTE(PATHTOF(anim\ace_cover_stand_lowered.rtm));
+ file = QPATHTOF(anim\ace_cover_stand_lowered.rtm);
};
class GVAR(regroup): GVAR(forward) {
- file = QUOTE(PATHTOF(anim\ace_regroup.rtm));
+ file = QPATHTOF(anim\ace_regroup.rtm);
speed = 0.8;
};
class GVAR(regroupStandLowered): GVAR(regroup) {
- file = QUOTE(PATHTOF(anim\ace_regroup_stand_lowered.rtm));
+ file = QPATHTOF(anim\ace_regroup_stand_lowered.rtm);
};
class GVAR(engage): GVAR(forward) {
- file = QUOTE(PATHTOF(anim\ace_engage.rtm));
+ file = QPATHTOF(anim\ace_engage.rtm);
speed = 0.9;
};
class GVAR(engageStandLowered): GVAR(engage) {
- file = QUOTE(PATHTOF(anim\ace_engage_stand_lowered.rtm));
+ file = QPATHTOF(anim\ace_engage_stand_lowered.rtm);
};
class GVAR(point): GVAR(forward) {
- file = QUOTE(PATHTOF(anim\ace_point.rtm));
+ file = QPATHTOF(anim\ace_point.rtm);
speed = 0.8;
};
class GVAR(pointStandLowered): GVAR(point) {
- file = QUOTE(PATHTOF(anim\ace_point_stand_lowered.rtm));
+ file = QPATHTOF(anim\ace_point_stand_lowered.rtm);
};
class GVAR(hold): GVAR(forward) {
- file = QUOTE(PATHTOF(anim\ace_hold.rtm));
+ file = QPATHTOF(anim\ace_hold.rtm);
speed = 0.8;
};
class GVAR(holdStandLowered): GVAR(hold) {
- file = QUOTE(PATHTOF(anim\ace_hold_stand_lowered.rtm));
+ file = QPATHTOF(anim\ace_hold_stand_lowered.rtm);
};
class GVAR(warning): GVAR(forward) {
- file = QUOTE(PATHTOF(anim\ace_warning.rtm));
+ file = QPATHTOF(anim\ace_warning.rtm);
speed = 0.8;
};
class GVAR(warningStandLowered): GVAR(warning) {
- file = QUOTE(PATHTOF(anim\ace_warning_stand_lowered.rtm));
+ file = QPATHTOF(anim\ace_warning_stand_lowered.rtm);
};
};
};
diff --git a/addons/gestures/config.cpp b/addons/gestures/config.cpp
index 39cb8f0951..660c1eeff5 100644
--- a/addons/gestures/config.cpp
+++ b/addons/gestures/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interact_menu"};
- author[] = {"joko // Jonas", "Emperias", "Zigomarvin"};
- authorUrl = "https://github.com/commy2/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"joko // Jonas", "Emperias", "Zigomarvin"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/gestures/functions/fnc_playSignal.sqf b/addons/gestures/functions/fnc_playSignal.sqf
index feb79f5370..8f20c690ef 100644
--- a/addons/gestures/functions/fnc_playSignal.sqf
+++ b/addons/gestures/functions/fnc_playSignal.sqf
@@ -14,7 +14,7 @@
* Public: No
*/
#include "script_component.hpp"
-
+
TRACE_1("params",_this);
if (!GVAR(ReloadMutex)) exitWith {false};
diff --git a/addons/gestures/key.sqf b/addons/gestures/key.sqf
deleted file mode 100644
index 54d6d50c0c..0000000000
--- a/addons/gestures/key.sqf
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "\a3\editor_f\Data\Scripts\dikCodes.h"
-
-{
- _x params ["_currentName","_key"];
-
- private _signalName = format [QGVAR(%1), _currentName];
- if (_currentName select [0,2] == "BI") then {
- //Don't add "ace_gestures_" prefix to BI gestures
- _signalName = _currentName;
- };
-
- private _code = (compile format [QUOTE('%1' call FUNC(playSignal);), _signalName]);
-
- TRACE_4("Adding KeyBind",_currentName,_signalName,_code,_key);
-
- [
- "ACE3 Gestures",
- _currentName,
- localize format[LSTRING(%1), _currentName],
- _code,
- {false},
- [_key, [false, (_key != -1), false]],
- false
- ] call CBA_fnc_addKeybind;
-
- false
-} count [
- ["stop", DIK_NUMPAD2],
- ["cover", DIK_NUMPAD3],
- ["forward", DIK_NUMPAD4],
- ["regroup", DIK_NUMPAD5],
- ["engage", DIK_NUMPAD6],
- ["point", DIK_NUMPAD7],
- ["hold", DIK_NUMPAD8],
- ["warning", DIK_NUMPAD9],
- ["BIgestureGo", -1],
- ["BIgestureAdvance", -1],
- ["BIgestureFollow", -1],
- ["BIgestureUp", -1],
- ["BIgestureFreeze", -1],
- ["BIgestureCeaseFire", -1]
-];
diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml
index 1f008ddae9..bd9474f8c1 100644
--- a/addons/gestures/stringtable.xml
+++ b/addons/gestures/stringtable.xml
@@ -25,7 +25,7 @@
Gestos
Gesti
-
+
Advance
Vordringen
Avanzar
@@ -37,7 +37,7 @@
Avançar
Avanzare
-
+
Go
Los
Adelante
@@ -49,7 +49,7 @@
Mover-se
Muoversi
-
+
Follow
Folgen
Seguirme
@@ -61,7 +61,7 @@
Seguir
Seguire
-
+
Up
Aufstehen
Arriba
@@ -73,7 +73,7 @@
Acima
Alzarsi
-
+
Cease Fire
Feuer einstellen
Alto el fuego
@@ -85,19 +85,18 @@
Cessar Fogo
Cessare il Fuoco
-
- Point
- Zeigen
- Señalar
- Wskazać
- Ukázat
- Pointer
- Показать направление
- Mutat
- Apontar
- Puntare a
+
+ Stop
+ Stop
+ Halt
+ Stop
+ Стоп
+ Parar
+ Stop
+ Stop
+ Detenerse
-
+
Freeze
Keine Bewegung
Alto
@@ -109,20 +108,7 @@
Alto
Fermi
-
-
- Stop
- Stop
- Halt
- Stop
- Стоп
- Parar
- Stop
- Stop
- Detenerse
-
-
-
+
Cover
Deckung
Cubrirse
@@ -134,8 +120,7 @@
Proteger-se
Copertura
-
-
+
Rally up
Regroupement
Sammeln
@@ -146,8 +131,7 @@
Raggruppare
Reunirse
-
-
+
Move forward
En avant
Vorwärts Bewegen
@@ -158,8 +142,7 @@
Muovere avanti
Avanzar
-
-
+
Engage
Angriff
Engager
@@ -170,8 +153,7 @@
Ingaggiare
Atacar
-
-
+
Point
Pointer
Zeigen
@@ -182,8 +164,7 @@
Puntare
Señalar
-
-
+
Hold
Tenir
Anhalten
@@ -194,8 +175,7 @@
Mantenere
Esperar
-
-
+
Warning
Attention
Achtung
@@ -206,31 +186,7 @@
Attenzione
Atención
-
- Hi
- Hallo
- Hola
- Witaj
- Ahoj
- Salut
- Привет
- Helló
- Olá
- Ciao
-
-
- Attack
- Angreifen
- Atacar
- Do ataku
- Zaútočit
- Attaquer
- Атаковать
- Támadás
- Atacar
- Attaccare
-
-
diff --git a/addons/gforces/ACE_Settings.hpp b/addons/gforces/ACE_Settings.hpp
new file mode 100644
index 0000000000..dbe6dec13a
--- /dev/null
+++ b/addons/gforces/ACE_Settings.hpp
@@ -0,0 +1,8 @@
+class ACE_Settings {
+ class GVAR(enabledFor) {
+ displayName = CSTRING(enabledFor_displayName);
+ typeName = "SCALAR";
+ value = 1;
+ values[] = {ECSTRING(Common,Disabled), CSTRING(enabledFor_onlyAircraft), ECSTRING(Common,Enabled)};
+ };
+};
diff --git a/addons/gforces/XEH_PREP.hpp b/addons/gforces/XEH_PREP.hpp
index 1d3d8dac05..d7ef509174 100644
--- a/addons/gforces/XEH_PREP.hpp
+++ b/addons/gforces/XEH_PREP.hpp
@@ -1,2 +1,2 @@
-
+PREP(addPFEH);
PREP(pfhUpdateGForces);
diff --git a/addons/gforces/XEH_postInit.sqf b/addons/gforces/XEH_postInit.sqf
index 23abe8e826..d1df112606 100644
--- a/addons/gforces/XEH_postInit.sqf
+++ b/addons/gforces/XEH_postInit.sqf
@@ -2,14 +2,38 @@
if (!hasInterface) exitWith {};
-// Setup ppEffect
-GVAR(GForces_CC) = ppEffectCreate ["ColorCorrections", 4215];
-GVAR(GForces_CC) ppEffectEnable true;
-GVAR(GForces_CC) ppEffectForceInNVG true;
-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]];
-GVAR(GForces_CC) ppEffectCommit 0.4;
+GVAR(pfID) = -1;
-GVAR(lastUpdateTime) = 0;
-GVAR(oldVel) = [0,0,0];
+["SettingsInitialized", {
+ TRACE_1("SettingsInitialized eh",GVAR(enabledFor));
-[DFUNC(pfhUpdateGForces), 0, []] call CBA_fnc_addPerFrameHandler;
+ if (GVAR(enabledFor) == 0) exitWith {}; //Module has no effect if enabledFor is "None"
+ if (GVAR(enabledFor) == 2) exitWith { //PFEH is always on when enabledFor is "All"
+ [] call FUNC(addPFEH);
+ TRACE_1("adding perm PFEH",GVAR(pfID));
+ };
+
+ //PFEH only runs when player is in a type "Air" vehicle when enabledFor is "Aircraft"
+
+ if ((!isNull (vehicle ACE_player)) && {(vehicle ACE_player) isKindOf "Air"}) then { //"playerVehicleChanged" can happen before "settingInit"
+ [] call FUNC(addPFEH);
+ TRACE_1("adding temp PFEH [start in]",GVAR(pfID));
+ };
+ ["playerVehicleChanged", {
+ params ["", "_vehicle"];
+ TRACE_2("playerVehicleChanged",_vehicle,typeOf _vehicle);
+ if (_vehicle isKindOf "Air") then {
+ if (GVAR(pfID) == -1) then {
+ [] call FUNC(addPFEH);
+ TRACE_1("adding temp PFEH",GVAR(pfID));
+ };
+ } else {
+ if (GVAR(pfID) != -1) then {
+ TRACE_1("removing temp PFEH",GVAR(pfID));
+ ppEffectDestroy GVAR(GForces_CC);
+ [GVAR(pfID)] call CBA_fnc_removePerFrameHandler;
+ GVAR(pfID) = -1;
+ };
+ };
+ }] call EFUNC(common,addEventHandler);
+}] call EFUNC(common,addEventHandler);
diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp
index 6c40f4ce1c..58f11020eb 100644
--- a/addons/gforces/config.cpp
+++ b/addons/gforces/config.cpp
@@ -6,14 +6,14 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"KoffeinFlummi", "esteldunedain"};
- authorUrl = "https://github.com/KoffeinFlummi/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"KoffeinFlummi", "esteldunedain"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
+#include "ACE_Settings.hpp"
#include "CfgEventHandlers.hpp"
-
#include "CfgWeapons.hpp"
-
#include "CfgVehicles.hpp"
diff --git a/addons/gforces/functions/fnc_addPFEH.sqf b/addons/gforces/functions/fnc_addPFEH.sqf
new file mode 100644
index 0000000000..50311c3a06
--- /dev/null
+++ b/addons/gforces/functions/fnc_addPFEH.sqf
@@ -0,0 +1,29 @@
+/*
+ * Author: KoffeinFlummi and esteldunedain
+ * Adds the PFEH
+ *
+ * Argument:
+ * None
+ *
+ * Return value:
+ * None
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+//Reset forces array
+GVAR(GForces) = [];
+GVAR(GForces_Index) = 0;
+
+// Setup ppEffect
+GVAR(GForces_CC) = ppEffectCreate ["ColorCorrections", 4215];
+GVAR(GForces_CC) ppEffectEnable true;
+GVAR(GForces_CC) ppEffectForceInNVG true;
+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]];
+GVAR(GForces_CC) ppEffectCommit 0.4;
+
+GVAR(lastUpdateTime) = 0;
+GVAR(oldVel) = [0,0,0];
+
+GVAR(pfID) = [DFUNC(pfhUpdateGForces), 0, []] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf
index dd569781e7..7909f3d0ee 100644
--- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf
+++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf
@@ -13,14 +13,14 @@
*/
#include "script_component.hpp"
-EXPLODE_2_PVT(_this,_params,_pfhId);
-
// Update the g-forces at constant mission time intervals (taking accTime into account)
-if ((ACE_time - GVAR(lastUpdateTime)) < INTERVAL) exitWith {};
-GVAR(lastUpdateTime) = ACE_time;
+if ((CBA_missionTime - GVAR(lastUpdateTime)) < INTERVAL) exitWith {};
+GVAR(lastUpdateTime) = CBA_missionTime;
if (isNull ACE_player || !(alive ACE_player)) exitWith {};
+BEGIN_COUNTER(everyInterval);
+
private _newVel = velocity (vehicle ACE_player);
private _accel = ((_newVel vectorDiff GVAR(oldVel)) vectorMultiply (1 / INTERVAL)) vectorAdd [0, 0, 9.8];
// Cap maximum G's to +- 10 to avoid g-effects when the update is low fps.
@@ -91,3 +91,5 @@ if !(ACE_player getVariable ["ACE_isUnconscious", false]) then {
};
GVAR(GForces_CC) ppEffectCommit INTERVAL;
+
+END_COUNTER(everyInterval);
diff --git a/addons/gforces/stringtable.xml b/addons/gforces/stringtable.xml
new file mode 100644
index 0000000000..921515f560
--- /dev/null
+++ b/addons/gforces/stringtable.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ Gforces Effects
+ Gforces Effekte
+ Efectos Gforces
+ G Force efekty
+ Efeitos de ForçaG
+
+
+ Only Aircraft
+ Nur Luftfahrzeug
+ Sólo Aeronave
+ Pouze letadla
+ Somente Aeronave
+
+
+
\ No newline at end of file
diff --git a/addons/goggles/RscTitles.hpp b/addons/goggles/RscTitles.hpp
index 6c1b9870b6..5544b9b132 100644
--- a/addons/goggles/RscTitles.hpp
+++ b/addons/goggles/RscTitles.hpp
@@ -1,6 +1,6 @@
class RscTitles{
#include "define.hpp"
-
+
class RscACE_Goggles_BaseTitle{
idd = -1;
onLoad = "uiNamespace setVariable ['ACE_Goggles_Display', _this select 0]";
@@ -9,25 +9,25 @@ class RscTitles{
fadeOut=0.5;
movingEnable = false;
duration = 10e10;
- name = "RscACE_Goggles_BaseTitle";
+ name = "RscACE_Goggles_BaseTitle";
class controls;
};
-
+
class RscACE_Goggles:RscACE_Goggles_BaseTitle{
idd = 1044;
- name = "RscACE_Goggles";
+ name = "RscACE_Goggles";
class controls{
class gogglesImage: RscPicture{
idc = 10650;
};
};
};
-
+
class RscACE_GogglesEffects:RscACE_Goggles_BaseTitle{
idd = 1045;
onLoad = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', _this select 0]";
onUnload = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', displayNull]";
- name = "RscACE_GogglesEffects";
+ name = "RscACE_GogglesEffects";
fadeIn=0;
fadeOut=0.5;
class controls{
@@ -39,4 +39,4 @@ class RscTitles{
};
};
};
-};
\ No newline at end of file
+};
diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf
index 832c961178..2885f8e4a6 100644
--- a/addons/goggles/XEH_postInit.sqf
+++ b/addons/goggles/XEH_postInit.sqf
@@ -31,7 +31,6 @@ GVAR(EffectsActive) = false;
SETGLASSES(ace_player,GLASSESDEFAULT);
-GVAR(EyesDamageScript) = -1;
GVAR(FrameEvent) = [false, [false, 20]];
GVAR(PostProcessEyes_Enabled) = false;
GVAR(DustHandler) = -1;
@@ -42,13 +41,15 @@ GVAR(surfaceCache) = "";
GVAR(surfaceCacheIsDust) = false;
// init GlassesChanged eventhandler
-GVAR(OldGlasses) = "#NULLSTRING";
+GVAR(OldGlasses) = "";
["playerInventoryChanged", {
- (_this select 1) params ["", "_currentGlasses"];
+ params ["_unit"];
+
+ private _currentGlasses = goggles _unit;
if (GVAR(OldGlasses) != _currentGlasses) then {
- ["GlassesChanged", [ACE_player, _currentGlasses]] call EFUNC(common,localEvent);
+ ["GlassesChanged", [_unit, _currentGlasses]] call EFUNC(common,localEvent);
GVAR(OldGlasses) = _currentGlasses;
};
}] call EFUNC(common,addEventHandler);
@@ -81,16 +82,16 @@ GVAR(OldGlasses) = "#NULLSTRING";
GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [1, 1, 1, 1], [1, 1, 1, 0]];
GVAR(PostProcessEyes) ppEffectCommit 5;
- GVAR(EyesDamageScript) = [{
+ [{
params ["_unit"];
GVAR(PostProcessEyes) ppEffectEnable false;
_unit setVariable ["ACE_EyesDamaged", false];
- }, _this, 5] call EFUNC(common,waitAndExecute);
+ }, _this, 5] call CBA_fnc_waitAndExecute;
- }, _unit, 25] call EFUNC(common,waitAndExecute);
+ }, _unit, 25] call CBA_fnc_waitAndExecute;
}] call EFUNC(common,addEventHandler);
diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp
index 0812200a87..6a20daaee7 100644
--- a/addons/goggles/config.cpp
+++ b/addons/goggles/config.cpp
@@ -7,16 +7,17 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"Garth 'L-H' de Wet"};
- authorUrl = "http://garth.snakebiteink.co.za/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Garth 'L-H' de Wet"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
-#define COMBAT_GOGGLES ACE_Overlay = QUOTE(PATHTOF(textures\HUD\CombatGoggles.paa)); \
- ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\CombatGogglesCracked.paa)); \
+#define COMBAT_GOGGLES ACE_Overlay = QPATHTOF(textures\HUD\CombatGoggles.paa); \
+ ACE_OverlayCracked = QPATHTOF(textures\HUD\CombatGogglesCracked.paa); \
ACE_Resistance = 2; \
ACE_Protection = 1;
@@ -26,10 +27,10 @@ class CfgGlasses {
ACE_TintAmount=0;
ACE_Overlay = "";
ACE_OverlayDirt = "A3\Ui_f\data\igui\rsctitles\HealthTextures\dust_upper_ca.paa";
- ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\Cracked.paa));
+ ACE_OverlayCracked = QPATHTOF(textures\HUD\Cracked.paa);
ACE_Resistance = 0;
ACE_Protection = 0;
- ACE_DustPath = QUOTE(PATHTOF(textures\fx\dust\%1.paa));
+ ACE_DustPath = QPATHTOF(textures\fx\dust\%1.paa);
};
class G_Combat:None {
@@ -37,8 +38,8 @@ class CfgGlasses {
};
class G_Diving {
- ACE_Overlay = QUOTE(PATHTOF(textures\HUD\DivingGoggles.paa));
- ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\DivingGogglesCracked.paa));
+ ACE_Overlay = QPATHTOF(textures\HUD\DivingGoggles.paa);
+ ACE_OverlayCracked = QPATHTOF(textures\HUD\DivingGogglesCracked.paa);
ACE_Resistance = 2;
ACE_Protection = 1;
};
@@ -209,7 +210,7 @@ class CfgGesturesMale {
class States {
class GestureFreezeStand;
class GestureWipeFace: GestureFreezeStand {
- file = QUOTE(PATHTOF(anim\WipeGlasses.rtm));
+ file = QPATHTOF(anim\WipeGlasses.rtm);
canPullTrigger = 0;
};
};
diff --git a/addons/goggles/functions/fnc_applyDustEffect.sqf b/addons/goggles/functions/fnc_applyDustEffect.sqf
index 944b98f127..9921bfdfd9 100644
--- a/addons/goggles/functions/fnc_applyDustEffect.sqf
+++ b/addons/goggles/functions/fnc_applyDustEffect.sqf
@@ -50,7 +50,7 @@ SETDUST(DBULLETS,0);
GVAR(DustHandler) = -1;
GVAR(DustHandler) = [{
- if (ACE_diagTime >= GETDUSTT(DTIME) + 3) then {
+ if (diag_tickTime >= GETDUSTT(DTIME) + 3) then {
SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2));
private _amount = 1 - (GETDUSTT(DAMOUNT) * 0.125);
@@ -71,7 +71,7 @@ GVAR(DustHandler) = [{
if (GVAR(DustHandler) == -1) then {
GVAR(PostProcessEyes) ppEffectEnable false
};
- }, [], 2] call EFUNC(common,waitAndExecute);
+ }, [], 2] call CBA_fnc_waitAndExecute;
[GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler;
GVAR(DustHandler) = -1;
diff --git a/addons/goggles/functions/fnc_applyRotorWashEffect.sqf b/addons/goggles/functions/fnc_applyRotorWashEffect.sqf
index bc8d0bafbf..7a883ab7e7 100644
--- a/addons/goggles/functions/fnc_applyRotorWashEffect.sqf
+++ b/addons/goggles/functions/fnc_applyRotorWashEffect.sqf
@@ -50,7 +50,7 @@ if !(_rotorWash select 0) exitWith {
if (GVAR(DustHandler) == -1) then {
GVAR(PostProcessEyes) ppEffectEnable false;
}
- }, [], 2] call EFUNC(common,waitAndExecute);
+ }, [], 2] call CBA_fnc_waitAndExecute;
[GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler;
GVAR(DustHandler) = -1;
diff --git a/addons/goggles/functions/fnc_clearGlasses.sqf b/addons/goggles/functions/fnc_clearGlasses.sqf
index d0b14e4f90..f1622c8680 100644
--- a/addons/goggles/functions/fnc_clearGlasses.sqf
+++ b/addons/goggles/functions/fnc_clearGlasses.sqf
@@ -26,7 +26,7 @@ _effects set [BROKEN, _broken];
SETGLASSES(_unit,_effects);
-if (stance _unit != "PRONE") then {
+if ((stance _unit != "PRONE") && {primaryWeapon _unit != ""} && {currentWeapon _unit == primaryWeapon _unit}) then {
_unit playActionNow "gestureWipeFace";
};
@@ -34,7 +34,7 @@ if (stance _unit != "PRONE") then {
if (cameraView == "INTERNAL") then {
addCamShake [5, 1.75, 2];
};
-}, [], 0.3] call EFUNC(common,waitAndExecute);
+}, [], 0.3] call CBA_fnc_waitAndExecute;
call FUNC(removeDirtEffect);
call FUNC(removeRainEffect);
diff --git a/addons/goggles/functions/fnc_handleFired.sqf b/addons/goggles/functions/fnc_handleFired.sqf
index dcfcc51bec..066bc040f7 100644
--- a/addons/goggles/functions/fnc_handleFired.sqf
+++ b/addons/goggles/functions/fnc_handleFired.sqf
@@ -60,14 +60,14 @@ if (!GVAR(surfaceCacheIsDust)) exitWith {true};
// increment dust value with type bullet
_bullets = GETDUSTT(DBULLETS);
-if (ACE_diagTime - GETDUSTT(DTIME) > 1) then {
+if (diag_tickTime - GETDUSTT(DTIME) > 1) then {
_bullets = 0;
};
_bullets = _bullets + 1;
SETDUST(DBULLETS,_bullets);
-SETDUST(DTIME,ACE_diagTime);
+SETDUST(DTIME,diag_tickTime);
// apply dust effect if the amount of fired bullets is over the threshold
if (GETDUSTT(DAMOUNT) < 2) then {
diff --git a/addons/goggles/stringtable.xml b/addons/goggles/stringtable.xml
index 6b5a623715..ce337760d7 100644
--- a/addons/goggles/stringtable.xml
+++ b/addons/goggles/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp
index 5aa33284c8..a5971044f9 100644
--- a/addons/grenades/CfgAmmo.hpp
+++ b/addons/grenades/CfgAmmo.hpp
@@ -81,7 +81,7 @@ class CfgAmmo {
class ACE_G_M84: SmokeShell {
GVAR(flashbang) = 1;
- model = PATHTOF(models\ACE_m84_thrown.p3d);
+ model = QPATHTOF(models\ACE_m84_thrown.p3d);
dangerRadiusHit = -1;
suppressionRadiusHit = 20;
typicalSpeed = 22;
diff --git a/addons/grenades/CfgMagazines.hpp b/addons/grenades/CfgMagazines.hpp
index 16dd9929ff..d1d9127fa4 100644
--- a/addons/grenades/CfgMagazines.hpp
+++ b/addons/grenades/CfgMagazines.hpp
@@ -59,8 +59,8 @@ class CfgMagazines {
displayname = CSTRING(M84_Name);
descriptionshort = CSTRING(M84_Description);
displayNameShort = "M84";
- model = PATHTOF(models\ACE_m84.p3d);
- picture = PATHTOF(UI\ACE_m84_x_ca.paa);
+ model = QPATHTOF(models\ACE_m84.p3d);
+ picture = QPATHTOF(UI\ACE_m84_x_ca.paa);
ammo = "ACE_G_M84";
mass = 4;
};
diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp
index 2f9e631fe1..7d98e13a24 100644
--- a/addons/grenades/config.cpp
+++ b/addons/grenades/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"commy2", "KoffeinFlummi"};
- authorUrl = "https://github.com/commy2/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2", "KoffeinFlummi"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/grenades/functions/fnc_flare.sqf b/addons/grenades/functions/fnc_flare.sqf
index 74360e39b9..be2b4ce952 100644
--- a/addons/grenades/functions/fnc_flare.sqf
+++ b/addons/grenades/functions/fnc_flare.sqf
@@ -36,4 +36,4 @@ _light setLightDayLight true;
_light lightAttachObject [_projectile, [0,0,0]];
//_light attachTo [_projectile, [0,0,0]];
-[{deleteVehicle _this}, _light, _timeToLive, 1] call EFUNC(common,waitAndExecute);
+[{deleteVehicle _this}, _light, _timeToLive, 1] call CBA_fnc_waitAndExecute;
diff --git a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf
index c708f3a3cf..0d0779ccef 100644
--- a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf
+++ b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf
@@ -36,8 +36,8 @@ if (hasInterface) then {
[{
params ["_light"];
deleteVehicle _light;
- }, [_light], 0.2] call EFUNC(common,waitAndExecute);
- }, [_light], 0.1] call EFUNC(common,waitAndExecute);
+ }, [_light], 0.2] call CBA_fnc_waitAndExecute;
+ }, [_light], 0.1] call CBA_fnc_waitAndExecute;
};
// Affect local AI
@@ -67,7 +67,7 @@ _affected = _affected - [ACE_player];
};
_unit setSkill (skill _unit * 50);
- }, [_x], 7 * _strength] call EFUNC(common,waitAndExecute);
+ }, [_x], 7 * _strength] call CBA_fnc_waitAndExecute;
};
} count _affected;
@@ -126,12 +126,12 @@ if (hasInterface && {!isNull ACE_player} && {alive ACE_player}) then {
GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,0,[1,1,1,0],[0,0,0,1],[0,0,0,0]];
GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength);
- }, [_strength], 7 * _strength] call EFUNC(common,waitAndExecute);
+ }, [_strength], 7 * _strength] call CBA_fnc_waitAndExecute;
//FULLRECOVERY - end effect
[{
GVAR(flashbangPPEffectCC) ppEffectEnable false;
- }, [], 17 * _strength] call EFUNC(common,waitAndExecute);
+ }, [], 17 * _strength] call CBA_fnc_waitAndExecute;
};
if (_strength > 0.2) then {
diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf
index 284c573c2e..e603dd8743 100644
--- a/addons/grenades/functions/fnc_throwGrenade.sqf
+++ b/addons/grenades/functions/fnc_throwGrenade.sqf
@@ -32,7 +32,7 @@ if (local _unit) then {
if (getNumber (_config >> QGVAR(flashbang)) == 1) then {
private _fuzeTime = getNumber (_config >> "explosionTime");
- [FUNC(flashbangThrownFuze), [_projectile], _fuzeTime] call EFUNC(common,waitAndExecute);
+ [FUNC(flashbangThrownFuze), [_projectile], _fuzeTime] call CBA_fnc_waitAndExecute;
};
};
@@ -42,7 +42,7 @@ if (getNumber (_config >> QGVAR(flare)) == 1) then {
private _color = getArray (_config >> QGVAR(color));
private _intensity = _color deleteAt 3;
- [FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call EFUNC(common,waitAndExecute);
+ [FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call CBA_fnc_waitAndExecute;
};
// handle throw modes
diff --git a/addons/grenades/stringtable.xml b/addons/grenades/stringtable.xml
index a05f6635cd..44d9e7ad47 100644
--- a/addons/grenades/stringtable.xml
+++ b/addons/grenades/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/hearing/ACE_Settings.hpp b/addons/hearing/ACE_Settings.hpp
index dcae85fa25..2fb2a46211 100644
--- a/addons/hearing/ACE_Settings.hpp
+++ b/addons/hearing/ACE_Settings.hpp
@@ -1,22 +1,22 @@
class ACE_Settings {
- class GVAR(EnableCombatDeafness) {
+ class GVAR(enableCombatDeafness) {
category = CSTRING(Module_DisplayName);
value = 1;
typeName = "BOOL";
displayName = CSTRING(EnableCombatDeafness_DisplayName);
description = CSTRING(EnableCombatDeafness_Description);
};
- class GVAR(EarplugsVolume) {
+ class GVAR(earplugsVolume) {
category = CSTRING(Module_DisplayName);
value = 0.5;
typeName = "SCALAR";
};
- class GVAR(UnconsciousnessVolume) {
+ class GVAR(unconsciousnessVolume) {
category = CSTRING(Module_DisplayName);
value = 0.4;
typeName = "SCALAR";
};
- class GVAR(DisableEarRinging) {
+ class GVAR(disableEarRinging) {
category = CSTRING(Module_DisplayName);
value = 0;
typeName = "BOOL";
diff --git a/addons/hearing/CfgEventHandlers.hpp b/addons/hearing/CfgEventHandlers.hpp
index 352f802435..aa8dbf5134 100644
--- a/addons/hearing/CfgEventHandlers.hpp
+++ b/addons/hearing/CfgEventHandlers.hpp
@@ -25,22 +25,6 @@ class Extended_Init_EventHandlers {
};
};
-class Extended_FiredNear_EventHandlers {
- class AllVehicles {
- class GVAR(FiredNear) {
- clientFiredNear = QUOTE(_this call FUNC(firedNear););
- };
- };
-};
-
-class Extended_Explosion_EventHandlers {
- class CAManBase {
- class GVAR(ExplosionNear) {
- clientExplosion = QUOTE(_this call FUNC(explosionNear););
- };
- };
-};
-
class Extended_Respawn_EventHandlers {
class CAManBase {
class ADDON {
diff --git a/addons/hearing/CfgSounds.hpp b/addons/hearing/CfgSounds.hpp
index 7afdae88cb..6df1b39193 100644
--- a/addons/hearing/CfgSounds.hpp
+++ b/addons/hearing/CfgSounds.hpp
@@ -1,34 +1,34 @@
class CfgSounds {
class ACE_EarRinging_Weak {
- sound[] = {QUOTE(PATHTOF(sounds\ACE_earringing_weak.wav)),8,1.7};
+ sound[] = {QPATHTOF(sounds\ACE_earringing_weak.wav),8,1.7};
titles[] = {};
};
class ACE_EarRinging_Medium {
- sound[] = {QUOTE(PATHTOF(sounds\ACE_earringing_medium.wav)),8,1.7};
+ sound[] = {QPATHTOF(sounds\ACE_earringing_medium.wav),8,1.7};
titles[] = {};
};
class ACE_EarRinging_Heavy {
- sound[] = {QUOTE(PATHTOF(sounds\ACE_earringing_heavy.wav)),8,1.7};
+ sound[] = {QPATHTOF(sounds\ACE_earringing_heavy.wav),8,1.7};
titles[] = {};
};
class ACE_Combat_Deafness_Heavy {
- sound[] = {QUOTE(PATHTOF(sounds\deafness.ogg)),8,1};
+ sound[] = {QPATHTOF(sounds\deafness.ogg),8,1};
titles[] = {};
};
class ACE_Combat_Deafness_Medium {
- sound[] = {QUOTE(PATHTOF(sounds\deafness.ogg)),3,1};
+ sound[] = {QPATHTOF(sounds\deafness.ogg),3,1};
titles[] = {};
};
class ACE_Combat_Deafness_Heavy_NoRing {
- sound[] = {QUOTE(PATHTOF(sounds\deafness_noring.ogg)),8,1};
+ sound[] = {QPATHTOF(sounds\deafness_noring.ogg),8,1};
titles[] = {};
};
class ACE_Combat_Deafness_Medium_NoRing {
- sound[] = {QUOTE(PATHTOF(sounds\deafness_noring.ogg)),3,1};
+ sound[] = {QPATHTOF(sounds\deafness_noring.ogg),3,1};
+ titles[] = {};
+ };
+ class ACE_Ring_Backblast {
+ sound[] = {QPATHTOF(sounds\backblast_ring.ogg),1,1};
titles[] = {};
};
- class ACE_Ring_Backblast {
- sound[] = {QUOTE(PATHTOF(sounds\backblast_ring.ogg)),1,1};
- titles[] = {};
- };
};
diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp
index 17dec1641b..760ed95a03 100644
--- a/addons/hearing/CfgVehicles.hpp
+++ b/addons/hearing/CfgVehicles.hpp
@@ -10,7 +10,7 @@ class CfgVehicles {
statement = QUOTE( [_player] call FUNC(putInEarPlugs) );
showDisabled = 0;
priority = 2.5;
- icon = PATHTOF(UI\ACE_earplugs_x_ca.paa);
+ icon = QPATHTOF(UI\ACE_earplugs_x_ca.paa);
};
class ACE_RemoveEarplugs {
displayName = CSTRING(EarPlugs_Off);
@@ -19,7 +19,7 @@ class CfgVehicles {
statement = QUOTE( [_player] call FUNC(removeEarPlugs) );
showDisabled = 0;
priority = 2.5;
- icon = PATHTOF(UI\ACE_earplugs_x_ca.paa);
+ icon = QPATHTOF(UI\ACE_earplugs_x_ca.paa);
};
};
};
@@ -100,7 +100,7 @@ class CfgVehicles {
scope = 2;
isGlobal = 1;
isSingular = 1;
- icon = PATHTOF(UI\Icon_Module_Hearing_ca.paa);
+ icon = QPATHTOF(UI\Icon_Module_Hearing_ca.paa);
class Arguments {
class EnableCombatDeafness {
displayName = CSTRING(EnableCombatDeafness_DisplayName);
diff --git a/addons/hearing/CfgWeapons.hpp b/addons/hearing/CfgWeapons.hpp
index af7b7d4cb3..c063c0e896 100644
--- a/addons/hearing/CfgWeapons.hpp
+++ b/addons/hearing/CfgWeapons.hpp
@@ -5,8 +5,8 @@ class CfgWeapons {
class ACE_EarPlugs: ACE_ItemCore {
displayName = CSTRING(EarPlugs_Name);
descriptionShort = CSTRING(EarPlugs_Description);
- model = QUOTE(PATHTOF(data\ace_earplugs.p3d));
- picture = PATHTOF(UI\ACE_earplugs_x_ca.paa);
+ model = QPATHTOF(data\ace_earplugs.p3d);
+ picture = QPATHTOF(UI\ACE_earplugs_x_ca.paa);
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 1;
diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf
index cbae40dee0..fdd61ccfde 100644
--- a/addons/hearing/XEH_postInit.sqf
+++ b/addons/hearing/XEH_postInit.sqf
@@ -17,6 +17,10 @@ GVAR(volumeAttenuation) = 1;
// Only run PFEH and install event handlers if combat deafness is enabled
if (!GVAR(EnableCombatDeafness)) exitWith {};
+ //Add XEH:
+ ["CAManBase", "FiredNear", FUNC(firedNear)] call CBA_fnc_addClassEventHandler;
+ ["CAManBase", "Explosion", FUNC(explosionNear)] call CBA_fnc_addClassEventHandler;
+
// Update hearing protection now:
[] call FUNC(updateHearingProtection);
diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp
index 5d130e589a..3a52c369d8 100644
--- a/addons/hearing/config.cpp
+++ b/addons/hearing/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_EarPlugs"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction", "A3_Characters_F", "A3_Characters_F_Kart"};
- author[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2", "Rocko", "Rommel", "Ruthberg"};
- authorUrl = "https://github.com/KoffeinFlummi/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2", "Rocko", "Rommel", "Ruthberg"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/hearing/functions/fnc_explosionNear.sqf b/addons/hearing/functions/fnc_explosionNear.sqf
index 799de52320..76c6707de5 100644
--- a/addons/hearing/functions/fnc_explosionNear.sqf
+++ b/addons/hearing/functions/fnc_explosionNear.sqf
@@ -16,9 +16,6 @@
*/
#include "script_component.hpp"
-// Only run if combat deafness is enabled
-if (!GVAR(EnableCombatDeafness)) exitWith {};
-
params ["_unit", "_damage"];
if (_unit != ACE_player) exitWith {};
diff --git a/addons/hearing/functions/fnc_firedNear.sqf b/addons/hearing/functions/fnc_firedNear.sqf
index f583ab0050..46bbee4fae 100644
--- a/addons/hearing/functions/fnc_firedNear.sqf
+++ b/addons/hearing/functions/fnc_firedNear.sqf
@@ -22,9 +22,6 @@
*/
#include "script_component.hpp"
-// Only run if combat deafness is enabled
-if (!GVAR(EnableCombatDeafness)) exitWith {};
-
params ["_object", "_firer", "_distance", "_weapon", "", "", "_ammo"];
//Only run if firedNear object is player or player's vehicle:
diff --git a/addons/hearing/functions/fnc_updateVolume.sqf b/addons/hearing/functions/fnc_updateVolume.sqf
index 58eedc7b39..01ab58ef76 100644
--- a/addons/hearing/functions/fnc_updateVolume.sqf
+++ b/addons/hearing/functions/fnc_updateVolume.sqf
@@ -16,6 +16,12 @@
*/
#include "script_component.hpp"
+if (!alive ACE_player) exitWith {
+ if (missionNameSpace getVariable [QGVAR(disableVolumeUpdate), false]) exitWith {};
+ TRACE_1("dead - removing hearing effects",ACE_player);
+ [QUOTE(ADDON), 1, true] call EFUNC(common,setHearingCapability);
+};
+
(_this select 0) params ["_justUpdateVolume"];
GVAR(deafnessDV) = (GVAR(deafnessDV) min 20) max 0;
@@ -27,8 +33,8 @@ if (!_justUpdateVolume) then {
if (GVAR(deafnessDV) - GVAR(deafnessPrior) > 1 ||
GVAR(deafnessDV) > 10) then {
- if (ACE_time - GVAR(time3) < 3) exitWith {};
- GVAR(time3) = ACE_time;
+ if (CBA_missionTime - GVAR(time3) < 3) exitWith {};
+ GVAR(time3) = CBA_missionTime;
if (GVAR(deafnessDV) > 19.75) then {
playSound (["ACE_Combat_Deafness_Heavy", "ACE_Combat_Deafness_Heavy_NoRing"] select GVAR(DisableEarRinging));
@@ -54,9 +60,4 @@ if (ACE_player getVariable ["ACE_isUnconscious", false]) then {
_volume = _volume min GVAR(UnconsciousnessVolume);
};
-private _soundTransitionTime = if (_justUpdateVolume) then {0.1} else {1};
-
-_soundTransitionTime fadeSound _volume;
-_soundTransitionTime fadeSpeech _volume;
-ACE_player setVariable ["tf_globalVolume", _volume];
-if (!isNil "acre_api_fnc_setGlobalVolume") then {[_volume^(0.33)] call acre_api_fnc_setGlobalVolume;};
+[QUOTE(ADDON), _volume, true] call EFUNC(common,setHearingCapability);
diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml
index 1777c08e4f..f52b0c9812 100644
--- a/addons/hearing/stringtable.xml
+++ b/addons/hearing/stringtable.xml
@@ -115,6 +115,8 @@
Desactiva el efecto de zumbido cuando el jugador recibe daño auditivo.
Usuń szum w uszach przy chwilowej utracie słuchu.
Enlève les acouphènes quand le joueur prend des dommages auditifs.
+ Quando il giocatore riceve danni all'udito, non fa sentire i fischi nelle orecchie
+ Remove o efeito de zunido quando o jogador recebe dano na audição
Hearing
@@ -208,4 +210,4 @@
Ajouter l'item "ACE_EarPlugs" à toutes les unités qui ont des armes lourdes. Peut être desactivé si des équipements personnels sont utilisés.
-
+
\ No newline at end of file
diff --git a/addons/hitreactions/config.cpp b/addons/hitreactions/config.cpp
index 77b68b77f5..d6146a6b29 100644
--- a/addons/hitreactions/config.cpp
+++ b/addons/hitreactions/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"commy2"};
- authorUrl = "https://github.com/commy2";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/hitreactions/functions/fnc_fallDown.sqf b/addons/hitreactions/functions/fnc_fallDown.sqf
index 9ed43ae14f..03484438eb 100644
--- a/addons/hitreactions/functions/fnc_fallDown.sqf
+++ b/addons/hitreactions/functions/fnc_fallDown.sqf
@@ -31,7 +31,7 @@ if (_unit == ACE_player) then {
};
// play scream sound
-if (!isNil QUOTE(EFUNC(medical,playInjuredSound))) then {
+if (!isNil QEFUNC(medical,playInjuredSound)) then {
[_unit] call EFUNC(medical,playInjuredSound);
};
diff --git a/addons/huntir/CfgAmmo.hpp b/addons/huntir/CfgAmmo.hpp
index fac4d6fe60..a9cd260d0f 100644
--- a/addons/huntir/CfgAmmo.hpp
+++ b/addons/huntir/CfgAmmo.hpp
@@ -1,12 +1,12 @@
class CfgAmmo {
class FlareBase;
class F_HuntIR: FlareBase {
- model = PATHTOF(data\ace_m1070_armed.p3d);
+ model = QPATHTOF(data\ace_m1070_armed.p3d);
lightColor[] = {0, 0, 0, 0};
smokeColor[] = {0, 0, 0, 0};
timeToLive = 6;
};
-
+
class ShellBase;
class ACE_HuntIR_Propell: ShellBase {
supersonicCrackNear[] = {"",0.316228,1,50};
@@ -26,6 +26,7 @@ class CfgAmmo {
soundHit6[] = {"",3.16228,1,2000};
soundHit7[] = {"",3.16228,1,2000};
soundHit8[] = {"",3.16228,1,2000};
+ SoundSetExplosion[] = {};
multiSoundHit[] = {};
class HitEffects {};
soundFakeFall0[] = {"",3.16228,1,1000};
@@ -33,13 +34,13 @@ class CfgAmmo {
soundFakeFall2[] = {"",3.16228,1,1000};
soundFakeFall3[] = {"",3.16228,1,1000};
soundFakeFall[] = {};
- hit = 0;
- indirectHit = 0;
- indirectHitRange = 0;
- explosive = 1;
- model = "\A3\weapons_f\empty";
- airFriction = 0;
- timeToLive = 1;
- explosionTime = 0.001;
+ hit = 0;
+ indirectHit = 0;
+ indirectHitRange = 0;
+ explosive = 1;
+ model = "\A3\weapons_f\empty";
+ airFriction = 0;
+ timeToLive = 1;
+ explosionTime = 0.001;
};
};
diff --git a/addons/huntir/CfgMagazines.hpp b/addons/huntir/CfgMagazines.hpp
index c11f81a98c..62ae785333 100644
--- a/addons/huntir/CfgMagazines.hpp
+++ b/addons/huntir/CfgMagazines.hpp
@@ -5,7 +5,7 @@ class CfgMagazines {
displayName = CSTRING(magazine_displayName);
displayNameShort = "HuntIR";
descriptionShort = "";
- picture = PATHTOF(data\m_m1070_ca.paa);
+ picture = QPATHTOF(data\m_m1070_ca.paa);
ammo = "F_HuntIR";
};
};
diff --git a/addons/huntir/CfgVehicles.hpp b/addons/huntir/CfgVehicles.hpp
index 3b6486aaf7..cd5054a2da 100644
--- a/addons/huntir/CfgVehicles.hpp
+++ b/addons/huntir/CfgVehicles.hpp
@@ -10,7 +10,7 @@ class CfgVehicles {
statement = QUOTE(call FUNC(huntir));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\w_huntir_monitor_ca.paa);
+ icon = QPATHTOF(UI\w_huntir_monitor_ca.paa);
exceptions[] = {};
};
};
@@ -23,7 +23,7 @@ class CfgVehicles {
castDriverShadow = 0;
destrType = "DestructDefault";
displayName = "HuntIR";
- model = PATHTOF(data\huntir.p3d);
+ model = QPATHTOF(data\huntir.p3d);
scope = 1;
soundCrash[] = {"", db-30, 1 };
soundEnviron[] = {"z\ace\addons\apl\sounds\padak_let", 0.316228, 1, 80};
@@ -73,7 +73,7 @@ class CfgVehicles {
class ReammoBox_F;
class ACE_HuntIR_Box: ReammoBox_F {
- model = PATHTOF(data\ace_huntirbox.p3d);
+ model = QPATHTOF(data\ace_huntirbox.p3d);
displayName = $STR_DN_ACE_HUNTIRBOX;
class TransportItems {
MACRO_ADDITEM(ACE_HuntIR_monitor,5);
diff --git a/addons/huntir/CfgWeapons.hpp b/addons/huntir/CfgWeapons.hpp
index 6ff271d604..979fc8875c 100644
--- a/addons/huntir/CfgWeapons.hpp
+++ b/addons/huntir/CfgWeapons.hpp
@@ -2,19 +2,19 @@
class CfgWeapons {
class ACE_ItemCore;
class InventoryItem_Base_F;
-
+
class ACE_HuntIR_monitor: ACE_ItemCore {
scope = 2;
displayName = CSTRING(monitor_displayName);
- picture = PATHTOF(UI\w_huntir_monitor_ca.paa);
+ picture = QPATHTOF(UI\w_huntir_monitor_ca.paa);
descriptionShort = CSTRING(monitor_displayName);
- model = PATHTOF(data\ace_huntir_monitor.p3d);
+ model = QPATHTOF(data\ace_huntir_monitor.p3d);
class ItemInfo: InventoryItem_Base_F {
mass = 20;
};
};
-
+
class GrenadeLauncher;
class UGL_F: GrenadeLauncher {
magazines[] += {"ACE_HuntIR_M203"};
@@ -23,7 +23,7 @@ class CfgWeapons {
//magazines[] += {"ACE_HuntIR_M203"};
magazines[] = {"1Rnd_HE_Grenade_shell","UGL_FlareWhite_F","UGL_FlareGreen_F","UGL_FlareRed_F","UGL_FlareYellow_F","UGL_FlareCIR_F","1Rnd_Smoke_Grenade_shell","1Rnd_SmokeRed_Grenade_shell","1Rnd_SmokeGreen_Grenade_shell","1Rnd_SmokeYellow_Grenade_shell","1Rnd_SmokePurple_Grenade_shell","1Rnd_SmokeBlue_Grenade_shell","1Rnd_SmokeOrange_Grenade_shell","3Rnd_HE_Grenade_shell","3Rnd_UGL_FlareWhite_F","3Rnd_UGL_FlareGreen_F","3Rnd_UGL_FlareRed_F","3Rnd_UGL_FlareYellow_F","3Rnd_UGL_FlareCIR_F","3Rnd_Smoke_Grenade_shell","3Rnd_SmokeRed_Grenade_shell","3Rnd_SmokeGreen_Grenade_shell","3Rnd_SmokeYellow_Grenade_shell","3Rnd_SmokePurple_Grenade_shell","3Rnd_SmokeBlue_Grenade_shell","3Rnd_SmokeOrange_Grenade_shell","ACE_HuntIR_M203"};
};
-
+
class Rifle_Base_F;
class arifle_MX_Base_F: Rifle_Base_F {
class GL_3GL_F: UGL_F {
diff --git a/addons/huntir/Dialog.hpp b/addons/huntir/Dialog.hpp
index ca1e85466b..745bef8dc3 100644
--- a/addons/huntir/Dialog.hpp
+++ b/addons/huntir/Dialog.hpp
@@ -154,7 +154,7 @@ class ace_huntir_cam_dialog {
w = __W;
h = __H + 0.2;
border = 0;
- text = PATHTOF(UI\ace_huntir_monitor_on.paa);
+ text = QPATHTOF(UI\ace_huntir_monitor_on.paa);
};
class CAM_HEIGHT {
type = CT_STATIC;
@@ -311,7 +311,7 @@ class ace_huntir_cam_dialog_off: ace_huntir_cam_dialog_inactive {
class RIGHT_BORDER: RIGHT_BORDER {};
class PRESS_HELP: PRESS_HELP {};
class HELP_DIALOG: HELP_DIALOG {};
- class CAM_BG: CAM_BG { text = PATHTOF(UI\ace_huntir_monitor_off.paa); };
+ class CAM_BG: CAM_BG { text = QPATHTOF(UI\ace_huntir_monitor_off.paa); };
};
//ACTIVE PARA CAMERA DIALOG
class ace_huntir_help_dialog: ace_huntir_cam_dialog {
diff --git a/addons/huntir/XEH_postInit.sqf b/addons/huntir/XEH_postInit.sqf
index 0c518dfcea..038cd62051 100644
--- a/addons/huntir/XEH_postInit.sqf
+++ b/addons/huntir/XEH_postInit.sqf
@@ -11,4 +11,3 @@ GVAR(ELEVAT) = 0.01;
// Register fire event handler
// Don't run for non players, as they are too dumb to launch huntirs anyway
["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
-["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler);
diff --git a/addons/huntir/config.cpp b/addons/huntir/config.cpp
index 5fb106ad2d..ce4b10bab1 100644
--- a/addons/huntir/config.cpp
+++ b/addons/huntir/config.cpp
@@ -6,7 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_HuntIR_monitor"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"Norrin", "Rocko", "Ruthberg"};
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Norrin", "Rocko", "Ruthberg"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/huntir/functions/fnc_cam.sqf b/addons/huntir/functions/fnc_cam.sqf
index 2eb7611a6a..80d5e33043 100644
--- a/addons/huntir/functions/fnc_cam.sqf
+++ b/addons/huntir/functions/fnc_cam.sqf
@@ -145,7 +145,7 @@ GVAR(no_cams) sort true;
ctrlSetText [1, format["%1 m", round(GVAR(pos) select 2)]];
ctrlSetText [2, format["%1", GVAR(cur_cam) + 1]];
- _cam_time = ACE_time - (GVAR(huntIR) getVariable [QGVAR(startTime), ACE_time]);
+ _cam_time = CBA_missionTime - (GVAR(huntIR) getVariable [QGVAR(startTime), CBA_missionTime]);
ctrlSetText [3, format["%1 s", round(_cam_time)]];
_cam_pos = getPosVisual GVAR(huntIR);
_cam_pos = format ["X = %1, Y = %2", round (_cam_pos select 0), round (_cam_pos select 1)];
diff --git a/addons/huntir/functions/fnc_handleFired.sqf b/addons/huntir/functions/fnc_handleFired.sqf
index 551b9975b6..b7e8c2a010 100644
--- a/addons/huntir/functions/fnc_handleFired.sqf
+++ b/addons/huntir/functions/fnc_handleFired.sqf
@@ -1,7 +1,7 @@
/*
* Author: Norrin, Rocko, Ruthberg
*
- * Handles HuntIR projectiles. Called from the unified fired EH for all CAManBase.
+ * Handles HuntIR projectiles. Called from the unified fired EH for the local player.
*
* Arguments:
* None. Parameters inherited from EFUNC(common,firedEH)
@@ -34,7 +34,7 @@ if (!hasInterface) exitWith {};
params ["_position"];
_huntir = createVehicle ["ACE_HuntIR", _position, [], 0, "FLY"];
_huntir setPosATL _position;
- _huntir setVariable [QGVAR(startTime), ACE_time, true];
+ _huntir setVariable [QGVAR(startTime), CBA_missionTime, true];
[{
params ["_args", "_idPFH"];
_args params ["_huntir"];
@@ -50,5 +50,5 @@ if (!hasInterface) exitWith {};
_huntir setVectorUp [0, 0, 1];
};
}, 0, [_huntir]] call CBA_fnc_addPerFrameHandler;
- }, [getPosATL _projectile vectorAdd [0, 0, 50]], 2, 0] call EFUNC(common,waitAndExecute);
-}, [_projectile], 5, 0] call EFUNC(common,waitAndExecute);
+ }, [getPosATL _projectile vectorAdd [0, 0, 50]], 2, 0] call CBA_fnc_waitAndExecute;
+}, [_projectile], 5, 0] call CBA_fnc_waitAndExecute;
diff --git a/addons/huntir/functions/fnc_huntir.sqf b/addons/huntir/functions/fnc_huntir.sqf
index e06ada87ea..72a0ecee64 100644
--- a/addons/huntir/functions/fnc_huntir.sqf
+++ b/addons/huntir/functions/fnc_huntir.sqf
@@ -30,7 +30,7 @@ createDialog "ace_huntir_cam_dialog_off";
createDialog "ace_huntir_cam_dialog_inactive";
uiNameSpace setVariable ["ace_huntir_monitor", findDisplay 18881];
[{
- GVAR(startTime) = ACE_time;
+ GVAR(startTime) = CBA_missionTime;
GVAR(done) = false;
GVAR(connectionDelay) = 5;
GVAR(state) = "searching";
@@ -44,7 +44,7 @@ createDialog "ace_huntir_cam_dialog_off";
};
private ["_elapsedTime", "_nearestHuntIRs"];
- _elapsedTime = ACE_time - GVAR(startTime);
+ _elapsedTime = CBA_missionTime - GVAR(startTime);
_nearestHuntIRs = ACE_player nearEntities ["ACE_HuntIR", HUNTIR_MAX_TRANSMISSION_RANGE];
if ((!dialog) || GVAR(done)) exitWith {
@@ -90,9 +90,9 @@ createDialog "ace_huntir_cam_dialog_off";
GVAR(done) = true;
closedialog 0;
HUNTIR_BACKGROUND_LAYER_ID cutText ["", "PLAIN"];
- }, [], 3, 0] call EFUNC(common,waitAndExecute);
+ }, [], 3, 0] call CBA_fnc_waitAndExecute;
};
};
}, __TYPE_WRITER_DELAY, []] call CBA_fnc_addPerFrameHandler;
- }, [], 0.5, 0] call EFUNC(common,waitAndExecute);
-}, [], 1, 0] call EFUNC(common,waitAndExecute);
+ }, [], 0.5, 0] call CBA_fnc_waitAndExecute;
+}, [], 1, 0] call CBA_fnc_waitAndExecute;
diff --git a/addons/huntir/stringtable.xml b/addons/huntir/stringtable.xml
index 2331c3855c..8648f58ea9 100644
--- a/addons/huntir/stringtable.xml
+++ b/addons/huntir/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/interact_menu/ACE_Settings.hpp b/addons/interact_menu/ACE_Settings.hpp
index 075408499b..a36d3dd98d 100644
--- a/addons/interact_menu/ACE_Settings.hpp
+++ b/addons/interact_menu/ACE_Settings.hpp
@@ -1,5 +1,5 @@
class ACE_Settings {
- class GVAR(AlwaysUseCursorSelfInteraction) {
+ class GVAR(alwaysUseCursorSelfInteraction) {
value = 0;
typeName = "BOOL";
isClientSettable = 1;
@@ -14,14 +14,14 @@ class ACE_Settings {
displayName = CSTRING(cursorKeepCentered);
description = CSTRING(cursorKeepCenteredDescription);
};
- class GVAR(AlwaysUseCursorInteraction) {
+ class GVAR(alwaysUseCursorInteraction) {
value = 0;
typeName = "BOOL";
isClientSettable = 1;
category = CSTRING(Category_InteractionMenu);
displayName = CSTRING(AlwaysUseCursorInteraction);
};
- class GVAR(UseListMenu) {
+ class GVAR(useListMenu) {
value = 0;
typeName = "BOOL";
isClientSettable = 1;
diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf
index fae8843a4e..8711f8c180 100644
--- a/addons/interact_menu/XEH_preInit.sqf
+++ b/addons/interact_menu/XEH_preInit.sqf
@@ -27,7 +27,7 @@ GVAR(keyDownSelfAction) = false;
GVAR(keyDownTime) = 0;
GVAR(openedMenuType) = -1;
-GVAR(lastTime) = ACE_diagTime;
+GVAR(lastTime) = diag_tickTime;
GVAR(rotationAngle) = 0;
GVAR(selectedAction) = [[],[]];
@@ -43,8 +43,8 @@ GVAR(lastPath) = [];
GVAR(expanded) = false;
-GVAR(startHoverTime) = ACE_diagTime;
-GVAR(expandedTime) = ACE_diagTime;
+GVAR(startHoverTime) = diag_tickTime;
+GVAR(expandedTime) = diag_tickTime;
// reset on mission load
addMissionEventHandler ["Loaded", {
diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp
index 8909c3d685..f84fea7ef9 100644
--- a/addons/interact_menu/config.cpp
+++ b/addons/interact_menu/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"NouberNou", "esteldunedain"};
- authorUrl = "";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"NouberNou", "esteldunedain"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf
index b71130a248..4d9f0af4db 100644
--- a/addons/interact_menu/functions/fnc_keyDown.sqf
+++ b/addons/interact_menu/functions/fnc_keyDown.sqf
@@ -32,7 +32,7 @@ if (_menuType == 0) then {
GVAR(keyDown) = false;
GVAR(keyDownSelfAction) = true;
};
-GVAR(keyDownTime) = ACE_diagTime;
+GVAR(keyDownTime) = diag_tickTime;
GVAR(openedMenuType) = _menuType;
GVAR(lastTimeSearchedActions) = -1000;
GVAR(ParsedTextCached) = [];
@@ -83,21 +83,21 @@ if (GVAR(openedMenuType) == 0) then {
if (vehicle ACE_player != ACE_player) then {
GVAR(menuDepthPath) = [["ACE_SelfActions", (vehicle ACE_player)]];
GVAR(expanded) = true;
- GVAR(expandedTime) = ACE_diagTime;
+ GVAR(expandedTime) = diag_tickTime;
GVAR(lastPath) = +GVAR(menuDepthPath);
GVAR(startHoverTime) = -1000;
};
} else {
GVAR(menuDepthPath) = [["ACE_ZeusActions", (getAssignedCuratorLogic player)]];
GVAR(expanded) = true;
- GVAR(expandedTime) = ACE_diagTime;
+ GVAR(expandedTime) = diag_tickTime;
GVAR(lastPath) = +GVAR(menuDepthPath);
GVAR(startHoverTime) = -1000;
};
} else {
GVAR(menuDepthPath) = [["ACE_SelfActions", ACE_player]];
GVAR(expanded) = true;
- GVAR(expandedTime) = ACE_diagTime;
+ GVAR(expandedTime) = diag_tickTime;
GVAR(lastPath) = +GVAR(menuDepthPath);
GVAR(startHoverTime) = -1000;
};
diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf
index 117a828b0b..00745a406f 100644
--- a/addons/interact_menu/functions/fnc_render.sqf
+++ b/addons/interact_menu/functions/fnc_render.sqf
@@ -51,12 +51,12 @@ if (GVAR(openedMenuType) >= 0) then {
private _closest = GVAR(currentOptions) select _closestSelection;
_closest params ["_action", "_sPos", "_hoverPath"];
- private _cTime = ACE_diagTime;
+ private _cTime = diag_tickTime;
private _delta = _cTime - GVAR(lastTime);
GVAR(lastTime) = _cTime;
GVAR(rotationAngle) = (GVAR(rotationAngle) + (270*_delta)) mod 360;
- [_sPos, format [QUOTE(PATHTOF(ui\selector%1.paa)), floor (((abs GVAR(rotationAngle)) mod 90) / 6)]] call FUNC(renderSelector);
+ [_sPos, format [QPATHTOF(ui\selector%1.paa), floor (((abs GVAR(rotationAngle)) mod 90) / 6)]] call FUNC(renderSelector);
_foundTarget = true;
GVAR(actionSelected) = true;
@@ -65,17 +65,17 @@ if (GVAR(openedMenuType) >= 0) then {
private _misMatch = !(GVAR(lastPath) isEqualTo _hoverPath);
- if(_misMatch && {ACE_diagTime-GVAR(expandedTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then {
- GVAR(startHoverTime) = ACE_diagTime;
+ if(_misMatch && {diag_tickTime-GVAR(expandedTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then {
+ GVAR(startHoverTime) = diag_tickTime;
GVAR(lastPath) = _hoverPath;
GVAR(expanded) = false;
} else {
- if(!GVAR(expanded) && {ACE_diagTime-GVAR(startHoverTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then {
+ if(!GVAR(expanded) && {diag_tickTime-GVAR(startHoverTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then {
GVAR(expanded) = true;
// Start the expanding menu animation only if the user is not going up the menu
if !([GVAR(menuDepthPath),GVAR(lastPath)] call FUNC(isSubPath)) then {
- GVAR(expandedTime) = ACE_diagTime;
+ GVAR(expandedTime) = diag_tickTime;
};
GVAR(menuDepthPath) = +GVAR(lastPath);
diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf
index c99688564a..d3df02ca40 100644
--- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf
+++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf
@@ -24,7 +24,7 @@ private _fnc_renderNearbyActions = {
#define MAXINTERACTOBJECTS 3
GVAR(foundActions) = [];
- GVAR(lastTimeSearchedActions) = ACE_diagTime;
+ GVAR(lastTimeSearchedActions) = diag_tickTime;
private _numInteractObjects = 0;
private _nearestObjects = nearestObjects [ACE_player, ["All"], 13];
@@ -128,7 +128,7 @@ GVAR(collectedActionPoints) resize 0;
if (GVAR(openedMenuType) == 0) then {
if (isNull curatorCamera) then {
if (vehicle ACE_player == ACE_player) then {
- if (ACE_diagTime > GVAR(lastTimeSearchedActions) + 0.20) then {
+ if (diag_tickTime > GVAR(lastTimeSearchedActions) + 0.20) then {
// Once every 0.2 secs, collect nearby objects active and visible action points and render them
call _fnc_renderNearbyActions;
} else {
diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf
index 6abb980620..f975db17f1 100644
--- a/addons/interact_menu/functions/fnc_renderMenu.sqf
+++ b/addons/interact_menu/functions/fnc_renderMenu.sqf
@@ -99,8 +99,8 @@ if (GVAR(UseListMenu)) then {
// Animate menu scale
if (_menuInSelectedPath && {_menuDepth == count _path}) then {
- _scaleX = _scaleX * (0.3 + 0.7 * (((ACE_diagTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1));
- _scaleY = _scaleY * (0.3 + 0.7 * (((ACE_diagTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1));
+ _scaleX = _scaleX * (0.3 + 0.7 * (((diag_tickTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1));
+ _scaleY = _scaleY * (0.3 + 0.7 * (((diag_tickTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1));
};
private _target = _actionObject;
diff --git a/addons/interaction/ACE_Settings.hpp b/addons/interaction/ACE_Settings.hpp
index a4e6dad42c..e95947ec75 100644
--- a/addons/interaction/ACE_Settings.hpp
+++ b/addons/interaction/ACE_Settings.hpp
@@ -1,6 +1,8 @@
class ACE_Settings {
- class GVAR(EnableTeamManagement) {
+ class GVAR(enableTeamManagement) {
+ displayName = CSTRING(EnableTeamManagement_DisplayName);
+ description = CSTRING(EnableTeamManagement_Description);
value = 1;
typeName = "BOOL";
};
diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp
index 0b71ebb4e1..dd6ca32de6 100644
--- a/addons/interaction/CfgVehicles.hpp
+++ b/addons/interaction/CfgVehicles.hpp
@@ -11,7 +11,7 @@ class CfgVehicles {
scope = 2;
isGlobal = 1;
isSingular = 1;
- icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa);
+ icon = QPATHTOF(UI\Icon_Module_Interaction_ca.paa);
class Arguments {
class EnableTeamManagement {
displayName = CSTRING(EnableTeamManagement_DisplayName);
@@ -68,14 +68,14 @@ class CfgVehicles {
statement = "";
showDisabled = 0;
priority = 3.2;
- icon = PATHTOF(UI\team\team_management_ca.paa);
+ icon = QPATHTOF(UI\team\team_management_ca.paa);
class ACE_AssignTeamRed {
displayName = CSTRING(AssignTeamRed);
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam));
statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam));
showDisabled = 1;
- icon = PATHTOF(UI\team\team_red_ca.paa);
+ icon = QPATHTOF(UI\team\team_red_ca.paa);
priority = 2.4;
};
class ACE_AssignTeamGreen {
@@ -83,7 +83,7 @@ class CfgVehicles {
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam));
statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam));
showDisabled = 1;
- icon = PATHTOF(UI\team\team_green_ca.paa);
+ icon = QPATHTOF(UI\team\team_green_ca.paa);
priority = 2.3;
};
class ACE_AssignTeamBlue {
@@ -91,7 +91,7 @@ class CfgVehicles {
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam));
statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam));
showDisabled = 1;
- icon = PATHTOF(UI\team\team_blue_ca.paa);
+ icon = QPATHTOF(UI\team\team_blue_ca.paa);
priority = 2.2;
};
class ACE_AssignTeamYellow {
@@ -99,7 +99,7 @@ class CfgVehicles {
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam));
statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam));
showDisabled = 1;
- icon = PATHTOF(UI\team\team_yellow_ca.paa);
+ icon = QPATHTOF(UI\team\team_yellow_ca.paa);
priority = 2.1;
};
class ACE_UnassignTeam {
@@ -107,7 +107,7 @@ class CfgVehicles {
condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {assignedTeam _target != 'MAIN'});
statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam));
showDisabled = 1;
- icon = PATHTOF(UI\team\team_white_ca.paa);
+ icon = QPATHTOF(UI\team\team_white_ca.paa);
priority = 2.5;
};
};
@@ -118,7 +118,7 @@ class CfgVehicles {
statement = QUOTE([_player] joinSilent group _target);
showDisabled = 0;
priority = 2.6;
- icon = PATHTOF(UI\team\team_management_ca.paa);
+ icon = QPATHTOF(UI\team\team_management_ca.paa);
};
class ACE_GetDown {
displayName = CSTRING(GetDown);
@@ -223,7 +223,7 @@ class CfgVehicles {
statement = "";
showDisabled = 1;
priority = 3.2;
- icon = PATHTOF(UI\team\team_management_ca.paa);
+ icon = QPATHTOF(UI\team\team_management_ca.paa);
class ACE_JoinTeamRed {
displayName = CSTRING(JoinTeamRed);
@@ -232,7 +232,7 @@ class CfgVehicles {
statement = QUOTE([ARR_2(_player,'RED')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.4;
- icon = PATHTOF(UI\team\team_red_ca.paa);
+ icon = QPATHTOF(UI\team\team_red_ca.paa);
};
class ACE_JoinTeamGreen {
displayName = CSTRING(JoinTeamGreen);
@@ -241,7 +241,7 @@ class CfgVehicles {
statement = QUOTE([ARR_2(_player,'GREEN')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.3;
- icon = PATHTOF(UI\team\team_green_ca.paa);
+ icon = QPATHTOF(UI\team\team_green_ca.paa);
};
class ACE_JoinTeamBlue {
displayName = CSTRING(JoinTeamBlue);
@@ -250,7 +250,7 @@ class CfgVehicles {
statement = QUOTE([ARR_2(_player,'BLUE')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.2;
- icon = PATHTOF(UI\team\team_blue_ca.paa);
+ icon = QPATHTOF(UI\team\team_blue_ca.paa);
};
class ACE_JoinTeamYellow {
displayName = CSTRING(JoinTeamYellow);
@@ -259,7 +259,7 @@ class CfgVehicles {
statement = QUOTE([ARR_2(_player,'YELLOW')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.1;
- icon = PATHTOF(UI\team\team_yellow_ca.paa);
+ icon = QPATHTOF(UI\team\team_yellow_ca.paa);
};
class ACE_LeaveTeam {
displayName = CSTRING(LeaveTeam);
@@ -268,7 +268,7 @@ class CfgVehicles {
statement = QUOTE([ARR_2(_player,'MAIN')] call DFUNC(joinTeam));
showDisabled = 1;
priority = 2.5;
- icon = PATHTOF(UI\team\team_white_ca.paa);
+ icon = QPATHTOF(UI\team\team_white_ca.paa);
};
class ACE_BecomeLeader {
displayName = CSTRING(BecomeLeader);
@@ -277,7 +277,7 @@ class CfgVehicles {
statement = QUOTE(_this call DFUNC(doBecomeLeader));
showDisabled = 1;
priority = 1.0;
- icon = PATHTOF(UI\team\team_white_ca.paa);
+ icon = QPATHTOF(UI\team\team_white_ca.paa);
};
class ACE_LeaveGroup {
displayName = CSTRING(LeaveGroup);
@@ -286,7 +286,7 @@ class CfgVehicles {
statement = QUOTE(_oldGroup = units group _player; _newGroup = createGroup side _player; [_player] joinSilent _newGroup; {_player reveal _x} forEach _oldGroup;);
showDisabled = 1;
priority = 1.2;
- icon = PATHTOF(UI\team\team_management_ca.paa);
+ icon = QPATHTOF(UI\team\team_management_ca.paa);
};
};
@@ -355,6 +355,32 @@ class CfgVehicles {
};
};
+ class Motorcycle: LandVehicle {
+ class ACE_Actions {
+ class ACE_MainActions {
+ displayName = CSTRING(MainAction);
+ selection = "";
+ distance = 10;
+ condition = "true";
+ class ACE_Passengers {
+ displayName = CSTRING(Passengers);
+ condition = "true";
+ statement = "";
+ insertChildren = QUOTE(_this call DFUNC(addPassengersActions));
+ };
+ };
+ };
+
+ class ACE_SelfActions {
+ class ACE_Passengers {
+ displayName = CSTRING(Passengers);
+ condition = "true";
+ statement = "";
+ insertChildren = QUOTE(_this call DFUNC(addPassengersActions));
+ };
+ };
+ };
+
class Air;
class Helicopter: Air {
class ACE_Actions {
@@ -420,7 +446,7 @@ class CfgVehicles {
class ACE_Push {
displayName = CSTRING(Push);
distance = 6;
- condition = QUOTE(getMass _target <= 2600 && {alive _target} && {vectorMagnitude velocity _target < 3});
+ condition = QUOTE(_target call FUNC(canPush));
statement = QUOTE(_this call FUNC(push));
showDisabled = 0;
priority = -1;
@@ -470,14 +496,6 @@ class CfgVehicles {
};
};
- class Pod_Heli_Transport_04_base_F: StaticWeapon {
- class ACE_Actions: ACE_Actions {
- class ACE_MainActions: ACE_MainActions {
- distance = 5;
- };
- };
- };
-
class StaticMGWeapon: StaticWeapon {};
class HMG_01_base_F: StaticMGWeapon {};
@@ -526,6 +544,14 @@ class CfgVehicles {
class ACE_SelfActions {};
};
+ class Slingload_base_F: ReammoBox_F {};
+ class Pod_Heli_Transport_04_base_F: Slingload_base_F {
+ class ACE_Actions: ACE_Actions {
+ class ACE_MainActions: ACE_MainActions {
+ distance = 5;
+ };
+ };
+ };
class ACE_RepairItem_Base: ThingX {
class ACE_Actions {
@@ -577,7 +603,7 @@ class CfgVehicles {
class Land_PortableLight_double_off_F: Land_PortableLight_double_F {
scope = 1;
};
-
+
class RoadCone_F: ThingX {
class ACE_Actions {
class ACE_MainActions {
diff --git a/addons/interaction/RscTitles.hpp b/addons/interaction/RscTitles.hpp
index d03d3e0f36..71070b1715 100644
--- a/addons/interaction/RscTitles.hpp
+++ b/addons/interaction/RscTitles.hpp
@@ -170,7 +170,7 @@ class RscTitles {
class controls {
class SelectIcon: RscInteractionHelperIcon{
idc = 1200;
- text = PATHTOF(UI\mouse_left_ca.paa);
+ text = QPATHTOF(UI\mouse_left_ca.paa);
y = 17.5 * GUI_GRID_H;
};
class SelectText: RscInteractionText{
@@ -180,7 +180,7 @@ class RscTitles {
};
class GoBackIcon: RscInteractionHelperIcon{
idc = 1201;
- text = PATHTOF(UI\mouse_right_ca.paa);
+ text = QPATHTOF(UI\mouse_right_ca.paa);
y = 19.5 * GUI_GRID_H;
};
class GoBackText: RscInteractionText{
@@ -190,7 +190,7 @@ class RscTitles {
};
class ScrollIcon: RscInteractionHelperIcon{
idc = 1202;
- text = PATHTOF(UI\mouse_scroll_ca.paa);
+ text = QPATHTOF(UI\mouse_scroll_ca.paa);
y = 18.5 * GUI_GRID_H;
};
class ScrollText: RscInteractionText{
diff --git a/addons/interaction/XEH_PREP.hpp b/addons/interaction/XEH_PREP.hpp
index 71facedc3f..be6158cdd5 100644
--- a/addons/interaction/XEH_PREP.hpp
+++ b/addons/interaction/XEH_PREP.hpp
@@ -32,6 +32,7 @@ PREP(handleScrollWheel);
PREP(openDoor);
// interaction with boats
+PREP(canPush);
PREP(push);
PREP(switchLamp);
diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp
index 2413256bf4..5a21e452e3 100644
--- a/addons/interaction/config.cpp
+++ b/addons/interaction/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interact_menu"};
- author[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578", "dixon13"};
- authorUrl = "https://github.com/commy2/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578", "dixon13"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/interaction/functions/fnc_addPassengersActions.sqf b/addons/interaction/functions/fnc_addPassengersActions.sqf
index 8ee95b7eb9..7b8ad69ee0 100644
--- a/addons/interaction/functions/fnc_addPassengersActions.sqf
+++ b/addons/interaction/functions/fnc_addPassengersActions.sqf
@@ -34,7 +34,7 @@ _actions = [];
] select (([driver _vehicle, gunner _vehicle, commander _vehicle] find _unit) + 1);
if (_unit getVariable [QEGVAR(captives,isHandcuffed), false]) then {
- _icon = QUOTE(PATHTOEF(captives,UI\handcuff_ca.paa));
+ _icon = QPATHTOEF(captives,UI\handcuff_ca.paa);
};
_actions pushBack [
diff --git a/addons/interaction/functions/fnc_canPush.sqf b/addons/interaction/functions/fnc_canPush.sqf
new file mode 100644
index 0000000000..478c89ca45
--- /dev/null
+++ b/addons/interaction/functions/fnc_canPush.sqf
@@ -0,0 +1,22 @@
+/*
+ * Author: Jonpas
+ * Checks if the boat can be pushed.
+ *
+ * Arguments:
+ * 0: Target
+ *
+ * Return Value:
+ * Can Push
+ *
+ * Example:
+ * [target] call ace_interaction_fnc_canPush
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+params ["_target"];
+
+alive _target &&
+{getMass _target <= 2600 || getNumber (configFile >> "CfgVehicles" >> typeOf _target >> QGVAR(canPush)) == 1} &&
+{vectorMagnitude velocity _target < 3}
diff --git a/addons/interaction/functions/fnc_openDoor.sqf b/addons/interaction/functions/fnc_openDoor.sqf
index b2249d1589..180c01fba9 100644
--- a/addons/interaction/functions/fnc_openDoor.sqf
+++ b/addons/interaction/functions/fnc_openDoor.sqf
@@ -62,10 +62,10 @@ GVAR(usedScrollWheel) = false;
};
// this allows for holding the door in it's current state.
- if (ACE_time > _time && {diag_frameno > _frame}) then {
+ if (CBA_missionTime > _time && {diag_frameno > _frame}) then {
GVAR(usedScrollWheel) = true;
};
// do incremental door opening
{_house animate [_x, GVAR(doorTargetPhase)]; false} count _animations;
-}, 0.1, [_house, _animations, getPosASL ACE_player, ACE_time + 0.2, diag_frameno + 2]] call CBA_fnc_addPerFrameHandler;
+}, 0.1, [_house, _animations, getPosASL ACE_player, CBA_missionTime + 0.2, diag_frameno + 2]] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/interaction/functions/fnc_push.sqf b/addons/interaction/functions/fnc_push.sqf
index 9a6c86a18e..bdeaf29012 100644
--- a/addons/interaction/functions/fnc_push.sqf
+++ b/addons/interaction/functions/fnc_push.sqf
@@ -18,8 +18,7 @@
params ["_boat", "_unit"];
-private "_newVelocity";
-_newVelocity = vectorDir _unit;
+private _newVelocity = vectorDir _unit;
_newVelocity set [2, 0.25];
_newVelocity = _newVelocity vectorMultiply 2;
diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml
index b847a66aa6..d9adf095fe 100644
--- a/addons/interaction/stringtable.xml
+++ b/addons/interaction/stringtable.xml
@@ -356,6 +356,8 @@
Aussteigen!
Sal del vehículo!
Sortez !
+ Vystupte
+ Saia
Team Management
@@ -711,6 +713,9 @@
Włącz
Encender
Allumer
+ Accendi
+ Zapnout
+ Ligar
Turn off
@@ -718,6 +723,9 @@
Wyłącz
Apagar
Eteindre
+ Spegni
+ Vypnout
+ Desligar
Pass magazine
@@ -758,7 +766,7 @@
%1 podał Ci magazynek %2.
%1 передал вам магазин %2.
%1 passou a você um carregador %2.
- %1 ti podal %2 zásobník.
+ %1 ti podal zásobník %2.
%1 ti ha passato un caricatore %2 .
%1 te pasó un cargador %2.
%1 vous a passé un chargeur %2.
@@ -775,4 +783,4 @@
Montrer l'interaction "donner un chargeur".
-
+
\ No newline at end of file
diff --git a/addons/inventory/config.cpp b/addons/inventory/config.cpp
index f0982a46b4..adef451644 100644
--- a/addons/inventory/config.cpp
+++ b/addons/inventory/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"Pabst Mirror, commy2"};
- authorUrl = "https://github.com/PabstMirror/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Pabst Mirror, commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf b/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf
index 6e48c1ec2a..0e1daa4a52 100644
--- a/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf
+++ b/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf
@@ -28,7 +28,7 @@ _filter ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChanged)}];
[{
disableSerialization;
params ["_filter"];
-
+
// remove "All", so we can push it to the back later.
// to keep localization we can keep the lbText (displayed name).
private _index = lbSize _filter - 1;
@@ -53,7 +53,7 @@ _filter ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChanged)}];
// readd "All" filter to last position and select it
_index = _filter lbAdd _nameAll;
_filter lbSetCurSel _index;
-}, [_filter]] call EFUNC(common,execNextFrame);
+}, [_filter]] call CBA_fnc_execNextFrame;
// monitor changes that can happen and force our update
private _dummyControl = _display ctrlCreate ["RscMapControl", -1];
diff --git a/addons/inventory/functions/fnc_onLBSelChanged.sqf b/addons/inventory/functions/fnc_onLBSelChanged.sqf
index 61e4b12b10..5ae49049fe 100644
--- a/addons/inventory/functions/fnc_onLBSelChanged.sqf
+++ b/addons/inventory/functions/fnc_onLBSelChanged.sqf
@@ -24,4 +24,4 @@ GVAR(selectedFilterIndex) = _index;
params ["_display"];
[_display] call FUNC(forceItemListUpdate);
-}, [ctrlParent _filter]] call EFUNC(common,execNextFrame);
+}, [ctrlParent _filter]] call CBA_fnc_execNextFrame;
diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml
index 6384c11641..56412a00b3 100644
--- a/addons/inventory/stringtable.xml
+++ b/addons/inventory/stringtable.xml
@@ -33,6 +33,7 @@
Zaini
Mochilas
Sacs à dos
+ Mochilas
Headgear
@@ -42,6 +43,7 @@
Copricapi
Cascos
Equipement de tête
+ Capacetes
Glasses
@@ -51,6 +53,7 @@
Occhiali
Gafas
Lunettes
+ Óculos
Uniforms
@@ -60,6 +63,7 @@
Uniformi
Uniformes
Uniformes
+ Uniformes
Vests
@@ -69,6 +73,7 @@
Vests
Chalecos
Gilets
+ Coletes
Grenades
@@ -78,6 +83,7 @@
Granate
Granadas
Grenades
+ Granadas
Medical
@@ -87,6 +93,7 @@
Medico
Médico
Médical
+ Médico
\ No newline at end of file
diff --git a/addons/javelin/CfgMagazines.hpp b/addons/javelin/CfgMagazines.hpp
index 3053cf1fa1..80111d9484 100644
--- a/addons/javelin/CfgMagazines.hpp
+++ b/addons/javelin/CfgMagazines.hpp
@@ -10,7 +10,7 @@ class CfgMagazines {
class Titan_AT: Titan_AA {
ammo = "ACE_Javelin_FGM148"; //from misssileGuidance, was "M_Titan_AT"
};
-
+
//Handheld Titan "AP" Magazine (SACLOS? "Anti-personal")
// class Titan_AP: Titan_AA {
//???
diff --git a/addons/javelin/CfgVehicles.hpp b/addons/javelin/CfgVehicles.hpp
index 1cd527089d..37023a8bd6 100644
--- a/addons/javelin/CfgVehicles.hpp
+++ b/addons/javelin/CfgVehicles.hpp
@@ -3,22 +3,22 @@ class CfgVehicles {
class StaticWeapon : LandVehicle {
class Turrets;
};
-
+
class StaticMGWeapon : StaticWeapon {
class Turrets : Turrets {
class MainTurret;
};
};
class AT_01_base_F: StaticMGWeapon {};
-
+
class B_static_AT_F: AT_01_base_F {
class Turrets : Turrets {
class MainTurret : MainTurret {
weapons[] = { QGVAR(Titan_Static) };
magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"};
-
+
turretInfoType = "ACE_RscOptics_javelin";
- gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d);
+ gunnerOpticsModel = QPATHTOF(data\reticle_titan.p3d);
opticsZoomMin = 0.08333;
opticsZoomMax = 0.04167;
opticsZoomInit = 0.08333;
@@ -34,9 +34,9 @@ class CfgVehicles {
class MainTurret : MainTurret {
weapons[] = { QGVAR(Titan_Static) };
magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"};
-
+
turretInfoType = "ACE_RscOptics_javelin";
- gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d);
+ gunnerOpticsModel = QPATHTOF(data\reticle_titan.p3d);
opticsZoomMin = 0.08333;
opticsZoomMax = 0.04167;
opticsZoomInit = 0.08333;
@@ -52,9 +52,9 @@ class CfgVehicles {
class MainTurret : MainTurret {
weapons[] = { QGVAR(Titan_Static) };
magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"};
-
+
turretInfoType = "ACE_RscOptics_javelin";
- gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d);
+ gunnerOpticsModel = QPATHTOF(data\reticle_titan.p3d);
opticsZoomMin = 0.08333;
opticsZoomMax = 0.04167;
opticsZoomInit = 0.08333;
@@ -65,4 +65,4 @@ class CfgVehicles {
};
};
};
-};
\ No newline at end of file
+};
diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp
index 75aaf7c332..b60f887396 100644
--- a/addons/javelin/CfgWeapons.hpp
+++ b/addons/javelin/CfgWeapons.hpp
@@ -1,38 +1,38 @@
class CfgWeapons {
class Launcher;
class MissileLauncher;
-
+
class Launcher_Base_F : Launcher {
- class WeaponSlotsInfo;
+ class WeaponSlotsInfo;
};
// @TODO: AA by default, motherfuckers
class missiles_titan : MissileLauncher {
-
+
};
-
+
class missiles_titan_at : missiles_titan { };
- class GVAR(Titan_Static) : missiles_titan_at {
+ class GVAR(Titan_Static) : missiles_titan_at {
GVAR(enabled) = 1;
weaponInfoType = "ACE_RscOptics_javelin";
- modelOptics = PATHTOF(data\reticle_titan.p3d);
-
+ modelOptics = QPATHTOF(data\reticle_titan.p3d);
+
canLock = 0;
magazines[] = {"1Rnd_GAT_missiles"};
lockingTargetSound[] = {"",0,1};
lockedTargetSound[] = {"",0,1};
};
-
+
// @TODO: AA by default, motherfuckers
class launch_Titan_base : Launcher_Base_F {};
-
+
class launch_Titan_short_base : launch_Titan_base { };
-
+
class launch_B_Titan_short_F: launch_Titan_short_base {
GVAR(enabled) = 1;
weaponInfoType = "ACE_RscOptics_javelin";
- modelOptics = PATHTOF(data\reticle_titan.p3d);
-
+ modelOptics = QPATHTOF(data\reticle_titan.p3d);
+
canLock = 0;
lockingTargetSound[] = {"",0,1};
@@ -41,8 +41,8 @@ class CfgWeapons {
class launch_I_Titan_short_F: launch_Titan_short_base {
GVAR(enabled) = 1;
weaponInfoType = "ACE_RscOptics_javelin";
- modelOptics = PATHTOF(data\reticle_titan.p3d);
-
+ modelOptics = QPATHTOF(data\reticle_titan.p3d);
+
canLock = 0;
lockingTargetSound[] = {"",0,1};
@@ -51,22 +51,22 @@ class CfgWeapons {
class launch_O_Titan_short_F: launch_Titan_short_base {
GVAR(enabled) = 1;
weaponInfoType = "ACE_RscOptics_javelin";
- modelOptics = PATHTOF(data\reticle_titan.p3d);
-
+ modelOptics = QPATHTOF(data\reticle_titan.p3d);
+
canLock = 0;
-
-
+
+
lockingTargetSound[] = {"",0,1};
lockedTargetSound[] = {"",0,1};
};
class launch_Titan_short_F: launch_Titan_short_base {
GVAR(enabled) = 1;
weaponInfoType = "ACE_RscOptics_javelin";
- modelOptics = PATHTOF(data\reticle_titan.p3d);
-
+ modelOptics = QPATHTOF(data\reticle_titan.p3d);
+
canLock = 0;
lockingTargetSound[] = {"",0,1};
lockedTargetSound[] = {"",0,1};
};
-};
\ No newline at end of file
+};
diff --git a/addons/javelin/RscInGameUI.hpp b/addons/javelin/RscInGameUI.hpp
index ea1e12626c..f60533de45 100644
--- a/addons/javelin/RscInGameUI.hpp
+++ b/addons/javelin/RscInGameUI.hpp
@@ -15,7 +15,7 @@ class RscInGameUI {
controls[] = { "ACE_javelin_elements_group", "ACE_Targeting" }; //, "ACE_TargetingConstrains", "ACE_TargetingGate", "ACE_TargetingLines"};
onLoad = QUOTE(_this call FUNC(onOpticLoad));
onUnload = QUOTE(_this call FUNC(onOpticUnload));
-
+
class ACE_javelin_elements_group: RscControlsGroup
{
x = "SafezoneX";
@@ -44,7 +44,7 @@ class RscInGameUI {
w = 0;
h = 0;
};
-
+
class ACE_javelin_Day_mode_off: RscPicture {
idc = 1001;
x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.03/4)*3*SafezoneH - SafezoneX";
@@ -123,7 +123,7 @@ class RscInGameUI {
h = 0;
colorText[] = {0.2941,0.8745,0.2157,1};
};
-
+
};
};
class CA_Javelin_NFOV_mode_off: ACE_javelin_Day_mode_off {
@@ -191,7 +191,7 @@ class RscInGameUI {
h = "0.1895*SafezoneH";
colorText[] = {0.2941,0.8745,0.2157,1};
};
-
+
};
};
@@ -253,12 +253,12 @@ class RscInGameUI {
};
class ACE_Targeting : RscControlsGroup {
idc = 6999;
-
+
x = "SafezoneX";
y = "SafezoneY";
w = "SafezoneW";
h = "SafezoneH";
-
+
enabled = 0;
class Controls {
class ACE_TargetingConstrains: RscControlsGroup {
@@ -266,7 +266,7 @@ class RscInGameUI {
y = "SafezoneY";
w = "SafezoneW-SafezoneX";
h = "SafezoneH-SafezoneY";
-
+
enabled = 0;
class VScrollbar {
autoScrollSpeed = -1;
@@ -306,7 +306,7 @@ class RscInGameUI {
};
class OpticsBorders: RscPicture {
idc = 699105;
- text = PATHTOF(data\javelin_ui_border_ca.paa);
+ text = QPATHTOF(data\javelin_ui_border_ca.paa);
colorText[] = {0,0,0,1};
x = "((SafezoneW -(3.1/4)*SafezoneH)/2) - SafezoneX";
y = "0.15*SafezoneH-SafezoneY";
@@ -315,7 +315,7 @@ class RscInGameUI {
};
};
};
-
+
class ACE_TargetingGate : ACE_TargetingConstrains {
idc = 699200;
class Controls {
@@ -401,8 +401,8 @@ class RscInGameUI {
};
};
};
-
-
+
+
class ACE_TargetingLines: ACE_TargetingConstrains {
idc = 699300;
class Controls {
@@ -451,4 +451,4 @@ ACE_Titan_TOP_off: 1006
ACE_Titan_DIR: 1007
ACE_Titan_FLTR_mode_off: 1002
ACE_Titan_FLTR_mode: 161
-*/
\ No newline at end of file
+*/
diff --git a/addons/javelin/config.cpp b/addons/javelin/config.cpp
index 8dfc970902..b789bfea01 100644
--- a/addons/javelin/config.cpp
+++ b/addons/javelin/config.cpp
@@ -5,7 +5,9 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = { "ace_main", "ace_common", "ace_missileguidance" };
+ requiredAddons[] = {"ace_main", "ace_common", "ace_missileguidance"};
+ author = ECSTRING(common,ACETeam);
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf
index f561806eaa..6608b13ecc 100644
--- a/addons/javelin/functions/fnc_onOpticDraw.sqf
+++ b/addons/javelin/functions/fnc_onOpticDraw.sqf
@@ -20,7 +20,7 @@ _currentShooter = (vehicle ACE_player);
_args = uiNamespace getVariable[QGVAR(arguments), [] ];
if( (count _args) > 0) then {
_lastTick = _args select 0;
- if(ACE_diagTime - _lastTick > 1) then {
+ if(diag_tickTime - _lastTick > 1) then {
[] call FUNC(onOpticLoad);
};
};
@@ -98,8 +98,17 @@ if (_range > 50 && {_range < 2500}) then {
};
};
-if (isNull _newTarget) then {
- _newTarget = cursorTarget;
+if ((isNull _newTarget) && {cursorObject isKindOf "AllVehicles"}) then {
+ private _intersectionsToCursorTarget = lineIntersectsSurfaces [(AGLtoASL positionCameraToWorld [0,0,0]), aimPos cursorObject, ace_player, cursorObject, true, 1];
+ if (_intersectionsToCursorTarget isEqualTo []) then {
+ _newTarget = cursorObject;
+ };
+};
+if ((isNull _newTarget) && {cursorTarget isKindOf "AllVehicles"}) then {
+ private _intersectionsToCursorTarget = lineIntersectsSurfaces [(AGLtoASL positionCameraToWorld [0,0,0]), aimPos cursorTarget, ace_player, cursorTarget, true, 1];
+ if (_intersectionsToCursorTarget isEqualTo []) then {
+ _newTarget = cursorTarget;
+ };
};
// Create constants
@@ -184,12 +193,12 @@ if (isNull _newTarget) then {
// Lock on after 3 seconds
if(_currentTarget != _newTarget) then {
TRACE_1("New Target, reseting locking", _newTarget);
- _lockTime = ACE_diagTime;
+ _lockTime = diag_tickTime;
_currentTarget = _newTarget;
playSound "ACE_Javelin_Locking";
} else {
- if(ACE_diagTime - _lockTime > __LOCKONTIME + _randomLockInterval) then {
+ if(diag_tickTime - _lockTime > __LOCKONTIME + _randomLockInterval) then {
TRACE_2("LOCKED!", _currentTarget, _lockTime);
__JavelinIGUISeek ctrlSetTextColor __ColorGreen;
@@ -231,9 +240,9 @@ if (isNull _newTarget) then {
// Allow fire
_fireDisabledEH = [_fireDisabledEH] call FUNC(enableFire);
- if(ACE_diagTime > _soundTime) then {
+ if(diag_tickTime > _soundTime) then {
playSound "ACE_Javelin_Locked";
- _soundTime = ACE_diagTime + 0.25;
+ _soundTime = diag_tickTime + 0.25;
};
} else {
__JavelinIGUITargeting ctrlShow true;
@@ -265,9 +274,9 @@ if (isNull _newTarget) then {
{_x ctrlCommit __TRACKINTERVAL} forEach [__JavelinIGUITargetingGateTL,__JavelinIGUITargetingGateTR,__JavelinIGUITargetingGateBL,__JavelinIGUITargetingGateBR];
- if(ACE_diagTime > _soundTime) then {
+ if(diag_tickTime > _soundTime) then {
playSound "ACE_Javelin_Locking";
- _soundTime = ACE_diagTime + 0.25;
+ _soundTime = diag_tickTime + 0.25;
};
// Disallow fire
_fireDisabledEH = [_fireDisabledEH] call FUNC(disableFire);
@@ -294,7 +303,7 @@ if (isNull _newTarget) then {
//TRACE_2("", _newTarget, _currentTarget);
// Save arguments for next run
-_args set[0, ACE_diagTime];
+_args set[0, diag_tickTime];
_args set[1, _currentTarget];
_args set[2, _runTime];
_args set[3, _lockTime];
diff --git a/addons/javelin/functions/fnc_onOpticLoad.sqf b/addons/javelin/functions/fnc_onOpticLoad.sqf
index cb4eac74f9..85624712e3 100644
--- a/addons/javelin/functions/fnc_onOpticLoad.sqf
+++ b/addons/javelin/functions/fnc_onOpticLoad.sqf
@@ -24,7 +24,7 @@ if(GVAR(pfehID) != -1) then {
uiNameSpace setVariable [QGVAR(arguments),
[
- ACE_diagTime, // Last runtime
+ diag_tickTime, // Last runtime
objNull, // currentTargetObject
0, // Run Time
0, // Lock Time
diff --git a/addons/javelin/stringtable.xml b/addons/javelin/stringtable.xml
index 385abf586e..dcc03dca91 100644
--- a/addons/javelin/stringtable.xml
+++ b/addons/javelin/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/kestrel4500/CfgVehicles.hpp b/addons/kestrel4500/CfgVehicles.hpp
index 9ca6510928..ccc4fa3bd2 100644
--- a/addons/kestrel4500/CfgVehicles.hpp
+++ b/addons/kestrel4500/CfgVehicles.hpp
@@ -9,7 +9,7 @@ class CfgVehicles {
statement = QUOTE(call FUNC(createKestrelDialog));
showDisabled = 0;
priority = 0.1;
- icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa));
+ icon = QPATHTOF(UI\Kestrel4500_Icon.paa);
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
class GVAR(show) {
displayName = CSTRING(ShowKestrel);
@@ -17,7 +17,7 @@ class CfgVehicles {
statement = QUOTE(call FUNC(displayKestrel));
showDisabled = 0;
priority = 0.2;
- icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa));
+ icon = QPATHTOF(UI\Kestrel4500_Icon.paa);
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
class GVAR(hide) {
@@ -26,7 +26,7 @@ class CfgVehicles {
statement = QUOTE(call FUNC(displayKestrel));
showDisabled = 0;
priority = 0.3;
- icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa));
+ icon = QPATHTOF(UI\Kestrel4500_Icon.paa);
exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"};
};
};
diff --git a/addons/kestrel4500/CfgWeapons.hpp b/addons/kestrel4500/CfgWeapons.hpp
index c31b736ac6..8b318994a2 100644
--- a/addons/kestrel4500/CfgWeapons.hpp
+++ b/addons/kestrel4500/CfgWeapons.hpp
@@ -8,8 +8,8 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(Name);
descriptionShort = CSTRING(Description);
- model = PATHTOF(data\kestrel4500.p3d);
- picture = PATHTOF(UI\Kestrel4500.paa);
+ model = QPATHTOF(data\kestrel4500.p3d);
+ picture = QPATHTOF(UI\Kestrel4500.paa);
icon = "iconObject_circle";
mapSize = 0.034;
diff --git a/addons/kestrel4500/RscTitles.hpp b/addons/kestrel4500/RscTitles.hpp
index 7046918935..276e8c4392 100644
--- a/addons/kestrel4500/RscTitles.hpp
+++ b/addons/kestrel4500/RscTitles.hpp
@@ -348,25 +348,25 @@ class RscTitles {
fadeout = 0;
class controls {
class Preload_0 {
- text = PATHTOF(UI\Kestrel4500_0.paa);
+ text = QPATHTOF(UI\Kestrel4500_0.paa);
};
class Preload_1 {
- text = PATHTOF(UI\Kestrel4500_1.paa);
+ text = QPATHTOF(UI\Kestrel4500_1.paa);
};
class Preload_2 {
- text = PATHTOF(UI\Kestrel4500_2.paa);
+ text = QPATHTOF(UI\Kestrel4500_2.paa);
};
class Preload_3 {
- text = PATHTOF(UI\Kestrel4500_3.paa);
+ text = QPATHTOF(UI\Kestrel4500_3.paa);
};
class Preload_4 {
- text = PATHTOF(UI\Kestrel4500_4.paa);
+ text = QPATHTOF(UI\Kestrel4500_4.paa);
};
class Preload_5 {
- text = PATHTOF(UI\Kestrel4500_5.paa);
+ text = QPATHTOF(UI\Kestrel4500_5.paa);
};
class Preload_6 {
- text = PATHTOF(UI\Kestrel4500_6.paa);
+ text = QPATHTOF(UI\Kestrel4500_6.paa);
};
};
};
diff --git a/addons/kestrel4500/XEH_postInit.sqf b/addons/kestrel4500/XEH_postInit.sqf
index f22fc2228f..9511041bd2 100644
--- a/addons/kestrel4500/XEH_postInit.sqf
+++ b/addons/kestrel4500/XEH_postInit.sqf
@@ -11,7 +11,7 @@ GVAR(MinAvgMax) = false;
GVAR(MinAvgMaxMode) = 0;
GVAR(referenceHeadingMenu) = 0;
GVAR(referenceHeadingAutoSet) = true;
-GVAR(manualSetCooldown) = ACE_diagTime;
+GVAR(manualSetCooldown) = diag_tickTime;
GVAR(headingSetDisplayTimer) = 0;
GVAR(Menu) = 1;
diff --git a/addons/kestrel4500/config.cpp b/addons/kestrel4500/config.cpp
index 95a533fd9f..74e2f18f19 100644
--- a/addons/kestrel4500/config.cpp
+++ b/addons/kestrel4500/config.cpp
@@ -6,7 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_Kestrel4500"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_common", "ACE_weather"};
- author[] = {ECSTRING(common,ACETeam), "Ruthberg"};
+ author = ECSTRING(common,ACETeam);
+ authors[] = {ECSTRING(common,ACETeam), "Ruthberg"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/kestrel4500/functions/fnc_buttonPressed.sqf b/addons/kestrel4500/functions/fnc_buttonPressed.sqf
index 83c471092a..a051f6b1b6 100644
--- a/addons/kestrel4500/functions/fnc_buttonPressed.sqf
+++ b/addons/kestrel4500/functions/fnc_buttonPressed.sqf
@@ -33,12 +33,12 @@ switch (_this) do {
case 2: { // Auto set
GVAR(RefHeading) = (getDir ACE_player) % 360;
GVAR(referenceHeadingMenu) = 0;
- GVAR(headingSetDisplayTimer) = ACE_diagTime;
+ GVAR(headingSetDisplayTimer) = diag_tickTime;
};
case 3: { // Manual set
GVAR(RefHeading) = GVAR(TmpHeading);
GVAR(referenceHeadingMenu) = 0;
- GVAR(headingSetDisplayTimer) = ACE_diagTime;
+ GVAR(headingSetDisplayTimer) = diag_tickTime;
};
};
};
@@ -73,13 +73,13 @@ switch (_this) do {
GVAR(MinAvgMax) = !GVAR(MinAvgMax);
} else {
if (GVAR(referenceHeadingMenu) == 3) then {
- if (ACE_diagTime - GVAR(manualSetCooldown) < 0.2) then {
+ if (diag_tickTime - GVAR(manualSetCooldown) < 0.2) then {
GVAR(TmpHeading) = GVAR(TmpHeading) - 10;
} else {
GVAR(TmpHeading) = GVAR(TmpHeading) - 1;
};
GVAR(TmpHeading) = (GVAR(TmpHeading) + 360) % 360;
- GVAR(manualSetCooldown) = ACE_diagTime;
+ GVAR(manualSetCooldown) = diag_tickTime;
};
};
};
@@ -88,13 +88,13 @@ switch (_this) do {
GVAR(MinAvgMax) = !GVAR(MinAvgMax);
} else {
if (GVAR(referenceHeadingMenu) == 3) then {
- if (ACE_diagTime - GVAR(manualSetCooldown) < 0.2) then {
+ if (diag_tickTime - GVAR(manualSetCooldown) < 0.2) then {
GVAR(TmpHeading) = GVAR(TmpHeading) + 10;
} else {
GVAR(TmpHeading) = GVAR(TmpHeading) + 1;
};
GVAR(TmpHeading) = (GVAR(TmpHeading) + 360) % 360;
- GVAR(manualSetCooldown) = ACE_diagTime;
+ GVAR(manualSetCooldown) = diag_tickTime;
};
};
};
diff --git a/addons/kestrel4500/functions/fnc_displayKestrel.sqf b/addons/kestrel4500/functions/fnc_displayKestrel.sqf
index 64d06fea1c..28de70a13d 100644
--- a/addons/kestrel4500/functions/fnc_displayKestrel.sqf
+++ b/addons/kestrel4500/functions/fnc_displayKestrel.sqf
@@ -59,8 +59,8 @@ GVAR(Overlay) = true;
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
- if (ACE_diagTime > GVAR(updateTimer)) then {
- GVAR(updateTimer) = ACE_diagTime + 1;
+ if (diag_tickTime > GVAR(updateTimer)) then {
+ GVAR(updateTimer) = diag_tickTime + 1;
private ["_outputData"];
_outputData = [] call FUNC(generateOutputData);
@@ -126,7 +126,7 @@ GVAR(Overlay) = true;
};
call FUNC(updateImpellerState);
- __ctrlKestrel4500 ctrlSetText format [QUOTE(PATHTOF(UI\Kestrel4500_%1.paa)), floor(GVAR(ImpellerState) % 7)];
+ __ctrlKestrel4500 ctrlSetText format [QPATHTOF(UI\Kestrel4500_%1.paa), floor(GVAR(ImpellerState) % 7)];
}, 0.01, []] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/kestrel4500/functions/fnc_generateOutputData.sqf b/addons/kestrel4500/functions/fnc_generateOutputData.sqf
index 016baebef7..c3bce5efa2 100644
--- a/addons/kestrel4500/functions/fnc_generateOutputData.sqf
+++ b/addons/kestrel4500/functions/fnc_generateOutputData.sqf
@@ -31,7 +31,7 @@
*/
#include "script_component.hpp"
-if (ACE_diagTime - GVAR(headingSetDisplayTimer) < 0.8) exitWith {["", "", " Heading Set", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]};
+if (diag_tickTime - GVAR(headingSetDisplayTimer) < 0.8) exitWith {["", "", " Heading Set", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]};
private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_airDensity", "_densityAltitude", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_dayString", "_monthString", "_windSpeed", "_windDir", "_textTop", "_textCenterBig", "_textCenter", "_textCenterLine1Left", "_textCenterLine2Left", "_textCenterLine3Left", "_textCenterLine1Right", "_textCenterLine2Right", "_textCenterLine3Right", "_textInfoLine1", "_textInfoLine2", "_textBottomBig", "_textCenterLine1", "_textCenterLine2", "_textCenterLine3", "_textCenterLine4", "_textCenterLine5", "_textCenterLine6"];
diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf
index 5793d36976..8c99271970 100644
--- a/addons/kestrel4500/initKeybinds.sqf
+++ b/addons/kestrel4500/initKeybinds.sqf
@@ -5,7 +5,7 @@
if (GVAR(Kestrel4500)) exitWith {
closeDialog 0;
false
- };
+ };
// Statement
[] call FUNC(createKestrelDialog);
false
@@ -17,7 +17,7 @@
{
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
-
+
// Statement
[] call FUNC(displayKestrel);
false
@@ -34,7 +34,7 @@ _conditonCode = {
_toggleCode = {
// Conditions: canInteract
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {};
-
+
// Statement
if (!GVAR(Overlay)) then {
//If no overlay, show it:
@@ -56,4 +56,4 @@ _closeCode = {
closeDialog 0;
};
};
-[(localize LSTRING(Name)), QUOTE(PATHTOF(UI\Kestrel4500.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew);
+[(localize LSTRING(Name)), QPATHTOF(UI\Kestrel4500.paa), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew);
diff --git a/addons/kestrel4500/stringtable.xml b/addons/kestrel4500/stringtable.xml
index defb44c2dc..3ad9e8824f 100644
--- a/addons/kestrel4500/stringtable.xml
+++ b/addons/kestrel4500/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/laser/CfgVehicles.hpp b/addons/laser/CfgVehicles.hpp
index d8976ac204..780107fdf7 100644
--- a/addons/laser/CfgVehicles.hpp
+++ b/addons/laser/CfgVehicles.hpp
@@ -6,20 +6,20 @@ class CfgVehicles {
model = "\A3\Weapons_F\empty.p3d";
destrType = "DestructNo";
simulation = "LaserTarget";
-
+
class EventHandlers {
init = QUOTE(_this call FUNC(laser_init));
};
};
-
+
// Visual laserTarget override
class ACE_LaserTarget_Visual : LaserTarget {
simulation = "LaserTarget";
model = "\A3\Weapons_f\laserTgt.p3d";
};
-
+
// Vehicle lockable configurations
-
+
class AllVehicles;
class Air: AllVehicles {
class Turrets;
@@ -42,4 +42,4 @@ class CfgVehicles {
};
};
};
-};
\ No newline at end of file
+};
diff --git a/addons/laser/CfgWeapons.hpp b/addons/laser/CfgWeapons.hpp
index 70a25e6f85..6dff36a4e8 100644
--- a/addons/laser/CfgWeapons.hpp
+++ b/addons/laser/CfgWeapons.hpp
@@ -1,7 +1,6 @@
class CfgWeapons {
class Binocular;
-
class Laserdesignator : Binocular {
visionMode[] = {"Normal","NVG"};
};
diff --git a/addons/laser/RscInGameUI.hpp b/addons/laser/RscInGameUI.hpp
index d87136c960..08f0a794be 100644
--- a/addons/laser/RscInGameUI.hpp
+++ b/addons/laser/RscInGameUI.hpp
@@ -8,11 +8,10 @@ class RscInGameUI {
class RscOptics_LaserDesignator {
idd = 300;
controls[] = {"CA_IGUI_elements_group"};
-
+
onLoad = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',(_this select 0)];";
onUnload = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',nil];";
-
-
+
class CA_IGUI_elements_group: RscControlsGroup {
idc = 170;
@@ -118,7 +117,7 @@ class RscInGameUI {
w = "3.5 * (0.01875 * SafezoneH)";
h = "1.6 * (0.025 * SafezoneH)";
};
-
+
class ACE_LaserCode_Helper : RscMapControl {
idc = -1;
onDraw = QUOTE(_this call FUNC(onLaserDesignatorDraw));
@@ -141,4 +140,4 @@ class RscInGameUI {
};
};
};
-};
\ No newline at end of file
+};
diff --git a/addons/laser/config.cpp b/addons/laser/config.cpp
index ad368cdc2d..3ba439f047 100644
--- a/addons/laser/config.cpp
+++ b/addons/laser/config.cpp
@@ -5,7 +5,9 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = { "ace_common" };
+ requiredAddons[] = {"ace_common"};
+ author = ECSTRING(common,ACETeam);
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
@@ -13,4 +15,4 @@ class CfgPatches {
#include "CfgEventhandlers.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
-#include "RscInGameUI.hpp"
\ No newline at end of file
+#include "RscInGameUI.hpp"
diff --git a/addons/laser/functions/fnc_laserOff.sqf b/addons/laser/functions/fnc_laserOff.sqf
index 84613cd988..7899ec1253 100644
--- a/addons/laser/functions/fnc_laserOff.sqf
+++ b/addons/laser/functions/fnc_laserOff.sqf
@@ -8,7 +8,7 @@
* Return value:
* None
*/
-
+
#include "script_component.hpp"
private ["_uuid"];
diff --git a/addons/laser/functions/fnc_laserOn.sqf b/addons/laser/functions/fnc_laserOn.sqf
index 901fa04b9a..12873b5ed0 100644
--- a/addons/laser/functions/fnc_laserOn.sqf
+++ b/addons/laser/functions/fnc_laserOn.sqf
@@ -17,7 +17,7 @@
#include "script_component.hpp"
private ["_uuid", "_args"];
-_uuid = format["%1%2%3", floor ACE_diagTime, floor random 1000, floor random 10000];
-_args = [_uuid, _this];
-["laser_laserOn", _args] call EFUNC(common,globalEvent);
-_uuid;
+_uuid = format["%1%2%3", floor diag_tickTime, floor random 1000, floor random 10000];
+_args = [_uuid, _this];
+["laser_laserOn", _args] call EFUNC(common,globalEvent);
+_uuid;
diff --git a/addons/laser/functions/fnc_laserTargetPFH.sqf b/addons/laser/functions/fnc_laserTargetPFH.sqf
index 6d993b07de..8726ce4201 100644
--- a/addons/laser/functions/fnc_laserTargetPFH.sqf
+++ b/addons/laser/functions/fnc_laserTargetPFH.sqf
@@ -12,7 +12,7 @@ _uuid = _args select 2;
if(isNull _laserTarget || !alive _shooter) exitWith {
[(_this select 1)] call CBA_fnc_removePerFrameHandler;
REM(GVAR(VanillaLasers), _laserTarget);
-
+
// Remove laseron
[_uuid] call FUNC(laserOff);
};
@@ -28,4 +28,3 @@ drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa", [1,0,0,1], (A
} forEach DRAW_LINES;
DRAW_LINES = [];
#endif
-
diff --git a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf
index 22287f1342..45b60a69c1 100644
--- a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf
+++ b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf
@@ -62,7 +62,7 @@ _finalOwner = nil;
};
};
};
-
+
//Handle Weird Data Return
if (_laser params [["_laserPos", [], [[]], 3], ["_laserDir", [], [[]], 3]]) then {
_res = [_laserPos, _laserDir, _divergence] call FUNC(shootCone);
diff --git a/addons/laser/stringtable.xml b/addons/laser/stringtable.xml
index f51b9cd127..4a478096d0 100644
--- a/addons/laser/stringtable.xml
+++ b/addons/laser/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/laser_selfdesignate/config.cpp b/addons/laser_selfdesignate/config.cpp
index 597500caf6..60595e2d0d 100644
--- a/addons/laser_selfdesignate/config.cpp
+++ b/addons/laser_selfdesignate/config.cpp
@@ -5,7 +5,9 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_laser"};
+ requiredAddons[] = {"ace_laser"};
+ author = ECSTRING(common,ACETeam);
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf b/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf
index e585a409ff..24f19506fe 100644
--- a/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf
+++ b/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf
@@ -32,7 +32,7 @@ FUNC(laserHudDesignatePFH) = {
};
if( (count _args) < 4) then {
- _args set[3, ACE_diagTime + FCS_UPDATE_DELAY];
+ _args set[3, diag_tickTime + FCS_UPDATE_DELAY];
};
_forceUpdateTime = _args select 3;
@@ -57,9 +57,9 @@ FUNC(laserHudDesignatePFH) = {
};
*/
- if(ACE_diagTime > _forceUpdateTime) then {
+ if(diag_tickTime > _forceUpdateTime) then {
["ace_fcs_forceUpdate", []] call ace_common_fnc_localEvent;
- _args set[3, ACE_diagTime + FCS_UPDATE_DELAY];
+ _args set[3, diag_tickTime + FCS_UPDATE_DELAY];
};
_this set[0, _args];
diff --git a/addons/laser_selfdesignate/stringtable.xml b/addons/laser_selfdesignate/stringtable.xml
index 17c562a2bb..cdd7439200 100644
--- a/addons/laser_selfdesignate/stringtable.xml
+++ b/addons/laser_selfdesignate/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp
index cbb3105696..63ac154471 100644
--- a/addons/laserpointer/config.cpp
+++ b/addons/laserpointer/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_acc_pointer_red","ACE_acc_pointer_green","ACE_acc_pointer_green_IR"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"commy2"};
- authorUrl = "https://github.com/commy2";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/laserpointer/stringtable.xml b/addons/laserpointer/stringtable.xml
index afd11addb1..1e4b150c3d 100644
--- a/addons/laserpointer/stringtable.xml
+++ b/addons/laserpointer/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/logistics_uavbattery/CfgSounds.hpp b/addons/logistics_uavbattery/CfgSounds.hpp
index 530c5b86a9..3cf83715ba 100644
--- a/addons/logistics_uavbattery/CfgSounds.hpp
+++ b/addons/logistics_uavbattery/CfgSounds.hpp
@@ -1,7 +1,7 @@
class CfgSounds {
class ACE_replaceUAVBattery {
name = "ACE_replaceUAVBattery";
- sound[]={QUOTE(PATHTOF(sounds\exchange_battery.ogg)),1,1};
+ sound[]={QPATHTOF(sounds\exchange_battery.ogg),1,1};
titles[]={};
};
};
diff --git a/addons/logistics_uavbattery/CfgVehicles.hpp b/addons/logistics_uavbattery/CfgVehicles.hpp
index a6f2db786f..2daa8c8011 100644
--- a/addons/logistics_uavbattery/CfgVehicles.hpp
+++ b/addons/logistics_uavbattery/CfgVehicles.hpp
@@ -20,7 +20,7 @@ class CfgVehicles {
statement = QUOTE([ARR_2(_player, _target)] call FUNC(refuelUAV));
showDisabled = 0;
priority = 1.245;
- icon = QUOTE(PATHTOF(ui\UAV_battery_ca.paa));
+ icon = QPATHTOF(ui\UAV_battery_ca.paa);
};
};
};
diff --git a/addons/logistics_uavbattery/CfgWeapons.hpp b/addons/logistics_uavbattery/CfgWeapons.hpp
index 46120f7c3d..8beedff39b 100644
--- a/addons/logistics_uavbattery/CfgWeapons.hpp
+++ b/addons/logistics_uavbattery/CfgWeapons.hpp
@@ -6,8 +6,8 @@ class CfgWeapons {
scope = 2;
displayName = CSTRING(Battery_Name);
descriptionShort = CSTRING(Battery_Description);
- model = QUOTE(PATHTOF(data\ace_battery.p3d));
- picture = QUOTE(PATHTOF(ui\UAV_battery_ca.paa));
+ model = QPATHTOF(data\ace_battery.p3d);
+ picture = QPATHTOF(ui\UAV_battery_ca.paa);
class ItemInfo: InventoryItem_Base_F {
mass = 20;
};
diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp
index c6123e590f..5197a899e3 100644
--- a/addons/logistics_uavbattery/config.cpp
+++ b/addons/logistics_uavbattery/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_UAVBattery"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"marc_book"};
- authorUrl = "";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"marc_book"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/logistics_uavbattery/stringtable.xml b/addons/logistics_uavbattery/stringtable.xml
index c38c3daae3..6ff6e4b52d 100644
--- a/addons/logistics_uavbattery/stringtable.xml
+++ b/addons/logistics_uavbattery/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/logistics_wirecutter/CfgSounds.hpp b/addons/logistics_wirecutter/CfgSounds.hpp
index 9958190ec1..598e72255b 100644
--- a/addons/logistics_wirecutter/CfgSounds.hpp
+++ b/addons/logistics_wirecutter/CfgSounds.hpp
@@ -1,12 +1,12 @@
class CfgSounds {
class ACE_Wirecutter_sound {
name = "ACE_wirecutter_sound";
- sound[] = {QUOTE(PATHTOF(sound\wire_cut.ogg)), "db-0", 1};
+ sound[] = {QPATHTOF(sound\wire_cut.ogg), "db-0", 1};
titles[] = {};
};
class ACE_Wirecutter_sound_long {
name = "ACE_wirecutter_sound_long";
- sound[] = {QUOTE(PATHTOF(sound\wire_cut_long.ogg)), "db-0", 1};
+ sound[] = {QPATHTOF(sound\wire_cut_long.ogg), "db-0", 1};
titles[] = {};
};
};
diff --git a/addons/logistics_wirecutter/CfgWeapons.hpp b/addons/logistics_wirecutter/CfgWeapons.hpp
index 2b365cc8e6..0674c44f1a 100644
--- a/addons/logistics_wirecutter/CfgWeapons.hpp
+++ b/addons/logistics_wirecutter/CfgWeapons.hpp
@@ -6,8 +6,8 @@ class CfgWeapons {
author = ECSTRING(common,ACETeam);
displayName = CSTRING(wirecutterName);
descriptionShort = CSTRING(wirecutterDescription);
- model = QUOTE(PATHTOF(data\ace_wirecutter.p3d));
- picture = QUOTE(PATHTOF(ui\item_wirecutter_ca.paa));
+ model = QPATHTOF(data\ace_wirecutter.p3d);
+ picture = QPATHTOF(ui\item_wirecutter_ca.paa);
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 65;
diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp
index d83cff4035..910dcdc9bb 100644
--- a/addons/logistics_wirecutter/config.cpp
+++ b/addons/logistics_wirecutter/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_wirecutter"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"gpgpgpgp", "PabstMirror"};
- authorUrl = "";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"gpgpgpgp", "PabstMirror"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf
index e28ff17db6..f926a53e01 100644
--- a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf
+++ b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf
@@ -56,7 +56,7 @@ TRACE_1("Starting wire-cut action PFEH",_interactionType);
if ([_x] call FUNC(isFence)) then {
_fencesHelped pushBack _x;
_helper = "ACE_LogicDummy" createVehicleLocal (getpos _x);
- _action = [QGVAR(helperCutFence), (localize LSTRING(CutFence)), QUOTE(PATHTOF(ui\wirecutter_ca.paa)), _fncStatement, _fncCondition, {}, _x, {[0,0,0]}, 5.5] call EFUNC(interact_menu,createAction);
+ _action = [QGVAR(helperCutFence), (localize LSTRING(CutFence)), QPATHTOF(ui\wirecutter_ca.paa), _fncStatement, _fncCondition, {}, _x, {[0,0,0]}, 5.5] call EFUNC(interact_menu,createAction);
[_helper, 0, [],_action] call EFUNC(interact_menu,addActionToObject);
_helper setPosASL ((getPosASL _x) vectorAdd [0,0,1.25]);
_addedHelpers pushBack _helper;
diff --git a/addons/logistics_wirecutter/stringtable.xml b/addons/logistics_wirecutter/stringtable.xml
index ef5d0522e3..1f9955f4be 100644
--- a/addons/logistics_wirecutter/stringtable.xml
+++ b/addons/logistics_wirecutter/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/magazinerepack/ACE_Settings.hpp b/addons/magazinerepack/ACE_Settings.hpp
index 0b7b2d4628..940af87d15 100644
--- a/addons/magazinerepack/ACE_Settings.hpp
+++ b/addons/magazinerepack/ACE_Settings.hpp
@@ -1,16 +1,16 @@
class ACE_Settings {
//Time to move a round from one magazine to another
- class GVAR(TimePerAmmo) {
+ class GVAR(timePerAmmo) {
value = 1.5;
typeName = "SCALAR";
};
//Time to swap between magazines when repacking
- class GVAR(TimePerMagazine) {
+ class GVAR(timePerMagazine) {
value = 2.0;
typeName = "SCALAR";
};
//Time to relink 2 belts together
- class GVAR(TimePerBeltLink) {
+ class GVAR(timePerBeltLink) {
value = 8.0;
typeName = "SCALAR";
};
diff --git a/addons/magazinerepack/CfgSounds.hpp b/addons/magazinerepack/CfgSounds.hpp
index 1390397e5e..a189c18b9c 100644
--- a/addons/magazinerepack/CfgSounds.hpp
+++ b/addons/magazinerepack/CfgSounds.hpp
@@ -1,12 +1,12 @@
class CfgSounds {
class GVAR(soundMagazineFinished) {
name = QGVAR(soundMagazineFinished);
- sound[]={QUOTE(PATHTOF(sounds\magrepack_finished.wav)),1,1};
+ sound[]={QPATHTOF(sounds\magrepack_finished.wav),1,1};
titles[]={};
};
class GVAR(soundRoundFinished) {
name = QGVAR(soundRoundFinished);
- sound[] = {QUOTE(PATHTOF(sounds\magrepack_single.wav)),1,1};
+ sound[] = {QPATHTOF(sounds\magrepack_single.wav),1,1};
titles[] = {};
};
};
diff --git a/addons/magazinerepack/CfgVehicles.hpp b/addons/magazinerepack/CfgVehicles.hpp
index 78af19bcfe..0bf4833bf0 100644
--- a/addons/magazinerepack/CfgVehicles.hpp
+++ b/addons/magazinerepack/CfgVehicles.hpp
@@ -8,7 +8,7 @@ class CfgVehicles {
exceptions[] = {"isNotInside", "isNotSitting"};
insertChildren = QUOTE(_this call FUNC(getMagazineChildren));
priority = -2;
- icon = QUOTE(PATHTOF(UI\repack_ca.paa));
+ icon = QPATHTOF(UI\repack_ca.paa);
};
};
};
diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp
index 47c0ac889c..c660b44ca7 100644
--- a/addons/magazinerepack/config.cpp
+++ b/addons/magazinerepack/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"commy2","esteldunedain"};
- authorUrl = "https://github.com/commy2/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2","esteldunedain"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf b/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf
index fc875c8d2b..88cd0ff275 100644
--- a/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf
+++ b/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf
@@ -1,6 +1,6 @@
/*
- * Author: PabstMirror,commy2, esteldunedain, Ruthberg
- * Gets magazine children for interaciton menu
+ * Author: PabstMirror, commy2, esteldunedain, Ruthberg
+ * Gets magazine children for interaciton menu.
*
* Argument:
* 0: Target
@@ -16,13 +16,11 @@
*/
#include "script_component.hpp"
-private ["_unitMagazines", "_unitMagCounts", "_index", "_actions", "_displayName", "_picture", "_action"];
-
params ["_target", "_player"];
// get all mags and ammo count
-_unitMagazines = [];
-_unitMagCounts = [];
+private _unitMagazines = [];
+private _unitMagCounts = [];
{
private "_xFullMagazineCount";
_x params ["_xClassname", "_xCount", "_xLoaded", "_xType"];
@@ -31,7 +29,7 @@ _unitMagCounts = [];
//for every partial magazine, that is either in inventory or can be moved there
if ((_xCount < _xFullMagazineCount) && {_xCount > 0} && {(!_xLoaded) || {_player canAdd _xClassname}}) then {
- _index = _unitMagazines find _xClassname;
+ private _index = _unitMagazines find _xClassname;
if (_index == -1) then {
_unitMagazines pushBack _xClassname;
_unitMagCounts pushBack [_xCount];
@@ -42,13 +40,13 @@ _unitMagCounts = [];
} forEach (magazinesAmmoFull _player);
//Create the action children for all appropriate magazines
-_actions = [];
+private _actions = [];
{
if ((count (_unitMagCounts select _forEachIndex)) >= 2) then {// Ignore invalid magazines types (need 2+ partial mags to do anything)
- _displayName = getText (configFile >> "CfgMagazines" >> _x >> "displayName");
- _picture = getText (configFile >> "CfgMagazines" >> _x >> "picture");
+ private _displayName = getText (configFile >> "CfgMagazines" >> _x >> "displayName");
+ private _picture = getText (configFile >> "CfgMagazines" >> _x >> "picture");
- _action = [_x, _displayName, _picture, {_this call FUNC(startRepackingMagazine)}, {true}, {}, _x] call EFUNC(interact_menu,createAction);
+ private _action = [_x, _displayName, _picture, {_this call FUNC(startRepackingMagazine)}, {true}, {}, _x] call EFUNC(interact_menu,createAction);
_actions pushBack [_action, [], _player];
};
} forEach _unitMagazines;
diff --git a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf
index f0fbcf49c1..36544b0084 100644
--- a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf
+++ b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf
@@ -19,39 +19,36 @@
*/
#include "script_component.hpp"
-private ["_structuredOutputText", "_picture", "_fullMags", "_partialMags", "_fullMagazineCount"];
-
params ["_args", "_elapsedTime", "_totalTime", "_errorCode"];
_args params ["_magazineClassname", "_lastAmmoCount"];
-_fullMagazineCount = getNumber (configFile >> "CfgMagazines" >> _magazineClassname >> "count");
+private _fullMagazineCount = getNumber (configFile >> "CfgMagazines" >> _magazineClassname >> "count");
-//Don't show anything if player can't interact:
+// Don't show anything if player can't interact
if (!([ACE_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {};
-_structuredOutputText = if (_errorCode == 0) then {
- format ["%1 ", (localize LSTRING(RepackComplete))];
+// Count mags
+private _fullMags = 0;
+private _partialMags = 0;
+{
+ _x params ["_classname", "_count"];
+
+ if (_classname == _magazineClassname && {_count > 0}) then {
+ if (_count == _fullMagazineCount) then {
+ _fullMags = _fullMags + 1;
+ } else {
+ _partialMags = _partialMags + 1;
+ };
+ };
+} forEach (magazinesAmmoFull ACE_player);
+
+private _repackedMagsText = format [localize LSTRING(RepackedMagazinesCount), _fullMags, _partialMags];
+
+private _structuredOutputText = if (_errorCode == 0) then {
+ format ["%1 %2", localize LSTRING(RepackComplete), _repackedMagsText];
} else {
- format ["%1 ", (localize LSTRING(RepackInterrupted))];
+ format ["%1 %2", localize LSTRING(RepackInterrupted), _repackedMagsText];
};
-_picture = getText (configFile >> "CfgMagazines" >> _magazineClassname >> "picture");
-_structuredOutputText = _structuredOutputText + format [" ", _picture];
-
-//EFUNC(common,displayTextStructured) doesn't have room for this, and I don't think it's nessacary, can fix in the future if wanted:
-
-// _fullMags = 0;
-// _partialMags = 0;
-// {
- // EXPLODE_2_PVT(_x,_xClassname,_xCount);
- // if ((_xClassname == _magazineClassname) && {_xCount > 0}) then {
- // if (_xCount == _fullMagazineCount) then {
- // _fullMags = _fullMags + 1;
- // } else {
- // _partialMags = _partialMags + 1;
- // };
- // };
-// } forEach (magazinesAmmoFull ACE_player);
-// _structuredOutputText = _structuredOutputText + format [("" + (localize LSTRING(RepackedMagazinesCount)) + " "), _fullMags, _partialMags];
-
-[parseText _structuredOutputText, 2] call EFUNC(common,displayTextStructured);
+private _picture = getText (configFile >> "CfgMagazines" >> _magazineClassname >> "picture");
+[_structuredOutputText, _picture, nil, nil, 2.5] call EFUNC(common,displayTextPicture);
diff --git a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf
index c1bf5ebdab..3808df4cdc 100644
--- a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf
+++ b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf
@@ -18,19 +18,16 @@
*/
#include "script_component.hpp"
-private ["_currentAmmoCount", "_addedMagazines", "_missingAmmo", "_index", "_updateMagazinesOnPlayerFnc"];
-
params ["_ars", "_elapsedTime", "_totalTime"];
_args params ["_magazineClassname", "_lastAmmoCount", "_simEvents"];
if !((_simEvents select 0) params ["_nextEventTime", "_nextEventIsBullet", "_nextEventMags"]) exitWith { ERROR("No Event"); false };
-
if (_nextEventTime > _elapsedTime) exitWith { true };//waiting on next event
//Verify we aren't missing any ammo
-_currentAmmoCount = [];
+private _currentAmmoCount = [];
{
_x params ["_xClassname", "_xCount"];
if (_xClassname == _magazineClassname) then {
@@ -39,11 +36,11 @@ _currentAmmoCount = [];
} forEach (magazinesAmmo ACE_player); //only inventory mags
//Go through mags we currently have and check off the ones we should have
-_addedMagazines = +_currentAmmoCount;
-_missingAmmo = false;
+private _addedMagazines = +_currentAmmoCount;
+private _missingAmmo = false;
{
if (_x > 0) then {
- _index = _addedMagazines find _x;
+ private _index = _addedMagazines find _x;
if (_index != -1) then {
_addedMagazines deleteAt _index;
} else {
@@ -54,7 +51,7 @@ _missingAmmo = false;
if (_missingAmmo) exitWith { false }; //something removed ammo that was being repacked (could be other players or scripts)
-_updateMagazinesOnPlayerFnc = {
+private _updateMagazinesOnPlayerFnc = {
ACE_player removeMagazines _magazineClassname; //remove inventory magazines
{
if (_x > 0) then {
diff --git a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf
index 230bdefb4f..09c04de26e 100644
--- a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf
+++ b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf
@@ -19,47 +19,26 @@
*/
#include "script_component.hpp"
-private ["_fnc_newMag", "_time", "_events", "_fnc_swapAmmo", "_ammoSwaped", "_lowIndex", "_highIndex", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded", "_swapProgress"];
-
params ["_fullMagazineCount", "_arrayOfAmmoCounts", "_isBelt"];
// Sort Ascending - Don't modify original
_arrayOfAmmoCounts = +_arrayOfAmmoCounts;
_arrayOfAmmoCounts sort true;
-_fnc_newMag = {
+private _fnc_newMag = {
_time = _time + GVAR(TimePerMagazine);
_events pushBack [_time, false, +_arrayOfAmmoCounts];
};
-_fnc_swapAmmo = if (_isBelt) then {
- {
- _time = _time + GVAR(TimePerBeltLink);
- _arrayOfAmmoCounts set [_lowIndex, ((_arrayOfAmmoCounts select _lowIndex) - _ammoSwaped)];
- _arrayOfAmmoCounts set [_highIndex, ((_arrayOfAmmoCounts select _highIndex) + _ammoSwaped)];
- _events pushBack [_time, true, +_arrayOfAmmoCounts];
- }
-} else {
- {
- for "_swapProgress" from 0 to (_ammoSwaped - 1) do {
- _time = _time + GVAR(TimePerAmmo);
- _arrayOfAmmoCounts set [_lowIndex, ((_arrayOfAmmoCounts select _lowIndex) - 1)];
- _arrayOfAmmoCounts set [_highIndex, ((_arrayOfAmmoCounts select _highIndex) + 1)];
- _events pushBack [_time, true, +_arrayOfAmmoCounts];
- };
- }
-};
-
-_lowIndex = 0;
-_highIndex = (count _arrayOfAmmoCounts) - 1;
-_ammoToTransfer = 0;
-_ammoAvailable = 0;
-
-_time = 0;
-_events = [];
+private _lowIndex = 0;
+private _highIndex = (count _arrayOfAmmoCounts) - 1;
+private _ammoToTransfer = 0;
+private _ammoAvailable = 0;
+private _time = 0;
+private _events = [];
while {_lowIndex < _highIndex} do {
- _ammoNeeded = _fullMagazineCount - (_arrayOfAmmoCounts select _highIndex);
+ private _ammoNeeded = _fullMagazineCount - (_arrayOfAmmoCounts select _highIndex);
_ammoAvailable = _arrayOfAmmoCounts select _lowIndex;
if (_ammoAvailable == 0) then {
@@ -70,8 +49,20 @@ while {_lowIndex < _highIndex} do {
_highIndex = _highIndex - 1;
call _fnc_newMag;
} else {
- _ammoSwaped = _ammoAvailable min _ammoNeeded;
- call _fnc_swapAmmo;
+ private _ammoSwaped = _ammoAvailable min _ammoNeeded;
+ if (_isBelt) then {
+ _time = _time + GVAR(TimePerBeltLink);
+ _arrayOfAmmoCounts set [_lowIndex, (_arrayOfAmmoCounts select _lowIndex) - _ammoSwaped];
+ _arrayOfAmmoCounts set [_highIndex, (_arrayOfAmmoCounts select _highIndex) + _ammoSwaped];
+ _events pushBack [_time, true, +_arrayOfAmmoCounts];
+ } else {
+ for "_swapProgress" from 0 to (_ammoSwaped - 1) do {
+ _time = _time + GVAR(TimePerAmmo);
+ _arrayOfAmmoCounts set [_lowIndex, (_arrayOfAmmoCounts select _lowIndex) - 1];
+ _arrayOfAmmoCounts set [_highIndex, (_arrayOfAmmoCounts select _highIndex) + 1];
+ _events pushBack [_time, true, +_arrayOfAmmoCounts];
+ };
+ };
};
};
};
diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf
index 859bbdfdfa..32ce65d188 100644
--- a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf
+++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf
@@ -13,39 +13,37 @@
* Nothing
*
* Example:
- * ["30Rnd_65x39_caseless_mag"] call ace_magazinerepack_fnc_startRepackingMagazine
+ * [player, player, "30Rnd_65x39_caseless_mag"] call ace_magazinerepack_fnc_startRepackingMagazine
*
* Public: No
*/
#include "script_component.hpp"
-private ["_magazineCfg", "_fullMagazineCount", "_isBelt", "_startingAmmoCounts", "_simEvents", "_totalTime"];
-
params ["_target", "_player", "_magazineClassname"];
if (isNil "_magazineClassname" || {_magazineClassname == ""}) exitWith {ERROR("Bad Mag Classname");};
-_magazineCfg = configFile >> "CfgMagazines" >> _magazineClassname;
+private _magazineCfg = configFile >> "CfgMagazines" >> _magazineClassname;
// Calculate actual ammo to transfer during repack
-_fullMagazineCount = getNumber (_magazineCfg >> "count");
+private _fullMagazineCount = getNumber (_magazineCfg >> "count");
//Is linked belt magazine:
-_isBelt = (isNumber (_magazineCfg >> "ACE_isBelt")) && {(getNumber (_magazineCfg >> "ACE_isBelt")) == 1};
+private _isBelt = isNumber (_magazineCfg >> "ACE_isBelt") && {(getNumber (_magazineCfg >> "ACE_isBelt")) == 1};
//Check canInteractWith:
-if (!([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {};
+if !([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {};
[_player] call EFUNC(common,goKneeling);
-_startingAmmoCounts = [];
+private _startingAmmoCounts = [];
{
- EXPLODE_4_PVT(_x,_xClassname,_xCount,_xLoaded,_xType);
- if ((_xClassname == _magazineClassname) && {(_xCount != _fullMagazineCount) && {_xCount > 0}}) then {
+ _x params ["_xClassname", "_xCount", "_xLoaded", "_xType"];
+ if (_xClassname == _magazineClassname && {_xCount != _fullMagazineCount && {_xCount > 0}}) then {
if (_xLoaded) then {
//Try to Remove from weapon and add to inventory, otherwise ignore
if (_player canAdd _magazineClassname) then {
switch (_xType) do {
- case (1): {_player removePrimaryWeaponItem _magazineClassname;};
- case (2): {_player removeHandgunItem _magazineClassname;};
- case (4): {_player removeSecondaryWeaponItem _magazineClassname;};
+ case (1): {_player removePrimaryWeaponItem _magazineClassname};
+ case (2): {_player removeHandgunItem _magazineClassname};
+ case (4): {_player removeSecondaryWeaponItem _magazineClassname};
default {ERROR("Loaded Location Invalid");};
};
_player addMagazine [_magazineClassname, _xCount];
@@ -57,10 +55,10 @@ _startingAmmoCounts = [];
};
} forEach (magazinesAmmoFull _player);
-if ((count _startingAmmoCounts) < 2) exitWith {ERROR("Not Enough Mags to Repack");};
+if (count _startingAmmoCounts < 2) exitWith {ERROR("Not Enough Mags to Repack");};
-_simEvents = [_fullMagazineCount, _startingAmmoCounts, _isBelt] call FUNC(simulateRepackEvents);
-_totalTime = (_simEvents select ((count _simEvents) - 1) select 0);
+private _simEvents = [_fullMagazineCount, _startingAmmoCounts, _isBelt] call FUNC(simulateRepackEvents);
+private _totalTime = _simEvents select (count _simEvents - 1) select 0;
[
_totalTime,
diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml
index 1fc873f0c3..b89b4b587d 100644
--- a/addons/magazinerepack/stringtable.xml
+++ b/addons/magazinerepack/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/main/CfgSettings.hpp b/addons/main/CfgSettings.hpp
new file mode 100644
index 0000000000..58cb824a6f
--- /dev/null
+++ b/addons/main/CfgSettings.hpp
@@ -0,0 +1,17 @@
+
+class CfgSettings {
+ class CBA {
+ class Versioning {
+ class ACE {
+ class dependencies {
+ //ACE will hard exit if this is missing
+ CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "(true)"};
+
+ //Warnings for missing RHS compat pbos
+ compat_rhs_afrf3[] = {"ace_compat_rhs_afrf3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhs_main')"};
+ compat_rhs_usf3[] = {"ace_compat_rhs_usf3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhsusf_main')"};
+ };
+ };
+ };
+ };
+};
diff --git a/addons/main/config.cpp b/addons/main/config.cpp
index 1326014f45..9969e52447 100644
--- a/addons/main/config.cpp
+++ b/addons/main/config.cpp
@@ -1,603 +1,591 @@
-#include "script_component.hpp"
-
-class CfgPatches {
- class ADDON {
- units[] = {};
- weapons[] = {};
- requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {
- // Vanilla
- "3den",
- "a3_air_f",
- "a3_air_f_beta",
- "a3_air_f_beta_heli_attack_01",
- "a3_air_f_beta_heli_attack_02",
- "a3_air_f_beta_heli_transport_01",
- "a3_air_f_beta_heli_transport_02",
- "a3_air_f_beta_parachute_01",
- "a3_air_f_beta_parachute_02",
- "a3_air_f_epb_heli_light_03",
- "a3_air_f_epc_plane_cas_01",
- "a3_air_f_epc_plane_cas_02",
- "a3_air_f_epc_plane_fighter_03",
- "a3_air_f_gamma_plane_fighter_03",
- "a3_air_f_gamma_uav_01",
- "a3_air_f_gamma_uav_02",
- "a3_air_f_heli",
- "a3_air_f_heli_heli_attack_01",
- "a3_air_f_heli_heli_attack_02",
- "a3_air_f_heli_heli_light_01",
- "a3_air_f_heli_heli_light_02",
- "a3_air_f_heli_heli_light_03",
- "a3_air_f_heli_heli_transport_01",
- "a3_air_f_heli_heli_transport_02",
- "a3_air_f_heli_heli_transport_03",
- "a3_air_f_heli_heli_transport_04",
- "a3_air_f_heli_light_01",
- "a3_air_f_heli_light_02",
- "a3_animals_f",
- "a3_animals_f_animconfig",
- "a3_animals_f_chicken",
- "a3_animals_f_dog",
- "a3_animals_f_fishes",
- "a3_animals_f_goat",
- "a3_animals_f_kestrel",
- "a3_animals_f_rabbit",
- "a3_animals_f_seagull",
- "a3_animals_f_sheep",
- "a3_animals_f_snakes",
- "a3_animals_f_turtle",
- "a3_anims_f",
- "a3_anims_f_config_sdr",
- "a3_anims_f_epa",
- "a3_anims_f_epc",
- "a3_anims_f_exp_a",
- "a3_anims_f_heli",
- "a3_anims_f_kart",
- "a3_anims_f_mark_deployment",
- "a3_armor_f",
- "a3_armor_f_amv",
- "a3_armor_f_apc_wheeled_03",
- "a3_armor_f_beta",
- "a3_armor_f_beta_apc_tracked_02",
- "a3_armor_f_epb_apc_tracked_03",
- "a3_armor_f_epb_mbt_03",
- "a3_armor_f_epc_mbt_01",
- "a3_armor_f_marid",
- "a3_armor_f_panther",
- "a3_armor_f_slammer",
- "a3_armor_f_t100k",
- "a3_baseconfig_f",
- "a3_boat_f",
- "a3_boat_f_beta_boat_armed_01",
- "a3_boat_f_beta_boat_transport_01",
- "a3_boat_f_boat_armed_01",
- "a3_boat_f_boat_transport_01",
- "a3_boat_f_civilian_boat",
- "a3_boat_f_epc_submarine_01_f",
- "a3_boat_f_gamma_boat_transport_01",
- "a3_boat_f_heli_boat_armed_01",
- "a3_boat_f_heli_sdv_01",
- "a3_boat_f_sdv_01",
- "a3_boat_f_trawler",
- "a3_cargoposes_f",
- "a3_cargoposes_f_heli",
- "a3_characters_f",
- "a3_characters_f_beta",
- "a3_characters_f_blufor",
- "a3_characters_f_bootcamp",
- "a3_characters_f_bootcamp_common",
- "a3_characters_f_civil",
- "a3_characters_f_common",
- "a3_characters_f_epa",
- "a3_characters_f_epb",
- "a3_characters_f_epb_heads",
- "a3_characters_f_epc",
- "a3_characters_f_gamma",
- "a3_characters_f_heads",
- "a3_characters_f_indep",
- "a3_characters_f_kart",
- "a3_characters_f_mark",
- "a3_characters_f_opfor",
- "a3_characters_f_proxies",
- "a3_data_f",
- "a3_data_f_bootcamp",
- "a3_data_f_curator",
- "a3_data_f_curator_characters",
- "a3_data_f_curator_eagle",
- "a3_data_f_curator_intel",
- "a3_data_f_curator_misc",
- "a3_data_f_curator_respawn",
- "a3_data_f_curator_virtual",
- "a3_data_f_exp_a",
- "a3_data_f_exp_a_virtual",
- "a3_data_f_exp_b",
- "a3_data_f_heli",
- "a3_data_f_hook",
- "a3_data_f_kart",
- "a3_data_f_kart_particleeffects",
- "a3_data_f_mark",
- "a3_data_f_particleeffects",
- "a3_dubbing_radio_f",
- "a3_editor_f",
- "a3_functions_f",
- "a3_functions_f_bootcamp",
- "a3_functions_f_curator",
- "a3_functions_f_epa",
- "a3_functions_f_epc",
- "a3_functions_f_exp_a",
- "a3_functions_f_heli",
- "a3_functions_f_mark",
- "a3_functions_f_mp_mark",
- "a3_language_f",
- "a3_language_f_beta",
- "a3_language_f_bootcamp",
- "a3_language_f_curator",
- "a3_language_f_epa",
- "a3_language_f_epb",
- "a3_language_f_epc",
- "a3_language_f_exp_a",
- "a3_language_f_gamma",
- "a3_language_f_heli",
- "a3_language_f_kart",
- "a3_language_f_mark",
- "a3_language_f_mp_mark",
- "a3_languagemissions_f",
- "a3_languagemissions_f_beta",
- "a3_languagemissions_f_gamma",
- "a3_languagemissions_f_kart",
- "a3_languagemissions_f_mp_mark",
- "a3_map_altis",
- "a3_map_altis_scenes",
- "a3_map_data",
- "a3_map_stratis",
- "a3_map_stratis_scenes",
- "a3_map_vr_scenes",
- "a3_misc_f",
- "a3_misc_f_helpers",
- "a3_missions_f",
- "a3_missions_f_beta",
- "a3_missions_f_bootcamp",
- "a3_missions_f_curator",
- "a3_missions_f_epa",
- "a3_missions_f_epb",
- "a3_missions_f_epc",
- "a3_missions_f_exp_a",
- "a3_missions_f_gamma",
- "a3_missions_f_heli",
- "a3_missions_f_kart",
- "a3_missions_f_mark",
- "a3_missions_f_mp_mark",
- "a3_modules_f",
- "a3_modules_f_beta",
- "a3_modules_f_beta_firingdrills",
- "a3_modules_f_bootcamp",
- "a3_modules_f_bootcamp_misc",
- "a3_modules_f_curator",
- "a3_modules_f_curator_animals",
- "a3_modules_f_curator_cas",
- "a3_modules_f_curator_chemlights",
- "a3_modules_f_curator_curator",
- "a3_modules_f_curator_effects",
- "a3_modules_f_curator_environment",
- "a3_modules_f_curator_flares",
- "a3_modules_f_curator_intel",
- "a3_modules_f_curator_lightning",
- "a3_modules_f_curator_mines",
- "a3_modules_f_curator_misc",
- "a3_modules_f_curator_multiplayer",
- "a3_modules_f_curator_objectives",
- "a3_modules_f_curator_ordnance",
- "a3_modules_f_curator_respawn",
- "a3_modules_f_curator_smokeshells",
- "a3_modules_f_dyno",
- "a3_modules_f_effects",
- "a3_modules_f_epb",
- "a3_modules_f_epb_misc",
- "a3_modules_f_events",
- "a3_modules_f_exp_a",
- "a3_modules_f_groupmodifiers",
- "a3_modules_f_hc",
- "a3_modules_f_heli",
- "a3_modules_f_heli_spawnai",
- "a3_modules_f_intel",
- "a3_modules_f_kart",
- "a3_modules_f_kart_timetrials",
- "a3_modules_f_livefeed",
- "a3_modules_f_mark",
- "a3_modules_f_mark_firingdrills",
- "a3_modules_f_mark_objectives",
- "a3_modules_f_marta",
- "a3_modules_f_misc",
- "a3_modules_f_mp_mark",
- "a3_modules_f_multiplayer",
- "a3_modules_f_objectmodifiers",
- "a3_modules_f_sites",
- "a3_modules_f_skirmish",
- "a3_modules_f_strategicmap",
- "a3_modules_f_supports",
- "a3_modules_f_uav",
- "a3_music_f",
- "a3_music_f_bootcamp",
- "a3_music_f_epa",
- "a3_music_f_epb",
- "a3_music_f_epc",
- "a3_music_f_heli",
- "a3_music_f_mark",
- "a3_plants_f_bush",
- "a3_props_f_exp_a",
- "a3_props_f_exp_a_military",
- "a3_props_f_exp_a_military_equipment",
- "a3_roads_f",
- "a3_rocks_f",
- "a3_signs_f",
- "a3_signs_f_ad",
- "a3_soft_f",
- "a3_soft_f_beta_quadbike",
- "a3_soft_f_bootcamp_offroad_01",
- "a3_soft_f_bootcamp_quadbike",
- "a3_soft_f_bootcamp_truck",
- "a3_soft_f_car",
- "a3_soft_f_crusher_ugv",
- "a3_soft_f_epc_truck_03",
- "a3_soft_f_gamma_hemtt",
- "a3_soft_f_gamma_offroad",
- "a3_soft_f_gamma_quadbike",
- "a3_soft_f_gamma_truckheavy",
- "a3_soft_f_heli_car",
- "a3_soft_f_heli_crusher_ugv",
- "a3_soft_f_heli_mrap_01",
- "a3_soft_f_heli_mrap_02",
- "a3_soft_f_heli_mrap_03",
- "a3_soft_f_heli_quadbike",
- "a3_soft_f_heli_suv",
- "a3_soft_f_heli_truck",
- "a3_soft_f_hemtt",
- "a3_soft_f_kart_kart_01",
- "a3_soft_f_mrap_01",
- "a3_soft_f_mrap_02",
- "a3_soft_f_mrap_03",
- "a3_soft_f_offroad_01",
- "a3_soft_f_quadbike",
- "a3_soft_f_suv",
- "a3_soft_f_truck",
- "a3_soft_f_truckheavy",
- "a3_sounds_f",
- "a3_sounds_f_bootcamp",
- "a3_sounds_f_epb",
- "a3_sounds_f_epc",
- "a3_sounds_f_exp_a",
- "a3_sounds_f_mark",
- "a3_static_f",
- "a3_static_f_beta_mortar_01",
- "a3_static_f_gamma",
- "a3_static_f_gamma_aa",
- "a3_static_f_gamma_at",
- "a3_static_f_gamma_mortar_01",
- "a3_static_f_mark_designator_01",
- "a3_static_f_mark_designator_02",
- "a3_static_f_mortar_01",
- "a3_structures_f",
- "a3_structures_f_bootcamp_civ_camping",
- "a3_structures_f_bootcamp_civ_sportsgrounds",
- "a3_structures_f_bootcamp_ind_cargo",
- "a3_structures_f_bootcamp_items_electronics",
- "a3_structures_f_bootcamp_items_food",
- "a3_structures_f_bootcamp_items_sport",
- "a3_structures_f_bootcamp_system",
- "a3_structures_f_bootcamp_training",
- "a3_structures_f_bootcamp_vr_blocks",
- "a3_structures_f_bootcamp_vr_coverobjects",
- "a3_structures_f_bootcamp_vr_helpers",
- "a3_structures_f_bridges",
- "a3_structures_f_civ",
- "a3_structures_f_civ_accessories",
- "a3_structures_f_civ_ancient",
- "a3_structures_f_civ_belltowers",
- "a3_structures_f_civ_calvaries",
- "a3_structures_f_civ_camping",
- "a3_structures_f_civ_chapels",
- "a3_structures_f_civ_constructions",
- "a3_structures_f_civ_dead",
- "a3_structures_f_civ_garbage",
- "a3_structures_f_civ_graffiti",
- "a3_structures_f_civ_infoboards",
- "a3_structures_f_civ_kiosks",
- "a3_structures_f_civ_lamps",
- "a3_structures_f_civ_market",
- "a3_structures_f_civ_offices",
- "a3_structures_f_civ_pavements",
- "a3_structures_f_civ_playground",
- "a3_structures_f_civ_sportsgrounds",
- "a3_structures_f_civ_statues",
- "a3_structures_f_civ_tourism",
- "a3_structures_f_dominants",
- "a3_structures_f_dominants_amphitheater",
- "a3_structures_f_dominants_castle",
- "a3_structures_f_dominants_church",
- "a3_structures_f_dominants_hospital",
- "a3_structures_f_dominants_lighthouse",
- "a3_structures_f_dominants_wip",
- "a3_structures_f_epa_civ_camping",
- "a3_structures_f_epa_civ_constructions",
- "a3_structures_f_epa_items_electronics",
- "a3_structures_f_epa_items_food",
- "a3_structures_f_epa_items_medical",
- "a3_structures_f_epa_items_tools",
- "a3_structures_f_epa_items_vessels",
- "a3_structures_f_epa_mil_scrapyard",
- "a3_structures_f_epa_walls",
- "a3_structures_f_epb_civ_accessories",
- "a3_structures_f_epb_civ_camping",
- "a3_structures_f_epb_civ_dead",
- "a3_structures_f_epb_civ_garbage",
- "a3_structures_f_epb_civ_graffiti",
- "a3_structures_f_epb_civ_playground",
- "a3_structures_f_epb_furniture",
- "a3_structures_f_epb_items_documents",
- "a3_structures_f_epb_items_luggage",
- "a3_structures_f_epb_items_military",
- "a3_structures_f_epb_items_vessels",
- "a3_structures_f_epb_naval_fishing",
- "a3_structures_f_epc_civ_accessories",
- "a3_structures_f_epc_civ_camping",
- "a3_structures_f_epc_civ_garbage",
- "a3_structures_f_epc_civ_infoboards",
- "a3_structures_f_epc_civ_kiosks",
- "a3_structures_f_epc_civ_playground",
- "a3_structures_f_epc_civ_tourism",
- "a3_structures_f_epc_dominants_ghosthotel",
- "a3_structures_f_epc_dominants_stadium",
- "a3_structures_f_epc_furniture",
- "a3_structures_f_epc_items_documents",
- "a3_structures_f_epc_items_electronics",
- "a3_structures_f_epc_walls",
- "a3_structures_f_exp_a",
- "a3_structures_f_exp_a_vr_blocks",
- "a3_structures_f_exp_a_vr_helpers",
- "a3_structures_f_furniture",
- "a3_structures_f_heli_civ_accessories",
- "a3_structures_f_heli_civ_constructions",
- "a3_structures_f_heli_civ_garbage",
- "a3_structures_f_heli_civ_market",
- "a3_structures_f_heli_furniture",
- "a3_structures_f_heli_ind_airport",
- "a3_structures_f_heli_ind_cargo",
- "a3_structures_f_heli_ind_machines",
- "a3_structures_f_heli_items_airport",
- "a3_structures_f_heli_items_electronics",
- "a3_structures_f_heli_items_food",
- "a3_structures_f_heli_items_luggage",
- "a3_structures_f_heli_items_sport",
- "a3_structures_f_heli_items_tools",
- "a3_structures_f_heli_vr_helpers",
- "a3_structures_f_households",
- "a3_structures_f_households_addons",
- "a3_structures_f_households_house_big01",
- "a3_structures_f_households_house_big02",
- "a3_structures_f_households_house_shop01",
- "a3_structures_f_households_house_shop02",
- "a3_structures_f_households_house_small01",
- "a3_structures_f_households_house_small02",
- "a3_structures_f_households_house_small03",
- "a3_structures_f_households_slum",
- "a3_structures_f_households_stone_big",
- "a3_structures_f_households_stone_shed",
- "a3_structures_f_households_stone_small",
- "a3_structures_f_households_wip",
- "a3_structures_f_ind",
- "a3_structures_f_ind_airport",
- "a3_structures_f_ind_cargo",
- "a3_structures_f_ind_carservice",
- "a3_structures_f_ind_concretemixingplant",
- "a3_structures_f_ind_crane",
- "a3_structures_f_ind_dieselpowerplant",
- "a3_structures_f_ind_factory",
- "a3_structures_f_ind_fuelstation",
- "a3_structures_f_ind_fuelstation_small",
- "a3_structures_f_ind_pipes",
- "a3_structures_f_ind_powerlines",
- "a3_structures_f_ind_reservoirtank",
- "a3_structures_f_ind_shed",
- "a3_structures_f_ind_solarpowerplant",
- "a3_structures_f_ind_tank",
- "a3_structures_f_ind_transmitter_tower",
- "a3_structures_f_ind_wavepowerplant",
- "a3_structures_f_ind_windmill",
- "a3_structures_f_ind_windpowerplant",
- "a3_structures_f_items",
- "a3_structures_f_items_cans",
- "a3_structures_f_items_documents",
- "a3_structures_f_items_electronics",
- "a3_structures_f_items_gadgets",
- "a3_structures_f_items_luggage",
- "a3_structures_f_items_medical",
- "a3_structures_f_items_military",
- "a3_structures_f_items_stationery",
- "a3_structures_f_items_tools",
- "a3_structures_f_items_valuables",
- "a3_structures_f_items_vessels",
- "a3_structures_f_kart_civ_sportsgrounds",
- "a3_structures_f_kart_mil_flags",
- "a3_structures_f_kart_signs_companies",
- "a3_structures_f_mark_items_military",
- "a3_structures_f_mark_items_sport",
- "a3_structures_f_mark_mil_flags",
- "a3_structures_f_mark_training",
- "a3_structures_f_mark_vr_helpers",
- "a3_structures_f_mark_vr_shapes",
- "a3_structures_f_mark_vr_targets",
- "a3_structures_f_mil",
- "a3_structures_f_mil_bagbunker",
- "a3_structures_f_mil_bagfence",
- "a3_structures_f_mil_barracks",
- "a3_structures_f_mil_bunker",
- "a3_structures_f_mil_cargo",
- "a3_structures_f_mil_flags",
- "a3_structures_f_mil_fortification",
- "a3_structures_f_mil_helipads",
- "a3_structures_f_mil_offices",
- "a3_structures_f_mil_radar",
- "a3_structures_f_mil_scrapyard",
- "a3_structures_f_mil_shelters",
- "a3_structures_f_mil_tenthangar",
- "a3_structures_f_naval",
- "a3_structures_f_naval_buoys",
- "a3_structures_f_naval_fishing",
- "a3_structures_f_naval_piers",
- "a3_structures_f_naval_rowboats",
- "a3_structures_f_research",
- "a3_structures_f_signs_companies",
- "a3_structures_f_system",
- "a3_structures_f_training",
- "a3_structures_f_training_invisibletarget",
- "a3_structures_f_walls",
- "a3_structures_f_wrecks",
- "a3_supplies_f_heli",
- "a3_supplies_f_heli_bladders",
- "a3_supplies_f_heli_cargonets",
- "a3_supplies_f_heli_fuel",
- "a3_supplies_f_heli_slingload",
- "a3_supplies_f_mark",
- "a3_uav_f_characters_f_gamma",
- "a3_uav_f_weapons_f_gamma_ammoboxes",
- "a3_ui_f",
- "a3_ui_f_bootcamp",
- "a3_ui_f_curator",
- "a3_ui_f_exp_a",
- "a3_ui_f_heli",
- "a3_ui_f_kart",
- "a3_ui_f_mark",
- "a3_ui_f_mp_mark",
- "a3_uifonts_f",
- "a3_weapons_f",
- "a3_weapons_f_aaf",
- "a3_weapons_f_acc",
- "a3_weapons_f_ammoboxes",
- "a3_weapons_f_beta",
- "a3_weapons_f_beta_acc",
- "a3_weapons_f_beta_ammoboxes",
- "a3_weapons_f_beta_ebr",
- "a3_weapons_f_beta_rifles_khaybar",
- "a3_weapons_f_beta_rifles_mx",
- "a3_weapons_f_beta_rifles_trg20",
- "a3_weapons_f_bootcamp",
- "a3_weapons_f_bootcamp_ammoboxes",
- "a3_weapons_f_bootcamp_longrangerifles_gm6",
- "a3_weapons_f_bootcamp_longrangerifles_m320",
- "a3_weapons_f_csat",
- "a3_weapons_f_dummyweapons",
- "a3_weapons_f_ebr",
- "a3_weapons_f_epa",
- "a3_weapons_f_epa_acc",
- "a3_weapons_f_epa_ammoboxes",
- "a3_weapons_f_epa_ebr",
- "a3_weapons_f_epa_longrangerifles_dmr_01",
- "a3_weapons_f_epa_longrangerifles_gm6",
- "a3_weapons_f_epa_rifles_mx",
- "a3_weapons_f_epb",
- "a3_weapons_f_epb_acc",
- "a3_weapons_f_epb_ammoboxes",
- "a3_weapons_f_epb_longrangerifles_gm3",
- "a3_weapons_f_epb_longrangerifles_m320",
- "a3_weapons_f_epb_rifles_mx_black",
- "a3_weapons_f_epc",
- "a3_weapons_f_explosives",
- "a3_weapons_f_fia",
- "a3_weapons_f_gamma",
- "a3_weapons_f_gamma_acc",
- "a3_weapons_f_gamma_ammoboxes",
- "a3_weapons_f_gamma_items",
- "a3_weapons_f_headgear",
- "a3_weapons_f_itemholders",
- "a3_weapons_f_items",
- "a3_weapons_f_kart",
- "a3_weapons_f_kart_pistols_pistol_signal_f",
- "a3_weapons_f_launchers_law",
- "a3_weapons_f_launchers_nlaw",
- "a3_weapons_f_launchers_titan",
- "a3_weapons_f_longrangerifles_gm6",
- "a3_weapons_f_longrangerifles_m320",
- "a3_weapons_f_machineguns_m200",
- "a3_weapons_f_machineguns_zafir",
- "a3_weapons_f_mark",
- "a3_weapons_f_mark_acc",
- "a3_weapons_f_mark_ebr",
- "a3_weapons_f_mark_longrangerifles_dmr_01",
- "a3_weapons_f_mark_longrangerifles_dmr_02",
- "a3_weapons_f_mark_longrangerifles_dmr_03",
- "a3_weapons_f_mark_longrangerifles_dmr_04",
- "a3_weapons_f_mark_longrangerifles_dmr_05",
- "a3_weapons_f_mark_longrangerifles_dmr_06",
- "a3_weapons_f_mark_longrangerifles_gm6",
- "a3_weapons_f_mark_longrangerifles_gm6_camo",
- "a3_weapons_f_mark_longrangerifles_m320",
- "a3_weapons_f_mark_longrangerifles_m320_camo",
- "a3_weapons_f_mark_machineguns_m200",
- "a3_weapons_f_mark_machineguns_mmg_01",
- "a3_weapons_f_mark_machineguns_mmg_02",
- "a3_weapons_f_mark_machineguns_zafir",
- "a3_weapons_f_mark_rifles_khaybar",
- "a3_weapons_f_mark_rifles_mk20",
- "a3_weapons_f_mark_rifles_mx",
- "a3_weapons_f_mark_rifles_sdar",
- "a3_weapons_f_mark_rifles_trg20",
- "a3_weapons_f_nato",
- "a3_weapons_f_pistols_acpc2",
- "a3_weapons_f_pistols_p07",
- "a3_weapons_f_pistols_pdw2000",
- "a3_weapons_f_pistols_pistol_heavy_01",
- "a3_weapons_f_pistols_pistol_heavy_02",
- "a3_weapons_f_pistols_rook40",
- "a3_weapons_f_rifles_khaybar",
- "a3_weapons_f_rifles_mk20",
- "a3_weapons_f_rifles_mx",
- "a3_weapons_f_rifles_sdar",
- "a3_weapons_f_rifles_smg_02",
- "a3_weapons_f_rifles_trg20",
- "a3_weapons_f_rifles_vector",
- "a3_weapons_f_uniforms",
- "a3_weapons_f_vests",
- "a3data",
- "map_vr",
- // CBA
- "extended_eventhandlers",
- "cba_ui",
- "cba_xeh",
- "cba_xeh_a3",
- "cba_jr"
- };
- author[] = {ECSTRING(common,ACETeam)};
- authorUrl = "http://ace3mod.com/";
- VERSION_CONFIG;
- };
-};
-
-class CfgMods {
- class PREFIX {
- dir = "@ace";
- name = "Advanced Combat Environment 3";
- picture = "A3\Ui_f\data\Logos\arma3_expansion_alpha_ca";
- hidePicture = "true";
- hideName = "true";
- actionName = "Website";
- action = "http://ace3mod.com/";
- description = "Issue Tracker: https://github.com/acemod/ACE3/issues";
- };
-};
-
-#include "CfgModuleCategories.hpp"
-#include "CfgVehicleClasses.hpp"
-
-class CfgSettings {
- class CBA {
- class Versioning {
- class ACE {
- class dependencies {
- CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "(true)"};
- };
- };
- };
- };
-};
-
+#include "script_component.hpp"
+
+class CfgPatches {
+ class ADDON {
+ units[] = {};
+ weapons[] = {};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {
+ // Vanilla
+ "3den",
+ "a3_air_f",
+ "a3_air_f_beta",
+ "a3_air_f_beta_heli_attack_01",
+ "a3_air_f_beta_heli_attack_02",
+ "a3_air_f_beta_heli_transport_01",
+ "a3_air_f_beta_heli_transport_02",
+ "a3_air_f_beta_parachute_01",
+ "a3_air_f_beta_parachute_02",
+ "a3_air_f_epb_heli_light_03",
+ "a3_air_f_epc_plane_cas_01",
+ "a3_air_f_epc_plane_cas_02",
+ "a3_air_f_epc_plane_fighter_03",
+ "a3_air_f_gamma_plane_fighter_03",
+ "a3_air_f_gamma_uav_01",
+ "a3_air_f_gamma_uav_02",
+ "a3_air_f_heli",
+ "a3_air_f_heli_heli_attack_01",
+ "a3_air_f_heli_heli_attack_02",
+ "a3_air_f_heli_heli_light_01",
+ "a3_air_f_heli_heli_light_02",
+ "a3_air_f_heli_heli_light_03",
+ "a3_air_f_heli_heli_transport_01",
+ "a3_air_f_heli_heli_transport_02",
+ "a3_air_f_heli_heli_transport_03",
+ "a3_air_f_heli_heli_transport_04",
+ "a3_air_f_heli_light_01",
+ "a3_air_f_heli_light_02",
+ "a3_animals_f",
+ "a3_animals_f_animconfig",
+ "a3_animals_f_chicken",
+ "a3_animals_f_dog",
+ "a3_animals_f_fishes",
+ "a3_animals_f_goat",
+ "a3_animals_f_kestrel",
+ "a3_animals_f_rabbit",
+ "a3_animals_f_seagull",
+ "a3_animals_f_sheep",
+ "a3_animals_f_snakes",
+ "a3_animals_f_turtle",
+ "a3_anims_f",
+ "a3_anims_f_config_sdr",
+ "a3_anims_f_epa",
+ "a3_anims_f_epc",
+ "a3_anims_f_exp_a",
+ "a3_anims_f_heli",
+ "a3_anims_f_kart",
+ "a3_anims_f_mark_deployment",
+ "a3_armor_f",
+ "a3_armor_f_amv",
+ "a3_armor_f_apc_wheeled_03",
+ "a3_armor_f_beta",
+ "a3_armor_f_beta_apc_tracked_02",
+ "a3_armor_f_epb_apc_tracked_03",
+ "a3_armor_f_epb_mbt_03",
+ "a3_armor_f_epc_mbt_01",
+ "a3_armor_f_marid",
+ "a3_armor_f_panther",
+ "a3_armor_f_slammer",
+ "a3_armor_f_t100k",
+ "a3_baseconfig_f",
+ "a3_boat_f",
+ "a3_boat_f_beta_boat_armed_01",
+ "a3_boat_f_beta_boat_transport_01",
+ "a3_boat_f_boat_armed_01",
+ "a3_boat_f_boat_transport_01",
+ "a3_boat_f_civilian_boat",
+ "a3_boat_f_epc_submarine_01_f",
+ "a3_boat_f_gamma_boat_transport_01",
+ "a3_boat_f_heli_boat_armed_01",
+ "a3_boat_f_heli_sdv_01",
+ "a3_boat_f_sdv_01",
+ "a3_boat_f_trawler",
+ "a3_cargoposes_f",
+ "a3_cargoposes_f_heli",
+ "a3_characters_f",
+ "a3_characters_f_beta",
+ "a3_characters_f_blufor",
+ "a3_characters_f_bootcamp",
+ "a3_characters_f_bootcamp_common",
+ "a3_characters_f_civil",
+ "a3_characters_f_common",
+ "a3_characters_f_epa",
+ "a3_characters_f_epb",
+ "a3_characters_f_epb_heads",
+ "a3_characters_f_epc",
+ "a3_characters_f_gamma",
+ "a3_characters_f_heads",
+ "a3_characters_f_indep",
+ "a3_characters_f_kart",
+ "a3_characters_f_mark",
+ "a3_characters_f_opfor",
+ "a3_characters_f_proxies",
+ "a3_data_f",
+ "a3_data_f_bootcamp",
+ "a3_data_f_curator",
+ "a3_data_f_curator_characters",
+ "a3_data_f_curator_eagle",
+ "a3_data_f_curator_intel",
+ "a3_data_f_curator_misc",
+ "a3_data_f_curator_respawn",
+ "a3_data_f_curator_virtual",
+ "a3_data_f_exp_a",
+ "a3_data_f_exp_a_virtual",
+ "a3_data_f_exp_b",
+ "a3_data_f_heli",
+ "a3_data_f_hook",
+ "a3_data_f_kart",
+ "a3_data_f_kart_particleeffects",
+ "a3_data_f_mark",
+ "a3_data_f_particleeffects",
+ "a3_dubbing_radio_f",
+ "a3_editor_f",
+ "a3_functions_f",
+ "a3_functions_f_bootcamp",
+ "a3_functions_f_curator",
+ "a3_functions_f_epa",
+ "a3_functions_f_epc",
+ "a3_functions_f_exp_a",
+ "a3_functions_f_heli",
+ "a3_functions_f_mark",
+ "a3_functions_f_mp_mark",
+ "a3_language_f",
+ "a3_language_f_beta",
+ "a3_language_f_bootcamp",
+ "a3_language_f_curator",
+ "a3_language_f_epa",
+ "a3_language_f_epb",
+ "a3_language_f_epc",
+ "a3_language_f_exp_a",
+ "a3_language_f_gamma",
+ "a3_language_f_heli",
+ "a3_language_f_kart",
+ "a3_language_f_mark",
+ "a3_language_f_mp_mark",
+ "a3_languagemissions_f",
+ "a3_languagemissions_f_beta",
+ "a3_languagemissions_f_gamma",
+ "a3_languagemissions_f_kart",
+ "a3_languagemissions_f_mp_mark",
+ "a3_map_altis",
+ "a3_map_altis_scenes",
+ "a3_map_data",
+ "a3_map_stratis",
+ "a3_map_stratis_scenes",
+ "a3_map_vr_scenes",
+ "a3_misc_f",
+ "a3_misc_f_helpers",
+ "a3_missions_f",
+ "a3_missions_f_beta",
+ "a3_missions_f_bootcamp",
+ "a3_missions_f_curator",
+ "a3_missions_f_epa",
+ "a3_missions_f_epb",
+ "a3_missions_f_epc",
+ "a3_missions_f_exp_a",
+ "a3_missions_f_gamma",
+ "a3_missions_f_heli",
+ "a3_missions_f_kart",
+ "a3_missions_f_mark",
+ "a3_missions_f_mp_mark",
+ "a3_modules_f",
+ "a3_modules_f_beta",
+ "a3_modules_f_beta_firingdrills",
+ "a3_modules_f_bootcamp",
+ "a3_modules_f_bootcamp_misc",
+ "a3_modules_f_curator",
+ "a3_modules_f_curator_animals",
+ "a3_modules_f_curator_cas",
+ "a3_modules_f_curator_chemlights",
+ "a3_modules_f_curator_curator",
+ "a3_modules_f_curator_effects",
+ "a3_modules_f_curator_environment",
+ "a3_modules_f_curator_flares",
+ "a3_modules_f_curator_intel",
+ "a3_modules_f_curator_lightning",
+ "a3_modules_f_curator_mines",
+ "a3_modules_f_curator_misc",
+ "a3_modules_f_curator_multiplayer",
+ "a3_modules_f_curator_objectives",
+ "a3_modules_f_curator_ordnance",
+ "a3_modules_f_curator_respawn",
+ "a3_modules_f_curator_smokeshells",
+ "a3_modules_f_dyno",
+ "a3_modules_f_effects",
+ "a3_modules_f_epb",
+ "a3_modules_f_epb_misc",
+ "a3_modules_f_events",
+ "a3_modules_f_exp_a",
+ "a3_modules_f_groupmodifiers",
+ "a3_modules_f_hc",
+ "a3_modules_f_heli",
+ "a3_modules_f_heli_spawnai",
+ "a3_modules_f_intel",
+ "a3_modules_f_kart",
+ "a3_modules_f_kart_timetrials",
+ "a3_modules_f_livefeed",
+ "a3_modules_f_mark",
+ "a3_modules_f_mark_firingdrills",
+ "a3_modules_f_mark_objectives",
+ "a3_modules_f_marta",
+ "a3_modules_f_misc",
+ "a3_modules_f_mp_mark",
+ "a3_modules_f_multiplayer",
+ "a3_modules_f_objectmodifiers",
+ "a3_modules_f_sites",
+ "a3_modules_f_skirmish",
+ "a3_modules_f_strategicmap",
+ "a3_modules_f_supports",
+ "a3_modules_f_uav",
+ "a3_music_f",
+ "a3_music_f_bootcamp",
+ "a3_music_f_epa",
+ "a3_music_f_epb",
+ "a3_music_f_epc",
+ "a3_music_f_heli",
+ "a3_music_f_mark",
+ "a3_plants_f_bush",
+ "a3_props_f_exp_a",
+ "a3_props_f_exp_a_military",
+ "a3_props_f_exp_a_military_equipment",
+ "a3_roads_f",
+ "a3_rocks_f",
+ "a3_signs_f",
+ "a3_signs_f_ad",
+ "a3_soft_f",
+ "a3_soft_f_beta_quadbike",
+ "a3_soft_f_bootcamp_offroad_01",
+ "a3_soft_f_bootcamp_quadbike",
+ "a3_soft_f_bootcamp_truck",
+ "a3_soft_f_car",
+ "a3_soft_f_crusher_ugv",
+ "a3_soft_f_epc_truck_03",
+ "a3_soft_f_gamma_hemtt",
+ "a3_soft_f_gamma_offroad",
+ "a3_soft_f_gamma_quadbike",
+ "a3_soft_f_gamma_truckheavy",
+ "a3_soft_f_heli_car",
+ "a3_soft_f_heli_crusher_ugv",
+ "a3_soft_f_heli_mrap_01",
+ "a3_soft_f_heli_mrap_02",
+ "a3_soft_f_heli_mrap_03",
+ "a3_soft_f_heli_quadbike",
+ "a3_soft_f_heli_suv",
+ "a3_soft_f_heli_truck",
+ "a3_soft_f_hemtt",
+ "a3_soft_f_kart_kart_01",
+ "a3_soft_f_mrap_01",
+ "a3_soft_f_mrap_02",
+ "a3_soft_f_mrap_03",
+ "a3_soft_f_offroad_01",
+ "a3_soft_f_quadbike",
+ "a3_soft_f_suv",
+ "a3_soft_f_truck",
+ "a3_soft_f_truckheavy",
+ "a3_sounds_f",
+ "a3_sounds_f_bootcamp",
+ "a3_sounds_f_epb",
+ "a3_sounds_f_epc",
+ "a3_sounds_f_exp_a",
+ "a3_sounds_f_mark",
+ "a3_static_f",
+ "a3_static_f_beta_mortar_01",
+ "a3_static_f_gamma",
+ "a3_static_f_gamma_aa",
+ "a3_static_f_gamma_at",
+ "a3_static_f_gamma_mortar_01",
+ "a3_static_f_mark_designator_01",
+ "a3_static_f_mark_designator_02",
+ "a3_static_f_mortar_01",
+ "a3_structures_f",
+ "a3_structures_f_bootcamp_civ_camping",
+ "a3_structures_f_bootcamp_civ_sportsgrounds",
+ "a3_structures_f_bootcamp_ind_cargo",
+ "a3_structures_f_bootcamp_items_electronics",
+ "a3_structures_f_bootcamp_items_food",
+ "a3_structures_f_bootcamp_items_sport",
+ "a3_structures_f_bootcamp_system",
+ "a3_structures_f_bootcamp_training",
+ "a3_structures_f_bootcamp_vr_blocks",
+ "a3_structures_f_bootcamp_vr_coverobjects",
+ "a3_structures_f_bootcamp_vr_helpers",
+ "a3_structures_f_bridges",
+ "a3_structures_f_civ",
+ "a3_structures_f_civ_accessories",
+ "a3_structures_f_civ_ancient",
+ "a3_structures_f_civ_belltowers",
+ "a3_structures_f_civ_calvaries",
+ "a3_structures_f_civ_camping",
+ "a3_structures_f_civ_chapels",
+ "a3_structures_f_civ_constructions",
+ "a3_structures_f_civ_dead",
+ "a3_structures_f_civ_garbage",
+ "a3_structures_f_civ_graffiti",
+ "a3_structures_f_civ_infoboards",
+ "a3_structures_f_civ_kiosks",
+ "a3_structures_f_civ_lamps",
+ "a3_structures_f_civ_market",
+ "a3_structures_f_civ_offices",
+ "a3_structures_f_civ_pavements",
+ "a3_structures_f_civ_playground",
+ "a3_structures_f_civ_sportsgrounds",
+ "a3_structures_f_civ_statues",
+ "a3_structures_f_civ_tourism",
+ "a3_structures_f_dominants",
+ "a3_structures_f_dominants_amphitheater",
+ "a3_structures_f_dominants_castle",
+ "a3_structures_f_dominants_church",
+ "a3_structures_f_dominants_hospital",
+ "a3_structures_f_dominants_lighthouse",
+ "a3_structures_f_dominants_wip",
+ "a3_structures_f_epa_civ_camping",
+ "a3_structures_f_epa_civ_constructions",
+ "a3_structures_f_epa_items_electronics",
+ "a3_structures_f_epa_items_food",
+ "a3_structures_f_epa_items_medical",
+ "a3_structures_f_epa_items_tools",
+ "a3_structures_f_epa_items_vessels",
+ "a3_structures_f_epa_mil_scrapyard",
+ "a3_structures_f_epa_walls",
+ "a3_structures_f_epb_civ_accessories",
+ "a3_structures_f_epb_civ_camping",
+ "a3_structures_f_epb_civ_dead",
+ "a3_structures_f_epb_civ_garbage",
+ "a3_structures_f_epb_civ_graffiti",
+ "a3_structures_f_epb_civ_playground",
+ "a3_structures_f_epb_furniture",
+ "a3_structures_f_epb_items_documents",
+ "a3_structures_f_epb_items_luggage",
+ "a3_structures_f_epb_items_military",
+ "a3_structures_f_epb_items_vessels",
+ "a3_structures_f_epb_naval_fishing",
+ "a3_structures_f_epc_civ_accessories",
+ "a3_structures_f_epc_civ_camping",
+ "a3_structures_f_epc_civ_garbage",
+ "a3_structures_f_epc_civ_infoboards",
+ "a3_structures_f_epc_civ_kiosks",
+ "a3_structures_f_epc_civ_playground",
+ "a3_structures_f_epc_civ_tourism",
+ "a3_structures_f_epc_dominants_ghosthotel",
+ "a3_structures_f_epc_dominants_stadium",
+ "a3_structures_f_epc_furniture",
+ "a3_structures_f_epc_items_documents",
+ "a3_structures_f_epc_items_electronics",
+ "a3_structures_f_epc_walls",
+ "a3_structures_f_exp_a",
+ "a3_structures_f_exp_a_vr_blocks",
+ "a3_structures_f_exp_a_vr_helpers",
+ "a3_structures_f_furniture",
+ "a3_structures_f_heli_civ_accessories",
+ "a3_structures_f_heli_civ_constructions",
+ "a3_structures_f_heli_civ_garbage",
+ "a3_structures_f_heli_civ_market",
+ "a3_structures_f_heli_furniture",
+ "a3_structures_f_heli_ind_airport",
+ "a3_structures_f_heli_ind_cargo",
+ "a3_structures_f_heli_ind_machines",
+ "a3_structures_f_heli_items_airport",
+ "a3_structures_f_heli_items_electronics",
+ "a3_structures_f_heli_items_food",
+ "a3_structures_f_heli_items_luggage",
+ "a3_structures_f_heli_items_sport",
+ "a3_structures_f_heli_items_tools",
+ "a3_structures_f_heli_vr_helpers",
+ "a3_structures_f_households",
+ "a3_structures_f_households_addons",
+ "a3_structures_f_households_house_big01",
+ "a3_structures_f_households_house_big02",
+ "a3_structures_f_households_house_shop01",
+ "a3_structures_f_households_house_shop02",
+ "a3_structures_f_households_house_small01",
+ "a3_structures_f_households_house_small02",
+ "a3_structures_f_households_house_small03",
+ "a3_structures_f_households_slum",
+ "a3_structures_f_households_stone_big",
+ "a3_structures_f_households_stone_shed",
+ "a3_structures_f_households_stone_small",
+ "a3_structures_f_households_wip",
+ "a3_structures_f_ind",
+ "a3_structures_f_ind_airport",
+ "a3_structures_f_ind_cargo",
+ "a3_structures_f_ind_carservice",
+ "a3_structures_f_ind_concretemixingplant",
+ "a3_structures_f_ind_crane",
+ "a3_structures_f_ind_dieselpowerplant",
+ "a3_structures_f_ind_factory",
+ "a3_structures_f_ind_fuelstation",
+ "a3_structures_f_ind_fuelstation_small",
+ "a3_structures_f_ind_pipes",
+ "a3_structures_f_ind_powerlines",
+ "a3_structures_f_ind_reservoirtank",
+ "a3_structures_f_ind_shed",
+ "a3_structures_f_ind_solarpowerplant",
+ "a3_structures_f_ind_tank",
+ "a3_structures_f_ind_transmitter_tower",
+ "a3_structures_f_ind_wavepowerplant",
+ "a3_structures_f_ind_windmill",
+ "a3_structures_f_ind_windpowerplant",
+ "a3_structures_f_items",
+ "a3_structures_f_items_cans",
+ "a3_structures_f_items_documents",
+ "a3_structures_f_items_electronics",
+ "a3_structures_f_items_gadgets",
+ "a3_structures_f_items_luggage",
+ "a3_structures_f_items_medical",
+ "a3_structures_f_items_military",
+ "a3_structures_f_items_stationery",
+ "a3_structures_f_items_tools",
+ "a3_structures_f_items_valuables",
+ "a3_structures_f_items_vessels",
+ "a3_structures_f_kart_civ_sportsgrounds",
+ "a3_structures_f_kart_mil_flags",
+ "a3_structures_f_kart_signs_companies",
+ "a3_structures_f_mark_items_military",
+ "a3_structures_f_mark_items_sport",
+ "a3_structures_f_mark_mil_flags",
+ "a3_structures_f_mark_training",
+ "a3_structures_f_mark_vr_helpers",
+ "a3_structures_f_mark_vr_shapes",
+ "a3_structures_f_mark_vr_targets",
+ "a3_structures_f_mil",
+ "a3_structures_f_mil_bagbunker",
+ "a3_structures_f_mil_bagfence",
+ "a3_structures_f_mil_barracks",
+ "a3_structures_f_mil_bunker",
+ "a3_structures_f_mil_cargo",
+ "a3_structures_f_mil_flags",
+ "a3_structures_f_mil_fortification",
+ "a3_structures_f_mil_helipads",
+ "a3_structures_f_mil_offices",
+ "a3_structures_f_mil_radar",
+ "a3_structures_f_mil_scrapyard",
+ "a3_structures_f_mil_shelters",
+ "a3_structures_f_mil_tenthangar",
+ "a3_structures_f_naval",
+ "a3_structures_f_naval_buoys",
+ "a3_structures_f_naval_fishing",
+ "a3_structures_f_naval_piers",
+ "a3_structures_f_naval_rowboats",
+ "a3_structures_f_research",
+ "a3_structures_f_signs_companies",
+ "a3_structures_f_system",
+ "a3_structures_f_training",
+ "a3_structures_f_training_invisibletarget",
+ "a3_structures_f_walls",
+ "a3_structures_f_wrecks",
+ "a3_supplies_f_heli",
+ "a3_supplies_f_heli_bladders",
+ "a3_supplies_f_heli_cargonets",
+ "a3_supplies_f_heli_fuel",
+ "a3_supplies_f_heli_slingload",
+ "a3_supplies_f_mark",
+ "a3_uav_f_characters_f_gamma",
+ "a3_uav_f_weapons_f_gamma_ammoboxes",
+ "a3_ui_f",
+ "a3_ui_f_bootcamp",
+ "a3_ui_f_curator",
+ "a3_ui_f_exp_a",
+ "a3_ui_f_heli",
+ "a3_ui_f_kart",
+ "a3_ui_f_mark",
+ "a3_ui_f_mp_mark",
+ "a3_uifonts_f",
+ "a3_weapons_f",
+ "a3_weapons_f_aaf",
+ "a3_weapons_f_acc",
+ "a3_weapons_f_ammoboxes",
+ "a3_weapons_f_beta",
+ "a3_weapons_f_beta_acc",
+ "a3_weapons_f_beta_ammoboxes",
+ "a3_weapons_f_beta_ebr",
+ "a3_weapons_f_beta_rifles_khaybar",
+ "a3_weapons_f_beta_rifles_mx",
+ "a3_weapons_f_beta_rifles_trg20",
+ "a3_weapons_f_bootcamp",
+ "a3_weapons_f_bootcamp_ammoboxes",
+ "a3_weapons_f_bootcamp_longrangerifles_gm6",
+ "a3_weapons_f_bootcamp_longrangerifles_m320",
+ "a3_weapons_f_csat",
+ "a3_weapons_f_dummyweapons",
+ "a3_weapons_f_ebr",
+ "a3_weapons_f_epa",
+ "a3_weapons_f_epa_acc",
+ "a3_weapons_f_epa_ammoboxes",
+ "a3_weapons_f_epa_ebr",
+ "a3_weapons_f_epa_longrangerifles_dmr_01",
+ "a3_weapons_f_epa_longrangerifles_gm6",
+ "a3_weapons_f_epa_rifles_mx",
+ "a3_weapons_f_epb",
+ "a3_weapons_f_epb_acc",
+ "a3_weapons_f_epb_ammoboxes",
+ "a3_weapons_f_epb_longrangerifles_gm3",
+ "a3_weapons_f_epb_longrangerifles_m320",
+ "a3_weapons_f_epb_rifles_mx_black",
+ "a3_weapons_f_epc",
+ "a3_weapons_f_explosives",
+ "a3_weapons_f_fia",
+ "a3_weapons_f_gamma",
+ "a3_weapons_f_gamma_acc",
+ "a3_weapons_f_gamma_ammoboxes",
+ "a3_weapons_f_gamma_items",
+ "a3_weapons_f_headgear",
+ "a3_weapons_f_itemholders",
+ "a3_weapons_f_items",
+ "a3_weapons_f_kart",
+ "a3_weapons_f_kart_pistols_pistol_signal_f",
+ "a3_weapons_f_launchers_law",
+ "a3_weapons_f_launchers_nlaw",
+ "a3_weapons_f_launchers_titan",
+ "a3_weapons_f_longrangerifles_gm6",
+ "a3_weapons_f_longrangerifles_m320",
+ "a3_weapons_f_machineguns_m200",
+ "a3_weapons_f_machineguns_zafir",
+ "a3_weapons_f_mark",
+ "a3_weapons_f_mark_acc",
+ "a3_weapons_f_mark_ebr",
+ "a3_weapons_f_mark_longrangerifles_dmr_01",
+ "a3_weapons_f_mark_longrangerifles_dmr_02",
+ "a3_weapons_f_mark_longrangerifles_dmr_03",
+ "a3_weapons_f_mark_longrangerifles_dmr_04",
+ "a3_weapons_f_mark_longrangerifles_dmr_05",
+ "a3_weapons_f_mark_longrangerifles_dmr_06",
+ "a3_weapons_f_mark_longrangerifles_gm6",
+ "a3_weapons_f_mark_longrangerifles_gm6_camo",
+ "a3_weapons_f_mark_longrangerifles_m320",
+ "a3_weapons_f_mark_longrangerifles_m320_camo",
+ "a3_weapons_f_mark_machineguns_m200",
+ "a3_weapons_f_mark_machineguns_mmg_01",
+ "a3_weapons_f_mark_machineguns_mmg_02",
+ "a3_weapons_f_mark_machineguns_zafir",
+ "a3_weapons_f_mark_rifles_khaybar",
+ "a3_weapons_f_mark_rifles_mk20",
+ "a3_weapons_f_mark_rifles_mx",
+ "a3_weapons_f_mark_rifles_sdar",
+ "a3_weapons_f_mark_rifles_trg20",
+ "a3_weapons_f_nato",
+ "a3_weapons_f_pistols_acpc2",
+ "a3_weapons_f_pistols_p07",
+ "a3_weapons_f_pistols_pdw2000",
+ "a3_weapons_f_pistols_pistol_heavy_01",
+ "a3_weapons_f_pistols_pistol_heavy_02",
+ "a3_weapons_f_pistols_rook40",
+ "a3_weapons_f_rifles_khaybar",
+ "a3_weapons_f_rifles_mk20",
+ "a3_weapons_f_rifles_mx",
+ "a3_weapons_f_rifles_sdar",
+ "a3_weapons_f_rifles_smg_02",
+ "a3_weapons_f_rifles_trg20",
+ "a3_weapons_f_rifles_vector",
+ "a3_weapons_f_uniforms",
+ "a3_weapons_f_vests",
+ "a3data",
+ "map_vr",
+ // CBA
+ "extended_eventhandlers",
+ "cba_ui",
+ "cba_xeh",
+ "cba_xeh_a3",
+ "cba_jr"
+ };
+ author = ECSTRING(common,ACETeam);
+ url = CSTRING(URL);
+ VERSION_CONFIG;
+ };
+};
+
+class CfgMods {
+ class PREFIX {
+ dir = "@ace";
+ name = "Advanced Combat Environment 3";
+ picture = "A3\Ui_f\data\Logos\arma3_expansion_alpha_ca";
+ hidePicture = "true";
+ hideName = "true";
+ actionName = "Website";
+ action = CSTRING(URL);
+ description = "Issue Tracker: https://github.com/acemod/ACE3/issues";
+ };
+};
+
+#include "CfgSettings.hpp"
+#include "CfgModuleCategories.hpp"
+#include "CfgVehicleClasses.hpp"
diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp
index a64c8e014d..503cee0619 100644
--- a/addons/main/script_macros.hpp
+++ b/addons/main/script_macros.hpp
@@ -12,8 +12,6 @@
#define QFUNC(var1) QUOTE(DFUNC(var1))
#define QEFUNC(var1,var2) QUOTE(DEFUNC(var1,var2))
-#define PATHTOEF(var1,var2) PATHTOF_SYS(PREFIX,var1,var2)
-
#define GETVAR_SYS(var1,var2) getVariable [ARR_2(QUOTE(var1),var2)]
#define SETVAR_SYS(var1,var2) setVariable [ARR_2(QUOTE(var1),var2)]
#define SETPVAR_SYS(var1,var2) setVariable [ARR_3(QUOTE(var1),var2,true)]
@@ -82,12 +80,12 @@
#define TYPE_BACKPACK 901
#ifdef DISABLE_COMPILE_CACHE
- #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf))
+ #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QPATHTOF(functions\DOUBLES(fnc,fncName).sqf)
#else
- #define PREP(fncName) [QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf)), QFUNC(fncName)] call CBA_fnc_compileFunction
+ #define PREP(fncName) [QPATHTOF(functions\DOUBLES(fnc,fncName).sqf), QFUNC(fncName)] call CBA_fnc_compileFunction
#endif
-#define PREP_MODULE(folder) [] call compile preprocessFileLineNumbers QUOTE(PATHTOF(folder\__PREP__.sqf))
+#define PREP_MODULE(folder) [] call compile preprocessFileLineNumbers QPATHTOF(folder\__PREP__.sqf)
#define HASH_CREATE ([] call EFUNC(common,hashCreate))
#define HASH_SET(hash, key, val) ([hash, key, val, __FILE__, __LINE__] call EFUNC(common,hashSet))
@@ -101,9 +99,6 @@
#define HASHLIST_SET(hashList, index, value) ([hashList, index, value, __FILE__, __LINE__] call EFUNC(common,hashListSet))
#define HASHLIST_PUSH(hashList, value) ([hashList, value, __FILE__, __LINE__] call EFUNC(common,hashListPush))
-// Time functions for accuracy per frame
-#define ACE_tickTime (ACE_time + (diag_tickTime - ACE_diagTime))
-
#define ACE_isHC (!hasInterface && !isDedicated)
#define IDC_STAMINA_BAR 193
diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp
index dd2cef0204..cda38b0458 100644
--- a/addons/main/script_mod.hpp
+++ b/addons/main/script_mod.hpp
@@ -1,16 +1,16 @@
-// COMPONENT should be defined in the script_component.hpp and included BEFORE this hpp
-
-#define MAINPREFIX z
-#define PREFIX ace
-
-#define MAJOR 3
-#define MINOR 5
-#define PATCHLVL 0
-#define BUILD 0
-
-#define VERSION MAJOR.MINOR.PATCHLVL.BUILD
-#define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD
-
-// MINIMAL required version for the Mod. Components can specify others..
-#define REQUIRED_VERSION 1.56
-#define REQUIRED_CBA_VERSION {2,3,1}
+// COMPONENT should be defined in the script_component.hpp and included BEFORE this hpp
+
+#define MAINPREFIX z
+#define PREFIX ace
+
+#define MAJOR 3
+#define MINOR 5
+#define PATCHLVL 1
+#define BUILD 0
+
+#define VERSION MAJOR.MINOR.PATCHLVL.BUILD
+#define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD
+
+// MINIMAL required version for the Mod. Components can specify others..
+#define REQUIRED_VERSION 1.56
+#define REQUIRED_CBA_VERSION {2,4,0}
diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml
index 985bfb4836..4648225f9f 100644
--- a/addons/main/stringtable.xml
+++ b/addons/main/stringtable.xml
@@ -12,5 +12,16 @@
Logistica ACE
ACE Logistique
+
+ http://ace3mod.com/
+ http://ace3mod.com/
+ http://ace3mod.com/
+ http://ace3mod.com/
+ http://ace3mod.com/
+ http://ace3mod.com/
+ http://ace3mod.com/
+ http://ace3mod.com/
+ http://ace3mod.com/
+
-
\ No newline at end of file
+
diff --git a/addons/map/ACE_Settings.hpp b/addons/map/ACE_Settings.hpp
index 6ff2e1e867..b04c7b39b3 100644
--- a/addons/map/ACE_Settings.hpp
+++ b/addons/map/ACE_Settings.hpp
@@ -62,7 +62,7 @@ class ACE_Settings {
displayName = CSTRING(MapShowCursorCoordinates_DisplayName);
description = CSTRING(MapShowCursorCoordinates_Description);
};
- class GVAR(DefaultChannel) {
+ class GVAR(defaultChannel) {
category = CSTRING(Module_DisplayName);
value = -1;
typeName = "SCALAR";
diff --git a/addons/map/CfgAmmo.hpp b/addons/map/CfgAmmo.hpp
index 9e98d0efea..82ff6841cb 100644
--- a/addons/map/CfgAmmo.hpp
+++ b/addons/map/CfgAmmo.hpp
@@ -1,48 +1,54 @@
class CfgAmmo {
-
- class FlareCore;
- class FlareBase: FlareCore {};
- class F_20mm_White: FlareBase {};
+ class Chemlight_base;
- class ACE_FlashlightProxy_White: F_20mm_White {
+ class ACE_FlashlightProxy_White: Chemlight_base {
model = "\A3\Weapons_f\empty";
- effectFlare = "FlareShell";
+ effectsSmoke = "ACE_FlashlightEffect_White";
+ explosionTime = 0.01;
+ timeToLive = 1e10;
- triggerTime = 0;
- intensity = 0.5;
- flareSize = 1;
- timeToLive = 10e10;
-
- lightColor[] = {1,1,1,1};
-
- grenadeBurningSound[] = {};
- grenadeFireSound[] = {};
- soundTrigger[] = {};
- SmokeShellSoundHit1[] = {};
- SmokeShellSoundHit2[] = {};
- SmokeShellSoundHit3[] = {};
- SmokeShellSoundLoop1[] = {};
- SmokeShellSoundLoop2[] = {};
+ soundImpactHard1[] = {"",1,1};
+ soundImpactHard2[] = {"",1,1};
+ soundImpactHard3[] = {"",1,1};
+ soundImpactHard4[] = {"",1,1};
+ soundImpactHard5[] = {"",1,1};
+ soundImpactHard6[] = {"",1,1};
+ soundImpactHard7[] = {"",1,1};
+ soundImpactIron1[] = {"",1,1};
+ soundImpactIron2[] = {"",1,1};
+ soundImpactIron3[] = {"",1,1};
+ soundImpactIron4[] = {"",1,1};
+ soundImpactIron5[] = {"",1,1};
+ soundImpactSoft1[] = {"",1,1};
+ soundImpactSoft2[] = {"",1,1};
+ soundImpactSoft3[] = {"",1,1};
+ soundImpactSoft4[] = {"",1,1};
+ soundImpactSoft5[] = {"",1,1};
+ soundImpactSoft6[] = {"",1,1};
+ soundImpactSoft7[] = {"",1,1};
+ soundImpactWater1[] = {"",1,1};
+ soundImpactWater2[] = {"",1,1};
+ soundImpactWater3[] = {"",1,1};
+ soundImpactWoodExt1[] = {"",1,1};
+ soundImpactWoodExt2[] = {"",1,1};
+ soundImpactWoodExt3[] = {"",1,1};
+ soundImpactWoodExt4[] = {"",1,1};
};
class ACE_FlashlightProxy_Red: ACE_FlashlightProxy_White {
- intensity = 1;
- lightColor[] = {1,0,0,1};
- };
-
- class ACE_FlashlightProxy_Green: ACE_FlashlightProxy_White {
- intensity = 1;
- lightColor[] = {0,1,0,1};
+ effectsSmoke = "ACE_FlashlightEffect_Red";
};
class ACE_FlashlightProxy_Blue: ACE_FlashlightProxy_White {
- intensity = 1.5;
- lightColor[] = {0.25,0.25,1,1};
+ effectsSmoke = "ACE_FlashlightEffect_Blue";
+ };
+
+ class ACE_FlashlightProxy_Green: ACE_FlashlightProxy_White {
+ effectsSmoke = "ACE_FlashlightEffect_Green";
};
class ACE_FlashlightProxy_Yellow: ACE_FlashlightProxy_White {
- intensity = 1;
- lightColor[] = {1,1,0.5,1};
+ effectsSmoke = "ACE_FlashlightEffect_Yellow";
};
};
\ No newline at end of file
diff --git a/addons/map/CfgLights.hpp b/addons/map/CfgLights.hpp
new file mode 100644
index 0000000000..bd69f9acbf
--- /dev/null
+++ b/addons/map/CfgLights.hpp
@@ -0,0 +1,35 @@
+class CfgLights {
+
+ class Chemlight_Blue;
+
+ class ACE_FlashlightLight_White: Chemlight_Blue {
+ brightness = 100;
+ color[] = {1,1,1,1};
+ diffuse[] = {1,1,1};
+ intensity = 100;
+ position[] = {0,0,0};
+
+ class Attenuation {
+ constant = 0;
+ linear = 0;
+ quadratic = 10000;
+ start = 0.075;
+ };
+ };
+
+ class ACE_FlashlightLight_Red: ACE_FlashlightLight_White {
+ diffuse[] = {1,0,0};
+ };
+
+ class ACE_FlashlightLight_Blue: ACE_FlashlightLight_White {
+ diffuse[] = {0.25,0.25,1};
+ };
+
+ class ACE_FlashlightLight_Green: ACE_FlashlightLight_White {
+ diffuse[] = {0,1,0};
+ };
+
+ class ACE_FlashlightLight_Yellow: ACE_FlashlightLight_White {
+ diffuse[] = {1,1,0.4};
+ };
+};
\ No newline at end of file
diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp
index df52756eee..16eba79cb2 100644
--- a/addons/map/CfgVehicles.hpp
+++ b/addons/map/CfgVehicles.hpp
@@ -24,7 +24,7 @@ class CfgVehicles {
scope = 2;
isGlobal = 1;
isSingular = 1;
- icon = PATHTOF(UI\Icon_Module_Map_ca.paa);
+ icon = QPATHTOF(UI\Icon_Module_Map_ca.paa);
class Arguments {
class MapIllumination {
displayName = CSTRING(MapIllumination_DisplayName);
@@ -84,7 +84,7 @@ class CfgVehicles {
scope = 2;
isGlobal = 0;
isSingular = 1;
- icon = PATHTOF(UI\Icon_Module_BFTracking_ca.paa);
+ icon = QPATHTOF(UI\Icon_Module_BFTracking_ca.paa);
class Arguments {
class Enabled {
displayName = CSTRING(BFT_Enabled_DisplayName);
diff --git a/addons/map/Effects.hpp b/addons/map/Effects.hpp
new file mode 100644
index 0000000000..1dc9b4c993
--- /dev/null
+++ b/addons/map/Effects.hpp
@@ -0,0 +1,36 @@
+// "Smoke" effect classes for global flashlight glow
+
+class ACE_FlashlightEffect_White {
+ class Light1 {
+ simulation = "light";
+ type = "ACE_FlashlightLight_White";
+ };
+};
+
+class ACE_FlashlightEffect_Red {
+ class Light1 {
+ simulation = "light";
+ type = "ACE_FlashlightLight_Red";
+ };
+};
+
+class ACE_FlashlightEffect_Blue {
+ class Light1 {
+ simulation = "light";
+ type = "ACE_FlashlightLight_Blue";
+ };
+};
+
+class ACE_FlashlightEffect_Green {
+ class Light1 {
+ simulation = "light";
+ type = "ACE_FlashlightLight_Green";
+ };
+};
+
+class ACE_FlashlightEffect_Yellow {
+ class Light1 {
+ simulation = "light";
+ type = "ACE_FlashlightLight_Yellow";
+ };
+};
\ No newline at end of file
diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf
index 00e9e737cf..7ee567cabf 100644
--- a/addons/map/XEH_postInitClient.sqf
+++ b/addons/map/XEH_postInitClient.sqf
@@ -9,10 +9,11 @@ if (isServer) then {
{
if (_x isKindOf "ACE_FlashlightProxy_White") then {
// ACE_LOGINFO_2("Deleting leftover light [%1:%2] from DC player [%3]", _x, typeOf _x, _disconnectedPlayer);
+ detach _x;
deleteVehicle _x;
};
} forEach attachedObjects _disconnectedPlayer;
-
+
nil
}];
};
@@ -29,7 +30,7 @@ call FUNC(determineZoom);
if (isNull findDisplay 12) exitWith {};
GVAR(lastStillPosition) = ((findDisplay 12) displayCtrl 51) ctrlMapScreenToWorld [0.5, 0.5];
- GVAR(lastStillTime) = ACE_time;
+ GVAR(lastStillTime) = CBA_missionTime;
GVAR(isShaking) = false;
//map sizes are multiples of 1280
diff --git a/addons/map/config.cpp b/addons/map/config.cpp
index 6d6b4030ec..78bf2340b7 100644
--- a/addons/map/config.cpp
+++ b/addons/map/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"KoffeinFlummi","Rocko","esteldunedain"};
- authorUrl = "https://github.com/KoffeinFlummi/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"KoffeinFlummi","Rocko","esteldunedain"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
@@ -29,6 +30,8 @@ class RscEdit;
#include "CfgVehicles.hpp"
#include "CfgAmmo.hpp"
#include "CfgSounds.hpp"
+#include "CfgLights.hpp"
+#include "Effects.hpp"
class RscMapControl {
maxSatelliteAlpha = 0.5;
@@ -160,4 +163,4 @@ class RscDisplayServerGetReady: RscDisplayGetReady {
#include "MapControls.hpp"
};
};
-};
+};
\ No newline at end of file
diff --git a/addons/map/functions/fnc_compileFlashlightMenu.sqf b/addons/map/functions/fnc_compileFlashlightMenu.sqf
index bc6746f46e..836b483a20 100644
--- a/addons/map/functions/fnc_compileFlashlightMenu.sqf
+++ b/addons/map/functions/fnc_compileFlashlightMenu.sqf
@@ -30,7 +30,7 @@ _flashlights = [_player] call FUNC(getUnitFlashlights);
_cfg = (configFile >> "CfgWeapons" >> _x);
_displayName = getText (_cfg >> "displayName");
_icon = getText (_cfg >> "picture");
-
+
_statement = if (GVAR(flashlightInUse) == _x) then {
_displayName = format [localize LSTRING(turnLightOff), _displayName];
{[""] call FUNC(switchFlashlight)}
diff --git a/addons/map/functions/fnc_flashlightGlow.sqf b/addons/map/functions/fnc_flashlightGlow.sqf
index 011489f321..799b99e3d2 100644
--- a/addons/map/functions/fnc_flashlightGlow.sqf
+++ b/addons/map/functions/fnc_flashlightGlow.sqf
@@ -20,7 +20,10 @@ private ["_light", "_color", "_class"];
params ["_flashlight"];
_light = GVAR(glow);
-if (!isNull _light) then {deleteVehicle _light};
+if (!isNull _light) then {
+ detach _light;
+ deleteVehicle _light;
+};
if (_flashlight != "") then {
_color = getText (configFile >> "CfgWeapons" >> _flashlight >> "ItemInfo" >> "FlashLight" >> "ACE_Flashlight_Colour");
@@ -28,9 +31,9 @@ if (_flashlight != "") then {
_class = format["ACE_FlashlightProxy_%1", _color];
_light = _class createVehicle [0,0,0];
- _light attachTo [ACE_player, [0,0.5,-0.1], "head"];
+ _light attachTo [ACE_player, [0,0.1,-0.05], "neck"];
} else {
_light = objNull;
};
-GVAR(glow) = _light;
+GVAR(glow) = _light;
\ No newline at end of file
diff --git a/addons/map/functions/fnc_updateMapEffects.sqf b/addons/map/functions/fnc_updateMapEffects.sqf
index 0e36a6fdd6..b89a75aa32 100644
--- a/addons/map/functions/fnc_updateMapEffects.sqf
+++ b/addons/map/functions/fnc_updateMapEffects.sqf
@@ -44,8 +44,8 @@ if (GVAR(mapShake)) then {
_amplitude = (_speed - 0.1) / 5 * (1000 * _mapScale);
_time = 0.1;
- _shakePos = [(GVAR(lastStillPosition) select 0) + sin((ACE_time + _time - GVAR(lastStillTime))*100) * _amplitude * 0.25,
- (GVAR(lastStillPosition) select 1) + sin((ACE_time + _time - GVAR(lastStillTime))*260) * _amplitude];
+ _shakePos = [(GVAR(lastStillPosition) select 0) + sin((CBA_missionTime + _time - GVAR(lastStillTime))*100) * _amplitude * 0.25,
+ (GVAR(lastStillPosition) select 1) + sin((CBA_missionTime + _time - GVAR(lastStillTime))*260) * _amplitude];
_mapCtrl ctrlMapAnimAdd [_time, _mapScale, _shakePos];
ctrlMapAnimCommit _mapCtrl;
@@ -62,7 +62,7 @@ if (GVAR(mapShake)) then {
} else {
// The map is still, store state
GVAR(lastStillPosition) = _mapCentre;
- GVAR(lastStillTime) = ACE_time;
+ GVAR(lastStillTime) = CBA_missionTime;
};
};
};
diff --git a/addons/map_gestures/ACE_Settings.hpp b/addons/map_gestures/ACE_Settings.hpp
index 0038027e3b..3730c08c58 100644
--- a/addons/map_gestures/ACE_Settings.hpp
+++ b/addons/map_gestures/ACE_Settings.hpp
@@ -44,16 +44,16 @@ class ACE_Settings {
typeName = "COLOR";
value[] = {1, 0.88, 0, 0.7};
};
- class GVAR(GroupColorConfigurations) {
- displayName = CSTRING(GroupColorConfigurations_displayName);
- description = CSTRING(GroupColorConfigurations_description);
+ class GVAR(groupColorConfigurations) {
+ displayName = CSTRING(groupColorConfigurations_displayName);
+ description = CSTRING(groupColorConfigurations_description);
category = CSTRING(mapGestures_category);
typeName = "ARRAY";
value[] = {};
};
- class GVAR(GroupColorConfigurationMapping) {
- displayName = CSTRING(GroupColorConfigurationMapping_displayName);
- description = CSTRING(GroupColorConfigurationMapping_description);
+ class GVAR(groupColorConfigurationMapping) {
+ displayName = CSTRING(groupColorConfigurationMapping_displayName);
+ description = CSTRING(groupColorConfigurationMapping_description);
category = CSTRING(mapGestures_category);
typeName = "ARRAY";
value[] = {{}, {}};
diff --git a/addons/map_gestures/CfgVehicles.hpp b/addons/map_gestures/CfgVehicles.hpp
index d4c88883e6..5593d66181 100644
--- a/addons/map_gestures/CfgVehicles.hpp
+++ b/addons/map_gestures/CfgVehicles.hpp
@@ -8,7 +8,7 @@ class CfgVehicles {
isGlobal = 0;
isSingular = 1;
author = ECSTRING(common,ACETeam);
- icon = PATHTOF(ui\icon_module_map_gestures_ca.paa);
+ icon = QPATHTOF(ui\icon_module_map_gestures_ca.paa);
class Arguments {
class enabled {
displayName = CSTRING(enabled_DisplayName);
@@ -49,7 +49,7 @@ class CfgVehicles {
function = QFUNC(moduleGroupSettings);
isGlobal = 0;
author = ECSTRING(common,ACETeam);
- icon = PATHTOF(ui\icon_module_map_gestures_ca.paa);
+ icon = QPATHTOF(ui\icon_module_map_gestures_ca.paa);
class Arguments {
class leadColor {
displayName = CSTRING(leadColor_displayName);
diff --git a/addons/map_gestures/config.cpp b/addons/map_gestures/config.cpp
index 72e7f82078..52f333c717 100644
--- a/addons/map_gestures/config.cpp
+++ b/addons/map_gestures/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"Dslyecxi", "MikeMatrix"};
- authorUrl = "https://github.com/MikeMatrix";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Dslyecxi", "MikeMatrix"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/maptools/ACE_Settings.hpp b/addons/maptools/ACE_Settings.hpp
index 9c53a84a7c..0a88948a7f 100644
--- a/addons/maptools/ACE_Settings.hpp
+++ b/addons/maptools/ACE_Settings.hpp
@@ -1,5 +1,5 @@
class ACE_Settings {
- class GVAR(EveryoneCanDrawOnBriefing) {
+ class GVAR(everyoneCanDrawOnBriefing) {
value = 1;
typeName = "BOOL";
};
diff --git a/addons/maptools/CfgWeapons.hpp b/addons/maptools/CfgWeapons.hpp
index 5cec99bfb0..dc7a7046dd 100644
--- a/addons/maptools/CfgWeapons.hpp
+++ b/addons/maptools/CfgWeapons.hpp
@@ -5,8 +5,8 @@ class CfgWeapons {
class ACE_MapTools: ACE_ItemCore {
displayName = CSTRING(Name);
descriptionShort = CSTRING(Description);
- model = QUOTE(PATHTOF(data\ace_MapTools.p3d));
- picture = PATHTOF(UI\maptool_item.paa);
+ model = QPATHTOF(data\ace_MapTools.p3d);
+ picture = QPATHTOF(UI\maptool_item.paa);
scope = 2;
class ItemInfo: InventoryItem_Base_F {
mass = 1;
diff --git a/addons/maptools/MapGpsUI.hpp b/addons/maptools/MapGpsUI.hpp
index 170f0d1620..c5b230f163 100644
--- a/addons/maptools/MapGpsUI.hpp
+++ b/addons/maptools/MapGpsUI.hpp
@@ -26,7 +26,7 @@ class RscTitles {
y = Y_gps;
w = W_gps;
h = H_gps;
- text = PATHTOF(UI\mapGps.paa);
+ text = QPATHTOF(UI\mapGps.paa);
colorBackground[] = {1, 1, 1, 1};
};
class heading: RscText{
diff --git a/addons/maptools/config.cpp b/addons/maptools/config.cpp
index 1e82cd2269..6fedff6302 100644
--- a/addons/maptools/config.cpp
+++ b/addons/maptools/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {"ACE_MapTools"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction"};
- author[] = {"esteldunedain"};
- authorUrl = "https://github.com/esteldunedain/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"esteldunedain"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/maptools/functions/fnc_calculateMapScale.sqf b/addons/maptools/functions/fnc_calculateMapScale.sqf
index 78bfae43af..018edf68d9 100644
--- a/addons/maptools/functions/fnc_calculateMapScale.sqf
+++ b/addons/maptools/functions/fnc_calculateMapScale.sqf
@@ -14,7 +14,7 @@
private ["_screenOffset", "_pos"];
-_pos = ((findDisplay 12) displayCtrl 51) ctrlMapScreenToWorld [0.5, 0.5];
+_pos = ((findDisplay 12) displayCtrl 51) ctrlMapScreenToWorld [0.5, 0.5];
_screenOffset = ((findDisplay 12) displayCtrl 51) posWorldToScreen [(_pos select 0) + 100, (_pos select 1)];
(_screenOffset select 0) - 0.5
diff --git a/addons/maptools/functions/fnc_openMapGpsUpdate.sqf b/addons/maptools/functions/fnc_openMapGpsUpdate.sqf
index 092f0720c2..4a77f4a6c3 100644
--- a/addons/maptools/functions/fnc_openMapGpsUpdate.sqf
+++ b/addons/maptools/functions/fnc_openMapGpsUpdate.sqf
@@ -6,15 +6,15 @@
private ["_mapGpsDisplay", "_ctrl"];
if ((!("ItemGPS" in assigneditems ACE_player)) || {isNull (uiNamespace getVariable [QGVAR(ui_mapGpsDisplay), displayNull])}) exitWith {
- ("RscACE_MapGps" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; //close GPS RSC
- [(_this select 1)] call CBA_fnc_removePerFrameHandler; //remove frameHandler
+ ("RscACE_MapGps" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; // Close GPS RSC
+ [(_this select 1)] call CBA_fnc_removePerFrameHandler; // Remove frameHandler
};
disableSerialization;
_mapGpsDisplay = uiNamespace getVariable [QGVAR(ui_mapGpsDisplay), displayNull];
_ctrl = _mapGpsDisplay displayCtrl 913590;
-_ctrl ctrlSetText str(round(getDir ACE_player)); //set Heading
+_ctrl ctrlSetText str (round (getDir ACE_player)); // Set Heading
_ctrl = _mapGpsDisplay displayCtrl 913591;
-_ctrl ctrlSetText str(round((getPosASL ACE_player) select 2)); //set Altitude
+_ctrl ctrlSetText str (round ((getPosASL ACE_player) select 2) + EGVAR(common,mapAltitude)); // Set Altitude
_ctrl = _mapGpsDisplay displayCtrl 913592;
-_ctrl ctrlSetText mapGridPosition ACE_player; //set grid cords
+_ctrl ctrlSetText mapGridPosition ACE_player; // Set grid cords
diff --git a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf
index 5d11c6a6e9..530d213773 100644
--- a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf
+++ b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf
@@ -35,10 +35,10 @@ if (!("ACE_MapTools" in items ACE_player)|| {GVAR(mapTool_Shown) == 0}) exitWith
_rotatingTexture = "";
_textureWidth = 0;
if (GVAR(mapTool_Shown) == 1) then {
- _rotatingTexture = QUOTE(PATHTOF(data\mapToolRotatingNormal.paa));
+ _rotatingTexture = QPATHTOF(data\mapToolRotatingNormal.paa);
_textureWidth = TEXTURE_WIDTH_IN_M;
} else {
- _rotatingTexture = QUOTE(PATHTOF(data\mapToolRotatingSmall.paa));
+ _rotatingTexture = QPATHTOF(data\mapToolRotatingSmall.paa);
_textureWidth = TEXTURE_WIDTH_IN_M / 2;
};
@@ -51,7 +51,7 @@ _scaleY = _scaleX * ((_resWidth / _resHeight) / _aspectRatio); //handle bad aspe
_xPos = GVAR(mapTool_pos) select 0;
_yPos = (GVAR(mapTool_pos) select 1) + _textureWidth * CENTER_OFFSET_Y_PERC;
-_theMap drawIcon [QUOTE(PATHTOF(data\mapToolFixed.paa)), [1,1,1,1], [_xPos,_yPos], _scaleX, _scaleY, 0, "", 0];
+_theMap drawIcon [QPATHTOF(data\mapToolFixed.paa), [1,1,1,1], [_xPos,_yPos], _scaleX, _scaleY, 0, "", 0];
// Position and rotation of the rotating part
_xPos = (GVAR(mapTool_pos) select 0) + sin(GVAR(mapTool_angle)) * _textureWidth * CENTER_OFFSET_Y_PERC;
diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml
index cde1096170..3db0d4d972 100644
--- a/addons/maptools/stringtable.xml
+++ b/addons/maptools/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/markers/CfgEventHandlers.hpp b/addons/markers/CfgEventHandlers.hpp
index becf395052..e1f9294767 100644
--- a/addons/markers/CfgEventHandlers.hpp
+++ b/addons/markers/CfgEventHandlers.hpp
@@ -16,3 +16,9 @@ class Extended_PostInit_EventHandlers {
init = QUOTE(call COMPILE_FILE(XEH_postInit));
};
};
+
+class Extended_DisplayLoad_EventHandlers {
+ class RscDiary {
+ ADDON = QUOTE(_this call FUNC(mapDisplayInitEH));
+ };
+};
diff --git a/addons/markers/XEH_PREP.hpp b/addons/markers/XEH_PREP.hpp
index 67344454ec..c6ad5c6ba2 100644
--- a/addons/markers/XEH_PREP.hpp
+++ b/addons/markers/XEH_PREP.hpp
@@ -1,6 +1,7 @@
PREP(getEnabledChannels);
PREP(initInsertMarker);
+PREP(mapDisplayInitEH);
PREP(mapDrawEH);
PREP(onLBSelChangedChannel);
PREP(onLBSelChangedColor);
diff --git a/addons/markers/config.cpp b/addons/markers/config.cpp
index 24d3c778d8..658a3ab370 100644
--- a/addons/markers/config.cpp
+++ b/addons/markers/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"commy2"};
- authorUrl = "https://github.com/commy2/";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"commy2"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/markers/functions/fnc_initInsertMarker.sqf b/addons/markers/functions/fnc_initInsertMarker.sqf
index 08c078c4f5..549a89730d 100644
--- a/addons/markers/functions/fnc_initInsertMarker.sqf
+++ b/addons/markers/functions/fnc_initInsertMarker.sqf
@@ -22,7 +22,7 @@
disableserialization;
params ["_display"];
TRACE_1("params",_display);
-
+
//Can't place markers when can't interact
if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {
_display closeDisplay 2; //emulate "Cancel" button
@@ -238,4 +238,4 @@
//Update now and add eventHandler:
[_aceAngleSlider, _curSelAngle] call FUNC(onSliderPosChangedAngle);
_aceAngleSlider ctrlAddEventHandler ["SliderPosChanged", {_this call FUNC(onSliderPosChangedAngle)}];
-}, _this] call EFUNC(common,execNextFrame);
+}, _this] call CBA_fnc_execNextFrame;
diff --git a/addons/markers/functions/fnc_mapDisplayInitEH.sqf b/addons/markers/functions/fnc_mapDisplayInitEH.sqf
new file mode 100644
index 0000000000..662f6f80c0
--- /dev/null
+++ b/addons/markers/functions/fnc_mapDisplayInitEH.sqf
@@ -0,0 +1,34 @@
+/*
+ * Author: PabstMirror
+ * Handles XEH DisplayLoad for the various map displays (RscDiary)
+ *
+ * Arguments:
+ * 0: Map Display (idd 12,37,52,53)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * [display] call ace_markers_fnc_mapDisplayInitEH
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+disableSerialization;
+
+params ["_display"];
+TRACE_1("params",_display);
+
+private _bisShapeLB = _display displayctrl 1091;
+private _curSelShape = missionNamespace getVariable [QGVAR(curSelMarkerShape), 0];
+TRACE_2("shape",_bisShapeLB,_curSelShape);
+_bisShapeLB ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedShape)}];
+_bisShapeLB lbSetCurSel _curSelShape;
+
+
+private _bisColorLB = _display displayctrl 1090;
+private _curSelColor = missionNamespace getVariable [QGVAR(curSelMarkerColor), 0];
+TRACE_2("color",_bisColorLB,_curSelColor);
+_bisColorLB ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedColor)}];
+_bisColorLB lbSetCurSel _curSelColor;
diff --git a/addons/markers/functions/fnc_onLBSelChangedColor.sqf b/addons/markers/functions/fnc_onLBSelChangedColor.sqf
index 215cd72580..dc186a6c61 100644
--- a/addons/markers/functions/fnc_onLBSelChangedColor.sqf
+++ b/addons/markers/functions/fnc_onLBSelChangedColor.sqf
@@ -26,3 +26,15 @@ GVAR(curSelMarkerColor) = _index;
private _config = (configFile >> "CfgMarkerColors") select _data;
GVAR(currentMarkerColorConfigName) = configName _config;
+
+//Set map display to same color:
+private _bisColorLB = switch (false) do {
+ case (isNull findDisplay 12): {(findDisplay 12) displayCtrl 1090};
+ case (isNull findDisplay 52): {(findDisplay 52) displayCtrl 1090};
+ case (isNull findDisplay 53): {(findDisplay 53) displayCtrl 1090};
+ case (isNull findDisplay 37): {(findDisplay 37) displayCtrl 1090};
+ default {controlNull};
+};
+if (_ctrl != _bisColorLB) then { //Don't set what we got a EH from
+ _bisColorLB lbSetCurSel GVAR(curSelMarkerColor);
+};
diff --git a/addons/markers/functions/fnc_onLBSelChangedShape.sqf b/addons/markers/functions/fnc_onLBSelChangedShape.sqf
index 41f0f30a0d..6fd9aabd89 100644
--- a/addons/markers/functions/fnc_onLBSelChangedShape.sqf
+++ b/addons/markers/functions/fnc_onLBSelChangedShape.sqf
@@ -26,3 +26,15 @@ GVAR(curSelMarkerShape) = _index;
private _config = (configFile >> "CfgMarkers") select _data;
GVAR(currentMarkerConfigName) = configName _config;
+
+//Set map display to same shape:
+private _bisShapeLB = switch (false) do {
+ case (isNull findDisplay 12): {(findDisplay 12) displayCtrl 1091};
+ case (isNull findDisplay 52): {(findDisplay 52) displayCtrl 1091};
+ case (isNull findDisplay 53): {(findDisplay 53) displayCtrl 1091};
+ case (isNull findDisplay 37): {(findDisplay 37) displayCtrl 1091};
+ default {controlNull};
+};
+if (_ctrl != _bisShapeLB) then { //Don't set what we got a EH from
+ _bisShapeLB lbSetCurSel GVAR(curSelMarkerShape);
+};
diff --git a/addons/markers/functions/fnc_placeMarker.sqf b/addons/markers/functions/fnc_placeMarker.sqf
index 5b0783b454..d3f52413be 100644
--- a/addons/markers/functions/fnc_placeMarker.sqf
+++ b/addons/markers/functions/fnc_placeMarker.sqf
@@ -32,5 +32,5 @@ if (_closeNum == 1) then {
]
]] call EFUNC(common,globalEvent);
- }, []] call EFUNC(common,execNextFrame);
+ }, []] call CBA_fnc_execNextFrame;
};
diff --git a/addons/markers/stringtable.xml b/addons/markers/stringtable.xml
index 9d015b0403..44d64eb1e0 100644
--- a/addons/markers/stringtable.xml
+++ b/addons/markers/stringtable.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/addons/medical/ACE_Medical_Actions.hpp b/addons/medical/ACE_Medical_Actions.hpp
index 5934203333..900e6cb26c 100644
--- a/addons/medical/ACE_Medical_Actions.hpp
+++ b/addons/medical/ACE_Medical_Actions.hpp
@@ -6,7 +6,7 @@ class ACE_Head {
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = CSTRING(Bandage);
@@ -16,7 +16,7 @@ class ACE_Head {
EXCEPTIONS
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
@@ -27,28 +27,28 @@ class ACE_Head {
EXCEPTIONS
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\packingBandage.paa);
+ 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 = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
class CheckPulse: fieldDressing {
displayName = CSTRING(Actions_CheckPulse);
@@ -83,7 +83,7 @@ class ACE_Torso {
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
displayName = CSTRING(Bandage);
@@ -94,7 +94,7 @@ class ACE_Torso {
showDisabled = 1;
priority = 2;
enableInside = 1;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
class PlaceInBodyBag {
displayName = CSTRING(PlaceInBodyBag);
@@ -115,7 +115,7 @@ class ACE_Torso {
showDisabled = 1;
priority = 2;
enableInside = 1;
- icon = PATHTOF(UI\icons\triageCard.paa);
+ icon = QPATHTOF(UI\icons\triageCard.paa);
};
class Diagnose {
displayName = CSTRING(Actions_Diagnose);
@@ -138,35 +138,35 @@ class ACE_Torso {
showDisabled = 0;
priority = 2;
enableInside = 1;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\packingBandage.paa);
+ 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 = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\surgicalKit.paa);
+ icon = QPATHTOF(UI\icons\surgicalKit.paa);
};
class PersonalAidKit: fieldDressing {
displayName = CSTRING(Use_Aid_Kit);
@@ -190,7 +190,7 @@ class ACE_ArmLeft {
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
@@ -201,7 +201,7 @@ class ACE_ArmLeft {
EXCEPTIONS
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
@@ -213,70 +213,70 @@ class ACE_ArmLeft {
EXCEPTIONS
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\packingBandage.paa);
+ 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 = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\tourniquet.paa);
+ 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 = PATHTOF(UI\icons\autoInjector.paa);
+ 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 = PATHTOF(UI\icons\autoInjector.paa);
+ 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 = PATHTOF(UI\icons\autoInjector.paa);
+ 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 = PATHTOF(UI\icons\autoInjector.paa);
+ 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 = PATHTOF(UI\icons\iv.paa);
+ icon = QPATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = CSTRING(Actions_Blood4_500);
@@ -353,7 +353,7 @@ class ACE_ArmRight {
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
@@ -364,7 +364,7 @@ class ACE_ArmRight {
EXCEPTIONS
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
@@ -376,14 +376,14 @@ class ACE_ArmRight {
EXCEPTIONS
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\packingBandage.paa);
+ icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
@@ -402,14 +402,14 @@ class ACE_ArmRight {
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 = PATHTOF(UI\icons\tourniquet.paa);
+ 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 = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
@@ -417,7 +417,7 @@ class ACE_ArmRight {
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 = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
@@ -436,7 +436,7 @@ class ACE_ArmRight {
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 = PATHTOF(UI\icons\iv.paa);
+ icon = QPATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = CSTRING(Actions_Blood4_500);
@@ -514,7 +514,7 @@ class ACE_LegLeft {
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
@@ -525,7 +525,7 @@ class ACE_LegLeft {
EXCEPTIONS
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
@@ -538,14 +538,14 @@ class ACE_LegLeft {
EXCEPTIONS
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\packingBandage.paa);
+ icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
@@ -564,28 +564,28 @@ class ACE_LegLeft {
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 = PATHTOF(UI\icons\tourniquet.paa);
+ 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 = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(treatment));
EXCEPTIONS
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ 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 = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
@@ -598,7 +598,7 @@ class ACE_LegLeft {
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 = PATHTOF(UI\icons\iv.paa);
+ icon = QPATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = CSTRING(Actions_Blood4_500);
@@ -662,7 +662,7 @@ class ACE_LegRight {
ACTION_CONDITION
modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction));
EXCEPTIONS
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
distance = MEDICAL_ACTION_DISTANCE;
class Bandage {
@@ -673,7 +673,7 @@ class ACE_LegRight {
EXCEPTIONS
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
@@ -686,14 +686,14 @@ class ACE_LegRight {
EXCEPTIONS
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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 = PATHTOF(UI\icons\packingBandage.paa);
+ icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
@@ -712,21 +712,21 @@ class ACE_LegRight {
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 = PATHTOF(UI\icons\tourniquet.paa);
+ 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 = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(canTreatCached));
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(treatment));
EXCEPTIONS
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
@@ -745,7 +745,7 @@ class ACE_LegRight {
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 = PATHTOF(UI\icons\iv.paa);
+ icon = QPATHTOF(UI\icons\iv.paa);
};
class BloodIV_500: BloodIV {
displayName = CSTRING(Actions_Blood4_500);
diff --git a/addons/medical/ACE_Medical_SelfActions.hpp b/addons/medical/ACE_Medical_SelfActions.hpp
index 54a8ba60f5..fca025adcb 100644
--- a/addons/medical/ACE_Medical_SelfActions.hpp
+++ b/addons/medical/ACE_Medical_SelfActions.hpp
@@ -4,11 +4,11 @@ class Medical {
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
condition = "true";
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
class ACE_Head {
displayName = CSTRING(Head);
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
exceptions[] = {"isNotInside", "isNotSitting"};
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction));
@@ -23,7 +23,7 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
class FieldDressing {
@@ -34,28 +34,28 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\packingBandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
class CheckPulse: fieldDressing {
displayName = CSTRING(Actions_CheckPulse);
@@ -81,7 +81,7 @@ class Medical {
modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction));
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
@@ -91,7 +91,7 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
class TriageCard {
@@ -102,7 +102,7 @@ class Medical {
statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard));
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\triageCard.paa);
+ icon = QPATHTOF(UI\icons\triageCard.paa);
};
// Advanced medical
@@ -114,28 +114,28 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\packingBandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
};
class ACE_ArmLeft {
@@ -145,7 +145,7 @@ class Medical {
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 = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
@@ -155,7 +155,7 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
@@ -167,63 +167,63 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\packingBandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\tourniquet.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class CheckPulse: fieldDressing {
displayName = CSTRING(Actions_CheckPulse);
@@ -252,7 +252,7 @@ class Medical {
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 = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
@@ -262,7 +262,7 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
// Advanced medical
@@ -274,14 +274,14 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\packingBandage.paa);
+ icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
@@ -300,21 +300,21 @@ class Medical {
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\tourniquet.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"};
statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
@@ -355,7 +355,7 @@ class Medical {
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 = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
@@ -365,7 +365,7 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
@@ -378,14 +378,14 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\packingBandage.paa);
+ icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
@@ -404,28 +404,28 @@ class Medical {
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\tourniquet.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Epinephrine: Morphine {
displayName = CSTRING(Inject_Epinephrine);
@@ -447,7 +447,7 @@ class Medical {
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 = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
class Bandage {
displayName = CSTRING(Bandage);
@@ -457,7 +457,7 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment));
showDisabled = 1;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ icon = QPATHTOF(UI\icons\bandage.paa);
};
@@ -470,14 +470,14 @@ class Medical {
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\bandage.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\packingBandage.paa);
+ icon = QPATHTOF(UI\icons\packingBandage.paa);
};
class ElasticBandage: fieldDressing {
displayName = CSTRING(Actions_ElasticBandage);
@@ -496,21 +496,21 @@ class Medical {
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\tourniquet.paa);
+ 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"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Adenosine: Morphine {
displayName = CSTRING(Inject_Atropine);
condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(canTreatCached));
exceptions[] = {"isNotInside"};
statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(treatment));
- icon = PATHTOF(UI\icons\autoInjector.paa);
+ icon = QPATHTOF(UI\icons\autoInjector.paa);
};
class Atropine: Morphine {
displayName = CSTRING(Inject_Atropine);
diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp
index 429cb995a1..a785c2cad5 100644
--- a/addons/medical/ACE_Settings.hpp
+++ b/addons/medical/ACE_Settings.hpp
@@ -1,12 +1,16 @@
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"};
@@ -20,6 +24,8 @@ class ACE_Settings {
};
class GVAR(enableFor) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_enableFor_Description);
value = 0;
typeName = "SCALAR";
values[] = {"Players only", "Players and AI"};
@@ -31,11 +37,15 @@ class ACE_Settings {
};
class GVAR(bleedingCoefficient) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_bleedingCoefficient_DisplayName);
+ description = CSTRING(MedicalSettings_bleedingCoefficient_Description);
typeName = "SCALAR";
value = 1;
};
class GVAR(painCoefficient) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_painCoefficient_DisplayName);
+ description = CSTRING(MedicalSettings_painCoefficient_Description);
typeName = "SCALAR";
value = 1;
};
@@ -51,58 +61,80 @@ class ACE_Settings {
};
class GVAR(enableAdvancedWounds) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_Description);
typeName = "BOOL";
value = false;
};
class GVAR(enableVehicleCrashes) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(enableScreams) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_enableScreams_DisplayName);
+ description = CSTRING(MedicalSettings_enableScreams_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(playerDamageThreshold) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_playerDamageThreshold_DisplayName);
+ description = CSTRING(MedicalSettings_playerDamageThreshold_Description);
typeName = "SCALAR";
value = 1;
};
class GVAR(AIDamageThreshold) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_AIDamageThreshold_DisplayName);
+ description = CSTRING(MedicalSettings_AIDamageThreshold_Description);
typeName = "SCALAR";
value = 1;
};
class GVAR(enableUnconsciousnessAI) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_enableUnconsciousnessAI_DisplayName);
+ description = CSTRING(MedicalSettings_enableUnconsciousnessAI_Description);
value = 1;
typeName = "SCALAR";
values[] = {"Disabled", "50/50", "Enabled"};
};
class GVAR(remoteControlledAI) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_remoteControlledAI_DisplayName);
+ description = CSTRING(MedicalSettings_remoteControlledAI_Description);
typeName = "BOOL";
value = 1;
};
class GVAR(preventInstaDeath) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_preventInstaDeath_DisplayName);
+ description = CSTRING(MedicalSettings_preventInstaDeath_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(enableRevive) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(ReviveSettings_enableRevive_DisplayName);
+ description = CSTRING(ReviveSettings_enableRevive_Description);
typeName = "SCALAR";
value = 0;
values[] = {"Disabled", "Players only", "Players and AI"};
};
class GVAR(maxReviveTime) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(ReviveSettings_maxReviveTime_DisplayName);
+ description = CSTRING(ReviveSettings_maxReviveTime_Description);
typeName = "SCALAR";
value = 120;
};
class GVAR(amountOfReviveLives) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(ReviveSettings_amountOfReviveLives_DisplayName);
+ description = CSTRING(ReviveSettings_amountOfReviveLives_Description);
typeName = "SCALAR";
value = -1;
};
@@ -113,6 +145,8 @@ class ACE_Settings {
};
class GVAR(allowLitterCreation) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_allowLitterCreation_DisplayName);
+ description = CSTRING(MedicalSettings_allowLitterCreation_Description);
typeName = "BOOL";
value = 1;
};
@@ -130,53 +164,71 @@ class ACE_Settings {
};
class GVAR(litterCleanUpDelay) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(MedicalSettings_litterCleanUpDelay_DisplayName);
+ description = CSTRING(MedicalSettings_litterCleanUpDelay_Description);
typeName = "SCALAR";
value = 0;
};
class GVAR(medicSetting_basicEpi) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_DisplayName);
+ description = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_Description);
typeName = "SCALAR";
value = 1;
values[] = {"Anyone", "Medics only", "Doctors only"};
};
class GVAR(medicSetting_PAK) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_Description);
typeName = "SCALAR";
value = 1;
values[] = {"Anyone", "Medics only", "Doctors only"};
};
class GVAR(medicSetting_SurgicalKit) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_Description);
typeName = "SCALAR";
value = 1;
values[] = {"Anyone", "Medics only", "Doctors only"};
};
class GVAR(consumeItem_PAK) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description);
typeName = "SCALAR";
value = 0;
values[] = {"No", "Yes"};
};
class GVAR(consumeItem_SurgicalKit) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_Description);
typeName = "SCALAR";
value = 0;
values[] = {"No", "Yes"};
};
class GVAR(useLocation_basicEpi) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(BasicMedicalSettings_useLocation_basicEpi_DisplayName);
+ description = CSTRING(BasicMedicalSettings_useLocation_basicEpi_Description);
typeName = "SCALAR";
value = 0;
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
};
class GVAR(useLocation_PAK) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description);
typeName = "SCALAR";
value = 3;
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
};
class GVAR(useLocation_SurgicalKit) {
category = CSTRING(Category_Medical);
+ displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description);
typeName = "SCALAR";
value = 2;
values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
@@ -199,18 +251,22 @@ class ACE_Settings {
};
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(healHitPointAfterAdvBandage);
+ displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description);
typeName = "BOOL";
value = 0;
};
class GVAR(painIsOnlySuppressed) {
category = CSTRING(Category_Medical);
- displayName = CSTRING(painIsOnlySuppressed);
+ displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName);
+ description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description);
typeName = "BOOL";
value = 1;
};
@@ -232,7 +288,6 @@ class ACE_Settings {
typeName = "BOOL";
value = 0;
};
-
class GVAR(menuTypeStyle) {
category = CSTRING(Category_Medical);
displayName = CSTRING(menuTypeDisplay);
@@ -242,7 +297,6 @@ class ACE_Settings {
values[] = {CSTRING(useSelection), CSTRING(useRadial), "Disabled"};
isClientSettable = 1;
};
-
class GVAR(delayUnconCaptive) {
category = CSTRING(Category_Medical);
displayName = CSTRING(MedicalSettings_delayUnconCaptive_DisplayName);
diff --git a/addons/medical/CfgEden.hpp b/addons/medical/CfgEden.hpp
index 508d53d54c..a9b4594b66 100644
--- a/addons/medical/CfgEden.hpp
+++ b/addons/medical/CfgEden.hpp
@@ -16,9 +16,9 @@ class Cfg3DEN {
class Value: ctrlToolbox {
idc = 100;
style = "0x02";
- x = "48 * (pixelW * 1.25 * 4)";
- w = "82 * (pixelW * 1.25 * 4)";
- h = "5 * (pixelH * 1.25 * 4)";
+ x = "48 * (pixelW * pixelGrid * 0.25)";
+ w = "82 * (pixelW * pixelGrid * 0.25)";
+ h = "5 * (pixelH * pixelGrid * 0.25)";
rows = 1;
columns = 4;
strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignMedicRoles_role_none), CSTRING(AssignMedicRoles_role_medic), CSTRING(AssignMedicRoles_role_doctorShort)};
diff --git a/addons/medical/CfgSounds.hpp b/addons/medical/CfgSounds.hpp
index 6b5fa48344..9cc5faedf9 100644
--- a/addons/medical/CfgSounds.hpp
+++ b/addons/medical/CfgSounds.hpp
@@ -1,37 +1,37 @@
class CfgSounds {
class ACE_heartbeat_fast_1 {
name = "ACE_heartbeat_fast_1";
- sound[] = {QUOTE(PATHTOF(sounds\heart_beats\fast_1.wav)), "db+1", 1};
+ sound[] = {QPATHTOF(sounds\heart_beats\fast_1.wav), "db+1", 1};
titles[] = {};
};
class ACE_heartbeat_fast_2 {
name = "ACE_heartbeat_fast_2";
- sound[] = {QUOTE(PATHTOF(sounds\heart_beats\fast_2.wav)), "db+1", 1};
+ sound[] = {QPATHTOF(sounds\heart_beats\fast_2.wav), "db+1", 1};
titles[] = {};
};
class ACE_heartbeat_fast_3 {
name = "ACE_heartbeat_fast_3";
- sound[] = {QUOTE(PATHTOF(sounds\heart_beats\fast_3.wav)), "db+1", 1};
+ sound[] = {QPATHTOF(sounds\heart_beats\fast_3.wav), "db+1", 1};
titles[] = {};
};
class ACE_heartbeat_norm_1 {
name = "ACE_heartbeat_norm_1";
- sound[] = {QUOTE(PATHTOF(sounds\heart_beats\norm_1.wav)), "db+1", 1};
+ sound[] = {QPATHTOF(sounds\heart_beats\norm_1.wav), "db+1", 1};
titles[] = {};
};
class ACE_heartbeat_norm_2 {
name = "ACE_heartbeat_norm_2";
- sound[] = {QUOTE(PATHTOF(sounds\heart_beats\norm_2.wav)), "db+1", 1};
+ sound[] = {QPATHTOF(sounds\heart_beats\norm_2.wav), "db+1", 1};
titles[] = {};
};
class ACE_heartbeat_slow_1 {
name = "ACE_heartbeat_slow_1";
- sound[] = {QUOTE(PATHTOF(sounds\heart_beats\slow_1.wav)), "db+1", 1};
+ sound[] = {QPATHTOF(sounds\heart_beats\slow_1.wav), "db+1", 1};
titles[] = {};
};
class ACE_heartbeat_slow_2 {
name = "ACE_heartbeat_slow_2";
- sound[] = {QUOTE(PATHTOF(sounds\heart_beats\slow_2.wav)), "db+1", 1};
+ sound[] = {QPATHTOF(sounds\heart_beats\slow_2.wav), "db+1", 1};
titles[] = {};
};
};
diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp
index 86ad45296b..3425fa9ad3 100644
--- a/addons/medical/CfgVehicles.hpp
+++ b/addons/medical/CfgVehicles.hpp
@@ -14,7 +14,7 @@ class CfgVehicles {
class ACE_moduleMedicalSettings: ACE_Module {
scope = 2;
displayName = CSTRING(MedicalSettings_Module_DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QUOTE(DFUNC(moduleMedicalSettings));
functionPriority = 1;
@@ -156,9 +156,9 @@ class CfgVehicles {
class ACE_moduleBasicMedicalSettings: ACE_Module {
scope = 2;
displayName = CSTRING(BasicMedicalSettings_Module_DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
- function = QUOTE(FUNC(moduleBasicMedicalSettings));
+ function = QFUNC(moduleBasicMedicalSettings);
functionPriority = 10;
isGlobal = 2;
isSingular = 1;
@@ -198,9 +198,9 @@ class CfgVehicles {
class ACE_moduleAdvancedMedicalSettings: ACE_Module {
scope = 2;
displayName = CSTRING(AdvancedMedicalSettings_Module_DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
- function = QUOTE(FUNC(moduleAdvancedMedicalSettings));
+ function = QFUNC(moduleAdvancedMedicalSettings);
functionPriority = 10;
isGlobal = 2;
isSingular = 1;
@@ -320,7 +320,7 @@ class CfgVehicles {
class ACE_moduleReviveSettings: ACE_Module {
scope = 2;
displayName = CSTRING(ReviveSettings_Module_DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QUOTE(DFUNC(moduleReviveSettings));
functionPriority = 1;
@@ -364,9 +364,9 @@ class CfgVehicles {
class ACE_moduleAssignMedicRoles: Module_F {
scope = 2;
displayName = CSTRING(AssignMedicRoles_Module_DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
- function = QUOTE(FUNC(moduleAssignMedicRoles));
+ function = QFUNC(moduleAssignMedicRoles);
functionPriority = 10;
isGlobal = 2;
isTriggerActivated = 0;
@@ -411,9 +411,9 @@ class CfgVehicles {
class ACE_moduleAssignMedicVehicle: Module_F {
scope = 2;
displayName = CSTRING(AssignMedicVehicle_Module_DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
- function = QUOTE(FUNC(moduleAssignMedicalVehicle));
+ function = QFUNC(moduleAssignMedicalVehicle);
functionPriority = 10;
isGlobal = 2;
isTriggerActivated = 0;
@@ -455,9 +455,9 @@ class CfgVehicles {
class ACE_moduleAssignMedicalFacility: Module_F {
scope = 2;
displayName = CSTRING(AssignMedicalFacility_Module_DisplayName);
- icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa));
+ icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
- function = QUOTE(FUNC(moduleAssignMedicalFacility));
+ function = QFUNC(moduleAssignMedicalFacility);
functionPriority = 10;
isGlobal = 2;
isTriggerActivated = 0;
@@ -534,7 +534,7 @@ class CfgVehicles {
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 = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
#undef EXCEPTIONS
#undef ACTION_CONDITION
@@ -549,7 +549,7 @@ class CfgVehicles {
statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionLoadUnit));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
exceptions[] = {"isNotDragging", "isNotCarrying"};
};
class GVAR(UnLoadPatient) {
@@ -559,7 +559,7 @@ class CfgVehicles {
statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionUnloadUnit));
showDisabled = 0;
priority = 2;
- icon = PATHTOF(UI\icons\medical_cross.paa);
+ icon = QPATHTOF(UI\icons\medical_cross.paa);
exceptions[] = {"isNotDragging", "isNotCarrying", "isNotInside"};
};
};
@@ -659,7 +659,7 @@ class CfgVehicles {
scope = 1;
scopeCurator = 2;
side = -1;
- model = QUOTE(PATHTOEF(apl,bodybag.p3d));
+ model = QPATHTOEF(apl,bodybag.p3d);
icon = "";
displayName = CSTRING(Bodybag_Display);
EGVAR(dragging,canDrag) = 1;
@@ -686,40 +686,40 @@ class CfgVehicles {
scopeCurator = 0;
displayName = " ";
destrType = "DestructNo";
- model = QUOTE(PATHTOF(data\littergeneric.p3d));
+ model = QPATHTOF(data\littergeneric.p3d);
};
class ACE_MedicalLitter_clean: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_clean.p3d));
+ model = QPATHTOF(data\littergeneric_clean.p3d);
};
class ACE_MedicalLitter_bandage1: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_bandages1.p3d));
+ model = QPATHTOF(data\littergeneric_bandages1.p3d);
};
class ACE_MedicalLitter_bandage2: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_bandages2.p3d));
+ model = QPATHTOF(data\littergeneric_bandages2.p3d);
};
class ACE_MedicalLitter_bandage3: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_bandages3.p3d));
+ model = QPATHTOF(data\littergeneric_bandages3.p3d);
};
class ACE_MedicalLitter_packingBandage: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_packingBandage.p3d));
+ model = QPATHTOF(data\littergeneric_packingBandage.p3d);
};
class ACE_MedicalLitter_gloves: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_gloves.p3d));
+ model = QPATHTOF(data\littergeneric_gloves.p3d);
};
class ACE_MedicalLitter_adenosine: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_adenosine.p3d));
+ model = QPATHTOF(data\littergeneric_adenosine.p3d);
};
class ACE_MedicalLitter_atropine: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_atropine.p3d));
+ model = QPATHTOF(data\littergeneric_atropine.p3d);
};
class ACE_MedicalLitter_epinephrine: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_epinephrine.p3d));
+ model = QPATHTOF(data\littergeneric_epinephrine.p3d);
};
class ACE_MedicalLitter_morphine: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_morphine.p3d));
+ model = QPATHTOF(data\littergeneric_morphine.p3d);
};
class ACE_MedicalLitter_QuickClot: ACE_MedicalLitterBase {
- model = QUOTE(PATHTOF(data\littergeneric_Quikclot.p3d));
+ model = QPATHTOF(data\littergeneric_Quikclot.p3d);
};
class Item_Base_F;
class ACE_fieldDressingItem: Item_Base_F {
@@ -880,7 +880,7 @@ class CfgVehicles {
scopeCurator = 2;
accuracy = 1000;
displayName = CSTRING(medicalSupplyCrate);
- model = PATHTOF(data\ace_medcrate.p3d);
+ model = QPATHTOF(data\ace_medcrate.p3d);
author = ECSTRING(common,ACETeam);
class TransportItems {
MACRO_ADDITEM(ACE_fieldDressing,50);
diff --git a/addons/medical/CfgWeapons.hpp b/addons/medical/CfgWeapons.hpp
index 4bd5452794..df9a756a34 100644
--- a/addons/medical/CfgWeapons.hpp
+++ b/addons/medical/CfgWeapons.hpp
@@ -22,8 +22,8 @@ class CfgWeapons {
class ACE_ItemCore;
class ACE_fieldDressing: ACE_ItemCore {
scope = 2;
- model = QUOTE(PATHTOF(data\bandage.p3d));
- picture = QUOTE(PATHTOF(ui\items\fieldDressing_x_ca.paa));
+ model = QPATHTOF(data\bandage.p3d);
+ picture = QPATHTOF(ui\items\fieldDressing_x_ca.paa);
displayName = CSTRING(Bandage_Basic_Display);
descriptionShort = CSTRING(Bandage_Basic_Desc_Short);
descriptionUse = CSTRING(Bandage_Basic_Desc_Use);
@@ -34,8 +34,8 @@ class CfgWeapons {
class ACE_packingBandage: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Packing_Bandage_Display);
- picture = QUOTE(PATHTOF(ui\items\packingBandage_x_ca.paa));
- model = QUOTE(PATHTOF(data\packingbandage.p3d));
+ picture = QPATHTOF(ui\items\packingBandage_x_ca.paa);
+ model = QPATHTOF(data\packingbandage.p3d);
descriptionShort = CSTRING(Packing_Bandage_Desc_Short);
descriptionUse = CSTRING(Packing_Bandage_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -45,7 +45,7 @@ class CfgWeapons {
class ACE_elasticBandage: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Bandage_Elastic_Display);
- picture = QUOTE(PATHTOF(ui\items\elasticBandage_x_ca.paa));
+ picture = QPATHTOF(ui\items\elasticBandage_x_ca.paa);
model = "\A3\Structures_F_EPA\Items\Medical\Bandage_F.p3d";
descriptionShort = CSTRING(Bandage_Elastic_Desc_Short);
descriptionUse = CSTRING(Bandage_Elastic_Desc_Use);
@@ -56,8 +56,8 @@ class CfgWeapons {
class ACE_tourniquet: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Tourniquet_Display);
- picture = QUOTE(PATHTOF(ui\items\tourniquet_x_ca.paa));
- model = QUOTE(PATHTOF(data\tourniquet.p3d));
+ picture = QPATHTOF(ui\items\tourniquet_x_ca.paa);
+ model = QPATHTOF(data\tourniquet.p3d);
descriptionShort = CSTRING(Tourniquet_Desc_Short);
descriptionUse = CSTRING(Tourniquet_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -67,8 +67,8 @@ class CfgWeapons {
class ACE_morphine: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Morphine_Display);
- picture = QUOTE(PATHTOF(ui\items\morphine_x_ca.paa));
- model = QUOTE(PATHTOF(data\morphine.p3d));
+ picture = QPATHTOF(ui\items\morphine_x_ca.paa);
+ model = QPATHTOF(data\morphine.p3d);
descriptionShort = CSTRING(Morphine_Desc_Short);
descriptionUse = CSTRING(Morphine_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -78,8 +78,8 @@ class CfgWeapons {
class ACE_adenosine: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Adenosine_Display);
- picture = QUOTE(PATHTOF(ui\items\adenosine_x_ca.paa));
- model = QUOTE(PATHTOF(data\adenosine.p3d));
+ picture = QPATHTOF(ui\items\adenosine_x_ca.paa);
+ model = QPATHTOF(data\adenosine.p3d);
descriptionShort = CSTRING(adenosine_Desc_Short);
descriptionUse = CSTRING(adenosine_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -89,8 +89,8 @@ class CfgWeapons {
class ACE_atropine: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Atropine_Display);
- picture = QUOTE(PATHTOF(ui\items\atropine_x_ca.paa));
- model = QUOTE(PATHTOF(data\atropine.p3d));
+ picture = QPATHTOF(ui\items\atropine_x_ca.paa);
+ model = QPATHTOF(data\atropine.p3d);
descriptionShort = CSTRING(Atropine_Desc_Short);
descriptionUse = CSTRING(Atropine_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -100,8 +100,8 @@ class CfgWeapons {
class ACE_epinephrine: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Epinephrine_Display);
- picture = QUOTE(PATHTOF(ui\items\epinephrine_x_ca.paa));
- model = QUOTE(PATHTOF(data\epinephrine.p3d));
+ picture = QPATHTOF(ui\items\epinephrine_x_ca.paa);
+ model = QPATHTOF(data\epinephrine.p3d);
descriptionShort = CSTRING(Epinephrine_Desc_Short);
descriptionUse = CSTRING(Epinephrine_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -112,10 +112,10 @@ class CfgWeapons {
class ACE_plasmaIV: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Plasma_IV);
- model = QUOTE(PATHTOF(data\IVBag_1000ml.p3d));
+ model = QPATHTOF(data\IVBag_1000ml.p3d);
hiddenSelections[] = {"camo"};
- hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_plasma_1000ml_ca.paa)) };
- picture = QUOTE(PATHTOF(ui\items\plasmaIV_x_ca.paa));
+ hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_plasma_1000ml_ca.paa) };
+ picture = QPATHTOF(ui\items\plasmaIV_x_ca.paa);
descriptionShort = CSTRING(Plasma_IV_Desc_Short);
descriptionUse = CSTRING(Plasma_IV_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -124,27 +124,27 @@ class CfgWeapons {
};
class ACE_plasmaIV_500: ACE_plasmaIV {
displayName = CSTRING(Plasma_IV_500);
- model = QUOTE(PATHTOF(data\IVBag_500ml.p3d));
- hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_plasma_500ml_ca.paa)) };
+ model = QPATHTOF(data\IVBag_500ml.p3d);
+ hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_plasma_500ml_ca.paa) };
class ItemInfo: InventoryItem_Base_F {
mass = 5;
};
};
class ACE_plasmaIV_250: ACE_plasmaIV {
displayName = CSTRING(Plasma_IV_250);
- model = QUOTE(PATHTOF(data\IVBag_250ml.p3d));
- hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_plasma_250ml_ca.paa)) };
+ model = QPATHTOF(data\IVBag_250ml.p3d);
+ hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_plasma_250ml_ca.paa) };
class ItemInfo: InventoryItem_Base_F {
mass = 2.5;
};
};
class ACE_bloodIV: ACE_ItemCore {
scope = 2;
- model = QUOTE(PATHTOF(data\IVBag_1000ml.p3d));
+ model = QPATHTOF(data\IVBag_1000ml.p3d);
displayName = CSTRING(Blood_IV);
- picture = QUOTE(PATHTOF(ui\items\bloodIV_x_ca.paa));
+ picture = QPATHTOF(ui\items\bloodIV_x_ca.paa);
hiddenSelections[] = {"camo"};
- hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_blood_1000ml_ca.paa)) };
+ hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_blood_1000ml_ca.paa) };
descriptionShort = CSTRING(Blood_IV_Desc_Short);
descriptionUse = CSTRING(Blood_IV_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -153,16 +153,16 @@ class CfgWeapons {
};
class ACE_bloodIV_500: ACE_bloodIV {
displayName = CSTRING(Blood_IV_500);
- model = QUOTE(PATHTOF(data\IVBag_500ml.p3d));
- hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_blood_500ml_ca.paa)) };
+ model = QPATHTOF(data\IVBag_500ml.p3d);
+ hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_blood_500ml_ca.paa) };
class ItemInfo: InventoryItem_Base_F {
mass = 5;
};
};
class ACE_bloodIV_250: ACE_bloodIV {
displayName = CSTRING(Blood_IV_250);
- model = QUOTE(PATHTOF(data\IVBag_250ml.p3d));
- hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_blood_250ml_ca.paa)) };
+ model = QPATHTOF(data\IVBag_250ml.p3d);
+ hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_blood_250ml_ca.paa) };
class ItemInfo: InventoryItem_Base_F {
mass = 2.5;
};
@@ -170,10 +170,10 @@ class CfgWeapons {
class ACE_salineIV: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Saline_IV);
- model = QUOTE(PATHTOF(data\IVBag_1000ml.p3d));
+ model = QPATHTOF(data\IVBag_1000ml.p3d);
hiddenSelections[] = {"camo"};
- hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_saline_1000ml_ca.paa)) };
- picture = QUOTE(PATHTOF(ui\items\salineIV_x_ca.paa));
+ hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_saline_1000ml_ca.paa) };
+ picture = QPATHTOF(ui\items\salineIV_x_ca.paa);
descriptionShort = CSTRING(Saline_IV_Desc_Short);
descriptionUse = CSTRING(Saline_IV_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -182,16 +182,16 @@ class CfgWeapons {
};
class ACE_salineIV_500: ACE_salineIV {
displayName = CSTRING(Saline_IV_500);
- model = QUOTE(PATHTOF(data\IVBag_500ml.p3d));
- hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_saline_500ml_ca.paa)) };
+ model = QPATHTOF(data\IVBag_500ml.p3d);
+ hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_saline_500ml_ca.paa) };
class ItemInfo: InventoryItem_Base_F {
mass = 5;
};
};
class ACE_salineIV_250: ACE_salineIV {
displayName = CSTRING(Saline_IV_250);
- model = QUOTE(PATHTOF(data\IVBag_250ml.p3d));
- hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_saline_250ml_ca.paa)) };
+ model = QPATHTOF(data\IVBag_250ml.p3d);
+ hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_saline_250ml_ca.paa) };
class ItemInfo: InventoryItem_Base_F {
mass = 2.5;
};
@@ -199,8 +199,8 @@ class CfgWeapons {
class ACE_quikclot: ACE_ItemCore {
scope = 2;
displayName = CSTRING(QuikClot_Display);
- model = QUOTE(PATHTOF(data\QuikClot.p3d));
- picture = QUOTE(PATHTOF(ui\items\quickclot_x_ca.paa));
+ model = QPATHTOF(data\QuikClot.p3d);
+ picture = QPATHTOF(ui\items\quickclot_x_ca.paa);
descriptionShort = CSTRING(QuikClot_Desc_Short);
descriptionUse = CSTRING(QuikClot_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -210,7 +210,7 @@ class CfgWeapons {
class ACE_personalAidKit: ACE_ItemCore {
scope = 2;
displayName = CSTRING(Aid_Kit_Display);
- picture = QUOTE(PATHTOF(ui\items\personal_aid_kit_x_ca.paa));
+ picture = QPATHTOF(ui\items\personal_aid_kit_x_ca.paa);
descriptionShort = CSTRING(Aid_Kit_Desc_Short);
descriptionUse = CSTRING(Aid_Kit_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -220,8 +220,8 @@ class CfgWeapons {
class ACE_surgicalKit: ACE_ItemCore {
scope=2;
displayName= CSTRING(SurgicalKit_Display);
- model = QUOTE(PATHTOF(data\surgical_kit.p3d));
- picture = QUOTE(PATHTOF(ui\items\surgicalKit_x_ca.paa));
+ model = QPATHTOF(data\surgical_kit.p3d);
+ picture = QPATHTOF(ui\items\surgicalKit_x_ca.paa);
descriptionShort = CSTRING(SurgicalKit_Desc_Short);
descriptionUse = CSTRING(SurgicalKit_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
@@ -231,12 +231,12 @@ class CfgWeapons {
class ACE_bodyBag: ACE_ItemCore {
scope=2;
displayName= CSTRING(Bodybag_Display);
- model = QUOTE(PATHTOF(data\bodybagItem.p3d));
- picture = QUOTE(PATHTOF(ui\items\bodybag_x_ca.paa));
+ model = QPATHTOF(data\bodybagItem.p3d);
+ picture = QPATHTOF(ui\items\bodybag_x_ca.paa);
descriptionShort = CSTRING(Bodybag_Desc_Short);
descriptionUse = CSTRING(Bodybag_Desc_Use);
class ItemInfo: InventoryItem_Base_F {
- mass = 20;
+ mass = 7;
};
};
};
diff --git a/addons/medical/XEH_PREP.hpp b/addons/medical/XEH_PREP.hpp
index 4184f096f7..d7322082c6 100644
--- a/addons/medical/XEH_PREP.hpp
+++ b/addons/medical/XEH_PREP.hpp
@@ -16,7 +16,9 @@ PREP(addToLog);
PREP(addToTriageCard);
PREP(addUnconsciousCondition);
PREP(addUnloadPatientActions);
+PREP(addVitalLoop);
PREP(adjustPainLevel);
+PREP(bodyCleanupLoop);
PREP(canAccessMedicalEquipment);
PREP(canTreat);
PREP(canTreatCached);
@@ -56,12 +58,14 @@ PREP(isMedic);
PREP(isMedicalVehicle);
PREP(isInStableCondition);
PREP(itemCheck);
+PREP(medicationEffectLoop);
PREP(modifyMedicalAction);
PREP(onMedicationUsage);
PREP(onWoundUpdateRequest);
PREP(onPropagateWound);
PREP(parseConfigForInjuries);
PREP(playInjuredSound);
+PREP(reviveStateLoop);
PREP(selectionNameToNumber);
PREP(serverRemoveBody);
PREP(setCardiacArrest);
@@ -96,6 +100,7 @@ PREP(treatmentTourniquet);
PREP(treatmentTourniquetLocal);
PREP(useItem);
PREP(useItems);
+PREP(vitalLoop);
PREP(displayPatientInformation);
PREP(displayTriageCard);
PREP(dropDownTriageCard);
@@ -113,3 +118,4 @@ PREP(unconsciousPFH);
// Networked litter
PREP(createLitter);
PREP(handleCreateLitter);
+PREP(litterCleanupLoop);
diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf
index 5d29d22cec..e26815ec7c 100644
--- a/addons/medical/XEH_postInit.sqf
+++ b/addons/medical/XEH_postInit.sqf
@@ -37,19 +37,15 @@ if (isServer) then {["placedInBodyBag", FUNC(serverRemoveBody)] call EFUNC(commo
params ["_unit", "_status"];
if (local _unit) then {
if (_status) then {
- _unit setVariable ["tf_globalVolume", 0.4];
_unit setVariable ["tf_voiceVolume", 0, true];
_unit setVariable ["tf_unable_to_use_radio", true, true];
_unit setVariable ["acre_sys_core_isDisabled", true, true];
- if (!isNil "acre_api_fnc_setGlobalVolume") then { [0.4^0.33] call acre_api_fnc_setGlobalVolume; };
} else {
- _unit setVariable ["tf_globalVolume", 1];
_unit setVariable ["tf_voiceVolume", 1, true];
_unit setVariable ["tf_unable_to_use_radio", false, true];
_unit setVariable ["acre_sys_core_isDisabled", false, true];
- if (!isNil "acre_api_fnc_setGlobalVolume") then { [1] call acre_api_fnc_setGlobalVolume; };
};
};
}] call EFUNC(common,addEventHandler);
@@ -108,7 +104,7 @@ GVAR(effectPainCC) = [
// Initialize Other Variables
GVAR(effectBlind) = false;
-GVAR(effectTimeBlood) = ACE_time;
+GVAR(effectTimeBlood) = CBA_missionTime;
// MAIN EFFECTS LOOP
[{
@@ -143,11 +139,11 @@ GVAR(effectTimeBlood) = ACE_time;
[{
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 EFUNC(common,waitAndExecute);
+ }, [_strength], 0.01, 0] call CBA_fnc_waitAndExecute;
[{
GVAR(effectBlindingCC) ppEffectEnable false;
- }, [], (_strength * 2) + 0.5, 0] call EFUNC(common,waitAndExecute);
+ }, [], (_strength * 2) + 0.5, 0] call CBA_fnc_waitAndExecute;
GVAR(effectBlind) = false;
};
@@ -155,8 +151,8 @@ GVAR(effectTimeBlood) = ACE_time;
_bleeding = [ACE_player] call FUNC(getBloodLoss);
// Bleeding Indicator
- if (_bleeding > 0 and GVAR(effectTimeBlood) + 3.5 < ACE_time) then {
- GVAR(effectTimeBlood) = ACE_time;
+ if (_bleeding > 0 and GVAR(effectTimeBlood) + 3.5 < CBA_missionTime) then {
+ GVAR(effectTimeBlood) = CBA_missionTime;
[600 * _bleeding] call BIS_fnc_bloodEffect;
};
@@ -172,8 +168,8 @@ GVAR(effectTimeBlood) = ACE_time;
}, 0.5, []] call CBA_fnc_addPerFrameHandler;
-GVAR(lastHeartBeat) = ACE_time;
-GVAR(lastHeartBeatSound) = ACE_time;
+GVAR(lastHeartBeat) = CBA_missionTime;
+GVAR(lastHeartBeatSound) = CBA_missionTime;
// HEARTRATE BASED EFFECTS
[{
@@ -193,8 +189,8 @@ GVAR(lastHeartBeatSound) = ACE_time;
GVAR(effectPainCC) ppEffectEnable false;
};
} else {
- if ((ACE_time > GVAR(lastHeartBeat) + _interval)) then {
- GVAR(lastHeartBeat) = ACE_time;
+ if ((CBA_missionTime > GVAR(lastHeartBeat) + _interval)) then {
+ GVAR(lastHeartBeat) = CBA_missionTime;
// Pain effect, no pain effect in zeus camera
if (isNull curatorCamera) then {
@@ -210,15 +206,15 @@ GVAR(lastHeartBeatSound) = ACE_time;
[{
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 EFUNC(common,waitAndExecute);
+ }, [_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 EFUNC(common,waitAndExecute);
+ }, [_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 EFUNC(common,waitAndExecute);
+ }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call CBA_fnc_waitAndExecute;
} else {
GVAR(effectPainCA) ppEffectEnable false;
};
@@ -232,15 +228,15 @@ GVAR(lastHeartBeatSound) = ACE_time;
[{
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 EFUNC(common,waitAndExecute);
+ }, [_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 EFUNC(common,waitAndExecute);
+ }, [_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 EFUNC(common,waitAndExecute);
+ }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call CBA_fnc_waitAndExecute;
} else {
GVAR(effectPainCC) ppEffectEnable false;
};
@@ -251,8 +247,8 @@ GVAR(lastHeartBeatSound) = ACE_time;
if (GVAR(level) >= 2 && {_heartRate > 0}) then {
_minTime = 60 / _heartRate;
- if (ACE_time - GVAR(lastHeartBeatSound) > _minTime) then {
- GVAR(lastHeartBeatSound) = ACE_time;
+ if (CBA_missionTime - GVAR(lastHeartBeatSound) > _minTime) then {
+ GVAR(lastHeartBeatSound) = CBA_missionTime;
// Heart rate sound effect
if (_heartRate < 60) then {
_sound = GVAR(heartBeatSounds_Normal) select (random((count GVAR(heartBeatSounds_Normal)) -1));
@@ -298,9 +294,7 @@ GVAR(lastHeartBeatSound) = ACE_time;
["isNotUnconscious", {!((_this select 0) getVariable ["ACE_isUnconscious", false])}] call EFUNC(common,addCanInteractWithCondition);
// Item Event Handler
-["playerInventoryChanged", {
- [ACE_player] call FUNC(itemCheck);
-}] call EFUNC(common,addEventHandler);
+["playerInventoryChanged", FUNC(itemCheck)] call EFUNC(common,addEventHandler);
if (hasInterface) then {
["PlayerJip", {
diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf
index 85232498bd..a5dc596ba2 100644
--- a/addons/medical/XEH_preInit.sqf
+++ b/addons/medical/XEH_preInit.sqf
@@ -35,7 +35,7 @@ private _fixStatic = {
1 preloadObject (_this select 0);
}, {
TRACE_1("preload done",_this);
- }, [_vehType]] call EFUNC(common,waitUntilAndExecute);
+ }, [_vehType]] call CBA_fnc_waitUntilAndExecute;
};
};
["StaticWeapon", "init", _fixStatic] call CBA_fnc_addClassEventHandler;
@@ -47,7 +47,7 @@ addMissionEventHandler ["Loaded",{
1 preloadObject (_this select 0);
}, {
TRACE_1("preload done",_this);
- }, [_x]] call EFUNC(common,waitUntilAndExecute);
+ }, [_x]] call CBA_fnc_waitUntilAndExecute;
} forEach GVAR(fixedStatics);
}];
diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp
index d40fb9e6a6..911c9bd125 100644
--- a/addons/medical/config.cpp
+++ b/addons/medical/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
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"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_interaction", "ace_apl"};
- author[] = {"Glowbal", "KoffeinFlummi"};
- authorUrl = "";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Glowbal", "KoffeinFlummi"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/medical/functions/fnc_addDamageToUnit.sqf b/addons/medical/functions/fnc_addDamageToUnit.sqf
index a11cc4689f..1969e3ff74 100644
--- a/addons/medical/functions/fnc_addDamageToUnit.sqf
+++ b/addons/medical/functions/fnc_addDamageToUnit.sqf
@@ -54,7 +54,7 @@ private _debugCode = {
ACE_LOGERROR_6("addDamageToUnit - FAILED - [unit:%1, partNo:%2, addDmg:%3] results:[alive:%4 old:%5 new:%6]", _unit, _partNumber, _damageToAdd, alive _unit, _startDmg, _endDmg);
};
};
-[{diag_frameno > (_this select 0)}, _debugCode, [_checkAtFrame, _unit, _startDmg, _damageToAdd, _partNumber]] call EFUNC(common,waitUntilAndExecute);
+[{diag_frameno > (_this select 0)}, _debugCode, [_checkAtFrame, _unit, _startDmg, _damageToAdd, _partNumber]] call CBA_fnc_waitUntilAndExecute;
#endif
private _return = [_unit, _selection, (_currentDamage + _damageToAdd), _unit, _typeOfDamage, _hitpointIndex] call FUNC(handleDamage);
diff --git a/addons/medical/functions/fnc_addToInjuredCollection.sqf b/addons/medical/functions/fnc_addToInjuredCollection.sqf
index aa545f491e..77d2378d0d 100644
--- a/addons/medical/functions/fnc_addToInjuredCollection.sqf
+++ b/addons/medical/functions/fnc_addToInjuredCollection.sqf
@@ -8,52 +8,10 @@
* ReturnValue:
* None
*
- * Public: Yes
+ * Deprecated
*/
-
#include "script_component.hpp"
-params ["_unit", ["_force", false]];
+ACE_DEPRECATED("ace_medical_fnc_addToInjuredCollection","3.7.0","ace_medical_fnc_addVitalLoop");
-if ([_unit] call FUNC(hasMedicalEnabled) || _force) then {
-
- if !(local _unit) exitWith {
- ["addToInjuredCollection", _unit, [_unit, _force]] call EFUNC(common,targetEvent);
- };
-
- if ((_unit getVariable[QGVAR(addedToUnitLoop),false] || !alive _unit) && !_force) exitWith{};
- _unit setVariable [QGVAR(addedToUnitLoop), true, true];
-
- [{
- params ["_args", "_idPFH"];
- _args params ["_unit", "_interval"];
- _interval = ACE_time - _interval;
- (_this select 0) set [1, ACE_time];
-
- if (!alive _unit || !local _unit) then {
- [_idPFH] call CBA_fnc_removePerFrameHandler;
- if (!local _unit) then {
- if (GVAR(level) >= 2) then {
- _unit setVariable [QGVAR(heartRate), _unit getVariable [QGVAR(heartRate), 80], true];
- _unit setVariable [QGVAR(bloodPressure), _unit getVariable [QGVAR(bloodPressure), [80, 120]], true];
- };
- _unit setVariable [QGVAR(bloodVolume), _unit getVariable [QGVAR(bloodVolume), 100], true];
- };
- } else {
- [_unit, _interval] call FUNC(handleUnitVitals);
-
- private "_pain";
- _pain = _unit getVariable [QGVAR(pain), 0];
- if (_pain > (_unit getVariable [QGVAR(painSuppress), 0])) then {
- // This introduces wierd unconscious behaviour for basic medical and possibly also advanced.
- // TODO This is disabled as it's considered non critical code.
- // We will need to decide if we want unconscious triggered on high pain levels or if we can get rid of this entirely.
- /*if (_pain > 0.7 && {random(1) > 0.6}) then {
- [_unit] call FUNC(setUnconscious);
- };*/
-
- [_unit, _pain] call FUNC(playInjuredSound);
- };
- };
- }, 1, [_unit, ACE_time]] call CBA_fnc_addPerFrameHandler;
-};
+_this call FUNC(addVitalLoop);
diff --git a/addons/medical/functions/fnc_addToTriageCard.sqf b/addons/medical/functions/fnc_addToTriageCard.sqf
index ca54d8cd27..4fce53e0ab 100644
--- a/addons/medical/functions/fnc_addToTriageCard.sqf
+++ b/addons/medical/functions/fnc_addToTriageCard.sqf
@@ -29,7 +29,7 @@ _amount = 1;
private "_info";
_info = _log select _forEachIndex;
_info set [1,(_info select 1) + 1];
- _info set [2, ACE_gameTime];
+ _info set [2, CBA_missionTime];
_log set [_forEachIndex, _info];
_amount = (_info select 1);
@@ -38,7 +38,7 @@ _amount = 1;
} forEach _log;
if (!_inList) then {
- _log pushBack [_newItem, 1, ACE_gameTime];
+ _log pushBack [_newItem, 1, CBA_missionTime];
};
_unit setVariable [QGVAR(triageCard), _log, true];
["Medical_onItemAddedToTriageCard", [_unit, _newItem, _amount]] call EFUNC(common,localEvent);
diff --git a/addons/medical/functions/fnc_addVitalLoop.sqf b/addons/medical/functions/fnc_addVitalLoop.sqf
new file mode 100644
index 0000000000..e0730322af
--- /dev/null
+++ b/addons/medical/functions/fnc_addVitalLoop.sqf
@@ -0,0 +1,30 @@
+/*
+ * Author: Glowbal
+ * Enabled the vitals loop for a unit.
+ *
+ * Arguments:
+ * 0: The Unit
+ *
+ * ReturnValue:
+ * None
+ *
+ * Public: Yes
+ */
+
+#include "script_component.hpp"
+
+params ["_unit", ["_force", false]];
+
+if !([_unit] call FUNC(hasMedicalEnabled) || _force) exitWith {};
+
+if !(local _unit) exitWith {
+ ["addVitalLoop", _unit, [_unit, _force]] call EFUNC(common,targetEvent);
+};
+
+// Quit if the unit already has a vital loop, or is dead, unless it's forced
+if ((_unit getVariable[QGVAR(addedToUnitLoop),false] || !alive _unit) && !_force) exitWith{};
+
+// Schedule the loop to be executed again 1 sec later
+// @todo: should the loop be started righ away instead?
+_unit setVariable [QGVAR(addedToUnitLoop), true, true];
+[DFUNC(vitalLoop), [_unit, CBA_missionTime], 1] call CBA_fnc_waitAndExecute;
diff --git a/addons/medical/functions/fnc_adjustPainLevel.sqf b/addons/medical/functions/fnc_adjustPainLevel.sqf
index df82e06823..7b97cdc48f 100644
--- a/addons/medical/functions/fnc_adjustPainLevel.sqf
+++ b/addons/medical/functions/fnc_adjustPainLevel.sqf
@@ -35,6 +35,6 @@ _pain = _pain max 0;
_unit setVariable [QGVAR(pain), _pain];
//Start up the vital watching (if not already running)
-[_unit] call FUNC(addToInjuredCollection);
+[_unit] call FUNC(addVitalLoop);
_pain
diff --git a/addons/medical/functions/fnc_bodyCleanupLoop.sqf b/addons/medical/functions/fnc_bodyCleanupLoop.sqf
new file mode 100644
index 0000000000..af17ffcd34
--- /dev/null
+++ b/addons/medical/functions/fnc_bodyCleanupLoop.sqf
@@ -0,0 +1,30 @@
+/*
+ * Author: Glowbal, esteldunedain
+ * Loop that cleans up litter
+ *
+ * Arguments:
+ * None
+ *
+ * ReturnValue:
+ * None
+ *
+ * Public: No
+ */
+
+#include "script_component.hpp"
+
+{
+ TRACE_2("body",_x,isPlayer _x);
+ if ((!isNull _x) && {!isPlayer _x}) then {deleteVehicle _x};
+} forEach GVAR(bodiesToDelete);
+
+// deleteVehicle doesn't have instant results so it won't usualy be filtered until next run
+GVAR(bodiesToDelete) = GVAR(bodiesToDelete) - [objNull];
+
+// If no more bodies remain, exit the loop
+if (GVAR(bodiesToDelete) isEqualTo []) exitWith {
+ TRACE_1("array emptied - rem PFEH",GVAR(bodiesToDelete));
+};
+
+// Schedule the loop to be executed again 20 sec later
+[DFUNC(bodyCleanupLoop), [], 20] call CBA_fnc_waitAndExecute;
diff --git a/addons/medical/functions/fnc_getCardiacOutput.sqf b/addons/medical/functions/fnc_getCardiacOutput.sqf
index d07319e8b5..74da98012b 100644
--- a/addons/medical/functions/fnc_getCardiacOutput.sqf
+++ b/addons/medical/functions/fnc_getCardiacOutput.sqf
@@ -14,7 +14,7 @@
#include "script_component.hpp"
/*
- Cardiac output (Q or or CO ) is the volume of blood being pumped by the heart, in particular by a left or right ventricle in the ACE_time interval of one minute. CO may be measured in many ways, for example dm3/min (1 dm3 equals 1 litre).
+ Cardiac output (Q or or CO ) is the volume of blood being pumped by the heart, in particular by a left or right ventricle in the CBA_missionTime interval of one minute. CO may be measured in many ways, for example dm3/min (1 dm3 equals 1 litre).
Source: http://en.wikipedia.org/wiki/Cardiac_output
*/
diff --git a/addons/medical/functions/fnc_handleBandageOpening.sqf b/addons/medical/functions/fnc_handleBandageOpening.sqf
index 84ffa01258..49c5ab35f3 100644
--- a/addons/medical/functions/fnc_handleBandageOpening.sqf
+++ b/addons/medical/functions/fnc_handleBandageOpening.sqf
@@ -117,5 +117,5 @@ if (random(1) <= _reopeningChance) then {
};
// Otherwise something went wrong, we we don't reopen them..
//};
- }, [_target, _impact, _part, _injuryIndex, +_injury], _delay] call EFUNC(common,waitAndExecute);
+ }, [_target, _impact, _part, _injuryIndex, +_injury], _delay] call CBA_fnc_waitAndExecute;
};
diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf
index c87d51a7e1..816202203a 100644
--- a/addons/medical/functions/fnc_handleCreateLitter.sqf
+++ b/addons/medical/functions/fnc_handleCreateLitter.sqf
@@ -29,7 +29,7 @@ _litterObject = _litterClass createVehicleLocal _position;
_litterObject setDir _direction;
_litterObject setPosATL _position;
// Move the litter next frame to get rid of HORRIBLE spacing, fixes #1112
-[{ params ["_object", "_pos"]; _object setPosATL _pos; }, [_litterObject, _position]] call EFUNC(common,execNextFrame);
+[{ params ["_object", "_pos"]; _object setPosATL _pos; }, [_litterObject, _position]] call CBA_fnc_execNextFrame;
_maxLitterCount = getArray (configFile >> "ACE_Settings" >> QGVAR(litterSimulationDetail) >> "_values") select GVAR(litterSimulationDetail);
if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then {
@@ -41,25 +41,10 @@ if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then {
} forEach (_oldLitter select 1);
};
-GVAR(allCreatedLitter) pushBack [ACE_time, [_litterObject]];
+GVAR(allCreatedLitter) pushBack [CBA_missionTime, [_litterObject]];
if(!GVAR(litterPFHRunning) && {GVAR(litterCleanUpDelay) > 0}) then {
+ // Start the litter cleanup loop
GVAR(litterPFHRunning) = true;
- [{
- {
- _x params ["_time", "_objects"];
- if (ACE_time - _time >= GVAR(litterCleanUpDelay)) then {
- {
- deleteVehicle _x;
- } forEach _objects;
- GVAR(allCreatedLitter) set[_forEachIndex, objNull];
- };
- } forEach GVAR(allCreatedLitter);
- GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
-
- if ( (count GVAR(allCreatedLitter)) == 0) exitWith {
- [(_this select 1)] call CBA_fnc_removePerFrameHandler;
- GVAR(litterPFHRunning) = false;
- };
- }, 30, []] call CBA_fnc_addPerFrameHandler;
+ call FUNC(litterCleanupLoop);
};
diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf
index cd0b4b1b27..4cf237e949 100644
--- a/addons/medical/functions/fnc_handleDamage.sqf
+++ b/addons/medical/functions/fnc_handleDamage.sqf
@@ -102,8 +102,8 @@ if ((_minLethalDamage <= _newDamage) && {[_unit, [_effectiveSelectionName] call
_damageReturn = _damageReturn min 0.89;
};
-
-[_unit] call FUNC(addToInjuredCollection);
+// Start the loop that tracks the unit vitals
+[_unit] call FUNC(addVitalLoop);
if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitWith {
private _delayedUnconsicous = false;
@@ -120,11 +120,11 @@ if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitW
if (_delayedUnconsicous) then {
[{
[_this select 0, true] call FUNC(setUnconscious);
- }, [_unit], 0.7] call EFUNC(common,waitAndExecute);
+ }, [_unit], 0.7] call CBA_fnc_waitAndExecute;
} else {
[{
[_this select 0, true] call FUNC(setUnconscious);
- }, [_unit]] call EFUNC(common,execNextFrame);
+ }, [_unit]] call CBA_fnc_execNextFrame;
};
0.89;
};
diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical/functions/fnc_handleDamage_caching.sqf
index cc969ce961..c1cf726399 100644
--- a/addons/medical/functions/fnc_handleDamage_caching.sqf
+++ b/addons/medical/functions/fnc_handleDamage_caching.sqf
@@ -58,6 +58,7 @@ if (_unit getVariable [QGVAR(isFalling), false]) then {
} else {
_newDamage = _newDamage * 0.5;
};
+ if (_newDamage < 0.075) then {_newDamage = 0;}; //Filter minor falling damage to non-leg hitpoints
} else {
if (_selectionName == "") then {
_selectionName = selectRandom ["leg_l", "leg_r"];
diff --git a/addons/medical/functions/fnc_handleLocal.sqf b/addons/medical/functions/fnc_handleLocal.sqf
index 91689f311f..42e8a9b7b2 100644
--- a/addons/medical/functions/fnc_handleLocal.sqf
+++ b/addons/medical/functions/fnc_handleLocal.sqf
@@ -17,14 +17,15 @@
params ["_unit", "_local"];
if (_local) then {
+ // If the unit had a loop tracking its vitals, restart it locally
if (_unit getVariable[QGVAR(addedToUnitLoop),false]) then {
- [_unit, true] call FUNC(addToInjuredCollection);
+ [_unit, true] call FUNC(addVitalLoop);
};
if ((_unit getVariable ["ACE_isUnconscious",false]) && {count (_unit getVariable [QGVAR(unconsciousArguments), []]) >= 6}) then {
private "_arguments";
_arguments = (_unit getVariable [QGVAR(unconsciousArguments), []]);
- _arguments set [2, ACE_time];
+ _arguments set [2, CBA_missionTime];
[DFUNC(unconsciousPFH), 0.1, _arguments ] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf
index 6159351cc9..103561da0e 100644
--- a/addons/medical/functions/fnc_handleUnitVitals.sqf
+++ b/addons/medical/functions/fnc_handleUnitVitals.sqf
@@ -19,9 +19,9 @@ TRACE_3("ACE_DEBUG",_unit,_interval,_unit);
if (_interval == 0) exitWith {};
_lastTimeValuesSynced = _unit getVariable [QGVAR(lastMomentValuesSynced), 0];
-_syncValues = (ACE_time - _lastTimeValuesSynced >= (10 + floor(random(10))) && GVAR(keepLocalSettingsSynced));
+_syncValues = (CBA_missionTime - _lastTimeValuesSynced >= (10 + floor(random(10))) && GVAR(keepLocalSettingsSynced));
if (_syncValues) then {
- _unit setVariable [QGVAR(lastMomentValuesSynced), ACE_time];
+ _unit setVariable [QGVAR(lastMomentValuesSynced), CBA_missionTime];
};
_bloodVolume = (_unit getVariable [QGVAR(bloodVolume), 100]) + ([_unit] call FUNC(getBloodVolumeChange));
@@ -110,6 +110,11 @@ if (GVAR(level) >= 2) then {
};
};
+ // Handle pain due tourniquets, that have been applied more than 120 s ago
+ private _oldTourniquets = (_unit getVariable [QGVAR(tourniquets), []]) select {_x > 0 && {CBA_missionTime - _x > 120}};
+ // Increase pain at a rate of 0.001 units/s per old tourniquet
+ _painStatus = _painStatus + (count _oldTourniquets) * 0.001 * _interval;
+
// Set the vitals
_heartRate = (_unit getVariable [QGVAR(heartRate), 80]) + (([_unit] call FUNC(getHeartRateChange)) * _interval);
_unit setVariable [QGVAR(heartRate), _heartRate max 0, _syncValues];
@@ -117,10 +122,11 @@ if (GVAR(level) >= 2) then {
_bloodPressure = [_unit] call FUNC(getBloodPressure);
_unit setVariable [QGVAR(bloodPressure), _bloodPressure, _syncValues];
- if (_painStatus > 0 && {_painStatus < 10}) then {
- _painReduce = if (_painStatus > 5) then {0.002} else {0.001};
- _unit setVariable [QGVAR(pain), (_painStatus - _painReduce * _interval) max 0, _syncValues];
- };
+ _painReduce = if (_painStatus > 5) then {0.002} else {0.001};
+
+ // @todo: replace this and the rest of the setVariable with EFUNC(common,setApproximateVariablePublic)
+ _unit setVariable [QGVAR(pain), (_painStatus - _painReduce * _interval) max 0, _syncValues];
+
TRACE_8("ACE_DEBUG_ADVANCED_VITALS",_painStatus,_painReduce,_heartRate,_bloodVolume,_bloodPressure,_interval,_syncValues,_unit);
// TODO Disabled until implemented fully
// Handle airway
diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf
index 868b07fbf4..504135c204 100644
--- a/addons/medical/functions/fnc_init.sqf
+++ b/addons/medical/functions/fnc_init.sqf
@@ -86,4 +86,4 @@ _unit setVariable [QGVAR(allLogs), [], true];
// items
[{
_this call FUNC(itemCheck);
-}, [_unit], 0.5, 0.1] call EFUNC(common,waitAndExecute);
+}, [_unit], 0.5, 0.1] call CBA_fnc_waitAndExecute;
diff --git a/addons/medical/functions/fnc_isInMedicalFacility.sqf b/addons/medical/functions/fnc_isInMedicalFacility.sqf
index f934978d2b..313ee8eca4 100644
--- a/addons/medical/functions/fnc_isInMedicalFacility.sqf
+++ b/addons/medical/functions/fnc_isInMedicalFacility.sqf
@@ -19,7 +19,7 @@ params ["_unit"];
//Cache the results as this function could be called rapidly
(_unit getVariable [QGVAR(cacheInFacility), [-9, false]]) params ["_expireTime", "_lastResult"];
-if (ACE_time < _expireTime) exitWith {_lastResult};
+if (CBA_missionTime < _expireTime) exitWith {_lastResult};
private _eyePos = eyePos _unit;
private _isInBuilding = false;
@@ -58,6 +58,6 @@ if (!_isInBuilding) then {
};
//Save the results (with a 1 second expiry)
-_unit setVariable [QGVAR(cacheInFacility), [ACE_time + 1, _isInBuilding]];
+_unit setVariable [QGVAR(cacheInFacility), [CBA_missionTime + 1, _isInBuilding]];
_isInBuilding;
diff --git a/addons/medical/functions/fnc_litterCleanupLoop.sqf b/addons/medical/functions/fnc_litterCleanupLoop.sqf
new file mode 100644
index 0000000000..00e301be6e
--- /dev/null
+++ b/addons/medical/functions/fnc_litterCleanupLoop.sqf
@@ -0,0 +1,33 @@
+/*
+ * Author: Glowbal, esteldunedain
+ * Loop that cleans up litter
+ *
+ * Arguments:
+ * None
+ *
+ * ReturnValue:
+ * None
+ *
+ * Public: No
+ */
+
+#include "script_component.hpp"
+
+{
+ _x params ["_time", "_objects"];
+ if (CBA_missionTime - _time >= GVAR(litterCleanUpDelay)) then {
+ {
+ deleteVehicle _x;
+ } forEach _objects;
+ GVAR(allCreatedLitter) set[_forEachIndex, objNull];
+ };
+} forEach GVAR(allCreatedLitter);
+GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
+
+// If no more litter remaining, exit the loop
+if ( (count GVAR(allCreatedLitter)) == 0) exitWith {
+ GVAR(litterPFHRunning) = false;
+};
+
+// Schedule the loop to be executed again 30 sec later
+[DFUNC(litterCleanupLoop), [], 30] call CBA_fnc_waitAndExecute;
diff --git a/addons/medical/functions/fnc_medicationEffectLoop.sqf b/addons/medical/functions/fnc_medicationEffectLoop.sqf
new file mode 100644
index 0000000000..00ef00a82c
--- /dev/null
+++ b/addons/medical/functions/fnc_medicationEffectLoop.sqf
@@ -0,0 +1,42 @@
+/*
+ * Author: Glowbal, esteldunedain
+ * Medication effect loop for an injection.
+ *
+ * Arguments:
+ * 0: Unit
+ * 1: Name of the Variable that is affected
+ * 2: Proportion of the effect applied
+ * 3: Rate at which the effect is applied
+ * 4: Viscosity adjustment rate
+ * 5: Pain reduction rate
+ *
+ * ReturnValue:
+ * None
+ *
+ * Public: No
+ */
+
+#include "script_component.hpp"
+
+params ["_unit", "_variableName", "_amountDecreased","_decreaseRate", "_viscosityAdjustmentRate", "_painReduceRate"];
+
+// If the unit died the loop is finished
+if (!alive _unit) exitWith {};
+
+// If locality changed finish the local loop
+if (!local _unit) exitWith {};
+
+// Apply medicinal effect
+private _usedMeds = (_unit getVariable [_variableName, 0]) - _decreaseRate;
+_unit setVariable [_variableName, _usedMeds];
+
+// Restore the viscosity while the medication is leaving the system
+_unit setVariable [QGVAR(peripheralResistance), ((_unit getVariable [QGVAR(peripheralResistance), 100]) - _viscosityAdjustmentRate) max 0];
+_unit setVariable [QGVAR(painSuppress), ((_unit getVariable [QGVAR(painSuppress), 0]) - _painReduceRate) max 0];
+
+// Exit if the medication has finished it's effect
+_amountDecreased = _amountDecreased + _decreaseRate;
+if (_amountDecreased >= 1 || (_usedMeds <= 0) || !alive _unit) exitWith {};
+
+// Schedule the loop to be executed again 1 sec later
+[DFUNC(medicationEffectLoop), [_unit, _variableName, _amountDecreased, _decreaseRate, _viscosityAdjustmentRate, _painReduceRate], 1] call CBA_fnc_waitAndExecute;
diff --git a/addons/medical/functions/fnc_modifyMedicalAction.sqf b/addons/medical/functions/fnc_modifyMedicalAction.sqf
index 02e5985297..f36a87855b 100644
--- a/addons/medical/functions/fnc_modifyMedicalAction.sqf
+++ b/addons/medical/functions/fnc_modifyMedicalAction.sqf
@@ -24,10 +24,10 @@ if (GVAR(level) < 2 || {!([_target] call FUNC(hasMedicalEnabled))}) exitWith {
_pointDamage = (_target getVariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]) select _selectionN;
if (_pointDamage >= 0.8) exitWith {
- _actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossRed.paa))];
+ _actionData set [2, QPATHTOF(UI\icons\medical_crossRed.paa)];
};
if (_pointDamage > 0) exitWith {
- _actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossYellow.paa))];
+ _actionData set [2, QPATHTOF(UI\icons\medical_crossYellow.paa)];
};
};
@@ -36,6 +36,6 @@ _openWounds = _target getVariable [QGVAR(openWounds), []];
{
_x params ["", "", "_selectionX", "_amountOf", "_x4"];
if (_amountOf > 0 && {(_selectionN == _selectionX)} && {_x4 > 0}) exitWith {
- _actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossRed.paa))];
+ _actionData set [2, QPATHTOF(UI\icons\medical_crossRed.paa)];
};
} forEach _openWounds;
diff --git a/addons/medical/functions/fnc_onMedicationUsage.sqf b/addons/medical/functions/fnc_onMedicationUsage.sqf
index fc7e8daa2d..28b1d4dd0b 100644
--- a/addons/medical/functions/fnc_onMedicationUsage.sqf
+++ b/addons/medical/functions/fnc_onMedicationUsage.sqf
@@ -77,22 +77,5 @@ if (_hasOverDosed > 0 && GVAR(enableOverdosing)) then {
_decreaseAmount = 1 / _timeInSystem;
_viscosityAdjustment = _viscosityChange / _timeInSystem;
-[{
- params ["_args", "_idPFH"];
- _args params ["_target", "_timeInSystem", "_variable", "_amountDecreased","_decreaseAmount", "_viscosityAdjustment", "_painReduce"];
- private "_usedMeds";
- _usedMeds = _target getVariable [_variable, 0];
- _usedMeds = _usedMeds - _decreaseAmount;
- _target setVariable [_variable, _usedMeds];
-
- _amountDecreased = _amountDecreased + _decreaseAmount;
-
- // Restoring the viscosity while the medication is leaving the system
- _target setVariable [QGVAR(peripheralResistance), ((_target getVariable [QGVAR(peripheralResistance), 100]) - _viscosityAdjustment) max 0];
- _target setVariable [QGVAR(painSuppress), ((_target getVariable [QGVAR(painSuppress), 0]) - _painReduce) max 0];
-
- if (_amountDecreased >= 1 || (_usedMeds <= 0) || !alive _target) then {
- [_idPFH] call CBA_fnc_removePerFrameHandler;
- };
- _args set [3, _amountDecreased];
-}, 1, [_target, _timeInSystem, _variable, 0, _decreaseAmount, _viscosityAdjustment, _painReduce / _timeInSystem] ] call CBA_fnc_addPerFrameHandler;
+// Run the loop that computes the effect of the medication over time
+[_target, _variable, 0, _decreaseAmount, _viscosityAdjustment, _painReduce / _timeInSystem] call FUNC(medicationEffectLoop);
diff --git a/addons/medical/functions/fnc_playInjuredSound.sqf b/addons/medical/functions/fnc_playInjuredSound.sqf
index 6dae7ab276..38b967b03e 100644
--- a/addons/medical/functions/fnc_playInjuredSound.sqf
+++ b/addons/medical/functions/fnc_playInjuredSound.sqf
@@ -76,7 +76,7 @@ if (_pain > 0 && {[_unit] call EFUNC(common,isAwake)}) exitWith {
// Clean up the lock
[{
(_this select 0) setVariable [QGVAR(playingInjuredSound),nil];
- }, [_unit], _delay, _delay] call EFUNC(common,waitAndExecute);
+ }, [_unit], _delay, _delay] call CBA_fnc_waitAndExecute;
};
// Clean up in case there has not been played any sounds.
diff --git a/addons/medical/functions/fnc_reviveStateLoop.sqf b/addons/medical/functions/fnc_reviveStateLoop.sqf
new file mode 100644
index 0000000000..bfc55ae6d8
--- /dev/null
+++ b/addons/medical/functions/fnc_reviveStateLoop.sqf
@@ -0,0 +1,56 @@
+/*
+ * Author: Glowbal, esteldunedain
+ * Loop that handles a unit in the revive state.
+ *
+ * Arguments:
+ * 0: Unit
+ *
+ * ReturnValue:
+ * None
+ *
+ * Public: No
+ */
+
+#include "script_component.hpp"
+
+params ["_unit"];
+
+// If locality changed finish the local loop
+// @todo: reinitiate the loop elsewhere
+if (!local _unit) exitWith {};
+
+private _startTime = _unit getVariable [QGVAR(reviveStartTime), 0];
+
+// Remove heartbeat
+if (GVAR(level) >= 2) then {
+ if (_unit getVariable [QGVAR(heartRate), 60] > 0) then {
+ _unit setVariable [QGVAR(heartRate), 0];
+ };
+};
+
+// If we are in revive state in a blown up vehicle, try to unload so that people can access the body
+if ((alive _unit) && {(vehicle _unit) != _unit} && {!alive (vehicle _unit)}) then {
+ TRACE_2("Unloading", _unit, vehicle _unit);
+ [_unit] call EFUNC(common,unloadPerson);
+};
+
+// If the timer run out, let the unit die and exit the loop
+if (GVAR(maxReviveTime) > 0 && {CBA_missionTime - _startTime > GVAR(maxReviveTime)}) exitwith {
+ _unit setVariable [QGVAR(inReviveState), nil, true];
+ _unit setVariable [QGVAR(reviveStartTime), nil];
+ [_unit, true] call FUNC(setDead);
+};
+
+// If the unit was taken out from revive state, exit the loop
+if !(_unit getVariable [QGVAR(inReviveState), false]) exitwith {
+ // Revived without dieing, so in case we have lifes, remove one.
+ if (GVAR(amountOfReviveLives) > 0) then {
+ _lifesLeft = _unit getVariable[QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives)];
+ _unit setVariable [QGVAR(amountOfReviveLives), _lifesLeft - 1, true];
+ };
+
+ _unit setVariable [QGVAR(reviveStartTime), nil];
+};
+
+// Schedule the loop to be executed again 1 sec later
+[DFUNC(reviveStateLoop), [_unit], 1] call CBA_fnc_waitAndExecute;
diff --git a/addons/medical/functions/fnc_serverRemoveBody.sqf b/addons/medical/functions/fnc_serverRemoveBody.sqf
index de089b199b..311199b1b8 100644
--- a/addons/medical/functions/fnc_serverRemoveBody.sqf
+++ b/addons/medical/functions/fnc_serverRemoveBody.sqf
@@ -26,23 +26,9 @@ TRACE_2("",_target,isPlayer _target);
if (isNil QGVAR(bodiesToDelete)) then {GVAR(bodiesToDelete) = [];};
GVAR(bodiesToDelete) pushBack _target;
-//Start up PFEH to wait for bodies to be free to delete
-if ((count GVAR(bodiesToDelete)) == 1) then {
- TRACE_1("starting PFEH",GVAR(bodiesToDelete));
- [{
- {
- TRACE_2("body",_x,isPlayer _x);
- if ((!isNull _x) && {!isPlayer _x}) then {deleteVehicle _x};
- } forEach GVAR(bodiesToDelete);
-
- //deleteVehicle doesn't have instant results so it won't usualy be filtered until next run
- GVAR(bodiesToDelete) = GVAR(bodiesToDelete) - [objNull];
-
- if (GVAR(bodiesToDelete) isEqualTo []) then {
- TRACE_1("array emptied - rem PFEH",GVAR(bodiesToDelete));
- [_this select 1] call CBA_fnc_removePerFrameHandler;
- };
- }, 20, []] call CBA_fnc_addPerFrameHandler;
+// Start up a loop to wait for bodies to be free to delete
+if ((count GVAR(bodiesToDelete)) > 0) then {
+ [] call FUNC(bodyCleanupLoop);
};
nil
diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf
index 7b2c195f10..70e7d5c253 100644
--- a/addons/medical/functions/fnc_setCardiacArrest.sqf
+++ b/addons/medical/functions/fnc_setCardiacArrest.sqf
@@ -27,18 +27,17 @@ _unit setVariable [QGVAR(heartRate), 0];
_timeInCardiacArrest = 120 + round(random(600));
[{
- private ["_args","_unit","_startTime","_timeInCardiacArrest","_heartRate"];
params ["_args", "_idPFH"];
_args params ["_unit", "_startTime", "_timeInCardiacArrest"];
- _heartRate = _unit getVariable [QGVAR(heartRate), 80];
+ private _heartRate = _unit getVariable [QGVAR(heartRate), 80];
if (_heartRate > 0 || !alive _unit) exitWith {
[_idPFH] call CBA_fnc_removePerFrameHandler;
_unit setVariable [QGVAR(inCardiacArrest), nil,true];
};
- if (ACE_time - _startTime >= _timeInCardiacArrest) exitWith {
+ if (CBA_missionTime - _startTime >= _timeInCardiacArrest) exitWith {
[_idPFH] call CBA_fnc_removePerFrameHandler;
_unit setVariable [QGVAR(inCardiacArrest), nil,true];
[_unit] call FUNC(setDead);
};
-}, 1, [_unit, ACE_time, _timeInCardiacArrest] ] call CBA_fnc_addPerFrameHandler;
+}, 1, [_unit, CBA_missionTime, _timeInCardiacArrest] ] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf
index 913431ccac..d68ba0e41f 100644
--- a/addons/medical/functions/fnc_setDead.sqf
+++ b/addons/medical/functions/fnc_setDead.sqf
@@ -38,44 +38,11 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal ==
};
_unit setVariable [QGVAR(inReviveState), true, true];
- _unit setVariable [QGVAR(reviveStartTime), ACE_time];
+ _unit setVariable [QGVAR(reviveStartTime), CBA_missionTime];
[_unit, true] call FUNC(setUnconscious);
- [{
- private "_startTime";
- params ["_args", "_idPFH"];
- _args params ["_unit"];
- _startTime = _unit getVariable [QGVAR(reviveStartTime), 0];
-
- //If we are in reivie state in a blown up vehicle, try to unload so that people can access the body
- if ((alive _unit) && {(vehicle _unit) != _unit} && {!alive (vehicle _unit)}) then {
- TRACE_2("Unloading", _unit, vehicle _unit);
- [_unit] call EFUNC(common,unloadPerson);
- };
-
- if (GVAR(maxReviveTime) > 0 && {ACE_time - _startTime > GVAR(maxReviveTime)}) exitwith {
- [_idPFH] call CBA_fnc_removePerFrameHandler;
- _unit setVariable [QGVAR(inReviveState), nil, true];
- _unit setVariable [QGVAR(reviveStartTime), nil];
- [_unit, true] call FUNC(setDead);
- };
-
- if !(_unit getVariable [QGVAR(inReviveState), false]) exitwith {
- // revived without dieing, so in case we have lifes, remove one.
- if (GVAR(amountOfReviveLives) > 0) then {
- _lifesLeft = _unit getVariable[QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives)];
- _unit setVariable [QGVAR(amountOfReviveLives), _lifesLeft - 1, true];
- };
-
- _unit setVariable [QGVAR(reviveStartTime), nil];
- [_idPFH] call CBA_fnc_removePerFrameHandler;
- };
- if (GVAR(level) >= 2) then {
- if (_unit getVariable [QGVAR(heartRate), 60] > 0) then {
- _unit setVariable [QGVAR(heartRate), 0];
- };
- };
- }, 1, [_unit] ] call CBA_fnc_addPerFrameHandler;
+ // Run the loop that tracks the revive state
+ [_unit ] call FUNC(reviveStateLoop);
false;
};
@@ -92,7 +59,7 @@ if (isPLayer _unit) then {
if (!_delaySetDamage) then {
[_unit, 1] call FUNC(setStructuralDamage);
} else {
- [FUNC(setStructuralDamage), [_unit, 1]] call EFUNC(common,execNextFrame);
+ [FUNC(setStructuralDamage), [_unit, 1]] call CBA_fnc_execNextFrame;
};
true;
diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf
index 25bc8aacb5..dbeecce939 100644
--- a/addons/medical/functions/fnc_setUnconscious.sqf
+++ b/addons/medical/functions/fnc_setUnconscious.sqf
@@ -103,7 +103,7 @@ if (GVAR(delayUnconCaptive) == 0) then {
if (_unit getVariable ["ACE_isUnconscious", false]) then {
[_unit, "setCaptive", QGVAR(unconscious), true] call EFUNC(common,statusEffect_set);
};
- },[_unit], GVAR(delayUnconCaptive)] call EFUNC(common,waitAndExecute);
+ },[_unit], GVAR(delayUnconCaptive)] call CBA_fnc_waitAndExecute;
};
_anim = [_unit] call EFUNC(common,getDeathAnim);
@@ -113,9 +113,9 @@ _anim = [_unit] call EFUNC(common,getDeathAnim);
if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then {
[_unit, _anim, 2, true] call EFUNC(common,doAnimation);
};
-}, [_unit, _anim], 0.5, 0] call EFUNC(common,waitAndExecute);
+}, [_unit, _anim], 0.5, 0] call CBA_fnc_waitAndExecute;
-_startingTime = ACE_time;
+_startingTime = CBA_missionTime;
[DFUNC(unconsciousPFH), 0.1, [_unit, _originalPos, _startingTime, _minWaitingTime, false, vehicle _unit isKindOf "ParachuteBase"] ] call CBA_fnc_addPerFrameHandler;
diff --git a/addons/medical/functions/fnc_translateSelections.sqf b/addons/medical/functions/fnc_translateSelections.sqf
index 98a4cf8c51..e6624507d1 100644
--- a/addons/medical/functions/fnc_translateSelections.sqf
+++ b/addons/medical/functions/fnc_translateSelections.sqf
@@ -46,7 +46,7 @@ if (_hitPointIndex isEqualTo true) exitWith {
if (!isNil {_unit getHitPointDamage _returnHitPoint}) exitWith {
_returnHitPoint;
};
-
+
//Those VR fuckers have weird limb hitpoints
private _hitPoints = switch (_selection) do {
case ("hand_l"): {L_ARM_HITPOINTS};
diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf
index d7f80edc35..dfb0584e9f 100644
--- a/addons/medical/functions/fnc_treatment.sqf
+++ b/addons/medical/functions/fnc_treatment.sqf
@@ -23,7 +23,7 @@ params ["_caller", "_target", "_selectionName", "_className"];
if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exitwith {
[{
_this call FUNC(treatment);
- }, _this] call EFUNC(common,execNextFrame);
+ }, _this] call CBA_fnc_execNextFrame;
};
if !(_target isKindOf "CAManBase") exitWith {false};
diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf
index 07431ac66d..1a546dd8d0 100644
--- a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf
+++ b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf
@@ -20,7 +20,7 @@ params ["_caller","_target"];
if (_target getVariable [QGVAR(inReviveState), false]) then {
_reviveStartTime = _target getVariable [QGVAR(reviveStartTime),0];
if (_reviveStartTime > 0) then {
- _target setVariable [QGVAR(reviveStartTime), (_reviveStartTime + random(20)) min ACE_time];
+ _target setVariable [QGVAR(reviveStartTime), (_reviveStartTime + random(20)) min CBA_missionTime];
};
};
diff --git a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf
index be9b03c9f1..b8acc27c74 100644
--- a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf
+++ b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf
@@ -16,32 +16,12 @@
private ["_tourniquets", "_part", "_applyingTo"];
params ["_target", "_tourniquetItem", "_selectionName"];
-[_target] call FUNC(addToInjuredCollection);
+//If we're not already tracking vitals, start:
+[_target] call FUNC(addVitalLoop);
_part = [_selectionName] call FUNC(selectionNameToNumber);
// Place a tourniquet on the bodypart
_tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]];
-_applyingTo = (_tourniquets select _part) + 1 + round(random(100));
-_tourniquets set[_part, _applyingTo];
+_tourniquets set [_part, CBA_missionTime];
_target setVariable [QGVAR(tourniquets), _tourniquets, true];
-
-[{
- params ["_args", "_idPFH"];
- _args params ["_target", "_applyingTo", "_part", "_time"];
-
- if (!alive _target) exitWith {
- [_idPFH] call CBA_fnc_removePerFrameHandler;
- };
-
- _tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]];
- if !((_tourniquets select _part) == _applyingTo) exitWith {
- // Tourniquet has been removed
- [_idPFH] call CBA_fnc_removePerFrameHandler;
- };
- if (ACE_time - _time > 120) then {
- _target setVariable [QGVAR(pain), (_target getVariable [QGVAR(pain), 0]) + 0.005];
- };
-}, 5, [_target, _applyingTo, _part, ACE_time] ] call CBA_fnc_addPerFrameHandler;
-
-true
diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf
index d8a4d3b336..a9ef534346 100644
--- a/addons/medical/functions/fnc_treatment_success.sqf
+++ b/addons/medical/functions/fnc_treatment_success.sqf
@@ -92,7 +92,7 @@ _args call FUNC(createLitter);
//If we're not already tracking vitals, start:
if (!(_target getVariable [QGVAR(addedToUnitLoop),false])) then {
- [_target] call FUNC(addToInjuredCollection);
+ [_target] call FUNC(addVitalLoop);
};
["medical_treatmentSuccess", [_caller, _target, _selectionName, _className]] call EFUNC(common,localEvent);
diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf
index e78c80f3ec..055753a0f3 100644
--- a/addons/medical/functions/fnc_unconsciousPFH.sqf
+++ b/addons/medical/functions/fnc_unconsciousPFH.sqf
@@ -130,13 +130,13 @@ if (_parachuteCheck) then {
if (!local _unit) exitWith {
TRACE_6("ACE_DEBUG_Unconscious_PFH",_unit, _args, _startingTime, _minWaitingTime, _idPFH, _unit getVariable QGVAR(unconsciousArguments));
- _args set [3, _minWaitingTime - (ACE_time - _startingTime)];
+ _args set [3, _minWaitingTime - (CBA_missionTime - _startingTime)];
_unit setVariable [QGVAR(unconsciousArguments), _args, true];
[_idPFH] call CBA_fnc_removePerFrameHandler;
};
// Ensure we are waiting at least a minimum period before checking if we can wake up the unit again, allows for temp knock outs
-if ((ACE_time - _startingTime) >= _minWaitingTime) exitWith {
+if ((CBA_missionTime - _startingTime) >= _minWaitingTime) exitWith {
TRACE_2("ACE_DEBUG_Unconscious_Temp knock outs",_unit, [_unit] call FUNC(getUnconsciousCondition));
if (!([_unit] call FUNC(getUnconsciousCondition))) then {
_unit setVariable ["ACE_isUnconscious", false, true];
diff --git a/addons/medical/functions/fnc_vitalLoop.sqf b/addons/medical/functions/fnc_vitalLoop.sqf
new file mode 100644
index 0000000000..6e5bb7fb2b
--- /dev/null
+++ b/addons/medical/functions/fnc_vitalLoop.sqf
@@ -0,0 +1,48 @@
+/*
+ * Author: Glowbal, esteldunedain
+ * Vital loop for a unit.
+ *
+ * Arguments:
+ * 0: The Unit
+ * 1: Time of last computation
+ *
+ * ReturnValue:
+ * None
+ *
+ * Public: No
+ */
+
+#include "script_component.hpp"
+
+params ["_unit", "_lastTime"];
+
+// If the unit died the loop is finished
+if (!alive _unit) exitWith {};
+
+// If locality changed, broadcast the last medical state and finish the local loop
+if (!local _unit) exitWith {
+ if (GVAR(level) >= 2) then {
+ _unit setVariable [QGVAR(heartRate), _unit getVariable [QGVAR(heartRate), 80], true];
+ _unit setVariable [QGVAR(bloodPressure), _unit getVariable [QGVAR(bloodPressure), [80, 120]], true];
+ };
+ _unit setVariable [QGVAR(bloodVolume), _unit getVariable [QGVAR(bloodVolume), 100], true];
+};
+
+// Handle unit vitals
+[_unit, CBA_missionTime - _lastTime] call FUNC(handleUnitVitals);
+
+// Play injured sounds
+private _pain = _unit getVariable [QGVAR(pain), 0];
+if (_pain > (_unit getVariable [QGVAR(painSuppress), 0])) then {
+ // This introduces wierd unconscious behaviour for basic medical and possibly also advanced.
+ // TODO This is disabled as it's considered non critical code.
+ // We will need to decide if we want unconscious triggered on high pain levels or if we can get rid of this entirely.
+ /*if (_pain > 0.7 && {random(1) > 0.6}) then {
+ [_unit] call FUNC(setUnconscious);
+ };*/
+
+ [_unit, _pain] call FUNC(playInjuredSound);
+};
+
+// Schedule the loop to be executed again 1 sec later
+[DFUNC(vitalLoop), [_unit, CBA_missionTime], 1] call CBA_fnc_waitAndExecute;
diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 7091de6b6e..34172b6b09 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -55,6 +55,9 @@
Inyectar Adenosina
Wstrzyknij adenozynę
Injecter de l'adénosine
+ Inietta andenosina
+ Aplikovat adenosine
+ Injetar Adenosina
Inject Atropine
@@ -254,6 +257,9 @@
Inyectando Adenosina...
Wstrzykiwanie adenozyny...
Injection d'adénosine...
+ Inietto l'andenosina
+ Aplikuji adenosine...
+ Injetando Adenosina...
Injecting Atropine...
@@ -361,14 +367,14 @@
Bendaggio compressivo
Bandage gauze
Bandagem de Compressão
- Tlakový obvaz
+ Obvaz Tlakový
Elastic Bandage
Elastischer Verband
Vendaje elástico
Давящая повязка
- Elastické obinadlo
+ Obavaz Elastický
Bandaż elastyczny
Pansement élastique
Rögzitő kötszer
@@ -829,7 +835,7 @@
Nyomókötszer
Bendaggio compressivo
Bandagem de Compressão
- Tlakový obvaz
+ Obvaz (Tlakový)
Used to pack medium to large wounds and stem the bleeding
@@ -862,7 +868,7 @@
Vendaje (Elástico)
Bandage (Élastique)
Bandaż (elastyczny)
- Obvaz (elastický)
+ Obvaz (Elastický)
Rögzító kötszer
Benda (elastica)
Bandagem (Elástica)
@@ -934,7 +940,7 @@
Morfina auto-inyectable
Auto-injecteur de Morphine
Autostrzykawka z morfiną
- Autoinjektor morfin
+ Auto-morfin
Morfium autoinjektor
Autoiniettore di morfina
Auto-injetor de morfina
@@ -969,6 +975,9 @@
Asenosina auto-inyectable
Autostrzykawka z adenozyną
Auto-injécteur d'adénosine
+ Autoiniettore di adenosina
+ Auto-adenosine
+ Auto-injetor de Adenosina
Used to counter effects of Epinephrine
@@ -976,6 +985,9 @@
Utilizada para contrarrestar los effectos de la Epinefrina
Adenozyna. Stosowana do zwalczania efektów działania adrenaliny.
Utilisé pour contrer les effets de l'adrénaline
+ Usato per contrastare l'effetto dell'epinefrina
+ Slouží jako protiváha Adrenalinu
+ Usado para combater os efeitos da Epinefrina
A drug used to counter the effects of Epinephrine
@@ -983,6 +995,9 @@
Medicamento usado para contrarrestar los efectos de la Epinefrina.
Organiczny związek chemiczny z grupy nukleozydów. Skuteczna w leczeniu częstoskurczu komorowego. Działa rozszerzająco na naczynia krwionośne.
Un composé utilisé pour contrer les effets de l'adrénaline
+ Medicamento usato per contrastare l'effetto dell'epinefrina
+ Droga používaná k tlumení efektu Adrenalinu
+ Uma droga usada para combater os efeitos da Epinefrina
Atropine autoinjector
@@ -991,7 +1006,7 @@
Auto-injecteur d'Atropine
Autostrzykawka AtroPen
Atropin-Autoinjektor
- Autoinjektor atropin
+ Auto-atropine
Atropin autoinjektor
Autoiniettore di atropina
Auto-injetor de Atropina
@@ -1027,7 +1042,7 @@
Auto-injecteur d'épinéphrine
Autostrzykawka EpiPen
Epiniphrin-Autoinjektor
- Autoinjektor adrenalin
+ Auto-adrenalin
Epinefrin autoinjektor
Autoiniettore di adrenalina
Auto-injetor de epinefrina
@@ -1282,7 +1297,7 @@
Elsősegélycsomag
Pronto soccorso personale
Kit De Primeiros Socorros Pessoal
- Osobní lékárnička
+ Osobní lékárnička (PAK)
Includes various treatment kit needed for stitching or advanced treatment
@@ -1317,7 +1332,7 @@
Usar equipo de primeros auxilios
Elsősegélycsomag használata
Usar o kit de primeiros socorros
- Použít osobní lékárničku
+ Použít osobní lékárničku (PAK)
Usa il pronto soccorso personale
@@ -1426,7 +1441,7 @@
Vérnyomás megmérése...
Controllando la pressione sanguigna..
Aferindo Pressão Arterial...
- Kontroluji krevní tlak...
+ Měřím krevní tlak...
%1 checked Blood Pressure: %2
@@ -1437,7 +1452,7 @@
%1 sprawdził ciśnienie krwi: %2
%1 verificada la presión arterial: %2
%1 ellenőrizte a vérnyomást: %2
- %1 zkontrolován krevní tlak: %2
+ %1 zkontroloval krevní tlak: %2
%1 verificou pressão arterial: %2
@@ -1462,7 +1477,7 @@
Wyczuwasz ciśnienie krwi o wartości %2/%3
Der Blutdruck liegt bei %2/%3
A Pressão Arterial é de %2/%3
- Našel jsi krevní tlak u %2/%3
+ Naměřil si krevní tlak u %2/%3
You find a low blood pressure
@@ -1474,7 +1489,7 @@
A vérnyomás alacsony
La pressione sanguigna è bassa
Pressão Arterial baixa
- Naměřil jsi nízký krevní tlak
+ Naměřil si nízký krevní tlak
You find a normal blood pressure
@@ -1486,7 +1501,7 @@
A vérnyomás normális
La pressione sanguigna è normale
Pressão Arterial normal
- Naměřil jsi normální krevní tlak
+ Naměřil si normální krevní tlak
You find a high blood pressure
@@ -1498,7 +1513,7 @@
A vérnyomás magas
La pressione sanguigna è alta
Pressão Arterial Alta
- Naměřil jsi vysoký krevní tlak
+ Naměřil si vysoký krevní tlak
You find no blood pressure
@@ -1510,7 +1525,7 @@
Nem észlelhető vérnyomás
La pressione sanguigna è assente
Sem Pressão Arterial
- Nenaměřil jsi žádný krevní tlak
+ Nenaměřil si žádný krevní tlak
You fail to find a blood pressure
@@ -1522,7 +1537,7 @@
Nem sikerült a vérnyomás megmérése
Manca strumento per misurare pressione sanguigna
Você falhou em aferir a Pressão Arterial
- Nedokázal jsi změřit krevní tlak
+ Nedokázal si změřit krevní tlak
Low
@@ -1582,7 +1597,7 @@
Pulzus
Polso
Pulso
- Tep
+ Puls
Checking Heart Rate...
@@ -1606,7 +1621,7 @@
A %1 ellenőrizve
Hai diagnosticato %1
Você aferiu o paciente %1
- Zkontroloval jsi %1
+ Zkontroloval si %1
%1 checked Heart Rate: %2
@@ -1690,7 +1705,7 @@
A szívverés-szám alacsony
Hai riscontrato un debole battito cardiaco
Freqüência Cardíaca baixa
- Nahmatal jsi slabý srdeční tep
+ Nahmatal si slabý srdeční puls
You find a strong Heart Rate
@@ -1702,7 +1717,7 @@
A szívverés-szám magas
Hai riscontrato un forte battito cardiaco
Freqüência Cardíaca normal
- Nahmatal jsi silný srdeční tep
+ Nahmatal si silný srdeční puls
You find a normal Heart Rate
@@ -1714,7 +1729,7 @@
A szívverés-szám normális
Hai riscontrato un normale battito cardiaco
Freqüência Cardíaca alta
- Nahmatal jsi normální srdeční tep
+ Nahmatal si normální srdeční puls
You find no Heart Rate
@@ -1726,7 +1741,7 @@
Nem észlelhető szívverés
Hai riscontrato una assenza di battito cardiaco
Sem Freqüência Cardíaca
- Nenašel jsi
+ Žádný puls
Response
@@ -2167,7 +2182,7 @@
Gravemente herido
Lourdement blessé
Erősen sérült
- Těžce zraněn
+ Těžce raněn
Gravemente ferido
@@ -2179,7 +2194,7 @@
Levemente herido
Légèrement blessé
Enyhén sérült
- Lehce zraněn
+ Lehce raněn
Levemente ferido
@@ -2191,7 +2206,7 @@
Muy levemente herido
Très légèrement blessé
Nagyon enyhén sérült
- Velmi lehce zraněn
+ Velmi lehce raněn
Muito levemente ferido
@@ -2896,6 +2911,7 @@
Örtliche Trainingssteigerung
Ubicación mejora entrenamiento.
Miejsca zwiększają wyszkolenie
+ Localização melhora treinamento
Boost medic rating in medical vehicles or near medical facilities [untrained becomes medic, medic becomes doctor]
@@ -2904,6 +2920,7 @@
Steigert die medizinische Einstufung eines Soldaten in Sanitätsfarhzeugen oder in der Nähe von Sanitätseinrichtungen [untrainiert wird zu Sanitäter, Sanitäter zu Doktor]
Mejora el entrenamiento médico dentro de vehículos médicos o cerca de instalaciones médicas (no entrenados se convierten en médicos, médicos se convierten en doctores)
Zwiększa poziom wyszkolenia medyków wewnątrz pojazdów medycznych lub w pobliżu budynków medycznych [niedoświadczony zostaje medykiem, medyk zostaje doktorem]
+ Aumenta a classificação do médico dentro de veículos médicos ou perto de instalações médicas [sem treinamento vira médico, médico vira doutor]
Disable medics
@@ -3199,6 +3216,9 @@
Podstawowe ustawienia medyczne
Ajustes médicos básicos [ACE]
Réglages du système médical basic [ACE]
+ Impostazioni Mediche Di Base [ACE]
+ Základní zdravotnické nastavení [ACE]
+ Ajustes médicos básicos [ACE]
Advanced Medical Settings [ACE]
@@ -3314,6 +3334,9 @@
Permitir Epinefrina
Ograniczenia adrenaliny
Autoriser l'adrénaline
+ Permette epinefrina
+ Povolit adrenalin
+ Permitir Epinefrina
Who can use Epinephrine for full heal? (Basic medical only)
@@ -3321,6 +3344,9 @@
Configura quienes pueden usar Epinefrina (Solo sistema médico básico)
Kto może skorzystać z adrenaliny w celu pełnego uleczenia? (Tylko podstawowy system medyczny)
Qui peut utiliser l'adrénaline pour les soins complets ? (Médical basique seulement)
+ Chi può usare l'epinefrina per la cura completa? (solo per sistema medico di base)
+ Kdo může použít adrenalin k úplnému vyléčení? (Pouze základní zdravotní systém)
+ Quem pode usar Epinefrina para cura completa? (Somente sistema médico básico)
Allow PAK
@@ -3328,7 +3354,7 @@
Ustawienie apteczek osobistych
Permitir EPA
Erlaube Erste-Hilfe-Set
- Povolit osobní lékárničky
+ Povolit osobní lékárničky (PAK)
Permitir Kit de Primeiros Socorros
Permettre le kit de premier secours
Elsősegélycsomag engedélyezése
@@ -3412,6 +3438,9 @@
Ubicaciones epinefrina
Ograniczenia adrenaliny
Position des adrénalines
+ Ubicazione epinefrina
+ Oblast k použití adrenalinu
+ Localizações de Epinefrina
Where can the Epinephrine be used? (Basic Medical)
@@ -3419,6 +3448,9 @@
Configura donde puede usarse Epinefrina (Solo sistema médico básico)
Gdzie można korzystać z adrenaliny? (Podstawowy system medyczny)
Où peuvent être utilisées les adrénalines ? (Médical basique)
+ Dove si può usare l'epinefrina? (Sistema medico di base)
+ Kde může být použit adrenalin? (Pouze základní zdravotní systém)
+ Onde pode-se usar a Epinefrina? (Somente sistema médico básico)
Locations PAK
@@ -3426,7 +3458,7 @@
Ograniczenie apteczek osobistych
Ubicaciones del EPA
Orte für Erste-Hilfe-Set
- Lokace osobní lékárničky
+ Oblast k použití PAK
Localizações do KPS
Lieu d'utilisation du KPS
Elsősegélycsomag helyek
@@ -3438,7 +3470,7 @@
Gdzie można korzystać z apteczek osobistych?
¿Dónde se puede utilizar el equipo de primeros auxilios?
Wo kann das Erste-Hilfe-Set verwendet werden?
- Kde může být použita osobní lékárnička?
+ Kde může být použita osobní lékárnička (PAK)?
Onde o kit de primeiros socorros pode ser utilizado?
Où le Kit de Premier Secour peut être utilisé
Hol lehet az elsősegélycsomagot használni?
@@ -3447,7 +3479,7 @@
Condition PAK
Bedingungen für d. Erste-Hilfe-Set
- Podmínka osobní lékárničky
+ Podmínky pro použití osobní lékárničky
Condición EPA
Condition d'utilisation du KPS
Warunek apteczek
@@ -3459,7 +3491,7 @@
When can the PAK be used?
Wann kann das Erste-Hilfe-Set verwendet werden?
- Kde může být použita osobní lékárnička?
+ Kdy může být použita osobní lékárnička?
¿Cuando se puede utilizar el Equipo de primeros auxilios?
Quand peut être utilisé le Kit de Premier Secours
Po spełnieniu jakich warunków apteczka osobista może zostać zastosowana na pacjencie?
@@ -3474,7 +3506,7 @@
Wszędzie
Donde sea
Überall
- Kdekoli
+ Kdekoliv
Qualquer lugar
PArtout
Akárhol
@@ -3664,6 +3696,8 @@
Configure las opciones de tratamiento del sistema médico básico de ACE
Skonfiguruj ustawienia leczenia podstawowego systemu medycznego ACE
Configure les réglages de traitement dans ACE médical basique
+ Configura le impostazioni trattamenti per ACE Medical di base
+ Configura as opções de tratamento do sistema médico básico do ACE
Configure the treatment settings from ACE Advanced Medical
@@ -4113,6 +4147,8 @@
Sanitätsausbildung
Entrenamiento médico
Entraînement médical
+ Lékařský výcvik
+ Treino médico
Whether or not the object will be a medical vehicle.
@@ -4121,16 +4157,23 @@
Legt fest, ob das Objekt ein Sanitätsfahrzeug ist.
Es un vehículo médico?
Définit si le véhicule est un véhicule médical ou non.
+ Se o objeto será ou não um veículo médico
Delay cease fire of AI while player is unconscious for medical reasons.
Verzögert das Ende des KI-Beschusses auf einen Spieler, wenn dieser aus medizinischen Gründen bewustlos wird.
+ Ritarda il cessate il fuoco dell'IA quando il giocatore è svenuto per motivi medici.
+ Prodleva zastavení palby pro AI, pokud je hráč v bezvědomí ze zdravotních důvodů.
+ Atraso durante cessar fogo da AI durante inconsciência médica
Delay cease fire of AI for unconsciousness
Verzögert Ende des KI-Beschusses bei medizinischer Bewustlosigkeit
Demora antes de volverse neutral al caer inconsciente
Opóźnij status captive u nieprzytomnych osób
+ Ritarda il cessate il fuoco dell'IA quando si è svenuti
+ Prodleva zastavení palby AI na bezvědomé
+ Atraso durante cessar fogo da AI durante inconsciência
-
+
\ No newline at end of file
diff --git a/addons/medical/ui/RscTitles.hpp b/addons/medical/ui/RscTitles.hpp
index 520a431d7b..76c1da46c0 100644
--- a/addons/medical/ui/RscTitles.hpp
+++ b/addons/medical/ui/RscTitles.hpp
@@ -19,34 +19,34 @@ class Rsctitles {
colorBackground[] = {1,1,1,1};
colorPicture[] = {1,1,1,1};
colorText[] = {1,1,1,1};
- text = QUOTE(PATHTOF(ui\body_background.paa));
+ text = QPATHTOF(ui\body_background.paa);
};
class bodyImgHead: bodyImgBackground {
idc = 50;
colorBackground[] = {1,1,1,1};
colorPicture[] = {1,1,1,1};
colorText[] = {1,1,1,1};
- text = QUOTE(PATHTOF(ui\body_head.paa));
+ text = QPATHTOF(ui\body_head.paa);
};
class bodyImgTorso: bodyImgHead {
idc = 51;
- text = QUOTE(PATHTOF(ui\body_torso.paa));
+ text = QPATHTOF(ui\body_torso.paa);
};
class bodyImgArms_l: bodyImgHead {
idc = 52;
- text = QUOTE(PATHTOF(ui\body_arm_left.paa));
+ text = QPATHTOF(ui\body_arm_left.paa);
};
class bodyImgArms_r: bodyImgHead {
idc = 53;
- text = QUOTE(PATHTOF(ui\body_arm_right.paa));
+ text = QPATHTOF(ui\body_arm_right.paa);
};
class bodyImgLegs_l: bodyImgHead {
idc = 54;
- text = QUOTE(PATHTOF(ui\body_leg_left.paa));
+ text = QPATHTOF(ui\body_leg_left.paa);
};
class bodyImgLegs_r: bodyImgHead {
idc = 55;
- text = QUOTE(PATHTOF(ui\body_leg_right.paa));
+ text = QPATHTOF(ui\body_leg_right.paa);
};
class InjuryListLabel {
idc = 199;
diff --git a/addons/medical/ui/triagecard.hpp b/addons/medical/ui/triagecard.hpp
index 1122c2e942..6a5138def8 100644
--- a/addons/medical/ui/triagecard.hpp
+++ b/addons/medical/ui/triagecard.hpp
@@ -30,11 +30,11 @@ class GVAR(triageCard) {
SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
colorText[] = {1,1,0,1};
colorBackground[] = {0,0,0,0};
- text = QUOTE(PATHTOF(ui\triage_card_corner_l.paa));
+ text = QPATHTOF(ui\triage_card_corner_l.paa);
};
class cornor_top_r: cornor_top_l {
x = "20 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
- text = QUOTE(PATHTOF(ui\triage_card_corner_r.paa));
+ text = QPATHTOF(ui\triage_card_corner_r.paa);
};
class TriageCardLabel {
diff --git a/addons/medical_menu/CfgVehicles.hpp b/addons/medical_menu/CfgVehicles.hpp
index d2bbf55fd1..1918511566 100644
--- a/addons/medical_menu/CfgVehicles.hpp
+++ b/addons/medical_menu/CfgVehicles.hpp
@@ -5,7 +5,7 @@ class CfgVehicles {
class ACE_moduleMedicalMenuSettings: ACE_Module {
scope = 2;
displayName = CSTRING(module_DisplayName);
- icon = QUOTE(PATHTOEF(medical,UI\Icon_Module_Medical_ca.paa));
+ icon = QPATHTOEF(medical,UI\Icon_Module_Medical_ca.paa);
category = "ACE_medical";
function = QUOTE(DFUNC(module));
functionPriority = 1;
@@ -50,7 +50,7 @@ class CfgVehicles {
exceptions[] = {"isNotInside"};
condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu));
statement = QUOTE([_target] call DFUNC(openMenu));
- icon = PATHTOEF(medical,UI\icons\medical_cross.paa);
+ icon = QPATHTOEF(medical,UI\icons\medical_cross.paa);
};
};
@@ -63,7 +63,7 @@ class CfgVehicles {
exceptions[] = {"isNotInside"};
condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu));
statement = QUOTE([_target] call DFUNC(openMenu));
- icon = PATHTOEF(medical,UI\icons\medical_cross.paa);
+ icon = QPATHTOEF(medical,UI\icons\medical_cross.paa);
};
};
};
diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf
index 92e2af341f..deddb4b3d8 100644
--- a/addons/medical_menu/XEH_postInit.sqf
+++ b/addons/medical_menu/XEH_postInit.sqf
@@ -12,7 +12,7 @@ GVAR(pendingReopen) = false;
GVAR(pendingReopen) = false;
[{
[GVAR(INTERACTION_TARGET)] call FUNC(openMenu);
- }, []] call EFUNC(common,execNextFrame);
+ }, []] call CBA_fnc_execNextFrame;
};
}] call EFUNC(common,addEventhandler);
@@ -31,7 +31,7 @@ GVAR(pendingReopen) = false;
false
},
{
- if (ACE_time - GVAR(lastOpenedOn) > 0.5) exitWith {
+ if (CBA_missionTime - GVAR(lastOpenedOn) > 0.5) exitWith {
[objNull] call FUNC(openMenu);
};
false
diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp
index 27e0db03b9..bdc9bf1f25 100644
--- a/addons/medical_menu/config.cpp
+++ b/addons/medical_menu/config.cpp
@@ -6,8 +6,9 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_medical"};
- author[] = {$STR_ACE_Common_ACETeam, "Glowbal"};
- authorUrl = "http://ace3mod.com";
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"Glowbal"};
+ url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
diff --git a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf
index 67e295e22e..97e5c19519 100644
--- a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf
+++ b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf
@@ -44,7 +44,7 @@ if (_name isEqualTo "toggle") exitWith {
closeDialog 0;
[{
[_this select 0] call FUNC(openMenu);
- }, [_newTarget], 0.1] call EFUNC(common,waitAndExecute);
+ }, [_newTarget], 0.1] call CBA_fnc_waitAndExecute;
};
// Clean the dropdown options list from all actions
@@ -77,7 +77,7 @@ if (_name isEqualTo "triage") exitWith {
_message = localize _message;
};
};
- _triageCardTexts pushBack format["%1x - %2 (%3m)", _amount, _message, round((ACE_gameTime - _time) / 60)];
+ _triageCardTexts pushBack format["%1x - %2 (%3m)", _amount, _message, round((CBA_missionTime - _time) / 60)];
nil;
} count _log;
diff --git a/addons/medical_menu/functions/fnc_openMenu.sqf b/addons/medical_menu/functions/fnc_openMenu.sqf
index a8a51ff028..e6ed7e6135 100644
--- a/addons/medical_menu/functions/fnc_openMenu.sqf
+++ b/addons/medical_menu/functions/fnc_openMenu.sqf
@@ -34,6 +34,6 @@ if (dialog || {isNull _interactionTarget}) exitWith {
GVAR(INTERACTION_TARGET) = _interactionTarget;
createDialog QGVAR(medicalMenu);
-GVAR(lastOpenedOn) = ACE_time;
+GVAR(lastOpenedOn) = CBA_missionTime;
true
diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml
index f825882be6..e9812128f4 100644
--- a/addons/medical_menu/stringtable.xml
+++ b/addons/medical_menu/stringtable.xml
@@ -295,7 +295,7 @@
Selectioner Bras Gauche
Wybierz lewą rękę
Selecionar Braço Esquerdo
- Vybrat Levou Ruku
+ Vybrat Levou ruku
Seleziona Braccio Sinistro