diff --git a/@AresModAchillesExpansion/addons/data_f_achilles.pbo b/@AresModAchillesExpansion/addons/data_f_achilles.pbo
index 8e5e696f..8a757eda 100644
Binary files a/@AresModAchillesExpansion/addons/data_f_achilles.pbo and b/@AresModAchillesExpansion/addons/data_f_achilles.pbo differ
diff --git a/@AresModAchillesExpansion/addons/data_f_achilles.pbo.achilles_0.0.7d.bisign b/@AresModAchillesExpansion/addons/data_f_achilles.pbo.achilles_0.0.7d.bisign
deleted file mode 100644
index 96297491..00000000
Binary files a/@AresModAchillesExpansion/addons/data_f_achilles.pbo.achilles_0.0.7d.bisign and /dev/null differ
diff --git a/@AresModAchillesExpansion/addons/data_f_achilles.pbo.achilles_0.0.8.bisign b/@AresModAchillesExpansion/addons/data_f_achilles.pbo.achilles_0.0.8.bisign
new file mode 100644
index 00000000..298a073a
Binary files /dev/null and b/@AresModAchillesExpansion/addons/data_f_achilles.pbo.achilles_0.0.8.bisign differ
diff --git a/@AresModAchillesExpansion/addons/data_f_achilles/icons/icon_enyo.paa b/@AresModAchillesExpansion/addons/data_f_achilles/icons/icon_enyo.paa
new file mode 100644
index 00000000..d0d4e9cf
Binary files /dev/null and b/@AresModAchillesExpansion/addons/data_f_achilles/icons/icon_enyo.paa differ
diff --git a/@AresModAchillesExpansion/addons/data_f_achilles/icons/icon_enyo_large.paa b/@AresModAchillesExpansion/addons/data_f_achilles/icons/icon_enyo_large.paa
new file mode 100644
index 00000000..cdb004cf
Binary files /dev/null and b/@AresModAchillesExpansion/addons/data_f_achilles/icons/icon_enyo_large.paa differ
diff --git a/@AresModAchillesExpansion/addons/data_f_ares.pbo b/@AresModAchillesExpansion/addons/data_f_ares.pbo
index 3ff186f3..4ad31bdb 100644
Binary files a/@AresModAchillesExpansion/addons/data_f_ares.pbo and b/@AresModAchillesExpansion/addons/data_f_ares.pbo differ
diff --git a/@AresModAchillesExpansion/addons/data_f_ares.pbo.achilles_0.0.7d.bisign b/@AresModAchillesExpansion/addons/data_f_ares.pbo.achilles_0.0.7d.bisign
deleted file mode 100644
index f9b5e4e9..00000000
Binary files a/@AresModAchillesExpansion/addons/data_f_ares.pbo.achilles_0.0.7d.bisign and /dev/null differ
diff --git a/@AresModAchillesExpansion/addons/data_f_ares.pbo.achilles_0.0.8.bisign b/@AresModAchillesExpansion/addons/data_f_ares.pbo.achilles_0.0.8.bisign
new file mode 100644
index 00000000..6cddd8e4
Binary files /dev/null and b/@AresModAchillesExpansion/addons/data_f_ares.pbo.achilles_0.0.8.bisign differ
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles.pbo b/@AresModAchillesExpansion/addons/functions_f_achilles.pbo
index 0f16b966..a09349f9 100644
Binary files a/@AresModAchillesExpansion/addons/functions_f_achilles.pbo and b/@AresModAchillesExpansion/addons/functions_f_achilles.pbo differ
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.achilles_0.0.7d.bisign b/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.achilles_0.0.7d.bisign
deleted file mode 100644
index 6944699b..00000000
Binary files a/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.achilles_0.0.7d.bisign and /dev/null differ
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.achilles_0.0.8.bisign b/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.achilles_0.0.8.bisign
new file mode 100644
index 00000000..ecafa251
Binary files /dev/null and b/@AresModAchillesExpansion/addons/functions_f_achilles.pbo.achilles_0.0.8.bisign differ
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/cfgFunctions.hpp b/@AresModAchillesExpansion/addons/functions_f_achilles/cfgFunctions.hpp
index c52d915a..064dc89a 100644
--- a/@AresModAchillesExpansion/addons/functions_f_achilles/cfgFunctions.hpp
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/cfgFunctions.hpp
@@ -5,17 +5,17 @@ class CfgFunctions
{
project = "Ares Mod - Achilles Expansion";
tag = "Achilles";
-
+
class Init
{
file = "\achilles\functions_f_achilles\functions\init";
-
+
class onCuratorStart;
}
class functions_f_common
{
file = "\achilles\functions_f_achilles\functions\common";
-
+
class sum;
class arrayMean;
class pushBack;
@@ -27,17 +27,30 @@ class CfgFunctions
class getVehicleAmmoDef;
class getUnitAmmoDef;
class setUnitAmmoDef;
+ class setVehicleAmmoDef;
class checkLineOfFire2D;
class matrixTranspose;
class vectorMap;
class dikToLetter;
class getCuratorSelected;
+ class deadlyExplosion;
+ class disablingExplosion;
+ class fakeExplosion;
+ class hasACEExplosives;
+ };
+
+ class selectUnit
+ {
+ file = "\achilles\functions_f_achilles\functions\selectUnit";
+
+ class switchUnit_start;
+ class switchUnit_exit;
};
-
+
class functions_f_features
{
file = "\achilles\functions_f_achilles\functions\features";
-
+
class ACS_toggleGrouping;
class ambientAnim;
class ambientAnimGetParams;
@@ -52,10 +65,11 @@ class CfgFunctions
class PasteObjectsFromClipboard;
class damageComponents;
class changePylonAmmo;
+ class changeSideAttribute;
class changeSkills;
class groupObjects;
class ungroupObjects;
- class setCuratorVisionModes;
+ class setCuratorVisionModes;
class damageBuildings;
class preplaceMode;
class addBreachDoorAction;
@@ -63,6 +77,10 @@ class CfgFunctions
class setACEInjury;
class setVanillaInjury;
class SuppressiveFire;
+ class changeNVGBrightness;
+ class createIED;
+ class createSuicideBomber;
+ class IED_DamageHandler;
};
};
@@ -70,7 +88,7 @@ class CfgFunctions
{
class Vehicles
{
- delete garage;
+ delete garage;
};
class Achilles
{
@@ -85,13 +103,17 @@ class CfgFunctions
{
delete showCuratorAttributes;
delete curatorObjectPlaced;
+ delete curatorObjectEdited;
+ delete toggleCuratorVisionMode;
};
class Achilles
{
file = "\achilles\functions_f_achilles\functions\replacement";
-
+
class showCuratorAttributes;
class curatorObjectPlaced;
+ class curatorObjectEdited;
+ class toggleCuratorVisionMode;
};
};
};
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_deadlyExplosion.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_deadlyExplosion.sqf
new file mode 100644
index 00000000..7743782c
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_deadlyExplosion.sqf
@@ -0,0 +1,31 @@
+/*
+ Author: CreepPork_LV, shay_gman
+
+ Description:
+ Creates a deadly IED explosion.
+
+ Parameters:
+ _this select: 0 - ARRAY - Center of explosion
+ _this select: 1 - NUMBER - Explosion Size
+
+ Returns:
+ Nothing
+*/
+
+_spawnPos = _this select 0;
+_explosionSize = _this select 1;
+
+_explosiveClass = switch (_explosionSize) do {
+ case 0: {"DemoCharge_Remote_Ammo_Scripted"};
+ case 1: {"IEDUrbanSmall_Remote_Ammo"};
+ case 2: {"IEDUrbanBig_Remote_Ammo"};
+};
+
+_IED = _explosiveClass createVehicle _spawnPos;
+
+hideObjectGlobal _IED;
+_IED setPosATL _spawnPos;
+
+sleep 0.1;
+
+_IED setDamage 1;
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_disablingExplosion.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_disablingExplosion.sqf
new file mode 100644
index 00000000..235617d7
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_disablingExplosion.sqf
@@ -0,0 +1,79 @@
+/*
+ Author: CreepPork_LV, shay_gman
+
+ Description:
+ Creates a medium sized explosion that can disable units.
+
+ Parameters:
+ _this select: 0 - ARRAY - Spawn position
+ _this select: 1 - NUMBER - Explosion Size
+
+ Returns:
+ Nothing
+*/
+
+_spawnPos = _this select 0;
+_explosionSize = _this select 1;
+_random = 0;
+
+switch (_explosionSize) do
+{
+ case 0:
+ {
+ "SmallSecondary" createVehicle _spawnPos;
+ _hitRadius = 20;
+ _killRadius = 10;
+ };
+
+ case 1:
+ {
+ "M_AT" createVehicle _spawnPos;
+ _hitRadius = 30;
+ _killRadius = 20;
+ };
+
+ case 2:
+ {
+ "M_AT" createVehicle _spawnPos;
+ _hitRadius = 50;
+ _killRadius = 30;
+ };
+};
+
+_targetUnits = _spawnPos nearObjects _hitRadius;
+
+{
+ _random = random 10;
+ if(_x isKindOf "Man") then
+ {
+ if (((_x distance _spawnPos) < _killRadius) && (_random > 1))then
+ {
+ _x setHit ["legs", 0.9];
+ _x setdamage 0.7;
+ };
+ };
+
+ if(_x isKindOf "Car") then
+ {
+ if (((_x distance _spawnPos) < _killRadius) && (_random > 1))then
+ {
+ _x setdamage 0.7;
+ sleep 15;
+ _x setdamage 1;
+ }
+ else
+ {
+ _x setdamage 0.4;
+ }
+ };
+
+ if(_x isKindOf "Tank") then
+ {
+ if (((_x distance _spawnPos) < _killRadius) && (_random > 1))then
+ {
+ _x setdamage 0.7;
+ sleep 15;
+ _x setdamage 1;
+ };
+ };
+} forEach _targetUnits;
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_fakeExplosion.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_fakeExplosion.sqf
new file mode 100644
index 00000000..10f7944a
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_fakeExplosion.sqf
@@ -0,0 +1,17 @@
+/*
+ Author: CreepPork_LV, shay_gman
+
+ Description:
+ Creates a fake (very small) explosion.
+
+ Parameters:
+ _this select: 0 - ARRAY - Spawn position
+
+ Returns:
+ Nothing
+*/
+
+_spawnPos = _this select 0;
+
+_explosive = "SmallSecondary" createVehicle _spawnPos;
+_explosive setPos _spawnPos;
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getCuratorSelected.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getCuratorSelected.sqf
index 91cf2186..ae3f8006 100644
--- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getCuratorSelected.sqf
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getCuratorSelected.sqf
@@ -54,6 +54,10 @@ switch (_mode) do
};
} forEach (curatorSelected select 0);
};
+ case "object":
+ {
+ _selected = (curatorSelected select 0);
+ };
case "group":
{
_selected = (curatorSelected select 1);
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getVehicleAmmoDef.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getVehicleAmmoDef.sqf
index b6c0f205..efb0214c 100644
--- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getVehicleAmmoDef.sqf
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_getVehicleAmmoDef.sqf
@@ -1,8 +1,7 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// AUTHOR: Kex
-// DATE: 9/2/16
-// VERSION: 1.0
-// FILE: functions_f_achilles\functions\common\fn_getVehicleAmmoDef.sqf
+// DATE: 6/15/17
+// VERSION: 2.0
// DESCRIPTION: estimate for inverse function of setVehicleAmmoDef command (not very accurate)
//
// ARGUMENTS:
@@ -17,6 +16,7 @@
_vehicle = _this;
+_vehicleType = typeOf _vehicle;
// get current state of all turret magazines
_AllTurretCurrentMagazinesClassName = [];
@@ -26,10 +26,10 @@ _AllTurretCurrentMagazinesAmmoCount = [];
_AllTurretCurrentMagazinesAmmoCount pushBack (_x select 2);
} forEach (magazinesAllTurrets _vehicle);
-_turretsCfg = [typeOf _vehicle] call Achilles_fnc_getAllTurretConfig;
+_turretsCfg = [_vehicleType] call Achilles_fnc_getAllTurretConfig;
// append config path for driver magazines
-_turretsCfg pushBack (configFile >> "CfgVehicles" >> typeOf _vehicle);
+_turretsCfg pushBack (configFile >> "CfgVehicles" >> _vehicleType);
_AllTurretAmmoPercentages = [];
@@ -62,6 +62,28 @@ _AllTurretAmmoPercentages = [];
} forEach _turretsCfg;
+// handle dynamic loadout
+if (isClass (configFile >> "cfgVehicles" >> _vehicleType >> "Components" >> "TransportPylonsComponent")) then
+{
+ _TurretAmmoPercentages = [];
+ {
+ if (_x != "") then
+ {
+ private _current_ammoCount = _vehicle ammoOnPylon (_forEachIndex + 1);
+ if (typeName _current_ammoCount == "BOOL") then
+ {
+ if (_current_ammoCount) then {_TurretAmmoPercentages pushBack 1} else {_TurretAmmoPercentages pushBack 0};
+ } else
+ {
+ private _cfg_ammoCount = getNumber (configfile >> "CfgMagazines" >> _x >> "count");
+ if (_cfg_ammoCount == 0) then {_TurretAmmoPercentages pushBack 1} else {_TurretAmmoPercentages pushBack (_current_ammoCount / _cfg_ammoCount)};
+ };
+ };
+ } forEach (getPylonMagazines _vehicle);
+ _AllTurretAmmoPercentages pushBack (_TurretAmmoPercentages call Achilles_fnc_arrayMean);
+};
+
+
// return the overall mean of all percentages
if (count _AllTurretAmmoPercentages != 0) then
{
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_hasACEExplosives.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_hasACEExplosives.sqf
new file mode 100644
index 00000000..103ad6ac
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_hasACEExplosives.sqf
@@ -0,0 +1,21 @@
+/*
+ Author: CreepPork_LV
+
+ Description:
+ Checks if ACE3 Explosives is present.
+
+ Parameters:
+ NONE
+
+ Returns:
+ BOOL - if present
+*/
+
+_hasACE = false;
+
+if (isClass (configFile >> "CfgPatches" >> "ace_explosives")) then
+{
+ _hasACE = true;
+};
+
+_hasACE;
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_setVehicleAmmoDef.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_setVehicleAmmoDef.sqf
new file mode 100644
index 00000000..99b21eaa
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/common/fn_setVehicleAmmoDef.sqf
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// AUTHOR: Kex
+// DATE: 9/2/16
+// VERSION: 1.0
+// FILE: functions_f_achilles\functions\common\fn_setUnitAmmoDef.sqf
+// DESCRIPTION: set vehicle's magazine count based on given percentage
+// In contrast to setUnitAmmoDef, it can handle custom dynamic loadouts
+//
+// ARGUMENTS:
+// _this select 0: OBJECT - vehicle for which the ammo is changed
+// _this select 1: SCALAR - ammo value in range [0,1]
+//
+// RETURNS:
+// nothing (procedure)
+//
+// Example:
+// [_vehicle, 0.9] call Achilles_fnc_setVehicleAmmoDef;
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+params ["_vehicle",["_percentage",1,[1]]];
+
+_pylonMags = getPylonMagazines _vehicle;
+_vehicle setVehicleAmmoDef _percentage;
+{
+ private _cfg_ammoCount = getNumber (configfile >> "CfgMagazines" >> _x >> "count");
+ _vehicle setPylonLoadOut [_forEachIndex + 1, _x];
+ _vehicle setAmmoOnPylon [_forEachIndex + 1, round (_cfg_ammoCount * _percentage)];
+} forEach _pylonMags;
+
+
+
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_IED_DamageHandler.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_IED_DamageHandler.sqf
new file mode 100644
index 00000000..fcc99aab
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_IED_DamageHandler.sqf
@@ -0,0 +1,40 @@
+/*
+ Author: CreepPork_LV, shay_gman
+
+ Description:
+ Event Handler logic when the actual object recives damage.
+
+ Notes:
+ This event handler works only for vehicles not static objects (that's just how HandleDamage works).
+
+ Parameters:
+ _this select: 0 - OBJECT - Object that the module was placed upon
+ _this select: 4 - STRING - Classname of the projectile that caused inflicted the damage
+
+ Returns:
+ Nothing
+*/
+
+_object = _this select 0;
+_projectile = _this select 4;
+_dummyObject = _object getVariable ["dummyObject", objNull];
+_activationType = _dummyObject getVariable["activationType", 0];
+
+_explosives =
+[
+ "ClaymoreDirectionalMine_Remote_Ammo",
+ "DemoCharge_Remote_Ammo",
+ "SatchelCharge_Remote_Ammo",
+ "pipebombExplosion",
+ "PipeBomb",
+ "ACE_DummyAmmo_Explosives"
+];
+
+if (_projectile in _explosives) then
+{
+ _object setDamage 1;
+ _dummyObject setVariable ["armed", true, true];
+ _dummyObject setVariable ["iedTriggered", true, true];
+ [_object, [_object, 0]] remoteExec ["BIS_fnc_holdActionRemove", 0, _object];
+ _object removeEventHandler["HandleDamage", 0];
+};
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_PreplaceMode.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_PreplaceMode.sqf
index 046237ff..45947864 100644
--- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_PreplaceMode.sqf
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_PreplaceMode.sqf
@@ -1,8 +1,8 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// AUTHOR: Kex
-// DATE: 18/2/17
-// VERSION: 1.0
-// DESCRIPTION: Define position for object in advance
+// DATE: 6/11/17
+// VERSION: 3.0
+// DESCRIPTION: Define position for object in advance; MUST BE EXECUTED IN UNSCHEDULED ENVIRONMENT!
//
// ARGUMENTS:
// _this select 0: OBJECT / GROUP - Object or group to be placed
@@ -16,10 +16,13 @@
#include "\A3\ui_f_curator\ui\defineResinclDesign.inc"
-private ["_objects_list","_pos"];
-_entity = param [0, objNull, [objNull, grpNull]];
+private "_objects_list";
+private _entity = param [0, objNull, [objNull, grpNull]];
if (isNull _entity) exitWith {};
+// exit with previous called preplace mode was not yet completed
+if (count (missionNamespace getVariable ["Achilles_var_preplaceModeObjects",[]]) > 0) exitWith {};
+
if (typeName _entity == typeName grpNull) then
{
_objects_list = units _entity;
@@ -27,68 +30,83 @@ if (typeName _entity == typeName grpNull) then
{
_objects_list = [_entity];
};
-private _vehicles = [];
+missionNamespace setVariable ["Achilles_var_preplaceModeObjects", _objects_list];
+
+[_objects_list] spawn
{
- _x enableSimulation false;
- if (vehicle _x == _x) then
+ params ["_objects_list"];
{
- _pos = position _x;
- _pos set [2,0];
- if (surfaceIsWater _pos) then {_x setPosASL _pos} else {_x setPosATL _pos};
- _x setVectorUp [0,0,1];
- } else
- {
- _objects_list pushBackUnique (vehicle _x);
- };
-} forEach _objects_list;
+ _x enableSimulation false;
+ if (vehicle _x == _x) then
+ {
+ private _pos = position _x;
+ _pos set [2,0];
+ if (surfaceIsWater _pos) then {_x setPosASL _pos} else {_x setPosATL _pos};
+ _x setVectorUp [0,0,1];
+ } else
+ {
+ _objects_list pushBackUnique (vehicle _x);
+ };
+ } forEach _objects_list;
-disableSerialization;
-private _display = finddisplay IDD_RSCDISPLAYCURATOR;
-private _ctrlMessage = _display displayctrl IDC_RSCDISPLAYCURATOR_FEEDBACKMESSAGE;
+ disableSerialization;
+ private _display = finddisplay IDD_RSCDISPLAYCURATOR;
+ private _ctrlMessage = _display displayctrl IDC_RSCDISPLAYCURATOR_FEEDBACKMESSAGE;
-Achilles_var_submit_selection = nil;
+ Achilles_var_submit_selection = nil;
-// Inform curator what he has to do
-playSound "FD_Finish_F";
-//[["Ares","SelectionOption"]] call BIS_fnc_advHint;
+ // Inform curator what he has to do
+ playSound "FD_Finish_F";
+ //[["Ares","SelectionOption"]] call BIS_fnc_advHint;
-_ctrlMessage ctrlsettext (localize "STR_MOVE_SPAWN_POSITION_AND_PRESS_ENTER");
-_ctrlMessage ctrlsetfade 1;
-_ctrlMessage ctrlcommit 0;
-_ctrlMessage ctrlsetfade 0;
-_ctrlMessage ctrlcommit 0.1;
+ _ctrlMessage ctrlsettext (localize "STR_MOVE_SPAWN_POSITION_AND_PRESS_ENTER");
+ _ctrlMessage ctrlsetfade 1;
+ _ctrlMessage ctrlcommit 0;
+ _ctrlMessage ctrlsetfade 0;
+ _ctrlMessage ctrlcommit 0.1;
-// Add key event handler
-_handler_id = _display displayAddEventHandler ["KeyDown",
-{
- _key = _this select 1;
- if (_key == 28) then {Achilles_var_submit_selection = true; true} else {false};
- if (_key == 1) then {Achilles_var_submit_selection = false; true} else {false};
-}];
+ // Add key event handler
+ private _handler_id = _display displayAddEventHandler ["KeyDown",
+ {
+ _key = _this select 1;
+ if (_key == 28) then {Achilles_var_submit_selection = true; true} else {false};
+ if (_key == 1) then {Achilles_var_submit_selection = false; true} else {false};
+ }];
-// executed when the choice is submitted or cancled
-WaitUntil {!isNil "Achilles_var_submit_selection"};
+ // executed when the choice is submitted or cancled
+ WaitUntil {!isNil "Achilles_var_submit_selection" or {isNull findDisplay 312} or {{not isNull _x} count _objects_list == 0}};
-// remove the key handler and the message
-_display displayRemoveEventHandler ["KeyDown", _handler_id];
-_ctrlMessage ctrlsetfade 1;
-_ctrlMessage ctrlcommit 0.5;
+ // remove the key handler and the message
+ _display displayRemoveEventHandler ["KeyDown", _handler_id];
+ _ctrlMessage ctrlsetfade 1;
+ _ctrlMessage ctrlcommit 0.5;
+
+ // if objects were deleted
+ if ({not isNull _x} count _objects_list == 0) exitWith
+ {
+ [localize "STR_SELECTION_CANCLED"] call Ares_fnc_ShowZeusMessage;
+ playSound "FD_Start_F";
+ missionNamespace setVariable ["Achilles_var_preplaceModeObjects", []];
+ };
-// if escape was pressed
-if (! Achilles_var_submit_selection) exitWith
-{
- [localize "STR_SELECTION_CANCLED"] call Ares_fnc_ShowZeusMessage;
- playSound "FD_Start_F";
+ // if escape was pressed
+ if (not isNil "Achilles_var_submit_selection" and {not Achilles_var_submit_selection}) exitWith
{
- {deleteVehicle _x} forEach (crew _x);
- deleteVehicle _x;
- } forEach _objects_list;
-};
+ [localize "STR_SELECTION_CANCLED"] call Ares_fnc_ShowZeusMessage;
+ playSound "FD_Start_F";
+ {
+ {deleteVehicle _x} forEach (crew _x);
+ deleteVehicle _x;
+ } forEach _objects_list;
+ missionNamespace setVariable ["Achilles_var_preplaceModeObjects", []];
+ };
-// if enter was pressed
-[localize "STR_SELECTION_SUBMITTED"] call Ares_fnc_ShowZeusMessage;
+ // if enter was pressed
+ [localize "STR_SELECTION_SUBMITTED"] call Ares_fnc_ShowZeusMessage;
-{
- {_x enableSimulation true} forEach (crew _x);
- _x enableSimulation true;
-} forEach _objects_list;
+ {
+ {_x enableSimulation true} forEach (crew _x);
+ _x enableSimulation true;
+ } forEach _objects_list;
+ missionNamespace setVariable ["Achilles_var_preplaceModeObjects", []];
+};
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeAbility.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeAbility.sqf
index a944ab61..9618f3f4 100644
--- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeAbility.sqf
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeAbility.sqf
@@ -16,11 +16,9 @@
#define ABILITIES ["AIMINGERROR","ANIM","AUTOCOMBAT","AUTOTARGET","CHECKVISIBLE","COVER","FSM","MOVE","SUPPRESSION","TARGET","PATH"]
-private ["_selection","_dialogResult","_mode"];
-
-_units = [param [0,ObjNull,[ObjNull]]];
-
-_dialogResult =
+private _units = [param [0,ObjNull,[ObjNull]]];
+private _abilityCount = count ABILITIES;
+private _dialogResult =
[
"Abilities:",
[
@@ -34,7 +32,8 @@ _dialogResult =
["Move:",["true","false"]],
["Suppression:",["true","false"]],
["Target:",["true","false"]],
- ["Path:",["true","false"]]
+ ["Path:",["true","false"]],
+ ["Allow fleeing:","SLIDER", 0.5]
]
] call Ares_fnc_ShowChooseDialog;
@@ -48,20 +47,23 @@ if (isNil "_units") exitWith {};
if (count _units == 0) exitWith {};
{
- [_x,_dialogResult] spawn
+ private _unit = _x;
{
- _unit = _this select 0;
- _attribute_values = _this select 1;
+ private _ability_type = _x;
+ private _mode = _dialogResult select _forEachIndex;
+ if (local _unit) then
+ {
+ if (_mode == 0) then {_unit enableAI _ability_type} else {_unit disableAI _ability_type};
+ } else
{
- _ability_type = _x;
- _mode = _attribute_values select _forEachIndex;
- if (local _unit) then
- {
- if (_mode == 0) then {_unit enableAI _ability_type} else {_unit disableAI _ability_type};
- } else
- {
- if (_mode == 0) then {[_unit, _ability_type] remoteExec ["enableAI",_unit]} else {[_unit, _ability_type] remoteExec ["disableAI",_unit]};
- };
- } forEach ABILITIES;
+ if (_mode == 0) then {[_unit, _ability_type] remoteExec ["enableAI",_unit]} else {[_unit, _ability_type] remoteExec ["disableAI",_unit]};
+ };
+ } forEach ABILITIES;
+ if (local _unit) then
+ {
+ _unit allowFleeing (_dialogResult select _abilityCount);
+ } else
+ {
+ [_unit, _dialogResult select _abilityCount] remoteExecCall ["allowFleeing", _unit];
};
} forEach _units;
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeNVGBrightness.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeNVGBrightness.sqf
new file mode 100644
index 00000000..ed23d87b
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeNVGBrightness.sqf
@@ -0,0 +1,12 @@
+
+params["_changeInBrightness"];
+private _brightness = player getVariable ["ace_nightvision_NVGBrightness", 0];
+
+_brightness = ((round (10 * _brightness + _changeInBrightness) / 10) min 0.5) max -0.5;
+
+player setVariable ["ace_nightvision_NVGBrightness", _brightness, false];
+
+(missionNamespace getVariable "Achilles_var_NVGBrightnessEffect") ppEffectAdjust [1, (_brightness + 1), 0, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]];
+(missionNamespace getVariable "Achilles_var_NVGBrightnessEffect") ppEffectCommit 0;
+[format[(localize "STR_BRIGHTNESS") + ": %1", (_brightness * 10)]] call Ares_fnc_ShowZeusMessage;
+playsound ["RscDisplayCurator_visionMode",true];
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeSideAttribute.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeSideAttribute.sqf
new file mode 100644
index 00000000..04bdc5c5
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_changeSideAttribute.sqf
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// AUTHOR: Kex
+// DATE: 6/11/17
+// VERSION: 1.0
+// DESCRIPTION: function that allows changing groups side
+//
+// ARGUMENTS:
+// _this select 0: GROUP - the group the side should be changed
+//
+// RETURNS:
+// nothing (procedure)
+//
+// Example:
+// [group player] call Achilles_fnc_changeSideAttribute;
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+_group = param [0,grpNull,[grpNull]];
+private _side = side _group;
+
+_dialogResult =
+[
+ localize "STR_CHANGE_SIDE",
+ [
+ [localize "STR_SIDE","SIDE",([_side] call BIS_fnc_sideID) + 1, true]
+ ]
+] call Ares_fnc_ShowChooseDialog;
+
+if (count _dialogResult == 0) exitWith {};
+_side = [(_dialogResult select 0) - 1] call BIS_fnc_sideType;
+
+private _curatorSelected = ["group"] call Achilles_fnc_getCuratorSelected;
+
+{
+ if (local leader _x) then
+ {
+ private _new_group = createGroup _side;
+ (units _x) joinSilent _new_group;
+ deleteGroup _x;
+ } else
+ {
+ [[_x,_side],
+ {
+ params ["_old_group","_new_side"];
+ private _new_group = createGroup _new_side;
+ (units _old_group) joinSilent _new_group;
+ deleteGroup _old_group;
+ }] remoteExec ["call", leader _x];
+ };
+} forEach _curatorSelected;
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_chatter.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_chatter.sqf
index 15e0e198..b5a44479 100644
--- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_chatter.sqf
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_chatter.sqf
@@ -51,9 +51,10 @@ if (isNull _unit) then
[[_side,"HQ"],_message] remoteExec ["sideChat",0];
} else
{
+ private _name = if (isNil {_unit getVariable "Achilles_var_switchUnit_data"}) then {name _unit} else {(_unit getVariable "Achilles_var_switchUnit_data") select 0};
_dialogResult =
[
- (localize "STR_CHATTER") + format [" (%1):", name _unit],
+ (localize "STR_CHATTER") + format [" (%1):", _name],
[
[localize "STR_CHANNEL",
[
@@ -84,9 +85,8 @@ if (isNull _unit) then
// if zeus channel
if (_chat_type == "") exitWith {[player,_message] remoteExec ['sideChat',0];};
- if (!isPlayer _unit) then
- {
- _message = "(" + (name _unit) + " [" + localize "STR_AI" + "]) " + _message;
- };
+
+ _message = "(" + (_name) + " [" + localize "STR_AI" + "]) " + _message;
+
[_unit,_message] remoteExec [_chat_type,0];
};
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_createIED.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_createIED.sqf
new file mode 100644
index 00000000..7a753a78
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_createIED.sqf
@@ -0,0 +1,258 @@
+/*
+ Author: CreepPork_LV, shay_gman
+
+ Description:
+ Sets a object as an IED.
+
+ Parameters:
+ _this select: 0 - OBJECT - Object that the module was placed upon
+ _this select: 1 - NUMBER - Explosion Size
+ _this select: 2 - NUMBER - Explosion Effect
+ _this select: 3 - STRING - Activation Distance
+ _this select: 4 - NUMBER - Activation Side
+ _this select: 5 - NUMBER - Activation Type
+ _this select: 6 - NUMBER - Can be Jammed
+ _this select: 7 - STRING - Disarm Time
+ _this select: 8 - NUMBER - Can be Disarmed
+
+ Returns:
+ Nothing
+*/
+
+_object = _this select 0;
+_explosionSize = _this select 1;
+_explosionEffect = _this select 2;
+_activationDistance = _this select 3;
+_activationSide = _this select 4;
+_activationType = _this select 5;
+_isJammable = _this select 6;
+_disarmTime = _this select 7;
+_canBeDefused = _this select 8;
+
+_activationDistance = parseNumber _activationDistance;
+_disarmTime = parseNumber _disarmTime;
+
+_activationSide = switch (_activationSide) do
+{
+ case 1: {[east]};
+ case 2: {[west]};
+ case 3: {[resistance]};
+ default {[west]};
+};
+
+if (typeName _activationSide == typeName sideLogic) then {_activationSide = [_activationSide]};
+
+_dummyObject = "Land_HelipadEmpty_F" createVehicle (getPosATL _object);
+_dummyObject attachTo [_object,[0,0,0]];
+
+_dummyObject setVariable["activationType", _activationType, true];
+
+[_object, ["HandleDamage", {_this call Achilles_fnc_IED_DamageHandler}]] remoteExec ["addEventHandler", _object];
+
+_dummyObject setVariable ["object", _object, true];
+_dummyObject setVariable ["armed", true, true];
+
+_object setVariable ["dummyObject", _dummyObject, true];
+
+_hasACEExplosives = call Achilles_fnc_hasACEExplosives;
+
+_targets = ["Car", "Tank", "Man"];
+_loop = true;
+_armed = _dummyObject getVariable ["armed", true];
+_triggered = _dummyObject getVariable ["iedTriggered", false];
+_object = _dummyObject getVariable ["object", objNull];
+_defused = _dummyObject getVariable ["defused", false];
+_targetSpeed = false;
+
+if (_canBeDefused == 0) then
+{
+ _onCompletion =
+ {
+ private ["_object", "_dummyObject"];
+ _returnArray = _this select 3;
+
+ _object = _returnArray select 0;
+ _dummyObject = _returnArray select 1;
+
+ _random = random 100;
+
+ if (_random <= 70) then
+ {
+ systemChat "Disarmed";
+ _dummyObject setVariable["armed", false, true];
+ _dummyObject setVariable["iedTriggered", false, true];
+ _dummyObject setVariable["defused", true, true];
+ _defused = true;
+ }
+ else
+ {
+ systemChat "Failed to Disarm";
+ _dummyObject setVariable["iedTriggered", true, true];
+ _dummyObject setVariable["defused", false, true];
+ _defused = false;
+ };
+ };
+
+ if (_hasACEExplosives) then
+ {
+ [
+ _object,
+ "Disarm",
+ "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unbind_ca.paa",
+ "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unbind_ca.paa",
+ "_this distance _target < 3 && 'ACE_DefusalKit' in (items _this + assignedItems _this)",
+ "_caller distance _target < 3",
+ {},
+ {},
+ _onCompletion,
+ {},
+ [_object, _dummyObject],
+ _disarmTime,
+ 20,
+ true,
+ false
+ ] remoteExec ["BIS_fnc_holdActionAdd", 0, _object];
+ }
+ else
+ {
+ [
+ _object,
+ "Disarm",
+ "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unbind_ca.paa",
+ "\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unbind_ca.paa",
+ "_this distance _target < 3",
+ "_caller distance _target < 3",
+ {},
+ {},
+ _onCompletion,
+ {},
+ [_object, _dummyObject],
+ _disarmTime,
+ 20,
+ true,
+ false
+ ] remoteExec ["BIS_fnc_holdActionAdd", 0, _object];
+ };
+};
+
+if (_activationType == 0) then
+{
+ while {!_triggered} do
+ {
+ _triggered = _dummyObject getVariable ["iedTriggered", false];
+ _armed = _dummyObject getVariable ["armed", false];
+ _defused = _dummyObject getVariable ["defused", false];
+
+ if ((!alive _object && _armed) || (isNull _object && _armed)) then
+ {
+ if (_defused) then
+ {
+ _dummyObject setVariable ["armed", false, true];
+ _dummyObject setVariable ["iedTriggered", false, true];
+
+ deleteVehicle _dummyObject;
+ }
+ else
+ {
+ _dummyObject setVariable ["iedTriggered", true, true];
+ };
+ };
+ sleep 1;
+ };
+}
+else
+{
+ while {alive _object && !isNull _object && _loop && _armed && !_triggered} do
+ {
+ sleep 3;
+ _triggered = _dummyObject getVariable ["iedTriggered", false];
+ _armed = _dummyObject getVariable ["armed", true];
+
+ _nearestObjects = (getPos _dummyObject) nearObjects 150;
+
+ if ({side _x in _activationSide} count _nearestObjects > 0) then
+ {
+ while {alive _object && _loop && _armed && !_triggered} do
+ {
+ sleep 1;
+ _nearestTarget = (getPos _dummyObject) nearObjects (_activationDistance);
+ _nearestSide = [];
+
+ {
+ if (side _x in _activationSide) then
+ {
+ _nearestSide = _nearestSide + [_x]
+ };
+ } forEach _nearestTarget;
+
+ _howMany = count _nearestSide;
+
+ for [{_x = 0}, {_x < _howMany}, {_x = _x + 1}] do
+ {
+ _target = _nearestSide select _x;
+ _isJammableVehicle = _target getVariable ["isECM", false];
+
+ if ((_isJammable == 0) && _isJammableVehicle && ((_target distance _dummyObject) <= 80)) then
+ {
+ _random = random 100;
+ while {((_target distance _dummyObject) < 80) && (_random > 1)} do
+ {
+ _random = random 100;
+ sleep 2;
+ };
+ if (_random <= 1) exitWith {_loop = false; _dummyObject setVariable ["iedTriggered", true, true];};
+ };
+
+ if (_loop) then
+ {
+ {
+ _targetSpeed = if (_activationType == 2) then {true} else {(speed _target) > 7};
+ if ((_target isKindOf _x) && ((_target distance _dummyObject) <= _activationDistance) && _targetSpeed) exitWith {_loop = false; _dummyObject setVariable ["iedTriggered", true, true]};
+ } forEach _targets;
+ };
+ };
+ };
+ };
+ };
+};
+
+_armed = _dummyObject getVariable ["armed", false];
+_triggered = _dummyObject getVariable ["iedTriggered", false];
+
+_object setVariable ["armed", _armed, true];
+_object setVariable ["iedTriggered", _triggered, true];
+
+_spawnPos = [((getposATL _object) select 0),((getposATL _object) select 1),(((getPosATL _object) select 2) + 3)];
+
+_explosion = {};
+
+switch (_explosionEffect) do
+{
+ case 0:
+ {
+ _explosion = Achilles_fnc_deadlyExplosion;
+ };
+ case 1:
+ {
+ _explosion = Achilles_fnc_disablingExplosion;
+ };
+ case 2:
+ {
+ _explosion = Achilles_fnc_fakeExplosion;
+ };
+};
+
+if ((_armed && _triggered) || (!alive _object && _armed)) then
+{
+ [_spawnPos, _explosionSize] spawn _explosion;
+ _object setDamage 1;
+};
+
+_object setVariable ["isIED", false, true];
+_object setVariable ["armed", false, true];
+_object setVariable ["iedTriggered", false, true];
+
+[_object, 0] remoteExec ["BIS_fnc_holdActionRemove", 0, _object];
+
+sleep 2;
+deleteVehicle _dummyObject;
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_createSuicideBomber.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_createSuicideBomber.sqf
new file mode 100644
index 00000000..981f5468
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/features/fn_createSuicideBomber.sqf
@@ -0,0 +1,141 @@
+/*
+ Author: CreepPork_LV, shay_gman, Anton Struyk, Kex
+
+ Description:
+ Sets a unit to be a suicide bomber.
+
+ Parameters:
+ _this select: 0 - OBJECT - Person to be a Suicide Bomber
+ _this select: 1 - NUMBER - Explosion Size
+ _this select: 2 - NUMBER - Explosion Effect
+ _this select: 3 - [SIDE] - Activation Side
+ _this select: 4 - STRING - Patrol Radius
+
+ Returns:
+ Nothing
+*/
+
+_bomber = _this select 0;
+_explosionSize = _this select 1;
+_explosionEffect = _this select 2;
+_activationSide = _this select 3;
+_patrolRadius = _this select 4;
+_activationDistance = _this select 5;
+
+_patrolRadius = parseNumber _patrolRadius;
+_activationDistance = parseNumber _activationDistance;
+
+if (typeName _activationSide == typeName sideLogic) then {_activationSide = [_activationSide]};
+
+// set 1 for debug sound
+_sound = 0;
+_targets = ["Car", "Tank", "Man"];
+
+removeAllWeapons _bomber;
+
+_dummyObject = "Land_HelipadEmpty_F" createVehicle (getPos _bomber);
+_dummyObject attachTo [_bomber,[0,0,0]];
+
+_bomberGroup = group _bomber;
+_bomberGroup setBehaviour "CARELESS";
+_bomberGroup setSpeedMode "LIMITED";
+
+if (_patrolRadius > 0) then
+{
+ _numberOfWaypoints = 6;
+ _degreesPerWaypoint = 360 / _numberOfWaypoints;
+ _centerPoint = position _bomber;
+ for "_waypointNumber" from 0 to (_numberOfWaypoints - 1) do
+ {
+ private ["_currentDegrees"];
+ _currentDegrees = _degreesPerWaypoint * _waypointNumber;
+ _waypoint = _bomberGroup addWaypoint [[_centerPoint, _patrolRadius, _currentDegrees] call Bis_fnc_relPos, 5];
+ };
+ _waypoint = _bomberGroup addWaypoint [[_centerPoint, _patrolRadius, 0] call BIS_fnc_relPos, 5];
+ _waypoint setWaypointType "CYCLE";
+};
+
+_check = true;
+
+while {alive _bomber && _check} do
+{
+ sleep 1;
+ _nearestObjects = (getPos _bomber) nearObjects 100;
+
+ if ({side _x in _activationSide} count _nearestObjects > 0) then
+ {
+ while {(alive _bomber) && (_check)} do
+ {
+ sleep 1;
+ _nearestUnit = [];
+ {if (side _x in _activationSide) then {_nearestUnit = _nearestUnit + [_x]}} forEach _nearestObjects;
+ _count = count _nearestUnit;
+
+ for [{_x = 0}, {_x < _count}, {_x = _x + 1}] do
+ {
+ _enemyUnit = _nearestUnit select _x;
+ {
+ if (_enemyUnit isKindOf _x && alive _enemyUnit) then
+ {
+ _bomber setSkill 1;
+ _bomber doMove (getPos _enemyUnit);
+ sleep 5 + random 5;
+ if ((_bomber distance _enemyUnit) < 40) then
+ {
+ _bomberGroup setSpeedMode "FULL";
+ _bomberGroup setBehaviour "CARELESS";
+ _bomber setUnitPos "UP";
+ _bomber disableAI "TARGET";
+ _bomber disableAI "AUTOTARGET";
+
+ _bomberGroup setCombatMode "BLUE";
+ _bomberGroup allowFleeing 0;
+ while {alive _bomber} do
+ {
+ sleep 1;
+ _bomber doMove (getPos _enemyUnit);
+ _bomber addRating -10000;
+
+ if (_sound == 1) then
+ {
+ [_bomber, "FD_Start_F"] remoteExec ["say3D", 0, _bomber];
+ _sound = 0;
+ };
+ if ((_bomber distance _enemyUnit) <= _activationDistance) exitWith{_check = false;};
+ };
+ };
+ };
+ } forEach _targets;
+ };
+ };
+ };
+};
+
+if (alive _bomber) then
+{
+ switch (_explosionEffect) do
+ {
+ case 0:
+ {
+ [getPos _bomber, _explosionSize] call Achilles_fnc_deadlyExplosion;
+ _bomber setDamage 1;
+ };
+ case 1:
+ {
+ [getPos _bomber, _explosionSize] call Achilles_fnc_disablingExplosion;
+ _bomber setDamage 1;
+ };
+ case 2:
+ {
+ [getPos _bomber] call Achilles_fnc_fakeExplosion;
+ _bomber setDamage 1;
+ };
+ };
+};
+
+while {(count (waypoints _bomberGroup)) > 0} do
+{
+ deleteWaypoint ((waypoints _bomberGroup) select 0);
+};
+
+deleteVehicle _dummyObject;
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/init/fn_onCuratorStart.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/init/fn_onCuratorStart.sqf
index 3b4cd45c..0786ecf1 100644
--- a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/init/fn_onCuratorStart.sqf
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/init/fn_onCuratorStart.sqf
@@ -58,6 +58,30 @@ _curatorModule addEventHandler ["CuratorGroupPlaced", { _this call Achilles_fnc_
_curatorModule addEventHandler ["CuratorObjectDoubleClicked", { _this call Achilles_fnc_HandleCuratorObjectDoubleClicked; }];
_curatorModule addEventHandler ["CuratorObjectEdited", {_this call Achilles_fnc_HandleCuratorObjectEdited; }];
_curatorModule addEventHandler ["CuratorObjectDeleted", {_this call Achilles_fnc_HandleCuratorObjectDeleted; }];
+_curatorModule addEventHandler ["CuratorWaypointPlaced", {_this call Achilles_fnc_HandleCuratorWpPlaced; }];
+
+// Handle Disconnect
+[[],
+{
+ addMissionEventHandler ["HandleDisconnect",{
+ params ["_unit"];
+ private _handled = false;
+
+ // if player was a promoted Zeus
+ private _module = _unit getVariable ["Achilles_var_promoZeusModule", objNull];
+ if (not isNull _module) then {(group _module) deleteGroupWhenEmpty true; deleteVehicle _module};
+
+ if (not isNil {_unit getVariable "Achilles_var_switchUnit_data"}) then
+ {
+ // if unit was controlled by Zeus with "select player"
+ private _playerUnit = (_unit getVariable "Achilles_var_switchUnit_data") select 1;
+ deleteVehicle _playerUnit;
+ _unit setVariable ["Achilles_var_switchUnit_data", nil, true];
+ _handled = true;
+ };
+ _handled;
+ }]
+}] remoteExecCall ["call",2];
// Unlock all available attributes
_curatorModule setVariable ["BIS_fnc_curatorAttributesplayer",["%ALL"]];
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/replacement/fn_curatorObjectEdited.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/replacement/fn_curatorObjectEdited.sqf
new file mode 100644
index 00000000..d0692810
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/replacement/fn_curatorObjectEdited.sqf
@@ -0,0 +1,118 @@
+/*
+ Author: Karel Moricky (edited by Kex for specify position exception handling)
+
+ Description:
+ Code executed when curator object is edited (i.e., moved or rotated).
+ When a soldier or a vehicle is moved high above ground, create a parachute for them
+
+ Parameter(s):
+ 0: OBJECT - curator module
+ 1: OBJECT - edited object
+
+ Returns:
+ BOOL
+*/[42,_this] call bis_fnc_log;
+
+#define EHVAR "BIS_fnc_curatorObjectEdited_eh"
+#define PARAVAR "BIS_fnc_curatorObjectEdited_para"
+
+_curator = _this param [0,objnull,[objnull]];
+_object = _this param [1,objnull,[objnull]];
+_para = objnull;
+
+_object call bis_fnc_curatorAttachObject;
+
+_objectPos = position _object;
+_objectData = _object call bis_fnc_objectType;
+_objectCategory = _objectData select 0;
+_objectType = _objectData select 1;
+
+//--- Delete existing parachute
+deletevehicle (_object getvariable [PARAVAR,objnull]);
+
+// if specify position
+if (_object in (missionNamespace getVariable ["Achilles_var_preplaceModeObjects",[]])) exitWith {true};
+
+//--- Slingload when possible
+_curatormouseover = curatormouseover;
+if ((_curatormouseover select 0) == "object") exitwith {
+ _target = _curatormouseover select 1;
+ if (_target canSlingload _object) then {
+ [getslingload _target,0] call bis_fnc_setheight;
+ detach _object;
+ _object setpos (_target modeltoworld [0,0,-15]);
+ _lol = _target setSlingload _object;
+ } else {
+ if (!isnull ropeattachedto _object) then {
+ (ropeattachedto _object) setSlingload objnull;
+ _object setposatl [position _target select 0,position _target select 1,0];
+ };
+ };
+};
+
+switch _objectCategory do {
+ case "Object": {
+ switch _objectType do {
+ case "AmmoBox": {
+ //--- Create parachute for vehicles in the air
+ if ((position _object select 2) > 20 && alive _object) then {
+ _para = createvehicle ["B_Parachute_02_F",_objectPos,[],0,"none"];
+ _object attachto [_para,[0,0,1]];
+ };
+ };
+ };
+ };
+ case "Vehicle";
+ case "VehicleAutonomous": {
+ switch _objectType do {
+ case "Car";
+ case "Motorcycle";
+ case "Ship";
+ case "Submarine";
+ case "TrackedAPC";
+ case "Tank";
+ case "WheeledAPC": {
+ //--- Create parachute for vehicles in the air
+ if ((position _object select 2) > 20 && alive _object) then {
+ _para = createvehicle ["B_Parachute_02_F",_objectPos,[],0,"none"];
+ _object attachto [_para,[0,0,(abs ((boundingbox _object select 0) select 2))]];
+ };
+ };
+ };
+ };
+ case "Soldier": {
+ //--- Create parachute for soldiers in the air
+ if ((position _object select 2) > 20 && alive _object) then {
+ _para = createvehicle ["Steerable_Parachute_F",_objectPos,[],0,"none"];
+ _object moveindriver _para;
+
+ };
+ };
+};
+
+//--- Set parachute
+if !(isnull _para) then {
+ _para setpos _objectPos;
+ _para setdir direction _object;
+ _object setvariable [PARAVAR,_para];
+ _para setvelocity [0,0,-1];
+
+ //--- Play jet flyby sound to warn players about parachutes
+ if (time - (missionnamespace getvariable ["bis_fnc_curatorobjectedited_paraSoundTime",0]) > 0) then {
+ _soundFlyover = ["BattlefieldJet1","BattlefieldJet2"] call bis_fnc_selectrandom;
+ [[_para,_soundFlyover,"say3d"],"bis_fnc_sayMessage"] call bis_fnc_mp;
+ missionnamespace setvariable ["bis_fnc_curatorobjectedited_paraSoundTime",time + 10]
+ };
+
+ [_object,_para] spawn {
+ scriptname "BIS_fnc_curatorObjectEdited: Parachute";
+ _object = _this select 0;
+ _para = _this select 1;
+
+ waituntil {isnull _para || isnull _object};
+ _object setdir direction _object;
+ deletevehicle _para;
+ };
+};
+
+true
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/replacement/fn_toggleCuratorVisionMode.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/replacement/fn_toggleCuratorVisionMode.sqf
new file mode 100644
index 00000000..5e9d853c
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/replacement/fn_toggleCuratorVisionMode.sqf
@@ -0,0 +1,85 @@
+/*
+ Author: Karel Moricky
+
+ Description:
+ Toggle curator vision mode
+
+ Parameter(s):
+ 0: OBJECT - curator
+ 1 (Optional): NUMBER - change index (default: 1)
+
+ Returns:
+ BOOL
+*/
+
+private ["_curator","_add","_modes","_modesCount","_index","_mode"];
+_curator = _this param [0,objnull,[objnull]];
+_add = _this param [1,1,[0]];
+_modes = _curator call bis_fnc_curatorVisionModes;
+_modesCount = count _modes;
+
+_index = _curator getvariable ["bis_fnc_curatorVisionModes_current",0];
+_index = (_index + _add) % _modesCount;
+if (_index < 0) then {_index = _modesCount + _index;};
+_mode = _modes select _index;
+_curator setvariable ["bis_fnc_curatorVisionModes_current",_index];
+
+if !(isnull curatorcamera) then {
+ switch _mode do {
+ //--- NVG
+ case -2:
+ {
+ camusenvg true;
+ false setCamUseTi 0;
+ };
+ //--- Normal
+ case -1: {
+ camusenvg false;
+ false setCamUseTi 0;
+ };
+ //--- TI
+ default {
+ camusenvg false;
+ true setCamUseTi _mode;
+ };
+ };
+
+ private _effect = missionNamespace getVariable "Achilles_var_NVGBrightnessEffect";
+ if(_mode == -2) then
+ {
+ if (isNil "_effect") then
+ {
+ _effect = ppEffectCreate ["ColorCorrections", 312312];
+ missionNamespace setVariable ["Achilles_var_NVGBrightnessEffect", _effect];
+ ["onLoad",
+ {
+ private _curator = getAssignedCuratorLogic player;
+ private _modes = _curator call bis_fnc_curatorVisionModes;
+ private _index = _curator getvariable ["bis_fnc_curatorVisionModes_current",0];
+ if (_modes select _index == -2) then
+ {
+ (missionNamespace getVariable "Achilles_var_NVGBrightnessEffect") ppEffectEnable true;
+ };
+ }] call Achilles_fnc_addCuratorInterfaceEventHandler;
+ ["onUnload", {(missionNamespace getVariable "Achilles_var_NVGBrightnessEffect") ppEffectEnable false}] call Achilles_fnc_addCuratorInterfaceEventHandler;
+ };
+
+ //--- NVG => enable brightness adjustment
+ _effect ppEffectForceInNVG true;
+ _effect ppEffectEnable true;
+ private _brightness = player getVariable ["ace_nightvision_NVGBrightness", 0];
+ _effect ppEffectAdjust [1, (_brightness + 1), 0, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]];
+ _effect ppEffectCommit 0;
+
+ } else
+ {
+ if (not isNil "_effect") then
+ {
+ _effect ppEffectEnable false;
+ };
+ };
+
+ ([] call bis_fnc_rsclayer) cutrsc ["RscCuratorVisionModes","plain"];
+ playsound ["RscDisplayCurator_visionMode",true];
+};
+_mode
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/selectUnit/fn_switchUnit_exit.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/selectUnit/fn_switchUnit_exit.sqf
new file mode 100644
index 00000000..69f27cb8
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/selectUnit/fn_switchUnit_exit.sqf
@@ -0,0 +1,41 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// AUTHOR: Kex
+// DATE: 6/6/17
+// VERSION: 1.0
+// DESCRIPTION: terminates "Achilles_fnc_switchUnit_start".
+//
+// ARGUMENTS:
+// nothing
+//
+// RETURNS:
+// nothing (procedure)
+//
+// Example:
+// [] call Achilles_fnc_switchUnit_exit;
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+private _unit = bis_fnc_moduleRemoteControl_unit;
+if (isNull _unit) exitWith {bis_fnc_moduleRemoteControl_unit = nil};
+(_unit getVariable "Achilles_var_switchUnit_data") params ["_","_playerUnit","_damageAllowed"];
+if (isNull _playerUnit) exitWith {_unit setVariable ["Achilles_var_switchUnit_data", nil, true]};
+private _unitPos = getposatl _unit;
+private _camPos = [_unitPos,10,direction _unit + 180] call bis_fnc_relpos;
+_camPos set [2,(_unitPos select 2) + (getterrainheightasl _unitPos) - (getterrainheightasl _camPos) + 10];
+(getassignedcuratorlogic _playerUnit) setvariable ["bis_fnc_modulecuratorsetcamera_params",[_camPos,_unit]];
+_unit removeEventHandler ["HandleDamage", _unit getVariable "Achilles_var_switchUnit_damageEHID"];
+
+if(isClass (configfile >> "CfgPatches" >> "ace_medical")) then
+{
+ _eh_id = _unit getVariable ["Achilles_var_switchUnit_ACEdamageEHID", -1];
+ if (_eh_id != -1) then
+ {
+ ["ace_unconscious", _eh_id] call CBA_fnc_removeEventHandler;
+ _unit setVariable ["Achilles_var_switchUnit_ACEdamageEHID", nil];
+ };
+};
+selectPlayer _playerUnit;
+_playerUnit enableAI "ALL";
+_playerUnit allowDamage _damageAllowed;
+openCuratorInterface;
+_unit setVariable ["Achilles_var_switchUnit_data", nil, true];
+bis_fnc_moduleRemoteControl_unit = nil;
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/functions_f_achilles/functions/selectUnit/fn_switchUnit_start.sqf b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/selectUnit/fn_switchUnit_start.sqf
new file mode 100644
index 00000000..644b8008
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/functions_f_achilles/functions/selectUnit/fn_switchUnit_start.sqf
@@ -0,0 +1,58 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// AUTHOR: Kex
+// DATE: 6/15/17
+// VERSION: 2.0
+// DESCRIPTION: application of "selectPlayer" script command.
+//
+// ARGUMENTS:
+// _this select 0: OBJECT - Unit to switch to.
+//
+// RETURNS:
+// nothing (procedure)
+//
+// Example:
+// [_unit] call Achilles_fnc_switchUnit_start;
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+private _error = "";
+private _unit = effectiveCommander (param [0]);
+if (not (side group _unit in [east,west,resistance,civilian])) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorEmpty";};
+if (isplayer _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorPlayer";};
+if (not alive _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorDestroyed";};
+if (isClass (configfile >> "CfgPatches" >> "ace_medical") and {_unit getVariable ["ACE_isUnconscious", false]}) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorDestroyed";};
+if (isnull _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorNull";};
+if (isuavconnected vehicle _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorControl";};
+
+if (_error != "") exitWith {[_error] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"; nil};
+
+private _playerUnit = player;
+private _damage_allowed = isDamageAllowed _playerUnit;
+_unit setVariable ["Achilles_var_switchUnit_data",[name _unit, _playerUnit, _damage_allowed], true];
+bis_fnc_moduleRemoteControl_unit = _unit;
+
+selectPlayer _unit;
+_playerUnit disableAI "ALL";
+_playerUnit enableAI "ANIM";
+_playerUnit allowDamage false;
+
+private _eh_id = _unit addEventHandler ["HandleDamage",
+{
+ params ["_unit", "_selection", "_handler"];
+
+ if (_handler >= 0.999) then
+ {
+ if (_selection in ["","body","head"]) then
+ {
+ [] call Achilles_fnc_switchUnit_exit;
+ };
+ _handler = 0.999;
+ };
+ _handler;
+}];
+_unit setVariable ["Achilles_var_switchUnit_damageEHID", _eh_id];
+
+if(isClass (configfile >> "CfgPatches" >> "ace_medical")) then
+{
+ _eh_id = ["ace_unconscious", {if (_this select 1 and {_this select 0 == player}) then {[] call Achilles_fnc_switchUnit_exit}}] call CBA_fnc_addEventHandler;
+ _unit setVariable ["Achilles_var_switchUnit_ACEdamageEHID", _eh_id];
+};
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/functions_f_ares.pbo b/@AresModAchillesExpansion/addons/functions_f_ares.pbo
index f659a1d8..8a86f40a 100644
Binary files a/@AresModAchillesExpansion/addons/functions_f_ares.pbo and b/@AresModAchillesExpansion/addons/functions_f_ares.pbo differ
diff --git a/@AresModAchillesExpansion/addons/functions_f_ares.pbo.achilles_0.0.7d.bisign b/@AresModAchillesExpansion/addons/functions_f_ares.pbo.achilles_0.0.7d.bisign
deleted file mode 100644
index 6169b7fd..00000000
Binary files a/@AresModAchillesExpansion/addons/functions_f_ares.pbo.achilles_0.0.7d.bisign and /dev/null differ
diff --git a/@AresModAchillesExpansion/addons/functions_f_ares.pbo.achilles_0.0.8.bisign b/@AresModAchillesExpansion/addons/functions_f_ares.pbo.achilles_0.0.8.bisign
new file mode 100644
index 00000000..2b696330
Binary files /dev/null and b/@AresModAchillesExpansion/addons/functions_f_ares.pbo.achilles_0.0.8.bisign differ
diff --git a/@AresModAchillesExpansion/addons/functions_f_ares/features/fn_addIntel.sqf b/@AresModAchillesExpansion/addons/functions_f_ares/features/fn_addIntel.sqf
index f59ce53b..1f316cd4 100644
--- a/@AresModAchillesExpansion/addons/functions_f_ares/features/fn_addIntel.sqf
+++ b/@AresModAchillesExpansion/addons/functions_f_ares/features/fn_addIntel.sqf
@@ -25,7 +25,14 @@ _finder = param [3,"",[""]];
_shared = param [4,0,[0]];
_fnc_scriptName = "Achilles_Intel";
-_shared_hint = [localize "STR_INTEL_WAS_SHARED_WITH_SIDE",localize "STR_INTEL_WAS_SHARED_WITH_GROUP", localize "STR_INTEL_WAS_SHARED_WITH_NONE"] select _shared;
+_shared_hint = if (isLocalized "STR_INTEL_WAS_SHARED_WITH_SIDE") then
+{
+ [localize "STR_INTEL_WAS_SHARED_WITH_SIDE",localize "STR_INTEL_WAS_SHARED_WITH_GROUP", localize "STR_INTEL_WAS_SHARED_WITH_NONE"] select _shared;
+} else
+{
+ ["(The intel was shared with your side)","(The intel was shared with your group)", "(The intel was shared with no one)"] select _shared;
+};
+
// Add location and shared hint information
_text = format
@@ -38,14 +45,13 @@ _text = format
+ "
" + "" + _shared_hint + "";
// Add the intel to the diary
-["intelAdded",[_title,"\A3\ui_f\data\map\markers\military\warning_ca.paa"]] call bis_fnc_showNotification;
+["intelAdded",[format [localize "STR_INTEL_FOUND",_finder,_title] ,"\A3\ui_f\data\map\markers\military\warning_ca.paa"]] call bis_fnc_showNotification;
if !(player diarysubjectexists _fnc_scriptName) then
{
player creatediarysubject [_fnc_scriptName,"Ares " + localize "STR_A3_BIS_fnc_initIntelObject_intel"];
};
player creatediaryrecord [_fnc_scriptName,[_title,_text]];
-// open the map
-openmap [true,false];
+if (name player == _finder) then {openmap [true,false]};
deleteMarker _marker;
diff --git a/@AresModAchillesExpansion/addons/language_f.pbo b/@AresModAchillesExpansion/addons/language_f.pbo
index c3a03642..5da3a55d 100644
Binary files a/@AresModAchillesExpansion/addons/language_f.pbo and b/@AresModAchillesExpansion/addons/language_f.pbo differ
diff --git a/@AresModAchillesExpansion/addons/language_f.pbo.achilles_0.0.7d.bisign b/@AresModAchillesExpansion/addons/language_f.pbo.achilles_0.0.7d.bisign
deleted file mode 100644
index dd80c261..00000000
Binary files a/@AresModAchillesExpansion/addons/language_f.pbo.achilles_0.0.7d.bisign and /dev/null differ
diff --git a/@AresModAchillesExpansion/addons/language_f.pbo.achilles_0.0.8.bisign b/@AresModAchillesExpansion/addons/language_f.pbo.achilles_0.0.8.bisign
new file mode 100644
index 00000000..afc2c532
Binary files /dev/null and b/@AresModAchillesExpansion/addons/language_f.pbo.achilles_0.0.8.bisign differ
diff --git a/@AresModAchillesExpansion/addons/language_f/stringtable.xml b/@AresModAchillesExpansion/addons/language_f/stringtable.xml
index 75151c1f..ecbe25d1 100644
--- a/@AresModAchillesExpansion/addons/language_f/stringtable.xml
+++ b/@AresModAchillesExpansion/addons/language_f/stringtable.xml
@@ -465,6 +465,12 @@
Изменить возможности
Fähigkeiten ändern
+
+ Change Side
+ Change Side
+ Changez le camp
+ Seite wechseln
+
Bind Variable to Object
Bind Variable to Object
@@ -644,13 +650,6 @@
Создать/Изменить развед.данные
Hinweis platzieren/bearbeiten
-
- Spawn Intel
- Spawn Intel
- Créez un renseignement
- Создать развед.данные
- Hinweis spawnen
-
ACE Injury
ACE Injury
@@ -835,31 +834,61 @@
Lock doors
Lock doors
Verrouillez la porte
+ Tür abschließen
Set date
Set date
Modifiez la date
+ Datum setzen
Show in config
Show in config
Montrez la config
+ Datum setzen
+
+
+ Function viewer
+ Function viewer
+ Montrez les functions
+ Funktionsviewer
Show in anim viewer
Show in anim viewer
Ouvrez la visionneuse d'animation
+ In Animationsviewer öffnen
Make invincible
Make invincible
Rendre invincible
+ Unsterblich machen
CAS - Bomb Strike
CAS - Bomb Strike
AAR - Bombe
+ CAS - Bombe
+
+
+ Set Suicide Bomber
+ Set Suicide Bomber
+ Terroriste suicidaire
+ Selbstmordattentäter setzen
+
+
+ Create IED
+ Create IED
+ Créez un EEI
+ Erstelle ein Sprengfalle
+
+
+ Promote to Zeus
+ Promote to Zeus
+ Promouvez à la fonction de Zeus
+ Als Zeus befördern
@@ -1201,8 +1230,8 @@
Keine Einheit wurde ausgewählt!
- This modul has to be placed on a unit!
- This modul has to be placed on a unit!
+ This module has to be placed on a unit!
+ This module has to be placed on a unit!
Il faut mettre ce module sur une unité!
Этот модуль должен быть установлен на юните!
Dieses Modul muss auf eine Einheit platziert werden!
@@ -1623,11 +1652,11 @@
Text des Hinweises
- %1 found intel %2!
- %1 found intel %2!
- %1 a trouvé le renseignement %2!
- %1 нашел развед.данные %2!
- %1 hat den Hinweis %2 gefunden!
+ %1 found intel "%2"!
+ %1 found intel "%2"!
+ %1 a trouvé le renseignement "%2"!
+ %1 нашел развед.данные "%2"!
+ %1 hat den Hinweis "%2" gefunden!
Pick up intel
@@ -1920,12 +1949,12 @@
Высота тумана(ур.моря)
Nebelhöhe (ü. M.)
-
- Altitude (ASL)
- Altitude (ASL)
- Altitude du brouillard
+
+ Altitude (ASL/ATL)
+ Altitude (ASL/ATL)
+ Altitude
Высота (ур.моря)
- Höhe (ü. M.)
+ Höhe (ü. M./ü. Boden)
Intensity
@@ -1953,14 +1982,14 @@
medium
moyen
Средне
- mittel
+ mittelschwer
strong
strong
fort
Сильно
- stark
+ schwer
Include AI
@@ -2465,13 +2494,6 @@
выключить силой
zwingend ausgeschaltet
-
- Thermal optics
- Thermal optics
- Caméra thermique
- ИК оптика
- Wärmebildkamera
-
Tactical Light/IR
Tactical Light/IR
@@ -2690,6 +2712,7 @@
Pain level
Pain level
Douleur
+ Schmerzlevel
Hearth rate
@@ -2707,6 +2730,7 @@
Bullet
Bullet
Balle
+ Kugel
Grenade
@@ -2754,6 +2778,223 @@
no dynamic loadout available
Pas de l'armement dynamique
Keine dynamische Bewaffnung verfügbar
+
+
+ Switch unit
+ Switch unit
+ Intervertissez l'unité
+ Einheit wechseln
+
+
+ Brightness
+ Brightness
+ Brillance
+ Helligkeit
+
+
+ Object is an IED already!
+ Object is an IED already!
+ C'est déjà un EEI
+ Dies ist bereits eine Sprengfalle
+
+
+ Unit is an Suicide Bomber already!
+ Unit is an Suicide Bomber already!
+ C'est déjà un terroriste suicidaire
+ Dies ist bereits ein Selbstmordattentäter
+
+
+ Objects not allowed! Use the Create IED module instead!
+ Objects not allowed! Use the Create IED module instead!
+ Des objets ne sont pas authorisés! Prenez un "Créez un EEI" module à défaut
+ Objekte sind nicht erlaubt! Benutze ein "Erstelle ein Sprengfalle" Modul stattdessen!
+
+
+ Units not allowed, use Suicide Bomber module instead!
+ Units not allowed, use Suicide Bomber module instead!
+ Des unités ne sont pas authorisés! Prenez un "Terroriste suicidaire" module à défaut
+ Einheiten sind nicht erlaubt! Benutze ein "Selbstmordattentäter setzen" Modul stattdessen!
+
+
+ No vehicle selected!
+ No vehicle selected!
+ Pas de véhicule a été choisi!
+ Kein Fahrzeug wurde ausgewählt!
+
+
+ Activation Side cannot match the unit's side!
+ Activation Side cannot match the unit's side!
+ Le camp d'activation ne peut pas être le camp de l'unité!
+ Aktivierungsseite kann nicht die Seite der Einheit sein!
+
+
+ Set Unit as an Suicide Bomber
+ Set Unit as an Suicide Bomber
+ Convertez l'unité à un terroriste suicidaire!
+ Einheit als Selbstmordattentäter einsetzen
+
+
+ Explosion Size
+ Explosion Size
+ La force de l'éxplosion
+ Explosionsstärke
+
+
+ Small
+ Small
+ faible
+ Schwach
+
+
+ Medium
+ Medium
+ Moyenne
+ Mittelstark
+
+
+ Large
+ Large
+ Forte
+ Stark
+
+
+ Explosion Effect
+ Explosion Effect
+ L'effet d'explosion
+ Explosionseffekt
+
+
+ Deadly
+ Deadly
+ Dévastatrice
+ Verheerend
+
+
+ Disabling
+ Disabling
+ Neutralization
+ Ausserbetriebssetzend
+
+
+ Fake
+ Fake
+ Fake
+ Fake
+
+
+ None
+ None
+ Aucun
+ Kein
+
+
+ Activation Distance [m]
+ Activation Distance [m]
+ La distance d'activation [m]
+ Aktivierungsdistanz [m]
+
+
+ Patrol Radius [m]
+ Patrol Radius [m]
+ Le radius de la patrouille[m]
+ Radius der Patrouille [m]
+
+
+ Activation Side
+ Activation Side
+ Le camp d'activation
+ Aktivierungsseite
+
+
+ Equip with IED jammer
+ Equip with IED jammer
+ Équipez d'un brouilleur d'EEI
+ Mit Sprengfallenstörsender ausrüsten
+
+
+ Add IED jammer
+ Add IED jammer
+ Équipez d'un brouilleur d'EEI
+ Mit Sprengfallenstörsender ausrüsten
+
+
+ Set Object as IED
+ Set Object as IED
+ Équipez l'objet d'un EEI
+ Objekt als Sprengfalle einsetzen
+
+
+ Can be Disarmed
+ Can be Disarmed
+ Désamorçable
+ Kann entschärft werden
+
+
+ Disarm Time [s]
+ Disarm Time [s]
+ La durée du désamorçage [s]
+ Entschärfungsdauer [s]
+
+
+ Activation Type
+ Activation Type
+ Le type d'activation
+ Aktivierungstyp
+
+
+ Manual
+ Manual
+ Manuel
+ Manuel
+
+
+ Proximity
+ Proximity
+ La proximité
+ Distanz
+
+
+ Radio
+ Radio
+ La proximité
+ Distanz
+
+
+ Is Jammable
+ Is Jammable
+ Perturbable
+ Kann gestört werden
+
+
+ Create an intel on the object
+ Create an intel on the object
+ Créez un renseignement sur l'objet"
+ Hinweis am Objekt hinterlegen
+
+
+ Spawn Intel
+ Spawn Intel
+ Créez un renseignement
+ Создать развед.данные
+ Hinweis spawnen
+
+
+ Edit Intel "%1"
+ Edit Intel "%1"
+ Modifiez le renseignement "%1"
+ Hinweis "%1" bearbeiten
+
+
+ Unit has already been promoted!
+ Unit has already been promoted!
+ L'unité a déjà été promue!
+ Einheit wurde bereits befördert!
+
+
+ No player has been selected!
+ No player has been selected!
+ Pas de joueur a été choisi!
+ Kein Spieler wurde ausgewählt!
@@ -2820,7 +3061,7 @@
The Ares Modules have informative icons in the module tree.%1The most common are described here:
%1%1<img image='\achilles\data_f_ares\icons\icon_default.paa'/> This module can be placed anywhere.
- %1<img image='\achilles\data_f_achilles\icons\icon_unit.paa'/> This modul has to be placed on units.
+ %1<img image='\achilles\data_f_achilles\icons\icon_unit.paa'/> This module has to be placed on units.
%1<img image='\achilles\data_f_achilles\icons\icon_default_unit.paa'/> This can be placed either on a unit or anywhere. The module options available depend on the choice!
%1<img image='\achilles\data_f_achilles\icons\icon_object.paa'/> This module has to be placed on an object but can often also include units.
%1<img image='\achilles\data_f_achilles\icons\icon_default_object.paa'/> This can be placed either on an object or anywhere. The module options available depend on the choice!
@@ -3089,6 +3330,14 @@
Ungroup selected objects
Gruppierung von ausgewählten Objekten aufheben
+
+ Increase NVG brightness
+ Nachtsicht Helligkeit erhöhen
+
+
+ Decrease NVG brightness
+ Nachtsicht Helligkeit verringern
+
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles.pbo b/@AresModAchillesExpansion/addons/modules_f_achilles.pbo
index e20798aa..99decbf3 100644
Binary files a/@AresModAchillesExpansion/addons/modules_f_achilles.pbo and b/@AresModAchillesExpansion/addons/modules_f_achilles.pbo differ
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.achilles_0.0.7d.bisign b/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.achilles_0.0.7d.bisign
deleted file mode 100644
index 710e4a01..00000000
Binary files a/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.achilles_0.0.7d.bisign and /dev/null differ
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.achilles_0.0.8.bisign b/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.achilles_0.0.8.bisign
new file mode 100644
index 00000000..f05fa3c0
Binary files /dev/null and b/@AresModAchillesExpansion/addons/modules_f_achilles.pbo.achilles_0.0.8.bisign differ
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ModuleACEHeal.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ModuleACEHeal.sqf
index 3b5295c2..8c127051 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ModuleACEHeal.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ModuleACEHeal.sqf
@@ -17,7 +17,7 @@ _mode = if (!isNull _unit) then {"single"} else {"multiple"};
_options = [localize "STR_RANDOM",localize "STR_NONE_INJURY",localize "STR_LIGHT_INJURY", localize "STR_SEVERE"];
-if (isClass (configfile >> "CfgPatches" >> "ace_main")) then
+if (isClass (configfile >> "CfgPatches" >> "ace_medical")) then
{
if (_mode == "single") then
{
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ModuleACEInjury.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ModuleACEInjury.sqf
index 5a8ecc11..15b7622b 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ModuleACEInjury.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/ACE/functions/fn_ModuleACEInjury.sqf
@@ -20,7 +20,7 @@ private _mode = if (!isNull _unit) then {"single"} else {"multiple"};
private _severity_options = [localize "STR_NONE_INJURY",localize "STR_RANDOM",localize "STR_MODERATE_INJURY", localize "STR_SEVERE"];
-if (isClass (configfile >> "CfgPatches" >> "ace_main")) then
+if (isClass (configfile >> "CfgPatches" >> "ace_medical")) then
{
// ACE Injury System
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/cfgFunctionsBehaviours.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/cfgFunctionsBehaviours.hpp
index 7cbdebc9..f8b43d98 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/cfgFunctionsBehaviours.hpp
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/cfgFunctionsBehaviours.hpp
@@ -6,4 +6,5 @@ class Achilles_Behaviours_Function_Base
class BehaviourSitOnChair {};
class BehaviourChangeAbility {};
class BehaviourAltitude {};
+ class BehaviourSuicideBomber {};
};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/cfgVehiclesModulesBehaviours.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/cfgVehiclesModulesBehaviours.hpp
index b8ef9890..4431cc5c 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/cfgVehiclesModulesBehaviours.hpp
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/cfgVehiclesModulesBehaviours.hpp
@@ -6,6 +6,13 @@ class Achilles_Behaviours_Module_Base : Achilles_Module_Base
portrait = "\achilles\data_f_achilles\icons\icon_default_unit.paa";
};
+class Enyo_Behaviours_Module_Base : Enyo_Module_Base
+{
+ category = "Behaviours";
+ icon = "\achilles\data_f_achilles\icons\icon_unit.paa";
+ portrait = "\achilles\data_f_achilles\icons\icon_unit.paa";
+};
+
class Achilles_Animation_Module : Achilles_Behaviours_Module_Base
{
scopeCurator = 2;
@@ -51,4 +58,13 @@ class Achilles_Change_Altitude_Module : Achilles_Behaviours_Module_Base
_generalMacro = "Achilles_Change_Altitude_Module";
displayName = "$STR_CHANGE_ALTITUDE";
function = "Achilles_fnc_BehaviourAltitude";
-};
\ No newline at end of file
+};
+
+class Achilles_SuicideBomber_Module : Enyo_Behaviours_Module_Base
+{
+ scopeCurator = 2;
+ curatorCanAttach = 1;
+ _generalMacro = "Enyo_SuicideBomber_Module";
+ displayName = "$STR_ENYO_SET_SUICIDE_BOMBER";
+ function = "Achilles_fnc_BehaviourSuicideBomber";
+};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/functions/fn_BehaviourAltitude.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/functions/fn_BehaviourAltitude.sqf
index b431f405..5c31063e 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/functions/fn_BehaviourAltitude.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/functions/fn_BehaviourAltitude.sqf
@@ -13,7 +13,7 @@ _dialogResult =
[
localize "STR_CHANGE_ALTITUDE",
[
- [(localize "STR_Altitude_ASL") + " [m]", "","0"]
+ [(localize "STR_Altitude_ASL_ATL") + " [m]", "","0"]
]
] call Ares_fnc_ShowChooseDialog;
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/functions/fn_BehaviourSuicideBomber.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/functions/fn_BehaviourSuicideBomber.sqf
new file mode 100644
index 00000000..c19d32a3
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Behaviours/functions/fn_BehaviourSuicideBomber.sqf
@@ -0,0 +1,89 @@
+/*
+ Author: CreepPork_LV, shay_gman
+
+ Description:
+ Sets a unit to be an suicide bomber
+
+ Parameters:
+ _this select: 0 - OBJECT - Object that the module was placed upon
+
+ Returns:
+ Nothing
+*/
+
+#include "\achilles\modules_f_ares\module_header.hpp"
+
+if(isNil "Achilles_var_ied_init_done") then
+{
+ publicVariableServer "Achilles_fnc_createIED";
+ publicVariableServer "Achilles_fnc_createSuicideBomber";
+ publicVariableServer "Achilles_fnc_IED_DamageHandler";
+ publicVariableServer "Achilles_fnc_hasACEExplosives";
+ publicVariableServer "Achilles_fnc_fakeExplosion";
+ publicVariableServer "Achilles_fnc_disablingExplosion";
+ publicVariableServer "Achilles_fnc_deadlyExplosion";
+
+ Achilles_var_ied_init_done = true;
+};
+
+// Gets the object that the module was placed upon
+_object = [_logic, false] call Ares_fnc_GetUnitUnderCursor;
+
+// Displays error message if no object or unit has been selected.
+if (isNull _object) exitWith {[localize "STR_NO_UNIT_SELECTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+// Displays error message if the module has been placed on top of a player.
+if (isPlayer _object || isPlayer driver _object) exitWith {[localize "STR_NO_UNIT_SELECTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+// Displays error message if module has been placed on top of another IED
+if (_object getVariable ["isIED", false]) exitWith {[localize "STR_ENYO_OBJECT_IS_IED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+if (_object getVariable ["isSB", false]) exitWith {[localize "STR_ENYO_UNIT_IS_SB"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+// Sets Suicide Bomber functionality
+if (_object isKindOf "Man") then
+{
+ _dialogResult =
+ [
+ localize "STR_ENYO_SET_UNIT_AS_SB",
+ [
+ [localize "STR_ENYO_EXPLOSION_SIZE", [localize "STR_ENYO_EXPLOSION_SIZE_SMALL", localize "STR_ENYO_EXPLOSION_SIZE_MEDIUM", localize "STR_ENYO_EXPLOSION_SIZE_LARGE"]],
+ [localize "STR_ENYO_EXPLOSION_EFFECT", [localize "STR_ENYO_EXPLOSION_EFFECT_DEADLY", localize "STR_ENYO_EXPLOSION_EFFECT_DISABLING", localize "STR_ENYO_EXPLOSION_EFFECT_FAKE", localize "STR_ENYO_EXPLOSION_EFFECT_NONE"]],
+ [localize "STR_ENYO_ACTIVATION_DISTANCE", "", "10"],
+ [localize "STR_ENYO_PATROL_RADIUS", "", "100"],
+ [localize "STR_ENYO_ACTIVATION_SIDE", "SIDE", 2]
+ ]
+ ] call Ares_fnc_showChooseDialog;
+
+ if (isNil "_dialogResult") exitWith {};
+ if (count _dialogResult == 0) exitWith {};
+
+ _explosionSize = _dialogResult select 0;
+ _explosionEffect = _dialogResult select 1;
+ _activationDistance = _dialogResult select 2;
+ _patrolRadius = _dialogResult select 3;
+ _activationSide = _dialogResult select 4;
+
+ _activationSide = switch (_activationSide) do
+ {
+ case 1: {east};
+ case 2: {west};
+ case 3: {resistance};
+ case 4: {civilian};
+ default {west};
+ };
+
+ if (side _object == _activationSide) exitWith {[localize "STR_ENYO_ACTIVATION_SIDE_CANNOT_MATCH"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"};
+
+ _object setVariable ["isSB", true, true];
+
+ _activationSide = [_activationSide];
+
+ [_object, _explosionSize, _explosionEffect, _activationSide, _patrolRadius, _activationDistance] remoteExec ["Achilles_fnc_createSuicideBomber", _object, false];
+}
+else
+{
+ [localize "STR_ENYO_OBJECTS_NOT_ALLOWED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";
+};
+
+#include "\achilles\modules_f_ares\module_footer.hpp"
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/cfgFunctionsDevTools.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/cfgFunctionsDevTools.hpp
index 436a1d62..212733be 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/cfgFunctionsDevTools.hpp
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/cfgFunctionsDevTools.hpp
@@ -5,4 +5,5 @@ class Achilles_DevTools_Function_Base
class DevTools_manageAdvancedCompositions {};
class DevToolsShowInConfig {};
class DevToolsShowInAnimViewer {};
+ class DevToolsFunctionViewer {};
};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/cfgVehiclesModulesDevTools.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/cfgVehiclesModulesDevTools.hpp
index da36475b..408ddb35 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/cfgVehiclesModulesDevTools.hpp
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/cfgVehiclesModulesDevTools.hpp
@@ -39,4 +39,14 @@ class Achilles_DevTools_ShowInConfig : Achilles_Dev_Tools_Module_Base
function = "Achilles_fnc_DevToolsShowInConfig";
icon = "\achilles\data_f_achilles\icons\icon_default_object.paa";
portrait = "\achilles\data_f_achilles\icons\icon_default_object.paa";
+};
+
+class Achilles_DevTools_FunctionViewer : Achilles_Dev_Tools_Module_Base
+{
+ scopeCurator = 2;
+ _generalMacro = "Achilles_DevTools_ShowInConfig";
+ displayName = "$STR_FUNCTION_VIEWER";
+ function = "Achilles_fnc_DevToolsFunctionViewer";
+ icon = "\achilles\data_f_ares\icons\icon_default.paa";
+ portrait = "\achilles\data_f_ares\icons\icon_default.paa";
};
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/functions/fn_DevToolsFunctionViewer.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/functions/fn_DevToolsFunctionViewer.sqf
new file mode 100644
index 00000000..1e939b92
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/DevTools/functions/fn_DevToolsFunctionViewer.sqf
@@ -0,0 +1,12 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// AUTHOR: Kex
+// DATE: 6/11/17
+// VERSION: 1.0
+// DESCRIPTION: Open function viewer
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#include "\achilles\modules_f_ares\module_header.hpp"
+
+[] call BIS_fnc_help;
+
+#include "\achilles\modules_f_ares\module_footer.hpp"
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/MissionFlow/functions/fn_SpawnCreateEditIntel.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/MissionFlow/functions/fn_SpawnCreateEditIntel.sqf
index f870e245..8608c573 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/MissionFlow/functions/fn_SpawnCreateEditIntel.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/MissionFlow/functions/fn_SpawnCreateEditIntel.sqf
@@ -19,12 +19,12 @@ if (isNil "Achilles_var_intel_init_done") then
_object = [_logic, false] call Ares_fnc_GetUnitUnderCursor;
-_dialog_title = localize "STR_SPAWN_INTEL";
+_dialog_title = localize "STR_CREATE_INTEL_ON_OBJECT";
_dialog_options =
[
[localize "STR_ACTION_TEXT","",localize "STR_PICK_UP_INTEL"],
[localize "STR_ACTION_DURATION","","1"],
- [localize "STR_DELETE_OBJECT_ON_COMPLETION",[localize "STR_TRUE",localize "STR_FALSE"]],
+ [localize "STR_DELETE_OBJECT_ON_COMPLETION",[localize "STR_TRUE",localize "STR_FALSE"],1],
[localize "STR_INTEL_TITLE",""],
[localize "STR_INTEL_TEXT", "MESSAGE"],
[localize "STR_INTEL_SHARED_WITH", [localize "STR_SIDE", localize "STR_GROUP", localize "STR_NO_ONE"]]
@@ -32,11 +32,23 @@ _dialog_options =
if (isNull _object) then
{
- _dialog_title = localize "STR_CREATE_EDIT_INTEL";
+ // case spawn intel
+ _dialog_title = localize "STR_SPAWN_INTEL";
_dialog_options = [[localize "STR_OBJECT", INTEL_OBJECTS apply {getText (configfile >> "CfgVehicles" >> _x >> "displayName")}]] + _dialog_options;
+} else
+{
+ _previous_dialogResult = _object getVariable ["Achilles_var_intel",[]];
+ if (count _previous_dialogResult == count _dialog_options) then
+ {
+ // case edit intel
+ _dialog_title = format [localize "STR_EDIT_INTEL_X", _previous_dialogResult select 3];
+ {
+ _x set [2, _previous_dialogResult select _forEachIndex];
+ _x set [3, true];
+ } forEach _dialog_options;
+ };
};
-Achilles_var_currentIntel = _object;
-_dialogResult = [_dialog_title, _dialog_options,"Achilles_fnc_RscDisplayAtttributes_SpawnIntel"] call Ares_fnc_ShowChooseDialog;
+_dialogResult = [_dialog_title, _dialog_options] call Ares_fnc_ShowChooseDialog;
_dialogCount = count _dialogResult;
if (_dialogCount == 0) exitWith {};
@@ -46,10 +58,13 @@ _duration = parseNumber (_dialogResult select (_dialogCount - 5));
_delete = if ((_dialogResult select (_dialogCount - 4)) == 0) then {true} else {false};;
_title = _dialogResult select (_dialogCount - 3);
_text = _dialogResult select (_dialogCount - 2);
+// correctly handle newline characters
+_text = (_text splitString endl) joinString "
";
_shared = _dialogResult select (_dialogCount - 1);
if (_dialogCount == 7) then
{
+ // case spawn intel:
_type = INTEL_OBJECTS select (_dialogResult select 0);
_object = _type createVehicle (position _logic);
[_object, false] remoteExec ["enableSimulationGlobal", 2];
@@ -61,7 +76,7 @@ if (_dialogCount == 7) then
_object setVariable ["Achilles_var_intel",_dialogResult];
} else
{
- // save parameters
+ // case edit or create intel: save parameters
_object setVariable ["Achilles_var_intel",_dialogResult];
};
@@ -87,7 +102,7 @@ _execute =
_target = switch (_shared) do {case 0: {side _finder}; case 1: {group _finder}; case 2: {_finder};};
[_title,_text,_marker,name _finder,_shared] remoteExec ["Ares_fnc_addIntel",_target];
- ["TaskSucceeded",["",format [localize "STR_INTEL_FOUND",name _finder,_title]]] remoteExec ["BIS_fnc_showNotification",_curator];
+ ["intelAdded",[format [localize "STR_INTEL_FOUND",name _finder,_title] ,"\A3\ui_f\data\map\markers\military\warning_ca.paa"]] remoteExec ["BIS_fnc_showNotification",_curator];
if (_delete) then {deleteVehicle _object} else {remoteExec ["", _object]; _object remoteExec ["RemoveAllActions", 0];};
};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/cfgFunctionsObjects.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/cfgFunctionsObjects.hpp
index e4caccfb..1e8638f1 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/cfgFunctionsObjects.hpp
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/cfgFunctionsObjects.hpp
@@ -7,4 +7,6 @@ class Achilles_Objects_Function_Base
class ModuleObjectsMakeInvincible {};
class ObjectsSetHeight {};
class ObjectsTransferOwnership {};
-};
\ No newline at end of file
+ class ObjectsAddECM {};
+ class ObjectsIED {};
+};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/cfgVehiclesModulesObjects.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/cfgVehiclesModulesObjects.hpp
index 89dbf3a3..0274c930 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/cfgVehiclesModulesObjects.hpp
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/cfgVehiclesModulesObjects.hpp
@@ -4,6 +4,13 @@ class Achilles_Objects_Module_Base : Achilles_Module_Base
Category = "Objects";
};
+class Enyo_Objects_Module_Base : Enyo_Module_Base
+{
+ category = "Objects";
+ icon = "\achilles\data_f_achilles\icons\icon_object.paa";
+ portrait = "\achilles\data_f_achilles\icons\icon_object.paa";
+};
+
class Achilles_Toggle_Simulation_Module : Achilles_Objects_Module_Base
{
scopeCurator = 2;
@@ -48,4 +55,21 @@ class Achilles_Transfer_Ownership_Module : Achilles_Objects_Module_Base
function = "Achilles_fnc_ObjectsTransferOwnership";
icon = "\achilles\data_f_achilles\icons\icon_default_object.paa";
portrait = "\achilles\data_f_achilles\icons\icon_default_object.paa";
-};
\ No newline at end of file
+};
+class Achilles_IED_Module : Enyo_Objects_Module_Base
+{
+ scopeCurator = 2;
+ curatorCanAttach = 1;
+ _generalMacro = "Achilles_IED_Module";
+ displayName = "$STR_ENYO_CREATE_IED";
+ function = "Achilles_fnc_ObjectsIED";
+};
+
+class Achilles_AddECM_Module : Enyo_Objects_Module_Base
+{
+ scopeCurator = 2;
+ curatorCanAttach = 1;
+ _generalMacro = "Achilles_AddECM_Module";
+ displayName = "$STR_ENYO_ADD_ECM_TO_VEHICLE";
+ function = "Achilles_fnc_ObjectsAddECM";
+};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/functions/fn_ObjectsAddECM.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/functions/fn_ObjectsAddECM.sqf
new file mode 100644
index 00000000..87978727
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/functions/fn_ObjectsAddECM.sqf
@@ -0,0 +1,51 @@
+/*
+ Author: CreepPork_LV
+
+ Description:
+ Adds a variable to a vehicle that allows the jamming of IEDs
+
+ Parameters:
+ _this select: 0 - OBJECT - Object that the module was placed upon
+
+ Returns:
+ Nothing
+*/
+
+#include "\achilles\modules_f_ares\module_header.hpp"
+
+_object = [_logic, false] call Ares_fnc_GetUnitUnderCursor;
+
+if (isNull _object) exitWith {[localize "STR_ENYO_NO_VEHICLE_SELECTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+if (isPlayer _object || isPlayer driver _object) exitWith {[localize "STR_ENYO_NO_VEHICLE_SELECTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+if (_object isKindOf "Car" || _object isKindOf "Tank") then
+{
+ _dialogResult =
+ [
+ localize "STR_ENYO_ADD_ECM_TO_VEHICLE",
+ [
+ [localize "STR_ENYO_ADD_ECM", [localize "STR_YES", localize "STR_NO"]]
+ ]
+ ] call Ares_fnc_showChooseDialog;
+
+ if (isNil "_dialogResult") exitWith {};
+ if (count _dialogResult == 0) exitWith {};
+
+ _isECM = _dialogResult select 0;
+
+ if (_isECM == 0) then
+ {
+ _object setVariable ["isECM", true, true];
+ }
+ else
+ {
+ _object setVariable ["isECM", false, true];
+ };
+}
+else
+{
+ [localize "STR_ENYO_NO_VEHICLE_SELECTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";
+};
+
+#include "\achilles\modules_f_ares\module_footer.hpp"
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/functions/fn_ObjectsIED.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/functions/fn_ObjectsIED.sqf
new file mode 100644
index 00000000..1f049862
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Objects/functions/fn_ObjectsIED.sqf
@@ -0,0 +1,82 @@
+/*
+ Author: CreepPork_LV, shay_gman
+
+ Description:
+ Sets a object to be a IED
+
+ Parameters:
+ _this select: 0 - OBJECT - Object that the module was placed upon
+
+ Returns:
+ Nothing
+*/
+
+#include "\achilles\modules_f_ares\module_header.hpp"
+
+if(isNil "Achilles_var_ied_init_done") then
+{
+ publicVariableServer "Achilles_fnc_createIED";
+ publicVariableServer "Achilles_fnc_createSuicideBomber";
+ publicVariableServer "Achilles_fnc_IED_DamageHandler";
+ publicVariableServer "Achilles_fnc_hasACEExplosives";
+ publicVariableServer "Achilles_fnc_fakeExplosion";
+ publicVariableServer "Achilles_fnc_disablingExplosion";
+ publicVariableServer "Achilles_fnc_deadlyExplosion";
+
+ Achilles_var_ied_init_done = true;
+};
+
+// Gets Module placed object.
+_object = [_logic, false] call Ares_fnc_GetUnitUnderCursor;
+
+// Displays error message if no object or unit has been selected.
+if (isNull _object) exitWith {[localize "STR_NO_OBJECT_SELECTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+// Displays error message if the module has been placed on top of a player.
+if (isPlayer _object || isPlayer driver _object) exitWith {[localize "STR_NO_OBJECT_SELECTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+// Displays error message if module has been placed on top of another IED
+if (_object getVariable ["isIED", false]) exitWith {[localize "STR_ENYO_OBJECT_IS_IED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+if (_object getVariable ["isSB", false]) exitWith {[localize "STR_ENYO_UNIT_IS_SB"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+// Sets IED functionality
+if (_object isKindOf "Man") then
+{
+ [localize "STR_ENYO_UNITS_NOT_ALLOWED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";
+}
+else
+{
+ _dialogResult =
+ [
+ localize "STR_ENYO_SET_OBJECT_AS_IED",
+ [
+ [localize "STR_ENYO_EXPLOSION_SIZE", [localize "STR_ENYO_EXPLOSION_SIZE_SMALL", localize "STR_ENYO_EXPLOSION_SIZE_MEDIUM", localize "STR_ENYO_EXPLOSION_SIZE_LARGE"]],
+ [localize "STR_ENYO_EXPLOSION_EFFECT", [localize "STR_ENYO_EXPLOSION_EFFECT_DEADLY", localize "STR_ENYO_EXPLOSION_EFFECT_DISABLING", localize "STR_ENYO_EXPLOSION_EFFECT_FAKE", localize "STR_ENYO_EXPLOSION_EFFECT_NONE"]],
+ [localize "STR_ENYO_CAN_BE_DISARMED", [localize "STR_YES", localize "STR_NO"]],
+ [localize "STR_ENYO_DISARM_TIME", "", "10"],
+ [localize "STR_ENYO_ACTIVATION_TYPE", [localize "STR_ENYO_ACTIVATION_TYPE_MANUAL", localize "STR_ENYO_ACTIVATION_TYPE_PROXIMITY", localize "STR_ENYO_ACTIVATION_TYPE_RADIO"], 1],
+ [localize "STR_ENYO_IS_JAMMABLE", [localize "STR_YES", localize "STR_NO"]],
+ [localize "STR_ENYO_ACTIVATION_DISTANCE", "", "10"],
+ [localize "STR_ENYO_ACTIVATION_SIDE", "SIDE", 2]
+ ]
+ ] call Ares_fnc_showChooseDialog;
+
+ if (isNil "_dialogResult") exitWith {};
+ if (count _dialogResult == 0) exitWith {};
+
+ _object setVariable ["isIED", true, true];
+
+ _explosionSize = _dialogResult select 0;
+ _explosionEffect = _dialogResult select 1;
+ _canBeDefused = _dialogResult select 2;
+ _disarmTime = _dialogResult select 3;
+ _activationType = _dialogResult select 4;
+ _isJammable = _dialogResult select 5;
+ _activationDistance = _dialogResult select 6;
+ _activationSide = _dialogResult select 7;
+
+ [_object, _explosionSize, _explosionEffect, _activationDistance, _activationSide, _activationType, _isJammable, _disarmTime, _canBeDefused] remoteExec ["Achilles_fnc_createIED", 2, false];
+};
+
+#include "\achilles\modules_f_ares\module_footer.hpp"
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Spawn/functions/fn_SpawnCarrier.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/Spawn/functions/fn_SpawnCarrier.sqf
index a96c6ac0..b2d119f1 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/Spawn/functions/fn_SpawnCarrier.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Spawn/functions/fn_SpawnCarrier.sqf
@@ -1,26 +1,26 @@
#include "\achilles\modules_f_ares\module_header.hpp"
-private _dialogResult =
-[
- "USS Freedom",
- [
+private _dialogResult =
+[
+ "USS Freedom",
+ [
[localize "STR_DIRECTION", ["N","NE","E","SE","S","SW","W","NW"]]
- ]
-] call Ares_fnc_ShowChooseDialog;
+ ]
+] call Ares_fnc_ShowChooseDialog;
+
+if (count _dialogResult == 0) exitWith {};
+private _dir = 180 + (_dialogResult select 0) * 45;
-if (count _dialogResult == 0) exitWith {};
-private _dir = 180 + (_dialogResult select 0) * 45;
-
-[[getPosATL _logic, _dir],
+[[getPosATL _logic, _dir],
{
params ["_posATL", "_dir"];
-
- _carrier = createVehicle ["Land_Carrier_01_base_F",_posATL,[],0,"CAN_COLLIDE"];
- _carrier setVectorDirAndUp [[sin _dir, cos _dir, 0], [0,0,1]];
- [_carrier] call BIS_fnc_Carrier01PosUpdate;
- _carrier_parts = _carrier getVariable "bis_carrierParts";
- {deleteVehicle (_x select 0)} forEach _carrier_parts;
+ _carrier = createVehicle ["Land_Carrier_01_base_F",[-300,-300,0],[],0,"CAN_COLLIDE"];
+ _carrier setPosATL _posATL;
+ _carrier setVectorDirAndUp [[sin _dir, cos _dir, 0], [0,0,1]];
[_carrier] remoteExecCall ["BIS_fnc_Carrier01Init", 0, _carrier];
-}] remoteExecCall ["call", 2];
+ {_x addCuratorEditableObjects [[_carrier], false]} forEach allCurators;
+ // delete old carrier parts
+ {deleteVehicle _x} forEach (nearestObjects [[-300,-300,0], ["Land_Carrier_01_hull_GEO_Base_F","Land_Carrier_01_hull_base_F","DynamicAirport_01_F"], 300, true]);
+}] remoteExec ["call", 2];
#include "\achilles\modules_f_ares\module_footer.hpp"
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/cfgFunctionsZeus.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/cfgFunctionsZeus.hpp
new file mode 100644
index 00000000..e55c2ff2
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/cfgFunctionsZeus.hpp
@@ -0,0 +1,7 @@
+class Achilles_Zeus_Function_Base
+{
+ file = "\achilles\modules_f_achilles\Zeus\functions";
+
+ class ZeusSwitchUnit {};
+ class ZeusAssignZeus {};
+};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/cfgVehiclesModulesZeus.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/cfgVehiclesModulesZeus.hpp
new file mode 100644
index 00000000..369bb8db
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/cfgVehiclesModulesZeus.hpp
@@ -0,0 +1,22 @@
+class Achilles_Zeus_Module_Base : Achilles_Module_Base
+{
+ Category = "Curator";
+};
+
+class Achilles_Module_Zeus_SwitchUnit : Achilles_Zeus_Module_Base
+{
+ scopeCurator = 2;
+ displayName = "$STR_SWITCH_UNIT";
+ function = "Achilles_fnc_ZeusSwitchUnit";
+ icon = "\achilles\data_f_achilles\icons\icon_unit.paa";
+ portrait = "\achilles\data_f_achilles\icons\icon_unit.paa";
+};
+
+class Achilles_Module_Zeus_AssignZeus : Achilles_Zeus_Module_Base
+{
+ scopeCurator = 2;
+ displayName = "$STR_ASSIGN_ZEUS";
+ function = "Achilles_fnc_ZeusAssignZeus";
+ icon = "\achilles\data_f_achilles\icons\icon_unit.paa";
+ portrait = "\achilles\data_f_achilles\icons\icon_unit.paa";
+};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/functions/fn_ZeusAssignZeus.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/functions/fn_ZeusAssignZeus.sqf
new file mode 100644
index 00000000..fb4fce44
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/functions/fn_ZeusAssignZeus.sqf
@@ -0,0 +1,51 @@
+/*
+ Author: CreepPork_LV, Kex, Talya
+
+ Description:
+ Sets a unit to be a Curator.
+
+ Parameters:
+ _this select: 0 - OBJECT - Object that the module was placed upon
+
+ Returns:
+ Nothing
+*/
+
+#include "\achilles\modules_f_ares\module_header.hpp"
+
+_player = [_logic, false] call Ares_fnc_GetUnitUnderCursor;
+
+// mission designer can disallow usage of execute code module, but it will still be available for logged-in admins
+if (not (missionNamespace getVariable ['Ares_Allow_Zeus_To_Execute_Code', true]) and not (serverCommandAvailable "#kick")) exitWith
+{
+ ["This module has been disabled by the mission creator."] call Ares_fnc_ShowZeusMessage;
+};
+
+if (isNull _player) exitWith {[localize "STR_NO_UNIT_SELECTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+if (!isPlayer _player) exitWith {[localize "STR_NO_object_SELECTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+if (!isNull getAssignedCuratorLogic _player) exitWith {[localize "STR_UNIT_IS_ALREADY_PROMOTED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F";};
+
+[[_player, getPos _player],
+{
+ params ["_player", "_playerPos"];
+
+ private _moderatorModule = (createGroup sideLogic) createUnit ["ModuleCurator_F", _playerPos, [], 0, ""];
+ _player assignCurator _moderatorModule;
+ _player setVariable ["Achilles_var_promoZeusModule", _moderatorModule, true];
+}] remoteExecCall ["call", 2];
+
+["You are now a Curator!"] remoteExecCall ["hint", _player];
+
+// Loose curator rights if killed
+_eh_id = _player addEventHandler ["killed",
+{
+ params ["_unit"];
+
+ private _module = _unit getVariable ["Achilles_var_promoZeusModule", objNull];
+ if (not isNull _module) then {(group _module) deleteGroupWhenEmpty true; deleteVehicle _module};
+ _unit removeEventHandler ["killed", _unit getVariable "Achilles_var_promoZeusModuleEHID"];
+ ["You lost your Curator rights!"] remoteExecCall ["hint", _unit];
+}];
+_player setVariable ["Achilles_var_promoZeusModuleEHID", _eh_id];
+
+#include "\achilles\modules_f_ares\module_footer.hpp"
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/functions/fn_ZeusSwitchUnit.sqf b/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/functions/fn_ZeusSwitchUnit.sqf
new file mode 100644
index 00000000..6d5b4a7c
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/Zeus/functions/fn_ZeusSwitchUnit.sqf
@@ -0,0 +1,6 @@
+#include "\achilles\modules_f_ares\module_header.hpp"
+
+private _unit = [_logic, false] call Ares_fnc_GetUnitUnderCursor;
+[Achilles_fnc_switchUnit_start, [_unit]] call CBA_fnc_directCall;
+
+#include "\achilles\modules_f_ares\module_footer.hpp"
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFunctions.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFunctions.hpp
index 38ca639c..bc77bed3 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFunctions.hpp
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgFunctions.hpp
@@ -14,5 +14,6 @@ class CfgFunctions
#include "Objects\cfgFunctionsObjects.hpp"
#include "Replacement\cfgFunctionsReplacement.hpp"
#include "Spawn\cfgFunctionsSpawn.hpp"
+ #include "Zeus\cfgFunctionsZeus.hpp"
};
};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgVehiclesModuleBase.hpp b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgVehiclesModuleBase.hpp
index 2b91ff4c..8df1e11e 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/cfgVehiclesModuleBase.hpp
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/cfgVehiclesModuleBase.hpp
@@ -1,4 +1,3 @@
-
class CfgVehicles
{
class Logic;
@@ -42,11 +41,24 @@ class CfgVehicles
description = "Achilles Module Base";
};
};
-
+
+ class Enyo_Module_Base : Achilles_Module_Base
+ {
+ author = "CreepPork_LV";
+ category = "Enyo";
+ displayName = "Enyo Module Base";
+ dlc = "Enyo";
+
+ class ModuleDescription: ModuleDescription
+ {
+ description = "Enyo Module Base";
+ };
+ };
+
class All;
class Thing : All {};
class ModuleEmpty_F : Thing {};
-
+
#include "ACE\cfgVehiclesModulesACE.hpp"
#include "Behaviours\cfgVehiclesModulesBehaviours.hpp"
#include "Buildings\cfgVehiclesModulesBuildings.hpp"
@@ -58,6 +70,7 @@ class CfgVehicles
#include "Objects\cfgVehiclesModulesObjects.hpp"
#include "Replacement\cfgVehiclesModulesReplacement.hpp"
#include "Spawn\cfgVehiclesModulesSpawn.hpp"
+ #include "Zeus\cfgVehiclesModulesZeus.hpp"
// config replacement: remove vanilla effect modules and training category
class ModuleChemlight_F : Module_F {};
@@ -65,13 +78,13 @@ class CfgVehicles
class ModuleChemlightGreen_F : ModuleChemlightBlue_F {scopeCurator = 1;};
class ModuleChemlightRed_F : ModuleChemlightBlue_F {scopeCurator = 1;};
class ModuleChemlightYellow_F : ModuleChemlightBlue_F {scopeCurator = 1;};
-
+
class ModuleFlare_F : Module_F {};
class ModuleFlareWhite_F : ModuleFlare_F {scopeCurator = 1;};
class ModuleFlareGreen_F : ModuleFlareWhite_F {scopeCurator = 1;};
class ModuleFlareRed_F : ModuleFlareWhite_F {scopeCurator = 1;};
class ModuleFlareYellow_F : ModuleFlareWhite_F {scopeCurator = 1;};
-
+
class ModuleSmoke_F : Module_F {};
class ModuleSmokeWhite_F : ModuleSmoke_F {scopeCurator = 1;};
class ModuleSmokeBlue_F : ModuleSmokeWhite_F {scopeCurator = 1;};
@@ -80,10 +93,10 @@ class CfgVehicles
class ModuleSmokePurple_F : ModuleSmokeWhite_F {scopeCurator = 1;};
class ModuleSmokeRed_F : ModuleSmokeWhite_F {scopeCurator = 1;};
class ModuleSmokeYellow_F : ModuleSmokeWhite_F {scopeCurator = 1;};
-
+
class ModuleIRGrenade_F : Module_F {scopeCurator = 1;};
- class ModuleTracers_F : Module_F {scopeCurator = 1;};
+ class ModuleTracers_F : Module_F {scopeCurator = 1;};
class ModuleBootcampStage_F : Module_F {scopeCurator = 1;};
class ModuleHint_F : ModuleBootcampStage_F {scopeCurator = 1;};
-};
\ No newline at end of file
+};
diff --git a/@AresModAchillesExpansion/addons/modules_f_achilles/config.cpp b/@AresModAchillesExpansion/addons/modules_f_achilles/config.cpp
index 731a1a1a..7e22806f 100644
--- a/@AresModAchillesExpansion/addons/modules_f_achilles/config.cpp
+++ b/@AresModAchillesExpansion/addons/modules_f_achilles/config.cpp
@@ -9,7 +9,7 @@ class CfgPatches
version = 0.0.3;
versionStr = "0.0.3";
versionAr[] = {0,0,3};
-
+
units[] =
{
"Achilles_ACE_Injury_Module",
@@ -19,12 +19,14 @@ class CfgPatches
"Achilles_Sit_On_Chair_Module",
"Achilles_Change_Ability_Module",
"Achilles_Change_Altitude_Module",
+ "Achilles_SuicideBomber_Module",
"Achilles_Buildings_Destroy_Module",
"Achilles_Buildings_LockDoors_Module",
"Achilles_Buildings_ToggleLight_Module",
"Achilles_Bind_Variable_Module",
"Achilles_DevTools_ShowInAnimViewer",
"Achilles_DevTools_ShowInConfig",
+ "Achilles_DevTools_FunctionViewer",
"Achilles_Set_Weather_Module",
"Achilles_Set_Date_Module",
"Achilles_Earthquake_Module",
@@ -41,12 +43,16 @@ class CfgPatches
"Achilles_Attach_To_Module",
"Achilles_Make_Invincible_Module",
"Achilles_Set_Height_Module",
+ "Achilles_IED_Module",
+ "Achilles_AddECM_Module",
"Achilles_Module_Manage_Advanced_Compositions",
"Achilles_Module_Spawn_Effects",
"Achilles_Module_Spawn_Intel",
"Achilles_Module_Spawn_Advanced_Composition",
"Achilles_Module_Spawn_Explosives",
- "Achilles_Module_Spawn_Carrier"
+ "Achilles_Module_Spawn_Carrier",
+ "Achilles_Module_Zeus_SwitchUnit",
+ "Achilles_Module_Zeus_AssignZeus"
};
requiredAddons[] =
@@ -75,8 +81,8 @@ class CfgPatches
version = 0.0.1;
versionStr = "0.0.1";
versionAr[] = {0,0,1};
-
- units[] =
+
+ units[] =
{
"ModuleLightSource_F",
"ModuleLightSourceWhite_F",
@@ -105,4 +111,4 @@ class CfgPatches
#include "cfgFunctions.hpp"
#include "cfgFactionClasses.hpp"
-#include "cfgVehiclesModuleBase.hpp"
\ No newline at end of file
+#include "cfgVehiclesModuleBase.hpp"
diff --git a/@AresModAchillesExpansion/addons/modules_f_ares.pbo b/@AresModAchillesExpansion/addons/modules_f_ares.pbo
index 2acc992c..faf26d50 100644
Binary files a/@AresModAchillesExpansion/addons/modules_f_ares.pbo and b/@AresModAchillesExpansion/addons/modules_f_ares.pbo differ
diff --git a/@AresModAchillesExpansion/addons/modules_f_ares.pbo.achilles_0.0.7d.bisign b/@AresModAchillesExpansion/addons/modules_f_ares.pbo.achilles_0.0.7d.bisign
deleted file mode 100644
index 032ecf9c..00000000
Binary files a/@AresModAchillesExpansion/addons/modules_f_ares.pbo.achilles_0.0.7d.bisign and /dev/null differ
diff --git a/@AresModAchillesExpansion/addons/modules_f_ares.pbo.achilles_0.0.8.bisign b/@AresModAchillesExpansion/addons/modules_f_ares.pbo.achilles_0.0.8.bisign
new file mode 100644
index 00000000..72caaef4
Binary files /dev/null and b/@AresModAchillesExpansion/addons/modules_f_ares.pbo.achilles_0.0.8.bisign differ
diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/Behaviours/functions/fn_BehaviourPatrol.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/Behaviours/functions/fn_BehaviourPatrol.sqf
index 0c0db0b8..4471c9e3 100644
--- a/@AresModAchillesExpansion/addons/modules_f_ares/Behaviours/functions/fn_BehaviourPatrol.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_ares/Behaviours/functions/fn_BehaviourPatrol.sqf
@@ -36,7 +36,7 @@ if (not isNull _groupUnderCursor) then
[
[(localize "STR_RADIUS") + " [m]", "", "100"],
[localize "STR_GROUP_BEHAVIOUR", [localize "STR_RELAXED", localize "STR_CAUTIOUS", localize "STR_COMBAT"]],
- [localize "STR_DIRECTION", [localize "STR_CLOCKWISE", localize "STR_COUNTERCLOCKWISE"]],
+ [localize "STR_DIRECTION", [localize "STR_CLOCKWISE", localize "STR_COUNTERCLOCKWISE"],1],
[localize "STR_DELAY_AT_WP", ["None", "15s", "30s", "1m"]]
]
] call Ares_fnc_ShowChooseDialog;
diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentFlashlightIRLaserOnOff.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentFlashlightIRLaserOnOff.sqf
index 58dfc7f6..947c60ef 100644
--- a/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentFlashlightIRLaserOnOff.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentFlashlightIRLaserOnOff.sqf
@@ -47,7 +47,8 @@ if (isNull _unitUnderCursor) then
allUnits select {(alive _x) and (side _x == _side)};
};
};
-
+
+ if (isNil "_units") exitWith {};
if (count _units == 0) exitWith
{
[localize "STR_NO_UNIT_SELECTED"] call Ares_fnc_ShowZeusMessage;
diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentNVDRailAttachment.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentNVDRailAttachment.sqf
index b4953429..17a225e9 100644
--- a/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentNVDRailAttachment.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentNVDRailAttachment.sqf
@@ -47,7 +47,8 @@ if (isNull _unitUnderCursor) then
allUnits select {(alive _x) and (side _x == _side)};
};
};
-
+
+ if (isNil "_units") exitWith {};
if (count _units == 0) exitWith
{
[localize "STR_NO_UNIT_SELECTED"] call Ares_fnc_ShowZeusMessage;
diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentTurretOptics.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentTurretOptics.sqf
index 524e7c2c..f7cc6cf3 100644
--- a/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentTurretOptics.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_ares/Equipment/functions/fn_EquipmentTurretOptics.sqf
@@ -47,7 +47,8 @@ if (isNull _unitUnderCursor) then
vehicles select {(alive _x) and (side _x == _side)};
};
};
-
+
+ if (isNil "_vehicles") exitWith {};
if (count _vehicles == 0) exitWith
{
[localize "STR_NO_OBJECT_SELECTED"] call Ares_fnc_ShowZeusMessage;
diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/Player/functions/fn_PlayerChangeSide.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/Player/functions/fn_PlayerChangeSide.sqf
index 44180f51..c141e6b4 100644
--- a/@AresModAchillesExpansion/addons/modules_f_ares/Player/functions/fn_PlayerChangeSide.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_ares/Player/functions/fn_PlayerChangeSide.sqf
@@ -64,7 +64,7 @@ if (isNull _unitUnderCursor) then
};
};
sleep 1;
-
+ if (isNil "_units") exitWith {};
if (count _units == 0) exitWith
{
[localize "STR_NO_PLAYER_IN_SELECTION"] call Ares_fnc_ShowZeusMessage;
diff --git a/@AresModAchillesExpansion/addons/modules_f_ares/Zeus/functions/fn_ZeusAddRemoveEditableObjects.sqf b/@AresModAchillesExpansion/addons/modules_f_ares/Zeus/functions/fn_ZeusAddRemoveEditableObjects.sqf
index c0958318..81b146fe 100644
--- a/@AresModAchillesExpansion/addons/modules_f_ares/Zeus/functions/fn_ZeusAddRemoveEditableObjects.sqf
+++ b/@AresModAchillesExpansion/addons/modules_f_ares/Zeus/functions/fn_ZeusAddRemoveEditableObjects.sqf
@@ -81,7 +81,11 @@ if (_range_mode == 0) then
};
// protect the main essential module from being added
-_objectsToProcess = _objectsToProcess select {not (toLower typeOf _x in ["logic", "modulehq_f", "modulemptypegamemaster_f", "land_helipadempty_f"]) and {toLower ((typeOf _x) select [0,13]) != "modulecurator"}};
+_objectsToProcess = _objectsToProcess select
+{
+ private _object = _x;
+ private _type = toLower typeOf _object;
+ ({_type == _x} count ["logic", "modulehq_f", "modulemptypegamemaster_f", "land_helipadempty_f"] == 0) and {(_type select [0,13]) != "modulecurator"} /*and {{_object isKindOf _x} count ["Land_Carrier_01_hull_GEO_Base_F","Land_Carrier_01_hull_base_F","DynamicAirport_01_F"] == 0}*/};
[_objectsToProcess, _addObject] call Ares_fnc_AddUnitsToCurator;
_displayText = [localize "STR_ADD_OBJEKTE_TO_ZEUS", localize "STR_REMOVED_OBJEKTE_FROM_ZEUS"] select (_dialogResult select 0);
diff --git a/@AresModAchillesExpansion/addons/settings_f.pbo b/@AresModAchillesExpansion/addons/settings_f.pbo
index c15529c4..ac23ee29 100644
Binary files a/@AresModAchillesExpansion/addons/settings_f.pbo and b/@AresModAchillesExpansion/addons/settings_f.pbo differ
diff --git a/@AresModAchillesExpansion/addons/settings_f.pbo.achilles_0.0.7d.bisign b/@AresModAchillesExpansion/addons/settings_f.pbo.achilles_0.0.7d.bisign
deleted file mode 100644
index 3b4fc8ad..00000000
Binary files a/@AresModAchillesExpansion/addons/settings_f.pbo.achilles_0.0.7d.bisign and /dev/null differ
diff --git a/@AresModAchillesExpansion/addons/settings_f.pbo.achilles_0.0.8.bisign b/@AresModAchillesExpansion/addons/settings_f.pbo.achilles_0.0.8.bisign
new file mode 100644
index 00000000..20ecf6da
Binary files /dev/null and b/@AresModAchillesExpansion/addons/settings_f.pbo.achilles_0.0.8.bisign differ
diff --git a/@AresModAchillesExpansion/addons/settings_f/scripts/XEH_preInit.sqf b/@AresModAchillesExpansion/addons/settings_f/scripts/XEH_preInit.sqf
index 7682cf8f..4e3217a7 100644
--- a/@AresModAchillesExpansion/addons/settings_f/scripts/XEH_preInit.sqf
+++ b/@AresModAchillesExpansion/addons/settings_f/scripts/XEH_preInit.sqf
@@ -12,5 +12,5 @@
#include "module_tree.sqf"
#include "curator_vision.sqf"
-#include "available_factions.sqf"
+// #include "available_factions.sqf"
#include "keybindings.sqf"
diff --git a/@AresModAchillesExpansion/addons/settings_f/scripts/keybindings.sqf b/@AresModAchillesExpansion/addons/settings_f/scripts/keybindings.sqf
index 472a65b2..956b8a92 100644
--- a/@AresModAchillesExpansion/addons/settings_f/scripts/keybindings.sqf
+++ b/@AresModAchillesExpansion/addons/settings_f/scripts/keybindings.sqf
@@ -113,4 +113,38 @@
},
"",
[DIK_C, [false, false, false]]
+] call CBA_fnc_addKeybind;
+
+[
+ localize "STR_ARES_MOD_ACHILLES_EXPANSION",
+ "Achilles_id_increaseNVGBrightness",
+ localize "STR_KEY_INCREASENVGBRIGHTNESS",
+ {
+ _handled = false;
+ if (_this select 0 == findDisplay IDD_RSCDISPLAYCURATOR and {ppEffectEnabled (missionNamespace getVariable ["Achilles_var_NVGBrightnessEffect",-1])}) then
+ {
+ [+1] call Achilles_fnc_changeNVGBrightness;
+ _handled = true;
+ };
+ _handled;
+ },
+ "",
+ [DIK_PGUP, [false, false, true]]
+] call CBA_fnc_addKeybind;
+
+[
+ localize "STR_ARES_MOD_ACHILLES_EXPANSION",
+ "Achilles_id_decreaseNVGBrightness",
+ localize "STR_KEY_DECREASEVGBRIGHTNESS",
+ {
+ _handled = false;
+ if (_this select 0 == findDisplay IDD_RSCDISPLAYCURATOR and {ppEffectEnabled (missionNamespace getVariable ["Achilles_var_NVGBrightnessEffect",-1])}) then
+ {
+ [-1] call Achilles_fnc_changeNVGBrightness;
+ _handled = true;
+ };
+ _handled;
+ },
+ "",
+ [DIK_PGDN, [false, false, true]]
] call CBA_fnc_addKeybind;
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/ui_f.pbo b/@AresModAchillesExpansion/addons/ui_f.pbo
index d3d4b0fa..3d2c799a 100644
Binary files a/@AresModAchillesExpansion/addons/ui_f.pbo and b/@AresModAchillesExpansion/addons/ui_f.pbo differ
diff --git a/@AresModAchillesExpansion/addons/ui_f.pbo.achilles_0.0.7d.bisign b/@AresModAchillesExpansion/addons/ui_f.pbo.achilles_0.0.7d.bisign
deleted file mode 100644
index 2702eed4..00000000
Binary files a/@AresModAchillesExpansion/addons/ui_f.pbo.achilles_0.0.7d.bisign and /dev/null differ
diff --git a/@AresModAchillesExpansion/addons/ui_f.pbo.achilles_0.0.8.bisign b/@AresModAchillesExpansion/addons/ui_f.pbo.achilles_0.0.8.bisign
new file mode 100644
index 00000000..d00d46b9
Binary files /dev/null and b/@AresModAchillesExpansion/addons/ui_f.pbo.achilles_0.0.8.bisign differ
diff --git a/@AresModAchillesExpansion/addons/ui_f/cfgFunctions.hpp b/@AresModAchillesExpansion/addons/ui_f/cfgFunctions.hpp
index 5efc771e..d6ebf995 100644
--- a/@AresModAchillesExpansion/addons/ui_f/cfgFunctions.hpp
+++ b/@AresModAchillesExpansion/addons/ui_f/cfgFunctions.hpp
@@ -10,13 +10,15 @@ class CfgFunctions
class onGameStarted;
};
- class ui_f_displayCurator
+ class ui_f_eventHandler
{
- file = "\achilles\ui_f\functions\displayCurator";
+ file = "\achilles\ui_f\functions\eventHandler";
class AppendToModuleTree;
class onDisplayCuratorLoad;
+ class onDisplayCuratorUnload;
class onModuleTreeLoad;
+ class addCuratorInterfaceEventHandler;
};
@@ -32,6 +34,7 @@ class CfgFunctions
class HandleCuratorGroupPlaced;
class HandleCuratorObjectEdited;
class HandleCuratorObjectDeleted;
+ class HandleCuratorWpPlaced;
};
class ui_f_common
@@ -56,7 +59,6 @@ class CfgFunctions
class RscDisplayAttributes_createAdvancedComposition;
class RscDisplayAttributes_editAdvancedComposition;
class RscDisplayAttributes_SpawnExplosives;
- class RscDisplayAtttributes_SpawnIntel;
class RscDisplayAtttributes_DamageComponents;
class RscDisplayAttributes_Chatter;
class RscDisplayAttributes_SpawnEmptyObject;
diff --git a/@AresModAchillesExpansion/addons/ui_f/cfgMods.hpp b/@AresModAchillesExpansion/addons/ui_f/cfgMods.hpp
index b9474334..eb785eba 100644
--- a/@AresModAchillesExpansion/addons/ui_f/cfgMods.hpp
+++ b/@AresModAchillesExpansion/addons/ui_f/cfgMods.hpp
@@ -35,4 +35,21 @@ class CfgMods {
logoOver = "\achilles\data_f_achilles\icons\icon_achilles_hint.paa";
logoSmall = "\achilles\data_f_achilles\icons\icon_achilles_small.paa";
};
+ class Enyo
+ {
+ dir = "@AresModAchillesExpension";
+ name = "Enyo Expansion";
+ author = "CreepPork_LV";
+ hidePicture = 0;
+ hideName = 1;
+
+ description = "The Enyo Expansion focuses more on bringing back the functionalites from MCC Sandbox 4 with improved support and them being updated to newest Arma 3 standards.";
+
+ overview = "The Enyo Expansion focuses more on bringing back the functionalites from MCC Sandbox 4 with improved support and them being updated to newest Arma 3 standards.";
+
+ picture = "\achilles\data_f_achilles\icons\icon_enyo_large.paa";
+ logo = "\achilles\data_f_achilles\icons\icon_enyo.paa";
+ logoOver = "\achilles\data_f_achilles\icons\icon_enyo_large.paa";
+ logoSmall = "\achilles\data_f_achilles\icons\icon_enyo.paa";
+ };
};
diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesGroup.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesGroup.hpp
index 9a7e06fe..aead30f8 100644
--- a/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesGroup.hpp
+++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/Replacement/RscDisplayAttributesGroup.hpp
@@ -45,5 +45,12 @@ class RscDisplayAttributesGroup: RscDisplayAttributes
onMouseButtonClick = "[BIS_fnc_initCuratorAttributes_target] spawn Achilles_fnc_changeSkills";
colorBackground[] = {0.518,0.016,0,0.8};
};
+
+ class ButtonSide : ButtonCustomLeft
+ {
+ text = "$STR_SIDE";
+ onMouseButtonClick = "[BIS_fnc_initCuratorAttributes_target] spawn Achilles_fnc_changeSideAttribute";
+ colorBackground[] = {0.518,0.016,0,0.8};
+ };
};
};
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDisplayReplacement.hpp b/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDisplayReplacement.hpp
index 68b1d1f0..06fe1251 100644
--- a/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDisplayReplacement.hpp
+++ b/@AresModAchillesExpansion/addons/ui_f/dialogs/RscDisplayReplacement.hpp
@@ -16,6 +16,7 @@ class RscDisplayCurator
{
// couple achilles init with curator display
onLoad = "[_this select 0] call Achilles_fnc_onDisplayCuratorLoad;";
+ onUnload = "[_this select 0] call Achilles_fnc_onDisplayCuratorUnload;";
class Controls
{
#include "Replacement\RscDisplayAttributesModuleTree.hpp"
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/common/fn_SelectUnits.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/common/fn_SelectUnits.sqf
index 43bd513f..ec5fad0a 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/common/fn_SelectUnits.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/common/fn_SelectUnits.sqf
@@ -46,7 +46,7 @@ _handler_id = _display displayAddEventHandler ["KeyDown",
}];
// executed when the choice is submitted or cancled
-WaitUntil {!isNil "Achilles_var_submit_selection"};
+WaitUntil {!isNil "Achilles_var_submit_selection" or {isNull findDisplay 312}};
// remove the key handler and the message
_display displayRemoveEventHandler ["KeyDown", _handler_id];
@@ -54,7 +54,7 @@ _ctrlMessage ctrlsetfade 1;
_ctrlMessage ctrlcommit 0.5;
// if escape was pressed
-if (! Achilles_var_submit_selection) exitWith {[localize "STR_SELECTION_CANCLED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"; nil};
+if (not isNil "Achilles_var_submit_selection" and {not Achilles_var_submit_selection}) exitWith {[localize "STR_SELECTION_CANCLED"] call Ares_fnc_ShowZeusMessage; playSound "FD_Start_F"; nil};
// if enter was pressed
[localize "STR_SELECTION_SUBMITTED"] call Ares_fnc_ShowZeusMessage;
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/common/fn_sideTab.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/common/fn_sideTab.sqf
index 3bd1cd81..c0a3adf5 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/common/fn_sideTab.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/common/fn_sideTab.sqf
@@ -35,13 +35,14 @@ switch _mode do
_display = ctrlParent _chosen_side_ctrl;
_chosen_side_idc = ctrlIDC _chosen_side_ctrl;
_new_side_index = IDC_SIDE_ICONS find _chosen_side_idc;
+ _old_side_index = uiNamespace getVariable [format['Ares_ChooseDialog_ReturnValue_%1', _index],-1];
+ if (_new_side_index == _old_side_index) exitWith {};
_color = if (_new_side_index == 0) then {[1,1,1,1]} else {(_new_side_index - 1) call bis_fnc_sideColor};
_color set [3,1];
_chosen_side_ctrl ctrlsettextcolor _color;
[_chosen_side_ctrl,1.2,0.1] call bis_fnc_ctrlsetscale;
_chosen_side_ctrl ctrlEnable false;
- _old_side_index = uiNamespace getVariable [format['Ares_ChooseDialog_ReturnValue_%1', _index],-1];
if (_old_side_index != -1) then
{
_old_side_idc = IDC_SIDE_ICONS select _old_side_index;
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_SpawnIntel.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_SpawnIntel.sqf
deleted file mode 100644
index 3e9f34c5..00000000
--- a/@AresModAchillesExpansion/addons/ui_f/functions/dialogs/fn_RscDisplayAtttributes_SpawnIntel.sqf
+++ /dev/null
@@ -1,62 +0,0 @@
-
-#define GUI_GRID_H (0.04)
-#define GtC_H(GRID) GRID * GUI_GRID_H
-
-#define IDD_DYNAMIC_GUI 133798
-#define IDC_CTRL_BASE 20000
-#define IDCs_INTEL_TEXT [10004,20004]
-#define IDCs_SHARED [10005,20005]
-#define DYNAMIC_BOTTOM_IDCs [2010,3000,3010]
-
-private ["_mode", "_ctrl", "_comboIndex"];
-
-disableSerialization;
-_mode = (_this select 0);
-_ctrl = param [1,controlNull,[controlNull]];
-_comboIndex = param [2,0,[0]];
-
-_dialog = findDisplay IDD_DYNAMIC_GUI;
-
-switch (_mode) do
-{
- case "LOADED":
- {
- _object = Achilles_var_currentIntel;
- _offset = if (isNull _object) then {1} else {0};
- _params = _object getVariable ["Achilles_var_intel",[]];
- if (count _params != 0) then
- {
- // load intel information if aviable
- {
- _text = _params select _x;
- _ctrl = _dialog displayCtrl (IDC_CTRL_BASE + _x);
- _ctrl ctrlSetText _text;
- uiNamespace setVariable [format ["Ares_ChooseDialog_ReturnValue_%1",_x], _text];
- } forEach [0,1,3,4];
- {
- _index = _params select _x;
- _ctrl = _dialog displayCtrl (IDC_CTRL_BASE + _x);
- _ctrl lbSetCurSel _index;
- uiNamespace setVariable [format ["Ares_ChooseDialog_ReturnValue_%1",_x], _index];
- } forEach [2,5];
- } else
- {
- {
- _ctrl = _dialog displayCtrl (IDC_CTRL_BASE + _x);
- _ctrl lbSetCurSel 0;
- uiNamespace setVariable [format ["Ares_ChooseDialog_ReturnValue_%1",_x], 0];
- } forEach [2+_offset,5+_offset];
- if (_offset == 1) then
- {
- _ctrl = _dialog displayCtrl IDC_CTRL_BASE;
- _ctrl lbSetCurSel 0;
- uiNamespace setVariable ["Ares_ChooseDialog_ReturnValue_0", 0];
- };
- };
- };
- case "UNLOAD" : {};
- default
- {
- uiNamespace setVariable [format["Ares_ChooseDialog_ReturnValue_%1", _mode], _comboIndex];
- };
-};
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_AppendToModuleTree.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_AppendToModuleTree.sqf
similarity index 100%
rename from @AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_AppendToModuleTree.sqf
rename to @AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_AppendToModuleTree.sqf
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_addCuratorInterfaceEventHandler.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_addCuratorInterfaceEventHandler.sqf
new file mode 100644
index 00000000..32a9ce70
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_addCuratorInterfaceEventHandler.sqf
@@ -0,0 +1,42 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// AUTHOR: Kex
+// DATE: 6/10/17
+// VERSION: 1.0
+// DESCRIPTION: Adds an event handler to the curator interface
+//
+// ARGUMENTS:
+// _this select 0: STRING - event handler type
+// _this select 1: CODE - code executed in unscheduled environment when the event handler is triggered (available params: _this select 0: curator display)
+//
+// RETURNS:
+// _this SCALAR - positive scalar id of the event handler; -1 if it failed
+//
+// Example:
+// ["onLoad", {systemChat "Hello World!"}] call Achilles_fnc_addCuratorInterfaceEventHandler;
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#include "\A3\ui_f_curator\ui\defineResinclDesign.inc"
+
+params ["_type", "_code"];
+private _curator = getAssignedCuratorLogic player;
+private _id = -1;
+if (isNull _curator) exitWith {_id};
+
+switch (toLower _type) do
+{
+ case "onload":
+ {
+ private _code_list = _curator getVariable ["Achilles_var_onLoadCuratorInterface", []];
+ _id = count _code_list;
+ _code_list pushBack _code;
+ _curator setVariable ["Achilles_var_onLoadCuratorInterface", _code_list];
+ };
+ case "onunload":
+ {
+ private _code_list = _curator getVariable ["Achilles_var_onUnloadCuratorInterface", []];
+ _id = count _code_list;
+ _code_list pushBack _code;
+ _curator setVariable ["Achilles_var_onUnloadCuratorInterface", _code_list];
+ };
+};
+_id;
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onDisplayCuratorLoad.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_onDisplayCuratorLoad.sqf
similarity index 91%
rename from @AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onDisplayCuratorLoad.sqf
rename to @AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_onDisplayCuratorLoad.sqf
index a4b575b1..134d3e82 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onDisplayCuratorLoad.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_onDisplayCuratorLoad.sqf
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// AUTHOR: Kex
-// DATE: 1/3/17
-// VERSION: 3.0
+// DATE: 6/10/17
+// VERSION: 4.0
// DESCRIPTION: Called when display curator is loaded
//
// ARGUMENTS:
@@ -19,6 +19,10 @@
// execute vanilla display curator function
["onLoad",_this,"RscDisplayCurator","CuratorDisplays"] call (uinamespace getvariable "BIS_fnc_initDisplay");
+// custom stacked curator display event handler
+private _code_list = (getAssignedCuratorLogic player) getVariable ["Achilles_var_onLoadCuratorInterface",[]];
+{[_this] call _x} forEach _code_list;
+
_this spawn
{
disableSerialization;
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_onDisplayCuratorUnload.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_onDisplayCuratorUnload.sqf
new file mode 100644
index 00000000..00ee1373
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_onDisplayCuratorUnload.sqf
@@ -0,0 +1,24 @@
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// AUTHOR: Kex
+// DATE: 6/10/17
+// VERSION: 1.0
+// DESCRIPTION: Called when display curator is unloaded
+//
+// ARGUMENTS:
+// _this select 0: display - curator display
+//
+// RETURNS:
+// nothing (procedure)
+//
+// Example:
+// [_curatorDisplay] call Achilles_fnc_onDisplayCuratorunload;
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#include "\A3\ui_f_curator\ui\defineResinclDesign.inc"
+
+// custom stacked curator display event handler
+_code_list = (getAssignedCuratorLogic player) getVariable ["Achilles_var_onUnloadCuratorInterface",[]];
+{[_this] call _x} forEach _code_list;
+
+// execute vanilla display curator function
+["onUnload",_this,"RscDisplayCurator","CuratorDisplays"] call (uinamespace getvariable "BIS_fnc_initDisplay");
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onModuleTreeLoad.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_onModuleTreeLoad.sqf
similarity index 96%
rename from @AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onModuleTreeLoad.sqf
rename to @AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_onModuleTreeLoad.sqf
index 99ffb973..9cfa548c 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/displayCurator/fn_onModuleTreeLoad.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/eventHandler/fn_onModuleTreeLoad.sqf
@@ -116,7 +116,7 @@ _categoryIndex = _tree_ctrl tvAdd [[],_categoryName];
*/
//collapse unit tree or remove faction
-if (count Achilles_var_excludedFactions > 0 or Achilles_var_moduleTreeCollapse) then
+if (/*count Achilles_var_excludedFactions > 0 or*/ Achilles_var_moduleTreeCollapse) then
{
{
_tree_ctrl = _display displayCtrl _x;
@@ -124,7 +124,7 @@ if (count Achilles_var_excludedFactions > 0 or Achilles_var_moduleTreeCollapse)
{
_path = [_i];
_faction_name = _tree_ctrl tvText _path;
- if (_faction_name in Achilles_var_excludedFactions) then
+ if (/*_faction_name in Achilles_var_excludedFactions*/ false) then
{
_tree_ctrl tvDelete _path;
} else
@@ -166,7 +166,7 @@ if (Achilles_var_moduleTreeCollapse) then
{
_path = [0,_i];
_faction_name = _tree_ctrl tvText _path;
- if (_faction_name in Achilles_var_excludedFactions) then
+ if (/*_faction_name in Achilles_var_excludedFactions*/ false) then
{
_tree_ctrl tvDelete _path;
} else
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorGroupPlaced.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorGroupPlaced.sqf
index cf3433c0..0071472d 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorGroupPlaced.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorGroupPlaced.sqf
@@ -12,6 +12,6 @@ if (not isNil "Achilles_var_specifyPositionBeforeSpawn") then
_ctrlModeRecent = _curatorDisplay displayCtrl IDC_RSCDISPLAYCURATOR_MODERECENT;
if (ctrlScale _ctrlModeGroups == 1 or {ctrlScale _ctrlModeRecent == 1}) then
{
- [_placedGroup] spawn Achilles_fnc_PreplaceMode;
+ [_placedGroup] call Achilles_fnc_PreplaceMode;
};
};
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorKeyPressed.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorKeyPressed.sqf
index df8df859..53e15ff6 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorKeyPressed.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorKeyPressed.sqf
@@ -1,15 +1,22 @@
private ["_key","_handled"];
_key = _this select 1;
_handled = false;
-switch (_key) do
+switch (true) do
{
- case 29: // CTRL
+ case (_key == 29): // CTRL
{
Ares_Ctrl_Key_Pressed = true;
};
- case 42: // SHIFT
+ case (_key == 42): // SHIFT
{
Ares_Shift_Key_Pressed = true;
};
+ case (_key in actionKeys "CuratorLevelObject"):
+ {
+ _curatorSelected = ["object"] call Achilles_fnc_getCuratorSelected;
+ {
+ [getAssignedCuratorLogic player, _x] call Achilles_fnc_HandleCuratorObjectEdited;
+ } forEach _curatorSelected;
+ };
};
_handled
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectDeleted.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectDeleted.sqf
index f83e2e7a..0d874d36 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectDeleted.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectDeleted.sqf
@@ -9,33 +9,38 @@ _handled_object = param [1,objNull,[objNull]];
if (isNull _handled_object) exitWith {};
-if (_handled_object isKindOf "logic") then
+switch (true) do
{
- switch (true) do
+ case (_handled_object isKindOf "logic"):
{
- case (not isNull (_handled_object getVariable ["slave", objNull])):
+ switch (true) do
{
- _slave = _handled_object getVariable "slave";
- deleteVehicle _slave;
- };
- case (not isNil {_handled_object getVariable "lock_params"}):
- {
- (_handled_object getVariable "lock_params") params ["_building", "_lock_var"];
- _building setVariable [_lock_var, 0, true];
- {deleteVehicle _x} forEach (attachedObjects _handled_object);
- };
- case (not isNull (_handled_object getVariable ["carrier", objNull])):
- {
- systemChat "deleted hanlded";
- _carrier = (_handled_object getVariable ["carrier", objNull]);
- [_carrier] remoteExec ["BIS_fnc_Carrier01EdenDelete", 2];
+ case (not isNull (_handled_object getVariable ["slave", objNull])):
+ {
+ _slave = _handled_object getVariable "slave";
+ deleteVehicle _slave;
+ };
+ case (not isNil {_handled_object getVariable "lock_params"}):
+ {
+ (_handled_object getVariable "lock_params") params ["_building", "_lock_var"];
+ _building setVariable [_lock_var, 0, true];
+ {deleteVehicle _x} forEach (attachedObjects _handled_object);
+ };
+ case (count attachedObjects _handled_object > 0):
+ {
+ {deleteVehicle _x} forEach (attachedObjects _handled_object);
+ };
+ default {};
};
- case (count attachedObjects _handled_object > 0):
+ _logic_group = group _handled_object;
+ _logic_group deleteGroupWhenEmpty true;
+ };
+ case (_handled_object isKindOf "Land_Carrier_01_base_F"):
+ {
+ // {deleteVehicle _x} forEach (nearestObjects [position _handled_object, ["Land_Carrier_01_hull_GEO_Base_F","Land_Carrier_01_hull_base_F","DynamicAirport_01_F"], 200, true]);
+ private _carrierPartsArray = _handled_object getVariable ["bis_carrierParts", []];
{
- {deleteVehicle _x} forEach (attachedObjects _handled_object);
- };
- default {};
+ deleteVehicle (_x param [0,objNull]);
+ } foreach _carrierPartsArray;
};
- _logic_group = group _handled_object;
- _logic_group deleteGroupWhenEmpty true;
};
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectDoubleClicked.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectDoubleClicked.sqf
index 935921f9..534924fa 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectDoubleClicked.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectDoubleClicked.sqf
@@ -5,16 +5,22 @@ _handled = false;
[format ["Double-clicked object %1", _clickedObject]] call Ares_fnc_LogMessage;
-if (Ares_Ctrl_Key_Pressed) then
+if (Ares_Ctrl_Key_Pressed or Ares_Shift_Key_Pressed) then
{
- ["CTRL Key was pressed for double-click!"] call Ares_fnc_LogMessage;
+ ["CTRL and/or Shift Key was pressed for double-click!"] call Ares_fnc_LogMessage;
_handled = true;
// Hack - trick the BIS function into thinking the mouse is over the double-clicked unit
missionnamespace setVariable ["bis_fnc_curatorObjectPlaced_mouseOver",["OBJECT", _clickedObject]];
- _logic = [getPos _clickedObject, "LOGIC"] call Ares_fnc_CreateLogic;
- [_logic, [], true] call BIS_fnc_moduleRemoteControl;
+ if (Ares_Ctrl_Key_Pressed) then
+ {
+ _logic = [getPos _clickedObject, "LOGIC"] call Ares_fnc_CreateLogic;
+ [_logic, [], true] call BIS_fnc_moduleRemoteControl
+ } else
+ {
+ [Achilles_fnc_switchUnit_start, [_clickedObject]] call CBA_fnc_directCall
+ };
closeDialog 1;
} else
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectEdited.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectEdited.sqf
index 7b8a8859..a404eda0 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectEdited.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectEdited.sqf
@@ -9,75 +9,69 @@ _handled_object = param [1,objNull,[objNull]];
if (isNull _handled_object) exitWith {};
-if (_handled_object isKindOf "logic") then
+switch (true) do
{
- if (toLower typeOf _handled_object == "module_f") then
+ case (_handled_object isKindOf "logic"):
{
- // hanlde logic for simple objects on first edit
- /*
- _jip_id = _handled_object getVariable "needInit";
- if (not isNil "_jip_id") then
+ if (toLower typeOf _handled_object == "module_f") then
{
+ // hanlde logic for simple objects on first edit
+ /*
_jip_id = _handled_object getVariable "needInit";
- remoteExecCall ["", _jip_id];
- _handled_object setVariable ["needInit", nil];
- };
- */
- switch (true) do
- {
- case (not isNull (_handled_object getVariable ["carrier", objNull])):
+ if (not isNil "_jip_id") then
{
- _carrier = (_handled_object getVariable ["carrier", objNull]);
- systemChat "edited hanlded";
- [[_carrier,_handled_object],
- {
- params [_carrier,_handled_object];
- _carrier setPosWorld getPosWorld _handled_object;
- _carrier setDir getDir _handled_object;
- _carrier setVectorUp [0,0,1];
- [_carrier] call BIS_fnc_Carrier01PosUpdate;
- }] remoteExec ["spawn",2];
+ _jip_id = _handled_object getVariable "needInit";
+ remoteExecCall ["", _jip_id];
+ _handled_object setVariable ["needInit", nil];
};
+ */
+ };
+ if(not isNull (_handled_object getVariable ["slave", objNull])) then
+ {
+ _slave = _handled_object getVariable "slave";
+ _slave setPosATL getPosATL _handled_object;
+ [_slave, [vectorDir _handled_object, vectorUp _handled_object]] remoteExecCall ["setVectorDirAndUp", 0, _slave];
};
};
- if(not isNull (_handled_object getVariable ["slave", objNull])) then
- {
- _slave = _handled_object getVariable "slave";
- _slave setPosATL getPosATL _handled_object;
- [_slave, [vectorDir _handled_object, vectorUp _handled_object]] remoteExecCall ["setVectorDirAndUp", 0, _slave];
- };
-};
-
-// if object is a center object of a group => correct position and orientation for other objects of the group
-_group_attributes = _handled_object getVariable ["Achilles_var_groupAttributes",nil];
-if (not isNil "_group_attributes") then
-{
- _center_pos = getPosWorld _handled_object;
-
- // define internal basis
- _vector_dir = vectorDir _handled_object;
- _vector_up = vectorUp _handled_object;
- _vector_perpendicular = _vector_dir vectorCrossProduct _vector_up;
-
- // define transformation matrix
- _standard_to_internal = [_vector_dir, _vector_up, _vector_perpendicular];
- _internal_to_standard = [_standard_to_internal] call Achilles_fnc_matrixTranspose;
+ case (not isNil {_handled_object getVariable "Achilles_var_groupAttributes"}):
{
- _object = _x select 0;
+ // if object is a center object of a group => correct position and orientation for other objects of the group
+ _group_attributes = _handled_object getVariable "Achilles_var_groupAttributes";
+ _center_pos = getPosWorld _handled_object;
- // reposition
- _vector_center_object = [_internal_to_standard, _x select 1] call Achilles_fnc_vectorMap;
- _object setPosWorld (_vector_center_object vectorAdd _center_pos);
+ // define internal basis
+ _vector_dir = vectorDir _handled_object;
+ _vector_up = vectorUp _handled_object;
+ _vector_perpendicular = _vector_dir vectorCrossProduct _vector_up;
+
+ // define transformation matrix
+ _standard_to_internal = [_vector_dir, _vector_up, _vector_perpendicular];
+ _internal_to_standard = [_standard_to_internal] call Achilles_fnc_matrixTranspose;
- // reorientation
- _vectors_dir_up = (_x select [2,2]) apply
{
- _return = [_internal_to_standard, _x] call Achilles_fnc_vectorMap;
- _return;
- };
-
- [_object ,_vectors_dir_up] remoteExec ["setVectorDirAndUp",0,_object];
-
- } forEach _group_attributes;
+ _object = _x select 0;
+
+ // reposition
+ _vector_center_object = [_internal_to_standard, _x select 1] call Achilles_fnc_vectorMap;
+ _object setPosWorld (_vector_center_object vectorAdd _center_pos);
+
+ // reorientation
+ _vectors_dir_up = (_x select [2,2]) apply
+ {
+ _return = [_internal_to_standard, _x] call Achilles_fnc_vectorMap;
+ _return;
+ };
+
+ [_object ,_vectors_dir_up] remoteExec ["setVectorDirAndUp",0,_object];
+
+ } forEach _group_attributes;
+ };
+ // does not yet work properly: e.g. catapults
+ /*
+ case (_handled_object isKindOf "Land_Carrier_01_base_F"):
+ {
+ [_handled_object] remoteExecCall ["BIS_fnc_Carrier01PosUpdate", 2];
+ };
+ */
};
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectPlaced.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectPlaced.sqf
index dfb0a6a2..3e67c694 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectPlaced.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorObjectPlaced.sqf
@@ -33,6 +33,10 @@ if (not isNil "Achilles_var_specifyPositionBeforeSpawn") then
_ctrlModeRecent = _curatorDisplay displayCtrl IDC_RSCDISPLAYCURATOR_MODERECENT;
if (ctrlScale _ctrlModeUnits == 1 or {ctrlScale _ctrlModeRecent == 1}) then
{
- [_placedObject] spawn Achilles_fnc_PreplaceMode;
+ if (not (_placedObject isKindOf "module_f") and {count units group _placedObject - count crew _placedObject <= 0}) then
+ {
+ // if not a module or a group
+ [_placedObject] call Achilles_fnc_PreplaceMode;
+ }
};
};
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorWpPlaced.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorWpPlaced.sqf
new file mode 100644
index 00000000..df270ccd
--- /dev/null
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleCuratorWpPlaced.sqf
@@ -0,0 +1,12 @@
+params ["_", "_group", "_id"];
+switch (true) do
+{
+ case (_id == 1):
+ {
+ [_group, 0] setWaypointPosition [position leader _group, 0];
+ };
+ case (waypointType [_group, _id] == "CYCLE"):
+ {
+ [_group, _id] setWaypointPosition [waypointPosition [_group, 0], 0];
+ };
+};
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleRemoteKeyPressed.sqf b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleRemoteKeyPressed.sqf
index 70fc71e4..cf69ea63 100644
--- a/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleRemoteKeyPressed.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/functions/keyEvents/fn_HandleRemoteKeyPressed.sqf
@@ -2,13 +2,25 @@ private ["_key","_handled"];
_key = _this select 1;
_handled = false;
-if (_key in (actionKeys "Chat")) then
+switch (true) do
{
- // if remote control unit and open chat => open controlled unit's chat
- if (!isNil "bis_fnc_moduleRemoteControl_unit") then
+ case (_key in actionKeys "Chat"):
{
- [bis_fnc_moduleRemoteControl_unit] spawn Achilles_fnc_chatter;
- _handled = true;
+ // if remote control unit and open chat => open controlled unit's chat
+ if (not isNil "bis_fnc_moduleRemoteControl_unit") then
+ {
+ [bis_fnc_moduleRemoteControl_unit] spawn Achilles_fnc_chatter;
+ _handled = true;
+ };
+ };
+ case (_key in actionKeys "CuratorInterface"):
+ {
+ // if remote control unit and open chat => open controlled unit's chat
+ if (not isNil "bis_fnc_moduleRemoteControl_unit" and {not isNil {bis_fnc_moduleRemoteControl_unit getVariable "Achilles_var_switchUnit_data"}}) then
+ {
+ [] call Achilles_fnc_switchUnit_exit;
+ _handled = true;
+ };
};
};
_handled
diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeAmmo.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeAmmo.sqf
index 25b3aaf1..18db0151 100644
--- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeAmmo.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscAttributeAmmo.sqf
@@ -3,6 +3,7 @@
//Broadcast set ammo function
if (isNil "Achilles_var_setammo_init_done") then {
publicVariable "Achilles_fnc_setUnitAmmoDef";
+ publicVariable "Achilles_fnc_setVehicleAmmoDef";
Achilles_var_setammo_init_done = true;
};
@@ -40,12 +41,12 @@ switch _mode do {
if (abs(_previousAmmo - _ammo) < 0.01) exitWith {};
_curatorSelected = ["vehicle"] call Achilles_fnc_getCuratorSelected;
if (local _unit) then {
- {_x setVehicleAmmoDef _ammo} forEach _curatorSelected;
+ {[_x, _ammo] call Achilles_fnc_setVehicleAmmoDef} forEach _curatorSelected;
} else {
[[_curatorSelected, _ammo], {
_entities = _this select 0;
_ammo = _this select 1;
- {_x setVehicleAmmoDef _ammo} foreach _entities;
+ {[_x, _ammo] call Achilles_fnc_setVehicleAmmoDef} foreach _entities;
}] remoteExec ["spawn", _unit];
};
};
diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributes.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributes.sqf
index 5fd01dad..5c80a3d6 100644
--- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributes.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributes.sqf
@@ -110,6 +110,16 @@ switch _mode do
_ctrlButtonCustomPos set [1,0.5 + _posH + _ctrlTitleOffsetY];
_ctrlButtonCustom ctrlsetposition _ctrlButtonCustomPos;
_ctrlButtonCustom ctrlcommit 0;
+
+ private _y_offset = ((ctrlposition _ctrlButtonCustom) select 1) - 16.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2);
+ {
+ private _idc = _x;
+ private _ctrlButtonCustomPlus = _display displayctrl _idc;
+ private _ctrlButtonCustomPlusPos = ctrlposition _ctrlButtonCustomPlus;
+ _ctrlButtonCustomPlusPos set [1,(_ctrlButtonCustomPlusPos select 1) + _y_offset];
+ _ctrlButtonCustomPlus ctrlsetposition _ctrlButtonCustomPlusPos;
+ _ctrlButtonCustomPlus ctrlcommit 0;
+ } forEach [30005,30006,30007];
//--- Close the display when entity is altered
[_display] spawn
diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesMan.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesMan.sqf
index 32697549..c334bf48 100644
--- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesMan.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesMan.sqf
@@ -1,15 +1 @@
-
-#include "RscDisplayAttributes.sqf"
-
-_ctrlButtonCustom = _display displayctrl 30004;
-
-_y_offset = ((ctrlposition _ctrlButtonCustom) select 1) - 16.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2);
-
-{
- _idc = _x;
- _ctrlButtonCustomPlus = _display displayctrl _idc;
- _ctrlButtonCustomPlusPos = ctrlposition _ctrlButtonCustomPlus;
- _ctrlButtonCustomPlusPos set [1,(_ctrlButtonCustomPlusPos select 1) + _y_offset];
- _ctrlButtonCustomPlus ctrlsetposition _ctrlButtonCustomPlusPos;
- _ctrlButtonCustomPlus ctrlcommit 0;
-} forEach [30005];
\ No newline at end of file
+#include "RscDisplayAttributes.sqf"
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesVehicle.sqf b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesVehicle.sqf
index 968e6879..c334bf48 100644
--- a/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesVehicle.sqf
+++ b/@AresModAchillesExpansion/addons/ui_f/scripts/RscDisplayAttributesVehicle.sqf
@@ -1,15 +1 @@
-
-#include "RscDisplayAttributes.sqf"
-
-_ctrlButtonCustom = _display displayctrl 30004;
-
-_y_offset = ((ctrlposition _ctrlButtonCustom) select 1) - 16.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2);
-
-{
- _idc = _x;
- _ctrlButtonCustomPlus = _display displayctrl _idc;
- _ctrlButtonCustomPlusPos = ctrlposition _ctrlButtonCustomPlus;
- _ctrlButtonCustomPlusPos set [1,(_ctrlButtonCustomPlusPos select 1) + _y_offset];
- _ctrlButtonCustomPlus ctrlsetposition _ctrlButtonCustomPlusPos;
- _ctrlButtonCustomPlus ctrlcommit 0;
-} forEach [30005,30006,30007];
\ No newline at end of file
+#include "RscDisplayAttributes.sqf"
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/readme.md b/@AresModAchillesExpansion/changelog.md
similarity index 91%
rename from @AresModAchillesExpansion/readme.md
rename to @AresModAchillesExpansion/changelog.md
index b104d6d1..a3ed56ca 100644
--- a/@AresModAchillesExpansion/readme.md
+++ b/@AresModAchillesExpansion/changelog.md
@@ -1,25 +1,46 @@
-Ares is a mod aimed expanding the tools available to Zeus so that it is possible to create more varied and compelling missions. The goal is to add simple useful functionality to Zeus without requiring extra mods running on other clients or the server.
-
-Ares is designed to work with dedicated servers which may be running missions that allow JIP and respawn. The new functionality it is aimed at running with trusted players in a structured mission and is not recommended for general 'public server' play.
-
-Check out the documentation for Ares at: https://github.com/astruyk/Ares/wiki
-Or check out the source code at: https://github.com/astruyk/Ares and https://github.com/oOKexOo/AresModAchillesExpansion/
-
-Requirements:
-As of V.1.8.0 Ares requires @CBA_A3 for some functionality. Please ensure it is running alongside @Ares if you are using Zeus. Clients that aren't running @Ares (e.g. non-zeus players) do not need to run @CBA_A3.
-You can download the latest version of CBA from the developer website here: http://dev.withsix.com/projects/cca/wiki/CBA
-
-Known issues:
+Known issues
+───────────────────────────────────
+* Switch Unit for non-local units: Notable delay observed before control works.
* CUP planes are not working properly for vanilla CAS module.
* Reinforcement module may mix up groups of 3rd pary add-ons.
-Changelists:
-
-V.0.0.8 (Achilles Expansion (alpha version)
-*
-*
-
-V.0.0.7d (Achilles Expansion (alpha version)
+Versioning (introduced with 0.0.8)
+───────────────────────────────────
+X.X.Xc
+│ │ │└ hotfixes (optional)
+│ │ └─ "small" update
+│ └─── "major" update
+└───── stage (alpha, beta, ...)
+
+Change log
+───────────────────────────────────
+V.0.0.8
+* Change: Carrier base gets added automatically; Deletion will affect all carrier parts (the carrier is not movable though).
+* Change: Intel: The map only opens for the player that picked it up. Who actually gets the intel as well still depends on the settings.
+* Change: Heal and injury modules check for ace_medical instead of ace_main (by @CreepPork).
+* Feature: Promote player to Zeus; This module is only available for admins when the execute code module is disabled; The rights are lost when the player respawns or disconnects (by @CreepPork).
+* Feature: Function Viewer Module (Dev Tools).
+* Feature: Switch Unit, an alternative to remote control, which gives full control over the unit (hotkey: LSHIFT + 2xLMB).
+* Feature: Side as a group attribute (new attribute button).
+* Feature: Change Zeus vision mode brightness (feature inspired by ACE3; ALT+PAGE UP/DOWN by default)
+* Feature: IED and Suicide Bomber modules (by @CreepPork).
+* Feature: Implemented Achilles_fnc_addCuratorInterfaceEventHandler.
+* Feature: Added "allow fleeing" parameter to AI ability module.
+* Fix: USS Freedom: Spawned twice in certain cases.
+* Fix: Vanilla cycle waypoint issue for copied units (waypoint ended up on map origin).
+* Fix: Ammo slider (vehicle attributes): Did not handle dynamic loadouts correctly.
+* Fix: Align object horizontal (default key: X): Did not execute Achilles_fnc_HandleCuratorObjectEdited.
+* Fix: Dynamic Dialog Side Control: Clicking on current selected side led to unintended behaviour.
+* Fix: Canceling selection option: Did not work properly for a few modules.
+* Fix: "Selection option" and "specify position" modes missed exception handling: Exiting Zeus interface.
+* Fix: "Specify position" in recent tab was also executed for Zeus modules and multiple times for groups.
+* Fix: "Create/Edit Intel" did not handle newline characters (Hotkey: LSHIFT+RETURN).
+* Fix: Create/Edit Intel: Dialog title did not describe the exact action (create, spawn or edit).
+
+### Remarks:
+- [ ] txt files have changed => Adjust links on Steam and BIS forum accordingly!
+
+V.0.0.7d (Achilles Expansion (alpha version))
* Change: Several critical modules can no longer be added to Zeus (prevents unintended deletion).
* Change: Specify position (spawn attribute) was improved (it is now a valuable tool for placing objects on a carrier).
* Feature: Dynamic loadout as a vehicle attribute (ammo button).
@@ -30,9 +51,9 @@ V.0.0.7d (Achilles Expansion (alpha version)
* Fix: Set Date module was broken after 1.70 update.
* Fix: CAS modules: Most planes did not show up after 1.70 update.
* Fix: CAS modules did not support planes with dynamic loadouts.
-* Fix: Earthquake module: Missing text in dialog (by CreepPork)
+* Fix: Earthquake module: Missing text in dialog (by @CreepPork)
-V.0.0.7c (Achilles Expansion (alpha version)
+V.0.0.7c (Achilles Expansion (alpha version))
* Change: Removed versioning form the steam workshop title.
* Change: Add Simple Objects to Zeus was removed, since it is not reliable atm (will be reintroduced when ready).
* Fix: Lock door module: Timing issue with add lock door logics (logics ended up at [0,0,0] at low performance).
@@ -42,7 +63,7 @@ V.0.0.7c (Achilles Expansion (alpha version)
* Fix: Un-garrison module was broken.
* Fix: CAS modules were broken in certain cases (e.g. Achilles was loaded to the server).
-V.0.0.7 (Achilles Expansion (alpha version)
+V.0.0.7 (Achilles Expansion (alpha version))
* Change: ACE injury module: Adjusted damage levels.
* Change: Removed side restriction for vanilla CAS modules.
* Change: Radial searches are now conducted in 2D (ignoring z) instead of 3D (e.g. damage buidlings).
@@ -451,4 +472,4 @@ V.0.0.2
* Added Arsenal functions
V.0.0.1
-* Initial alpha release.
\ No newline at end of file
+* Initial alpha release.
diff --git a/@AresModAchillesExpansion/credits.txt b/@AresModAchillesExpansion/credits.txt
new file mode 100644
index 00000000..7463e9a8
--- /dev/null
+++ b/@AresModAchillesExpansion/credits.txt
@@ -0,0 +1,49 @@
+Ares includes contributions by the following coders
+───────────────────────────────────────────────────
+• Anton Struyk
+• TheOtherTaylor
+• JonasJurczok
+
+Ares integrates code from the following mods or scripts
+───────────────────────────────────────────────────────
+• Curator Presets Mod (by Chessmaster)
+ → https://github.com/chessmaster42/curatorPresets
+• Infantry Occupy House (by Zenophon)
+ → http://www.armaholic.com/page.php?id=26343
+• JTD Building Search Script (by TRexian)
+ → http://www.armaholic.com/page.php?id=13130
+• Kronzky's String manipulation functions
+ → http://kronzky.info/snippets/strings/index.htm
+• Vernei's Base Templates
+ → http://www.soclan.co.uk/ (source: http://www.armaholic.com/page.php?id=27531)
+
+Achilles Expansion includes contributions by the following coders
+─────────────────────────────────────────────────────────────────
+• Kex
+• Grezvany13 (Several contributions & support)
+• CreepPork (Suicide Bomber, IED Promote to Zeus Modules; bug fixes)
+• Talya (Assistance in general, even if he wasn't always aware of that ;) )
+• S.Crowe (ACE healing and Eden compatibilty of compositions)
+• Zakant (bug fixes and improval of code efficency)
+• Shukari (Available factions bug fix)
+
+
+Achilles integrates code from the following mods or scripts
+───────────────────────────────────────────────────────────
+• AI HALO jump script (by cobra4v320)
+ → http://www.armaholic.com/page.php?id=23113
+• Kyle Kotowick's matrix transpose script
+• ACE3 fast-roping waypoint (by BaerMitUmlaut)
+• ACE3 change NVG brighness (by commy2)
+• Fast-roping waypoint integrates code from ACE3 (by ACE team) and Advanced Rappelling (by Duda)
+• IED and suicide bomber based on MCC (by shay_gman)
+• The breach feature implementation is inspired by Sushi and Jarhead's Breach Script (although, the only dirctly adapted code is the breach stun function)
+ → http://www.armaholic.com/page.php?id=30573 and http://www.armaholic.com/page.php?id=25202
+• Some curator display and module functions/configs (by BIS)
+
+Translations
+────────────
+• English (by Kex)
+• French (by Kex)
+• German (by Kex; revised by KiritoKun223)
+• Russian (by Igor Nikolaev)
diff --git a/@AresModAchillesExpansion/keys/Achilles_0.0.7d.bikey b/@AresModAchillesExpansion/keys/Achilles_0.0.7d.bikey
deleted file mode 100644
index 88eee765..00000000
Binary files a/@AresModAchillesExpansion/keys/Achilles_0.0.7d.bikey and /dev/null differ
diff --git a/@AresModAchillesExpansion/keys/Achilles_0.0.8.bikey b/@AresModAchillesExpansion/keys/Achilles_0.0.8.bikey
new file mode 100644
index 00000000..09581df0
Binary files /dev/null and b/@AresModAchillesExpansion/keys/Achilles_0.0.8.bikey differ
diff --git a/@AresModAchillesExpansion/licence.txt b/@AresModAchillesExpansion/licence.txt
new file mode 100644
index 00000000..fd3c243b
--- /dev/null
+++ b/@AresModAchillesExpansion/licence.txt
@@ -0,0 +1,9 @@
+License
+───────
+This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
+To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/.
+
+Disclaimer
+──────────
+Ares as well as Achilles Expansion are provided without warranty. Use at your own risk.
+This product may contain traces of GoT/ASoIaF spoilers.
\ No newline at end of file
diff --git a/@AresModAchillesExpansion/license.txt b/@AresModAchillesExpansion/license.txt
deleted file mode 100644
index a97bd80c..00000000
--- a/@AresModAchillesExpansion/license.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/.
-
-Ares includes contributions by the following coders:
-* Anton Struyk
-* TheOtherTaylor
-* JonasJurczok
-
-Ares integrates code from the following mods or scripts:
-* Curator Presets Mod (by Chessmaster)
- * https://github.com/chessmaster42/curatorPresets
-* Infantry Occupy House (by Zenophon)
- * http://www.armaholic.com/page.php?id=26343
-* JTD Building Search Script (by TRexian)
- * http://www.armaholic.com/page.php?id=13130
-* Kronzky's String manipulation functions
- * http://kronzky.info/snippets/strings/index.htm
-* Vernei's Base Templates
- * http://www.soclan.co.uk/ (source: http://www.armaholic.com/page.php?id=27531)
-
-
-Achilles Expansion includes contributions by the following coders:
-* Kex
-* Grezvany13 (Several contributions & support)
-* Talya (Assistance in general, even if he wasn't always aware of that ;) )
-* S.Crowe (ACE healing and Eden compatibilty of compositions)
-* Zakant (bug fixes and improval of code efficency)
-* Shukari (Available factions bug fix)
-
-
-Achilles integrates code from the following mods or scripts:
-* AI HALO jump script (by cobra4v320)
- * http://www.armaholic.com/page.php?id=23113
-* Kyle Kotowick's matrix transpose script
-* ACE fast-roping waypoint
-* Fast-roping waypoint integrates code from ACE3 (by ACE team) and Advanced Rappelling (by Duda).
-* The breach feature implementation is inspired by Sushi and Jarhead's Breach Script (although, the only dirctly adapted code is the breach stun function)
- * http://www.armaholic.com/page.php?id=30573 and http://www.armaholic.com/page.php?id=25202
-* Some curator display and module functions/configs (by BIS)
-
-Translations:
-* English (by Kex)
-* French (by Kex)
-* German (by Kex; revised by KiritoKun223)
-* Russian (by Igor Nikolaev)
-
-
-Ares as well as Achilles Expansion are provided without warranty. Use at your own risk.
-This product may contain traces of GoT/ASoIaF spoilers.
diff --git a/@AresModAchillesExpansion/mod.cpp b/@AresModAchillesExpansion/mod.cpp
index 7044e0a8..2af56452 100644
--- a/@AresModAchillesExpansion/mod.cpp
+++ b/@AresModAchillesExpansion/mod.cpp
@@ -1,14 +1,14 @@
-name = "Ares Mod - Achilles Expansion (0.0.7d)";
+name = "Ares Mod - Achilles Expansion (0.0.8)";
picture = "\achilles\data_f_achilles\pictures\Achilles_Icon_005.paa";
author = "Ares by Anton Struyk, AE by Kex";
-description = "Ares Mod - Achilles Expansion (0.0.7d)";
+description = "Ares Mod - Achilles Expansion (0.0.8)";
logo = "\achilles\data_f_achilles\pictures\Achilles_Icon_005.paa";
logoSmall = "\achilles\data_f_achilles\icons\icon_achilles_small.paa";
logoOver = "\achilles\data_f_achilles\pictures\Achilles_Icon_005.paa";
-tooltip = "Ares Mod - Achilles Expansion (0.0.7d)";
+tooltip = "Ares Mod - Achilles Expansion (0.0.8)";
tooltipOwned = "Ares Mod - Achilles Expansion Owned";
actionName = "Website";
action = "https://forums.bistudio.com/topic/191113-ares-mod-achilles-expansion/?p=3031548";
overview = "Ares augments the existing Zeus functionality, expanding the toolset and making it easy to create more compelling missions on the fly.
The Achilles Expansion (AE) includes Ares Mod with even more functionalites. Some functionalities only work with ACE mod, but those mods are not mandatory in order to run Ares (AE) properly.";
overviewPicture = "\achilles\data_f_achilles\pictures\Achilles_Icon_005.paa";
-overviewText = "Ares Mod - Achilles Expansion (0.0.7d)";
\ No newline at end of file
+overviewText = "Ares Mod - Achilles Expansion (0.0.8)";
\ No newline at end of file
diff --git a/Tools/markdown_test.txt b/Tools/markdown_test.txt
index eeaec949..e9fbf777 100644
--- a/Tools/markdown_test.txt
+++ b/Tools/markdown_test.txt
@@ -1,37 +1,11 @@
-* Change: ACE injury module: Adjusted damage levels.
-* Change: Removed side restriction for vanilla CAS modules.
-* Change: Radial searches are now conducted in 2D (ignoring z) instead of 3D (e.g. damage buidlings).
-* Change: All dialog windows are movable now.
-* Change: Module "Hint" makes use of "MESSAGE" control type.
-* Change: Forced advanced hint window for selection option.
-* Change: Cargo Attributes: Larger dialog window.
-* Change: Replace icon for CAS Target.
-* Change: Replace waitUnit delete by "deleted" event handler (e.g. advanced compositions).
-* Feature: Make object invincible module.
-* Feature: Suppressive fire module: Line-up is now an option and no longer handled automatically.
-* Feature: ACE injury module: injury types, pain level, blood volume and hearth rate.
-* Feature: ACE injury module: injury types, pain level, blood volume and hearth rate.
-* Feature: Add/remove Zeus objects can now handle simple objects (EXPERIMENTAL - DO NOT YET SUPPORT FEATURES SUCH AS COPY/PASTE, ADV. COMPOSITIONS, SAVE MISSION SQF, ...).
-* Feature: Show config and animation viewer modules.
-* Feature: Vehicle garage from Eden editor.
-* Feature: Create TPs: Custom names can be given to teleport flags.
-* Feature: Hint Module: Support XML syntax (allows including images).
-* Feature: Recovered vanilla CAS bomb strike module (dunno why it was hidden).
-* Feature: Vanilla CAS modules: Implemented general config solution => support any 3rd party add-on.
-* Feature: Implement additional ambient animations (see comment by [GHC] RandomMusic).
-* Feature: New options for garrison module (max # men & placing radius)
-* Feature: Set date module.
-* Feature: Attribute window for light sources: RGB, radius and attenuation.
-* Feature: "Lock door" module (including breach option) and incorporate [animateSource](https://community.bistudio.com/wiki/animateSource) script command (also useful for [offroad police light](https://forums.bistudio.com/topic/147049-setting-color-of-offroad/), etc.).
-* Fix: ACE injury module: Untreatable unconsciousness.
-* Fix: Suppressive fire module: Did not work for non-local units.
-* Fix: Add/remove Zeus objects: Exclude curator module from being added to Zeus interface.
-* Fix: Locality issue with vectordir and -up changes (e.g. Spawn Advanced Compositions).
-* Fix: Pressing attribute buttons (e.g. arsenal) undid changes of attributes in the main window.
-* Fix: Effect modules were placed by setVehiclePosition algorithm (inaccurate position).
-* Fix: Punishment module was missing.
-* Fix: Force AI to chute: Exception handling for units that already have a chute was missing.
-* Fix: Syntax error in dynamic dialog cfg (fixed by @shukari)
-* Fix: Ambient Animation: Weapon got lost if animation was switched by Zeus.
-* Fix: Missing error message for modules such as "Hava a seat".
-* Fix: Flaws in garrison building position search algorithm (see #37 )
\ No newline at end of file
+* Change: Several critical modules can no longer be added to Zeus (prevents unintended deletion).
+* Change: Specify position (spawn attribute) was improved (it is now a valuable tool for placing objects on a carrier).
+* Feature: Dynamic loadout as a vehicle attribute (ammo button).
+* Feature: Deep copy works for dynamic loadouts.
+* Feature: Spawn USS Freedom.
+* Fix: Specify position (spawn attribute): Did not work for "Recent" tab.
+* Fix: Vehicle respawn system was broken after 1.70 update.
+* Fix: Set Date module was broken after 1.70 update.
+* Fix: CAS modules: Most planes did not show up after 1.70 update.
+* Fix: CAS modules did not support planes with dynamic loadouts.
+* Fix: Earthquake module: Missing text in dialog (by CreepPork)
\ No newline at end of file
diff --git a/Tools/markdown_test_steam.txt b/Tools/markdown_test_steam.txt
index a2821fe5..e9fbf777 100644
--- a/Tools/markdown_test_steam.txt
+++ b/Tools/markdown_test_steam.txt
@@ -1,36 +1,11 @@
-* Change: ACE injury module: Adjusted damage levels.
-* Change: Removed side restriction for vanilla CAS modules.
-* Change: Radial searches are now conducted in 2D (ignoring z) instead of 3D (e.g. damage buidlings).
-* Change: All dialog windows are movable now.
-* Change: Module "Hint" makes use of "MESSAGE" control type.
-* Change: Forced advanced hint window for selection option.
-* Change: Cargo Attributes: Larger dialog window.
-* Change: Replace icon for CAS Target.
-* Change: Replace waitUnit delete by "deleted" event handler (e.g. advanced compositions).
-* Feature: Make object invincible module.
-* Feature: Suppressive fire module: Line-up is now an option and no longer handled automatically.
-* Feature: ACE injury module: injury types, pain level, blood volume and hearth rate.
-* Feature: Add/remove Zeus objects can now handle simple objects (EXPERIMENTAL - DO NOT YET SUPPORT FEATURES SUCH AS COPY/PASTE, ADV. COMPOSITIONS, SAVE MISSION SQF, ...).
-* Feature: Show config and animation viewer modules.
-* Feature: Vehicle garage from Eden editor.
-* Feature: Create TPs: Custom names can be given to teleport flags.
-* Feature: Hint Module: Support XML syntax (allows including images).
-* Feature: Recovered vanilla CAS bomb strike module (dunno why it was hidden).
-* Feature: Vanilla CAS modules: Implemented general config solution => support any 3rd party add-on.
-* Feature: Implement additional ambient animations (see comment by [GHC] RandomMusic).
-* Feature: New options for garrison module (max # men & placing radius)
-* Feature: Set date module.
-* Feature: Attribute window for light sources: RGB, radius and attenuation.
-* Feature: "Lock door" module (including breach option, inspired by [url=http://www.armaholic.com/page.php?id=30573 ]Sushi Breach Script[/url]).
-* Fix: Went missing in previous versions: Instant occupation does distribute large group (>8 members) on different buildings (@Grezvany13).
-* Fix: ACE injury module: Untreatable unconsciousness.
-* Fix: Suppressive fire module: Did not work for non-local units.
-* Fix: Add/remove Zeus objects: Exclude curator module from being added to Zeus interface.
-* Fix: Locality issue with vectordir and -up changes (e.g. Spawn Advanced Compositions).
-* Fix: Pressing attribute buttons (e.g. arsenal) undid changes of attributes in the main window.
-* Fix: Effect modules were placed by setVehiclePosition algorithm (inaccurate position).
-* Fix: Punishment module was missing.
-* Fix: Force AI to chute: Exception handling for units that already have a chute was missing.
-* Fix: Syntax error in dynamic dialog cfg (fixed by @shukari)
-* Fix: Missing error message for modules such as "Hava a seat".
-* Fix: Flaws in garrison building position search algorithm (see [url=https://github.com/oOKexOo/AresModAchillesExpansion/issues/37 ]#37[/url])
\ No newline at end of file
+* Change: Several critical modules can no longer be added to Zeus (prevents unintended deletion).
+* Change: Specify position (spawn attribute) was improved (it is now a valuable tool for placing objects on a carrier).
+* Feature: Dynamic loadout as a vehicle attribute (ammo button).
+* Feature: Deep copy works for dynamic loadouts.
+* Feature: Spawn USS Freedom.
+* Fix: Specify position (spawn attribute): Did not work for "Recent" tab.
+* Fix: Vehicle respawn system was broken after 1.70 update.
+* Fix: Set Date module was broken after 1.70 update.
+* Fix: CAS modules: Most planes did not show up after 1.70 update.
+* Fix: CAS modules did not support planes with dynamic loadouts.
+* Fix: Earthquake module: Missing text in dialog (by CreepPork)
\ No newline at end of file