diff --git a/addons/arsenal/functions/fnc_onSelChangedLeft.sqf b/addons/arsenal/functions/fnc_onSelChangedLeft.sqf
index 5bf08245c8..e25016b303 100644
--- a/addons/arsenal/functions/fnc_onSelChangedLeft.sqf
+++ b/addons/arsenal/functions/fnc_onSelChangedLeft.sqf
@@ -382,6 +382,9 @@ switch (GVAR(currentLeftPanel)) do {
};
GVAR(currentItems) set [IDX_CURR_VEST, _item];
+
+ [GVAR(center), ""] call BIS_fnc_setUnitInsignia;
+ [GVAR(center), GVAR(currentInsignia)] call BIS_fnc_setUnitInsignia;
};
TOGGLE_RIGHT_PANEL_CONTAINER
@@ -420,6 +423,9 @@ switch (GVAR(currentLeftPanel)) do {
};
GVAR(currentItems) set [IDX_CURR_BACKPACK, _item];
+
+ [GVAR(center), ""] call BIS_fnc_setUnitInsignia;
+ [GVAR(center), GVAR(currentInsignia)] call BIS_fnc_setUnitInsignia;
};
TOGGLE_RIGHT_PANEL_CONTAINER
diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml
index 25ce1f75ae..cf858ec24d 100644
--- a/addons/arsenal/stringtable.xml
+++ b/addons/arsenal/stringtable.xml
@@ -1245,6 +1245,7 @@
Интегрирован тепловизор.
열화상 내장
Thermique intégrée
+ Thermal integriert
Térmica integrada
@@ -1254,6 +1255,7 @@
Интегрирован тепловизор и осн.прицел.
열화상과 주무기 내장
Thermique et primaire intégrés
+ Thermal und in Primärwaffe integriert
Térmica y Primaria integrada
diff --git a/addons/artillerytables/initSettings.inc.sqf b/addons/artillerytables/initSettings.inc.sqf
index 762010b2ca..f34190f910 100644
--- a/addons/artillerytables/initSettings.inc.sqf
+++ b/addons/artillerytables/initSettings.inc.sqf
@@ -15,7 +15,5 @@ private _categoryName = [format ["ACE %1", localize "str_a3_cfgmarkers_nato_art"
[LSTRING(disableArtilleryComputer_displayName), LSTRING(disableArtilleryComputer_description)],
_categoryName,
false, // default value
- true, // isGlobal
- {[QGVAR(disableArtilleryComputer), _this] call EFUNC(common,cbaSettings_settingChanged)},
- false // Needs mission restart
+ true // isGlobal
] call CBA_fnc_addSetting;
diff --git a/addons/cargo/initSettings.inc.sqf b/addons/cargo/initSettings.inc.sqf
index 029a845a25..4f92934d46 100644
--- a/addons/cargo/initSettings.inc.sqf
+++ b/addons/cargo/initSettings.inc.sqf
@@ -6,8 +6,7 @@ private _category = [ELSTRING(main,Category_Logistics), LSTRING(openMenu)];
[LSTRING(ModuleSettings_enable), LSTRING(ModuleSettings_enable_Description)],
_category,
true,
- 1,
- {[QGVAR(enable), _this] call EFUNC(common,cbaSettings_settingChanged)}
+ 1
] call CBA_fnc_addSetting;
[
@@ -16,8 +15,7 @@ private _category = [ELSTRING(main,Category_Logistics), LSTRING(openMenu)];
[LSTRING(loadTimeCoefficient), LSTRING(loadTimeCoefficient_description)],
_category,
[0, 10, 5, 1],
- 1,
- {[QGVAR(loadTimeCoefficient), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
+ 1
] call CBA_fnc_addSetting;
[
@@ -26,8 +24,7 @@ private _category = [ELSTRING(main,Category_Logistics), LSTRING(openMenu)];
[LSTRING(paradropTimeCoefficent), LSTRING(paradropTimeCoefficent_description)],
_category,
[0, 10, 2.5, 1],
- 1,
- {[QGVAR(paradropTimeCoefficent), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
+ 1
] call CBA_fnc_addSetting;
[
@@ -35,9 +32,7 @@ private _category = [ELSTRING(main,Category_Logistics), LSTRING(openMenu)];
"LIST",
[LSTRING(openAfterUnload), LSTRING(openAfterUnload_description)],
_category,
- [[0, 1, 2, 3], [ELSTRING(common,never), LSTRING(unloadObject), LSTRING(paradropButton), ELSTRING(common,both)], 0],
- 0,
- {[QGVAR(openAfterUnload), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
+ [[0, 1, 2, 3], [ELSTRING(common,never), LSTRING(unloadObject), LSTRING(paradropButton), ELSTRING(common,both)], 0]
] call CBA_fnc_addSetting;
[
@@ -45,9 +40,7 @@ private _category = [ELSTRING(main,Category_Logistics), LSTRING(openMenu)];
"CHECKBOX",
[LSTRING(carryAfterUnload), LSTRING(carryAfterUnload_description)],
_category,
- true,
- 0,
- {[QGVAR(carryAfterUnload), _this] call EFUNC(common,cbaSettings_settingChanged)}
+ true
] call CBA_fnc_addSetting;
[
@@ -56,8 +49,7 @@ private _category = [ELSTRING(main,Category_Logistics), LSTRING(openMenu)];
[LSTRING(enableDeploy), LSTRING(enableDeploy_description)],
_category,
true,
- 1,
- {[QGVAR(enableDeploy), _this] call EFUNC(common,cbaSettings_settingChanged)}
+ 1
] call CBA_fnc_addSetting;
[
@@ -65,7 +57,5 @@ private _category = [ELSTRING(main,Category_Logistics), LSTRING(openMenu)];
"CHECKBOX",
[LSTRING(ModuleSettings_enableRename), LSTRING(ModuleSettings_enableRename_Description)],
_category,
- true,
- 0,
- {[QGVAR(enableRename), _this, true] call EFUNC(common,cbaSettings_settingChanged)}
+ true
] call CBA_fnc_addSetting;
diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml
index e74fd742c2..4e8d707f61 100644
--- a/addons/cargo/stringtable.xml
+++ b/addons/cargo/stringtable.xml
@@ -40,6 +40,7 @@
配置する
배치하기
Déployer
+ Aufstellen
Desplegar
@@ -288,6 +289,7 @@
Загружаем %1 в %2...
%1을(를) %2에 싣는 중...
Chargement %1 dans %2...
+ %1 wird in %2 geladen...
Unloading %1 from %2...
@@ -297,6 +299,7 @@
Выгружаем %1 из %2...
%1을(를) %2(으)로부터 내리는 중...
Déchargement %1 de %2...
+ %1 wird von %2 entladen...
%1<br/>could not be loaded
@@ -587,6 +590,7 @@
配置機能を有効化
배치 활성화
Permettre le placement
+ Aktiviere Aufbauen
Habilitar despliegue
@@ -596,6 +600,7 @@
配置機能を介して貨物アイテムを降ろすことが出来るかどうかを制御します。
배치 방법을 통해 화물 아이템을 내릴 수 있는지 여부를 제어합니다.
Contrôler si les éléments de cargaison peuvent être déchargés via la méthode de déploiement.
+ Steuert, ob Frachtgegenstände über die Aufbaumethode entladen werden können.
Controla si los objetos de la carga pueden ser descargados mediante el método de despliegue.
diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp
index b77845f739..5a2893eeaf 100644
--- a/addons/common/XEH_PREP.hpp
+++ b/addons/common/XEH_PREP.hpp
@@ -161,6 +161,7 @@ PREP(sendRequest);
PREP(serverLog);
PREP(setAimCoef);
PREP(setApproximateVariablePublic);
+PREP(setDead);
PREP(setDefinedVariable);
PREP(setDisableUserInputStatus);
PREP(setHearingCapability);
diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index f97009808f..0d4b55ae28 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -191,6 +191,7 @@ if (isServer) then {
[QGVAR(switchMove), {(_this select 0) switchMove (_this select 1)}] call CBA_fnc_addEventHandler;
[QGVAR(setVectorDirAndUp), {(_this select 0) setVectorDirAndUp (_this select 1)}] call CBA_fnc_addEventHandler;
[QGVAR(addWeaponItem), {(_this select 0) addWeaponItem [(_this select 1), (_this select 2)]}] call CBA_fnc_addEventHandler;
+[QGVAR(removeMagazinesTurret), {(_this select 0) removeMagazinesTurret [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler;
[QGVAR(setVanillaHitPointDamage), {
params ["_object", "_hitPointAnddamage"];
@@ -222,6 +223,9 @@ if (isServer) then {
[QGVAR(claimSafe), LINKFUNC(claimSafeServer)] call CBA_fnc_addEventHandler;
};
+["CBA_SettingChanged", {
+ ["ace_settingChanged", _this] call CBA_fnc_localEvent;
+}] call CBA_fnc_addEventHandler;
//////////////////////////////////////////////////
// Set up remote execution
diff --git a/addons/common/functions/fnc_addPlayerEH.sqf b/addons/common/functions/fnc_addPlayerEH.sqf
index a80eff611a..879465c706 100644
--- a/addons/common/functions/fnc_addPlayerEH.sqf
+++ b/addons/common/functions/fnc_addPlayerEH.sqf
@@ -1,4 +1,65 @@
#include "..\script_component.hpp"
+/*
+ * Author: PabstMirror
+ * Adds event handler just to ACE_player
+ *
+ * Arguments:
+ * 0: Key
+ * 1: Event Type
+ * 2: Event Code
+ * 3: Ignore Virtual Units (spectators, virtual zeus, uav RC) (default: false)
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * ["example", "FiredNear", {systemChat str _this}] call ace_common_fnc_addPlayerEH
+ *
+ * Public: Yes
+*/
+params [["_key", "", [""]], ["_type", "", [""]], ["_code", {}, [{}]], ["_ignoreVirtual", false, [false]]];
+TRACE_3("addPlayerEH",_key,_type,_ignoreVirtual);
+
+if (isNil QGVAR(playerEventsHash)) then { // first-run init
+ GVAR(playerEventsHash) = createHashMap;
+ ["unit", {
+ params ["_newPlayer", "_oldPlayer"];
+ // uav check only applies to direct controlling UAVs from zeus, no effect on normal UAV operation
+ private _isVirutal = (unitIsUAV _newPlayer) || {getNumber (configOf _newPlayer >> "isPlayableLogic") == 1};
+
+ TRACE_4("",_newPlayer,_oldPlayer,_isVirutal,count GVAR(playerEventsHash));
+ {
+ _y params ["_type", "_code", "_ignoreVirtual"];
+
+ private _oldEH = _oldPlayer getVariable [_x, -1];
+ if (_oldEH != -1) then {
+ _oldPlayer removeEventHandler [_type, _oldEH];
+ _oldPlayer setVariable [_x, nil];
+ };
+
+ _oldEH = _newPlayer getVariable [_x, -1];
+ if (_oldEH != -1) then { continue }; // if respawned then var and EH already exists
+ if (_ignoreVirtual && _isVirutal) then { continue };
+
+ private _newEH = _newPlayer addEventHandler [_type, _code];
+ _newPlayer setVariable [_x, _newEH];
+ } forEach GVAR(playerEventsHash);
+ }, false] call CBA_fnc_addPlayerEventHandler;
+};
+
+
+_key = format [QGVAR(playerEvents_%1), toLower _key];
+if (_key in GVAR(playerEventsHash)) exitWith { ERROR_1("bad key %1",_this); };
+
+GVAR(playerEventsHash) set [_key, [_type, _code, _ignoreVirtual]];
+
+if (isNull ACE_player) exitWith {};
+if (_ignoreVirtual && {(unitIsUAV ACE_player) || {getNumber (configOf ACE_player >> "isPlayableLogic") == 1}}) exitWith {};
+
+// Add event now
+private _newEH = ACE_player addEventHandler [_type, _code];
+ACE_player setVariable [_key, _newEH];
+#include "..\script_component.hpp"
/*
* Author: PabstMirror
* Adds event handler just to ace_player
diff --git a/addons/common/functions/fnc_addWeapon.sqf b/addons/common/functions/fnc_addWeapon.sqf
index 16ae92c4f5..787c9fb24a 100644
--- a/addons/common/functions/fnc_addWeapon.sqf
+++ b/addons/common/functions/fnc_addWeapon.sqf
@@ -2,22 +2,33 @@
/*
* Author: commy2, johnb43
* Adds weapon to unit without taking a magazine.
- * Same as CBA_fnc_addWeaponWithoutItems, but doesn't remove linked items.
+ * Same as CBA_fnc_addWeaponWithoutItems, but doesn't remove linked items by default.
*
* Arguments:
- * 0: Unit to add the weapon to
+ * 0: Unit to add the weapon to